{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///dist/mlsmediacenter.min.js","webpack:///webpack/bootstrap 22cd254c67411fe08778","webpack:///./~/fbjs/lib/invariant.js","webpack:///./~/fbjs/lib/warning.js","webpack:///./~/react-dom/lib/reactProdInvariant.js","webpack:///./~/object-assign/index.js","webpack:///./~/react-dom/lib/ReactDOMComponentTree.js","webpack:///./~/fbjs/lib/ExecutionEnvironment.js","webpack:///./~/d3-selection/src/selection/index.js","webpack:///./~/fbjs/lib/emptyFunction.js","webpack:///./~/react-dom/lib/ReactInstrumentation.js","webpack:///./~/react-dom/lib/ReactUpdates.js","webpack:///./~/react-dom/lib/SyntheticEvent.js","webpack:///./~/react/lib/ReactCurrentOwner.js","webpack:///./~/react/react.js","webpack:///./~/react-dom/lib/PooledClass.js","webpack:///./~/react-dom/lib/DOMLazyTree.js","webpack:///./~/react-dom/lib/DOMProperty.js","webpack:///./~/react-dom/lib/ReactReconciler.js","webpack:///./~/react/lib/React.js","webpack:///./~/react/lib/ReactElement.js","webpack:///./~/promise-polyfill/lib/index.js","webpack:///./~/react-dom/lib/EventPluginHub.js","webpack:///./~/react-dom/lib/EventPropagators.js","webpack:///./~/react-dom/lib/ReactInstanceMap.js","webpack:///./~/react-dom/lib/SyntheticUIEvent.js","webpack:///./~/react/lib/reactProdInvariant.js","webpack:///./~/d3-format/src/exponent.js","webpack:///./~/fbjs/lib/emptyObject.js","webpack:///./~/react-dom/lib/ReactBrowserEventEmitter.js","webpack:///./~/react-dom/lib/SyntheticMouseEvent.js","webpack:///./~/react-dom/lib/Transaction.js","webpack:///./~/react-dom/lib/escapeTextContentForBrowser.js","webpack:///./~/react-dom/lib/setInnerHTML.js","webpack:///./~/d3-format/src/formatDecimal.js","webpack:///./~/d3-selection/src/creator.js","webpack:///./~/d3-selection/src/namespace.js","webpack:///./~/d3-selection/src/namespaces.js","webpack:///./~/d3-selection/src/point.js","webpack:///./~/d3-selection/src/selection/on.js","webpack:///./~/d3-selection/src/selector.js","webpack:///./~/d3-selection/src/sourceEvent.js","webpack:///./~/d3-selection/src/window.js","webpack:///./~/fbjs/lib/shallowEqual.js","webpack:///./~/lodash/_Symbol.js","webpack:///./~/node-libs-browser/~/process/browser.js","webpack:///./~/react-dom/lib/DOMChildrenOperations.js","webpack:///./~/react-dom/lib/DOMNamespaces.js","webpack:///./~/react-dom/lib/EventPluginRegistry.js","webpack:///./~/react-dom/lib/EventPluginUtils.js","webpack:///./~/react-dom/lib/KeyEscapeUtils.js","webpack:///./~/react-dom/lib/LinkedValueUtils.js","webpack:///./~/react-dom/lib/ReactComponentEnvironment.js","webpack:///./~/react-dom/lib/ReactErrorUtils.js","webpack:///./~/react-dom/lib/ReactUpdateQueue.js","webpack:///./~/react-dom/lib/createMicrosoftUnsafeLocalFunction.js","webpack:///./~/react-dom/lib/getEventCharCode.js","webpack:///./~/react-dom/lib/getEventModifierState.js","webpack:///./~/react-dom/lib/getEventTarget.js","webpack:///./~/react-dom/lib/isEventSupported.js","webpack:///./~/react-dom/lib/shouldUpdateReactComponent.js","webpack:///./~/react-dom/lib/validateDOMNesting.js","webpack:///(webpack)/buildin/global.js","webpack:///./~/css-loader/lib/css-base.js","webpack:///./~/d3-format/src/formatPrefixAuto.js","webpack:///./~/d3-format/src/formatSpecifier.js","webpack:///./~/d3-format/src/formatTypes.js","webpack:///./~/d3-format/src/locale.js","webpack:///./~/d3-selection/src/matcher.js","webpack:///./~/d3-selection/src/selection/enter.js","webpack:///./~/d3-selection/src/selection/sparse.js","webpack:///./~/d3-selection/src/selection/style.js","webpack:///./~/d3-selection/src/selectorAll.js","webpack:///./~/fbjs/lib/EventListener.js","webpack:///./~/fbjs/lib/focusNode.js","webpack:///./~/fbjs/lib/getActiveElement.js","webpack:///./~/prop-types/factory.js","webpack:///./~/react-dom/lib/CSSProperty.js","webpack:///./~/react-dom/lib/CallbackQueue.js","webpack:///./~/react-dom/lib/DOMPropertyOperations.js","webpack:///./~/react-dom/lib/ReactDOMComponentFlags.js","webpack:///./~/react-dom/lib/ReactDOMSelect.js","webpack:///./~/react-dom/lib/ReactEmptyComponent.js","webpack:///./~/react-dom/lib/ReactFeatureFlags.js","webpack:///./~/react-dom/lib/ReactHostComponent.js","webpack:///./~/react-dom/lib/ReactInputSelection.js","webpack:///./~/react-dom/lib/ReactMount.js","webpack:///./~/react-dom/lib/ReactNodeTypes.js","webpack:///./~/react-dom/lib/ViewportMetrics.js","webpack:///./~/react-dom/lib/accumulateInto.js","webpack:///./~/react-dom/lib/forEachAccumulated.js","webpack:///./~/react-dom/lib/getHostComponentFromComposite.js","webpack:///./~/react-dom/lib/getTextContentAccessor.js","webpack:///./~/react-dom/lib/inputValueTracking.js","webpack:///./~/react-dom/lib/instantiateReactComponent.js","webpack:///./~/react-dom/lib/isTextInputElement.js","webpack:///./~/react-dom/lib/setTextContent.js","webpack:///./~/react-dom/lib/traverseAllChildren.js","webpack:///./~/react/lib/ReactBaseClasses.js","webpack:///./~/react/lib/ReactComponentTreeHook.js","webpack:///./~/react/lib/ReactElementSymbol.js","webpack:///./~/react/lib/ReactNoopUpdateQueue.js","webpack:///./~/react/lib/canDefineProperty.js","webpack:///./~/c3/c3.css?ad30","webpack:///./src/css/charts.css?a473","webpack:///./~/style-loader/lib/addStyles.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/WidgetSelection.js","webpack:///./~/react-dom/index.js","webpack:///./src/MarketTrends.js","webpack:///./src/downloadjs.js","webpack:///./src/index.js","webpack:///./src/indexmain.js","webpack:///./src/labels.js","webpack:///./src/localHtml2Canvas.js","webpack:///./src/react-mlsdata.js","webpack:///./src/widgetresidential.js","webpack:///./~/c3/c3.js","webpack:///./~/c3/~/d3/d3.js","webpack:///./~/create-react-class/factory.js","webpack:///./~/c3/c3.css","webpack:///./src/css/charts.css","webpack:///./~/d3-format/src/defaultLocale.js","webpack:///./~/d3-format/src/formatDefault.js","webpack:///./~/d3-format/src/formatGroup.js","webpack:///./~/d3-format/src/formatNumerals.js","webpack:///./~/d3-format/src/formatRounded.js","webpack:///./~/d3-format/src/identity.js","webpack:///./~/d3-format/src/precisionFixed.js","webpack:///./~/d3-format/src/precisionPrefix.js","webpack:///./~/d3-format/src/precisionRound.js","webpack:///./~/d3-selection/src/constant.js","webpack:///./~/d3-selection/src/local.js","webpack:///./~/d3-selection/src/mouse.js","webpack:///./~/d3-selection/src/select.js","webpack:///./~/d3-selection/src/selectAll.js","webpack:///./~/d3-selection/src/selection/append.js","webpack:///./~/d3-selection/src/selection/attr.js","webpack:///./~/d3-selection/src/selection/call.js","webpack:///./~/d3-selection/src/selection/classed.js","webpack:///./~/d3-selection/src/selection/data.js","webpack:///./~/d3-selection/src/selection/datum.js","webpack:///./~/d3-selection/src/selection/dispatch.js","webpack:///./~/d3-selection/src/selection/each.js","webpack:///./~/d3-selection/src/selection/empty.js","webpack:///./~/d3-selection/src/selection/exit.js","webpack:///./~/d3-selection/src/selection/filter.js","webpack:///./~/d3-selection/src/selection/html.js","webpack:///./~/d3-selection/src/selection/insert.js","webpack:///./~/d3-selection/src/selection/lower.js","webpack:///./~/d3-selection/src/selection/merge.js","webpack:///./~/d3-selection/src/selection/node.js","webpack:///./~/d3-selection/src/selection/nodes.js","webpack:///./~/d3-selection/src/selection/order.js","webpack:///./~/d3-selection/src/selection/property.js","webpack:///./~/d3-selection/src/selection/raise.js","webpack:///./~/d3-selection/src/selection/remove.js","webpack:///./~/d3-selection/src/selection/select.js","webpack:///./~/d3-selection/src/selection/selectAll.js","webpack:///./~/d3-selection/src/selection/size.js","webpack:///./~/d3-selection/src/selection/sort.js","webpack:///./~/d3-selection/src/selection/text.js","webpack:///./~/d3-selection/src/touch.js","webpack:///./~/d3-selection/src/touches.js","webpack:///./~/fbjs/lib/camelize.js","webpack:///./~/fbjs/lib/camelizeStyleName.js","webpack:///./~/fbjs/lib/containsNode.js","webpack:///./~/fbjs/lib/createArrayFromMixed.js","webpack:///./~/fbjs/lib/createNodesFromMarkup.js","webpack:///./~/fbjs/lib/getMarkupWrap.js","webpack:///./~/fbjs/lib/getUnboundedScrollPosition.js","webpack:///./~/fbjs/lib/hyphenate.js","webpack:///./~/fbjs/lib/hyphenateStyleName.js","webpack:///./~/fbjs/lib/isNode.js","webpack:///./~/fbjs/lib/isTextNode.js","webpack:///./~/fbjs/lib/memoizeStringOnly.js","webpack:///./~/lodash/_arrayMap.js","webpack:///./~/lodash/_baseGetTag.js","webpack:///./~/lodash/_baseToString.js","webpack:///./~/lodash/_freeGlobal.js","webpack:///./~/lodash/_getRawTag.js","webpack:///./~/lodash/_objectToString.js","webpack:///./~/lodash/_root.js","webpack:///./~/lodash/isArray.js","webpack:///./~/lodash/isObjectLike.js","webpack:///./~/lodash/isSymbol.js","webpack:///./~/lodash/lodash.js","webpack:///./~/lodash/toString.js","webpack:///./~/lodash/uniqueId.js","webpack:///./~/prop-types/checkPropTypes.js","webpack:///./~/prop-types/factoryWithTypeCheckers.js","webpack:///./~/prop-types/lib/ReactPropTypesSecret.js","webpack:///./~/react-dom/lib/ARIADOMPropertyConfig.js","webpack:///./~/react-dom/lib/AutoFocusUtils.js","webpack:///./~/react-dom/lib/BeforeInputEventPlugin.js","webpack:///./~/react-dom/lib/CSSPropertyOperations.js","webpack:///./~/react-dom/lib/ChangeEventPlugin.js","webpack:///./~/react-dom/lib/Danger.js","webpack:///./~/react-dom/lib/DefaultEventPluginOrder.js","webpack:///./~/react-dom/lib/EnterLeaveEventPlugin.js","webpack:///./~/react-dom/lib/FallbackCompositionState.js","webpack:///./~/react-dom/lib/HTMLDOMPropertyConfig.js","webpack:///./~/react-dom/lib/ReactChildReconciler.js","webpack:///./~/react-dom/lib/ReactComponentBrowserEnvironment.js","webpack:///./~/react-dom/lib/ReactCompositeComponent.js","webpack:///./~/react-dom/lib/ReactDOM.js","webpack:///./~/react-dom/lib/ReactDOMComponent.js","webpack:///./~/react-dom/lib/ReactDOMContainerInfo.js","webpack:///./~/react-dom/lib/ReactDOMEmptyComponent.js","webpack:///./~/react-dom/lib/ReactDOMFeatureFlags.js","webpack:///./~/react-dom/lib/ReactDOMIDOperations.js","webpack:///./~/react-dom/lib/ReactDOMInput.js","webpack:///./~/react-dom/lib/ReactDOMOption.js","webpack:///./~/react-dom/lib/ReactDOMSelection.js","webpack:///./~/react-dom/lib/ReactDOMTextComponent.js","webpack:///./~/react-dom/lib/ReactDOMTextarea.js","webpack:///./~/react-dom/lib/ReactDOMTreeTraversal.js","webpack:///./~/react-dom/lib/ReactDefaultBatchingStrategy.js","webpack:///./~/react-dom/lib/ReactDefaultInjection.js","webpack:///./~/react-dom/lib/ReactElementSymbol.js","webpack:///./~/react-dom/lib/ReactEventEmitterMixin.js","webpack:///./~/react-dom/lib/ReactEventListener.js","webpack:///./~/react-dom/lib/ReactInjection.js","webpack:///./~/react-dom/lib/ReactMarkupChecksum.js","webpack:///./~/react-dom/lib/ReactMultiChild.js","webpack:///./~/react-dom/lib/ReactOwner.js","webpack:///./~/react-dom/lib/ReactPropTypesSecret.js","webpack:///./~/react-dom/lib/ReactReconcileTransaction.js","webpack:///./~/react-dom/lib/ReactRef.js","webpack:///./~/react-dom/lib/ReactServerRenderingTransaction.js","webpack:///./~/react-dom/lib/ReactServerUpdateQueue.js","webpack:///./~/react-dom/lib/ReactVersion.js","webpack:///./~/react-dom/lib/SVGDOMPropertyConfig.js","webpack:///./~/react-dom/lib/SelectEventPlugin.js","webpack:///./~/react-dom/lib/SimpleEventPlugin.js","webpack:///./~/react-dom/lib/SyntheticAnimationEvent.js","webpack:///./~/react-dom/lib/SyntheticClipboardEvent.js","webpack:///./~/react-dom/lib/SyntheticCompositionEvent.js","webpack:///./~/react-dom/lib/SyntheticDragEvent.js","webpack:///./~/react-dom/lib/SyntheticFocusEvent.js","webpack:///./~/react-dom/lib/SyntheticInputEvent.js","webpack:///./~/react-dom/lib/SyntheticKeyboardEvent.js","webpack:///./~/react-dom/lib/SyntheticTouchEvent.js","webpack:///./~/react-dom/lib/SyntheticTransitionEvent.js","webpack:///./~/react-dom/lib/SyntheticWheelEvent.js","webpack:///./~/react-dom/lib/adler32.js","webpack:///./~/react-dom/lib/dangerousStyleValue.js","webpack:///./~/react-dom/lib/findDOMNode.js","webpack:///./~/react-dom/lib/flattenChildren.js","webpack:///./~/react-dom/lib/getEventKey.js","webpack:///./~/react-dom/lib/getIteratorFn.js","webpack:///./~/react-dom/lib/getNodeForCharacterOffset.js","webpack:///./~/react-dom/lib/getVendorPrefixedEventName.js","webpack:///./~/react-dom/lib/quoteAttributeValueForBrowser.js","webpack:///./~/react-dom/lib/renderSubtreeIntoContainer.js","webpack:///./~/react-odata/dist/OData.js","webpack:///./~/react-odata/~/odata-query/dist/index.js","webpack:///./~/react-odata/~/react-fetch-component/dist/Fetch.js","webpack:///./~/react/lib/KeyEscapeUtils.js","webpack:///./~/react/lib/PooledClass.js","webpack:///./~/react/lib/ReactChildren.js","webpack:///./~/react/lib/ReactDOMFactories.js","webpack:///./~/react/lib/ReactPropTypes.js","webpack:///./~/react/lib/ReactVersion.js","webpack:///./~/react/lib/createClass.js","webpack:///./~/react/lib/getIteratorFn.js","webpack:///./~/react/lib/getNextDebugID.js","webpack:///./~/react/lib/lowPriorityWarning.js","webpack:///./~/react/lib/onlyChild.js","webpack:///./~/react/lib/traverseAllChildren.js","webpack:///./~/setimmediate/setImmediate.js","webpack:///./~/style-loader/lib/urls.js","webpack:///./~/timers-browserify/main.js","webpack:///./src/images/aculist-edge_logo.png","webpack:///./src/images/download.png","webpack:///./~/whatwg-fetch/fetch.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","invariant","condition","format","a","b","e","f","validateFormat","error","undefined","Error","args","argIndex","replace","framesToPop","emptyFunction","warning","reactProdInvariant","code","argCount","arguments","length","message","argIdx","encodeURIComponent","toObject","val","TypeError","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","map","join","test3","split","forEach","letter","keys","err","target","source","from","symbols","to","key","shouldPrecacheNode","node","nodeID","nodeType","getAttribute","ATTR_NAME","nodeValue","getRenderedHostOrTextFromComponent","component","rendered","_renderedComponent","precacheNode","inst","hostInst","_hostNode","internalInstanceKey","uncacheNode","precacheChildNodes","_flags","Flags","hasCachedChildNodes","children","_renderedChildren","childNode","firstChild","outer","childInst","childID","_domID","nextSibling","_prodInvariant","getClosestInstanceFromNode","parents","push","parentNode","closest","pop","getInstanceFromNode","getNodeFromInstance","_hostParent","DOMProperty","ReactDOMComponentFlags","ID_ATTRIBUTE_NAME","Math","random","toString","slice","canUseDOM","window","document","createElement","canUseWorkers","Worker","canUseEventListeners","addEventListener","attachEvent","canUseViewport","screen","isInWorker","__webpack_exports__","Selection","groups","_groups","_parents","selection","documentElement","__WEBPACK_IMPORTED_MODULE_0__select__","__WEBPACK_IMPORTED_MODULE_1__selectAll__","__WEBPACK_IMPORTED_MODULE_2__filter__","__WEBPACK_IMPORTED_MODULE_3__data__","__WEBPACK_IMPORTED_MODULE_4__enter__","__WEBPACK_IMPORTED_MODULE_5__exit__","__WEBPACK_IMPORTED_MODULE_6__merge__","__WEBPACK_IMPORTED_MODULE_7__order__","__WEBPACK_IMPORTED_MODULE_8__sort__","__WEBPACK_IMPORTED_MODULE_9__call__","__WEBPACK_IMPORTED_MODULE_10__nodes__","__WEBPACK_IMPORTED_MODULE_11__node__","__WEBPACK_IMPORTED_MODULE_12__size__","__WEBPACK_IMPORTED_MODULE_13__empty__","__WEBPACK_IMPORTED_MODULE_14__each__","__WEBPACK_IMPORTED_MODULE_15__attr__","__WEBPACK_IMPORTED_MODULE_16__style__","__WEBPACK_IMPORTED_MODULE_17__property__","__WEBPACK_IMPORTED_MODULE_18__classed__","__WEBPACK_IMPORTED_MODULE_19__text__","__WEBPACK_IMPORTED_MODULE_20__html__","__WEBPACK_IMPORTED_MODULE_21__raise__","__WEBPACK_IMPORTED_MODULE_22__lower__","__WEBPACK_IMPORTED_MODULE_23__append__","__WEBPACK_IMPORTED_MODULE_24__insert__","__WEBPACK_IMPORTED_MODULE_25__remove__","__WEBPACK_IMPORTED_MODULE_26__datum__","__WEBPACK_IMPORTED_MODULE_27__on__","__WEBPACK_IMPORTED_MODULE_28__dispatch__","constructor","select","selectAll","filter","data","enter","exit","merge","order","sort","nodes","size","empty","each","attr","style","classed","text","html","raise","lower","append","insert","remove","datum","on","dispatch","makeEmptyFunction","arg","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","debugTool","ensureInjected","ReactUpdates","ReactReconcileTransaction","batchingStrategy","ReactUpdatesFlushTransaction","reinitializeTransaction","dirtyComponentsLength","callbackQueue","CallbackQueue","getPooled","reconcileTransaction","batchedUpdates","callback","mountOrderComparator","c1","c2","_mountOrder","runBatchedUpdates","transaction","len","dirtyComponents","updateBatchNumber","callbacks","_pendingCallbacks","markerName","ReactFeatureFlags","logTopLevelRenders","namedComponent","_currentElement","type","isReactTopLevelWrapper","getName","console","time","ReactReconciler","performUpdateIfNecessary","timeEnd","j","enqueue","getPublicInstance","enqueueUpdate","isBatchingUpdates","_updateBatchNumber","asap","context","asapCallbackQueue","asapEnqueued","_assign","PooledClass","Transaction","NESTED_UPDATES","initialize","close","splice","flushBatchedUpdates","UPDATE_QUEUEING","reset","notifyAll","TRANSACTION_WRAPPERS","getTransactionWrappers","destructor","release","perform","method","scope","addPoolingTo","queue","ReactUpdatesInjection","injectReconcileTransaction","ReconcileTransaction","injectBatchingStrategy","_batchingStrategy","injection","SyntheticEvent","dispatchConfig","targetInst","nativeEvent","nativeEventTarget","_targetInst","Interface","propName","normalize","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","shouldBeReleasedProperties","EventInterface","currentTarget","eventPhase","bubbles","cancelable","timeStamp","event","Date","now","isTrusted","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","augmentClass","Class","Super","E","fourArgumentPooler","current","oneArgumentPooler","copyFieldsFrom","Klass","instancePool","instance","twoArgumentPooler","a1","a2","threeArgumentPooler","a3","a4","standardReleaser","poolSize","DEFAULT_POOLER","CopyConstructor","pooler","NewKlass","insertTreeChildren","tree","enableLazy","insertTreeBefore","setInnerHTML","setTextContent","replaceChildWithTree","oldNode","newTree","replaceChild","queueChild","parentTree","childTree","appendChild","queueHTML","queueText","nodeName","DOMLazyTree","DOMNamespaces","createMicrosoftUnsafeLocalFunction","documentMode","navigator","userAgent","test","referenceNode","toLowerCase","namespaceURI","insertBefore","checkMask","bitmask","DOMPropertyInjection","MUST_USE_PROPERTY","HAS_BOOLEAN_VALUE","HAS_NUMERIC_VALUE","HAS_POSITIVE_NUMERIC_VALUE","HAS_OVERLOADED_BOOLEAN_VALUE","injectDOMPropertyConfig","domPropertyConfig","Injection","Properties","DOMAttributeNamespaces","DOMAttributeNames","DOMPropertyNames","DOMMutationMethods","isCustomAttribute","_isCustomAttributeFunctions","properties","lowerCased","propConfig","propertyInfo","attributeName","attributeNamespace","propertyName","mutationMethod","mustUseProperty","hasBooleanValue","hasNumericValue","hasPositiveNumericValue","hasOverloadedBooleanValue","ATTRIBUTE_NAME_START_CHAR","ROOT_ATTRIBUTE_NAME","ATTRIBUTE_NAME_CHAR","getPossibleStandardName","isCustomAttributeFn","attachRefs","ReactRef","mountComponent","internalInstance","hostParent","hostContainerInfo","parentDebugID","markup","ref","getReactMountReady","getHostNode","unmountComponent","safely","detachRefs","receiveComponent","nextElement","prevElement","_context","refsChanged","shouldUpdateRefs","ReactBaseClasses","ReactChildren","ReactDOMFactories","ReactElement","ReactPropTypes","ReactVersion","createReactClass","onlyChild","createFactory","cloneElement","__spread","createMixin","mixin","React","Children","count","toArray","only","Component","PureComponent","isValidElement","PropTypes","createClass","DOM","version","hasValidRef","config","hasValidKey","ReactCurrentOwner","REACT_ELEMENT_TYPE","RESERVED_PROPS","__self","__source","self","owner","props","element","$$typeof","_owner","childrenLength","childArray","Array","defaultProps","bind","cloneAndReplaceKey","oldElement","newKey","setImmediate","noop","fn","thisArg","apply","Promise","_state","_handled","_value","_deferreds","doResolve","handle","deferred","_immediateFn","cb","onFulfilled","onRejected","resolve","reject","promise","ret","newValue","then","finale","_unhandledRejectionFn","Handler","done","reason","ex","setTimeoutFunc","setTimeout","prom","all","arr","res","remaining","race","values","warn","isInteractive","tag","shouldPreventMouseEvent","disabled","EventPluginRegistry","EventPluginUtils","ReactErrorUtils","accumulateInto","forEachAccumulated","listenerBank","eventQueue","executeDispatchesAndRelease","simulated","executeDispatchesInOrder","executeDispatchesAndReleaseSimulated","executeDispatchesAndReleaseTopLevel","getDictionaryKey","_rootNodeID","injectEventPluginOrder","injectEventPluginsByName","putListener","registrationName","listener","PluginModule","registrationNameModules","didPutListener","getListener","bankForRegistrationName","deleteListener","willDeleteListener","deleteAllListeners","extractEvents","topLevelType","events","plugins","possiblePlugin","extractedEvents","enqueueEvents","processEventQueue","processingEventQueue","rethrowCaughtError","__purge","__getListenerBank","listenerAtPhase","propagationPhase","phasedRegistrationNames","accumulateDirectionalDispatches","phase","_dispatchListeners","_dispatchInstances","accumulateTwoPhaseDispatchesSingle","traverseTwoPhase","accumulateTwoPhaseDispatchesSingleSkipTarget","parentInst","getParentInstance","accumulateDispatches","ignoredDirection","accumulateDirectDispatchesSingle","accumulateTwoPhaseDispatches","accumulateTwoPhaseDispatchesSkipTarget","accumulateEnterLeaveDispatches","leave","traverseEnterLeave","accumulateDirectDispatches","EventPluginHub","_reactInternalInstance","has","set","SyntheticUIEvent","dispatchMarker","getEventTarget","view","doc","ownerDocument","defaultView","parentWindow","detail","__WEBPACK_IMPORTED_MODULE_0__formatDecimal__","x","abs","NaN","emptyObject","getListeningForDocument","mountAt","topListenersIDKey","reactTopListenersCounter","alreadyListeningTo","hasEventPageXY","ReactEventEmitterMixin","ViewportMetrics","getVendorPrefixedEventName","isEventSupported","isMonitoringScrollValue","topEventMapping","topAbort","topAnimationEnd","topAnimationIteration","topAnimationStart","topBlur","topCanPlay","topCanPlayThrough","topChange","topClick","topCompositionEnd","topCompositionStart","topCompositionUpdate","topContextMenu","topCopy","topCut","topDoubleClick","topDrag","topDragEnd","topDragEnter","topDragExit","topDragLeave","topDragOver","topDragStart","topDrop","topDurationChange","topEmptied","topEncrypted","topEnded","topError","topFocus","topInput","topKeyDown","topKeyPress","topKeyUp","topLoadedData","topLoadedMetadata","topLoadStart","topMouseDown","topMouseMove","topMouseOut","topMouseOver","topMouseUp","topPaste","topPause","topPlay","topPlaying","topProgress","topRateChange","topScroll","topSeeked","topSeeking","topSelectionChange","topStalled","topSuspend","topTextInput","topTimeUpdate","topTouchCancel","topTouchEnd","topTouchMove","topTouchStart","topTransitionEnd","topVolumeChange","topWaiting","topWheel","ReactBrowserEventEmitter","ReactEventListener","injectReactEventListener","setHandleTopLevel","handleTopLevel","setEnabled","enabled","isEnabled","listenTo","contentDocumentHandle","isListening","dependencies","registrationNameDependencies","dependency","trapBubbledEvent","trapCapturedEvent","WINDOW_HANDLE","handlerBaseName","supportsEventPageXY","createEvent","ev","ensureScrollValueMonitoring","monitorScrollValue","refreshScrollValues","SyntheticMouseEvent","getEventModifierState","screenX","screenY","clientX","clientY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","button","buttons","relatedTarget","fromElement","srcElement","toElement","pageX","currentScrollLeft","pageY","currentScrollTop","OBSERVED_ERROR","transactionWrappers","wrapperInitData","_isInTransaction","isInTransaction","errorThrown","initializeAll","closeAll","startIndex","wrapper","initData","escapeHtml","string","str","match","matchHtmlRegExp","exec","escape","index","lastIndex","charCodeAt","substring","escapeTextContentForBrowser","reusableSVGContainer","ExecutionEnvironment","WHITESPACE_TEST","NONVISIBLE_TEST","svg","innerHTML","svgNode","testElement","textNode","removeChild","deleteData","toExponential","indexOf","coefficient","creatorInherit","uri","__WEBPACK_IMPORTED_MODULE_1__namespaces__","createElementNS","creatorFixed","fullname","space","local","__WEBPACK_IMPORTED_MODULE_0__namespace__","__WEBPACK_IMPORTED_MODULE_0__namespaces__","prefix","xhtml","xlink","xml","xmlns","ownerSVGElement","createSVGPoint","point","y","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","left","clientLeft","top","clientTop","filterContextListener","group","contextListener","related","compareDocumentPosition","event1","event0","__data__","parseTypenames","typenames","trim","t","onRemove","typename","__on","removeEventListener","capture","onAdd","wrap","filterEvents","customEvent","that","sourceEvent","mouseenter","mouseleave","none","selector","querySelector","__WEBPACK_IMPORTED_MODULE_0__selection_on__","is","shallowEqual","objA","objB","keysA","Symbol","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","clearTimeout","cleanUpNextTick","draining","currentQueue","concat","queueIndex","drainQueue","timeout","run","Item","array","process","nextTick","title","browser","env","argv","versions","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","getNodeAfter","isArray","insertLazyTreeChildAt","moveChild","moveDelimitedText","insertChildAt","closingComment","removeDelimitedText","openingComment","nextNode","startNode","replaceDelimitedText","stringText","nodeAfterComment","createTextNode","Danger","dangerouslyReplaceNodeWithMarkup","processUpdates","updates","k","update","content","afterNode","fromNode","mathml","recomputePluginOrdering","eventPluginOrder","pluginName","namesToPlugins","pluginModule","pluginIndex","publishedEvents","eventTypes","eventName","publishEventForPlugin","eventNameDispatchConfigs","phaseName","phasedRegistrationName","publishRegistrationName","possibleRegistrationNames","injectedEventPluginOrder","injectedNamesToPlugins","isOrderingDirty","getPluginModuleForEvent","_resetEventPlugins","isEndish","isMoveish","isStartish","executeDispatch","invokeGuardedCallbackWithCatch","invokeGuardedCallback","dispatchListeners","dispatchInstances","executeDispatchesInOrderStopAtTrueImpl","executeDispatchesInOrderStopAtTrue","executeDirectDispatch","dispatchListener","dispatchInstance","hasDispatches","ComponentTree","TreeTraversal","injectComponentTree","Injected","injectTreeTraversal","isAncestor","getLowestCommonAncestor","argFrom","argTo","escaperLookup","=",":","unescape","unescapeRegex","unescaperLookup","=0","=2","_assertSingleLink","inputProps","checkedLink","valueLink","_assertValueLink","onChange","_assertCheckedLink","checked","getDeclarationErrorAddendum","ReactPropTypesSecret","propTypesFactory","hasReadOnlyValue","checkbox","image","hidden","radio","submit","propTypes","componentName","readOnly","func","loggedTypeFailures","checkPropTypes","tagName","getValue","getChecked","executeOnChange","requestChange","injected","ReactComponentEnvironment","replaceNodeWithMarkup","processChildrenUpdates","injectEnvironment","environment","caughtError","formatUnexpectedArgument","displayName","getInternalInstanceReadyForUpdate","publicInstance","callerName","ReactInstanceMap","ReactUpdateQueue","isMounted","enqueueCallback","validateCallback","enqueueCallbackInternal","enqueueForceUpdate","_pendingForceUpdate","enqueueReplaceState","completeState","_pendingStateQueue","_pendingReplaceState","enqueueSetState","partialState","enqueueElementInternal","nextContext","_pendingElement","MSApp","execUnsafeLocalFunction","arg0","arg1","arg2","arg3","getEventCharCode","charCode","keyCode","modifierStateGetter","keyArg","syntheticEvent","keyProp","modifierKeyToProp","Alt","Control","Meta","Shift","correspondingUseElement","eventNameSuffix","isSupported","setAttribute","useHasFeature","implementation","hasFeature","shouldUpdateReactComponent","prevEmpty","nextEmpty","prevType","nextType","validateDOMNesting","g","Function","eval","cssWithMappingToString","item","useSourceMap","cssMapping","btoa","sourceMapping","toComment","sources","sourceRoot","sourceMap","JSON","stringify","list","mediaQuery","alreadyImportedModules","id","prefixExponent","exponent","max","min","floor","formatSpecifier","specifier","FormatSpecifier","re","fill","align","sign","symbol","zero","width","comma","precision","__WEBPACK_IMPORTED_MODULE_0__formatTypes__","__WEBPACK_IMPORTED_MODULE_0__formatDefault__","__WEBPACK_IMPORTED_MODULE_1__formatPrefixAuto__","__WEBPACK_IMPORTED_MODULE_2__formatRounded__","","%","toFixed","round","toPrecision","r","X","toUpperCase","__WEBPACK_IMPORTED_MODULE_0__exponent__","__WEBPACK_IMPORTED_MODULE_1__formatGroup__","__WEBPACK_IMPORTED_MODULE_2__formatNumerals__","__WEBPACK_IMPORTED_MODULE_3__formatSpecifier__","__WEBPACK_IMPORTED_MODULE_4__formatTypes__","__WEBPACK_IMPORTED_MODULE_5__formatPrefixAuto__","__WEBPACK_IMPORTED_MODULE_6__identity__","prefixes","locale","newFormat","valuePrefix","valueSuffix","suffix","formatType","valueNegative","maybeSuffix","decimal","Infinity","padding","numerals","currency","percent","formatPrefix","pow","grouping","thousands","matcher","matches","vendorMatches","webkitMatchesSelector","msMatchesSelector","mozMatchesSelector","oMatchesSelector","EnterNode","parent","_next","_parent","__WEBPACK_IMPORTED_MODULE_0__sparse__","__WEBPACK_IMPORTED_MODULE_1__index__","_enter","child","next","querySelectorAll","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","v","styleValue","getPropertyValue","__WEBPACK_IMPORTED_MODULE_0__window__","getComputedStyle","listen","eventType","detachEvent","registerDefault","focusNode","focus","getActiveElement","activeElement","body","prefixKey","charAt","isUnitlessNumber","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","prop","shorthandPropertyExpansions","background","backgroundAttachment","backgroundColor","backgroundImage","backgroundPositionX","backgroundPositionY","backgroundRepeat","backgroundPosition","border","borderWidth","borderStyle","borderColor","borderBottom","borderBottomWidth","borderBottomStyle","borderBottomColor","borderLeft","borderLeftWidth","borderLeftStyle","borderLeftColor","borderRight","borderRightWidth","borderRightStyle","borderRightColor","borderTop","borderTopWidth","borderTopStyle","borderTopColor","font","fontStyle","fontVariant","fontSize","fontFamily","outline","outlineWidth","outlineStyle","outlineColor","_classCallCheck","Constructor","_callbacks","_contexts","_arg","contexts","checkpoint","rollback","isAttributeNameSafe","validatedAttributeNameCache","illegalAttributeNameCache","VALID_ATTRIBUTE_NAME_REGEX","shouldIgnoreValue","isNaN","quoteAttributeValueForBrowser","RegExp","DOMPropertyOperations","createMarkupForID","setAttributeForID","createMarkupForRoot","setAttributeForRoot","createMarkupForProperty","createMarkupForCustomAttribute","setValueForProperty","deleteValueForProperty","namespace","setAttributeNS","setValueForAttribute","removeAttribute","deleteValueForAttribute","updateOptionsIfPendingUpdateAndMounted","_wrapperState","pendingUpdate","LinkedValueUtils","updateOptions","multiple","propValue","selectedValue","options","ReactDOMComponentTree","selected","_handleChange","didWarnValueDefaultValue","getHostProps","mountWrapper","initialValue","defaultValue","wasMultiple","getSelectValueContext","postUpdateWrapper","emptyComponentFactory","ReactEmptyComponentInjection","injectEmptyComponentFactory","ReactEmptyComponent","create","instantiate","createInternalComponent","genericComponentClass","createInstanceForText","textComponentClass","isTextComponent","injectGenericComponentClass","componentClass","injectTextComponentClass","isInDocument","containsNode","ReactDOMSelection","ReactInputSelection","hasSelectionCapabilities","elem","contentEditable","getSelectionInformation","focusedElem","selectionRange","getSelection","restoreSelection","priorSelectionInformation","curFocusedElem","priorFocusedElem","priorSelectionRange","setSelection","input","start","selectionStart","end","selectionEnd","range","createRange","parentElement","moveStart","moveEnd","getOffsets","offsets","createTextRange","collapse","setOffsets","firstDifferenceIndex","string1","string2","minLen","getReactRootElementInContainer","container","DOC_NODE_TYPE","internalGetID","mountComponentIntoNode","wrapperInstance","shouldReuseMarkup","wrappedElement","ReactDOMContainerInfo","_topLevelWrapper","ReactMount","_mountImageIntoNode","batchedMountComponentIntoNode","componentInstance","ReactDOMFeatureFlags","useCreateElement","unmountComponentFromNode","lastChild","hasNonRootReactChild","rootEl","isValidContainer","ELEMENT_NODE_TYPE","DOCUMENT_FRAGMENT_NODE_TYPE","getHostRootInstanceInContainer","prevHostInstance","getTopLevelWrapperInContainer","_hostContainerInfo","ReactMarkupChecksum","instantiateReactComponent","ROOT_ATTR_NAME","instancesByReactRootID","topLevelRootCounter","TopLevelWrapper","rootID","isReactComponent","render","_instancesByReactRootID","scrollMonitor","renderCallback","_updateRootComponent","prevComponent","_renderNewRootComponent","_instance","renderSubtreeIntoContainer","parentComponent","_renderSubtreeIntoContainer","nextWrappedElement","_processChildContext","publicInst","unmountComponentAtNode","reactRootElement","containerHasReactMarkup","containerHasNonRootReactChild","hasAttribute","rootElement","canReuseMarkup","checksum","CHECKSUM_ATTR_NAME","rootMarkup","outerHTML","normalizedMarkup","diffIndex","difference","ReactNodeTypes","HOST","COMPOSITE","EMPTY","getType","scrollPosition","getHostComponentFromComposite","_renderedNodeType","getTextContentAccessor","contentKey","isCheckable","getTracker","valueTracker","attachTracker","tracker","detachTracker","getValueFromNode","inputValueTracking","_getTrackerFromNode","track","valueField","descriptor","getOwnPropertyDescriptor","currentValue","setValue","stopTracking","updateValueIfChanged","lastValue","nextValue","isInternalComponentType","shouldHaveDebugID","info","ReactHostComponent","getNativeNode","ReactCompositeComponentWrapper","_mountIndex","_mountImage","ReactCompositeComponent","construct","_instantiateReactComponent","isTextInputElement","supportedInputTypes","color","date","datetime","datetime-local","email","month","number","password","search","tel","url","week","textContent","getComponentKey","KeyEscapeUtils","traverseAllChildrenImpl","nameSoFar","traverseContext","SEPARATOR","nextName","subtreeCount","nextNamePrefix","SUBSEPARATOR","iteratorFn","getIteratorFn","step","iterator","entries","ii","entry","addendum","childrenString","traverseAllChildren","ReactComponent","updater","refs","ReactNoopUpdateQueue","ReactPureComponent","ComponentDummy","setState","forceUpdate","isPureReactComponent","isNative","funcToString","reIsNative","purgeDeep","getItem","childIDs","removeItem","describeComponentFrame","ownerName","fileName","lineNumber","getDisplayName","describeID","ReactComponentTreeHook","getElement","ownerID","getOwnerID","_source","setItem","getItemIDs","addRoot","removeRoot","getRootIDs","canUseCollections","Map","Set","itemMap","rootIDSet","add","itemByKey","rootByKey","getKeyFromID","getIDFromKey","parseInt","substr","unmountedIDs","onSetChildren","nextChildIDs","nextChildID","nextChild","parentID","onBeforeMountComponent","updateCount","onBeforeUpdateComponent","onMountComponent","onUpdateComponent","onUnmountComponent","purgeUnmountedComponents","_preventPurging","getCurrentStackAddendum","topElement","currentOwner","getStackAddendumByID","_debugID","getParentID","getChildIDs","getSource","getText","getUpdateCount","getRegisteredIDs","pushNonStandardWarningStack","isCreatingElement","currentSource","reactStack","stack","popNonStandardWarningStack","reactStackEnd","canDefineProperty","hmr","transform","locals","addStylesToDom","styles","domStyle","stylesInDom","parts","addStyle","listToStyles","newStyles","base","css","media","part","insertStyleElement","insertInto","lastStyleElementInsertedAtTop","stylesInsertedAtTop","insertAt","before","removeStyleElement","idx","createStyleElement","attrs","addAttrs","createLinkElement","link","rel","el","obj","result","singleton","styleIndex","singletonCounter","applyToSingletonTag","URL","createObjectURL","revokeObjectURL","Blob","updateLink","href","applyToTag","newObj","styleSheet","cssText","replaceText","cssNode","childNodes","autoFixUrls","convertToAbsoluteUrls","fixUrls","blob","oldSrc","isOldIE","memo","atob","styleTarget","HTMLIFrameElement","contentDocument","head","DEBUG","newList","mayRemove","textStore","replacement","Boolean","webpackPolyfill","deprecate","paths","_interopRequireDefault","default","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","writable","setPrototypeOf","__proto__","_createClass","defineProperties","protoProps","staticProps","_react","_react2","_index","_index2","_promisePolyfill","_Component","WidgetSelection","_this","getPrototypeOf","state","selectedGeo","selectedPeriodType","selectedPeriod","_onGeoSelect","_onPeriodSelect","widgetselections","periodtype","period","geo","classtype","divid","className","_","throttle","trailing","defaultChecked","_defineProperty","_extends","_uniqueId","_uniqueId2","_c","_c2","_d3Format","d3format","_labels","_localHtml2Canvas","_localHtml2Canvas2","_charts","html2canvas","logo","download","MarketTrends","btncharttypeactive","chartType","copyInProgress","handleImageClick","copyChart","measure","nextProps","getElementById","dataset","classList","webkitURL","emptySvg","emptySvgDeclarationComputed","holder","canvasHolder","Element","contains","cln","cloneNode","allElements","visit","hasChildNodes","cSSStyleDeclarationComputed","computedStyleStr","getElementsByTagName","canvas","logging","clientWidth","Image","src","toDataURL","crossOrigin","ctitle","logoStyles","height","isUndefined","isIE","MTitle","labels","baseTitle","decodeURIComponent","periodTitle","Year","areaTitle","AreaId","onClick","data-id","data-ctitle","Chart","data1","_React$Component","_updateSingleAxesChart","assets","_updateChart","ws","measurearray","masterarray","periodarray","SFarrayM1","CIarrayM1","SFarrayM2","CIarrayM2","periodarrayasc","periodarrayformatted","record","Period","reverse","periodrecord","filtereddata1","rec","monthnames","01","02","03","04","05","06","07","08","09","10","11","12","periodraw","chart","internal","getHorizontalAxisHeight","axisId","$$","h","axis_x_show","axis_x_height","axis_y_show","axis_y2_show","axis_rotated","axis_x_tick_rotate","axis","getMaxTickWidth","cos","PI","axis_y_tick_rotate","getLabelPositionById","isInner","rotated_padding_top","legend_show","isLegendRight","isLegendInset","generate","bindto","position","types","SFHM2","C/TM2","SFHM1","C/TM1","axes","names","legendlabels","pattern","tick","multiline","culling","rotate","grid","show","bar","percentsp","AvgSaleOverListPrice","ct","defaultcolors","mpcolors","bottom","label","chartclasses","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","strFileName","strMimeType","dataUrlToBlob","strUrl","decoder","binData","mx","uiArr","Uint8Array","myBlob","saver","winMode","anchor","display","click","defaultMime","open","confirm","location","reader","mimeType","payload","MozBlob","WebKitBlob","ajax","XMLHttpRequest","responseType","onload","response","send","msSaveBlob","tempUiArr","FileReader","readAsDataURL","_reactMlsdata","_widgetresidential","_widgetresidential2","MTWidget","_this2","orderBy","_props","_widgetselections","cdate","geofilter","g1","g2","geoquery","and","GeographyType","GeographyName","classtypefilter","in","PeriodType","ge","getFullYear","or","months","0","1","2","3","4","5","6","7","8","9","getMonth","setMonth","startDate","endDate","getDay","DateValue","lt","le","gt","widget","uniqueId","isEmpty","MLSStats","collection","_ref","loading","log","_reactDom","_reactDom2","_WidgetSelection","_WidgetSelection2","_promisePolyfill2","MedSalePrice","SoldCount","SoldAvgDOM","SoldMedDOM","AvgSalePricePerSqft","SaleVolume","ActiveCount","ContingentCount","PendingCount","ActiveAvgDOM","ActiveMedDOM","InventoryCount","InventoryAvgDOM","InventoryAvgListPrice","NewListingsCount","NewListingsAvgListPrice","UnderContractCount","UnderContractAvgDOM","UnderContractAvgListPrice","ActiveAvgListPrice","ActiveAvgListPricePerSqft","ActiveAvgOriginalPrice","ActiveMedListPrice","ActiveMedListPricePerSqft","SoldAvgListPrice","SoldMedListPrice","AvgSalePrice","AvgSaleOverOriginalPrice","MedSalePricePerSqft","AvgMonthsToSell","_typeof","_slicedToArray","sliceIterator","_arr","_n","_d","_e","_s","_i","HEX3","hex3","HEX6","hex6","RGB","rgb","RGBA","rgba","fromArray","namedColor","NAMED_COLORS","Color","_ref2","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","TRANSPARENT","parseBoundCurves","calculatePaddingBoxPath","calculateBorderBoxPath","parsePathForBorder","parseDocumentSize","calculateContentBox","calculatePaddingBox","parseBounds","Bounds","_Vector","_Vector2","_BezierCurve","_BezierCurve2","w","clientRect","scrollX","scrollY","createPathFromCurves","fromClientRect","bounds","borders","paddingTop","paddingRight","paddingBottom","paddingLeft","scrollWidth","offsetWidth","scrollHeight","offsetHeight","clientHeight","curves","borderSide","topLeftOuter","topLeftInner","topRightOuter","topRightInner","bottomRightOuter","bottomRightInner","bottomLeftOuter","bottomLeftInner","outer1","inner1","outer2","inner2","path","subdivide","CORNER","borderRadius","tlh","TOP_LEFT","getAbsoluteValue","tlv","trh","TOP_RIGHT","trv","brh","BOTTOM_RIGHT","brv","blh","BOTTOM_LEFT","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","getCurvePoints","r1","r2","kappa","sqrt","ox","oy","xm","ym","calculateLengthFromValueWithUnit","LENGTH_TYPE","_NodeContainer","PX","PERCENTAGE","Length","parsedValue","parseFloat","parentLength","isPercentage","getRootFontSize","unit","_Color","_Color2","_Util","_background","_border","_borderRadius","_display","_float","_font","_letterSpacing","_lineBreak","_listStyle","_margin","_overflow","_overflowWrap","_padding","_position","_textDecoration","_textShadow","_textTransform","_transform","_visibility","_wordBreak","_zIndex","_Bounds","_Input","_ListItem","INPUT_TAGS","NodeContainer","resourceLoader","listItems","listStart","pageXOffset","pageYOffset","parseDisplay","IS_INPUT","parsePosition","INPUT_BACKGROUND","parseBackground","INPUT_BORDERS","parseBorder","HTMLInputElement","getInputBorderRadius","parseBorderRadius","INPUT_COLOR","float","parseCSSFloat","parseFont","letterSpacing","parseLetterSpacing","listStyle","DISPLAY","LIST_ITEM","parseListStyle","lineBreak","parseLineBreak","margin","parseMargin","overflow","parseOverflow","OVERFLOW","HIDDEN","overflowWrap","parseOverflowWrap","wordWrap","parsePadding","textDecoration","parseTextDecoration","textShadow","parseTextShadow","textTransform","parseTextTransform","parseTransform","visibility","parseVisibility","wordBreak","parseWordBreak","parseZIndex","POSITION","STATIC","isTransformed","listOwner","getListOwner","listIndex","curvedBounds","getImage","reformatInputBounds","parentClips","getClipPaths","VISIBLE","isRootElement","isFloating","isAbsolutelyPositioned","NONE","VISIBILITY","RELATIVE","FLOAT","isPositioned","auto","INLINE","INLINE_BLOCK","INLINE_FLEX","INLINE_GRID","INLINE_LIST_ITEM","INLINE_TABLE","SVGSVGElement","XMLSerializer","loadImage","serializeToString","img","currentSrc","loadCanvas","iframeKey","bit","distance","copyCSSStyles","SMALL_IMAGE","parseBackgroundImage","calculateBackgroundRepeatPath","calculateBackgroundPosition","calculateBackgroungPositioningArea","calculateBackgroungPaintingArea","calculateGradientBackgroundSize","calculateBackgroundSize","BACKGROUND_ORIGIN","BACKGROUND_CLIP","BACKGROUND_SIZE","BACKGROUND_REPEAT","_Length","_Length2","_Size","_Size2","REPEAT","NO_REPEAT","REPEAT_X","REPEAT_Y","AUTO","CONTAIN","COVER","LENGTH","BORDER_BOX","PADDING_BOX","CONTENT_BOX","BackgroundSize","AUTO_SIZE","targetRatio","currentRatio","parseBackgroundClip","clip","backgroundOrigin","paddingBox","PADDING_SIDES","LEFT","RIGHT","TOP","BOTTOM","backgroundPositioningArea","repeat","parseBackgroundImages","backgroundClip","parseBackgroundOrigin","parseBackgroundRepeat","positions","repeats","sizes","backgroundSize","parseBackgroundSize","parseBackgoundPosition","whitespace","results","quote","definition","mode","numParen","appendResult","prefix_i","PATH","VECTOR","BEZIER_CURVE","CIRCLE","_Path","Vector","parseListStyleType","LIST_STYLE_TYPE","LIST_STYLE_POSITION","INSIDE","OUTSIDE","DISC","SQUARE","DECIMAL","CJK_DECIMAL","DECIMAL_LEADING_ZERO","LOWER_ROMAN","UPPER_ROMAN","LOWER_GREEK","LOWER_ALPHA","UPPER_ALPHA","ARABIC_INDIC","ARMENIAN","BENGALI","CAMBODIAN","CJK_EARTHLY_BRANCH","CJK_HEAVENLY_STEM","CJK_IDEOGRAPHIC","DEVANAGARI","ETHIOPIC_NUMERIC","GEORGIAN","GUJARATI","GURMUKHI","HEBREW","HIRAGANA","HIRAGANA_IROHA","JAPANESE_FORMAL","JAPANESE_INFORMAL","KANNADA","KATAKANA","KATAKANA_IROHA","KHMER","KOREAN_HANGUL_FORMAL","KOREAN_HANJA_FORMAL","KOREAN_HANJA_INFORMAL","LAO","LOWER_ARMENIAN","MALAYALAM","MONGOLIAN","MYANMAR","ORIYA","PERSIAN","SIMP_CHINESE_FORMAL","SIMP_CHINESE_INFORMAL","TAMIL","TELUGU","THAI","TIBETAN","TRAD_CHINESE_FORMAL","TRAD_CHINESE_INFORMAL","UPPER_ARMENIAN","DISCLOSURE_OPEN","DISCLOSURE_CLOSED","parseListStylePosition","listStyleImage","listStyleType","listStylePosition","capitalize","p1","p2","_TextBounds","TextContainer","parseTextBounds","CAPITALIZE","TEXT_TRANSFORM","LOWERCASE","UPPERCASE","_ForeignObjectRenderer","testRangeBounds","TEST_HEIGHT","selectNode","rangeBounds","rangeHeight","testBase64","ctx","getContext","drawImage","onerror","complete","testCORS","testResponseType","testSVG","isGreenPixel","testForeignObject","fillStyle","fillRect","greenImageSrc","createForeignObjectSVG","loadSerializedSVG","getImageData","catch","FEATURES","SUPPORT_RANGE_BOUNDS","SUPPORT_SVG_DRAWING","SUPPORT_BASE64_DRAWING","SUPPORT_FOREIGNOBJECT_DRAWING","fetch","SUPPORT_CORS_IMAGES","SUPPORT_RESPONSE_TYPE","SUPPORT_CORS_XHR","TEXT_DECORATION_LINE","TEXT_DECORATION","TEXT_DECORATION_STYLE","SOLID","DOUBLE","DOTTED","DASHED","WAVY","UNDERLINE","OVERLINE","LINE_THROUGH","BLINK","parseLine","line","parseTextDecorationLine","parseTextDecorationStyle","textDecorationLine","textDecorationColor","textDecorationStyle","BORDER_SIDES","BORDER_STYLE","SIDES","parseBorderStyle","side","chars","toCodePoints","codePoints","extra","fromCodePoint","codeUnits","codePoint","lookup","decode","base64","bufferLength","encoded1","encoded2","encoded3","encoded4","buffer","ArrayBuffer","bytes","polyUint16Array","polyUint32Array","_i2","createCounterText","inlineListItemElement","_NodeContainer2","_TextContainer","_TextContainer2","_Unicode","ancestorTypes","ROMAN_UPPER","right","innerWidth","textAlign","MARGIN_TOP","styleImage","fromTextNode","integers","createAdditiveCounter","fallback","reduce","integer","createCounterStyleWithSymbolResolver","codePointRangeLength","isNumeric","resolver","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","createCounterStyleFromSymbols","createCJKCounter","numbers","multipliers","negativeSign","flags","tmp","digit","appendSuffix","defaultSuffix","cjkSuffix","koreanSuffix","CJK_TEN_COEFFICIENTS","CJK_ZEROS","addColorStops","gradient","canvasGradient","maxStop","colorStops","colorStop","stop","addColorStop","CanvasRenderer","scale","translate","textBaseline","logger","clipPaths","save","restore","destination","_path","beginPath","moveTo","lineTo","bezierCurveTo","startControl","endControl","arc","radius","closePath","linearGradient","createLinearGradient","direction","x1","y1","x0","y0","_this3","center","radialGradient","createRadialGradient","midX","midY","invF","imageSize","offsetX","offsetY","createPattern","resizeImage","textBounds","textShadows","_this4","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","blur","fillText","_options$fontMetrics$","fontMetrics","getMetrics","baseline","rectangle","_options$fontMetrics$2","middle","ceil","globalAlpha","matrix","Logger","_len","_key","_len2","_key2","OVERFLOW_WRAP","NORMAL","BREAK_WORD","ABSOLUTE","FIXED","STICKY","inlineSelectElement","inlineTextAreaElement","inlineInputElement","_Circle","_Circle2","INPUT_BORDER_COLOR","INPUT_BACKGROUND_COLOR","INPUT_BORDER","RADIO_BORDER_RADIUS","RADIO_BORDER_RADIUS_TUPLE","INPUT_RADIO_BORDER_RADIUS","CHECKBOX_BORDER_RADIUS","CHECKBOX_BORDER_RADIUS_TUPLE","INPUT_CHECKBOX_BORDER_RADIUS","inlineFormElement","getInputValue","option","selectedIndex","allowLinebreak","whiteSpace","placeholder","TextBounds","_Feature","_Feature2","getWrapperBounds","letterRendering","textList","breakWords","offset","getRangeBounds","replacementNode","splitText","setStart","setEnd","ForeignObjectRenderer","windowWidth","windowHeight","foreignObject","_cssLineBreak","breaker","LineBreaker","words","bk","FontMetrics","_data","_document","span","verticalAlign","offsetTop","_parseMetrics","Proxy","proxy","xhr","XDomainRequest","status","responseText","imageTimeout","ontimeout","_CanvasRenderer","_CanvasRenderer2","_Logger","_Logger2","_Window","conf","onrendered","isDocument","defaultOptions","async","allowTaint","removeContainer","foreignObjectRendering","devicePixelRatio","useCORS","innerHeight","renderElement","_NodeParser","_Renderer","_Renderer2","_ForeignObjectRenderer2","_Clone","_Font","windowBounds","documentBackgroundColor","bodyBackgroundColor","isTransparent","supportForeignObject","cloner","inlineFonts","ready","DocumentCloner","cloneWindow","clonedElement","NodeParser","clonedDocument","imageStore","renderOptions","renderer","_StackingContext","_StackingContext2","IGNORED_NODE_NAMES","parseNodeTree","Text","HTMLElement","isVisible","SHOULD_TRAVERSE_CHILDREN","treatAsRealStackingContext","createsRealStackingContext","createsStackingContext","parentStack","getRealParentStackingContext","childStack","_container","_treatAsRealStackingContext","_parentStack","_childStack","isPositionedWithZIndex","isBodyWithTransparentRoot","StackingContext","getOpacity","Size","lerp","BezierCurve","firstHalf","ab","bc","cd","abbc","bccd","dest","_value$split$map","_value$split$map2","horizontal","vertical","BLOCK","RUN_IN","FLOW","FLOW_ROOT","TABLE","FLEX","GRID","RUBY","SUBGRID","TABLE_ROW_GROUP","TABLE_HEADER_GROUP","TABLE_FOOTER_GROUP","TABLE_ROW","TABLE_CELL","TABLE_COLUMN_GROUP","TABLE_COLUMN","TABLE_CAPTION","RUBY_BASE","RUBY_TEXT","RUBY_BASE_CONTAINER","RUBY_TEXT_CONTAINER","CONTENTS","parseDisplayValue","setDisplayBit","INLINE_START","INLINE_END","parseFontWeight","weight","LINE_BREAK","STRICT","SCROLL","NUMBER","isLength","shadows","numParens","appendValue","appendShadow","toFloat","MATRIX","parseTransformOrigin","parseTransformMatrix","webkitTransform","mozTransform","msTransform","oTransform","transformOrigin","webkitTransformOrigin","mozTransformOrigin","msTransformOrigin","oTransformOrigin","origin","matrix3d","COLLAPSE","WORD_BREAK","BREAK_ALL","KEEP_ALL","_LineBreak","_toConsumableArray","arr2","inlineBreakOpportunities","lineBreakAtIndex","codePointsToCharacterClasses","UnicodeTrie","BREAK_ALLOWED","BREAK_NOT_ALLOWED","BREAK_MANDATORY","classes","LETTER_NUMBER_MODIFIER","_Trie","_linebreakTrie","_linebreakTrie2","BK","CR","LF","CM","NL","SG","WJ","ZW","GL","SP","ZWJ","B2","BA","BB","HY","CB","CL","CP","EX","IN","NS","OP","QU","IS","NU","PO","PR","SY","AI","AL","CJ","EB","EM","H2","H3","HL","ID","JL","JV","JT","RI","SA","XX","createTrieFromBase64","ALPHABETICS","HARD_LINE_BREAKS","SPACE","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","indicies","categories","classType","prev","isAdjacentWithSpaceIgnored","currentIndex","classTypes","previousNonSpaceClassType","_lineBreakAtIndex","forbiddenBreaks","beforeIndex","afterIndex","prevIndex","_prevIndex","_type","cssFormattedClasses","_codePointsToCharacte","_codePointsToCharacte2","_codePointsToCharacte3","_codePointsToCharacte4","isLetterNumber","Break","output","_cssFormattedClasses","_cssFormattedClasses2","forbiddenBreakpoints","_codePoints","required","_cssFormattedClasses3","_cssFormattedClasses4","lastEnd","nextIndex","Trie","UTRIE2_INDEX_2_MASK","UTRIE2_INDEX_2_BLOCK_LENGTH","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_UTF8_2B_INDEX_2_LENGTH","UTRIE2_UTF8_2B_INDEX_2_OFFSET","UTRIE2_INDEX_2_BMP_LENGTH","UTRIE2_LSCP_INDEX_2_LENGTH","UTRIE2_DATA_MASK","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_LSCP_INDEX_2_OFFSET","UTRIE2_SHIFT_1_2","UTRIE2_INDEX_SHIFT","UTRIE2_SHIFT_1","UTRIE2_SHIFT_2","view32","Uint32Array","view16","Uint16Array","headerLength","errorValue","highStart","highValueIndex","ix","Circle","_Gradient","Renderer","renderNodeBackgroundAndBorders","renderNodeContent","renderTextNode","drawShape","_image","contentBox","_width","_height","HAS_BACKGROUND","hasRenderableBorders","some","backgroundPaintingArea","renderBackgroundImage","renderBorder","renderBackgroundRepeat","renderBackgroundGradient","backgroundImageSize","renderRepeat","gradientBounds","parseGradient","GRADIENT_TYPE","LINEAR_GRADIENT","renderLinearGradient","RADIAL_GRADIENT","renderRadialGradient","curvePoints","_opacity","setOpacity","renderStackContent","_splitStackingContext","splitStackingContexts","_splitStackingContext2","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","_splitDescendants","splitDescendants","_splitDescendants2","inlineLevel","nonInlineLevel","sortByZIndex","renderStack","renderNode","_this5","getTarget","isInlineLevel","transformWebkitRadialGradientArgs","RadialGradient","LinearGradient","RADIAL_GRADIENT_SHAPE","_Angle","SIDE_OR_CORNER","PERCENTAGE_ANGLES","ENDS_WITH_LENGTH","FROM_TO_COLORSTOP","RADIAL_SHAPE_DEFINITION","ELLIPSE","LENGTH_FOR_POSITION","shape","parseColorStops","parseLinearGradient","transformObsoleteColorStops","parseRadialGradient","firstColorStopIndex","lineLength","HAS_LENGTH","lastSpaceIndex","lastIndexOf","absoluteValuedColorStops","previousColorStop","_stop2","steps","nextColorStep","stepSize","hasPrefix","angle","parseAngle","HAS_SIDE_OR_CORNER","HAS_DIRECTION","calculateGradientDirection","parseSideOrCorner","parsePercentageAngle","gradientCenter","gradientRadius","calculateRadius","radian","HALF_WIDTH","HALF_HEIGHT","sin","HALF_LINE_LENGTH","parseTopRight","acos","_angle$split$map","_angle$split$map2","ratio","atan","findCorner","stat","corner","optimumDistance","optimumCorner","extent","rx","ry","_corner","SHAPE_AND_EXTENT","RADIUS","matchStartPosition","matchShapeExtent","matchStartRadius","matchEndPosition","matchEndRadius","matchPosition","matchRadius","ANGLE","_Proxy","_ResourceLoader","_ResourceLoader2","_PseudoNodeContent","copyInline","referenceElement","scrolledElements","copyStyles","inlineImages","pseudoContentData","counters","quoteDepth","inlineImage","backgroundImages","HTMLImageElement","styleSheets","sheet","createStyleSheetFontsFromText","getSheetFonts","fonts","acc","formats","dataUri","fontFace","fontCss","HTMLCanvasElement","image3","tempIframe","generateIframeKey","_parseBounds","cache","getIframeDocumentElement","iframeCanvas","HTMLStyleElement","cssRules","rule","clone","Node","TEXT_NODE","createElementClone","styleBefore","styleAfter","clonedReferenceElement","HTMLBodyElement","createPseudoHideStyles","parseCounterReset","contentBefore","resolvePseudoContent","ELEMENT_NODE","ignoreElements","contentAfter","popCounters","inlineAllImages","inlinePseudoElement","PSEUDO_BEFORE","PSEUDO_AFTER","scrollTop","scrollLeft","cloneCanvasContents","CSSRule","FONT_FACE_RULE","baseHref","createHTMLDocument","restoreOwnerScroll","scrollTo","clonedCanvas","clonedCtx","putImageData","contentItems","pseudoElt","anonymousReplacedElement","PSEUDO_CONTENT_ITEM_TYPE","IMAGE","TEXT","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","createStyles","initNode","DATA_URI_REGEXP","contentWindow","createIframeContainer","cloneIframeContainer","documentClone","write","iframeLoad","iframeLoader","scrolling","onreadystatechange","interval","setInterval","readyState","clearInterval","serializeDoctype","onclone","doctype","adoptNode","internalSubset","publicId","systemId","ResourceStore","ResourceLoader","_window","getOrigin","hasResourceInCache","isSVG","isInlineImage","isSameOrigin","addImage","_loadImage","xhrImage","imageLoadHandler","supportsDataImages","isInlineBase64Image","_link","protocol","hostname","port","images","resources","_keys","_resources","INLINE_SVG","INLINE_BASE64","INLINE_IMG","parseContent","TOKEN_TYPE","STRING","ATTRIBUTE","COUNTER","COUNTERS","OPENQUOTE","CLOSEQUOTE","counterReset","counterNames","counterResets","lenCounterResets","_counterResets$i$spli","_counterResets$i$spli2","counterName","counter","lenCounters","tokens","counterIncrement","_counterIncrement$spl","_counterIncrement$spl2","incrementValue","token","_counter","formatCounterValue","_counters","glue","getQuote","isString","isEscaped","isFunction","functionName","_counters2","addOtherToken","identifier","isOpening","quotes","_objectWithoutProperties","MLSUserPreference","MLSGeography","MLSCount","MLSMedia","_reactOdata","_reactOdata2","statsbase","query","countQuery","MLSData","_Component2","_props$resource","resource","_props$collection","_props$ListingKeyNume","ListingKeyNumeric","_props$MemberKeyNumer","MemberKeyNumeric","_props$MediaType","MediaType","ResourceRecordKeyNumeric","processed","_Component3","_props2","_props2$resource","_props2$collection","_props2$filter","_props2$select","rest","_Component4","_props3","_props3$resource","actualcollection","_Component5","_props4","_props4$resource","_props4$collection","_props4$filter","_props4$select","_Component6","_props5","_props5$base","_props5$authHeader","authHeader","headers","Authorization","Accept","_props5$resource","_props5$processed","baseUrl","_MarketTrends","_MarketTrends2","WidgetResidential","nextState","isEqual","widgetselection","newWidgetSelections","widgetinstance","_widgetSelection","widgets","global","AxisInternal","params","d3","linear","orient","innerTickSize","outerTickSize","withOuterTick","tickPadding","tickValues","tickOffset","tickCulling","tickTextRotate","generateAxis","componentKey","c3$1","ChartInternal","loadConfig","beforeInit","init","afterInit","bindThis","argThis","c3_chart_fn","api","getDefaultConfig","c3_axis_fn","c3_axis_internal_fn","CLASS","chartLine","chartLines","chartBar","chartBars","chartText","chartTexts","chartArc","chartArcs","chartArcsTitle","chartArcsBackground","chartArcsGaugeUnit","chartArcsGaugeMax","chartArcsGaugeMin","selectedCircle","selectedCircles","eventRect","eventRects","eventRectsSingle","eventRectsMultiple","zoomRect","brush","focused","defocused","region","regions","tooltipContainer","tooltip","tooltipName","shapes","lines","bars","circle","circles","arcs","area","areas","texts","gaugeValue","gridLines","xgrid","xgrids","xgridLine","xgridLines","xgridFocus","ygrid","ygrids","ygridLine","ygridLines","axisX","axisXLabel","axisY","axisYLabel","axisY2","axisY2Label","legendBackground","legendItem","legendItemEvent","legendItemTile","legendItemHidden","legendItemFocused","dragarea","EXPANDED","SELECTED","INCLUDED","classCallCheck","inherits","possibleConstructorReturn","isValue","isDefined","ceil10","asHalfPixel","diffDomain","notEmpty","c3_chart_internal_fn","getOption","hasValue","dict","found","sanitise","getPathBox","box","items","pathSegList","scaleExtent","domain","generateTicks","ticks","tickArguments","unshift","copyScale","newScale","copy","isCategory","textFormatted","formatted","tickFormat","updateRange","rangeExtent","updateTickTextCharSize","tickTextCharSize","transitionise","withoutTransition","transition","isVertical","tspanData","splitted","tickMultiline","splitTickText","spaceIndex","subtext","textWidth","maxWidth","tickText","tickWidth","updateTickLength","tickLength","lineY2","tickPosition","tickCentered","textY","textTextAnchor","tspanDx","tspanDy","dy","tickTransform","tickX","tickY","scale0","__chart__","scale1","tickEnter","tickExit","tickUpdate","lineUpdate","textUpdate","tspanUpdate","pathUpdate","rangeBand","dx","isCentered","tickInterval","getTotalLength","Axis","main","clipPathForXAxis","getTranslate","textAnchorForXAxisLabel","axis_y_inner","clipPathForYAxis","textAnchorForYAxisLabel","y2","textAnchorForY2AxisLabel","getXAxis","withoutRotateTickText","axisParams","isCategorized","axis_x_tick_multiline","axis_x_tick_width","isTimeSeries","parseDate","axis_x_tick_centered","axis_x_tick_culling","updateXAxisTickValues","targets","axis_x_tick_fit","axis_x_tick_count","generateTickValues","mapTargetsToUniqueXs","xAxis","subXAxis","getYAxis","isTimeSeriesY","axis_y_tick_time_value","axis_y_tick_time_interval","getId","data_axes","getXAxisTickFormat","defaultAxisTimeFormat","categoryName","axis_x_tick_format","axisTimeFormat","getTickValues","getXAxisTickValues","axis_x_tick_values","getYAxisTickValues","axis_y_tick_values","yAxis","getY2AxisTickValues","axis_y2_tick_values","y2Axis","getLabelOptionByAxisId","axis_y_label","axis_y2_label","axis_x_label","getLabelText","setLabelText","getLabelPosition","defaultPosition","isOuter","isLeft","isCenter","isRight","isTop","isMiddle","isBottom","getXAxisLabelPosition","getYAxisLabelPosition","getY2AxisLabelPosition","textForXAxisLabel","textForYAxisLabel","textForY2AxisLabel","xForAxisLabel","forHorizontal","dxForAxisLabel","textAnchorForAxisLabel","xForXAxisLabel","xForYAxisLabel","xForY2AxisLabel","dxForXAxisLabel","dxForYAxisLabel","dxForY2AxisLabel","dyForXAxisLabel","dyForYAxisLabel","dyForY2AxisLabel","axis_y2_inner","withoutRecompute","targetsToShow","dummy","currentMaxTickWidths","filterTargetsToShow","getYDomain","yOrient","axis_y_tick_format","yAxisTickValues","y2Orient","axis_y2_tick_format","y2AxisTickValues","getXDomain","xOrient","xAxisTickFormat","xAxisTickValues","updateLabels","withTransition","getPadding","domainLength","convertPixelsToAxisPadding","pixels","tickCount","forTimeSeries","targetCount","tickValue","generateTransitions","duration","axisSubX","subx","redraw","transitions","isHidden","initParams","data_url","convertUrlToData","data_mimeType","data_headers","data_keys","initWithData","data_json","convertJsonToData","data_rows","convertRowsToData","data_columns","convertColumnsToData","clipId","clipIdForXAxis","clipIdForYAxis","clipIdForGrid","clipIdForSubchart","clipPath","getClipPath","clipPathForGrid","clipPathForSubchart","dragStart","dragging","flowing","cancelClick","mouseover","transiting","generateColor","levelColor","generateLevelColor","dataTimeFormat","data_xLocaltime","utc","axis_x_localtime","multi","getMilliseconds","getSeconds","getMinutes","getHours","getDate","hiddenTargetIds","hiddenLegendIds","focusedTargetIds","defocusedTargetIds","subXOrient","legend_position","isLegendTop","legend_inset_anchor","isLegendLeft","legendStep","legendItemWidth","legendItemHeight","rotated_padding_left","rotated_padding_right","withoutFadeIn","intervalForObserveInserted","initChartElements","initBar","initLine","initArc","initGauge","initText","defs","initPie","initBrush","initZoom","selectChart","observeInserted","xs","convertDataToTargets","data_filter","data_hide","addHiddenTargetIds","mapToIds","legend_hide","addHiddenLegendIds","hasType","updateSizes","updateScales","subX","subY","subY2","orgXDomain","zoom_enabled","onmouseover","onmouseout","svg_classname","clipChart","appendClip","clipXAxis","clipYAxis","clipGrid","clipSubchart","updateSvgSize","initSubchart","initTooltip","initLegend","initTitle","initRegion","initGrid","grid_lines_front","initGridLines","initEventRect","zoom_privileged","axis_x_extent","getDefaultExtent","updateTargets","updateDimension","oninit","withTransform","withUpdateXDomain","withUpdateOrgXDomain","withTransitionForAxis","bindResize","smoothLines","x2","legendHeight","legend","getLegendHeight","legendWidth","getLegendWidth","legendHeightForBottom","hasArc","hasArcType","xAxisHeight","subchartHeight","subchart_show","subchart_size_height","currentWidth","getCurrentWidth","currentHeight","getCurrentHeight","getCurrentPaddingTop","getCurrentPaddingRight","getCurrentPaddingBottom","getCurrentPaddingLeft","margin2","margin3","updateSizeForLegend","width2","height2","arcWidth","arcHeight","gauge_fullCircle","getGaugeLabelHeight","updateRadius","radiusExpanded","updateTargetsForText","updateTargetsForBar","updateTargetsForLine","updateTargetsForArc","updateTargetsForSubchart","showTargets","isTargetToShow","transition_duration","withY","withSubchart","withTransitionForExit","withTrimXDomain","withLegend","withEventRect","withDimension","withUpdateXAxis","drawArea","drawBar","drawLine","xForText","yForText","durationForExit","durationForAxis","waitForDraw","flow","intervalForCulling","xDomainForZoom","cx","cy","areaIndices","getShapeIndices","isAreaType","barIndices","isBarType","lineIndices","isLineType","hideAxis","xv","updateLegend","updateXDomain","zoom_rescale","orgDomain","axis_y_tick_count","axis_y2_tick_count","axis_x_tick_culling_max","generateDrawArea","generateDrawBar","generateDrawLine","generateXYForText","updateXgridFocus","data_empty_label_text","updateGrid","updateRegion","updateBar","updateLine","updateArea","updateCircle","hasDataLabel","updateText","redrawTitle","redrawArc","redrawSubchart","interaction_enabled","redrawEventRect","updateZoom","updateCircleY","circleY","circleX","generateFlow","isTabVisible","transitionsToWait","redrawBar","redrawLine","redrawArea","redrawCircle","redrawText","redrawRegion","redrawGrid","generateWait","updateAndRedraw","withTransitionForTransform","transformAll","redrawWithoutRescale","axis_x_type","isCustomX","data_x","data_xs","axis_y_type","initialOpacity","initialOpacityForCircle","opacityForCircle","isPointShouldBeShown","point_show","isScatterType","opacityForText","xx","axis_x_categories","yv","yScale","subxx","transformMain","transformContext","transformLegend","getXAxisClipX","getXAxisClipY","getXAxisClipWidth","getXAxisClipHeight","getYAxisClipX","getYAxisClipY","getYAxisClipWidth","getYAxisClipHeight","withoutAxis","observer","MutationObserver","mutations","mutation","previousSibling","disconnect","observe","attributes","childList","characterData","resizeFunction","generateResize","onresize","resize_auto","resizeTimeout","flush","onresized","callResizeFunctions","resizeFunctions","endall","timer","parsedDate","data_xFormat","parse","mozHidden","msHidden","webkitHidden","oThis","aArgs","fToBind","fNOP","fBound","SVGPathSeg","typeAsLetter","owningPathSegList","pathSegType","pathSegTypeAsLetter","_owningPathSegList","classname","PATHSEG_UNKNOWN","PATHSEG_CLOSEPATH","PATHSEG_MOVETO_ABS","PATHSEG_MOVETO_REL","PATHSEG_LINETO_ABS","PATHSEG_LINETO_REL","PATHSEG_CURVETO_CUBIC_ABS","PATHSEG_CURVETO_CUBIC_REL","PATHSEG_CURVETO_QUADRATIC_ABS","PATHSEG_CURVETO_QUADRATIC_REL","PATHSEG_ARC_ABS","PATHSEG_ARC_REL","PATHSEG_LINETO_HORIZONTAL_ABS","PATHSEG_LINETO_HORIZONTAL_REL","PATHSEG_LINETO_VERTICAL_ABS","PATHSEG_LINETO_VERTICAL_REL","PATHSEG_CURVETO_CUBIC_SMOOTH_ABS","PATHSEG_CURVETO_CUBIC_SMOOTH_REL","PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS","PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL","_segmentChanged","segmentChanged","SVGPathSegClosePath","_asPathString","SVGPathSegMovetoAbs","_x","_y","SVGPathSegMovetoRel","SVGPathSegLinetoAbs","SVGPathSegLinetoRel","SVGPathSegCurvetoCubicAbs","_x1","_y1","_x2","_y2","SVGPathSegCurvetoCubicRel","SVGPathSegCurvetoQuadraticAbs","SVGPathSegCurvetoQuadraticRel","SVGPathSegArcAbs","largeArcFlag","sweepFlag","_r1","_r2","_angle","_largeArcFlag","_sweepFlag","SVGPathSegArcRel","SVGPathSegLinetoHorizontalAbs","SVGPathSegLinetoHorizontalRel","SVGPathSegLinetoVerticalAbs","SVGPathSegLinetoVerticalRel","SVGPathSegCurvetoCubicSmoothAbs","SVGPathSegCurvetoCubicSmoothRel","SVGPathSegCurvetoQuadraticSmoothAbs","SVGPathSegCurvetoQuadraticSmoothRel","SVGPathElement","createSVGPathSegClosePath","createSVGPathSegMovetoAbs","createSVGPathSegMovetoRel","createSVGPathSegLinetoAbs","createSVGPathSegLinetoRel","createSVGPathSegCurvetoCubicAbs","createSVGPathSegCurvetoCubicRel","createSVGPathSegCurvetoQuadraticAbs","createSVGPathSegCurvetoQuadraticRel","createSVGPathSegArcAbs","createSVGPathSegArcRel","createSVGPathSegLinetoHorizontalAbs","createSVGPathSegLinetoHorizontalRel","createSVGPathSegLinetoVerticalAbs","createSVGPathSegLinetoVerticalRel","createSVGPathSegCurvetoCubicSmoothAbs","createSVGPathSegCurvetoCubicSmoothRel","createSVGPathSegCurvetoQuadraticSmoothAbs","createSVGPathSegCurvetoQuadraticSmoothRel","getPathSegAtLength","isFinite","measurementElement","lastPathSegment","numberOfItems","SVGPathSegList","pathElement","_pathElement","_list","_parsePath","_mutationObserverConfig","attributeFilter","_pathElementMutationObserver","_updateListFromPathMutations","_checkPathSynchronizedToList","_pathSegList","takeRecords","mutationRecords","hasPathMutations","_writeListToPath","_pathSegArrayAsString","pathSeg","clear","newItem","_checkValidIndex","insertItemBefore","replaceItem","appendItem","pathSegArray","first","Builder","appendSegment","Source","_string","_currentIndex","_endIndex","_previousCommand","_skipOptionalSpaces","_isCurrentSpace","character","_skipOptionalSpacesOrDelimiter","hasMoreData","peekSegmentType","_pathSegTypeFromChar","lookahead","_nextCommandHelper","previousCommand","initialCommandIsMoveTo","command","_parseNumber","frac","expsign","startIntPartIndex","scanIntPartIndex","multiplier","_parseArcFlag","flag","flagChar","parseSegment","points","arcAngle","arcLarge","arcSweep","builder","axis_x_max","axis_y_max","axis_y2_max","axis_x_min","axis_y_min","axis_y2_min","category","resize","size_width","size_height","destroy","targetIds","shown","targetId","clearLegendItemTextBoxCache","updateDataAttributes","colors","baseTarget","baseValue","diff","notfoundIds","orgDataCount","getMaxDataCount","tail","json","rows","getOtherTargetX","missing","translateX","scaleX","flowIndex","flowLength","flowStart","getValueOnIndex","flowEnd","durationForFlow","wait","mainRegion","mainText","mainBar","mainLine","mainArea","mainCircle","updateXGrid","hideXGridFocus","ease","isRegionOnX","xgridAttr","regionX","regionWidth","candidates","mapToTargetIds","selectorTargets","revert","defocus","expandArc","toggleFocusLegend","unexpandArc","showLegend","isLegendToShow","selectorLegends","grids","grid_x_lines","removeGridLines","grid_y_lines","data_groups","hide","hideLegend","load","addXs","data_classes","data_colors","hasCaches","cacheIds","getCaches","unload","loadFromArgs","ids","getTargetSelectorSuffix","indices","resetOther","data_selection_enabled","toggle","getToggle","isTargetId","data_selection_grouped","isTargetIndex","isSelected","data_selection_isselectable","unselect","removeHiddenTargetIds","mouse","isMultipleX","getYScale","getIndexByX","dispatchEvent","tooltip_onshow","tooltip_onhide","transformTo","optionsForRedraw","setTargetType","updateTargetX","updateTargetXs","zoom_onzoom","enable","unzoom","zoom_x_max","zoom_x_min","pie","layout","getOrderFunction","gauge_width","donut_width","innerRadiusRatio","innerRadius","updateArc","svgArc","getSvgArc","svgArcExpanded","getSvgArcExpanded","svgArcExpandedSub","updateAngle","gMin","gMax","gTic","gValue","startAngle","endAngle","isGaugeType","gauge_min","gauge_max","gauge_startingAngle","outerRadius","newArc","withoutUpdate","updated","centroid","rate","getArc","force","isArcType","transformForArcLabel","donut_label_ratio","pie_label_ratio","getArcRatio","whole","convertToArcData","addName","textForArcLabel","shouldShowArcLabel","meetsArcLabelThreshold","getArcLabelFormat","defaultArcValueFormat","textForGaugeMinMax","isMax","getGaugeLabelExtents","shouldExpand","expandDuration","isDonutType","donut_expand_duration","gauge_expand_duration","isPieType","pie_expand_duration","donut_expand","gauge_expand","pie_expand","shouldShow","donut_label_show","pie_label_show","donut_label_threshold","pie_label_threshold","pie_label_format","gauge_label_format","donut_label_format","gauge_label_extents","getArcTitle","donut_title","mainPieUpdate","mainPieEnter","classChartArc","classArcs","classFocus","mainArc","arcData","classArc","_current","data_onmouseover","selectedData","showTooltip","revertLegend","hideTooltip","data_onmouseout","toggleShape","data_onclick","attrTween","interpolate","interpolated","gauge_label_show","gauge_units","addCache","cloneTarget","generateClass","classText","classTexts","classShape","classShapes","classLine","classLines","classCircle","classCircles","classBar","classBars","classArea","classAreas","classRegion","classEvent","classTarget","additionalClassSuffix","additionalClass","classFocused","classDefocused","classChartText","classChartLine","classChartBar","selectorTarget","selectorLegend","appVersion","getAxisClipX","getAxisClipY","getAxisClipWidth","getAxisClipHeight","color_pattern","category10","data_color","threshold","color_threshold","asValue","padding_left","padding_right","padding_top","padding_bottom","zoom_extent","zoom_onzoomstart","zoom_onzoomend","interaction_brighten","data_xSort","data_idConverter","data_names","data_type","data_types","data_labels","data_order","data_regions","data_selection_multiple","data_selection_draggable","data_onselected","data_onunselected","subchart_axis_x_show","subchart_onbrush","legend_inset_x","legend_inset_y","legend_inset_step","legend_item_onclick","legend_item_onmouseover","legend_item_onmouseout","legend_equally","legend_padding","legend_item_tile_width","legend_item_tile_height","axis_x_tick_outer","axis_x_padding","axis_y_inverted","axis_y_center","axis_y_tick_outer","axis_y_padding","axis_y_default","axis_y2_inverted","axis_y2_center","axis_y2_tick_outer","axis_y2_padding","axis_y2_default","grid_x_show","grid_x_type","grid_y_show","grid_y_ticks","grid_focus_show","point_r","point_sensitivity","point_focus_expand_enabled","point_focus_expand_r","point_select_r","line_connectNull","line_step_type","bar_width","bar_width_ratio","bar_width_max","bar_zerobased","bar_space","area_zerobased","area_above","spline_interpolation_type","tooltip_show","tooltip_grouped","tooltip_order","tooltip_format_title","tooltip_format_name","tooltip_format_value","tooltip_position","tooltip_contents","defaultTitleFormat","defaultValueFormat","getTooltipContent","tooltip_init_show","tooltip_init_x","tooltip_init_position","title_text","title_padding","title_position","additionalConfig","find","shift","read","this_config","req","header","dataResponse","responseURL","statusText","convertTsvToData","convertCsvToData","convertXsvToData","xsv","parser","parseRows","csv","tsv","targetKeys","new_rows","new_row","findValueInJson","pathArray","newRows","newRow","appendXs","isNotX","isX","xKey","getXKey","getOtherTargetXs","getXValuesOfXKey","rawX","generateTargetX","convertedId","id_org","v1","v2","hasNegativeValue","hasNegativeValueInTargets","hasPositiveValue","hasPositiveValueInTargets","xValues","filterByX","getXValue","idsForX","hasMultipleX","valueOnIndex","updateXs","getPrevX","getNextX","getMaxDataCountTarget","maxTarget","getEdgeX","hasTarget","removeHiddenLegendIds","getValuesAsIdKeyed","ys","checkValueInTargets","checker","isOrderDesc","isOrderAsc","orderAsc","orderDesc","t1","t2","reducer","t1Sum","t2Sum","orderTargets","fct","filterRemoveNull","filterByXDomain","xDomain","getDataLabelLength","lengths","dataLabelFormat","isNoneArc","isArc","findSameXOfValues","targetX","sames","findClosestFromTargets","pos","findClosest","minDist","isWithinBar","dist","xIndex","yIndex","convertValuesToStep","converted","getYDomainMin","baseId","idsInGroup","getYDomainMax","yDomainAbs","isAllPositive","isAllNegative","targetsByAxisId","yTargets","yMin","yMax","yDomainMin","yDomainMax","isZeroBased","isInverted","showHorizontalDataLabel","showVerticalDataLabel","getXDomainMin","getXDomainMax","getXDomainPadding","maxDataCount","firstX","lastX","getTime","withTrim","updateScaleExtent","trimXDomain","zoomDomain","getZoomDomain","drag","sx","sy","my","minX","maxX","minY","maxY","altDomain","_w","_h","isIncluded","isWithin","togglePoint","togglePath","dragstart","dragend","getYFormat","forArc","formatForY","yFormat","formatForY2","y2Format","defaultFormat","xgridData","generateGridData","updateYGrid","gridValues","gridTextAnchor","gridTextDx","xGridTextX","yGridTextX","showXGridFocus","dataToShow","focusEl","firstYear","lastYear","gridData","tickNum","getGridFilterToRemove","param","forX","toRemove","toShow","eventRectUpdate","maxDataCountTarget","generateEventRectsForMultipleXs","updateEventRect","generateEventRectsForSingleX","rectW","rectX","getEventRectWidth","prevX","nextX","thisX","eventRectEnter","expandCircles","expandBars","unexpandCircles","unexpandBars","isStepType","isWithinShape","behavior","mouseout","sameXData","initMouseEvent","legendItemTextBox","legendHasRendered","updateLegendWithDefaults","insetLegendPosition","updateLegendStep","updateLegendItemWidth","updateLegendItemHeight","opacityForLegend","opacityForUnfocusedLegend","getTextBox","textElement","getTextRect","updatePositions","updateValues","withoutStep","areaLength","totalLength","itemLength","posMin","margins","maxLength","isLast","itemWidth","tileWidth","itemHeight","maxHeight","widths","heights","xForLegend","xForLegendText","xForLegendRect","yForLegend","yForLegendText","yForLegendRect","x1ForLegendTile","x2ForLegendTile","yForLegendTile","rects","tiles","parentData","regionY","regionHeight","getScale","forTimeseries","getX","_scale","raw","getY","getSubYScale","forInit","xMin","xMax","subXMin","subXMax","subYMin","subYMax","selectPoint","pointSelectR","unselectPoint","selectPath","brighter","unselectPath","mainBarUpdate","mainBarEnter","barData","getBarW","barTargetsNum","getBars","isSub","getPoints","generateGetBarPoints","indexX","indexY","__max__","barW","barX","getShapeX","barY","getShapeY","barOffset","getShapeOffset","barSpaceOffset","posX","posY","seg0","seg1","ey","typeFilter","targetsNum","isWithinStep","isWithinCircle","getInterpolate","interpolation","isInterpolationType","isSplineType","mainLineUpdate","mainLineEnter","lineData","generateGetLinePoints","yScaleGetter","xValue","yValue","defined","lineWithRegions","lineTargetsNum","lineOffset","_regions","generateM","sWithRegion","xp","yp","dd","diffx2","xOffset","d0","d1","x_diff","xv0","xv1","orgAreaOpacity","generateGetAreaPoints","value0","getAreaBaseValue","value1","areaTargetsNum","areaOffset","lineOrScatterData","pointR","getCircles","pointExpandedR","d3_this","getParentWidth","getParentHeight","getTitlePadding","getAxisWidthByAxisId","legendWidthOnRight","getParentRectValue","getSvgLeft","hasLeftAxisRect","leftAxisClass","leftAxis","svgRect","chartRect","svgLeft","redrawForBrush","contextLineEnter","contextLineUpdate","contextBarEnter","contextBarUpdate","updateBarForSubchart","contextBar","redrawBarForSubchart","drawBarOnSub","updateLineForSubchart","contextLine","redrawLineForSubchart","drawLineOnSub","updateAreaForSubchart","contextArea","redrawAreaForSubchart","drawAreaOnSub","mainTextUpdate","mainTextEnter","barOrLineData","forFlow","cls","getAreaPoints","getBarPoints","getLinePoints","getXForText","getYForText","xPos","yPos","isSafari","isChrome","xForTitle","yForTitle","getTooltipSortFunction","valueOf","sortFunction","bgcolor","titleFormat","nameFormat","valueFormat","tooltipSortFunction","tooltipPosition","tWidth","tHeight","tooltipLeft","tooltipRight","tooltipTop","chartRight","positionFunction","ua","startEvent","redrawForZoom","orgScaleExtent","z","d3_documentElement","d3_window","d3_ascending","d3_number","d3_numeric","d3_bisector","compare","lo","hi","mid","d3_transposeLength","d3_range_integerScale","d3_class","ctor","d3_Map","d3_map_escape","d3_map_proto","d3_map_zero","d3_map_unescape","d3_map_has","d3_map_remove","d3_map_keys","d3_map_size","d3_map_empty","d3_Set","d3_identity","d3_rebind","d3_vendorSymbol","d3_vendorPrefixes","prefixName","d3_noop","d3_dispatch","d3_dispatch_event","listenerByName","d3_eventPreventDefault","d3_eventSource","d3_eventDispatch","of","thiz","argumentz","e1","e0","d3_selection","d3_subclass","d3_selectionPrototype","d3_selection_selector","d3_select","d3_selection_selectorAll","d3_selectAll","d3_selection_attr","attrNull","attrNullNS","removeAttributeNS","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","ns","qualify","d3_collapse","d3_selection_classedRe","requote","d3_selection_classes","d3_selection_classed","classedConstant","classedFunction","d3_selection_classedName","d3_selection_style","styleNull","d3_selection_property","propertyNull","propertyConstant","propertyFunction","d3_selection_creator","d3_nsXhtml","createNS","d3_selectionRemove","d3_selection_dataNode","d3_selection_filter","d3_selectMatches","d3_selection_sortComparator","comparator","d3_selection_each","d3_selection_enter","d3_selection_enterPrototype","d3_selection_enterInsertBefore","i0","j0","d3_selection_on","$","d3_array","removeAll","d3_selection_onListener","d3_selection_onFilters","d3_selection_onFilter","d3_event_dragSuppress","d3_event_dragId","d3_event_dragSelect","suppressClick","d3_mousePoint","changedTouches","d3_mouse_bug44083","ctm","d3_behavior_dragTouchId","d3_sgn","d3_cross2d","d3_acos","π","d3_asin","halfπ","asin","d3_sinh","exp","d3_cosh","d3_tanh","d3_haversin","d3_color","d3_hsl","d3_rgb_parse","d3_rgb_hsl","d3_hsl_rgb","m1","m2","vv","d3_rgb","d3_hcl","d3_lab","d3_lab_hcl","d3_rgb_lab","d3_hcl_lab","d3_radians","d3_lab_rgb","d3_lab_xyz","d3_lab_X","d3_lab_Y","d3_lab_Z","d3_xyz_rgb","atan2","d3_degrees","d3_xyz_lab","d3_rgbNumber","d3_rgbString","d3_rgb_hex","hsl","d3_rgb_parseNumber","d3_rgb_names","d3_rgb_xyz","d3_functor","d3_xhrType","d3_xhr","respond","request","d3_xhrHasResponse","onprogress","progress","setRequestHeader","overrideMimeType","beforesend","abort","rebind","d3_xhr_fixCallback","d3_timer","delay","d3_timer_queueTail","d3_timer_queueHead","d3_timer_interval","d3_timer_timeout","d3_timer_frame","d3_timer_step","d3_timer_mark","d3_timer_sweep","t0","d3_format_precision","LN10","d3_formatPrefix","d3_locale_numberFormat","locale_decimal","locale_thousands","locale_grouping","locale_currency","formatGroup","d3_format_re","zfill","d3_format_types","d3_format_typeDefault","zcomma","fullSuffix","negative","after","d3_date_utc","UTC","d3_time_interval","d3_date","dt","times","range_utc","d3_time_interval_utc","d3_locale_timeFormat","d3_time_format","template","d3_time_formatPads","d3_time_formats","H","M","S","L","Z","d3_time_parse","localZ","setFullYear","W","U","setHours","d3_time_parsers","d3_time_parseWeekdayAbbrev","d3_time_dayAbbrevRe","d3_time_dayAbbrevLookup","d3_time_parseWeekday","d3_time_dayRe","d3_time_dayLookup","d3_time_parseMonthAbbrev","d3_time_monthAbbrevRe","d3_time_monthAbbrevLookup","d3_time_parseMonth","d3_time_monthRe","d3_time_monthLookup","d3_time_parseLocaleFull","d3_time_parseLocaleDate","d3_time_parseLocaleTime","d3_time_parseAmPm","d3_time_periodLookup","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_days","days","locale_shortDays","shortDays","locale_months","locale_shortMonths","shortMonths","d3_time_formatMulti","d3_time_formatRe","d3_time_formatLookup","A","B","d3_time_formatPad","I","d3_time","dayOfYear","sundayOfYear","mondayOfYear","Y","d3_time_zone","d3_time_parseDay","d3_time_parseHour24","d3_time_parseDayOfYear","d3_time_parseMilliseconds","d3_time_parseMonthNumber","d3_time_parseMinutes","d3_time_parseSeconds","d3_time_parseWeekNumberSunday","d3_time_parseWeekdayNumber","d3_time_parseWeekNumberMonday","d3_time_parseYear","d3_time_parseFullYear","d3_time_parseZone","d3_time_parseLiteralPercent","d3_time_numberRe","d3_time_expandYear","getTimezoneOffset","zs","zh","zm","d3_time_percentRe","d3_adder","d3_adderSum","bv","d3_geo_streamGeometry","geometry","d3_geo_streamGeometryType","d3_geo_streamLine","coordinates","closed","coordinate","lineStart","lineEnd","d3_geo_streamPolygon","polygonStart","polygonEnd","d3_geo_areaRingStart","nextPoint","λ","φ","dλ","λ0","sdλ","adλ","cosφ","sinφ","sinφ0","u","cosφ0","d3_geo_areaRingSum","λ00","φ00","d3_geo_area","d3_geo_cartesian","spherical","d3_geo_cartesianDot","d3_geo_cartesianCross","d3_geo_cartesianAdd","d3_geo_cartesianScale","vector","d3_geo_cartesianNormalize","d3_geo_spherical","cartesian","d3_geo_sphericalEqual","ε","d3_geo_centroidPoint","d3_geo_centroidPointXYZ","d3_geo_centroidW0","d3_geo_centroidX0","d3_geo_centroidY0","d3_geo_centroidZ0","d3_geo_centroidLineStart","z0","d3_geo_centroidW1","d3_geo_centroidX1","d3_geo_centroidY1","d3_geo_centroidZ1","d3_geo_centroid","d3_geo_centroidLineEnd","d3_geo_centroidRingStart","cz","d3_geo_centroidX2","d3_geo_centroidY2","d3_geo_centroidZ2","d3_geo_compose","compose","invert","d3_true","d3_geo_clipPolygon","segments","clipStartInside","subject","segment","p0","d3_geo_clipPolygonIntersection","d3_geo_clipPolygonLinkCircular","isSubject","other","d3_geo_clip","pointVisible","clipLine","clipStart","pointLine","pointRing","ring","ringListener","ringStart","ringEnd","clean","ringSegments","polygon","polygonStarted","d3_geo_clipSegmentLength1","rotatedClipStart","d3_geo_pointInPolygon","d3_geo_clipSort","sphere","d3_geo_clipBufferListener","rejoin","d3_geo_clipAntimeridianLine","φ0","sλ0","λ1","φ1","sλ1","d3_geo_clipAntimeridianIntersect","cosφ1","sinλ0_λ1","d3_geo_clipAntimeridianInterpolate","meridian","parallel","meridianNormal","polarAngle","winding","point0","antimeridian","τ","intersection","φarc","d3_geo_clipCircle","visible","cr","c0","v0","v00","point2","point1","smallRadius","intersect","notHemisphere","two","pa","pb","n1","n2","n2n2","n1n2","determinant","n1xn2","uu","q","δλ","polar","q1","d3_geo_circleInterpolate","d3_geom_clipLine","ax","ay","bx","by","d3_geo_clipExtent","comparePoints","ca","insidePolygon","wn","linePoint","v_","x_","y_","x__","y__","v__","bufferListener","d3_geo_clipExtentMAX","listener_","inside","d3_geo_conic","projectAt","d3_geo_projectionMutator","parallels","d3_geo_conicEqualArea","forward","ρ","C","ρ0","ρ0_y","d3_geo_pathAreaRingStart","d3_geo_pathAreaPolygon","x00","y00","d3_geo_pathArea","d3_geo_pathBoundsPoint","d3_geo_pathBoundsX0","d3_geo_pathBoundsX1","d3_geo_pathBoundsY0","d3_geo_pathBoundsY1","d3_geo_pathBuffer","pointCircle","pointLineStart","stream","lineEndPolygon","d3_geo_pathBufferCircle","pointRadius","d3_geo_pathCentroidPoint","d3_geo_pathCentroidLineStart","d3_geo_pathCentroid","d3_geo_pathCentroidLineEnd","d3_geo_pathCentroidRingStart","d3_geo_pathContext","d3_geo_resample","project","resample","maxDepth","resampleRecursive","resampleNone","d3_geo_transformPoint","resampleLineTo","a0","b0","ringPoint","a00","b00","c00","b1","depth","d2","δ2","φ2","λ2","dx2","dy2","dz","cosMinDistance","d3_geo_pathProjectStream","d3_geo_projectionRadians","d3_geo_transform","d3_geo_projection","projection","projectRotate","δx","δy","d3_geo_rotation","δφ","δγ","invalidate","valid","projectResample","preclip","d3_geo_clipAntimeridian","postclip","clipAngle","clipExtent","d3_geo_equirectangular","d3_geo_identityRotation","d3_geo_rotationλ","d3_geo_rotationφγ","d3_geo_forwardRotationλ","rotation","cosδφ","sinδφ","cosδγ","sinδγ","sr","d3_geo_circleAngle","d3_geo_graticuleX","d3_geo_graticuleY","d3_source","d3_target","d3_geo_interpolate","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","d3_geo_lengthLineStart","cosΔλ","d3_geo_lengthSum","d3_geo_length","d3_geo_azimuthal","azimuthal","cosλ","sinc","cosc","d3_geo_conicConformal","F","d3_geo_mercator","d3_geo_conicEquidistant","G","d3_geo_mercatorProjection","clipAuto","d3_geo_transverseMercator","d3_geom_pointX","d3_geom_pointY","d3_geom_hullUpper","hull","hs","d3_geom_hullOrder","d3_geom_polygonInside","d3_geom_polygonIntersect","x3","x21","x43","y3","y21","y43","d3_geom_polygonClosed","d3_geom_voronoiBeach","d3_geom_voronoiRedBlackNode","edge","site","d3_geom_voronoiCreateBeach","beach","d3_geom_voronoiBeachPool","d3_geom_voronoiDetachBeach","d3_geom_voronoiDetachCircle","d3_geom_voronoiBeaches","d3_geom_voronoiRemoveBeach","vertex","previous","P","N","disappearing","lArc","rArc","iArc","nArcs","d3_geom_voronoiSetEdgeEnd","d3_geom_voronoiCreateEdge","d3_geom_voronoiAttachCircle","d3_geom_voronoiAddBeach","dxl","dxr","directrix","d3_geom_voronoiLeftBreakPoint","d3_geom_voronoiRightBreakPoint","R","lSite","rSite","hb","hc","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","d3_geom_voronoiCell","edges","d3_geom_voronoiCloseCells","cell","iHalfEdge","halfEdges","nHalfEdges","cells","d3_geom_voronoiCells","iCell","prepare","d3_geom_voronoiHalfEdge","d3_geom_voronoiCreateBorderEdge","d3_geom_voronoiHalfEdgeOrder","d3_geom_voronoiCircle","cSite","ε2","ha","d3_geom_voronoiCirclePool","d3_geom_voronoiCircles","d3_geom_voronoiFirstCircle","d3_geom_voronoiClipEdges","d3_geom_voronoiEdges","d3_geom_voronoiConnectEdge","vb","fm","fb","va","lx","ly","fx","fy","d3_geom_voronoiEdge","d3_geom_voronoiRedBlackTree","d3_geom_voronoiRedBlackRotateLeft","d3_geom_voronoiRedBlackRotateRight","d3_geom_voronoiRedBlackFirst","d3_geom_voronoi","sites","bbox","d3_geom_voronoiVertexOrder","diagram","d3_geom_voronoiTriangleArea","d3_geom_quadtreeCompatX","d3_geom_quadtreeCompatY","d3_geom_quadtreeNode","leaf","d3_geom_quadtreeVisit","d3_geom_quadtreeFind","closestPoint","minDistance2","distance2","below","d3_interpolateRgb","ar","ag","br","bg","bb","d3_interpolateObject","d3_interpolate","d3_interpolateNumber","d3_interpolateString","am","bm","bs","bi","d3_interpolate_numberA","d3_interpolate_numberB","interpolators","d3_interpolateArray","na","nb","n0","d3_ease_clamp","d3_ease_reverse","d3_ease_reflect","d3_ease_quad","d3_ease_cubic","d3_ease_cubicInOut","t3","d3_ease_poly","d3_ease_sin","d3_ease_exp","d3_ease_circle","d3_ease_elastic","d3_ease_back","d3_ease_bounce","d3_interpolateHcl","hcl","ah","ac","al","bh","bl","d3_interpolateHsl","as","d3_interpolateLab","lab","aa","ba","d3_interpolateRound","d3_transform","r0","kx","d3_transformNormalize","kz","d3_transformDot","ky","d3_transformCombine","skew","d3_interpolateTransformPop","d3_interpolateTranslate","ta","tb","d3_interpolateRotate","ra","rb","d3_interpolateSkew","wa","wb","d3_interpolateScale","ka","kb","d3_interpolateTransform","d3_uninterpolateNumber","d3_uninterpolateClamp","d3_layout_bundlePath","lca","d3_layout_bundleLeastCommonAncestor","d3_layout_bundleAncestors","ancestors","aNodes","bNodes","aNode","bNode","sharedNode","d3_layout_forceDragstart","fixed","d3_layout_forceDragend","d3_layout_forceMouseover","px","py","d3_layout_forceMouseout","d3_layout_forceAccumulate","quad","alpha","charges","charge","pointCharge","d3_layout_hierarchyRebind","hierarchy","links","d3_layout_hierarchyLinks","d3_layout_hierarchyVisitBefore","d3_layout_hierarchyVisitAfter","nodes2","d3_layout_hierarchyChildren","d3_layout_hierarchyValue","d3_layout_hierarchySort","d3_layout_stackX","d3_layout_stackY","d3_layout_stackOut","d3_layout_stackOrderDefault","d3_layout_stackOffsetZero","d3_layout_stackMaxIndex","d3_layout_stackReduceSum","d3_layout_stackSum","d3_layout_histogramBinSturges","d3_layout_histogramBinFixed","LN2","d3_layout_histogramRange","d3_layout_packSort","d3_layout_packInsert","_pack_next","_pack_prev","d3_layout_packSplice","d3_layout_packIntersects","dr","d3_layout_packSiblings","bound","d3_layout_packLink","d3_layout_packPlace","isect","s1","s2","d3_layout_packUnlink","d3_layout_packTransform","db","da","dc","d3_layout_treeSeparation","d3_layout_treeLeft","d3_layout_treeRight","d3_layout_treeMove","wm","wp","change","d3_layout_treeShift","d3_layout_treeAncestor","vim","ancestor","d3_layout_clusterY","d3_layout_clusterX","d3_layout_clusterLeft","d3_layout_clusterRight","d3_layout_treemapPadNull","d3_layout_treemapPad","d3_scaleExtent","d3_scaleRange","d3_scale_bilinear","uninterpolate","d3_scale_nice","nice","i1","d3_scale_niceStep","d3_scale_niceIdentity","d3_scale_polylinear","bisect","d3_scale_linear","clamp","rescale","Number","rangeRound","d3_scale_linearTicks","d3_scale_linearTickFormat","d3_scale_linearNice","d3_scale_linearRebind","d3_scale_linearTickRange","d3_scale_linearPrecision","d3_scale_linearFormatPrecision","d3_scale_linearFormatSignificant","d3_scale_log","positive","niced","d3_scale_logNiceNegative","d3_scale_logFormat","d3_scale_pow","powp","d3_scale_powPow","powb","d3_scale_ordinal","ranger","xi","rangePoints","rangeRoundPoints","rangeBands","outerPadding","rangeRoundBands","d3_scale_quantile","thresholds","quantile","quantiles","invertExtent","d3_scale_quantize","d3_scale_threshold","d3_scale_identity","identity","d3_zero","d3_svg_arcInnerRadius","d3_svg_arcOuterRadius","d3_svg_arcStartAngle","d3_svg_arcEndAngle","d3_svg_arcPadAngle","padAngle","d3_svg_arcSweep","d3_svg_arcCornerTangents","rc","cw","x01","y01","D","cx0","cx1","dx0","dy0","dx1","dy1","d3_svg_line","tension","d3_svg_lineLinear","interpolateKey","d3_svg_lineInterpolators","d3_svg_lineLinearClosed","d3_svg_lineStep","d3_svg_lineStepBefore","d3_svg_lineStepAfter","d3_svg_lineCardinalOpen","d3_svg_lineHermite","d3_svg_lineCardinalTangents","d3_svg_lineCardinalClosed","d3_svg_lineCardinal","tangents","pi","lp","d3_svg_lineBasis","d3_svg_lineDot4","d3_svg_lineBasisBezier3","d3_svg_lineBasisBezier","d3_svg_lineBasisOpen","d3_svg_lineBasisClosed","d3_svg_lineBundle","d3_svg_lineBasisBezier1","d3_svg_lineBasisBezier2","d3_svg_lineSlope","d3_svg_lineFiniteDifferences","d3_svg_lineMonotoneTangents","d3_svg_lineMonotone","d3_svg_lineRadial","d3_svg_area","points1","interpolateReverse","points0","fx0","fy0","fx1","fy1","d3_svg_chordRadius","d3_svg_diagonalProjection","d3_svg_diagonalRadialProjection","d3_svg_symbolSize","d3_svg_symbolType","d3_svg_symbolCircle","d3_selection_interruptNS","lock","activeId","active","interrupt","d3_transition","d3_transitionPrototype","d3_transition_tween","tween","d3_transition_text","d3_transitionNamespace","d3_transitionNode","inherit","schedule","elapsed","cancelId","cancel","tweens","d3_svg_axisX","d3_svg_axisY","d3_time_formatIsoNative","toISOString","d3_time_scale","methods","tickMethod","d3_time_scaleSteps","year","d3_time_scaleMilliseconds","d3_time_scaleDate","skip","skipped","d3_json","d3_html","d3_document","createContextualFragment","d3_arraySlice","d3_element_prototype","d3_element_setAttribute","d3_element_setAttributeNS","d3_style_prototype","CSSStyleDeclaration","d3_style_setProperty","ascending","descending","sum","mean","median","variance","deviation","d3_bisect","bisectLeft","bisectRight","bisector","shuffle","permute","indexes","permutes","pairs","transpose","row","zip","arrays","merged","nest","mapType","rollup","sortValues","keyValue","setter","valuesByKey","sortKey","sortKeys","keyMap","d3_requote_re","d3_selectMatcher","Sizzle","matchesSelector","subgroup","subnode","subgroups","d3_nsPrefix","getAttributeNS","groupData","nodeData","updateNodes","enterNodes","exitNodes","nodeByKeyValue","keyValues","upgroup","touch","touches","mousedown","touchstart","move","moved","position1","dragId","position0","dragged","dragOffset","ended","dragSubject","dragName","dragRestore","correspondingElement","τε","SQRT2","interpolateZoom","ux0","uy0","w0","ux1","uy1","w1","coshr0","mousedowned","d3_behavior_zoomWheel","mousewheeled","dblclicked","touchstarted","scaleTo","translateTo","zoomTo","center0","zoomstarted","zooming","zoomed","zoomended","location0","mousemove","mouseup","d3_selection_interrupt","relocate","locations0","started","touchmove","touchend","changed","touchtime","distance0","l0","l1","distance1","zoomName","mousewheelTimer","translate0","d3_behavior_zoomDelta","d3_behavior_zoomInfinity","deltaY","deltaMode","wheelDelta","view1","d3_transitionInheritId","d3_hslPrototype","darker","d3_hclPrototype","d3_lab_K","d3_labPrototype","d3_rgbPrototype","functor","dsv","delimiter","typedResponse","formatRow","formatValue","reFormat","delimiterCode","EOF","eol","EOL","formatRows","fieldSet","fields","field","d3_formatPrefixes","getUTCDate","getUTCDay","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","setDate","d3_time_prototype","setUTCDate","setDay","setUTCDay","setUTCFullYear","setUTCHours","setMilliseconds","setUTCMilliseconds","setMinutes","setUTCMinutes","setUTCMonth","setSeconds","setUTCSeconds","setTime","day","years","sunday","weeks","weekOfYear","-","numberFormat","timeFormat","d3_locale_enUS","d3_adderTemp","d3_geo_streamObjectType","Feature","feature","FeatureCollection","features","Sphere","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","GeometryCollection","geometries","d3_geo_areaSum","ranges","normal","equatorial","inflection","λ_","λi","φi","dλSum","λ__","φ__","compareRanges","withinRange","best","conicEqualArea","albers","albersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","lower48Stream","alaskaStream","hawaiiStream","d3_geo_pathAreaSum","d3_geo_pathBounds","contextStream","cacheStream","projectStream","projectionMutator","equirectangular","Δλ","sinΔλ","sinφ1","graticule","X0","DX","X1","Y0","DY","Y1","majorExtent","minorExtent","majorStep","minorStep","greatArc","source_","target_","d3_geo_azimuthalEqualArea","cosλcosφ","azimuthalEqualArea","d3_geo_azimuthalEquidistant","azimuthalEquidistant","conicConformal","conicEquidistant","d3_geo_gnomonic","gnomonic","mercator","d3_geo_orthographic","orthographic","d3_geo_stereographic","stereographic","transverseMercator","geom","vertices","flippedPoints","upper","skipLeft","skipRight","d3_geom_polygonPrototype","grandpa","uncle","sibling","voronoi","polygons","d3_geom_voronoiClipExtent","triangles","s0","delaunay","quadtree","nx","ny","insertChild","nPoint","x1_","y1_","x2_","y2_","compat","interpolateRgb","interpolateObject","interpolateNumber","interpolateString","interpolateArray","d3_ease_default","d3_ease","poly","cubic","elastic","back","bounce","d3_ease_mode","out","in-out","out-in","interpolateHcl","interpolateHsl","interpolateLab","interpolateRound","baseVal","consolidate","d3_transformIdentity","interpolateTransform","bundle","chord","relayout","groupSums","groupIndex","subgroupIndex","chords","sortGroups","sortSubgroups","di","dj","subindex","sortChords","resort","repulse","dw","dn","theta2","chargeDistance2","dragmove","resume","distances","strengths","friction","linkDistance","d3_layout_forceLinkDistance","linkStrength","d3_layout_forceLinkStrength","d3_layout_forceChargeDistance2","gravity","chargeDistance","theta","dimension","neighbors","childs","revalue","partition","d3_layout_pieSortByValue","series","orders","d3_layout_stackOrders","d3_layout_stackOffsets","inside-out","sums","tops","bottoms","silhouette","wiggle","s3","o0","expand","histogram","bin","bins","valuer","binner","frequency","pack","root0","root1","wrapTree","firstWalk","secondWalk","nodeSize","sizeNode","tx","separation","node1","siblings","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","cluster","previousNode","treemap","squarify","score","pad","worst","stickify","rmax","rmin","stickies","sticky","padFunction","padConstant","µ","σ","logNormal","bates","irwinHall","ordinal","d3_category10","category20","d3_category20","category20b","d3_category20b","category20c","d3_category20c","quantize","circleSegment","rp","ap","padRadius","d3_svg_arcAuto","h1","h0","cornerRadius","rc1","rc0","oc","kc","lc","t30","t12","t03","t21","linear-closed","step-before","step-after","basis","basis-open","basis-closed","cardinal","cardinal-open","cardinal-closed","monotone","radial","equals","curve","diagonal","p3","projection_","d3_svg_symbols","cross","diamond","d3_svg_symbolTan30","square","triangle-down","d3_svg_symbolSqrt3","triangle-up","symbolTypes","d3_transitionId","d3_transitionInherit","subnodes","nameNS","attrTweenNS","styleString","styleTween","inheritId","id0","id1","tickArguments_","tickFormat_","tickSpacing","lineEnter","textEnter","d3_svg_axisDefaultOrient","d3_svg_axisOrients","tickSize","tickSubdivide","brushstart","resizes","d3_svg_brushCursor","gUpdate","backgroundUpdate","redrawX","redrawY","xExtent","yExtent","keydown","keyup","brushmove","resizingX","move1","resizingY","event_","yClamp","xClamp","yExtentDomain","xExtentDomain","brushend","eventTarget","resizing","d3_svg_brushResizes","extent1","extent0","yi","nw","ne","se","sw","d3_time_formatUtc","d3_time_formatIso","iso","second","seconds","minute","minutes","hour","timezone","hours","d3_time_scaleLocalMethods","d3_time_scaleLocalFormat","d3_time_scaleUtcMethods","d3_time_scaleUtcFormat","responseXML","validateMethodOverride","isAlreadyDefined","specPolicy","ReactClassInterface","ReactClassMixin","_invariant","mixSpecIntoComponent","spec","proto","autoBindPairs","__reactAutoBindPairs","MIXINS_KEY","RESERVED_SPEC_KEYS","mixins","isReactClassMethod","shouldAutoBind","autobind","createMergedResultFunction","createChainedFunction","mixStaticSpecIntoComponent","statics","isReserved","isInherited","mergeIntoWithNoDuplicateKeys","one","bindAutoBindMethod","boundMethod","bindAutoBindMethods","initialState","getInitialState","ReactClassComponent","injectedMixins","IsMountedPreMixin","IsMountedPostMixin","getDefaultProps","methodName","contextTypes","childContextTypes","getChildContext","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","componentWillUnmount","updateComponent","__isMounted","replaceState","newState","__WEBPACK_IMPORTED_MODULE_0__src_defaultLocale__","__WEBPACK_IMPORTED_MODULE_1__src_locale__","__WEBPACK_IMPORTED_MODULE_2__src_formatSpecifier__","__WEBPACK_IMPORTED_MODULE_3__src_precisionFixed__","__WEBPACK_IMPORTED_MODULE_4__src_precisionPrefix__","__WEBPACK_IMPORTED_MODULE_5__src_precisionRound__","defaultLocale","__WEBPACK_IMPORTED_MODULE_0__locale__","__WEBPACK_IMPORTED_MODULE_0__src_creator__","__WEBPACK_IMPORTED_MODULE_1__src_local__","__WEBPACK_IMPORTED_MODULE_2__src_matcher__","__WEBPACK_IMPORTED_MODULE_3__src_mouse__","__WEBPACK_IMPORTED_MODULE_4__src_namespace__","__WEBPACK_IMPORTED_MODULE_5__src_namespaces__","__WEBPACK_IMPORTED_MODULE_6__src_select__","__WEBPACK_IMPORTED_MODULE_7__src_selectAll__","__WEBPACK_IMPORTED_MODULE_8__src_selection_index__","__WEBPACK_IMPORTED_MODULE_9__src_selector__","__WEBPACK_IMPORTED_MODULE_10__src_selectorAll__","__WEBPACK_IMPORTED_MODULE_11__src_selection_style__","__WEBPACK_IMPORTED_MODULE_12__src_touch__","__WEBPACK_IMPORTED_MODULE_13__src_touches__","__WEBPACK_IMPORTED_MODULE_14__src_window__","__WEBPACK_IMPORTED_MODULE_15__src_selection_on__","Local","nextId","__WEBPACK_IMPORTED_MODULE_0__sourceEvent__","__WEBPACK_IMPORTED_MODULE_1__point__","__WEBPACK_IMPORTED_MODULE_0__selection_index__","__WEBPACK_IMPORTED_MODULE_0__creator__","attrRemove","attrRemoveNS","classArray","ClassList","_node","_names","classedAdd","classedRemove","classedTrue","classedFalse","bindIndex","groupLength","dataLength","__WEBPACK_IMPORTED_MODULE_1__enter__","bindKey","keyPrefix","__WEBPACK_IMPORTED_MODULE_0__index__","__WEBPACK_IMPORTED_MODULE_2__constant__","enterGroup","updateGroup","_exit","CustomEvent","initEvent","dispatchConstant","dispatchFunction","__WEBPACK_IMPORTED_MODULE_1__matcher__","htmlRemove","htmlConstant","htmlFunction","constantNull","__WEBPACK_IMPORTED_MODULE_1__selector__","groups0","groups1","m0","merges","group0","group1","propertyRemove","__WEBPACK_IMPORTED_MODULE_1__selectorAll__","compareNode","sortgroups","sortgroup","textRemove","textConstant","textFunction","camelize","_hyphenPattern","camelizeStyleName","msPattern","outerNode","innerNode","isTextNode","callee","hasArrayNature","createArrayFromMixed","getNodeName","nodeNameMatch","nodeNamePattern","createNodesFromMarkup","handleScript","dummyNode","getMarkupWrap","wrapDepth","scripts","markupWrap","shouldWrap","selectWrap","tableWrap","trWrap","svgWrap","*","col","tr","optgroup","caption","colgroup","tbody","tfoot","thead","td","th","getUnboundedScrollPosition","scrollable","Window","hyphenate","_uppercasePattern","hyphenateStyleName","isNode","memoizeStringOnly","arrayMap","iteratee","baseGetTag","undefinedTag","nullTag","symToStringTag","getRawTag","objectToString","toStringTag","baseToString","isSymbol","symbolToString","INFINITY","symbolProto","freeGlobal","isOwn","unmasked","nativeObjectToString","objectProto","freeSelf","isObjectLike","symbolTag","addMapEntry","pair","addSetEntry","arrayAggregator","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiToArray","asciiWords","reAsciiWord","baseFindKey","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","NAN","baseProperty","basePropertyOf","baseReduce","baseSortBy","comparer","baseTimes","baseToPairs","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","escapeStringChar","chr","stringEscapes","hasUnicode","reHasUnicode","hasUnicodeWord","reHasUnicodeWord","iteratorToArray","mapToArray","overArg","replaceHolders","PLACEHOLDER","setToArray","setToPairs","strictLastIndexOf","stringSize","unicodeSize","asciiSize","stringToArray","unicodeToArray","reUnicode","unicodeWords","reUnicodeWord","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","MAX_SAFE_INTEGER","MAX_INTEGER","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","proxyTag","regexpTag","setTag","stringTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsCombo","rsFitz","reOptMod","rsModifier","rsSeq","reApos","reComboMark","contextProps","templateCounter","typedArrayTags","cloneableTags","deburredLetters","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","Ā","Ă","Ą","ā","ă","ą","Ć","Ĉ","Ċ","Č","ć","ĉ","ċ","č","Ď","Đ","ď","đ","Ē","Ĕ","Ė","Ę","Ě","ē","ĕ","ė","ę","ě","Ĝ","Ğ","Ġ","Ģ","ĝ","ğ","ġ","ģ","Ĥ","Ħ","ĥ","ħ","Ĩ","Ī","Ĭ","Į","İ","ĩ","ī","ĭ","į","ı","Ĵ","ĵ","Ķ","ķ","ĸ","Ĺ","Ļ","Ľ","Ŀ","Ł","ĺ","ļ","ľ","ŀ","ł","Ń","Ņ","Ň","Ŋ","ń","ņ","ň","ŋ","Ō","Ŏ","Ő","ō","ŏ","ő","Ŕ","Ŗ","Ř","ŕ","ŗ","ř","Ś","Ŝ","Ş","Š","ś","ŝ","ş","š","Ţ","Ť","Ŧ","ţ","ť","ŧ","Ũ","Ū","Ŭ","Ů","Ű","Ų","ũ","ū","ŭ","ů","ű","ų","Ŵ","ŵ","Ŷ","ŷ","Ÿ","Ź","Ż","Ž","ź","ż","ž","IJ","ij","Œ","œ","ʼn","ſ","htmlEscapes","&","<",">","\"","'","htmlUnescapes","&","<",">",""","'","\\","\n","\r","
","
","freeParseFloat","freeParseInt","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","deburrLetter","escapeHtmlChar","unescapeHtmlChar","runInContext","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","lazyClone","copyArray","lazyReverse","lazyValue","isArr","arrLength","getView","iteratees","iterLength","takeCount","nativeMin","baseWrapperValue","iterIndex","computed","Hash","hashClear","nativeCreate","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","hash","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","SetCache","setCacheAdd","setCacheHas","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","arrayLikeKeys","inherited","isArg","isArguments","isBuff","isBuffer","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","baseAggregator","baseEach","baseAssign","copyObject","baseAssignIn","keysIn","baseAt","baseClone","customizer","isDeep","isFlat","isFull","isObject","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","copySymbolsIn","copySymbols","initCloneByTag","stacked","keysFunc","getAllKeysIn","getAllKeys","subValue","baseConforms","baseConformsTo","baseDelay","baseDifference","includes","isCommon","valuesLength","valuesIndex","baseEvery","baseExtremum","baseFill","toInteger","toLength","baseFilter","baseFlatten","isStrict","isFlattenable","baseForOwn","baseFor","baseForOwnRight","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","symbolsFunc","baseGt","baseHas","baseHasIn","baseInRange","nativeMax","baseIntersection","othLength","othIndex","caches","seen","baseInverter","baseInvoke","last","baseIsArguments","baseIsArrayBuffer","baseIsDate","baseIsEqual","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMap","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","isMasked","toSource","baseIsRegExp","baseIsSet","baseIsTypedArray","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","nativeKeys","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","baseMergeDeep","mergeFunc","isTyped","isArrayLikeObject","cloneTypedArray","isPlainObject","toPlainObject","baseNth","baseOrderBy","getIteratee","criteria","compareMultiple","basePick","basePickBy","baseSet","basePropertyDeep","basePullAll","basePullAt","baseUnset","nativeFloor","nativeRandom","baseRange","nativeCeil","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseUniq","createSet","seenIndex","baseUpdate","baseWhile","isDrop","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castSlice","allocUnsafe","cloneArrayBuffer","arrayBuffer","byteLength","cloneDataView","dataView","byteOffset","cloneMap","cloneFunc","cloneRegExp","regexp","cloneSet","cloneSymbol","symbolValueOf","typedArray","compareAscending","valIsDefined","valIsReflexive","objCriteria","othCriteria","ordersLength","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","getSymbols","getSymbolsIn","createAggregator","initializer","createAssigner","assigner","guard","isIterateeCall","createBaseEach","iterable","createBaseFor","createBind","Ctor","isBind","createCtor","createCaseFirst","createCompounder","deburr","thisBinding","baseCreate","createCurry","arity","getHolder","createRecurry","createHybrid","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","getFuncName","funcName","getData","isLaziable","plant","partialsRight","holdersRight","argPos","ary","holdersCount","newHolders","isBindKey","reorder","isFlip","isAry","createInverter","toIteratee","createMathOperation","operator","createOver","arrayFunc","createPadding","charsLength","createPartial","toFinite","createRelationalOperation","toNumber","wrapFunc","isCurry","newHoldersRight","newPartials","newPartialsRight","newData","setData","setWrapToString","createRound","createToPairs","createWrap","mergeData","baseSetData","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","isPartial","arrValue","othValue","compared","convert","objProps","objLength","skipCtor","objCtor","othCtor","flatten","realNames","otherFunc","isKeyable","getNative","transforms","getWrapDetails","hasPath","hasFunc","getPrototype","insertWrapDetails","details","spreadableSymbol","maskSrcKey","srcBitmask","newBitmask","isCombo","otherArgs","oldArray","reference","updateWrapDetails","shortOut","lastCalled","stamp","nativeNow","rand","chunk","compact","drop","dropRight","dropRightWhile","dropWhile","findIndex","findLastIndex","flattenDeep","flattenDepth","fromPairs","initial","separator","nativeJoin","nth","pullAll","pullAllBy","pullAllWith","nativeReverse","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sortedUniq","sortedUniqBy","take","takeRight","takeRightWhile","takeWhile","uniq","uniqBy","uniqWith","unzip","unzipWith","zipObject","zipObjectDeep","chain","tap","interceptor","wrapperChain","wrapperCommit","wrapperNext","wrapperToIterator","wrapperPlant","wrapperReverse","wrapped","wrapperValue","every","flatMap","flatMapDeep","flatMapDepth","forEachRight","baseEachRight","reduceRight","negate","sample","sampleSize","curry","curryRight","debounce","invokeFunc","lastArgs","lastThis","lastInvokeTime","leadingEdge","timerId","timerExpired","leading","remainingWait","timeSinceLastCall","lastCallTime","timeSinceLastInvoke","maxing","maxWait","shouldInvoke","trailingEdge","debounced","isInvoking","flip","memoize","memoized","Cache","spread","unary","partial","castArray","cloneWith","cloneDeep","cloneDeepWith","conformsTo","isBoolean","isElement","isEqualWith","isError","nativeIsFinite","isInteger","isMatch","isMatchWith","isNumber","isMaskable","isNull","isNil","objectCtorString","isSafeInteger","isWeakMap","isWeakSet","symIterator","remainder","isBinary","toSafeInteger","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","functions","functionsIn","mapKeys","mapValues","omitBy","pickBy","setWith","isArrLike","unset","updateWith","valuesIn","inRange","floating","temp","upperFirst","endsWith","escapeRegExp","strLength","padEnd","padStart","radix","nativeParseInt","limit","startsWith","settings","templateSettings","assignInWith","isEscaping","isEvaluating","imports","importsKeys","importsValues","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","attempt","toLower","toUpper","trimEnd","trimStart","truncate","omission","newEnd","cond","conforms","constant","defaultTo","matchesProperty","methodNames","noConflict","oldDash","nthArg","propertyOf","stubArray","stubFalse","stubObject","stubString","stubTrue","toPath","idCounter","maxBy","meanBy","minBy","sumBy","defaults","pick","arrayProto","funcProto","coreJsData","uid","IE_PROTO","Buffer","objectCreate","isConcatSpreadable","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeGetSymbols","nativeIsBuffer","DataView","WeakMap","metaMap","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","baseSetToString","castRest","ctorString","differenceBy","differenceWith","mapped","intersectionBy","intersectionWith","pull","pullAt","union","unionBy","unionWith","without","xor","xorBy","xorWith","zipWith","wrapperAt","countBy","findLast","groupBy","invokeMap","keyBy","sortBy","defer","overArgs","funcsLength","partialRight","rearg","gte","lte","assignIn","assignWith","at","defaultsDeep","mergeWith","invertBy","invoke","omit","toPairs","toPairsIn","camelCase","word","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","bindAll","flowRight","methodOf","over","overEvery","overSome","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplicand","subtract","minuend","subtrahend","entriesIn","extend","extendWith","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","commit","toJSON","typeSpecs","getStack","throwOnDirectAccess","maybeIterable","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","PropTypeError","createChainableTypeChecker","validate","checkType","isRequired","propFullName","secret","ANONYMOUS","chainedCheckType","createPrimitiveTypeChecker","expectedType","getPropType","getPreciseType","createArrayOfTypeChecker","typeChecker","createInstanceTypeChecker","expectedClass","expectedClassName","getClassName","createEnumTypeChecker","expectedValues","createObjectOfTypeChecker","propType","createUnionTypeChecker","arrayOfTypeCheckers","getPostfixForTypeWarning","createShapeTypeChecker","shapeTypes","createStrictShapeTypeChecker","allKeys","bool","any","arrayOf","instanceOf","objectOf","oneOf","oneOfType","exact","aria-current","aria-details","aria-disabled","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-roledescription","aria-autocomplete","aria-checked","aria-expanded","aria-haspopup","aria-level","aria-modal","aria-multiline","aria-multiselectable","aria-orientation","aria-placeholder","aria-pressed","aria-readonly","aria-required","aria-selected","aria-sort","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext","aria-atomic","aria-busy","aria-live","aria-relevant","aria-dropeffect","aria-grabbed","aria-activedescendant","aria-colcount","aria-colindex","aria-colspan","aria-controls","aria-describedby","aria-errormessage","aria-flowto","aria-labelledby","aria-owns","aria-posinset","aria-rowcount","aria-rowindex","aria-rowspan","aria-setsize","focusDOMComponent","isKeypressCommand","getCompositionEventType","compositionStart","compositionEnd","compositionUpdate","isFallbackCompositionStart","START_KEYCODE","isFallbackCompositionEnd","END_KEYCODES","getDataFromCustomEvent","extractCompositionEvent","fallbackData","canUseCompositionEvent","currentComposition","useFallbackCompositionData","FallbackCompositionState","SyntheticCompositionEvent","customData","EventPropagators","getNativeBeforeInputChars","which","SPACEBAR_CODE","hasSpaceKeypress","SPACEBAR_CHAR","getFallbackBeforeInputChars","extractBeforeInputEvent","canUseTextInputEvent","SyntheticInputEvent","beforeInput","opera","bubbled","captured","CSSProperty","dangerousStyleValue","processStyleName","styleName","hasShorthandPropertyBug","styleFloatAccessor","tempStyle","cssFloat","createMarkupForStyles","serialized","isCustomProperty","setValueForStyles","expansion","individualStyleName","createAndAccumulateChangeEvent","shouldUseChangeEvent","manualDispatchChangeEvent","activeElementInst","runEventInBatch","startWatchingForChangeEventIE8","stopWatchingForChangeEventIE8","getInstIfValueChanged","ChangeEventPlugin","_allowSimulatedPassThrough","getTargetInstForChangeEvent","handleEventsForChangeEventIE8","startWatchingForValueChange","handlePropertyChange","stopWatchingForValueChange","handleEventsForInputEventPolyfill","getTargetInstForInputEventPolyfill","shouldUseClickEvent","getTargetInstForClickEvent","getTargetInstForInputOrChangeEvent","handleControlledInputBlur","controlled","doesChangeEventBubble","isInputEventSupported","_isInputEventSupported","getTargetInstFunc","handleEventFunc","targetNode","oldChild","mouseEnter","mouseLeave","win","toNode","_root","_startText","_fallbackText","startValue","startLength","endValue","endLength","minEnd","accept","acceptCharset","accessKey","allowFullScreen","allowTransparency","alt","autoComplete","autoPlay","cellPadding","cellSpacing","charSet","challenge","cite","classID","cols","colSpan","contextMenu","controls","controlsList","coords","draggable","encType","form","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","hrefLang","htmlFor","httpEquiv","icon","inputMode","integrity","keyParams","keyType","kind","lang","loop","manifest","marginHeight","marginWidth","mediaGroup","minLength","muted","nonce","noValidate","optimum","playsInline","poster","preload","profile","radioGroup","referrerPolicy","reversed","role","rowSpan","sandbox","scoped","seamless","spellCheck","srcDoc","srcLang","srcSet","summary","tabIndex","useMap","wmode","about","datatype","inlist","typeof","vocab","autoCapitalize","autoCorrect","autoSave","itemProp","itemScope","itemType","itemID","itemRef","security","unselectable","validity","badInput","instantiateChild","childInstances","selfDebugID","keyUnique","instantiateChildren","nestedChildNodes","updateChildren","prevChildren","nextChildren","mountImages","removedNodes","prevChild","nextChildInstance","nextChildMountImage","unmountChildren","renderedChildren","renderedChild","DOMChildrenOperations","dangerouslyProcessChildrenUpdates","StatelessComponent","shouldConstruct","isPureComponent","nextMountID","_compositeType","_calledComponentWillUnmount","renderedElement","publicProps","publicContext","_processContext","updateQueue","getUpdateQueue","doConstruct","_constructComponent","CompositeTypes","unstable_handleError","performInitialMountWithErrorHandling","performInitialMount","_constructComponentWithoutOwner","_processPendingState","debugID","_renderValidatedComponent","_maskContext","maskedContext","contextName","currentContext","childContext","_checkContextTypes","prevContext","prevParentElement","nextParentElement","prevUnmaskedContext","nextUnmaskedContext","willReceive","prevProps","shouldUpdate","_performComponentUpdate","unmaskedContext","prevState","hasComponentDidUpdate","_updateRenderedComponent","prevComponentInstance","prevRenderedElement","nextRenderedElement","oldHostNode","nextMarkup","_replaceNodeWithMarkup","prevInstance","_renderValidatedComponentWithoutOwnerOrContext","attachRef","publicComponentInstance","detachRef","ReactDefaultInjection","findDOMNode","inject","ReactDOM","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","__REACT_DEVTOOLS_GLOBAL_HOOK__","Mount","Reconciler","assertValidProps","voidElementTags","_tag","dangerouslySetInnerHTML","HTML","enqueuePutListener","ReactServerRenderingTransaction","containerInfo","DOC_FRAGMENT_TYPE","_ownerDocument","listenerToPut","inputPostMount","ReactDOMInput","postMountWrapper","textareaPostMount","ReactDOMTextarea","optionPostMount","ReactDOMOption","trackInputValue","trapBubbledEventsLocal","getNode","mediaEvents","postUpdateSelectWrapper","ReactDOMSelect","validateDangerousTag","validatedTagCache","VALID_TAG_REGEX","isCustomComponent","ReactDOMComponent","_namespaceURI","_previousStyle","_previousStyleCopy","AutoFocusUtils","CSSPropertyOperations","ReactMultiChild","CONTENT_TYPES","suppressContentEditableWarning","omittedCloseTags","embed","hr","keygen","meta","wbr","newlineEatingTags","listing","pre","textarea","menuitem","globalIdCounter","Mixin","_idCounter","parentTag","mountImage","div","_updateDOMProperties","lazyTree","_createInitialChildren","tagOpen","_createOpenTagMarkupAndPutListeners","tagContent","_createContentMarkup","autoFocus","propKey","renderToStaticMarkup","__html","contentToUse","childrenToUse","mountChildren","lastProps","_updateDOMChildren","updateWrapper","styleUpdates","lastStyle","nextProp","lastProp","lastContent","nextContent","lastHtml","nextHtml","lastChildren","lastHasContentOrHtml","nextHasContentOrHtml","updateTextContent","updateMarkup","topLevelWrapper","ReactDOMEmptyComponent","createComment","useFiber","forceUpdateIfMounted","isControlled","rootNode","queryRoot","otherNode","otherInstance","initialChecked","valueAsNumber","flattenChildren","didWarnInvalidOptionChildren","selectValue","selectParent","hostProps","isCollapsed","anchorNode","anchorOffset","focusOffset","getIEOffsets","selectedRange","selectedLength","fromStart","duplicate","moveToElementText","setEndPoint","startOffset","getModernOffsets","rangeCount","currentRange","getRangeAt","isSelectionCollapsed","tempRange","cloneRange","selectNodeContents","startContainer","isTempRangeCollapsed","endContainer","endOffset","detectionRange","isBackward","collapsed","setIEOffsets","setModernOffsets","startMarker","getNodeForCharacterOffset","endMarker","removeAllRanges","addRange","useIEOffsets","ReactDOMTextComponent","_stringText","_closingComment","_commentNodes","domID","openingValue","createDocumentFragment","escapedText","nextText","nextStringText","commentNodes","hostNode","instA","instB","depthA","tempA","depthB","tempB","common","pathFrom","pathTo","ReactDefaultBatchingStrategyTransaction","RESET_BATCHED_UPDATES","ReactDefaultBatchingStrategy","FLUSH_BATCHED_UPDATES","alreadyBatchingUpdates","alreadyInjected","ReactInjection","EventEmitter","DefaultEventPluginOrder","ReactDOMTreeTraversal","SimpleEventPlugin","EnterLeaveEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","HostComponent","ARIADOMPropertyConfig","HTMLDOMPropertyConfig","SVGDOMPropertyConfig","EmptyComponent","Updates","ReactComponentBrowserEnvironment","runEventQueueInBatch","findParent","TopLevelCallbackBookKeeping","handleTopLevelImpl","bookKeeping","_handleTopLevel","scrollValueMonitor","EventListener","_enabled","refresh","adler32","TAG_END","COMMENT_START","addChecksumToMarkup","existingChecksum","makeInsertMarkup","toIndex","makeMove","makeRemove","makeSetMarkup","makeTextContent","processQueue","ReactChildReconciler","_reconcilerInstantiateChildren","nestedChildren","_reconcilerUpdateChildren","nextNestedChildrenElements","_updateChildren","nextMountIndex","lastPlacedNode","_mountChildAtIndex","_unmountChild","createChild","isValidOwner","addComponentAsRefTo","removeComponentAsRefFrom","ownerPublicInstance","reactMountReady","SELECTION_RESTORATION","EVENT_SUPPRESSION","currentlyEnabled","previouslyEnabled","ON_DOM_READY_QUEUEING","ReactOwner","prevRef","prevOwner","nextRef","nextOwner","ReactServerUpdateQueue","noopCallbackQueue","ATTRS","accentHeight","accumulate","additive","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeType","autoReverse","azimuth","baseFrequency","baseProfile","baselineShift","begin","bias","calcMode","capHeight","clipRule","clipPathUnits","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","cursor","decelerate","descent","diffuseConstant","dominantBaseline","dur","edgeMode","elevation","enableBackground","externalResourcesRequired","fillRule","filterRes","filterUnits","floodColor","focusable","fontSizeAdjust","fontStretch","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","ideographic","imageRendering","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","lightingColor","limitingConeAngle","markerEnd","markerMid","markerStart","markerHeight","markerUnits","markerWidth","mask","maskContentUnits","maskUnits","mathematical","numOctaves","orientation","overlinePosition","overlineThickness","paintOrder","panose1","pathLength","patternContentUnits","patternTransform","patternUnits","pointerEvents","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","restart","seed","shapeRendering","slope","spacing","specularConstant","specularExponent","speed","spreadMethod","stdDeviation","stemh","stemv","stitchTiles","stopColor","strikethroughPosition","strikethroughThickness","stroke","strokeLinecap","strokeLinejoin","surfaceScale","systemLanguage","tableValues","targetY","textAnchor","textRendering","textLength","u1","u2","underlinePosition","underlineThickness","unicode","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","viewBox","viewTarget","wordSpacing","writingMode","xHeight","xChannelSelector","xlinkActuate","xlinkArcrole","xlinkHref","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlnsXlink","xmlLang","xmlSpace","yChannelSelector","zoomAndPan","boundingTop","boundingLeft","constructSelectEvent","mouseDown","currentSelection","lastSelection","skipSelectionChangeEvent","hasListener","SyntheticAnimationEvent","SyntheticClipboardEvent","SyntheticFocusEvent","SyntheticKeyboardEvent","SyntheticDragEvent","SyntheticTouchEvent","SyntheticTransitionEvent","SyntheticWheelEvent","topLevelEventsToDispatchConfig","capitalizedEvent","onEvent","topEvent","onClickListeners","EventConstructor","animationName","elapsedTime","pseudoElement","clipboardData","dataTransfer","getEventKey","targetTouches","deltaX","wheelDeltaX","wheelDeltaY","deltaZ","MOD","isNonNumeric","componentOrElement","flattenSingleChildIntoContext","normalizeKey","translateToKey","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","getLeafNode","getSiblingNode","nodeStart","nodeEnd","makePrefixMap","styleProp","prefixedEventNames","vendorPrefixes","prefixMap","animationend","animationiteration","animationstart","transitionend","animation","buildUrl","_odataQuery2","renderChildren","buildQuery","_reactFetchComponent","_reactFetchComponent2","_odataQuery","OData","_fetch","buildFilter","filters","propPrefix","filterKey","handleValue","op","_builtFilters","LOGICAL_OPERATORS","_builtFilters2","valueKey","operators","COMPARISON_OPERATORS","COLLECTION_OPERATORS","lambaParameter","BOOLEAN_FUNCTIONS","builtFilters","buildExpand","expands","expandKeys","SUPPORTED_EXPAND_PROPERTIES","buildOrderBy","builtExpand","buildTransforms","transformKey","transformValue","buildAggregate","buildGroupBy","aggregate","aggregateItem","aggregateKey","aggregateValue","with","$select","builtFilter","$filter","builtTransforms","$apply","$top","$skip","$count","_Object$keys","_Object$keys2","funcParams","$expand","$orderby","fetchProps","childrenResult","Fetch","_temp","_ret","clearData","promises","manual","mounted","_x3","getOptions","_promise","_newState","ok","cachedState","currentPromise","onDataChange","ignorePreviousData","escapeUserProvidedKey","userProvidedKeyEscapeRegex","ForEachBookKeeping","forEachFunction","forEachContext","forEachSingleChild","forEachChildren","forEachFunc","MapBookKeeping","mapResult","mapFunction","mapContext","mapSingleChildIntoContext","childKey","mappedChild","mapIntoWithKeyPrefixInternal","escapedPrefix","mapChildren","forEachSingleChildDummy","countChildren","createDOMFactory","abbr","address","article","aside","audio","bdi","bdo","big","blockquote","datalist","del","dfn","dialog","dl","em","fieldset","figcaption","figure","footer","h2","h3","h4","h5","h6","hgroup","iframe","ins","kbd","li","mark","menu","meter","nav","noscript","ol","picture","rt","ruby","samp","script","section","small","strong","sub","sup","table","ul","var","video","ellipse","polyline","tspan","_require","_require2","getNextDebugID","nextDebugID","lowPriorityWarning","tasksByHandle","nextHandle","registerImmediate","clearImmediate","task","runIfPresent","currentlyRunningATask","attachTo","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","messagePrefix","onGlobalMessage","MessageChannel","channel","port1","port2","host","currentDir","pathname","fullMatch","origUrl","unquotedOrigUrl","$1","newUrl","Timeout","clearFn","_id","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","normalizeName","normalizeValue","iteratorFor","support","Headers","consumed","bodyUsed","fileReaderReady","readBlobAsArrayBuffer","readAsArrayBuffer","readBlobAsText","readAsText","readArrayBufferAsText","buf","bufferClone","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","formData","FormData","_bodyFormData","searchParams","URLSearchParams","isDataView","_bodyArrayBuffer","isArrayBufferView","rejected","normalizeMethod","upcased","Request","credentials","referrer","parseHeaders","rawHeaders","Response","bodyInit","viewClasses","isView","oldValue","redirectStatuses","redirect","RangeError","getAllResponseHeaders","withCredentials","polyfill"],"mappings":"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9M,UACAg9M,EAAA4c,WACA5c,EAAA6c,eACA7c,EAAA8c,gBACA9c,EAAAgY,WACAhY,EAAAka,eACAla,EAAAma,gBACAna,EAAA0e,QACA1e,EAAAt/F,QACAs/F,EAAA+pB,aACA/pB,EAAAoa,aACApa,EAAAghB,aACAhhB,EAAAihB,eACAjhB,EAAAioB,WACAjoB,EAAAqa,WACAra,EAAAnqD,gBACAmqD,EAAAknB,kBACAlnB,EAAAmnB,oBACAnnB,EAAAttD,UACAstD,EAAAipB,YACAjpB,EAAAkoB,aACAloB,EAAA9a,YACA8a,EAAAmoB,SACAnoB,EAAA1jN,QACA0jN,EAAAsF,UACAtF,EAAAhkN,OACAgkN,EAAAkhB,WACAlhB,EAAAmhB,aACAnhB,EAAAlkL,WACAkkL,EAAAokB,mBACApkB,EAAA2e,WACA3e,EAAA58M,SACA48M,EAAAgpB,aACAhpB,EAAAh3M,UACAg3M,EAAAgqB,YACAhqB,EAAAltM,SACAktM,EAAAkd,UACAld,EAAAwkB,UACAxkB,EAAAmpB,QACAnpB,EAAAohB,UACAphB,EAAA9zL,QACA8zL,EAAAn2J,WACAm2J,EAAAiqB,QACAjqB,EAAAsoB,YACAtoB,EAAAkqB,aACAlqB,EAAAmqB,YACAnqB,EAAAgf,WACAhf,EAAAwoB,gBACAxoB,EAAAzwB,aACAywB,EAAAslB,QACAtlB,EAAAqhB,UACArhB,EAAA1mN,YACA0mN,EAAAykB,cACAzkB,EAAAonB,QACApnB,EAAAya,WACAza,EAAA0a,aACA1a,EAAA2a,eACA3a,EAAAqnB,UACArnB,EAAAt3K,SACAs3K,EAAAoqB,cACApqB,EAAAyoB,SACAzoB,EAAA7pM,UACA6pM,EAAA57M,UACA47M,EAAAl+G,QACAk+G,EAAAj9J,WACAi9J,EAAAod,cACApd,EAAArkM,OACAqkM,EAAAshB,WACAthB,EAAA3kC,WACA2kC,EAAApgN,SACAogN,EAAAooB,UACApoB,EAAAmb,cACAnb,EAAAob,gBACApb,EAAA7jN,SACA6jN,EAAA8e,UACA9e,EAAArtF,QACAqtF,EAAAqb,QACArb,EAAAsb,aA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","file":"dist/mlsmediacenter.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mlsmediacenter\"] = factory();\n\telse\n\t\troot[\"mlsmediacenter\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mlsmediacenter\"] = factory();\n\telse\n\t\troot[\"mlsmediacenter\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\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 = 110);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (false) {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar emptyFunction = __webpack_require__(7);\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (false) {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar DOMProperty = __webpack_require__(15);\nvar ReactDOMComponentFlags = __webpack_require__(78);\n\nvar invariant = __webpack_require__(0);\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\n\nvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n\n/**\n * Check if a given node should be cached.\n */\nfunction shouldPrecacheNode(node, nodeID) {\n return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' ';\n}\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n var rendered;\n while (rendered = component._renderedComponent) {\n component = rendered;\n }\n return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n var hostInst = getRenderedHostOrTextFromComponent(inst);\n hostInst._hostNode = node;\n node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n var node = inst._hostNode;\n if (node) {\n delete node[internalInstanceKey];\n inst._hostNode = null;\n }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n if (inst._flags & Flags.hasCachedChildNodes) {\n return;\n }\n var children = inst._renderedChildren;\n var childNode = node.firstChild;\n outer: for (var name in children) {\n if (!children.hasOwnProperty(name)) {\n continue;\n }\n var childInst = children[name];\n var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n if (childID === 0) {\n // We're currently unmounting this child in ReactMultiChild; skip it.\n continue;\n }\n // We assume the child nodes are in the same order as the child instances.\n for (; childNode !== null; childNode = childNode.nextSibling) {\n if (shouldPrecacheNode(childNode, childID)) {\n precacheNode(childInst, childNode);\n continue outer;\n }\n }\n // We reached the end of the DOM children without finding an ID match.\n true ? false ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;\n }\n inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n if (node[internalInstanceKey]) {\n return node[internalInstanceKey];\n }\n\n // Walk up the tree until we find an ancestor whose instance we have cached.\n var parents = [];\n while (!node[internalInstanceKey]) {\n parents.push(node);\n if (node.parentNode) {\n node = node.parentNode;\n } else {\n // Top of the tree. This node must not be part of a React tree (or is\n // unmounted, potentially).\n return null;\n }\n }\n\n var closest;\n var inst;\n for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n closest = inst;\n if (parents.length) {\n precacheChildNodes(inst, node);\n }\n }\n\n return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n var inst = getClosestInstanceFromNode(node);\n if (inst != null && inst._hostNode === node) {\n return inst;\n } else {\n return null;\n }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n !(inst._hostNode !== undefined) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n if (inst._hostNode) {\n return inst._hostNode;\n }\n\n // Walk up the tree until we find an ancestor whose DOM node we have cached.\n var parents = [];\n while (!inst._hostNode) {\n parents.push(inst);\n !inst._hostParent ? false ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;\n inst = inst._hostParent;\n }\n\n // Now parents contains each ancestor that does *not* have a cached native\n // node, and `inst` is the deepest ancestor that does.\n for (; parents.length; inst = parents.pop()) {\n precacheChildNodes(inst, inst._hostNode);\n }\n\n return inst._hostNode;\n}\n\nvar ReactDOMComponentTree = {\n getClosestInstanceFromNode: getClosestInstanceFromNode,\n getInstanceFromNode: getInstanceFromNode,\n getNodeFromInstance: getNodeFromInstance,\n precacheChildNodes: precacheChildNodes,\n precacheNode: precacheNode,\n uncacheNode: uncacheNode\n};\n\nmodule.exports = ReactDOMComponentTree;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return root; });\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = Selection;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__select__ = __webpack_require__(157);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__selectAll__ = __webpack_require__(158);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__filter__ = __webpack_require__(146);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__data__ = __webpack_require__(140);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__enter__ = __webpack_require__(67);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__exit__ = __webpack_require__(145);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__merge__ = __webpack_require__(150);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__order__ = __webpack_require__(153);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__sort__ = __webpack_require__(160);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__call__ = __webpack_require__(138);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__nodes__ = __webpack_require__(152);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__node__ = __webpack_require__(151);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__size__ = __webpack_require__(159);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__empty__ = __webpack_require__(144);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__each__ = __webpack_require__(143);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__attr__ = __webpack_require__(137);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__style__ = __webpack_require__(69);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__property__ = __webpack_require__(154);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__classed__ = __webpack_require__(139);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__text__ = __webpack_require__(161);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__html__ = __webpack_require__(147);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__raise__ = __webpack_require__(155);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__lower__ = __webpack_require__(149);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__append__ = __webpack_require__(136);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__insert__ = __webpack_require__(148);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__remove__ = __webpack_require__(156);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__datum__ = __webpack_require__(141);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__on__ = __webpack_require__(37);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__dispatch__ = __webpack_require__(142);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar root = [null];\n\nfunction Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: __WEBPACK_IMPORTED_MODULE_0__select__[\"a\" /* default */],\n selectAll: __WEBPACK_IMPORTED_MODULE_1__selectAll__[\"a\" /* default */],\n filter: __WEBPACK_IMPORTED_MODULE_2__filter__[\"a\" /* default */],\n data: __WEBPACK_IMPORTED_MODULE_3__data__[\"a\" /* default */],\n enter: __WEBPACK_IMPORTED_MODULE_4__enter__[\"a\" /* default */],\n exit: __WEBPACK_IMPORTED_MODULE_5__exit__[\"a\" /* default */],\n merge: __WEBPACK_IMPORTED_MODULE_6__merge__[\"a\" /* default */],\n order: __WEBPACK_IMPORTED_MODULE_7__order__[\"a\" /* default */],\n sort: __WEBPACK_IMPORTED_MODULE_8__sort__[\"a\" /* default */],\n call: __WEBPACK_IMPORTED_MODULE_9__call__[\"a\" /* default */],\n nodes: __WEBPACK_IMPORTED_MODULE_10__nodes__[\"a\" /* default */],\n node: __WEBPACK_IMPORTED_MODULE_11__node__[\"a\" /* default */],\n size: __WEBPACK_IMPORTED_MODULE_12__size__[\"a\" /* default */],\n empty: __WEBPACK_IMPORTED_MODULE_13__empty__[\"a\" /* default */],\n each: __WEBPACK_IMPORTED_MODULE_14__each__[\"a\" /* default */],\n attr: __WEBPACK_IMPORTED_MODULE_15__attr__[\"a\" /* default */],\n style: __WEBPACK_IMPORTED_MODULE_16__style__[\"b\" /* default */],\n property: __WEBPACK_IMPORTED_MODULE_17__property__[\"a\" /* default */],\n classed: __WEBPACK_IMPORTED_MODULE_18__classed__[\"a\" /* default */],\n text: __WEBPACK_IMPORTED_MODULE_19__text__[\"a\" /* default */],\n html: __WEBPACK_IMPORTED_MODULE_20__html__[\"a\" /* default */],\n raise: __WEBPACK_IMPORTED_MODULE_21__raise__[\"a\" /* default */],\n lower: __WEBPACK_IMPORTED_MODULE_22__lower__[\"a\" /* default */],\n append: __WEBPACK_IMPORTED_MODULE_23__append__[\"a\" /* default */],\n insert: __WEBPACK_IMPORTED_MODULE_24__insert__[\"a\" /* default */],\n remove: __WEBPACK_IMPORTED_MODULE_25__remove__[\"a\" /* default */],\n datum: __WEBPACK_IMPORTED_MODULE_26__datum__[\"a\" /* default */],\n on: __WEBPACK_IMPORTED_MODULE_27__on__[\"c\" /* default */],\n dispatch: __WEBPACK_IMPORTED_MODULE_28__dispatch__[\"a\" /* default */]\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (selection);\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2016-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\n// Trust the developer to only use ReactInstrumentation with a __DEV__ check\n\nvar debugTool = null;\n\nif (false) {\n var ReactDebugTool = require('./ReactDebugTool');\n debugTool = ReactDebugTool;\n}\n\nmodule.exports = { debugTool: debugTool };\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar CallbackQueue = __webpack_require__(76);\nvar PooledClass = __webpack_require__(13);\nvar ReactFeatureFlags = __webpack_require__(81);\nvar ReactReconciler = __webpack_require__(16);\nvar Transaction = __webpack_require__(29);\n\nvar invariant = __webpack_require__(0);\n\nvar dirtyComponents = [];\nvar updateBatchNumber = 0;\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? false ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;\n}\n\nvar NESTED_UPDATES = {\n initialize: function () {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function () {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function () {\n this.callbackQueue.reset();\n },\n close: function () {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function () {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function (method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n ensureInjected();\n return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n !(len === dirtyComponents.length) ? false ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n // Any updates enqueued while reconciling must be performed after this entire\n // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n // C, B could update twice in a single batch if C's render enqueues an update\n // to B (since B would have already updated, we should skip it, and the only\n // way we can know to do so is by checking the batch counter).\n updateBatchNumber++;\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var namedComponent = component;\n // Duck type TopLevelWrapper. This is probably always true.\n if (component._currentElement.type.isReactTopLevelWrapper) {\n namedComponent = component._renderedComponent;\n }\n markerName = 'React update: ' + namedComponent.getName();\n console.time(markerName);\n }\n\n ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function () {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n if (component._updateBatchNumber == null) {\n component._updateBatchNumber = updateBatchNumber + 1;\n }\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n invariant(batchingStrategy.isBatchingUpdates, \"ReactUpdates.asap: Can't enqueue an asap callback in a context where\" + 'updates are not being batched.');\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function (ReconcileTransaction) {\n !ReconcileTransaction ? false ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function (_batchingStrategy) {\n !_batchingStrategy ? false ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;\n !(typeof _batchingStrategy.batchedUpdates === 'function') ? false ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;\n !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? false ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar PooledClass = __webpack_require__(13);\n\nvar emptyFunction = __webpack_require__(7);\nvar warning = __webpack_require__(1);\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === 'function';\n\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: null,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n if (false) {\n // these have a getter/setter for warnings\n delete this.nativeEvent;\n delete this.preventDefault;\n delete this.stopPropagation;\n }\n\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n if (false) {\n delete this[propName]; // this has a getter/setter for warnings\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n if (propName === 'target') {\n this.target = nativeEventTarget;\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n // eslint-disable-next-line valid-typeof\n } else if (typeof event.returnValue !== 'unknown') {\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function () {\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation();\n // eslint-disable-next-line valid-typeof\n } else if (typeof event.cancelBubble !== 'unknown') {\n // The ChangeEventPlugin registers a \"propertychange\" event for\n // IE. This event does not support bubbling or cancelling, and\n // any references to cancelBubble throw \"Member not found\". A\n // typeof check of \"unknown\" circumvents this issue (and is also\n // IE specific).\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function () {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function () {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (false) {\n Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n } else {\n this[propName] = null;\n }\n }\n for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n this[shouldBeReleasedProperties[i]] = null;\n }\n if (false) {\n Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n }\n }\n});\n\nSyntheticEvent.Interface = EventInterface;\n\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function (Class, Interface) {\n var Super = this;\n\n var E = function () {};\n E.prototype = Super.prototype;\n var prototype = new E();\n\n _assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = _assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n};\n\n/** Proxying after everything set on SyntheticEvent\n * to resolve Proxy issue on some WebKit browsers\n * in which some Event properties are set to undefined (GH#10010)\n */\nif (false) {\n if (isProxySupported) {\n /*eslint-disable no-func-assign */\n SyntheticEvent = new Proxy(SyntheticEvent, {\n construct: function (target, args) {\n return this.apply(target, Object.create(target.prototype), args);\n },\n apply: function (constructor, that, args) {\n return new Proxy(constructor.apply(that, args), {\n set: function (target, prop, value) {\n if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), \"This synthetic event is reused for performance reasons. If you're \" + \"seeing this, you're adding a new property in the synthetic event object. \" + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n didWarnForAddedNewProperty = true;\n }\n target[prop] = value;\n return true;\n }\n });\n }\n });\n /*eslint-enable no-func-assign */\n }\n}\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n\n/**\n * Helper to nullify syntheticEvent instance properties when destructing\n *\n * @param {object} SyntheticEvent\n * @param {String} propName\n * @return {object} defineProperty object\n */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n var isFunction = typeof getVal === 'function';\n return {\n configurable: true,\n set: set,\n get: get\n };\n\n function set(val) {\n var action = isFunction ? 'setting the method' : 'setting the property';\n warn(action, 'This is effectively a no-op');\n return val;\n }\n\n function get() {\n var action = isFunction ? 'accessing the method' : 'accessing the property';\n var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n warn(action, result);\n return getVal;\n }\n\n function warn(action, result) {\n var warningCondition = false;\n false ? warning(warningCondition, \"This synthetic event is reused for performance reasons. If you're seeing this, \" + \"you're %s `%s` on a released/nullified synthetic event. %s. \" + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n }\n}\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\nmodule.exports = ReactCurrentOwner;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(17);\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? false ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar DOMNamespaces = __webpack_require__(45);\nvar setInnerHTML = __webpack_require__(31);\n\nvar createMicrosoftUnsafeLocalFunction = __webpack_require__(53);\nvar setTextContent = __webpack_require__(94);\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\n/**\n * In IE (8-11) and Edge, appending nodes with no children is dramatically\n * faster than appending a full subtree, so we essentially queue up the\n * .appendChild calls here and apply them so each node is added to its parent\n * before any children are added.\n *\n * In other browsers, doing so is slower or neutral compared to the other order\n * (in Firefox, twice as slow) so we only do this inversion in IE.\n *\n * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.\n */\nvar enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\\bEdge\\/\\d/.test(navigator.userAgent);\n\nfunction insertTreeChildren(tree) {\n if (!enableLazy) {\n return;\n }\n var node = tree.node;\n var children = tree.children;\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n insertTreeBefore(node, children[i], null);\n }\n } else if (tree.html != null) {\n setInnerHTML(node, tree.html);\n } else if (tree.text != null) {\n setTextContent(node, tree.text);\n }\n}\n\nvar insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {\n // DocumentFragments aren't actually part of the DOM after insertion so\n // appending children won't update the DOM. We need to ensure the fragment\n // is properly populated first, breaking out of our lazy approach for just\n // this level. Also, some plugins (like Flash Player) will read\n // nodes immediately upon insertion into the DOM, so \n // must also be populated prior to insertion into the DOM.\n if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {\n insertTreeChildren(tree);\n parentNode.insertBefore(tree.node, referenceNode);\n } else {\n parentNode.insertBefore(tree.node, referenceNode);\n insertTreeChildren(tree);\n }\n});\n\nfunction replaceChildWithTree(oldNode, newTree) {\n oldNode.parentNode.replaceChild(newTree.node, oldNode);\n insertTreeChildren(newTree);\n}\n\nfunction queueChild(parentTree, childTree) {\n if (enableLazy) {\n parentTree.children.push(childTree);\n } else {\n parentTree.node.appendChild(childTree.node);\n }\n}\n\nfunction queueHTML(tree, html) {\n if (enableLazy) {\n tree.html = html;\n } else {\n setInnerHTML(tree.node, html);\n }\n}\n\nfunction queueText(tree, text) {\n if (enableLazy) {\n tree.text = text;\n } else {\n setTextContent(tree.node, text);\n }\n}\n\nfunction toString() {\n return this.node.nodeName;\n}\n\nfunction DOMLazyTree(node) {\n return {\n node: node,\n children: [],\n html: null,\n text: null,\n toString: toString\n };\n}\n\nDOMLazyTree.insertTreeBefore = insertTreeBefore;\nDOMLazyTree.replaceChildWithTree = replaceChildWithTree;\nDOMLazyTree.queueChild = queueChild;\nDOMLazyTree.queueHTML = queueHTML;\nDOMLazyTree.queueText = queueText;\n\nmodule.exports = DOMLazyTree;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_PROPERTY: 0x1,\n HAS_BOOLEAN_VALUE: 0x4,\n HAS_NUMERIC_VALUE: 0x8,\n HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n * attribute namespace URL. (Attribute names not specified use no namespace.)\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function (domPropertyConfig) {\n var Injection = DOMPropertyInjection;\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);\n }\n\n for (var propName in Properties) {\n !!DOMProperty.properties.hasOwnProperty(propName) ? false ? invariant(false, 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property \\'%s\\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : _prodInvariant('48', propName) : void 0;\n\n var lowerCased = propName.toLowerCase();\n var propConfig = Properties[propName];\n\n var propertyInfo = {\n attributeName: lowerCased,\n attributeNamespace: null,\n propertyName: propName,\n mutationMethod: null,\n\n mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)\n };\n !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? false ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0;\n\n if (false) {\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n }\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n propertyInfo.attributeName = attributeName;\n if (false) {\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n }\n }\n\n if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n }\n\n if (DOMPropertyNames.hasOwnProperty(propName)) {\n propertyInfo.propertyName = DOMPropertyNames[propName];\n }\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n propertyInfo.mutationMethod = DOMMutationMethods[propName];\n }\n\n DOMProperty.properties[propName] = propertyInfo;\n }\n }\n};\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\n/* eslint-enable max-len */\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n ID_ATTRIBUTE_NAME: 'data-reactid',\n ROOT_ATTRIBUTE_NAME: 'data-reactroot',\n\n ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040',\n\n /**\n * Map from property \"standard name\" to an object with info about how to set\n * the property in the DOM. Each object contains:\n *\n * attributeName:\n * Used when rendering markup or with `*Attribute()`.\n * attributeNamespace\n * propertyName:\n * Used on DOM node instances. (This includes properties that mutate due to\n * external factors.)\n * mutationMethod:\n * If non-null, used instead of the property or `setAttribute()` after\n * initial render.\n * mustUseProperty:\n * Whether the property must be accessed and mutated as an object property.\n * hasBooleanValue:\n * Whether the property should be removed when set to a falsey value.\n * hasNumericValue:\n * Whether the property must be numeric or parse as a numeric and should be\n * removed when set to a falsey value.\n * hasPositiveNumericValue:\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * hasOverloadedBooleanValue:\n * Whether the property can be used as a flag as well as with a value.\n * Removed when strictly equal to false; present without a value when\n * strictly equal to true; present with a value otherwise.\n */\n properties: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties. Available only in __DEV__.\n *\n * autofocus is predefined, because adding it to the property whitelist\n * causes unintended side effects.\n *\n * @type {Object}\n */\n getPossibleStandardName: false ? { autofocus: 'autoFocus' } : null,\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function (attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ReactRef = __webpack_require__(228);\nvar ReactInstrumentation = __webpack_require__(8);\n\nvar warning = __webpack_require__(1);\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} the containing host component instance\n * @param {?object} info about the host container\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID) // 0 in production and for roots\n {\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);\n }\n }\n var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);\n if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);\n }\n }\n return markup;\n },\n\n /**\n * Returns a value that can be passed to\n * ReactComponentEnvironment.replaceNodeWithMarkup.\n */\n getHostNode: function (internalInstance) {\n return internalInstance.getHostNode();\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (internalInstance, safely) {\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);\n }\n }\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent(safely);\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function (internalInstance, nextElement, transaction, context) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && context === internalInstance._context) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n\n // TODO: Bailing out early is just a perf optimization right?\n // TODO: Removing the return statement should affect correctness?\n return;\n }\n\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);\n }\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {\n if (internalInstance._updateBatchNumber !== updateBatchNumber) {\n // The component's enqueued batch number should always be the current\n // batch or the following one.\n false ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0;\n return;\n }\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);\n }\n }\n internalInstance.performUpdateIfNecessary(transaction);\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n }\n};\n\nmodule.exports = ReactReconciler;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar ReactBaseClasses = __webpack_require__(96);\nvar ReactChildren = __webpack_require__(260);\nvar ReactDOMFactories = __webpack_require__(261);\nvar ReactElement = __webpack_require__(18);\nvar ReactPropTypes = __webpack_require__(262);\nvar ReactVersion = __webpack_require__(263);\n\nvar createReactClass = __webpack_require__(264);\nvar onlyChild = __webpack_require__(268);\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (false) {\n var lowPriorityWarning = require('./lowPriorityWarning');\n var canDefineProperty = require('./canDefineProperty');\n var ReactElementValidator = require('./ReactElementValidator');\n var didWarnPropTypesDeprecated = false;\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar __spread = _assign;\nvar createMixin = function (mixin) {\n return mixin;\n};\n\nif (false) {\n var warnedForSpread = false;\n var warnedForCreateMixin = false;\n __spread = function () {\n lowPriorityWarning(warnedForSpread, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.');\n warnedForSpread = true;\n return _assign.apply(null, arguments);\n };\n\n createMixin = function (mixin) {\n lowPriorityWarning(warnedForCreateMixin, 'React.createMixin is deprecated and should not be used. ' + 'In React v16.0, it will be removed. ' + 'You can use this mixin directly instead. ' + 'See https://fb.me/createmixin-was-never-implemented for more info.');\n warnedForCreateMixin = true;\n return mixin;\n };\n}\n\nvar React = {\n // Modern\n\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n toArray: ReactChildren.toArray,\n only: onlyChild\n },\n\n Component: ReactBaseClasses.Component,\n PureComponent: ReactBaseClasses.PureComponent,\n\n createElement: createElement,\n cloneElement: cloneElement,\n isValidElement: ReactElement.isValidElement,\n\n // Classic\n\n PropTypes: ReactPropTypes,\n createClass: createReactClass,\n createFactory: createFactory,\n createMixin: createMixin,\n\n // This looks DOM specific but these are actually isomorphic helpers\n // since they are just generating DOM strings.\n DOM: ReactDOMFactories,\n\n version: ReactVersion,\n\n // Deprecated hook for JSX spread, don't use this for anything.\n __spread: __spread\n};\n\nif (false) {\n var warnedForCreateClass = false;\n if (canDefineProperty) {\n Object.defineProperty(React, 'PropTypes', {\n get: function () {\n lowPriorityWarning(didWarnPropTypesDeprecated, 'Accessing PropTypes via the main React package is deprecated,' + ' and will be removed in React v16.0.' + ' Use the latest available v15.* prop-types package from npm instead.' + ' For info on usage, compatibility, migration and more, see ' + 'https://fb.me/prop-types-docs');\n didWarnPropTypesDeprecated = true;\n return ReactPropTypes;\n }\n });\n\n Object.defineProperty(React, 'createClass', {\n get: function () {\n lowPriorityWarning(warnedForCreateClass, 'Accessing createClass via the main React package is deprecated,' + ' and will be removed in React v16.0.' + \" Use a plain JavaScript class instead. If you're not yet \" + 'ready to migrate, create-react-class v15.* is available ' + 'on npm as a temporary, drop-in replacement. ' + 'For more info see https://fb.me/react-create-class');\n warnedForCreateClass = true;\n return createReactClass;\n }\n });\n }\n\n // React.DOM factories are deprecated. Wrap these methods so that\n // invocations of the React.DOM namespace and alert users to switch\n // to the `react-dom-factories` package.\n React.DOM = {};\n var warnedForFactories = false;\n Object.keys(ReactDOMFactories).forEach(function (factory) {\n React.DOM[factory] = function () {\n if (!warnedForFactories) {\n lowPriorityWarning(false, 'Accessing factories like React.DOM.%s has been deprecated ' + 'and will be removed in v16.0+. Use the ' + 'react-dom-factories package instead. ' + ' Version 1.0 provides a drop-in replacement.' + ' For more info, see https://fb.me/react-dom-factories', factory);\n warnedForFactories = true;\n }\n return ReactDOMFactories[factory].apply(ReactDOMFactories, arguments);\n };\n });\n}\n\nmodule.exports = React;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar ReactCurrentOwner = __webpack_require__(11);\n\nvar warning = __webpack_require__(1);\nvar canDefineProperty = __webpack_require__(100);\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar REACT_ELEMENT_TYPE = __webpack_require__(98);\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\n\nvar specialPropKeyWarningShown, specialPropRefWarningShown;\n\nfunction hasValidRef(config) {\n if (false) {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n if (false) {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n false ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n false ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allow us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n if (false) {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n if (canDefineProperty) {\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n // self and source are DEV only properties.\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n });\n // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n } else {\n element._store.validated = false;\n element._self = self;\n element._source = source;\n }\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement\n */\nReactElement.createElement = function (type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n if (false) {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n if (false) {\n if (key || ref) {\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n};\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory\n */\nReactElement.createFactory = function (type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. `.type === Foo`.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n return newElement;\n};\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement\n */\nReactElement.cloneElement = function (element, config, children) {\n var propName;\n\n // Original props are copied\n var props = _assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n // Self is preserved since the owner is preserved.\n var self = element._self;\n // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n // Remaining properties override existing props\n var defaultProps;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n};\n\n/**\n * Verifies the object is a ReactElement.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function (object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n};\n\nmodule.exports = ReactElement;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(setImmediate) {\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n this._state = 0;\n this._handled = false;\n this._value = undefined;\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = function(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n return constructor.resolve(callback()).then(function() {\n return constructor.reject(reason);\n });\n }\n );\n};\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!arr || typeof arr.length === 'undefined')\n throw new TypeError('Promise.all accepts an array');\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(values) {\n return new Promise(function(resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n (typeof setImmediate === 'function' &&\n function(fn) {\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nmodule.exports = Promise;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(272).setImmediate))\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar EventPluginRegistry = __webpack_require__(46);\nvar EventPluginUtils = __webpack_require__(47);\nvar ReactErrorUtils = __webpack_require__(51);\n\nvar accumulateInto = __webpack_require__(87);\nvar forEachAccumulated = __webpack_require__(88);\nvar invariant = __webpack_require__(0);\n\n/**\n * Internal store for event listeners\n */\nvar listenerBank = {};\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @private\n */\nvar executeDispatchesAndRelease = function (event, simulated) {\n if (event) {\n EventPluginUtils.executeDispatchesInOrder(event, simulated);\n\n if (!event.isPersistent()) {\n event.constructor.release(event);\n }\n }\n};\nvar executeDispatchesAndReleaseSimulated = function (e) {\n return executeDispatchesAndRelease(e, true);\n};\nvar executeDispatchesAndReleaseTopLevel = function (e) {\n return executeDispatchesAndRelease(e, false);\n};\n\nvar getDictionaryKey = function (inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n};\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n switch (name) {\n case 'onClick':\n case 'onClickCapture':\n case 'onDoubleClick':\n case 'onDoubleClickCapture':\n case 'onMouseDown':\n case 'onMouseDownCapture':\n case 'onMouseMove':\n case 'onMouseMoveCapture':\n case 'onMouseUp':\n case 'onMouseUpCapture':\n return !!(props.disabled && isInteractive(type));\n default:\n return false;\n }\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n * Required. When a top-level event is fired, this method is expected to\n * extract synthetic events that will in turn be queued and dispatched.\n *\n * `eventTypes` {object}\n * Optional, plugins that fire events must publish a mapping of registration\n * names that are used to register listeners. Values of this mapping must\n * be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n * `executeDispatch` {function(object, function, string)}\n * Optional, allows plugins to override how an event gets dispatched. By\n * default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n /**\n * Methods for injecting dependencies.\n */\n injection: {\n /**\n * @param {array} InjectedEventPluginOrder\n * @public\n */\n injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n /**\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n */\n injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n },\n\n /**\n * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {function} listener The callback to store.\n */\n putListener: function (inst, registrationName, listener) {\n !(typeof listener === 'function') ? false ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0;\n\n var key = getDictionaryKey(inst);\n var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});\n bankForRegistrationName[key] = listener;\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.didPutListener) {\n PluginModule.didPutListener(inst, registrationName, listener);\n }\n },\n\n /**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n getListener: function (inst, registrationName) {\n // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not\n // live here; needs to be moved to a better place soon\n var bankForRegistrationName = listenerBank[registrationName];\n if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {\n return null;\n }\n var key = getDictionaryKey(inst);\n return bankForRegistrationName && bankForRegistrationName[key];\n },\n\n /**\n * Deletes a listener from the registration bank.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n */\n deleteListener: function (inst, registrationName) {\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n var bankForRegistrationName = listenerBank[registrationName];\n // TODO: This should never be null -- when is it?\n if (bankForRegistrationName) {\n var key = getDictionaryKey(inst);\n delete bankForRegistrationName[key];\n }\n },\n\n /**\n * Deletes all listeners for the DOM element with the supplied ID.\n *\n * @param {object} inst The instance, which is the source of events.\n */\n deleteAllListeners: function (inst) {\n var key = getDictionaryKey(inst);\n for (var registrationName in listenerBank) {\n if (!listenerBank.hasOwnProperty(registrationName)) {\n continue;\n }\n\n if (!listenerBank[registrationName][key]) {\n continue;\n }\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n delete listenerBank[registrationName][key];\n }\n },\n\n /**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events;\n var plugins = EventPluginRegistry.plugins;\n for (var i = 0; i < plugins.length; i++) {\n // Not every plugin in the ordering may be loaded at runtime.\n var possiblePlugin = plugins[i];\n if (possiblePlugin) {\n var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n if (extractedEvents) {\n events = accumulateInto(events, extractedEvents);\n }\n }\n }\n return events;\n },\n\n /**\n * Enqueues a synthetic event that should be dispatched when\n * `processEventQueue` is invoked.\n *\n * @param {*} events An accumulation of synthetic events.\n * @internal\n */\n enqueueEvents: function (events) {\n if (events) {\n eventQueue = accumulateInto(eventQueue, events);\n }\n },\n\n /**\n * Dispatches all synthetic events on the event queue.\n *\n * @internal\n */\n processEventQueue: function (simulated) {\n // Set `eventQueue` to null before processing it so that we can tell if more\n // events get enqueued while processing.\n var processingEventQueue = eventQueue;\n eventQueue = null;\n if (simulated) {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);\n } else {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n }\n !!eventQueue ? false ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0;\n // This would be a good time to rethrow if any of the event handlers threw.\n ReactErrorUtils.rethrowCaughtError();\n },\n\n /**\n * These are needed for tests only. Do not use!\n */\n __purge: function () {\n listenerBank = {};\n },\n\n __getListenerBank: function () {\n return listenerBank;\n }\n};\n\nmodule.exports = EventPluginHub;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar EventPluginHub = __webpack_require__(20);\nvar EventPluginUtils = __webpack_require__(47);\n\nvar accumulateInto = __webpack_require__(87);\nvar forEachAccumulated = __webpack_require__(88);\nvar warning = __webpack_require__(1);\n\nvar getListener = EventPluginHub.getListener;\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(inst, event, propagationPhase) {\n var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n return getListener(inst, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;\n }\n var listener = listenerAtPhase(inst, event, phase);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory. We must loop through\n * each event and perform the traversal for each one. We cannot perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n var targetInst = event._targetInst;\n var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;\n EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(inst, ignoredDirection, event) {\n if (event && event.dispatchConfig.registrationName) {\n var registrationName = event.dispatchConfig.registrationName;\n var listener = getListener(inst, registrationName);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n accumulateDispatches(event._targetInst, null, event);\n }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n}\n\nfunction accumulateDirectDispatches(events) {\n forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n accumulateDirectDispatches: accumulateDirectDispatches,\n accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nmodule.exports = EventPropagators;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\n\nvar ReactInstanceMap = {\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function (key) {\n key._reactInternalInstance = undefined;\n },\n\n get: function (key) {\n return key._reactInternalInstance;\n },\n\n has: function (key) {\n return key._reactInternalInstance !== undefined;\n },\n\n set: function (key, value) {\n key._reactInternalInstance = value;\n }\n};\n\nmodule.exports = ReactInstanceMap;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\nvar getEventTarget = __webpack_require__(56);\n\n/**\n * @interface UIEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar UIEventInterface = {\n view: function (event) {\n if (event.view) {\n return event.view;\n }\n\n var target = getEventTarget(event);\n if (target.window === target) {\n // target is a window object\n return target;\n }\n\n var doc = target.ownerDocument;\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n if (doc) {\n return doc.defaultView || doc.parentWindow;\n } else {\n return window;\n }\n },\n detail: function (event) {\n return event.detail || 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);\n\nmodule.exports = SyntheticUIEvent;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__formatDecimal__ = __webpack_require__(32);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(x) {\n return x = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__formatDecimal__[\"a\" /* default */])(Math.abs(x)), x ? x[1] : NaN;\n});\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar emptyObject = {};\n\nif (false) {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar EventPluginRegistry = __webpack_require__(46);\nvar ReactEventEmitterMixin = __webpack_require__(220);\nvar ViewportMetrics = __webpack_require__(86);\n\nvar getVendorPrefixedEventName = __webpack_require__(252);\nvar isEventSupported = __webpack_require__(57);\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\nvar hasEventPageXY;\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\nvar topEventMapping = {\n topAbort: 'abort',\n topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',\n topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',\n topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',\n topBlur: 'blur',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topScroll: 'scroll',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topSelectionChange: 'selectionchange',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTextInput: 'textInput',\n topTimeUpdate: 'timeupdate',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting',\n topWheel: 'wheel'\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * EventPluginHub.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function (ReactEventListener) {\n ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function (enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function () {\n return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function (registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];\n\n for (var i = 0; i < dependencies.length; i++) {\n var dependency = dependencies[i];\n if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n if (dependency === 'topWheel') {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);\n }\n } else if (dependency === 'topScroll') {\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);\n }\n } else if (dependency === 'topFocus' || dependency === 'topBlur') {\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);\n }\n\n // to make sure blur and focus event listeners are only attached once\n isListening.topBlur = true;\n isListening.topFocus = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);\n }\n\n isListening[dependency] = true;\n }\n }\n },\n\n trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);\n },\n\n trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);\n },\n\n /**\n * Protect against document.createEvent() returning null\n * Some popup blocker extensions appear to do this:\n * https://github.com/facebook/react/issues/6887\n */\n supportsEventPageXY: function () {\n if (!document.createEvent) {\n return false;\n }\n var ev = document.createEvent('MouseEvent');\n return ev != null && 'pageX' in ev;\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when\n * pageX/pageY isn't supported (legacy browsers).\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function () {\n if (hasEventPageXY === undefined) {\n hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();\n }\n if (!hasEventPageXY && !isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n }\n});\n\nmodule.exports = ReactBrowserEventEmitter;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(23);\nvar ViewportMetrics = __webpack_require__(86);\n\nvar getEventModifierState = __webpack_require__(55);\n\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar MouseEventInterface = {\n screenX: null,\n screenY: null,\n clientX: null,\n clientY: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n getModifierState: getEventModifierState,\n button: function (event) {\n // Webkit, Firefox, IE9+\n // which: 1 2 3\n // button: 0 1 2 (standard)\n var button = event.button;\n if ('which' in event) {\n return button;\n }\n // IE<9\n // which: undefined\n // button: 0 0 0\n // button: 1 4 2 (onmouseup)\n return button === 2 ? 2 : button === 4 ? 1 : 0;\n },\n buttons: null,\n relatedTarget: function (event) {\n return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n },\n // \"Proprietary\" Interface.\n pageX: function (event) {\n return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;\n },\n pageY: function (event) {\n return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);\n\nmodule.exports = SyntheticMouseEvent;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\nvar OBSERVED_ERROR = {};\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n *
\n *                       wrappers (injected at creation time)\n *                                      +        +\n *                                      |        |\n *                    +-----------------|--------|--------------+\n *                    |                 v        |              |\n *                    |      +---------------+   |              |\n *                    |   +--|    wrapper1   |---|----+         |\n *                    |   |  +---------------+   v    |         |\n *                    |   |          +-------------+  |         |\n *                    |   |     +----|   wrapper2  |--------+   |\n *                    |   |     |    +-------------+  |     |   |\n *                    |   |     |                     |     |   |\n *                    |   v     v                     v     v   | wrapper\n *                    | +---+ +---+   +---------+   +---+ +---+ | invariants\n * perform(anyMethod) | |   | |   |   |         |   |   | |   | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | +---+ +---+   +---------+   +---+ +---+ |\n *                    |  initialize                    close    |\n *                    +-----------------------------------------+\n * 
\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar TransactionImpl = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function () {\n this.transactionWrappers = this.getTransactionWrappers();\n if (this.wrapperInitData) {\n this.wrapperInitData.length = 0;\n } else {\n this.wrapperInitData = [];\n }\n this._isInTransaction = false;\n },\n\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n\n isInTransaction: function () {\n return !!this._isInTransaction;\n },\n\n /* eslint-disable space-before-function-paren */\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked. The optional arguments helps prevent the need\n * to bind in many cases.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} a Argument to pass to the method.\n * @param {Object?=} b Argument to pass to the method.\n * @param {Object?=} c Argument to pass to the method.\n * @param {Object?=} d Argument to pass to the method.\n * @param {Object?=} e Argument to pass to the method.\n * @param {Object?=} f Argument to pass to the method.\n *\n * @return {*} Return value from `method`.\n */\n perform: function (method, scope, a, b, c, d, e, f) {\n /* eslint-enable space-before-function-paren */\n !!this.isInTransaction() ? false ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0;\n var errorThrown;\n var ret;\n try {\n this._isInTransaction = true;\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {}\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n return ret;\n },\n\n initializeAll: function (startIndex) {\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;\n } finally {\n if (this.wrapperInitData[i] === OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {}\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function (startIndex) {\n !this.isInTransaction() ? false ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n if (initData !== OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {}\n }\n }\n }\n this.wrapperInitData.length = 0;\n }\n};\n\nmodule.exports = TransactionImpl;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2016-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * Based on the escape-html library, which is used under the MIT License below:\n *\n * Copyright (c) 2012-2013 TJ Holowaychuk\n * Copyright (c) 2015 Andreas Lubbe\n * Copyright (c) 2015 Tiancheng \"Timothy\" Gu\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n */\n\n\n\n// code copied and modified from escape-html\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n // \"\n escape = '"';\n break;\n case 38:\n // &\n escape = '&';\n break;\n case 39:\n // '\n escape = '''; // modified from escape-html; used to be '''\n break;\n case 60:\n // <\n escape = '<';\n break;\n case 62:\n // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n}\n// end code copied and modified from escape-html\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escapeTextContentForBrowser(text) {\n if (typeof text === 'boolean' || typeof text === 'number') {\n // this shortcircuit helps perf for types that we know will never have\n // special characters, especially given that this function is used often\n // for numeric dom ids.\n return '' + text;\n }\n return escapeHtml(text);\n}\n\nmodule.exports = escapeTextContentForBrowser;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\nvar DOMNamespaces = __webpack_require__(45);\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\nvar createMicrosoftUnsafeLocalFunction = __webpack_require__(53);\n\n// SVG temp container for IE lacking innerHTML\nvar reusableSVGContainer;\n\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n // IE does not have innerHTML for SVG nodes, so instead we inject the\n // new markup in a temp node and then move the child nodes across into\n // the target node\n if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {\n reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n reusableSVGContainer.innerHTML = '' + html + '';\n var svgNode = reusableSVGContainer.firstChild;\n while (svgNode.firstChild) {\n node.appendChild(svgNode.firstChild);\n }\n } else {\n node.innerHTML = html;\n }\n});\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE8: When updating a just created node with innerHTML only leading\n // whitespace is removed. When updating an existing node with innerHTML\n // whitespace in root TextNodes is also collapsed.\n // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\n // Feature detection; only IE8 is known to behave improperly like this.\n var testElement = document.createElement('div');\n testElement.innerHTML = ' ';\n if (testElement.innerHTML === '') {\n setInnerHTML = function (node, html) {\n // Magic theory: IE8 supposedly differentiates between added and updated\n // nodes when processing innerHTML, innerHTML on updated nodes suffers\n // from worse whitespace behavior. Re-adding a node like this triggers\n // the initial and more favorable whitespace behavior.\n // TODO: What to do on a detached node?\n if (node.parentNode) {\n node.parentNode.replaceChild(node, node);\n }\n\n // We also implement a workaround for non-visible tags disappearing into\n // thin air on IE8, this only happens if there is no visible text\n // in-front of the non-visible tags. Piggyback on the whitespace fix\n // and simply check if any non-visible tags appear in the source.\n if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n // Recover leading whitespace by temporarily prepending any character.\n // \\uFEFF has the potential advantage of being zero-width/invisible.\n // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode\n // in hopes that this is preserved even if \"\\uFEFF\" is transformed to\n // the actual Unicode character (by Babel, for example).\n // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216\n node.innerHTML = String.fromCharCode(0xfeff) + html;\n\n // deleteData leaves an empty `TextNode` which offsets the index of all\n // children. Definitely want to avoid this.\n var textNode = node.firstChild;\n if (textNode.data.length === 1) {\n node.removeChild(textNode);\n } else {\n textNode.deleteData(0, 1);\n }\n } else {\n node.innerHTML = html;\n }\n };\n }\n testElement = null;\n}\n\nmodule.exports = setInnerHTML;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n});\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__namespace__ = __webpack_require__(34);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__namespaces__ = __webpack_require__(35);\n\n\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === __WEBPACK_IMPORTED_MODULE_1__namespaces__[\"b\" /* xhtml */] && document.documentElement.namespaceURI === __WEBPACK_IMPORTED_MODULE_1__namespaces__[\"b\" /* xhtml */]\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(name) {\n var fullname = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__namespace__[\"a\" /* default */])(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n});\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__namespaces__ = __webpack_require__(35);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return __WEBPACK_IMPORTED_MODULE_0__namespaces__[\"a\" /* default */].hasOwnProperty(prefix) ? {space: __WEBPACK_IMPORTED_MODULE_0__namespaces__[\"a\" /* default */][prefix], local: name} : name;\n});\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return xhtml; });\nvar xhtml = \"http://www.w3.org/1999/xhtml\";\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n});\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n});\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return event; });\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = customEvent;\nvar filterEvents = {};\n\nvar event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"c\"] = (function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n});\n\nfunction customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction none() {}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n});\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__selection_on__ = __webpack_require__(37);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function() {\n var current = __WEBPACK_IMPORTED_MODULE_0__selection_on__[\"a\" /* event */], source;\n while (source = current.sourceEvent) current = source;\n return current;\n});\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n});\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(182);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar DOMLazyTree = __webpack_require__(14);\nvar Danger = __webpack_require__(197);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactInstrumentation = __webpack_require__(8);\n\nvar createMicrosoftUnsafeLocalFunction = __webpack_require__(53);\nvar setInnerHTML = __webpack_require__(31);\nvar setTextContent = __webpack_require__(94);\n\nfunction getNodeAfter(parentNode, node) {\n // Special case for text components, which return [open, close] comments\n // from getHostNode.\n if (Array.isArray(node)) {\n node = node[1];\n }\n return node ? node.nextSibling : parentNode.firstChild;\n}\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n // We rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n // we are careful to use `null`.)\n parentNode.insertBefore(childNode, referenceNode);\n});\n\nfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n}\n\nfunction moveChild(parentNode, childNode, referenceNode) {\n if (Array.isArray(childNode)) {\n moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n } else {\n insertChildAt(parentNode, childNode, referenceNode);\n }\n}\n\nfunction removeChild(parentNode, childNode) {\n if (Array.isArray(childNode)) {\n var closingComment = childNode[1];\n childNode = childNode[0];\n removeDelimitedText(parentNode, childNode, closingComment);\n parentNode.removeChild(closingComment);\n }\n parentNode.removeChild(childNode);\n}\n\nfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n var node = openingComment;\n while (true) {\n var nextNode = node.nextSibling;\n insertChildAt(parentNode, node, referenceNode);\n if (node === closingComment) {\n break;\n }\n node = nextNode;\n }\n}\n\nfunction removeDelimitedText(parentNode, startNode, closingComment) {\n while (true) {\n var node = startNode.nextSibling;\n if (node === closingComment) {\n // The closing comment is removed by ReactMultiChild.\n break;\n } else {\n parentNode.removeChild(node);\n }\n }\n}\n\nfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n var parentNode = openingComment.parentNode;\n var nodeAfterComment = openingComment.nextSibling;\n if (nodeAfterComment === closingComment) {\n // There are no text nodes between the opening and closing comments; insert\n // a new one if stringText isn't empty.\n if (stringText) {\n insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n }\n } else {\n if (stringText) {\n // Set the text content of the first node after the opening comment, and\n // remove all following nodes up until the closing comment.\n setTextContent(nodeAfterComment, stringText);\n removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n } else {\n removeDelimitedText(parentNode, openingComment, closingComment);\n }\n }\n\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,\n type: 'replace text',\n payload: stringText\n });\n }\n}\n\nvar dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;\nif (false) {\n dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {\n Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);\n if (prevInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: prevInstance._debugID,\n type: 'replace with',\n payload: markup.toString()\n });\n } else {\n var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);\n if (nextInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: nextInstance._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n };\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,\n\n replaceDelimitedText: replaceDelimitedText,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array} updates List of update configurations.\n * @internal\n */\n processUpdates: function (parentNode, updates) {\n if (false) {\n var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;\n }\n\n for (var k = 0; k < updates.length; k++) {\n var update = updates[k];\n switch (update.type) {\n case 'INSERT_MARKUP':\n insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'insert child',\n payload: {\n toIndex: update.toIndex,\n content: update.content.toString()\n }\n });\n }\n break;\n case 'MOVE_EXISTING':\n moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'move child',\n payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }\n });\n }\n break;\n case 'SET_MARKUP':\n setInnerHTML(parentNode, update.content);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace children',\n payload: update.content.toString()\n });\n }\n break;\n case 'TEXT_CONTENT':\n setTextContent(parentNode, update.content);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace text',\n payload: update.content.toString()\n });\n }\n break;\n case 'REMOVE_NODE':\n removeChild(parentNode, update.fromNode);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'remove child',\n payload: { fromIndex: update.fromIndex }\n });\n }\n break;\n }\n }\n }\n};\n\nmodule.exports = DOMChildrenOperations;\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar DOMNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg'\n};\n\nmodule.exports = DOMNamespaces;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!eventPluginOrder) {\n // Wait until an `eventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var pluginModule = namesToPlugins[pluginName];\n var pluginIndex = eventPluginOrder.indexOf(pluginName);\n !(pluginIndex > -1) ? false ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n !pluginModule.extractEvents ? false ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;\n EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n var publishedEvents = pluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? false ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? false ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n !!EventPluginRegistry.registrationNameModules[registrationName] ? false ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;\n EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n if (false) {\n var lowerCasedName = registrationName.toLowerCase();\n EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\n if (registrationName === 'onDoubleClick') {\n EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n }\n }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in __DEV__.\n * @type {Object}\n */\n possibleRegistrationNames: false ? {} : null,\n // Trust the developer to only use possibleRegistrationNames in __DEV__\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function (injectedEventPluginOrder) {\n !!eventPluginOrder ? false ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;\n // Clone the ordering so it cannot be dynamically mutated.\n eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function (injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var pluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n !!namesToPlugins[pluginName] ? false ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;\n namesToPlugins[pluginName] = pluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function (event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n }\n if (dispatchConfig.phasedRegistrationNames !== undefined) {\n // pulling phasedRegistrationNames out of dispatchConfig helps Flow see\n // that it is not undefined.\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\n for (var phase in phasedRegistrationNames) {\n if (!phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];\n if (pluginModule) {\n return pluginModule;\n }\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function () {\n eventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n\n if (false) {\n var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n for (var lowerCasedName in possibleRegistrationNames) {\n if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n delete possibleRegistrationNames[lowerCasedName];\n }\n }\n }\n }\n};\n\nmodule.exports = EventPluginRegistry;\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactErrorUtils = __webpack_require__(51);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n * and actual node references.\n */\nvar ComponentTree;\nvar TreeTraversal;\nvar injection = {\n injectComponentTree: function (Injected) {\n ComponentTree = Injected;\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n }\n },\n injectTreeTraversal: function (Injected) {\n TreeTraversal = Injected;\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;\n }\n }\n};\n\nfunction isEndish(topLevelType) {\n return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';\n}\nfunction isStartish(topLevelType) {\n return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';\n}\n\nvar validateEventDispatches;\nif (false) {\n validateEventDispatches = function (event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n var instancesIsArr = Array.isArray(dispatchInstances);\n var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;\n };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n var type = event.type || 'unknown-event';\n event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n if (simulated) {\n ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n } else {\n ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n }\n event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (false) {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n }\n } else if (dispatchListeners) {\n executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n }\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who's listener returns\n * true, or null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (false) {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchInstances[i])) {\n return dispatchInstances[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchInstances)) {\n return dispatchInstances;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchInstances = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (false) {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchInstance = event._dispatchInstances;\n !!Array.isArray(dispatchListener) ? false ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;\n event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n var res = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n\n getInstanceFromNode: function (node) {\n return ComponentTree.getInstanceFromNode(node);\n },\n getNodeFromInstance: function (node) {\n return ComponentTree.getNodeFromInstance(node);\n },\n isAncestor: function (a, b) {\n return TreeTraversal.isAncestor(a, b);\n },\n getLowestCommonAncestor: function (a, b) {\n return TreeTraversal.getLowestCommonAncestor(a, b);\n },\n getParentInstance: function (inst) {\n return TreeTraversal.getParentInstance(inst);\n },\n traverseTwoPhase: function (target, fn, arg) {\n return TreeTraversal.traverseTwoPhase(target, fn, arg);\n },\n traverseEnterLeave: function (from, to, fn, argFrom, argTo) {\n return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n },\n\n injection: injection\n};\n\nmodule.exports = EventPluginUtils;\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactPropTypesSecret = __webpack_require__(226);\nvar propTypesFactory = __webpack_require__(74);\n\nvar React = __webpack_require__(17);\nvar PropTypes = propTypesFactory(React.isValidElement);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nvar hasReadOnlyValue = {\n button: true,\n checkbox: true,\n image: true,\n hidden: true,\n radio: true,\n reset: true,\n submit: true\n};\n\nfunction _assertSingleLink(inputProps) {\n !(inputProps.checkedLink == null || inputProps.valueLink == null) ? false ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;\n}\nfunction _assertValueLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.value == null && inputProps.onChange == null) ? false ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\\'t want to use valueLink.') : _prodInvariant('88') : void 0;\n}\n\nfunction _assertCheckedLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.checked == null && inputProps.onChange == null) ? false ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\\'t want to use checkedLink') : _prodInvariant('89') : void 0;\n}\n\nvar propTypes = {\n value: function (props, propName, componentName) {\n if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n checked: function (props, propName, componentName) {\n if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n onChange: PropTypes.func\n};\n\nvar loggedTypeFailures = {};\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\nvar LinkedValueUtils = {\n checkPropTypes: function (tagName, props, owner) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(owner);\n false ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;\n }\n }\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current value of the input either from value prop or link.\n */\n getValue: function (inputProps) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.value;\n }\n return inputProps.value;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current checked status of the input either from checked prop\n * or link.\n */\n getChecked: function (inputProps) {\n if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.value;\n }\n return inputProps.checked;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @param {SyntheticEvent} event change event to handle\n */\n executeOnChange: function (inputProps, event) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.requestChange(event.target.value);\n } else if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.requestChange(event.target.checked);\n } else if (inputProps.onChange) {\n return inputProps.onChange.call(undefined, event);\n }\n }\n};\n\nmodule.exports = LinkedValueUtils;\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkup: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function (environment) {\n !!injected ? false ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;\n ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n injected = true;\n }\n }\n};\n\nmodule.exports = ReactComponentEnvironment;\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar caughtError = null;\n\n/**\n * Call a function while guarding against errors that happens within it.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} a First argument\n * @param {*} b Second argument\n */\nfunction invokeGuardedCallback(name, func, a) {\n try {\n func(a);\n } catch (x) {\n if (caughtError === null) {\n caughtError = x;\n }\n }\n}\n\nvar ReactErrorUtils = {\n invokeGuardedCallback: invokeGuardedCallback,\n\n /**\n * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n * handler are sure to be rethrown by rethrowCaughtError.\n */\n invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\n /**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n rethrowCaughtError: function () {\n if (caughtError) {\n var error = caughtError;\n caughtError = null;\n throw error;\n }\n }\n};\n\nif (false) {\n /**\n * To help development we can get better devtools integration by simulating a\n * real browser event.\n */\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n var fakeNode = document.createElement('react');\n ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {\n var boundFunc = function () {\n func(a);\n };\n var evtType = 'react-' + name;\n fakeNode.addEventListener(evtType, boundFunc, false);\n var evt = document.createEvent('Event');\n evt.initEvent(evtType, false, false);\n fakeNode.dispatchEvent(evt);\n fakeNode.removeEventListener(evtType, boundFunc, false);\n };\n }\n}\n\nmodule.exports = ReactErrorUtils;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactCurrentOwner = __webpack_require__(11);\nvar ReactInstanceMap = __webpack_require__(22);\nvar ReactInstrumentation = __webpack_require__(8);\nvar ReactUpdates = __webpack_require__(9);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nfunction enqueueUpdate(internalInstance) {\n ReactUpdates.enqueueUpdate(internalInstance);\n}\n\nfunction formatUnexpectedArgument(arg) {\n var type = typeof arg;\n if (type !== 'object') {\n return type;\n }\n var displayName = arg.constructor && arg.constructor.name || type;\n var keys = Object.keys(arg);\n if (keys.length > 0 && keys.length < 20) {\n return displayName + ' (keys: ' + keys.join(', ') + ')';\n }\n return displayName;\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (false) {\n var ctor = publicInstance.constructor;\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n process.env.NODE_ENV !== 'production' ? warning(!callerName, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;\n }\n return null;\n }\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + \"within `render` or another component's constructor). Render methods \" + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n if (false) {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (internalInstance) {\n // During componentWillMount and render this will still be null but after\n // that will always render to something. At least for now. So we can use\n // this hack.\n return !!internalInstance._renderedComponent;\n } else {\n return false;\n }\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @param {string} callerName Name of the calling function in the public API.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback, callerName) {\n ReactUpdateQueue.validateCallback(callback, callerName);\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function (internalInstance, callback) {\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n // Future-proof 15.5\n if (callback !== undefined && callback !== null) {\n ReactUpdateQueue.validateCallback(callback, 'replaceState');\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n }\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n if (false) {\n ReactInstrumentation.debugTool.onSetState();\n process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;\n }\n\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');\n\n if (!internalInstance) {\n return;\n }\n\n var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function (internalInstance, nextElement, nextContext) {\n internalInstance._pendingElement = nextElement;\n // TODO: introduce _pendingContext instead of setting it directly.\n internalInstance._context = nextContext;\n enqueueUpdate(internalInstance);\n },\n\n validateCallback: function (callback, callerName) {\n !(!callback || typeof callback === 'function') ? false ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;\n }\n};\n\nmodule.exports = ReactUpdateQueue;\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* globals MSApp */\n\n\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n return function (arg0, arg1, arg2, arg3) {\n MSApp.execUnsafeLocalFunction(function () {\n return func(arg0, arg1, arg2, arg3);\n });\n };\n } else {\n return func;\n }\n};\n\nmodule.exports = createMicrosoftUnsafeLocalFunction;\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode;\n\n // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n }\n\n // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nmodule.exports = getEventCharCode;\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n Alt: 'altKey',\n Control: 'ctrlKey',\n Meta: 'metaKey',\n Shift: 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n\n // Normalize SVG element events #4963\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n }\n\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature = document.implementation && document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\n\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n var prevEmpty = prevElement === null || prevElement === false;\n var nextEmpty = nextElement === null || nextElement === false;\n if (prevEmpty || nextEmpty) {\n return prevEmpty === nextEmpty;\n }\n\n var prevType = typeof prevElement;\n var nextType = typeof nextElement;\n if (prevType === 'string' || prevType === 'number') {\n return nextType === 'string' || nextType === 'number';\n } else {\n return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n }\n}\n\nmodule.exports = shouldUpdateReactComponent;\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar emptyFunction = __webpack_require__(7);\nvar warning = __webpack_require__(1);\n\nvar validateDOMNesting = emptyFunction;\n\nif (false) {\n // This validation code was written based on the HTML5 parsing spec:\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n //\n // Note: this does not catch all invalid nesting, nor does it try to (as it's\n // not clear what practical benefit doing so provides); instead, we warn only\n // for cases where the parser will give a parse tree differing from what React\n // intended. For example,
is invalid but we don't warn\n // because it still parses correctly; we do warn for other cases like nested\n //

tags where the beginning of the second element implicitly closes the\n // first, causing a confusing mess.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#special\n var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\n // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n // TODO: Distinguish by namespace here -- for , including it here\n // errs on the side of fewer warnings\n 'foreignObject', 'desc', 'title'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n var buttonScopeTags = inScopeTags.concat(['button']);\n\n // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\n var emptyAncestorInfo = {\n current: null,\n\n formTag: null,\n aTagInScope: null,\n buttonTagInScope: null,\n nobrTagInScope: null,\n pTagInButtonScope: null,\n\n listItemTagAutoclosing: null,\n dlItemTagAutoclosing: null\n };\n\n var updatedAncestorInfo = function (oldInfo, tag, instance) {\n var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n var info = { tag: tag, instance: instance };\n\n if (inScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.aTagInScope = null;\n ancestorInfo.buttonTagInScope = null;\n ancestorInfo.nobrTagInScope = null;\n }\n if (buttonScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.pTagInButtonScope = null;\n }\n\n // See rules for 'li', 'dd', 'dt' start tags in\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n ancestorInfo.listItemTagAutoclosing = null;\n ancestorInfo.dlItemTagAutoclosing = null;\n }\n\n ancestorInfo.current = info;\n\n if (tag === 'form') {\n ancestorInfo.formTag = info;\n }\n if (tag === 'a') {\n ancestorInfo.aTagInScope = info;\n }\n if (tag === 'button') {\n ancestorInfo.buttonTagInScope = info;\n }\n if (tag === 'nobr') {\n ancestorInfo.nobrTagInScope = info;\n }\n if (tag === 'p') {\n ancestorInfo.pTagInButtonScope = info;\n }\n if (tag === 'li') {\n ancestorInfo.listItemTagAutoclosing = info;\n }\n if (tag === 'dd' || tag === 'dt') {\n ancestorInfo.dlItemTagAutoclosing = info;\n }\n\n return ancestorInfo;\n };\n\n /**\n * Returns whether\n */\n var isTagValidWithParent = function (tag, parentTag) {\n // First, let's check if we're in an unusual parsing mode...\n switch (parentTag) {\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n case 'select':\n return tag === 'option' || tag === 'optgroup' || tag === '#text';\n case 'optgroup':\n return tag === 'option' || tag === '#text';\n // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n // but\n case 'option':\n return tag === '#text';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n // No special behavior since these rules fall back to \"in body\" mode for\n // all except special table nodes which cause bad parsing behavior anyway.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n case 'tr':\n return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n case 'tbody':\n case 'thead':\n case 'tfoot':\n return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n case 'colgroup':\n return tag === 'col' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n case 'table':\n return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n case 'head':\n return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n case 'html':\n return tag === 'head' || tag === 'body';\n case '#document':\n return tag === 'html';\n }\n\n // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n // where the parsing rules cause implicit opens or closes to be added.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n case 'rp':\n case 'rt':\n return impliedEndTags.indexOf(parentTag) === -1;\n\n case 'body':\n case 'caption':\n case 'col':\n case 'colgroup':\n case 'frame':\n case 'head':\n case 'html':\n case 'tbody':\n case 'td':\n case 'tfoot':\n case 'th':\n case 'thead':\n case 'tr':\n // These tags are only valid with a few parents that have special child\n // parsing rules -- if we're down here, then none of those matched and\n // so we allow it only if we don't know what the parent is, as all other\n // cases are invalid.\n return parentTag == null;\n }\n\n return true;\n };\n\n /**\n * Returns whether\n */\n var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n switch (tag) {\n case 'address':\n case 'article':\n case 'aside':\n case 'blockquote':\n case 'center':\n case 'details':\n case 'dialog':\n case 'dir':\n case 'div':\n case 'dl':\n case 'fieldset':\n case 'figcaption':\n case 'figure':\n case 'footer':\n case 'header':\n case 'hgroup':\n case 'main':\n case 'menu':\n case 'nav':\n case 'ol':\n case 'p':\n case 'section':\n case 'summary':\n case 'ul':\n case 'pre':\n case 'listing':\n case 'table':\n case 'hr':\n case 'xmp':\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return ancestorInfo.pTagInButtonScope;\n\n case 'form':\n return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n case 'li':\n return ancestorInfo.listItemTagAutoclosing;\n\n case 'dd':\n case 'dt':\n return ancestorInfo.dlItemTagAutoclosing;\n\n case 'button':\n return ancestorInfo.buttonTagInScope;\n\n case 'a':\n // Spec says something about storing a list of markers, but it sounds\n // equivalent to this check.\n return ancestorInfo.aTagInScope;\n\n case 'nobr':\n return ancestorInfo.nobrTagInScope;\n }\n\n return null;\n };\n\n /**\n * Given a ReactCompositeComponent instance, return a list of its recursive\n * owners, starting at the root and ending with the instance itself.\n */\n var findOwnerStack = function (instance) {\n if (!instance) {\n return [];\n }\n\n var stack = [];\n do {\n stack.push(instance);\n } while (instance = instance._currentElement._owner);\n stack.reverse();\n return stack;\n };\n\n var didWarn = {};\n\n validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n\n if (childText != null) {\n process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;\n childTag = '#text';\n }\n\n var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n var problematic = invalidParent || invalidAncestor;\n\n if (problematic) {\n var ancestorTag = problematic.tag;\n var ancestorInstance = problematic.instance;\n\n var childOwner = childInstance && childInstance._currentElement._owner;\n var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n\n var childOwners = findOwnerStack(childOwner);\n var ancestorOwners = findOwnerStack(ancestorOwner);\n\n var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n var i;\n\n var deepestCommon = -1;\n for (i = 0; i < minStackLen; i++) {\n if (childOwners[i] === ancestorOwners[i]) {\n deepestCommon = i;\n } else {\n break;\n }\n }\n\n var UNKNOWN = '(unknown)';\n var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ownerInfo = [].concat(\n // If the parent and child instances have a common owner ancestor, start\n // with that -- otherwise we just start with the parent's owners.\n deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n // If we're warning about an invalid (non-parent) ancestry, add '...'\n invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');\n\n var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;\n if (didWarn[warnKey]) {\n return;\n }\n didWarn[warnKey] = true;\n\n var tagDisplayName = childTag;\n var whitespaceInfo = '';\n if (childTag === '#text') {\n if (/\\S/.test(childText)) {\n tagDisplayName = 'Text nodes';\n } else {\n tagDisplayName = 'Whitespace text nodes';\n whitespaceInfo = \" Make sure you don't have any extra whitespace between tags on \" + 'each line of your source code.';\n }\n } else {\n tagDisplayName = '<' + childTag + '>';\n }\n\n if (invalidParent) {\n var info = '';\n if (ancestorTag === 'table' && childTag === 'tr') {\n info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n }\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;\n }\n }\n };\n\n validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;\n\n // For testing\n validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n };\n}\n\nmodule.exports = validateDOMNesting;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports) {\n\nvar 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/* 61 */\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return prefixExponent; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__formatDecimal__ = __webpack_require__(32);\n\n\nvar prefixExponent;\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(x, p) {\n var d = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__formatDecimal__[\"a\" /* default */])(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__formatDecimal__[\"a\" /* default */])(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n});\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = formatSpecifier;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__formatTypes__ = __webpack_require__(64);\n\n\n// [[fill]align][sign][symbol][0][width][,][.precision][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\nfunction formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\n var match,\n fill = match[1] || \" \",\n align = match[2] || \">\",\n sign = match[3] || \"-\",\n symbol = match[4] || \"\",\n zero = !!match[5],\n width = match[6] && +match[6],\n comma = !!match[7],\n precision = match[8] && +match[8].slice(1),\n type = match[9] || \"\";\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // Map invalid types to the default format.\n else if (!__WEBPACK_IMPORTED_MODULE_0__formatTypes__[\"a\" /* default */][type]) type = \"\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n this.fill = fill;\n this.align = align;\n this.sign = sign;\n this.symbol = symbol;\n this.zero = zero;\n this.width = width;\n this.comma = comma;\n this.precision = precision;\n this.type = type;\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + this.type;\n};\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__formatDefault__ = __webpack_require__(122);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__formatPrefixAuto__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__formatRounded__ = __webpack_require__(125);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n \"\": __WEBPACK_IMPORTED_MODULE_0__formatDefault__[\"a\" /* default */],\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__formatRounded__[\"a\" /* default */])(x * 100, p); },\n \"r\": __WEBPACK_IMPORTED_MODULE_2__formatRounded__[\"a\" /* default */],\n \"s\": __WEBPACK_IMPORTED_MODULE_1__formatPrefixAuto__[\"a\" /* default */],\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n});\n\n\n/***/ }),\n/* 65 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__exponent__ = __webpack_require__(25);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__formatGroup__ = __webpack_require__(123);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__formatNumerals__ = __webpack_require__(124);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__formatSpecifier__ = __webpack_require__(63);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__formatTypes__ = __webpack_require__(64);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__formatPrefixAuto__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__identity__ = __webpack_require__(126);\n\n\n\n\n\n\n\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(locale) {\n var group = locale.grouping && locale.thousands ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__formatGroup__[\"a\" /* default */])(locale.grouping, locale.thousands) : __WEBPACK_IMPORTED_MODULE_6__identity__[\"a\" /* default */],\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__formatNumerals__[\"a\" /* default */])(locale.numerals) : __WEBPACK_IMPORTED_MODULE_6__identity__[\"a\" /* default */],\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__formatSpecifier__[\"a\" /* default */])(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n type = specifier.type;\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = __WEBPACK_IMPORTED_MODULE_4__formatTypes__[\"a\" /* default */][type],\n maybeSuffix = !type || /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? (type ? 6 : 12)\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = valueSuffix + (type === \"s\" ? prefixes[8 + __WEBPACK_IMPORTED_MODULE_5__formatPrefixAuto__[\"b\" /* prefixExponent */] / 3] : \"\") + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__formatSpecifier__[\"a\" /* default */])(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__exponent__[\"a\" /* default */])(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n});\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar matcher = function(selector) {\n return function() {\n return this.matches(selector);\n };\n};\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!element.matches) {\n var vendorMatches = element.webkitMatchesSelector\n || element.msMatchesSelector\n || element.mozMatchesSelector\n || element.oMatchesSelector;\n matcher = function(selector) {\n return function() {\n return vendorMatches.call(this, selector);\n };\n };\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (matcher);\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = EnterNode;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sparse__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__index__ = __webpack_require__(6);\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function() {\n return new __WEBPACK_IMPORTED_MODULE_1__index__[\"b\" /* Selection */](this._enter || this._groups.map(__WEBPACK_IMPORTED_MODULE_0__sparse__[\"a\" /* default */]), this._parents);\n});\n\nfunction EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(update) {\n return new Array(update.length);\n});\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = styleValue;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__window__ = __webpack_require__(40);\n\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"b\"] = (function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n});\n\nfunction styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__window__[\"a\" /* default */])(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n\n\n/***/ }),\n/* 70 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction empty() {\n return [];\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n});\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar emptyFunction = __webpack_require__(7);\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function listen(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function capture(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n } else {\n if (false) {\n console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n }\n return {\n remove: emptyFunction\n };\n }\n },\n\n registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n // IE8 can throw \"Can't move focus to the control because it is invisible,\n // not enabled, or of a type that does not accept the focus.\" for all kinds of\n // reasons that are too expensive and fragile to test.\n try {\n node.focus();\n } catch (e) {}\n}\n\nmodule.exports = focusNode;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc) /*?DOMElement*/{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n// React 15.5 references this module, and assumes PropTypes are still callable in production.\n// Therefore we re-export development-only version with all the PropTypes checks here.\n// However if one is migrating to the `prop-types` npm library, they will go through the\n// `index.js` entry point, and it will branch depending on the environment.\nvar factory = __webpack_require__(190);\nmodule.exports = function(isValidElement) {\n // It is still allowed in 15.5.\n var throwOnDirectAccess = false;\n return factory(isValidElement, throwOnDirectAccess);\n};\n\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n columns: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowSpan: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnSpan: true,\n gridColumnStart: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundAttachment: true,\n backgroundColor: true,\n backgroundImage: true,\n backgroundPositionX: true,\n backgroundPositionY: true,\n backgroundRepeat: true\n },\n backgroundPosition: {\n backgroundPositionX: true,\n backgroundPositionY: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n },\n outline: {\n outlineWidth: true,\n outlineStyle: true,\n outlineColor: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PooledClass = __webpack_require__(13);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\n\nvar CallbackQueue = function () {\n function CallbackQueue(arg) {\n _classCallCheck(this, CallbackQueue);\n\n this._callbacks = null;\n this._contexts = null;\n this._arg = arg;\n }\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n\n\n CallbackQueue.prototype.enqueue = function enqueue(callback, context) {\n this._callbacks = this._callbacks || [];\n this._callbacks.push(callback);\n this._contexts = this._contexts || [];\n this._contexts.push(context);\n };\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.notifyAll = function notifyAll() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n var arg = this._arg;\n if (callbacks && contexts) {\n !(callbacks.length === contexts.length) ? false ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].call(contexts[i], arg);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n };\n\n CallbackQueue.prototype.checkpoint = function checkpoint() {\n return this._callbacks ? this._callbacks.length : 0;\n };\n\n CallbackQueue.prototype.rollback = function rollback(len) {\n if (this._callbacks && this._contexts) {\n this._callbacks.length = len;\n this._contexts.length = len;\n }\n };\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.reset = function reset() {\n this._callbacks = null;\n this._contexts = null;\n };\n\n /**\n * `PooledClass` looks for this.\n */\n\n\n CallbackQueue.prototype.destructor = function destructor() {\n this.reset();\n };\n\n return CallbackQueue;\n}();\n\nmodule.exports = PooledClass.addPoolingTo(CallbackQueue);\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar DOMProperty = __webpack_require__(15);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactInstrumentation = __webpack_require__(8);\n\nvar quoteAttributeValueForBrowser = __webpack_require__(253);\nvar warning = __webpack_require__(1);\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n return true;\n }\n if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n false ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;\n return false;\n}\n\nfunction shouldIgnoreValue(propertyInfo, value) {\n return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function (id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);\n },\n\n setAttributeForID: function (node, id) {\n node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n },\n\n createMarkupForRoot: function () {\n return DOMProperty.ROOT_ATTRIBUTE_NAME + '=\"\"';\n },\n\n setAttributeForRoot: function (node) {\n node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function (name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n if (shouldIgnoreValue(propertyInfo, value)) {\n return '';\n }\n var attributeName = propertyInfo.attributeName;\n if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n return attributeName + '=\"\"';\n }\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n }\n return null;\n },\n\n /**\n * Creates markup for a custom property.\n *\n * @param {string} name\n * @param {*} value\n * @return {string} Markup string, or empty string if the property was invalid.\n */\n createMarkupForCustomAttribute: function (name, value) {\n if (!isAttributeNameSafe(name) || value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function (node, name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(propertyInfo, value)) {\n this.deleteValueForProperty(node, name);\n return;\n } else if (propertyInfo.mustUseProperty) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propertyInfo.propertyName] = value;\n } else {\n var attributeName = propertyInfo.attributeName;\n var namespace = propertyInfo.attributeNamespace;\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n if (namespace) {\n node.setAttributeNS(namespace, attributeName, '' + value);\n } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n node.setAttribute(attributeName, '');\n } else {\n node.setAttribute(attributeName, '' + value);\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n DOMPropertyOperations.setValueForAttribute(node, name, value);\n return;\n }\n\n if (false) {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n setValueForAttribute: function (node, name, value) {\n if (!isAttributeNameSafe(name)) {\n return;\n }\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n\n if (false) {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n /**\n * Deletes an attributes from a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForAttribute: function (node, name) {\n node.removeAttribute(name);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function (node, name) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (propertyInfo.mustUseProperty) {\n var propName = propertyInfo.propertyName;\n if (propertyInfo.hasBooleanValue) {\n node[propName] = false;\n } else {\n node[propName] = '';\n }\n } else {\n node.removeAttribute(propertyInfo.attributeName);\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n }\n\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n }\n};\n\nmodule.exports = DOMPropertyOperations;\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ReactDOMComponentFlags = {\n hasCachedChildNodes: 1 << 0\n};\n\nmodule.exports = ReactDOMComponentFlags;\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar LinkedValueUtils = __webpack_require__(49);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactUpdates = __webpack_require__(9);\n\nvar warning = __webpack_require__(1);\n\nvar didWarnValueLink = false;\nvar didWarnValueDefaultValue = false;\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n if (this._rootNodeID && this._wrapperState.pendingUpdate) {\n this._wrapperState.pendingUpdate = false;\n\n var props = this._currentElement.props;\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n updateOptions(this, Boolean(props.multiple), value);\n }\n }\n}\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\nfunction checkSelectPropTypes(inst, props) {\n var owner = inst._currentElement._owner;\n LinkedValueUtils.checkPropTypes('select', props, owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n false ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n for (var i = 0; i < valuePropNames.length; i++) {\n var propName = valuePropNames[i];\n if (props[propName] == null) {\n continue;\n }\n var isArray = Array.isArray(props[propName]);\n if (props.multiple && !isArray) {\n false ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n } else if (!props.multiple && isArray) {\n false ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n }\n }\n}\n\n/**\n * @param {ReactDOMComponent} inst\n * @param {boolean} multiple\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\nfunction updateOptions(inst, multiple, propValue) {\n var selectedValue, i;\n var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\n if (multiple) {\n selectedValue = {};\n for (i = 0; i < propValue.length; i++) {\n selectedValue['' + propValue[i]] = true;\n }\n for (i = 0; i < options.length; i++) {\n var selected = selectedValue.hasOwnProperty(options[i].value);\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n selectedValue = '' + propValue;\n for (i = 0; i < options.length; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n return;\n }\n }\n if (options.length) {\n options[0].selected = true;\n }\n }\n}\n\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = {\n getHostProps: function (inst, props) {\n return _assign({}, props, {\n onChange: inst._wrapperState.onChange,\n value: undefined\n });\n },\n\n mountWrapper: function (inst, props) {\n if (false) {\n checkSelectPropTypes(inst, props);\n }\n\n var value = LinkedValueUtils.getValue(props);\n inst._wrapperState = {\n pendingUpdate: false,\n initialValue: value != null ? value : props.defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n wasMultiple: Boolean(props.multiple)\n };\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n false ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValueDefaultValue = true;\n }\n },\n\n getSelectValueContext: function (inst) {\n // ReactDOMOption looks at this initial value so the initial generated\n // markup has correct `selected` attributes\n return inst._wrapperState.initialValue;\n },\n\n postUpdateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // After the initial mount, we control selected-ness manually so don't pass\n // this value down\n inst._wrapperState.initialValue = undefined;\n\n var wasMultiple = inst._wrapperState.wasMultiple;\n inst._wrapperState.wasMultiple = Boolean(props.multiple);\n\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n inst._wrapperState.pendingUpdate = false;\n updateOptions(inst, Boolean(props.multiple), value);\n } else if (wasMultiple !== Boolean(props.multiple)) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (props.defaultValue != null) {\n updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');\n }\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n if (this._rootNodeID) {\n this._wrapperState.pendingUpdate = true;\n }\n ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMSelect;\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar emptyComponentFactory;\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponentFactory: function (factory) {\n emptyComponentFactory = factory;\n }\n};\n\nvar ReactEmptyComponent = {\n create: function (instantiate) {\n return emptyComponentFactory(instantiate);\n }\n};\n\nReactEmptyComponent.injection = ReactEmptyComponentInjection;\n\nmodule.exports = ReactEmptyComponent;\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar ReactFeatureFlags = {\n // When true, call console.time() before and .timeEnd() after each top-level\n // render (both initial renders and updates). Useful when looking at prod-mode\n // timeline profiles in Chrome, for example.\n logTopLevelRenders: false\n};\n\nmodule.exports = ReactFeatureFlags;\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\nvar genericComponentClass = null;\nvar textComponentClass = null;\n\nvar ReactHostComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function (componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function (componentClass) {\n textComponentClass = componentClass;\n }\n};\n\n/**\n * Get a host internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n !genericComponentClass ? false ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;\n return new genericComponentClass(element);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactHostComponent = {\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactHostComponentInjection\n};\n\nmodule.exports = ReactHostComponent;\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ReactDOMSelection = __webpack_require__(213);\n\nvar containsNode = __webpack_require__(166);\nvar focusNode = __webpack_require__(72);\nvar getActiveElement = __webpack_require__(73);\n\nfunction isInDocument(node) {\n return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n hasSelectionCapabilities: function (elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n },\n\n getSelectionInformation: function () {\n var focusedElem = getActiveElement();\n return {\n focusedElem: focusedElem,\n selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n };\n },\n\n /**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n restoreSelection: function (priorSelectionInformation) {\n var curFocusedElem = getActiveElement();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n }\n focusNode(priorFocusedElem);\n }\n },\n\n /**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n getSelection: function (input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n // IE8 input.\n var range = document.selection.createRange();\n // There can only be one selection per document in IE, so it must\n // be in our element.\n if (range.parentElement() === input) {\n selection = {\n start: -range.moveStart('character', -input.value.length),\n end: -range.moveEnd('character', -input.value.length)\n };\n }\n } else {\n // Content editable or old IE textarea.\n selection = ReactDOMSelection.getOffsets(input);\n }\n\n return selection || { start: 0, end: 0 };\n },\n\n /**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n setSelection: function (input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveStart('character', start);\n range.moveEnd('character', end - start);\n range.select();\n } else {\n ReactDOMSelection.setOffsets(input, offsets);\n }\n }\n};\n\nmodule.exports = ReactInputSelection;\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar DOMLazyTree = __webpack_require__(14);\nvar DOMProperty = __webpack_require__(15);\nvar React = __webpack_require__(17);\nvar ReactBrowserEventEmitter = __webpack_require__(27);\nvar ReactCurrentOwner = __webpack_require__(11);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactDOMContainerInfo = __webpack_require__(207);\nvar ReactDOMFeatureFlags = __webpack_require__(209);\nvar ReactFeatureFlags = __webpack_require__(81);\nvar ReactInstanceMap = __webpack_require__(22);\nvar ReactInstrumentation = __webpack_require__(8);\nvar ReactMarkupChecksum = __webpack_require__(223);\nvar ReactReconciler = __webpack_require__(16);\nvar ReactUpdateQueue = __webpack_require__(52);\nvar ReactUpdates = __webpack_require__(9);\n\nvar emptyObject = __webpack_require__(26);\nvar instantiateReactComponent = __webpack_require__(92);\nvar invariant = __webpack_require__(0);\nvar setInnerHTML = __webpack_require__(31);\nvar shouldUpdateReactComponent = __webpack_require__(58);\nvar warning = __webpack_require__(1);\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\nvar instancesByReactRootID = {};\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var wrappedElement = wrapperInstance._currentElement.props.child;\n var type = wrappedElement.type;\n markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);\n console.time(markerName);\n }\n\n var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */\n );\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */\n !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);\n transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\nfunction unmountComponentFromNode(instance, container, safely) {\n if (false) {\n ReactInstrumentation.debugTool.onBeginFlush();\n }\n ReactReconciler.unmountComponent(instance, safely);\n if (false) {\n ReactInstrumentation.debugTool.onEndFlush();\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n}\n\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\nfunction hasNonRootReactChild(container) {\n var rootEl = getReactRootElementInContainer(container);\n if (rootEl) {\n var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return !!(inst && inst._hostParent);\n }\n}\n\n/**\n * True if the supplied DOM node is a React DOM element and\n * it has been rendered by another copy of React.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM has been rendered by another copy of React\n * @internal\n */\nfunction nodeIsRenderedByOtherInstance(container) {\n var rootEl = getReactRootElementInContainer(container);\n return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));\n}\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n}\n\n/**\n * True if the supplied DOM node is a valid React node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid React DOM node.\n * @internal\n */\nfunction isReactNode(node) {\n return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));\n}\n\nfunction getHostRootInstanceInContainer(container) {\n var rootEl = getReactRootElementInContainer(container);\n var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;\n}\n\nfunction getTopLevelWrapperInContainer(container) {\n var root = getHostRootInstanceInContainer(container);\n return root ? root._hostContainerInfo._topLevelWrapper : null;\n}\n\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\nvar topLevelRootCounter = 1;\nvar TopLevelWrapper = function () {\n this.rootID = topLevelRootCounter++;\n};\nTopLevelWrapper.prototype.isReactComponent = {};\nif (false) {\n TopLevelWrapper.displayName = 'TopLevelWrapper';\n}\nTopLevelWrapper.prototype.render = function () {\n return this.props.child;\n};\nTopLevelWrapper.isReactTopLevelWrapper = true;\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n TopLevelWrapper: TopLevelWrapper,\n\n /**\n * Used by devtools. The keys are not important.\n */\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function (container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {\n ReactMount.scrollMonitor(container, function () {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n return prevComponent;\n },\n\n /**\n * Render a new component into the DOM. Hooked by hooks!\n *\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n false ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? false ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n var componentInstance = instantiateReactComponent(nextElement, false);\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n\n var wrapperID = componentInstance._instance.rootID;\n instancesByReactRootID[wrapperID] = componentInstance;\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? false ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;\n return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n },\n\n _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');\n !React.isValidElement(nextElement) ? false ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? \" Instead of passing a string like 'div', pass \" + \"React.createElement('div') or <div />.\" : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? \" Instead of passing a string like 'div', pass \" + \"React.createElement('div') or <div />.\" : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;\n\n false ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n\n var nextWrappedElement = React.createElement(TopLevelWrapper, {\n child: nextElement\n });\n\n var nextContext;\n if (parentComponent) {\n var parentInst = ReactInstanceMap.get(parentComponent);\n nextContext = parentInst._processChildContext(parentInst._context);\n } else {\n nextContext = emptyObject;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n\n if (prevComponent) {\n var prevWrappedElement = prevComponent._currentElement;\n var prevElement = prevWrappedElement.props.child;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n var publicInst = prevComponent._renderedComponent.getPublicInstance();\n var updatedCallback = callback && function () {\n callback.call(publicInst);\n };\n ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);\n return publicInst;\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (internalGetID(rootElementSibling)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;\n break;\n }\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function (nextElement, container, callback) {\n return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function (container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n false ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? false ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), \"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by another copy of React.') : void 0;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n if (!prevComponent) {\n // Check if the node being unmounted was rendered by React, but isn't a\n // root node.\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n // Check if the container itself is a React root node.\n var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, \"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n }\n\n return false;\n }\n delete instancesByReactRootID[prevComponent._instance.rootID];\n ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n return true;\n },\n\n _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {\n !isValidContainer(container) ? false ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n ReactDOMComponentTree.precacheNode(instance, rootElement);\n return;\n } else {\n var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\n var normalizedMarkup = markup;\n if (false) {\n // because rootMarkup is retrieved from the DOM, various normalizations\n // will have occurred which will not be present in `markup`. Here,\n // insert markup into a <div> or <iframe> depending on the container\n // type to perform the same normalizations before comparing.\n var normalizer;\n if (container.nodeType === ELEMENT_NODE_TYPE) {\n normalizer = document.createElement('div');\n normalizer.innerHTML = markup;\n normalizedMarkup = normalizer.innerHTML;\n } else {\n normalizer = document.createElement('iframe');\n document.body.appendChild(normalizer);\n normalizer.contentDocument.write(markup);\n normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n document.body.removeChild(normalizer);\n }\n }\n\n var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n !(container.nodeType !== DOC_NODE_TYPE) ? false ? invariant(false, 'You\\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\\n%s', difference) : _prodInvariant('42', difference) : void 0;\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\\n%s', difference) : void 0;\n }\n }\n }\n\n !(container.nodeType !== DOC_NODE_TYPE) ? false ? invariant(false, 'You\\'re trying to render a component to the document but you didn\\'t use server rendering. We can\\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;\n\n if (transaction.useCreateElement) {\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n DOMLazyTree.insertTreeBefore(container, markup, null);\n } else {\n setInnerHTML(container, markup);\n ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n }\n\n if (false) {\n var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);\n if (hostNode._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: hostNode._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n }\n};\n\nmodule.exports = ReactMount;\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar React = __webpack_require__(17);\n\nvar invariant = __webpack_require__(0);\n\nvar ReactNodeTypes = {\n HOST: 0,\n COMPOSITE: 1,\n EMPTY: 2,\n\n getType: function (node) {\n if (node === null || node === false) {\n return ReactNodeTypes.EMPTY;\n } else if (React.isValidElement(node)) {\n if (typeof node.type === 'function') {\n return ReactNodeTypes.COMPOSITE;\n } else {\n return ReactNodeTypes.HOST;\n }\n }\n true ? false ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;\n }\n};\n\nmodule.exports = ReactNodeTypes;\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ViewportMetrics = {\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function (scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n};\n\nmodule.exports = ViewportMetrics;\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n !(next != null) ? false ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;\n\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n if (Array.isArray(current)) {\n if (Array.isArray(next)) {\n current.push.apply(current, next);\n return current;\n }\n current.push(next);\n return current;\n }\n\n if (Array.isArray(next)) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\n\nfunction forEachAccumulated(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n}\n\nmodule.exports = forEachAccumulated;\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ReactNodeTypes = __webpack_require__(85);\n\nfunction getHostComponentFromComposite(inst) {\n var type;\n\n while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n inst = inst._renderedComponent;\n }\n\n if (type === ReactNodeTypes.HOST) {\n return inst._renderedComponent;\n } else if (type === ReactNodeTypes.EMPTY) {\n return null;\n }\n}\n\nmodule.exports = getHostComponentFromComposite;\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n if (!contentKey && ExecutionEnvironment.canUseDOM) {\n // Prefer textContent to innerText because many browsers support both but\n // SVG <text> elements don't support innerText even when <div> does.\n contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n }\n return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ReactDOMComponentTree = __webpack_require__(4);\n\nfunction isCheckable(elem) {\n var type = elem.type;\n var nodeName = elem.nodeName;\n return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio');\n}\n\nfunction getTracker(inst) {\n return inst._wrapperState.valueTracker;\n}\n\nfunction attachTracker(inst, tracker) {\n inst._wrapperState.valueTracker = tracker;\n}\n\nfunction detachTracker(inst) {\n inst._wrapperState.valueTracker = null;\n}\n\nfunction getValueFromNode(node) {\n var value;\n if (node) {\n value = isCheckable(node) ? '' + node.checked : node.value;\n }\n return value;\n}\n\nvar inputValueTracking = {\n // exposed for testing\n _getTrackerFromNode: function (node) {\n return getTracker(ReactDOMComponentTree.getInstanceFromNode(node));\n },\n\n\n track: function (inst) {\n if (getTracker(inst)) {\n return;\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var valueField = isCheckable(node) ? 'checked' : 'value';\n var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);\n\n var currentValue = '' + node[valueField];\n\n // if someone has already defined a value or Safari, then bail\n // and don't track value will cause over reporting of changes,\n // but it's better then a hard failure\n // (needed for certain tests that spyOn input values and Safari)\n if (node.hasOwnProperty(valueField) || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') {\n return;\n }\n\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable,\n configurable: true,\n get: function () {\n return descriptor.get.call(this);\n },\n set: function (value) {\n currentValue = '' + value;\n descriptor.set.call(this, value);\n }\n });\n\n attachTracker(inst, {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = '' + value;\n },\n stopTracking: function () {\n detachTracker(inst);\n delete node[valueField];\n }\n });\n },\n\n updateValueIfChanged: function (inst) {\n if (!inst) {\n return false;\n }\n var tracker = getTracker(inst);\n\n if (!tracker) {\n inputValueTracking.track(inst);\n return true;\n }\n\n var lastValue = tracker.getValue();\n var nextValue = getValueFromNode(ReactDOMComponentTree.getNodeFromInstance(inst));\n\n if (nextValue !== lastValue) {\n tracker.setValue(nextValue);\n return true;\n }\n\n return false;\n },\n stopTracking: function (inst) {\n var tracker = getTracker(inst);\n if (tracker) {\n tracker.stopTracking();\n }\n }\n};\n\nmodule.exports = inputValueTracking;\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar ReactCompositeComponent = __webpack_require__(204);\nvar ReactEmptyComponent = __webpack_require__(80);\nvar ReactHostComponent = __webpack_require__(82);\n\nvar getNextDebugID = __webpack_require__(266);\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function (element) {\n this.construct(element);\n};\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {boolean} shouldHaveDebugID\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, shouldHaveDebugID) {\n var instance;\n\n if (node === null || node === false) {\n instance = ReactEmptyComponent.create(instantiateReactComponent);\n } else if (typeof node === 'object') {\n var element = node;\n var type = element.type;\n if (typeof type !== 'function' && typeof type !== 'string') {\n var info = '';\n if (false) {\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in.\";\n }\n }\n info += getDeclarationErrorAddendum(element._owner);\n true ? false ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info) : _prodInvariant('130', type == null ? type : typeof type, info) : void 0;\n }\n\n // Special case string values\n if (typeof element.type === 'string') {\n instance = ReactHostComponent.createInternalComponent(element);\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // representations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n\n // We renamed this. Allow the old name for compat. :(\n if (!instance.getHostNode) {\n instance.getHostNode = instance.getNativeNode;\n }\n } else {\n instance = new ReactCompositeComponentWrapper(element);\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactHostComponent.createInstanceForText(node);\n } else {\n true ? false ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;\n }\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;\n }\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (false) {\n instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (false) {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\n_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {\n _instantiateReactComponent: instantiateReactComponent\n});\n\nmodule.exports = instantiateReactComponent;\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n color: true,\n date: true,\n datetime: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n password: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true\n};\n\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n if (nodeName === 'input') {\n return !!supportedInputTypes[elem.type];\n }\n\n if (nodeName === 'textarea') {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isTextInputElement;\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\nvar escapeTextContentForBrowser = __webpack_require__(30);\nvar setInnerHTML = __webpack_require__(31);\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function (node, text) {\n if (text) {\n var firstChild = node.firstChild;\n\n if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n if (!('textContent' in document.documentElement)) {\n setTextContent = function (node, text) {\n if (node.nodeType === 3) {\n node.nodeValue = text;\n return;\n }\n setInnerHTML(node, escapeTextContentForBrowser(text));\n };\n }\n}\n\nmodule.exports = setTextContent;\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactCurrentOwner = __webpack_require__(11);\nvar REACT_ELEMENT_TYPE = __webpack_require__(219);\n\nvar getIteratorFn = __webpack_require__(250);\nvar invariant = __webpack_require__(0);\nvar KeyEscapeUtils = __webpack_require__(48);\nvar warning = __webpack_require__(1);\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (false) {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (false) {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = \" It looks like you're using an element created by a different \" + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n true ? false ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(24),\n _assign = __webpack_require__(3);\n\nvar ReactNoopUpdateQueue = __webpack_require__(99);\n\nvar canDefineProperty = __webpack_require__(100);\nvar emptyObject = __webpack_require__(26);\nvar invariant = __webpack_require__(0);\nvar lowPriorityWarning = __webpack_require__(267);\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nReactComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function (partialState, callback) {\n !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? false ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;\n this.updater.enqueueSetState(this, partialState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'setState');\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'forceUpdate');\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (false) {\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function (methodName, info) {\n if (canDefineProperty) {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function () {\n lowPriorityWarning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n return undefined;\n }\n });\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactPureComponent(props, context, updater) {\n // Duplicated from ReactComponent.\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = ReactComponent.prototype;\nReactPureComponent.prototype = new ComponentDummy();\nReactPureComponent.prototype.constructor = ReactPureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(ReactPureComponent.prototype, ReactComponent.prototype);\nReactPureComponent.prototype.isPureReactComponent = true;\n\nmodule.exports = {\n Component: ReactComponent,\n PureComponent: ReactPureComponent\n};\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2016-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(24);\n\nvar ReactCurrentOwner = __webpack_require__(11);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nfunction isNative(fn) {\n // Based on isNative() from Lodash\n var funcToString = Function.prototype.toString;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var reIsNative = RegExp('^' + funcToString\n // Take an example native function source for comparison\n .call(hasOwnProperty\n // Strip regex characters so we can use it for regex\n ).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&'\n // Remove hasOwnProperty from the template to make it generic\n ).replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n try {\n var source = funcToString.call(fn);\n return reIsNative.test(source);\n } catch (err) {\n return false;\n }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === 'function' &&\n// Map\ntypeof Map === 'function' && isNative(Map) &&\n// Map.prototype.keys\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n// Set\ntypeof Set === 'function' && isNative(Set) &&\n// Set.prototype.keys\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n var itemMap = new Map();\n var rootIDSet = new Set();\n\n setItem = function (id, item) {\n itemMap.set(id, item);\n };\n getItem = function (id) {\n return itemMap.get(id);\n };\n removeItem = function (id) {\n itemMap['delete'](id);\n };\n getItemIDs = function () {\n return Array.from(itemMap.keys());\n };\n\n addRoot = function (id) {\n rootIDSet.add(id);\n };\n removeRoot = function (id) {\n rootIDSet['delete'](id);\n };\n getRootIDs = function () {\n return Array.from(rootIDSet.keys());\n };\n} else {\n var itemByKey = {};\n var rootByKey = {};\n\n // Use non-numeric keys to prevent V8 performance issues:\n // https://github.com/facebook/react/pull/7232\n var getKeyFromID = function (id) {\n return '.' + id;\n };\n var getIDFromKey = function (key) {\n return parseInt(key.substr(1), 10);\n };\n\n setItem = function (id, item) {\n var key = getKeyFromID(id);\n itemByKey[key] = item;\n };\n getItem = function (id) {\n var key = getKeyFromID(id);\n return itemByKey[key];\n };\n removeItem = function (id) {\n var key = getKeyFromID(id);\n delete itemByKey[key];\n };\n getItemIDs = function () {\n return Object.keys(itemByKey).map(getIDFromKey);\n };\n\n addRoot = function (id) {\n var key = getKeyFromID(id);\n rootByKey[key] = true;\n };\n removeRoot = function (id) {\n var key = getKeyFromID(id);\n delete rootByKey[key];\n };\n getRootIDs = function () {\n return Object.keys(rootByKey).map(getIDFromKey);\n };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n var item = getItem(id);\n if (item) {\n var childIDs = item.childIDs;\n\n removeItem(id);\n childIDs.forEach(purgeDeep);\n }\n}\n\nfunction describeComponentFrame(name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n}\n\nfunction getDisplayName(element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n}\n\nfunction describeID(id) {\n var name = ReactComponentTreeHook.getDisplayName(id);\n var element = ReactComponentTreeHook.getElement(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName;\n if (ownerID) {\n ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n }\n false ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\n return describeComponentFrame(name, element && element._source, ownerName);\n}\n\nvar ReactComponentTreeHook = {\n onSetChildren: function (id, nextChildIDs) {\n var item = getItem(id);\n !item ? false ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.childIDs = nextChildIDs;\n\n for (var i = 0; i < nextChildIDs.length; i++) {\n var nextChildID = nextChildIDs[i];\n var nextChild = getItem(nextChildID);\n !nextChild ? false ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\n !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? false ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\n !nextChild.isMounted ? false ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\n if (nextChild.parentID == null) {\n nextChild.parentID = id;\n // TODO: This shouldn't be necessary but mounting a new root during in\n // componentWillMount currently causes not-yet-mounted components to\n // be purged from our tree data so their parent id is missing.\n }\n !(nextChild.parentID === id) ? false ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\n }\n },\n onBeforeMountComponent: function (id, element, parentID) {\n var item = {\n element: element,\n parentID: parentID,\n text: null,\n childIDs: [],\n isMounted: false,\n updateCount: 0\n };\n setItem(id, item);\n },\n onBeforeUpdateComponent: function (id, element) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.element = element;\n },\n onMountComponent: function (id) {\n var item = getItem(id);\n !item ? false ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.isMounted = true;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n addRoot(id);\n }\n },\n onUpdateComponent: function (id) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.updateCount++;\n },\n onUnmountComponent: function (id) {\n var item = getItem(id);\n if (item) {\n // We need to check if it exists.\n // `item` might not exist if it is inside an error boundary, and a sibling\n // error boundary child threw while mounting. Then this instance never\n // got a chance to mount, but it still gets an unmounting event during\n // the error boundary cleanup.\n item.isMounted = false;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n removeRoot(id);\n }\n }\n unmountedIDs.push(id);\n },\n purgeUnmountedComponents: function () {\n if (ReactComponentTreeHook._preventPurging) {\n // Should only be used for testing.\n return;\n }\n\n for (var i = 0; i < unmountedIDs.length; i++) {\n var id = unmountedIDs[i];\n purgeDeep(id);\n }\n unmountedIDs.length = 0;\n },\n isMounted: function (id) {\n var item = getItem(id);\n return item ? item.isMounted : false;\n },\n getCurrentStackAddendum: function (topElement) {\n var info = '';\n if (topElement) {\n var name = getDisplayName(topElement);\n var owner = topElement._owner;\n info += describeComponentFrame(name, topElement._source, owner && owner.getName());\n }\n\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n info += ReactComponentTreeHook.getStackAddendumByID(id);\n return info;\n },\n getStackAddendumByID: function (id) {\n var info = '';\n while (id) {\n info += describeID(id);\n id = ReactComponentTreeHook.getParentID(id);\n }\n return info;\n },\n getChildIDs: function (id) {\n var item = getItem(id);\n return item ? item.childIDs : [];\n },\n getDisplayName: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element) {\n return null;\n }\n return getDisplayName(element);\n },\n getElement: function (id) {\n var item = getItem(id);\n return item ? item.element : null;\n },\n getOwnerID: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element || !element._owner) {\n return null;\n }\n return element._owner._debugID;\n },\n getParentID: function (id) {\n var item = getItem(id);\n return item ? item.parentID : null;\n },\n getSource: function (id) {\n var item = getItem(id);\n var element = item ? item.element : null;\n var source = element != null ? element._source : null;\n return source;\n },\n getText: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (typeof element === 'string') {\n return element;\n } else if (typeof element === 'number') {\n return '' + element;\n } else {\n return null;\n }\n },\n getUpdateCount: function (id) {\n var item = getItem(id);\n return item ? item.updateCount : 0;\n },\n\n\n getRootIDs: getRootIDs,\n getRegisteredIDs: getItemIDs,\n\n pushNonStandardWarningStack: function (isCreatingElement, currentSource) {\n if (typeof console.reactStack !== 'function') {\n return;\n }\n\n var stack = [];\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n try {\n if (isCreatingElement) {\n stack.push({\n name: id ? ReactComponentTreeHook.getDisplayName(id) : null,\n fileName: currentSource ? currentSource.fileName : null,\n lineNumber: currentSource ? currentSource.lineNumber : null\n });\n }\n\n while (id) {\n var element = ReactComponentTreeHook.getElement(id);\n var parentID = ReactComponentTreeHook.getParentID(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName = ownerID ? ReactComponentTreeHook.getDisplayName(ownerID) : null;\n var source = element && element._source;\n stack.push({\n name: ownerName,\n fileName: source ? source.fileName : null,\n lineNumber: source ? source.lineNumber : null\n });\n id = parentID;\n }\n } catch (err) {\n // Internal state is messed up.\n // Stop building the stack (it's just a nice to have).\n }\n\n console.reactStack(stack);\n },\n popNonStandardWarningStack: function () {\n if (typeof console.reactStackEnd !== 'function') {\n return;\n }\n console.reactStackEnd();\n }\n};\n\nmodule.exports = ReactComponentTreeHook;\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar warning = __webpack_require__(1);\n\nfunction warnNoop(publicInstance, callerName) {\n if (false) {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback) {},\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nmodule.exports = ReactNoopUpdateQueue;\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar canDefineProperty = false;\nif (false) {\n try {\n // $FlowFixMe https://github.com/facebook/flow/issues/285\n Object.defineProperty({}, 'x', { get: function () {} });\n canDefineProperty = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\nmodule.exports = canDefineProperty;\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(118);\nif(typeof content === 'string') content = [[module.i, content, '']];\n// Prepare cssTransformation\nvar transform;\n\nvar options = {\"hmr\":true}\noptions.transform = transform\n// add the styles to the DOM\nvar update = __webpack_require__(103)(content, options);\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(false) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../css-loader/index.js!./c3.css\", function() {\n\t\t\tvar newContent = require(\"!!../css-loader/index.js!./c3.css\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(119);\nif(typeof content === 'string') content = [[module.i, content, '']];\n// Prepare cssTransformation\nvar transform;\n\nvar options = {\"hmr\":true}\noptions.transform = transform\n// add the styles to the DOM\nvar update = __webpack_require__(103)(content, options);\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(false) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js!./charts.css\", function() {\n\t\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js!./charts.css\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(selector) {\n\t\tif (typeof memo[selector] === \"undefined\") {\n\t\t\tvar styleTarget = fn.call(this, selector);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[selector] = styleTarget;\n\t\t}\n\t\treturn memo[selector]\n\t};\n})(function (target) {\n\treturn document.querySelector(target)\n});\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = __webpack_require__(271);\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton) options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n\tif (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertInto + \" \" + options.insertAt.before);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\toptions.attrs.type = \"text/css\";\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\toptions.attrs.type = \"text/css\";\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = options.transform(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.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/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(12);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = __webpack_require__(109);\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _promisePolyfill = __webpack_require__(19);\n\nvar _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n//import WidgetResidential from \"./widgetresidential.js\";\n\n\nvar WidgetSelection = function (_Component) {\n _inherits(WidgetSelection, _Component);\n\n function WidgetSelection(props) {\n _classCallCheck(this, WidgetSelection);\n\n var _this = _possibleConstructorReturn(this, (WidgetSelection.__proto__ || Object.getPrototypeOf(WidgetSelection)).call(this));\n\n _this.state = {\n selectedGeo: \"County:San Mateo\",\n selectedPeriodType: \"Quarter\",\n selectedPeriod: \"65\"\n };\n _this._onGeoSelect = _this._onGeoSelect.bind(_this);\n _this._onPeriodSelect = _this._onPeriodSelect.bind(_this);\n return _this;\n }\n\n _createClass(WidgetSelection, [{\n key: \"_onGeoSelect\",\n value: function _onGeoSelect(e) {\n\n this.setState({ selectedGeo: e.target.value });\n }\n }, {\n key: \"_onPeriodSelect\",\n value: function _onPeriodSelect(e) {\n var selectedPeriodType = e.target.value;\n var selectedPeriod = selectedPeriodType == 'Month' ? '36' : '65';\n\n this.setState({\n selectedPeriodType: selectedPeriodType, selectedPeriod: selectedPeriod\n\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n\n var widgetselections = {\n\n periodtype: this.state.selectedPeriodType,\n period: this.state.selectedPeriod,\n geo: [this.state.selectedGeo],\n classtype: 'Residential - Single Family,Residential - Common Interest',\n divid: 'root',\n title: true\n };\n\n return _react2.default.createElement(\n \"div\",\n null,\n _react2.default.createElement(\n \"div\",\n { id: \"trendWidgetHeaderWrap\" },\n _react2.default.createElement(\n \"h1\",\n { className: \"font-weight-bold browser-default\" },\n \"Interactive Market Snapshots\"\n ),\n _react2.default.createElement(\n \"select\",\n {\n id: \"geo-select\",\n className: \"custom-select w-25\",\n value: this.state.selectedGeo,\n onChange: _.throttle(this._onGeoSelect, 500, { 'trailing': true }).bind(this) },\n _react2.default.createElement(\n \"option\",\n { key: \"1\", value: \"County:San Mateo\" },\n \"San Mateo County\"\n ),\n _react2.default.createElement(\n \"option\",\n { key: \"2\", value: \"County:Santa Clara\" },\n \"Santa Clara County\"\n ),\n _react2.default.createElement(\n \"option\",\n { key: \"3\", value: \"County:Santa Cruz\" },\n \"Santa Cruz County\"\n ),\n _react2.default.createElement(\n \"option\",\n { key: \"4\", value: \"County:San Benito\" },\n \"San Benito County\"\n ),\n _react2.default.createElement(\n \"option\",\n { key: \"5\", value: \"County:Monterey\" },\n \"Monterey County\"\n )\n ),\n _react2.default.createElement(\n \"div\",\n { onChange: _.throttle(this._onPeriodSelect, 500, { 'trailing': true }).bind(this) },\n _react2.default.createElement(\n \"div\",\n { className: \"periodselect\" },\n _react2.default.createElement(\n \"label\",\n null,\n _react2.default.createElement(\"input\", { type: \"radio\", value: \"Quarter\", name: \"period\", defaultChecked: true }),\n \" \",\n _react2.default.createElement(\n \"span\",\n null,\n \"All years by quarter\"\n )\n )\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"periodselect\" },\n _react2.default.createElement(\n \"label\",\n null,\n _react2.default.createElement(\"input\", { type: \"radio\", value: \"Month\", name: \"period\", defaultChecked: false }),\n _react2.default.createElement(\n \"span\",\n null,\n \" 3 years by month\"\n )\n )\n )\n )\n ),\n _react2.default.createElement(_index2.default, { widgetselections: widgetselections })\n );\n }\n }]);\n\n return WidgetSelection;\n}(_react.Component);\n\nexports.default = WidgetSelection;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(205);\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(12);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _uniqueId = __webpack_require__(188);\n\nvar _uniqueId2 = _interopRequireDefault(_uniqueId);\n\nvar _c = __webpack_require__(115);\n\nvar _c2 = _interopRequireDefault(_c);\n\nvar _d3Selection = __webpack_require__(130);\n\nvar _d3Format = __webpack_require__(120);\n\nvar d3format = _interopRequireWildcard(_d3Format);\n\nvar _labels = __webpack_require__(111);\n\nvar _localHtml2Canvas = __webpack_require__(112);\n\nvar _localHtml2Canvas2 = _interopRequireDefault(_localHtml2Canvas);\n\n__webpack_require__(101);\n\nvar _charts = __webpack_require__(102);\n\nvar _charts2 = _interopRequireDefault(_charts);\n\nvar _promisePolyfill = __webpack_require__(19);\n\nvar _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _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; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n//import * as Canvas2Image from \"./canvastoimage.js\";\n//import domtoimage from './dom2image.js';\n\n\nwindow.html2canvas = _localHtml2Canvas2.default;\n//window.Canvas2Image = Canvas2Image;\n//window.jquery=$;\n// import Share from './share.js';\nvar logo = __webpack_require__(273);\nvar download = __webpack_require__(274);\n\nvar MarketTrends = function (_Component) {\n _inherits(MarketTrends, _Component);\n\n function MarketTrends(props) {\n _classCallCheck(this, MarketTrends);\n\n var _this = _possibleConstructorReturn(this, (MarketTrends.__proto__ || Object.getPrototypeOf(MarketTrends)).call(this, props));\n\n _this.state = {\n btncharttypeactive: \"\",\n chartType: \"\",\n copyInProgress: false\n };\n _this.handleImageClick = _this.handleImageClick.bind(_this);\n _this.copyChart = _this.copyChart.bind(_this);\n return _this;\n }\n\n _createClass(MarketTrends, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n\n var chartType = this.props.widgetselections.measure.toLowerCase().indexOf(\"count\") >= 0 ? \"area\" : \"line\";\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n\n var chartType = nextProps.widgetselections.measure.toLowerCase().indexOf(\"count\") >= 0 ? \"area\" : \"line\";\n }\n }, {\n key: \"handleImageClick\",\n value: function handleImageClick(e) {\n e.preventDefault();\n }\n }, {\n key: \"copyChart\",\n value: function copyChart(e) {\n var target = e.target;\n // d3.select(document.getElementById(target.dataset.id)).classed('c3', true);\n document.getElementById(target.dataset.id).classList.add('c3');\n var doctype = '<?xml version=\"1.0\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">';\n\n window.URL = window.URL || window.webkitURL;\n\n var body = document.body,\n emptySvg;\n\n var prefix = {\n xmlns: \"http://www.w3.org/2000/xmlns/\",\n xlink: \"http://www.w3.org/1999/xlink\",\n svg: \"http://www.w3.org/2000/svg\"\n };\n var emptySvg = window.document.createElementNS(prefix.svg, 'svg');\n window.document.body.appendChild(emptySvg);\n\n var emptySvgDeclarationComputed = getComputedStyle(emptySvg);\n\n function setInlineStyles(svg, emptySvgDeclarationComputed) {\n\n function explicitlySetStyle(element) {\n var cSSStyleDeclarationComputed = getComputedStyle(element);\n var i, len, key, value;\n var computedStyleStr = \"\";\n for (i = 0, len = cSSStyleDeclarationComputed.length; i < len; i++) {\n key = cSSStyleDeclarationComputed[i];\n value = cSSStyleDeclarationComputed.getPropertyValue(key);\n if (value !== emptySvgDeclarationComputed.getPropertyValue(key)) {\n computedStyleStr += key + \":\" + value + \";\";\n }\n }\n element.setAttribute('style', computedStyleStr);\n }\n function traverse(obj) {\n var tree = [];\n tree.push(obj);\n visit(obj);\n function visit(node) {\n if (node && node.hasChildNodes()) {\n var child = node.firstChild;\n while (child) {\n if (child.nodeType === 1 && child.nodeName != 'SCRIPT') {\n tree.push(child);\n visit(child);\n }\n child = child.nextSibling;\n }\n }\n }\n return tree;\n }\n // hardcode computed css styles inside svg\n var allElements = traverse(svg);\n var i = allElements.length;\n while (i--) {\n explicitlySetStyle(allElements[i]);\n }\n }\n var holder = document.createElement(\"DIV\");\n var canvasHolder = document.createElement(\"CANVAS\");\n canvasHolder.id = \"canvasHolder\";\n holder.id = \"chartCopyHolder\";\n document.getElementById(\"aculistWidgetRoot\").querySelector('.markettrends').appendChild(holder);\n document.getElementById(\"aculistWidgetRoot\").querySelector('.markettrends').appendChild(canvasHolder);\n if (!Element.prototype.matches) Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n if (!Element.prototype.closest) Element.prototype.closest = function (s) {\n var el = this;\n if (!document.documentElement.contains(el)) return null;\n do {\n if (el.matches(s)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n var svg = document.getElementById(target.dataset.id).closest('.titleChartHolder');\n var cln = svg.cloneNode(true);\n document.getElementById(\"chartCopyHolder\").appendChild(cln);\n\n setInlineStyles(document.getElementById('chartCopyHolder').getElementsByTagName('svg')[0], emptySvgDeclarationComputed);\n\n (0, _localHtml2Canvas2.default)(document.getElementById('chartCopyHolder'), {\n canvas: document.getElementById('canvasHolder'),\n logging: false,\n width: document.getElementById('chartCopyHolder').clientWidth + 10\n }).then(function (canvas) {\n function convertCanvasToImage(canvas) {\n var image = new Image();\n image.src = canvas.toDataURL(\"image/png\");\n image.crossOrigin = \"anonymous\";\n return image;\n }\n\n var image = convertCanvasToImage(document.getElementById('canvasHolder'));\n __webpack_require__(108)(image.src, target.dataset.ctitle.replace(/\\s/g, ''), \"image/png\");\n\n document.getElementById(\"aculistWidgetRoot\").querySelector('.markettrends').removeChild(holder);\n document.getElementById(\"aculistWidgetRoot\").querySelector('.markettrends').removeChild(canvasHolder);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n\n var logoStyles = {\n height: '16px',\n width: '72px',\n background: \"url(\" + logo + \")\"\n };\n\n if (!_.isUndefined(this.props.data)) {\n\n // Internet Explorer 6-11\n var isIE = /*@cc_on!@*/false || !!document.documentMode;\n var MTitle = this.props.widgetselections.measure.split(\",\")[1] === undefined ? _labels.labels[this.props.widgetselections.measure.split(\",\")[0]] : _labels.labels[this.props.widgetselections.measure.split(\",\")[0]].toLowerCase().indexOf('price') >= 0 && _labels.labels[this.props.widgetselections.measure.split(\",\")[1]].toLowerCase().indexOf('price') >= 1 ? \"Average & Median Pricing Trends\" : \" & \" + _labels.labels[this.props.widgetselections.measure.split(\",\")[1]];\n\n var baseTitle = MTitle + ' ' + ' - ' + decodeURIComponent(this.props.widgetselections.geo[0].split(\":\")[1] + ' ' + this.props.widgetselections.geo[0].split(\":\")[0]);\n // let baseTitle=labels[this.props.widgetselections.measure.split(\",\")[0]] +' '+ M2Title \n var periodTitle = this.props.data[this.props.data.length - 1].Year + ' - ' + this.props.data[0].Year + ' (by ' + this.props.widgetselections.periodtype + ')';\n\n var areaTitle = typeof this.props.data === 'undefined' ? \"\" : this.props.data.length == 0 ? '' : this.props.widgetselections.geo[0].split(\":\")[0] == \"Area\" && this.props.data[0].AreaId != null ? \"(MLS AREA\" + this.props.data[0].AreaId + \")\" : \"\";\n return _react2.default.createElement(\n \"div\",\n { className: \"titleChartHolder\" },\n _react2.default.createElement(\n \"div\",\n { className: \"chartTitle \" + (this.props.widgetselections.title === 'false' ? \"hidden\" : \"\") },\n _react2.default.createElement(\n \"h3\",\n { className: \"title\" },\n \" \",\n baseTitle + areaTitle\n ),\n _react2.default.createElement(\n \"h3\",\n { className: \"subtitle\" },\n \" \",\n periodTitle,\n \" \"\n )\n ),\n _react2.default.createElement(\n \"div\",\n { key: (0, _uniqueId2.default)(\"marketTrendsChart-\"), className: \"section_container\" },\n _react2.default.createElement(\"img\", { src: download, className: \"copybtn \" + (this.state.copyInProgress === true || isIE ? \"hidden\" : \"\"), onClick: this.copyChart, \"data-id\": this.props.id, \"data-ctitle\": baseTitle + areaTitle }),\n _react2.default.createElement(Chart, _extends({}, this.props, {\n id: this.props.id,\n data1: this.props.data,\n widgetselections: this.props.widgetselections,\n chartType: this.state.chartType\n })),\n _react2.default.createElement(\n \"div\",\n { className: \"chartOptionsRow\" },\n _react2.default.createElement(\n \"span\",\n { className: \"d-block attribution-holder clearfix pos-relative\" },\n _react2.default.createElement(\n \"span\",\n { className: \"d-inline-block attribution-label\" },\n \"Powered by:\"\n ),\n _react2.default.createElement(\n \"a\",\n {\n href: \"http://aculist.com/\",\n target: \"_blank\",\n className: \"attribution-img\" },\n _react2.default.createElement(\"span\", { className: \"d-inline-block logoclass\", style: logoStyles })\n )\n )\n )\n )\n );\n } else {\n return null;\n }\n }\n }]);\n\n return MarketTrends;\n}(_react.Component);\n\nexports.default = MarketTrends;\n\nvar Chart = function (_React$Component) {\n _inherits(Chart, _React$Component);\n\n function Chart() {\n _classCallCheck(this, Chart);\n\n return _possibleConstructorReturn(this, (Chart.__proto__ || Object.getPrototypeOf(Chart)).apply(this, arguments));\n }\n\n _createClass(Chart, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n\n if (this.props.widgetselections.measure.split(\",\").length == 1) {\n this._updateSingleAxesChart(this.props.data1, this.props.widgetselections, this.props.assets);\n } else this._updateChart(this.props.data1, this.props.widgetselections, this.props.assets);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n\n if (this.props.widgetselections.measure.split(\",\").length == 1) {\n this._updateSingleAxesChart(this.props.data1, this.props.widgetselections, this.props.assets);\n } else this._updateChart(this.props.data1, this.props.widgetselections, this.props.assets);\n }\n }, {\n key: \"_updateChart\",\n value: function _updateChart(data1, ws, assets) {\n var measurearray = ws.measure.split(\",\");\n var masterarray = [];\n var periodarray = [];\n\n var SFarrayM1 = [\"SFHM1\"];\n var CIarrayM1 = [\"C/TM1\"];\n var SFarrayM2 = [\"SFHM2\"];\n var CIarrayM2 = [\"C/TM2\"];\n\n var periodarrayasc = [];\n var periodarrayformatted = [\"Period\"];\n\n data1.forEach(function (record) {\n if (periodarrayasc.indexOf(record.Period) === -1) {\n periodarrayasc.push(record.Period);\n }\n });\n periodarrayasc.reverse().forEach(function (x) {\n periodarray.push(x);\n });\n\n periodarray.forEach(function (periodrecord) {\n var filtereddata1 = data1.filter(function (rec) {\n return rec.Period === periodrecord;\n });\n\n filtereddata1.forEach(function (record) {\n if (filtereddata1.length == 2) {\n record.Class.toLowerCase() == \"residential - single family\" ? SFarrayM1.push(record[measurearray[0].toString()]) && SFarrayM2.push(record[measurearray[1].toString()]) : record.Class.toLowerCase() == \"residential - common interest\"\n // ? record[measurearray[0].toString()]==null?CIarrayM1.push('0') : CIarrayM1.push(record[measurearray[0].toString()]) &&\n // record[measurearray[1].toString()]==null?CIarrayM2.push('0') : CIarrayM2.push(record[measurearray[1].toString()])\n ? CIarrayM1.push(record[measurearray[0].toString()] == null ? 0 : record[measurearray[0].toString()]) && CIarrayM2.push(record[measurearray[1].toString()] == null ? 0 : record[measurearray[1].toString()])\n // ? CIarrayM1.push(record[measurearray[0].toString()]) && CIarrayM2.push(record[measurearray[1].toString()])\n : \"\";\n } else {\n\n record.Class.toLowerCase() == \"residential - single family\" ? SFarrayM1.push(record[measurearray[0].toString()]) && SFarrayM2.push(record[measurearray[1].toString()]) && CIarrayM1.push(null) && CIarrayM2.push(null) : record.Class.toLowerCase() == \"residential - common interest\" ? CIarrayM1.push(record[measurearray[0].toString()]) && CIarrayM2.push(record[measurearray[1].toString()]) && SFarrayM1.push(null) && SFarrayM2.push(null) : \"\";\n }\n });\n });\n\n if (ws.periodtype.toLowerCase() == \"month\") {\n var monthnames = {\n \"01\": \"Jan\",\n \"02\": \"Feb\",\n \"03\": \"Mar\",\n \"04\": \"Apr\",\n \"05\": \"May\",\n \"06\": \"Jun\",\n \"07\": \"Jul\",\n \"08\": \"Aug\",\n \"09\": \"Sep\",\n \"10\": \"Oct\",\n \"11\": \"Nov\",\n \"12\": \"Dec\"\n };\n periodarray.forEach(function (periodraw) {\n periodarrayformatted.push(monthnames[periodraw.substring(5)] + \" \" + periodraw.substring(2, 4));\n });\n } else if (ws.periodtype.toLowerCase() == \"quarter\") {\n periodarray.forEach(function (periodraw) {\n /* periodarrayformatted.push(\n periodraw.substring(4, 6) + \" \" + periodraw.substring(2, 4)\n ); */\n periodarrayformatted.push(periodraw);\n });\n } else {\n periodarray.forEach(function (periodrecord) {\n periodarrayformatted.push(periodrecord);\n });\n }\n\n masterarray.push(periodarrayformatted);\n\n if (this.props.widgetselections.classtype.split(',').length == 2) {\n SFarrayM1.length > 1 ? masterarray.push(SFarrayM1) : \"\";\n CIarrayM1.length > 1 ? masterarray.push(CIarrayM1) : \"\";\n SFarrayM2.length > 1 ? masterarray.push(SFarrayM2) : \"\";\n CIarrayM2.length > 1 ? masterarray.push(CIarrayM2) : \"\";\n } else if (this.props.widgetselections.classtype.indexOf('Single Family') >= 0) {\n SFarrayM1.length > 1 ? masterarray.push(SFarrayM1) : \"\";\n SFarrayM2.length > 1 ? masterarray.push(SFarrayM2) : \"\";\n } else if (this.props.widgetselections.classtype.indexOf('Common Interest') >= 0) {\n CIarrayM1.length > 1 ? masterarray.push(CIarrayM1) : \"\";\n CIarrayM2.length > 1 ? masterarray.push(CIarrayM2) : \"\";\n }\n\n var defaultcolors = [\"RGB(0,130,202)\", \"RGB(246,178,33)\", \"RGB(255,102,0)\", \"RGB(28,63,148)\"];\n //let defaultcolors=[ 'RGB(126,159,26)', 'RGB(230,145,56)','RGB(0,0,0)', 'RGB(255,217,102)']\n var preferredcolors = [];\n // assets\n // .filter(\n // prefrow =>\n // prefrow.AttributeKey.toLowerCase().includes(\"vprimcolor\") ||\n // prefrow.AttributeKey.toLowerCase().includes(\"vseccolor\")\n // )\n // .forEach(function(pref) {\n // preferredcolors.push(pref.AttributeValue);\n // });\n // defaultcolors.forEach(function(defcol) {\n // if (!preferredcolors.includes(defcol)) {\n // preferredcolors.push(defcol);\n // }\n // });\n _c2.default.chart.internal.fn.getHorizontalAxisHeight = function (axisId) {\n var $$ = this,\n config = $$.config,\n h = 30;\n if (axisId === 'x' && !config.axis_x_show) {\n return 8;\n }\n if (axisId === 'x' && config.axis_x_height) {\n return config.axis_x_height;\n }\n if (axisId === 'y' && !config.axis_y_show) {\n return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1;\n }\n if (axisId === 'y2' && !config.axis_y2_show) {\n return $$.rotated_padding_top;\n }\n // Calculate x axis height when tick rotated\n if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_x_tick_rotate)) / 180);\n }\n // Calculate y axis height when tick rotated\n if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_y_tick_rotate)) / 180);\n }\n return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n };\n\n var chart = _c2.default.generate({\n // padding: { top: 50, left: 50, bottom: 20 },\n bindto: \"#\" + this.props.id,\n position: \"inset\",\n // padding: {\n // top: 40\n // },\n\n data: {\n types: {\n SFHM2: \"line\",\n \"C/TM2\": \"line\",\n SFHM1: \"line\",\n \"C/TM1\": \"line\"\n },\n x: \"Period\",\n columns: masterarray,\n axes: {\n SFHM2: \"y\",\n \"C/TM2\": \"y\",\n SFHM1: \"y\",\n \"C/TM1\": \"y\"\n },\n labels: \"true\",\n names: {\n SFHM1: \"Single Family Home \" + _labels.legendlabels[measurearray[0]],\n \"C/TM1\": \"Condo/Townhome \" + _labels.legendlabels[measurearray[0]],\n SFHM2: \"Single Family Home \" + _labels.legendlabels[measurearray[1]],\n \"C/TM2\": \"Condo/Townhome \" + _labels.legendlabels[measurearray[1]]\n }\n },\n point: {\n r: 0\n },\n color: {\n pattern: [\"RGB(28,63,148)\", \"RGB(255,102,0)\", \"RGB(0,130,202)\", \"RGB(246,178,33)\"]\n },\n axis: {\n // y2: {\n // // padding:10,\n // tick: {\n // outer: false,\n // format:\n // measurearray[1].toLowerCase().includes(\"over\") \n // ? d3format.format(\".0%\") :measurearray[1].toLowerCase().includes(\"count\") \n // ? d3format.format(',')\n // :measurearray[1].toLowerCase().includes(\"price\") ?d3format.format(\"$,\")\n // :\"\"\n // },\n // show: true,\n // label: {\n // text: labels[measurearray[1]],\n // position: \"outer-middle\"\n // }\n // },\n y: {\n\n // padding:50,\n tick: {\n outer: false,\n format: measurearray[0].toLowerCase().indexOf(\"over\") >= 0 ? d3format.format(\".0%\") : measurearray[0].toLowerCase().indexOf(\"price\") >= 0 ? d3format.format(\"$,\") : measurearray[0].toLowerCase().indexOf(\"monthstosell\") >= 0 ? d3format.format(\".1f\") : \"\"\n }\n // label: {\n // text: labels[measurearray[0]],\n // position: \"outer-middle\"\n // }\n },\n x: {\n tick: {\n // type: 'timeseries',\n multiline: false,\n outer: false,\n // values: [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,64,128], \n culling: {\n max: 40\n },\n rotate: -45\n },\n //height:500, \n type: \"category\"\n\n }\n },\n grid: {\n y: {\n show: true\n }\n },\n\n zoom: {\n enabled: false\n },\n bar: {\n space: 0.1,\n width: {}\n // ratio: 0.5,// this makes bar width 50% of length between ticks\n\n //space:.25\n // or\n //width: 100 // this makes bar width 100px\n }\n });\n }\n }, {\n key: \"_updateSingleAxesChart\",\n value: function _updateSingleAxesChart(data1, ws, assets) {\n var measurearray = ws.measure.split(\",\");\n var masterarray = [];\n var periodarray = [];\n\n var SFarrayM1 = [\"SFHM1\"];\n var CIarrayM1 = [\"C/TM1\"];\n\n var periodarrayasc = [];\n var periodarrayformatted = [\"Period\"];\n var percentsp = [];\n data1.forEach(function (record) {\n if (Number(record.AvgSaleOverListPrice) != 0 && Number(record.AvgSaleOverListPrice) < 1.3) {\n percentsp.push(Number(record.AvgSaleOverListPrice));\n }\n if (periodarrayasc.indexOf(record.Period) === -1) {\n periodarrayasc.push(record.Period);\n }\n });\n periodarrayasc.reverse().forEach(function (x) {\n periodarray.push(x);\n });\n\n periodarray.forEach(function (periodrecord) {\n var filtereddata1 = data1.filter(function (rec) {\n return rec.Period === periodrecord;\n });\n\n filtereddata1.forEach(function (record) {\n if (filtereddata1.length == 2) {\n record.Class.toLowerCase() == \"residential - single family\" ? SFarrayM1.push(record[measurearray[0].toString()]) : record.Class.toLowerCase() == \"residential - common interest\" ? CIarrayM1.push(record[measurearray[0].toString()] == null ? 0 : record[measurearray[0].toString()]) : \"\";\n } else {\n record.Class.toLowerCase() == \"residential - single family\" ? SFarrayM1.push(record[measurearray[0].toString()]) && CIarrayM1.push(null) : record.Class.toLowerCase() == \"residential - common interest\" ? CIarrayM1.push(record[measurearray[0].toString()]) && SFarrayM1.push(null) : \"\";\n }\n });\n });\n\n var ct = \"bar\";\n if (ws.periodtype.toLowerCase() == \"month\") {\n ct = \"line\";\n\n var monthnames = {\n \"01\": \"Jan\",\n \"02\": \"Feb\",\n \"03\": \"Mar\",\n \"04\": \"Apr\",\n \"05\": \"May\",\n \"06\": \"Jun\",\n \"07\": \"Jul\",\n \"08\": \"Aug\",\n \"09\": \"Sep\",\n \"10\": \"Oct\",\n \"11\": \"Nov\",\n \"12\": \"Dec\"\n };\n periodarray.forEach(function (periodraw) {\n periodarrayformatted.push(monthnames[periodraw.substring(5)] + \" \" + periodraw.substring(2, 4));\n });\n } else if (ws.periodtype.toLowerCase() == \"quarter\") {\n ct = \"area\";\n if (ws.measure.toLowerCase().indexOf(\"monthstosell\") >= 0 || ws.measure.toLowerCase().indexOf(\"over\") >= 0 || ws.measure.toLowerCase().indexOf(\"dom\") >= 0) {\n ct = \"line\";\n }\n\n periodarray.forEach(function (periodraw) {\n periodarrayformatted.push(periodraw);\n });\n } else {\n periodarray.forEach(function (periodrecord) {\n periodarrayformatted.push(periodrecord);\n });\n }\n\n masterarray.push(periodarrayformatted);\n\n if (this.props.widgetselections.classtype.split(',').length == 2) {\n SFarrayM1.length > 1 ? masterarray.push(SFarrayM1) : \"\";\n CIarrayM1.length > 1 ? masterarray.push(CIarrayM1) : \"\";\n } else if (this.props.widgetselections.classtype.indexOf('Single Family') >= 0) {\n SFarrayM1.length > 1 ? masterarray.push(SFarrayM1) : \"\";\n } else if (this.props.widgetselections.classtype.indexOf('Common Interest') >= 0) {\n CIarrayM1.length > 1 ? masterarray.push(CIarrayM1) : \"\";\n }\n\n var defaultcolors = [\"RGB(0,130,202)\", \"RGB(246,178,33)\", \"RGB(255,102,0)\", \"RGB(28,63,148)\"];\n var mpcolors = [\"RGB(28,63,148)\", \"RGB(255,102,0)\"];\n //let defaultcolors=[ 'RGB(126,159,26)', 'RGB(230,145,56)','RGB(0,0,0)', 'RGB(255,217,102)']\n var preferredcolors = [];\n\n // assets\n // .filter(\n // prefrow =>\n // prefrow.AttributeKey.toLowerCase().includes(\"vprimcolor\") ||\n // prefrow.AttributeKey.toLowerCase().includes(\"vseccolor\")\n // )\n // .forEach(function(pref) {\n // preferredcolors.push(pref.AttributeValue);\n // });\n // defaultcolors.forEach(function(defcol) {\n // if (!preferredcolors.includes(defcol)) {\n // preferredcolors.push(defcol);\n // }\n // });\n _c2.default.chart.internal.fn.getHorizontalAxisHeight = function (axisId) {\n var $$ = this,\n config = $$.config,\n h = 30;\n if (axisId === 'x' && !config.axis_x_show) {\n return 8;\n }\n if (axisId === 'x' && config.axis_x_height) {\n return config.axis_x_height;\n }\n if (axisId === 'y' && !config.axis_y_show) {\n return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1;\n }\n if (axisId === 'y2' && !config.axis_y2_show) {\n return $$.rotated_padding_top;\n }\n // Calculate x axis height when tick rotated\n if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_x_tick_rotate)) / 180);\n }\n // Calculate y axis height when tick rotated\n if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_y_tick_rotate)) / 180);\n }\n return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n };\n\n var chart = _c2.default.generate({\n // padding: { top: 50, left: 50, bottom: 20 },\n bindto: \"#\" + this.props.id,\n position: \"inset\",\n // padding: {\n // top: 40\n // },\n\n data: {\n types: {\n SFHM1: ct,\n \"C/TM1\": ct\n },\n x: \"Period\",\n columns: masterarray,\n axes: {\n SFHM1: \"y\",\n \"C/TM1\": \"y\"\n },\n labels: \"true\",\n names: {\n SFHM1: \"Single Family Home \" + _labels.legendlabels[measurearray[0]],\n \"C/TM1\": \"Condo/Townhome \" + _labels.legendlabels[measurearray[0]]\n\n }\n },\n point: {\n r: 0\n },\n color: {\n pattern: measurearray[0].toLowerCase().indexOf(\"medsaleprice\") >= 0 ? mpcolors : defaultcolors\n },\n axis: {\n y: {\n // padding:50,\n tick: {\n outer: false,\n format: measurearray[0].toLowerCase().indexOf(\"over\") >= 0 ? d3format.format(\".0%\") : measurearray[0].toLowerCase().indexOf(\"price\") >= 0 || measurearray[0] == \"SaleVolume\" ? d3format.format(\"$,\") : measurearray[0].toLowerCase().indexOf(\"count\") >= 0 ? d3format.format(',') : measurearray[0].toLowerCase().indexOf(\"monthstosell\") >= 0 ? d3format.format(\".1f\") : \"\"\n\n //values:measurearray[0].toLowerCase().includes(\"over\")?[.95,.96,.96,.97,.98,.99,1.00,1.01,1.02,1.03,1.04,1.05]:'',\n },\n max: measurearray[0].toLowerCase().indexOf(\"over\") >= 0 ? Math.max.apply(Math, percentsp) : '',\n min: measurearray[0].toLowerCase().indexOf(\"over\") >= 0 ? Math.min.apply(Math, percentsp) : '',\n // max: measurearray[0].toLowerCase().includes(\"over\")?1.2:'',\n // min: measurearray[0].toLowerCase().includes(\"over\")?.95:'',\n padding: { top: 0, bottom: 0 },\n label: {\n text: _labels.labels[measurearray[0]],\n position: \"outer-middle\"\n }\n },\n x: {\n tick: _defineProperty({\n // type: 'timeseries',\n multiline: false,\n outer: false,\n // values: [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,64,128], \n culling: false,\n rotate: -45\n }, \"culling\", {\n max: 40\n }),\n //height:500, \n type: \"category\"\n\n }\n },\n grid: {\n // focus:{show:true},\n y: {\n show: true\n }\n },\n\n zoom: {\n enabled: false\n },\n bar: {\n space: 0.1,\n width: {}\n // ratio: 0.5,// this makes bar width 50% of length between ticks\n\n //space:.25\n // or\n //width: 100 // this makes bar width 100px\n }\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\n \"div\",\n { id: this.props.id, className: this.props.chartclasses },\n \"Error\"\n );\n }\n }]);\n\n return Chart;\n}(_react2.default.Component);\n\n//export default MarketTrends;\n\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n//download.js v4.2, by dandavis; 2008-2016. [MIT] see http://danml.com/download.html for tests/usage\n// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime\n// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs\n// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling.\n// v4 adds AMD/UMD, commonJS, and plain browser support\n// v4.1 adds url download capability via solo URL argument (same domain/CORS only)\n// v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors\n// https://github.com/rndme/download\n\n(function (root, factory) {\n\tif (true) {\n\t\t// AMD. Register as an anonymous module.\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object') {\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like environments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// Browser globals (root is window)\n\t\troot.download = factory();\n\t}\n})(undefined, function () {\n\n\treturn function download(data, strFileName, strMimeType) {\n\n\t\tvar self = window,\n\t\t // this script is only for browsers anyway...\n\t\tdefaultMime = \"application/octet-stream\",\n\t\t // this default mime also triggers iframe downloads\n\t\tmimeType = strMimeType || defaultMime,\n\t\t payload = data,\n\t\t url = !strFileName && !strMimeType && payload,\n\t\t anchor = document.createElement(\"a\"),\n\t\t toString = function toString(a) {\n\t\t\treturn String(a);\n\t\t},\n\t\t myBlob = self.Blob || self.MozBlob || self.WebKitBlob || toString,\n\t\t fileName = strFileName || \"download\",\n\t\t blob,\n\t\t reader;\n\t\tmyBlob = myBlob.call ? myBlob.bind(self) : Blob;\n\n\t\tif (String(this) === \"true\") {\n\t\t\t//reverse arguments, allowing download.bind(true, \"text/xml\", \"export.xml\") to act as a callback\n\t\t\tpayload = [payload, mimeType];\n\t\t\tmimeType = payload[0];\n\t\t\tpayload = payload[1];\n\t\t}\n\n\t\tif (url && url.length < 2048) {\n\t\t\t// if no filename and no mime, assume a url was passed as the only argument\n\t\t\tfileName = url.split(\"/\").pop().split(\"?\")[0];\n\t\t\tanchor.href = url; // assign href prop to temp anchor\n\t\t\tif (anchor.href.indexOf(url) !== -1) {\n\t\t\t\t// if the browser determines that it's a potentially valid url path:\n\t\t\t\tvar ajax = new XMLHttpRequest();\n\t\t\t\tajax.open(\"GET\", url, true);\n\t\t\t\tajax.responseType = 'blob';\n\t\t\t\tajax.onload = function (e) {\n\t\t\t\t\tdownload(e.target.response, fileName, defaultMime);\n\t\t\t\t};\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tajax.send();\n\t\t\t\t}, 0); // allows setting custom ajax headers using the return:\n\t\t\t\treturn ajax;\n\t\t\t} // end if valid url?\n\t\t} // end if url?\n\n\n\t\t//go ahead and download dataURLs right away\n\t\tif (/^data:([\\w+-]+\\/[\\w+.-]+)?[,;]/.test(payload)) {\n\n\t\t\tif (payload.length > 1024 * 1024 * 1.999 && myBlob !== toString) {\n\t\t\t\tpayload = dataUrlToBlob(payload);\n\t\t\t\tmimeType = payload.type || defaultMime;\n\t\t\t} else {\n\t\t\t\treturn navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs:\n\t\t\t\tnavigator.msSaveBlob(dataUrlToBlob(payload), fileName) : saver(payload); // everyone else can save dataURLs un-processed\n\t\t\t}\n\t\t} else {\n\t\t\t//not data url, is it a string with special needs?\n\t\t\tif (/([\\x80-\\xff])/.test(payload)) {\n\t\t\t\tvar i = 0,\n\t\t\t\t tempUiArr = new Uint8Array(payload.length),\n\t\t\t\t mx = tempUiArr.length;\n\t\t\t\tfor (i; i < mx; ++i) {\n\t\t\t\t\ttempUiArr[i] = payload.charCodeAt(i);\n\t\t\t\t}payload = new myBlob([tempUiArr], { type: mimeType });\n\t\t\t}\n\t\t}\n\t\tblob = payload instanceof myBlob ? payload : new myBlob([payload], { type: mimeType });\n\n\t\tfunction dataUrlToBlob(strUrl) {\n\t\t\tvar parts = strUrl.split(/[:;,]/),\n\t\t\t type = parts[1],\n\t\t\t decoder = parts[2] == \"base64\" ? atob : decodeURIComponent,\n\t\t\t binData = decoder(parts.pop()),\n\t\t\t mx = binData.length,\n\t\t\t i = 0,\n\t\t\t uiArr = new Uint8Array(mx);\n\n\t\t\tfor (i; i < mx; ++i) {\n\t\t\t\tuiArr[i] = binData.charCodeAt(i);\n\t\t\t}return new myBlob([uiArr], { type: type });\n\t\t}\n\n\t\tfunction saver(url, winMode) {\n\n\t\t\tif ('download' in anchor) {\n\t\t\t\t//html5 A[download]\n\t\t\t\tanchor.href = url;\n\t\t\t\tanchor.setAttribute(\"download\", fileName);\n\t\t\t\tanchor.className = \"download-js-link\";\n\t\t\t\tanchor.innerHTML = \"downloading...\";\n\t\t\t\tanchor.style.display = \"none\";\n\t\t\t\tdocument.body.appendChild(anchor);\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tanchor.click();\n\t\t\t\t\tdocument.body.removeChild(anchor);\n\t\t\t\t\tif (winMode === true) {\n\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\tself.URL.revokeObjectURL(anchor.href);\n\t\t\t\t\t\t}, 250);\n\t\t\t\t\t}\n\t\t\t\t}, 66);\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// handle non-a[download] safari as best we can:\n\t\t\tif (/(Version)\\/(\\d+)\\.(\\d+)(?:\\.(\\d+))?.*Safari\\//.test(navigator.userAgent)) {\n\t\t\t\tif (/^data:/.test(url)) url = \"data:\" + url.replace(/^data:([\\w\\/\\-\\+]+)/, defaultMime);\n\t\t\t\tif (!window.open(url)) {\n\t\t\t\t\t// popup blocked, offer direct download:\n\t\t\t\t\tif (confirm(\"Displaying New Document\\n\\nUse Save As... to download, then click back to return to this page.\")) {\n\t\t\t\t\t\tlocation.href = url;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t//do iframe dataURL download (old ch+FF):\n\t\t\tvar f = document.createElement(\"iframe\");\n\t\t\tdocument.body.appendChild(f);\n\n\t\t\tif (!winMode && /^data:/.test(url)) {\n\t\t\t\t// force a mime that will download:\n\t\t\t\turl = \"data:\" + url.replace(/^data:([\\w\\/\\-\\+]+)/, defaultMime);\n\t\t\t}\n\t\t\tf.src = url;\n\t\t\tsetTimeout(function () {\n\t\t\t\tdocument.body.removeChild(f);\n\t\t\t}, 333);\n\t\t} //end saver\n\n\n\t\tif (navigator.msSaveBlob) {\n\t\t\t// IE10+ : (has Blob, but not a[download] or URL)\n\t\t\treturn navigator.msSaveBlob(blob, fileName);\n\t\t}\n\n\t\tif (self.URL) {\n\t\t\t// simple fast and modern way using Blob and URL:\n\t\t\tsaver(self.URL.createObjectURL(blob), true);\n\t\t} else {\n\t\t\t// handle non-Blob()+non-URL browsers:\n\t\t\tif (typeof blob === \"string\" || blob.constructor === toString) {\n\t\t\t\ttry {\n\t\t\t\t\treturn saver(\"data:\" + mimeType + \";base64,\" + self.btoa(blob));\n\t\t\t\t} catch (y) {\n\t\t\t\t\treturn saver(\"data:\" + mimeType + \",\" + encodeURIComponent(blob));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Blob but not URL support:\n\t\t\treader = new FileReader();\n\t\t\treader.onload = function (e) {\n\t\t\t\tsaver(this.result);\n\t\t\t};\n\t\t\treader.readAsDataURL(blob);\n\t\t}\n\t\treturn true;\n\t}; /* end download() */\n});\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(12);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactMlsdata = __webpack_require__(113);\n\nvar _widgetresidential = __webpack_require__(114);\n\nvar _widgetresidential2 = _interopRequireDefault(_widgetresidential);\n\nvar _lodash = __webpack_require__(186);\n\n__webpack_require__(101);\n\n__webpack_require__(102);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MTWidget = function (_Component) {\n _inherits(MTWidget, _Component);\n\n function MTWidget(props) {\n _classCallCheck(this, MTWidget);\n\n return _possibleConstructorReturn(this, (MTWidget.__proto__ || Object.getPrototypeOf(MTWidget)).call(this, props));\n }\n\n _createClass(MTWidget, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var filter,\n orderBy = '';\n\n var _props = _extends({}, this.props),\n assets = _props.assets,\n widgetselections = _props.widgetselections;\n // const Children = this.props.children;\n\n\n var _widgetselections = _extends({}, widgetselections),\n measure = _widgetselections.measure,\n period = _widgetselections.period,\n periodtype = _widgetselections.periodtype,\n geo = _widgetselections.geo,\n classtype = _widgetselections.classtype;\n\n var cdate = new Date();\n\n // window.userpreferStore = assets;\n\n var geofilter = [];\n geo.forEach(function (geo) {\n var g1 = geo.split(':')[0];\n var g2 = geo.split(':')[1];\n\n //Changes to accomodate the AreaID search\n var geoquery = g1.toLowerCase() == 'area' && !isNaN(g2) ? { and: [{ GeographyType: \"\" + g1 }, { AreaId: Number(g2) }] } : { and: [{ GeographyType: \"\" + g1 }, { GeographyName: \"\" + encodeURIComponent(g2) }] };\n //let geoquery={ and: [{ GeographyType: `${g1}` }, { GeographyName: `${encodeURIComponent(g2)}` }] }\n geofilter.push(geoquery);\n });\n\n var classtypefilter = classtype.split(',');\n\n if (periodtype.toLowerCase() == 'year') {\n var setperiod = cdate.getFullYear() - period + 1;\n filter = { and: [[{ Class: { 'in': classtypefilter } }], { PeriodType: periodtype }, { Period: { ge: \"\" + setperiod } }, { or: geofilter }] };\n } else if (periodtype.toLowerCase() == 'month') {\n var months = [];\n var monthnames = { 0: '01', 1: '02', 2: '03', 3: '04', 4: '05', 5: '06', 6: '07', 7: '08', 8: '09', 9: '10', 10: '11', 11: '12' };\n for (var i = 0; i < period; i++) {\n months.push(cdate.getFullYear() + '-' + monthnames[cdate.getMonth()]);\n cdate.setMonth(cdate.getMonth() - 1);\n }\n\n // const startDate = new Date('2016-04-01') ;\n // const endDate = new Date('2018-02-01') ; \n\n var startDate = new Date(months[months.length - 1] + \"-01\");\n var endDate = new Date(months[0] + \"-01\");\n // filter ={and:[[{Class : {'in':classtypefilter}}],{PeriodType : periodtype},[{Period: {'in': months}}], { or: geofilter } ]} ; \n filter = cdate.getDay() < 15 ? { and: [[{ Class: { 'in': classtypefilter } }], { PeriodType: periodtype }, [{ DateValue: { ge: startDate, lt: endDate } }], { or: geofilter }] } : { and: [[{ Class: { 'in': classtypefilter } }], { PeriodType: periodtype }, [{ DateValue: { ge: startDate, le: endDate } }], { or: geofilter }] };\n } else if (periodtype.toLowerCase() == 'quarter') {\n // var thisYear = cdate.getFullYear();\n // var quarterStart = Math.ceil((cdate.getMonth() + 1) / 3);\n // var quarters = []; \n // for (var i = 0; i < period; i++) {\n // quarters.push(thisYear+'Q' + quarterStart );\n // quarterStart--;\n // if (quarterStart <= 0) {\n // thisYear--;\n // quarterStart = 4;\n // };\n\n // filter ={and:[[{Class : {'in':classtypefilter}}],{PeriodType : periodtype},[{Period: {'in': quarters}}], { or: geofilter } ]} ; \n // filter ={and:[{GeographyType: `${geographytype}`}, { GeographyName:`${geographyvalue}`},{Class : 'Residential'},{PeriodType : periodtype},[{Period: {'in': quarters}}]] } ; \n filter = { and: [[{ Class: { 'in': classtypefilter } }], { PeriodType: periodtype }, [{ Year: { gt: 2001 } }], { or: geofilter }] };\n\n // }\n }\n\n orderBy = ['PeriodValue' + ' desc'];\n\n var chart_id = 'chart_' + _.uniqueId();\n\n var widget = _.isEmpty(period) ? null : _react2.default.createElement(\n _reactMlsdata.MLSStats,\n { collection: \"MarketTrendsYTDExpanded_KPI\", filter: filter, orderBy: orderBy },\n function (_ref) {\n var loading = _ref.loading,\n error = _ref.error,\n data = _ref.data;\n return _react2.default.createElement(\n \"div\",\n { className: \"markettrends \" + (loading ? \"loading\" : \"\") },\n loading && _react2.default.createElement(\n \"div\",\n { className: \"loader msg pos-absolute\" },\n \"Loading...\"\n ),\n error && _react2.default.createElement(\n \"h2\",\n null,\n console.log(\"\" + error),\n \"System error in widgets. Please contact system administrator.\"\n ),\n data && _react2.default.createElement(\n \"div\",\n { className: \"\" + (loading ? \"hidden\" : \"\") },\n _react2.default.createElement(_widgetresidential2.default, _extends({}, _this2.props, { widgetselections: widgetselections, data: data.value }))\n )\n );\n }\n );\n\n return _react2.default.createElement(\n \"div\",\n null,\n \" \",\n widget,\n \" \"\n );\n }\n }]);\n\n return MTWidget;\n}(_react.Component);\n\nexports.default = MTWidget;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _react = __webpack_require__(12);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(106);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _WidgetSelection = __webpack_require__(105);\n\nvar _WidgetSelection2 = _interopRequireDefault(_WidgetSelection);\n\nvar _promisePolyfill = __webpack_require__(19);\n\nvar _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nif (!window.Promise) {\n window.Promise = _promisePolyfill2.default;\n console.log('ie');\n}\n\n_reactDom2.default.render(_react2.default.createElement(_WidgetSelection2.default, null), document.getElementById('aculistWidgetRoot'));\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar labels = exports.labels = {\n MedSalePrice: \"Median Price Trend\",\n SoldCount: \"Closed Sales Trend\",\n SoldAvgDOM: \"Days on Market Trend\",\n SoldMedDOM: \"Median Days on Market Trend\",\n AvgSalePricePerSqft: \"Price per Square Foot\",\n SaleVolume: \"Sales Volume\",\n AvgSaleOverListPrice: \"% Sale Price vs List Price Trend\",\n ActiveCount: \"ActiveCount\",\n ContingentCount: \"ContingentCount\",\n PendingCount: \"PendingCount\",\n ActiveAvgDOM: \"ActiveAvgDOM\",\n ActiveMedDOM: \"ActiveMedDOM\",\n InventoryCount: \"Inventory Trend\",\n InventoryAvgDOM: \"InventoryAvgDOM\",\n InventoryAvgListPrice: \"InventoryAvgListPrice\",\n NewListingsCount: \"NewListingsCount\",\n NewListingsAvgListPrice: \"NewListingsAvgListPrice\",\n UnderContractCount: \"UnderContractCount\",\n UnderContractAvgDOM: \"UnderContractAvgDOM\",\n UnderContractAvgListPrice: \"UnderContractAvgListPrice\",\n ActiveAvgListPrice: \"ActiveAvgListPrice\",\n ActiveAvgListPricePerSqft: \"ActiveAvgListPricePerSqft\",\n ActiveAvgOriginalPrice: \"ActiveAvgOriginalPrice\",\n ActiveMedListPrice: \"ActiveMedListPrice\",\n ActiveMedListPricePerSqft: \"ActiveMedListPricePerSqft\",\n SoldAvgListPrice: \"SoldAvgListPrice\",\n SoldMedListPrice: \"SoldMedListPrice\",\n AvgSalePrice: \"Average Price Trend\",\n AvgSaleOverOriginalPrice: \"AvgSaleOverOriginalPrice\",\n MedSalePricePerSqft: \"MedSalePricePerSqft\",\n AvgMonthsToSell: \"Months to Sell Trend\"\n\n};\n\nvar legendlabels = exports.legendlabels = {\n MedSalePrice: \"Median Price\",\n SoldCount: \"Closed Sales\",\n SoldAvgDOM: \"DOM\",\n AvgSalePricePerSqft: \"$/SF\",\n SaleVolume: \"Sales Volume\",\n AvgSaleOverListPrice: \"% Sale Price vs List Price\",\n ActiveCount: \"ActiveCount\",\n ContingentCount: \"ContingentCount\",\n PendingCount: \"PendingCount\",\n ActiveAvgDOM: \"ActiveAvgDOM\",\n ActiveMedDOM: \"ActiveMedDOM\",\n InventoryCount: \"Inventory\",\n InventoryAvgDOM: \"InventoryAvgDOM\",\n InventoryAvgListPrice: \"InventoryAvgListPrice\",\n NewListingsCount: \"NewListingsCount\",\n NewListingsAvgListPrice: \"NewListingsAvgListPrice\",\n UnderContractCount: \"UnderContractCount\",\n UnderContractAvgDOM: \"UnderContractAvgDOM\",\n UnderContractAvgListPrice: \"UnderContractAvgListPrice\",\n ActiveAvgListPrice: \"ActiveAvgListPrice\",\n ActiveAvgListPricePerSqft: \"ActiveAvgListPricePerSqft\",\n ActiveAvgOriginalPrice: \"ActiveAvgOriginalPrice\",\n ActiveMedListPrice: \"ActiveMedListPrice\",\n ActiveMedListPricePerSqft: \"ActiveMedListPricePerSqft\",\n\n SoldMedDOM: \"DOM\",\n SoldAvgListPrice: \"SoldAvgListPrice\",\n SoldMedListPrice: \"SoldMedListPrice\",\n AvgSalePrice: \"Average Price\",\n AvgSaleOverOriginalPrice: \"AvgSaleOverOriginalPrice\",\n MedSalePricePerSqft: \"MedSalePricePerSqft\",\n AvgMonthsToSell: \"Months to Sell\"\n};\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*!\r\n * html2canvas 1.0.0-alpha.10 <https://html2canvas.hertzen.com>\r\n * Copyright (c) 2018 Niklas von Hertzen <https://hertzen.com>\r\n * Released under MIT License\r\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n if (( false ? 'undefined' : _typeof(exports)) === 'object' && ( false ? 'undefined' : _typeof(module)) === 'object') module.exports = factory();else if (true) !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object') exports[\"html2canvas\"] = factory();else root[\"html2canvas\"] = factory();\n})(undefined, function () {\n return (/******/function (modules) {\n // webpackBootstrap\n /******/ // The module cache\n /******/var installedModules = {};\n /******/\n /******/ // The require function\n /******/function __webpack_require__(moduleId) {\n /******/\n /******/ // Check if module is in cache\n /******/if (installedModules[moduleId]) {\n /******/return installedModules[moduleId].exports;\n /******/\n }\n /******/ // Create a new module (and put it into the cache)\n /******/var module = installedModules[moduleId] = {\n /******/i: moduleId,\n /******/l: false,\n /******/exports: {}\n /******/ };\n /******/\n /******/ // Execute the module function\n /******/modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n /******/ // Flag the module as loaded\n /******/module.l = true;\n /******/\n /******/ // Return the exports of the module\n /******/return module.exports;\n /******/\n }\n /******/\n /******/\n /******/ // expose the modules object (__webpack_modules__)\n /******/__webpack_require__.m = modules;\n /******/\n /******/ // expose the module cache\n /******/__webpack_require__.c = installedModules;\n /******/\n /******/ // define getter function for harmony exports\n /******/__webpack_require__.d = function (exports, name, getter) {\n /******/if (!__webpack_require__.o(exports, name)) {\n /******/Object.defineProperty(exports, name, {\n /******/configurable: false,\n /******/enumerable: true,\n /******/get: getter\n /******/ });\n /******/\n }\n /******/\n };\n /******/\n /******/ // getDefaultExport function for compatibility with non-harmony modules\n /******/__webpack_require__.n = function (module) {\n /******/var getter = module && module.__esModule ?\n /******/function getDefault() {\n return module['default'];\n } :\n /******/function getModuleExports() {\n return module;\n };\n /******/__webpack_require__.d(getter, 'a', getter);\n /******/return getter;\n /******/\n };\n /******/\n /******/ // Object.prototype.hasOwnProperty.call\n /******/__webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n /******/ // __webpack_public_path__\n /******/__webpack_require__.p = \"\";\n /******/\n /******/ // Load entry module and return exports\n /******/return __webpack_require__(__webpack_require__.s = 27);\n /******/\n }(\n /************************************************************************/\n /******/[\n /* 0 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n // http://dev.w3.org/csswg/css-color/\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];var _n = true;var _d = false;var _e = undefined;try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;_e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }return _arr;\n }return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var HEX3 = /^#([a-f0-9]{3})$/i;\n var hex3 = function hex3(value) {\n var match = value.match(HEX3);\n if (match) {\n return [parseInt(match[1][0] + match[1][0], 16), parseInt(match[1][1] + match[1][1], 16), parseInt(match[1][2] + match[1][2], 16), null];\n }\n return false;\n };\n\n var HEX6 = /^#([a-f0-9]{6})$/i;\n var hex6 = function hex6(value) {\n var match = value.match(HEX6);\n if (match) {\n return [parseInt(match[1].substring(0, 2), 16), parseInt(match[1].substring(2, 4), 16), parseInt(match[1].substring(4, 6), 16), null];\n }\n return false;\n };\n\n var RGB = /^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/;\n var rgb = function rgb(value) {\n var match = value.match(RGB);\n if (match) {\n return [Number(match[1]), Number(match[2]), Number(match[3]), null];\n }\n return false;\n };\n\n var RGBA = /^rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d?\\.?\\d+)\\s*\\)$/;\n var rgba = function rgba(value) {\n var match = value.match(RGBA);\n if (match && match.length > 4) {\n return [Number(match[1]), Number(match[2]), Number(match[3]), Number(match[4])];\n }\n return false;\n };\n\n var fromArray = function fromArray(array) {\n return [Math.min(array[0], 255), Math.min(array[1], 255), Math.min(array[2], 255), array.length > 3 ? array[3] : null];\n };\n\n var namedColor = function namedColor(name) {\n var color = NAMED_COLORS[name.toLowerCase()];\n return color ? color : false;\n };\n\n var Color = function () {\n function Color(value) {\n _classCallCheck(this, Color);\n\n var _ref = Array.isArray(value) ? fromArray(value) : hex3(value) || rgb(value) || rgba(value) || namedColor(value) || hex6(value) || [0, 0, 0, null],\n _ref2 = _slicedToArray(_ref, 4),\n r = _ref2[0],\n g = _ref2[1],\n b = _ref2[2],\n a = _ref2[3];\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n _createClass(Color, [{\n key: 'isTransparent',\n value: function isTransparent() {\n return this.a === 0;\n }\n }, {\n key: 'toString',\n value: function toString() {\n return this.a !== null && this.a !== 1 ? 'rgba(' + this.r + ',' + this.g + ',' + this.b + ',' + this.a + ')' : 'rgb(' + this.r + ',' + this.g + ',' + this.b + ')';\n }\n }]);\n\n return Color;\n }();\n\n exports.default = Color;\n\n var NAMED_COLORS = {\n transparent: [0, 0, 0, 0],\n aliceblue: [240, 248, 255, null],\n antiquewhite: [250, 235, 215, null],\n aqua: [0, 255, 255, null],\n aquamarine: [127, 255, 212, null],\n azure: [240, 255, 255, null],\n beige: [245, 245, 220, null],\n bisque: [255, 228, 196, null],\n black: [0, 0, 0, null],\n blanchedalmond: [255, 235, 205, null],\n blue: [0, 0, 255, null],\n blueviolet: [138, 43, 226, null],\n brown: [165, 42, 42, null],\n burlywood: [222, 184, 135, null],\n cadetblue: [95, 158, 160, null],\n chartreuse: [127, 255, 0, null],\n chocolate: [210, 105, 30, null],\n coral: [255, 127, 80, null],\n cornflowerblue: [100, 149, 237, null],\n cornsilk: [255, 248, 220, null],\n crimson: [220, 20, 60, null],\n cyan: [0, 255, 255, null],\n darkblue: [0, 0, 139, null],\n darkcyan: [0, 139, 139, null],\n darkgoldenrod: [184, 134, 11, null],\n darkgray: [169, 169, 169, null],\n darkgreen: [0, 100, 0, null],\n darkgrey: [169, 169, 169, null],\n darkkhaki: [189, 183, 107, null],\n darkmagenta: [139, 0, 139, null],\n darkolivegreen: [85, 107, 47, null],\n darkorange: [255, 140, 0, null],\n darkorchid: [153, 50, 204, null],\n darkred: [139, 0, 0, null],\n darksalmon: [233, 150, 122, null],\n darkseagreen: [143, 188, 143, null],\n darkslateblue: [72, 61, 139, null],\n darkslategray: [47, 79, 79, null],\n darkslategrey: [47, 79, 79, null],\n darkturquoise: [0, 206, 209, null],\n darkviolet: [148, 0, 211, null],\n deeppink: [255, 20, 147, null],\n deepskyblue: [0, 191, 255, null],\n dimgray: [105, 105, 105, null],\n dimgrey: [105, 105, 105, null],\n dodgerblue: [30, 144, 255, null],\n firebrick: [178, 34, 34, null],\n floralwhite: [255, 250, 240, null],\n forestgreen: [34, 139, 34, null],\n fuchsia: [255, 0, 255, null],\n gainsboro: [220, 220, 220, null],\n ghostwhite: [248, 248, 255, null],\n gold: [255, 215, 0, null],\n goldenrod: [218, 165, 32, null],\n gray: [128, 128, 128, null],\n green: [0, 128, 0, null],\n greenyellow: [173, 255, 47, null],\n grey: [128, 128, 128, null],\n honeydew: [240, 255, 240, null],\n hotpink: [255, 105, 180, null],\n indianred: [205, 92, 92, null],\n indigo: [75, 0, 130, null],\n ivory: [255, 255, 240, null],\n khaki: [240, 230, 140, null],\n lavender: [230, 230, 250, null],\n lavenderblush: [255, 240, 245, null],\n lawngreen: [124, 252, 0, null],\n lemonchiffon: [255, 250, 205, null],\n lightblue: [173, 216, 230, null],\n lightcoral: [240, 128, 128, null],\n lightcyan: [224, 255, 255, null],\n lightgoldenrodyellow: [250, 250, 210, null],\n lightgray: [211, 211, 211, null],\n lightgreen: [144, 238, 144, null],\n lightgrey: [211, 211, 211, null],\n lightpink: [255, 182, 193, null],\n lightsalmon: [255, 160, 122, null],\n lightseagreen: [32, 178, 170, null],\n lightskyblue: [135, 206, 250, null],\n lightslategray: [119, 136, 153, null],\n lightslategrey: [119, 136, 153, null],\n lightsteelblue: [176, 196, 222, null],\n lightyellow: [255, 255, 224, null],\n lime: [0, 255, 0, null],\n limegreen: [50, 205, 50, null],\n linen: [250, 240, 230, null],\n magenta: [255, 0, 255, null],\n maroon: [128, 0, 0, null],\n mediumaquamarine: [102, 205, 170, null],\n mediumblue: [0, 0, 205, null],\n mediumorchid: [186, 85, 211, null],\n mediumpurple: [147, 112, 219, null],\n mediumseagreen: [60, 179, 113, null],\n mediumslateblue: [123, 104, 238, null],\n mediumspringgreen: [0, 250, 154, null],\n mediumturquoise: [72, 209, 204, null],\n mediumvioletred: [199, 21, 133, null],\n midnightblue: [25, 25, 112, null],\n mintcream: [245, 255, 250, null],\n mistyrose: [255, 228, 225, null],\n moccasin: [255, 228, 181, null],\n navajowhite: [255, 222, 173, null],\n navy: [0, 0, 128, null],\n oldlace: [253, 245, 230, null],\n olive: [128, 128, 0, null],\n olivedrab: [107, 142, 35, null],\n orange: [255, 165, 0, null],\n orangered: [255, 69, 0, null],\n orchid: [218, 112, 214, null],\n palegoldenrod: [238, 232, 170, null],\n palegreen: [152, 251, 152, null],\n paleturquoise: [175, 238, 238, null],\n palevioletred: [219, 112, 147, null],\n papayawhip: [255, 239, 213, null],\n peachpuff: [255, 218, 185, null],\n peru: [205, 133, 63, null],\n pink: [255, 192, 203, null],\n plum: [221, 160, 221, null],\n powderblue: [176, 224, 230, null],\n purple: [128, 0, 128, null],\n rebeccapurple: [102, 51, 153, null],\n red: [255, 0, 0, null],\n rosybrown: [188, 143, 143, null],\n royalblue: [65, 105, 225, null],\n saddlebrown: [139, 69, 19, null],\n salmon: [250, 128, 114, null],\n sandybrown: [244, 164, 96, null],\n seagreen: [46, 139, 87, null],\n seashell: [255, 245, 238, null],\n sienna: [160, 82, 45, null],\n silver: [192, 192, 192, null],\n skyblue: [135, 206, 235, null],\n slateblue: [106, 90, 205, null],\n slategray: [112, 128, 144, null],\n slategrey: [112, 128, 144, null],\n snow: [255, 250, 250, null],\n springgreen: [0, 255, 127, null],\n steelblue: [70, 130, 180, null],\n tan: [210, 180, 140, null],\n teal: [0, 128, 128, null],\n thistle: [216, 191, 216, null],\n tomato: [255, 99, 71, null],\n turquoise: [64, 224, 208, null],\n violet: [238, 130, 238, null],\n wheat: [245, 222, 179, null],\n white: [255, 255, 255, null],\n whitesmoke: [245, 245, 245, null],\n yellow: [255, 255, 0, null],\n yellowgreen: [154, 205, 50, null]\n };\n\n var TRANSPARENT = exports.TRANSPARENT = new Color([0, 0, 0, 0]);\n\n /***/\n },\n /* 1 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.parseBoundCurves = exports.calculatePaddingBoxPath = exports.calculateBorderBoxPath = exports.parsePathForBorder = exports.parseDocumentSize = exports.calculateContentBox = exports.calculatePaddingBox = exports.parseBounds = exports.Bounds = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n var _Vector = __webpack_require__(7);\n\n var _Vector2 = _interopRequireDefault(_Vector);\n\n var _BezierCurve = __webpack_require__(32);\n\n var _BezierCurve2 = _interopRequireDefault(_BezierCurve);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var TOP = 0;\n var RIGHT = 1;\n var BOTTOM = 2;\n var LEFT = 3;\n\n var H = 0;\n var V = 1;\n\n var Bounds = exports.Bounds = function () {\n function Bounds(x, y, w, h) {\n _classCallCheck(this, Bounds);\n\n this.left = x;\n this.top = y;\n this.width = w;\n this.height = h;\n }\n\n _createClass(Bounds, null, [{\n key: 'fromClientRect',\n value: function fromClientRect(clientRect, scrollX, scrollY) {\n return new Bounds(clientRect.left + scrollX, clientRect.top + scrollY, clientRect.width, clientRect.height);\n }\n }]);\n\n return Bounds;\n }();\n\n var parseBounds = exports.parseBounds = function parseBounds(node, scrollX, scrollY) {\n return Bounds.fromClientRect(node.getBoundingClientRect(), scrollX, scrollY);\n };\n\n var calculatePaddingBox = exports.calculatePaddingBox = function calculatePaddingBox(bounds, borders) {\n return new Bounds(bounds.left + borders[LEFT].borderWidth, bounds.top + borders[TOP].borderWidth, bounds.width - (borders[RIGHT].borderWidth + borders[LEFT].borderWidth), bounds.height - (borders[TOP].borderWidth + borders[BOTTOM].borderWidth));\n };\n\n var calculateContentBox = exports.calculateContentBox = function calculateContentBox(bounds, padding, borders) {\n // TODO support percentage paddings\n var paddingTop = padding[TOP].value;\n var paddingRight = padding[RIGHT].value;\n var paddingBottom = padding[BOTTOM].value;\n var paddingLeft = padding[LEFT].value;\n\n return new Bounds(bounds.left + paddingLeft + borders[LEFT].borderWidth, bounds.top + paddingTop + borders[TOP].borderWidth, bounds.width - (borders[RIGHT].borderWidth + borders[LEFT].borderWidth + paddingLeft + paddingRight), bounds.height - (borders[TOP].borderWidth + borders[BOTTOM].borderWidth + paddingTop + paddingBottom));\n };\n\n var parseDocumentSize = exports.parseDocumentSize = function parseDocumentSize(document) {\n var body = document.body;\n var documentElement = document.documentElement;\n\n if (!body || !documentElement) {\n throw new Error(true ? 'Unable to get document size' : '');\n }\n var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));\n\n var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));\n\n return new Bounds(0, 0, width, height);\n };\n\n var parsePathForBorder = exports.parsePathForBorder = function parsePathForBorder(curves, borderSide) {\n switch (borderSide) {\n case TOP:\n return createPathFromCurves(curves.topLeftOuter, curves.topLeftInner, curves.topRightOuter, curves.topRightInner);\n case RIGHT:\n return createPathFromCurves(curves.topRightOuter, curves.topRightInner, curves.bottomRightOuter, curves.bottomRightInner);\n case BOTTOM:\n return createPathFromCurves(curves.bottomRightOuter, curves.bottomRightInner, curves.bottomLeftOuter, curves.bottomLeftInner);\n case LEFT:\n default:\n return createPathFromCurves(curves.bottomLeftOuter, curves.bottomLeftInner, curves.topLeftOuter, curves.topLeftInner);\n }\n };\n\n var createPathFromCurves = function createPathFromCurves(outer1, inner1, outer2, inner2) {\n var path = [];\n if (outer1 instanceof _BezierCurve2.default) {\n path.push(outer1.subdivide(0.5, false));\n } else {\n path.push(outer1);\n }\n\n if (outer2 instanceof _BezierCurve2.default) {\n path.push(outer2.subdivide(0.5, true));\n } else {\n path.push(outer2);\n }\n\n if (inner2 instanceof _BezierCurve2.default) {\n path.push(inner2.subdivide(0.5, true).reverse());\n } else {\n path.push(inner2);\n }\n\n if (inner1 instanceof _BezierCurve2.default) {\n path.push(inner1.subdivide(0.5, false).reverse());\n } else {\n path.push(inner1);\n }\n\n return path;\n };\n\n var calculateBorderBoxPath = exports.calculateBorderBoxPath = function calculateBorderBoxPath(curves) {\n return [curves.topLeftOuter, curves.topRightOuter, curves.bottomRightOuter, curves.bottomLeftOuter];\n };\n\n var calculatePaddingBoxPath = exports.calculatePaddingBoxPath = function calculatePaddingBoxPath(curves) {\n return [curves.topLeftInner, curves.topRightInner, curves.bottomRightInner, curves.bottomLeftInner];\n };\n\n var parseBoundCurves = exports.parseBoundCurves = function parseBoundCurves(bounds, borders, borderRadius) {\n var tlh = borderRadius[CORNER.TOP_LEFT][H].getAbsoluteValue(bounds.width);\n var tlv = borderRadius[CORNER.TOP_LEFT][V].getAbsoluteValue(bounds.height);\n var trh = borderRadius[CORNER.TOP_RIGHT][H].getAbsoluteValue(bounds.width);\n var trv = borderRadius[CORNER.TOP_RIGHT][V].getAbsoluteValue(bounds.height);\n var brh = borderRadius[CORNER.BOTTOM_RIGHT][H].getAbsoluteValue(bounds.width);\n var brv = borderRadius[CORNER.BOTTOM_RIGHT][V].getAbsoluteValue(bounds.height);\n var blh = borderRadius[CORNER.BOTTOM_LEFT][H].getAbsoluteValue(bounds.width);\n var blv = borderRadius[CORNER.BOTTOM_LEFT][V].getAbsoluteValue(bounds.height);\n\n var factors = [];\n factors.push((tlh + trh) / bounds.width);\n factors.push((blh + brh) / bounds.width);\n factors.push((tlv + blv) / bounds.height);\n factors.push((trv + brv) / bounds.height);\n var maxFactor = Math.max.apply(Math, factors);\n\n if (maxFactor > 1) {\n tlh /= maxFactor;\n tlv /= maxFactor;\n trh /= maxFactor;\n trv /= maxFactor;\n brh /= maxFactor;\n brv /= maxFactor;\n blh /= maxFactor;\n blv /= maxFactor;\n }\n\n var topWidth = bounds.width - trh;\n var rightHeight = bounds.height - brv;\n var bottomWidth = bounds.width - brh;\n var leftHeight = bounds.height - blv;\n\n return {\n topLeftOuter: tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT) : new _Vector2.default(bounds.left, bounds.top),\n topLeftInner: tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borders[LEFT].borderWidth, bounds.top + borders[TOP].borderWidth, Math.max(0, tlh - borders[LEFT].borderWidth), Math.max(0, tlv - borders[TOP].borderWidth), CORNER.TOP_LEFT) : new _Vector2.default(bounds.left + borders[LEFT].borderWidth, bounds.top + borders[TOP].borderWidth),\n topRightOuter: trh > 0 || trv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT) : new _Vector2.default(bounds.left + bounds.width, bounds.top),\n topRightInner: trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borders[LEFT].borderWidth), bounds.top + borders[TOP].borderWidth, topWidth > bounds.width + borders[LEFT].borderWidth ? 0 : trh - borders[LEFT].borderWidth, trv - borders[TOP].borderWidth, CORNER.TOP_RIGHT) : new _Vector2.default(bounds.left + bounds.width - borders[RIGHT].borderWidth, bounds.top + borders[TOP].borderWidth),\n bottomRightOuter: brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT) : new _Vector2.default(bounds.left + bounds.width, bounds.top + bounds.height),\n bottomRightInner: brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borders[LEFT].borderWidth), bounds.top + Math.min(rightHeight, bounds.height + borders[TOP].borderWidth), Math.max(0, brh - borders[RIGHT].borderWidth), brv - borders[BOTTOM].borderWidth, CORNER.BOTTOM_RIGHT) : new _Vector2.default(bounds.left + bounds.width - borders[RIGHT].borderWidth, bounds.top + bounds.height - borders[BOTTOM].borderWidth),\n bottomLeftOuter: blh > 0 || blv > 0 ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT) : new _Vector2.default(bounds.left, bounds.top + bounds.height),\n bottomLeftInner: blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borders[LEFT].borderWidth, bounds.top + leftHeight, Math.max(0, blh - borders[LEFT].borderWidth), blv - borders[BOTTOM].borderWidth, CORNER.BOTTOM_LEFT) : new _Vector2.default(bounds.left + borders[LEFT].borderWidth, bounds.top + bounds.height - borders[BOTTOM].borderWidth)\n };\n };\n\n var CORNER = {\n TOP_LEFT: 0,\n TOP_RIGHT: 1,\n BOTTOM_RIGHT: 2,\n BOTTOM_LEFT: 3\n };\n\n var getCurvePoints = function getCurvePoints(x, y, r1, r2, position) {\n var kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n var ox = r1 * kappa; // control point offset horizontal\n var oy = r2 * kappa; // control point offset vertical\n var xm = x + r1; // x-middle\n var ym = y + r2; // y-middle\n\n switch (position) {\n case CORNER.TOP_LEFT:\n return new _BezierCurve2.default(new _Vector2.default(x, ym), new _Vector2.default(x, ym - oy), new _Vector2.default(xm - ox, y), new _Vector2.default(xm, y));\n case CORNER.TOP_RIGHT:\n return new _BezierCurve2.default(new _Vector2.default(x, y), new _Vector2.default(x + ox, y), new _Vector2.default(xm, ym - oy), new _Vector2.default(xm, ym));\n case CORNER.BOTTOM_RIGHT:\n return new _BezierCurve2.default(new _Vector2.default(xm, y), new _Vector2.default(xm, y + oy), new _Vector2.default(x + ox, ym), new _Vector2.default(x, ym));\n case CORNER.BOTTOM_LEFT:\n default:\n return new _BezierCurve2.default(new _Vector2.default(xm, ym), new _Vector2.default(xm - ox, ym), new _Vector2.default(x, y + oy), new _Vector2.default(x, y));\n }\n };\n\n /***/\n },\n /* 2 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.calculateLengthFromValueWithUnit = exports.LENGTH_TYPE = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n var _NodeContainer = __webpack_require__(3);\n\n var _NodeContainer2 = _interopRequireDefault(_NodeContainer);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var LENGTH_WITH_UNIT = /([\\d.]+)(px|r?em|%)/i;\n\n var LENGTH_TYPE = exports.LENGTH_TYPE = {\n PX: 0,\n PERCENTAGE: 1\n };\n\n var Length = function () {\n function Length(value) {\n _classCallCheck(this, Length);\n\n this.type = value.substr(value.length - 1) === '%' ? LENGTH_TYPE.PERCENTAGE : LENGTH_TYPE.PX;\n var parsedValue = parseFloat(value);\n if (true && isNaN(parsedValue)) {\n console.error('Invalid value given for Length: \"' + value + '\"');\n }\n this.value = isNaN(parsedValue) ? 0 : parsedValue;\n }\n\n _createClass(Length, [{\n key: 'isPercentage',\n value: function isPercentage() {\n return this.type === LENGTH_TYPE.PERCENTAGE;\n }\n }, {\n key: 'getAbsoluteValue',\n value: function getAbsoluteValue(parentLength) {\n return this.isPercentage() ? parentLength * (this.value / 100) : this.value;\n }\n }], [{\n key: 'create',\n value: function create(v) {\n return new Length(v);\n }\n }]);\n\n return Length;\n }();\n\n exports.default = Length;\n\n var getRootFontSize = function getRootFontSize(container) {\n var parent = container.parent;\n return parent ? getRootFontSize(parent) : parseFloat(container.style.font.fontSize);\n };\n\n var calculateLengthFromValueWithUnit = exports.calculateLengthFromValueWithUnit = function calculateLengthFromValueWithUnit(container, value, unit) {\n switch (unit) {\n case 'px':\n case '%':\n return new Length(value + unit);\n case 'em':\n case 'rem':\n var length = new Length(value);\n length.value *= unit === 'em' ? parseFloat(container.style.font.fontSize) : getRootFontSize(container);\n return length;\n default:\n // TODO: handle correctly if unknown unit is used\n return new Length('0');\n }\n };\n\n /***/\n },\n /* 3 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n var _Color = __webpack_require__(0);\n\n var _Color2 = _interopRequireDefault(_Color);\n\n var _Util = __webpack_require__(4);\n\n var _background = __webpack_require__(5);\n\n var _border = __webpack_require__(12);\n\n var _borderRadius = __webpack_require__(33);\n\n var _display = __webpack_require__(34);\n\n var _float = __webpack_require__(35);\n\n var _font = __webpack_require__(36);\n\n var _letterSpacing = __webpack_require__(37);\n\n var _lineBreak = __webpack_require__(38);\n\n var _listStyle = __webpack_require__(8);\n\n var _margin = __webpack_require__(39);\n\n var _overflow = __webpack_require__(40);\n\n var _overflowWrap = __webpack_require__(18);\n\n var _padding = __webpack_require__(17);\n\n var _position = __webpack_require__(19);\n\n var _textDecoration = __webpack_require__(11);\n\n var _textShadow = __webpack_require__(41);\n\n var _textTransform = __webpack_require__(20);\n\n var _transform = __webpack_require__(42);\n\n var _visibility = __webpack_require__(43);\n\n var _wordBreak = __webpack_require__(44);\n\n var _zIndex = __webpack_require__(45);\n\n var _Bounds = __webpack_require__(1);\n\n var _Input = __webpack_require__(21);\n\n var _ListItem = __webpack_require__(14);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\n\n var NodeContainer = function () {\n function NodeContainer(node, parent, resourceLoader, index) {\n var _this = this;\n\n _classCallCheck(this, NodeContainer);\n\n this.parent = parent;\n this.tagName = node.tagName;\n this.index = index;\n this.childNodes = [];\n this.listItems = [];\n if (typeof node.start === 'number') {\n this.listStart = node.start;\n }\n var defaultView = node.ownerDocument.defaultView;\n var scrollX = defaultView.pageXOffset;\n var scrollY = defaultView.pageYOffset;\n var style = defaultView.getComputedStyle(node, null);\n var display = (0, _display.parseDisplay)(style.display);\n\n var IS_INPUT = node.type === 'radio' || node.type === 'checkbox';\n\n var position = (0, _position.parsePosition)(style.position);\n\n this.style = {\n background: IS_INPUT ? _Input.INPUT_BACKGROUND : (0, _background.parseBackground)(style, resourceLoader),\n border: IS_INPUT ? _Input.INPUT_BORDERS : (0, _border.parseBorder)(style),\n borderRadius: (node instanceof defaultView.HTMLInputElement || node instanceof HTMLInputElement) && IS_INPUT ? (0, _Input.getInputBorderRadius)(node) : (0, _borderRadius.parseBorderRadius)(style),\n color: IS_INPUT ? _Input.INPUT_COLOR : new _Color2.default(style.color),\n display: display,\n float: (0, _float.parseCSSFloat)(style.float),\n font: (0, _font.parseFont)(style),\n letterSpacing: (0, _letterSpacing.parseLetterSpacing)(style.letterSpacing),\n listStyle: display === _display.DISPLAY.LIST_ITEM ? (0, _listStyle.parseListStyle)(style) : null,\n lineBreak: (0, _lineBreak.parseLineBreak)(style.lineBreak),\n margin: (0, _margin.parseMargin)(style),\n opacity: parseFloat(style.opacity),\n overflow: INPUT_TAGS.indexOf(node.tagName) === -1 ? (0, _overflow.parseOverflow)(style.overflow) : _overflow.OVERFLOW.HIDDEN,\n overflowWrap: (0, _overflowWrap.parseOverflowWrap)(style.overflowWrap ? style.overflowWrap : style.wordWrap),\n padding: (0, _padding.parsePadding)(style),\n position: position,\n textDecoration: (0, _textDecoration.parseTextDecoration)(style),\n textShadow: (0, _textShadow.parseTextShadow)(style.textShadow),\n textTransform: (0, _textTransform.parseTextTransform)(style.textTransform),\n transform: (0, _transform.parseTransform)(style),\n visibility: (0, _visibility.parseVisibility)(style.visibility),\n wordBreak: (0, _wordBreak.parseWordBreak)(style.wordBreak),\n zIndex: (0, _zIndex.parseZIndex)(position !== _position.POSITION.STATIC ? style.zIndex : 'auto')\n };\n\n if (this.isTransformed()) {\n // getBoundingClientRect provides values post-transform, we want them without the transformation\n node.style.transform = 'matrix(1,0,0,1,0,0)';\n }\n\n if (display === _display.DISPLAY.LIST_ITEM) {\n var listOwner = (0, _ListItem.getListOwner)(this);\n if (listOwner) {\n var listIndex = listOwner.listItems.length;\n listOwner.listItems.push(this);\n this.listIndex = node.hasAttribute('value') && typeof node.value === 'number' ? node.value : listIndex === 0 ? typeof listOwner.listStart === 'number' ? listOwner.listStart : 1 : listOwner.listItems[listIndex - 1].listIndex + 1;\n }\n }\n\n // TODO move bound retrieval for all nodes to a later stage?\n if (node.tagName === 'IMG') {\n node.addEventListener('load', function () {\n _this.bounds = (0, _Bounds.parseBounds)(node, scrollX, scrollY);\n _this.curvedBounds = (0, _Bounds.parseBoundCurves)(_this.bounds, _this.style.border, _this.style.borderRadius);\n });\n }\n this.image = getImage(node, resourceLoader);\n this.bounds = IS_INPUT ? (0, _Input.reformatInputBounds)((0, _Bounds.parseBounds)(node, scrollX, scrollY)) : (0, _Bounds.parseBounds)(node, scrollX, scrollY);\n this.curvedBounds = (0, _Bounds.parseBoundCurves)(this.bounds, this.style.border, this.style.borderRadius);\n\n if (true) {\n this.name = '' + node.tagName.toLowerCase() + (node.id ? '#' + node.id : '') + node.className.toString().split(' ').map(function (s) {\n return s.length ? '.' + s : '';\n }).join('');\n }\n }\n\n _createClass(NodeContainer, [{\n key: 'getClipPaths',\n value: function getClipPaths() {\n var parentClips = this.parent ? this.parent.getClipPaths() : [];\n var isClipped = this.style.overflow !== _overflow.OVERFLOW.VISIBLE;\n\n return isClipped ? parentClips.concat([(0, _Bounds.calculatePaddingBoxPath)(this.curvedBounds)]) : parentClips;\n }\n }, {\n key: 'isInFlow',\n value: function isInFlow() {\n return this.isRootElement() && !this.isFloating() && !this.isAbsolutelyPositioned();\n }\n }, {\n key: 'isVisible',\n value: function isVisible() {\n return !(0, _Util.contains)(this.style.display, _display.DISPLAY.NONE) && this.style.opacity > 0 && this.style.visibility === _visibility.VISIBILITY.VISIBLE;\n }\n }, {\n key: 'isAbsolutelyPositioned',\n value: function isAbsolutelyPositioned() {\n return this.style.position !== _position.POSITION.STATIC && this.style.position !== _position.POSITION.RELATIVE;\n }\n }, {\n key: 'isPositioned',\n value: function isPositioned() {\n return this.style.position !== _position.POSITION.STATIC;\n }\n }, {\n key: 'isFloating',\n value: function isFloating() {\n return this.style.float !== _float.FLOAT.NONE;\n }\n }, {\n key: 'isRootElement',\n value: function isRootElement() {\n return this.parent === null;\n }\n }, {\n key: 'isTransformed',\n value: function isTransformed() {\n return this.style.transform !== null;\n }\n }, {\n key: 'isPositionedWithZIndex',\n value: function isPositionedWithZIndex() {\n return this.isPositioned() && !this.style.zIndex.auto;\n }\n }, {\n key: 'isInlineLevel',\n value: function isInlineLevel() {\n return (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE) || (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE_BLOCK) || (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE_FLEX) || (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE_GRID) || (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE_LIST_ITEM) || (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE_TABLE);\n }\n }, {\n key: 'isInlineBlockOrInlineTable',\n value: function isInlineBlockOrInlineTable() {\n return (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE_BLOCK) || (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE_TABLE);\n }\n }]);\n\n return NodeContainer;\n }();\n\n exports.default = NodeContainer;\n\n var getImage = function getImage(node, resourceLoader) {\n if (node instanceof node.ownerDocument.defaultView.SVGSVGElement || node instanceof SVGSVGElement) {\n var s = new XMLSerializer();\n return resourceLoader.loadImage('data:image/svg+xml,' + encodeURIComponent(s.serializeToString(node)));\n }\n switch (node.tagName) {\n case 'IMG':\n // $FlowFixMe\n var img = node;\n return resourceLoader.loadImage(img.currentSrc || img.src);\n case 'CANVAS':\n // $FlowFixMe\n var canvas = node;\n return resourceLoader.loadCanvas(canvas);\n case 'IFRAME':\n var iframeKey = node.getAttribute('data-html2canvas-internal-iframe-key');\n if (iframeKey) {\n return iframeKey;\n }\n break;\n }\n\n return null;\n };\n\n /***/\n },\n /* 4 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var contains = exports.contains = function contains(bit, value) {\n return (bit & value) !== 0;\n };\n\n var distance = exports.distance = function distance(a, b) {\n return Math.sqrt(a * a + b * b);\n };\n\n var copyCSSStyles = exports.copyCSSStyles = function copyCSSStyles(style, target) {\n // Edge does not provide value for cssText\n for (var i = style.length - 1; i >= 0; i--) {\n var property = style.item(i);\n // Safari shows pseudoelements if content is set\n if (property !== 'content') {\n target.style.setProperty(property, style.getPropertyValue(property));\n }\n }\n return target;\n };\n\n var SMALL_IMAGE = exports.SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n\n /***/\n },\n /* 5 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.parseBackgroundImage = exports.parseBackground = exports.calculateBackgroundRepeatPath = exports.calculateBackgroundPosition = exports.calculateBackgroungPositioningArea = exports.calculateBackgroungPaintingArea = exports.calculateGradientBackgroundSize = exports.calculateBackgroundSize = exports.BACKGROUND_ORIGIN = exports.BACKGROUND_CLIP = exports.BACKGROUND_SIZE = exports.BACKGROUND_REPEAT = undefined;\n\n var _Color = __webpack_require__(0);\n\n var _Color2 = _interopRequireDefault(_Color);\n\n var _Length = __webpack_require__(2);\n\n var _Length2 = _interopRequireDefault(_Length);\n\n var _Size = __webpack_require__(31);\n\n var _Size2 = _interopRequireDefault(_Size);\n\n var _Vector = __webpack_require__(7);\n\n var _Vector2 = _interopRequireDefault(_Vector);\n\n var _Bounds = __webpack_require__(1);\n\n var _padding = __webpack_require__(17);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var BACKGROUND_REPEAT = exports.BACKGROUND_REPEAT = {\n REPEAT: 0,\n NO_REPEAT: 1,\n REPEAT_X: 2,\n REPEAT_Y: 3\n };\n\n var BACKGROUND_SIZE = exports.BACKGROUND_SIZE = {\n AUTO: 0,\n CONTAIN: 1,\n COVER: 2,\n LENGTH: 3\n };\n\n var BACKGROUND_CLIP = exports.BACKGROUND_CLIP = {\n BORDER_BOX: 0,\n PADDING_BOX: 1,\n CONTENT_BOX: 2\n };\n\n var BACKGROUND_ORIGIN = exports.BACKGROUND_ORIGIN = BACKGROUND_CLIP;\n\n var AUTO = 'auto';\n\n var BackgroundSize = function BackgroundSize(size) {\n _classCallCheck(this, BackgroundSize);\n\n switch (size) {\n case 'contain':\n this.size = BACKGROUND_SIZE.CONTAIN;\n break;\n case 'cover':\n this.size = BACKGROUND_SIZE.COVER;\n break;\n case 'auto':\n this.size = BACKGROUND_SIZE.AUTO;\n break;\n default:\n this.value = new _Length2.default(size);\n }\n };\n\n var calculateBackgroundSize = exports.calculateBackgroundSize = function calculateBackgroundSize(backgroundImage, image, bounds) {\n var width = 0;\n var height = 0;\n var size = backgroundImage.size;\n if (size[0].size === BACKGROUND_SIZE.CONTAIN || size[0].size === BACKGROUND_SIZE.COVER) {\n var targetRatio = bounds.width / bounds.height;\n var currentRatio = image.width / image.height;\n return targetRatio < currentRatio !== (size[0].size === BACKGROUND_SIZE.COVER) ? new _Size2.default(bounds.width, bounds.width / currentRatio) : new _Size2.default(bounds.height * currentRatio, bounds.height);\n }\n\n if (size[0].value) {\n width = size[0].value.getAbsoluteValue(bounds.width);\n }\n\n if (size[0].size === BACKGROUND_SIZE.AUTO && size[1].size === BACKGROUND_SIZE.AUTO) {\n height = image.height;\n } else if (size[1].size === BACKGROUND_SIZE.AUTO) {\n height = width / image.width * image.height;\n } else if (size[1].value) {\n height = size[1].value.getAbsoluteValue(bounds.height);\n }\n\n if (size[0].size === BACKGROUND_SIZE.AUTO) {\n width = height / image.height * image.width;\n }\n\n return new _Size2.default(width, height);\n };\n\n var calculateGradientBackgroundSize = exports.calculateGradientBackgroundSize = function calculateGradientBackgroundSize(backgroundImage, bounds) {\n var size = backgroundImage.size;\n var width = size[0].value ? size[0].value.getAbsoluteValue(bounds.width) : bounds.width;\n var height = size[1].value ? size[1].value.getAbsoluteValue(bounds.height) : size[0].value ? width : bounds.height;\n\n return new _Size2.default(width, height);\n };\n\n var AUTO_SIZE = new BackgroundSize(AUTO);\n\n var calculateBackgroungPaintingArea = exports.calculateBackgroungPaintingArea = function calculateBackgroungPaintingArea(curves, clip) {\n switch (clip) {\n case BACKGROUND_CLIP.BORDER_BOX:\n return (0, _Bounds.calculateBorderBoxPath)(curves);\n case BACKGROUND_CLIP.PADDING_BOX:\n default:\n return (0, _Bounds.calculatePaddingBoxPath)(curves);\n }\n };\n\n var calculateBackgroungPositioningArea = exports.calculateBackgroungPositioningArea = function calculateBackgroungPositioningArea(backgroundOrigin, bounds, padding, border) {\n var paddingBox = (0, _Bounds.calculatePaddingBox)(bounds, border);\n\n switch (backgroundOrigin) {\n case BACKGROUND_ORIGIN.BORDER_BOX:\n return bounds;\n case BACKGROUND_ORIGIN.CONTENT_BOX:\n var paddingLeft = padding[_padding.PADDING_SIDES.LEFT].getAbsoluteValue(bounds.width);\n var paddingRight = padding[_padding.PADDING_SIDES.RIGHT].getAbsoluteValue(bounds.width);\n var paddingTop = padding[_padding.PADDING_SIDES.TOP].getAbsoluteValue(bounds.width);\n var paddingBottom = padding[_padding.PADDING_SIDES.BOTTOM].getAbsoluteValue(bounds.width);\n return new _Bounds.Bounds(paddingBox.left + paddingLeft, paddingBox.top + paddingTop, paddingBox.width - paddingLeft - paddingRight, paddingBox.height - paddingTop - paddingBottom);\n case BACKGROUND_ORIGIN.PADDING_BOX:\n default:\n return paddingBox;\n }\n };\n\n var calculateBackgroundPosition = exports.calculateBackgroundPosition = function calculateBackgroundPosition(position, size, bounds) {\n return new _Vector2.default(position[0].getAbsoluteValue(bounds.width - size.width), position[1].getAbsoluteValue(bounds.height - size.height));\n };\n\n var calculateBackgroundRepeatPath = exports.calculateBackgroundRepeatPath = function calculateBackgroundRepeatPath(background, position, size, backgroundPositioningArea, bounds) {\n var repeat = background.repeat;\n switch (repeat) {\n case BACKGROUND_REPEAT.REPEAT_X:\n return [new _Vector2.default(Math.round(bounds.left), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(size.height + backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(bounds.left), Math.round(size.height + backgroundPositioningArea.top + position.y))];\n case BACKGROUND_REPEAT.REPEAT_Y:\n return [new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(bounds.top)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(bounds.top)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(bounds.height + bounds.top)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(bounds.height + bounds.top))];\n case BACKGROUND_REPEAT.NO_REPEAT:\n return [new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(backgroundPositioningArea.top + position.y + size.height)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(backgroundPositioningArea.top + position.y + size.height))];\n default:\n return [new _Vector2.default(Math.round(bounds.left), Math.round(bounds.top)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(bounds.top)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(bounds.height + bounds.top)), new _Vector2.default(Math.round(bounds.left), Math.round(bounds.height + bounds.top))];\n }\n };\n\n var parseBackground = exports.parseBackground = function parseBackground(style, resourceLoader) {\n return {\n backgroundColor: new _Color2.default(style.backgroundColor),\n backgroundImage: parseBackgroundImages(style, resourceLoader),\n backgroundClip: parseBackgroundClip(style.backgroundClip),\n backgroundOrigin: parseBackgroundOrigin(style.backgroundOrigin)\n };\n };\n\n var parseBackgroundClip = function parseBackgroundClip(backgroundClip) {\n switch (backgroundClip) {\n case 'padding-box':\n return BACKGROUND_CLIP.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_CLIP.CONTENT_BOX;\n }\n return BACKGROUND_CLIP.BORDER_BOX;\n };\n\n var parseBackgroundOrigin = function parseBackgroundOrigin(backgroundOrigin) {\n switch (backgroundOrigin) {\n case 'padding-box':\n return BACKGROUND_ORIGIN.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_ORIGIN.CONTENT_BOX;\n }\n return BACKGROUND_ORIGIN.BORDER_BOX;\n };\n\n var parseBackgroundRepeat = function parseBackgroundRepeat(backgroundRepeat) {\n switch (backgroundRepeat.trim()) {\n case 'no-repeat':\n return BACKGROUND_REPEAT.NO_REPEAT;\n case 'repeat-x':\n case 'repeat no-repeat':\n return BACKGROUND_REPEAT.REPEAT_X;\n case 'repeat-y':\n case 'no-repeat repeat':\n return BACKGROUND_REPEAT.REPEAT_Y;\n case 'repeat':\n return BACKGROUND_REPEAT.REPEAT;\n }\n\n if (true) {\n console.error('Invalid background-repeat value \"' + backgroundRepeat + '\"');\n }\n\n return BACKGROUND_REPEAT.REPEAT;\n };\n\n var parseBackgroundImages = function parseBackgroundImages(style, resourceLoader) {\n var sources = parseBackgroundImage(style.backgroundImage).map(function (backgroundImage) {\n if (backgroundImage.method === 'url') {\n var key = resourceLoader.loadImage(backgroundImage.args[0]);\n backgroundImage.args = key ? [key] : [];\n }\n return backgroundImage;\n });\n var positions = style.backgroundPosition.split(',');\n var repeats = style.backgroundRepeat.split(',');\n var sizes = style.backgroundSize.split(',');\n\n return sources.map(function (source, index) {\n var size = (sizes[index] || AUTO).trim().split(' ').map(parseBackgroundSize);\n var position = (positions[index] || AUTO).trim().split(' ').map(parseBackgoundPosition);\n\n return {\n source: source,\n repeat: parseBackgroundRepeat(typeof repeats[index] === 'string' ? repeats[index] : repeats[0]),\n size: size.length < 2 ? [size[0], AUTO_SIZE] : [size[0], size[1]],\n position: position.length < 2 ? [position[0], position[0]] : [position[0], position[1]]\n };\n });\n };\n\n var parseBackgroundSize = function parseBackgroundSize(size) {\n return size === 'auto' ? AUTO_SIZE : new BackgroundSize(size);\n };\n\n var parseBackgoundPosition = function parseBackgoundPosition(position) {\n switch (position) {\n case 'bottom':\n case 'right':\n return new _Length2.default('100%');\n case 'left':\n case 'top':\n return new _Length2.default('0%');\n case 'auto':\n return new _Length2.default('0');\n }\n return new _Length2.default(position);\n };\n\n var parseBackgroundImage = exports.parseBackgroundImage = function parseBackgroundImage(image) {\n var whitespace = /^\\s$/;\n var results = [];\n\n var args = [];\n var method = '';\n var quote = null;\n var definition = '';\n var mode = 0;\n var numParen = 0;\n\n var appendResult = function appendResult() {\n var prefix = '';\n if (method) {\n if (definition.substr(0, 1) === '\"') {\n definition = definition.substr(1, definition.length - 2);\n }\n\n if (definition) {\n args.push(definition.trim());\n }\n\n var prefix_i = method.indexOf('-', 1) + 1;\n if (method.substr(0, 1) === '-' && prefix_i > 0) {\n prefix = method.substr(0, prefix_i).toLowerCase();\n method = method.substr(prefix_i);\n }\n method = method.toLowerCase();\n if (method !== 'none') {\n results.push({\n prefix: prefix,\n method: method,\n args: args\n });\n }\n }\n args = [];\n method = definition = '';\n };\n\n image.split('').forEach(function (c) {\n if (mode === 0 && whitespace.test(c)) {\n return;\n }\n switch (c) {\n case '\"':\n if (!quote) {\n quote = c;\n } else if (quote === c) {\n quote = null;\n }\n break;\n case '(':\n if (quote) {\n break;\n } else if (mode === 0) {\n mode = 1;\n return;\n } else {\n numParen++;\n }\n break;\n case ')':\n if (quote) {\n break;\n } else if (mode === 1) {\n if (numParen === 0) {\n mode = 0;\n appendResult();\n return;\n } else {\n numParen--;\n }\n }\n break;\n\n case ',':\n if (quote) {\n break;\n } else if (mode === 0) {\n appendResult();\n return;\n } else if (mode === 1) {\n if (numParen === 0 && !method.match(/^url$/i)) {\n args.push(definition.trim());\n definition = '';\n return;\n }\n }\n break;\n }\n\n if (mode === 0) {\n method += c;\n } else {\n definition += c;\n }\n });\n\n appendResult();\n return results;\n };\n\n /***/\n },\n /* 6 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var PATH = exports.PATH = {\n VECTOR: 0,\n BEZIER_CURVE: 1,\n CIRCLE: 2\n };\n\n /***/\n },\n /* 7 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _Path = __webpack_require__(6);\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var Vector = function Vector(x, y) {\n _classCallCheck(this, Vector);\n\n this.type = _Path.PATH.VECTOR;\n this.x = x;\n this.y = y;\n if (true) {\n if (isNaN(x)) {\n console.error('Invalid x value given for Vector');\n }\n if (isNaN(y)) {\n console.error('Invalid y value given for Vector');\n }\n }\n };\n\n exports.default = Vector;\n\n /***/\n },\n /* 8 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.parseListStyle = exports.parseListStyleType = exports.LIST_STYLE_TYPE = exports.LIST_STYLE_POSITION = undefined;\n\n var _background = __webpack_require__(5);\n\n var LIST_STYLE_POSITION = exports.LIST_STYLE_POSITION = {\n INSIDE: 0,\n OUTSIDE: 1\n };\n\n var LIST_STYLE_TYPE = exports.LIST_STYLE_TYPE = {\n NONE: -1,\n DISC: 0,\n CIRCLE: 1,\n SQUARE: 2,\n DECIMAL: 3,\n CJK_DECIMAL: 4,\n DECIMAL_LEADING_ZERO: 5,\n LOWER_ROMAN: 6,\n UPPER_ROMAN: 7,\n LOWER_GREEK: 8,\n LOWER_ALPHA: 9,\n UPPER_ALPHA: 10,\n ARABIC_INDIC: 11,\n ARMENIAN: 12,\n BENGALI: 13,\n CAMBODIAN: 14,\n CJK_EARTHLY_BRANCH: 15,\n CJK_HEAVENLY_STEM: 16,\n CJK_IDEOGRAPHIC: 17,\n DEVANAGARI: 18,\n ETHIOPIC_NUMERIC: 19,\n GEORGIAN: 20,\n GUJARATI: 21,\n GURMUKHI: 22,\n HEBREW: 22,\n HIRAGANA: 23,\n HIRAGANA_IROHA: 24,\n JAPANESE_FORMAL: 25,\n JAPANESE_INFORMAL: 26,\n KANNADA: 27,\n KATAKANA: 28,\n KATAKANA_IROHA: 29,\n KHMER: 30,\n KOREAN_HANGUL_FORMAL: 31,\n KOREAN_HANJA_FORMAL: 32,\n KOREAN_HANJA_INFORMAL: 33,\n LAO: 34,\n LOWER_ARMENIAN: 35,\n MALAYALAM: 36,\n MONGOLIAN: 37,\n MYANMAR: 38,\n ORIYA: 39,\n PERSIAN: 40,\n SIMP_CHINESE_FORMAL: 41,\n SIMP_CHINESE_INFORMAL: 42,\n TAMIL: 43,\n TELUGU: 44,\n THAI: 45,\n TIBETAN: 46,\n TRAD_CHINESE_FORMAL: 47,\n TRAD_CHINESE_INFORMAL: 48,\n UPPER_ARMENIAN: 49,\n DISCLOSURE_OPEN: 50,\n DISCLOSURE_CLOSED: 51\n };\n\n var parseListStyleType = exports.parseListStyleType = function parseListStyleType(type) {\n switch (type) {\n case 'disc':\n return LIST_STYLE_TYPE.DISC;\n case 'circle':\n return LIST_STYLE_TYPE.CIRCLE;\n case 'square':\n return LIST_STYLE_TYPE.SQUARE;\n case 'decimal':\n return LIST_STYLE_TYPE.DECIMAL;\n case 'cjk-decimal':\n return LIST_STYLE_TYPE.CJK_DECIMAL;\n case 'decimal-leading-zero':\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n case 'lower-roman':\n return LIST_STYLE_TYPE.LOWER_ROMAN;\n case 'upper-roman':\n return LIST_STYLE_TYPE.UPPER_ROMAN;\n case 'lower-greek':\n return LIST_STYLE_TYPE.LOWER_GREEK;\n case 'lower-alpha':\n return LIST_STYLE_TYPE.LOWER_ALPHA;\n case 'upper-alpha':\n return LIST_STYLE_TYPE.UPPER_ALPHA;\n case 'arabic-indic':\n return LIST_STYLE_TYPE.ARABIC_INDIC;\n case 'armenian':\n return LIST_STYLE_TYPE.ARMENIAN;\n case 'bengali':\n return LIST_STYLE_TYPE.BENGALI;\n case 'cambodian':\n return LIST_STYLE_TYPE.CAMBODIAN;\n case 'cjk-earthly-branch':\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n case 'cjk-heavenly-stem':\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n case 'cjk-ideographic':\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n case 'devanagari':\n return LIST_STYLE_TYPE.DEVANAGARI;\n case 'ethiopic-numeric':\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n case 'georgian':\n return LIST_STYLE_TYPE.GEORGIAN;\n case 'gujarati':\n return LIST_STYLE_TYPE.GUJARATI;\n case 'gurmukhi':\n return LIST_STYLE_TYPE.GURMUKHI;\n case 'hebrew':\n return LIST_STYLE_TYPE.HEBREW;\n case 'hiragana':\n return LIST_STYLE_TYPE.HIRAGANA;\n case 'hiragana-iroha':\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n case 'japanese-formal':\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n case 'japanese-informal':\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n case 'kannada':\n return LIST_STYLE_TYPE.KANNADA;\n case 'katakana':\n return LIST_STYLE_TYPE.KATAKANA;\n case 'katakana-iroha':\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\n case 'khmer':\n return LIST_STYLE_TYPE.KHMER;\n case 'korean-hangul-formal':\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n case 'korean-hanja-formal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n case 'korean-hanja-informal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n case 'lao':\n return LIST_STYLE_TYPE.LAO;\n case 'lower-armenian':\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n case 'malayalam':\n return LIST_STYLE_TYPE.MALAYALAM;\n case 'mongolian':\n return LIST_STYLE_TYPE.MONGOLIAN;\n case 'myanmar':\n return LIST_STYLE_TYPE.MYANMAR;\n case 'oriya':\n return LIST_STYLE_TYPE.ORIYA;\n case 'persian':\n return LIST_STYLE_TYPE.PERSIAN;\n case 'simp-chinese-formal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n case 'simp-chinese-informal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n case 'tamil':\n return LIST_STYLE_TYPE.TAMIL;\n case 'telugu':\n return LIST_STYLE_TYPE.TELUGU;\n case 'thai':\n return LIST_STYLE_TYPE.THAI;\n case 'tibetan':\n return LIST_STYLE_TYPE.TIBETAN;\n case 'trad-chinese-formal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n case 'trad-chinese-informal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n case 'upper-armenian':\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n case 'disclosure-open':\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n case 'disclosure-closed':\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n case 'none':\n default:\n return LIST_STYLE_TYPE.NONE;\n }\n };\n\n var parseListStyle = exports.parseListStyle = function parseListStyle(style) {\n var listStyleImage = (0, _background.parseBackgroundImage)(style.getPropertyValue('list-style-image'));\n return {\n listStyleType: parseListStyleType(style.getPropertyValue('list-style-type')),\n listStyleImage: listStyleImage.length ? listStyleImage[0] : null,\n listStylePosition: parseListStylePosition(style.getPropertyValue('list-style-position'))\n };\n };\n\n var parseListStylePosition = function parseListStylePosition(position) {\n switch (position) {\n case 'inside':\n return LIST_STYLE_POSITION.INSIDE;\n case 'outside':\n default:\n return LIST_STYLE_POSITION.OUTSIDE;\n }\n };\n\n /***/\n },\n /* 9 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n var _textTransform = __webpack_require__(20);\n\n var _TextBounds = __webpack_require__(22);\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var TextContainer = function () {\n function TextContainer(text, parent, bounds) {\n _classCallCheck(this, TextContainer);\n\n this.text = text;\n this.parent = parent;\n this.bounds = bounds;\n }\n\n _createClass(TextContainer, null, [{\n key: 'fromTextNode',\n value: function fromTextNode(node, parent) {\n var text = transform(node.data, parent.style.textTransform);\n return new TextContainer(text, parent, (0, _TextBounds.parseTextBounds)(text, parent, node));\n }\n }]);\n\n return TextContainer;\n }();\n\n exports.default = TextContainer;\n\n var CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n\n var transform = function transform(text, _transform) {\n switch (_transform) {\n case _textTransform.TEXT_TRANSFORM.LOWERCASE:\n return text.toLowerCase();\n case _textTransform.TEXT_TRANSFORM.CAPITALIZE:\n return text.replace(CAPITALIZE, capitalize);\n case _textTransform.TEXT_TRANSFORM.UPPERCASE:\n return text.toUpperCase();\n default:\n return text;\n }\n };\n\n function capitalize(m, p1, p2) {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n\n return m;\n }\n\n /***/\n },\n /* 10 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _ForeignObjectRenderer = __webpack_require__(23);\n\n var testRangeBounds = function testRangeBounds(document) {\n var TEST_HEIGHT = 123;\n\n if (document.createRange) {\n var range = document.createRange();\n if (range.getBoundingClientRect) {\n var testElement = document.createElement('boundtest');\n testElement.style.height = TEST_HEIGHT + 'px';\n testElement.style.display = 'block';\n document.body.appendChild(testElement);\n\n range.selectNode(testElement);\n var rangeBounds = range.getBoundingClientRect();\n var rangeHeight = Math.round(rangeBounds.height);\n document.body.removeChild(testElement);\n if (rangeHeight === TEST_HEIGHT) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n // iOS 10.3 taints canvas with base64 images unless crossOrigin = 'anonymous'\n var testBase64 = function testBase64(document, src) {\n var img = new Image();\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n\n return new Promise(function (resolve) {\n // Single pixel base64 image renders fine on iOS 10.3???\n img.src = src;\n\n var onload = function onload() {\n try {\n ctx.drawImage(img, 0, 0);\n canvas.toDataURL();\n } catch (e) {\n return resolve(false);\n }\n\n return resolve(true);\n };\n\n img.onload = onload;\n img.onerror = function () {\n return resolve(false);\n };\n\n if (img.complete === true) {\n setTimeout(function () {\n onload();\n }, 500);\n }\n });\n };\n\n var testCORS = function testCORS() {\n return typeof new Image().crossOrigin !== 'undefined';\n };\n\n var testResponseType = function testResponseType() {\n return typeof new XMLHttpRequest().responseType === 'string';\n };\n\n var testSVG = function testSVG(document) {\n var img = new Image();\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n img.src = 'data:image/svg+xml,<svg xmlns=\\'http://www.w3.org/2000/svg\\'></svg>';\n\n try {\n ctx.drawImage(img, 0, 0);\n canvas.toDataURL();\n } catch (e) {\n return false;\n }\n return true;\n };\n\n var isGreenPixel = function isGreenPixel(data) {\n return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n };\n\n var testForeignObject = function testForeignObject(document) {\n var canvas = document.createElement('canvas');\n var size = 100;\n canvas.width = size;\n canvas.height = size;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgb(0, 255, 0)';\n ctx.fillRect(0, 0, size, size);\n\n var img = new Image();\n var greenImageSrc = canvas.toDataURL();\n img.src = greenImageSrc;\n var svg = (0, _ForeignObjectRenderer.createForeignObjectSVG)(size, size, 0, 0, img);\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n return (0, _ForeignObjectRenderer.loadSerializedSVG)(svg).then(function (img) {\n ctx.drawImage(img, 0, 0);\n var data = ctx.getImageData(0, 0, size, size).data;\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n var node = document.createElement('div');\n node.style.backgroundImage = 'url(' + greenImageSrc + ')';\n node.style.height = size + 'px';\n // Firefox 55 does not render inline <img /> tags\n return isGreenPixel(data) ? (0, _ForeignObjectRenderer.loadSerializedSVG)((0, _ForeignObjectRenderer.createForeignObjectSVG)(size, size, 0, 0, node)) : Promise.reject(false);\n }).then(function (img) {\n ctx.drawImage(img, 0, 0);\n // Edge does not render background-images\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n }).catch(function (e) {\n return false;\n });\n };\n\n var FEATURES = {\n // $FlowFixMe - get/set properties not yet supported\n get SUPPORT_RANGE_BOUNDS() {\n 'use strict';\n\n var value = testRangeBounds(document);\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value });\n return value;\n },\n // $FlowFixMe - get/set properties not yet supported\n get SUPPORT_SVG_DRAWING() {\n 'use strict';\n\n var value = testSVG(document);\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value });\n return value;\n },\n // $FlowFixMe - get/set properties not yet supported\n get SUPPORT_BASE64_DRAWING() {\n 'use strict';\n\n return function (src) {\n var _value = testBase64(document, src);\n Object.defineProperty(FEATURES, 'SUPPORT_BASE64_DRAWING', { value: function value() {\n return _value;\n } });\n return _value;\n };\n },\n // $FlowFixMe - get/set properties not yet supported\n get SUPPORT_FOREIGNOBJECT_DRAWING() {\n 'use strict';\n\n var value = typeof Array.from === 'function' && typeof window.fetch === 'function' ? testForeignObject(document) : Promise.resolve(false);\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value });\n return value;\n },\n // $FlowFixMe - get/set properties not yet supported\n get SUPPORT_CORS_IMAGES() {\n 'use strict';\n\n var value = testCORS();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value });\n return value;\n },\n // $FlowFixMe - get/set properties not yet supported\n get SUPPORT_RESPONSE_TYPE() {\n 'use strict';\n\n var value = testResponseType();\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value });\n return value;\n },\n // $FlowFixMe - get/set properties not yet supported\n get SUPPORT_CORS_XHR() {\n 'use strict';\n\n var value = 'withCredentials' in new XMLHttpRequest();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value });\n return value;\n }\n };\n\n exports.default = FEATURES;\n\n /***/\n },\n /* 11 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.parseTextDecoration = exports.TEXT_DECORATION_LINE = exports.TEXT_DECORATION = exports.TEXT_DECORATION_STYLE = undefined;\n\n var _Color = __webpack_require__(0);\n\n var _Color2 = _interopRequireDefault(_Color);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n var TEXT_DECORATION_STYLE = exports.TEXT_DECORATION_STYLE = {\n SOLID: 0,\n DOUBLE: 1,\n DOTTED: 2,\n DASHED: 3,\n WAVY: 4\n };\n\n var TEXT_DECORATION = exports.TEXT_DECORATION = {\n NONE: null\n };\n\n var TEXT_DECORATION_LINE = exports.TEXT_DECORATION_LINE = {\n UNDERLINE: 1,\n OVERLINE: 2,\n LINE_THROUGH: 3,\n BLINK: 4\n };\n\n var parseLine = function parseLine(line) {\n switch (line) {\n case 'underline':\n return TEXT_DECORATION_LINE.UNDERLINE;\n case 'overline':\n return TEXT_DECORATION_LINE.OVERLINE;\n case 'line-through':\n return TEXT_DECORATION_LINE.LINE_THROUGH;\n }\n return TEXT_DECORATION_LINE.BLINK;\n };\n\n var parseTextDecorationLine = function parseTextDecorationLine(line) {\n if (line === 'none') {\n return null;\n }\n\n return line.split(' ').map(parseLine);\n };\n\n var parseTextDecorationStyle = function parseTextDecorationStyle(style) {\n switch (style) {\n case 'double':\n return TEXT_DECORATION_STYLE.DOUBLE;\n case 'dotted':\n return TEXT_DECORATION_STYLE.DOTTED;\n case 'dashed':\n return TEXT_DECORATION_STYLE.DASHED;\n case 'wavy':\n return TEXT_DECORATION_STYLE.WAVY;\n }\n return TEXT_DECORATION_STYLE.SOLID;\n };\n\n var parseTextDecoration = exports.parseTextDecoration = function parseTextDecoration(style) {\n var textDecorationLine = parseTextDecorationLine(style.textDecorationLine ? style.textDecorationLine : style.textDecoration);\n if (textDecorationLine === null) {\n return TEXT_DECORATION.NONE;\n }\n\n var textDecorationColor = style.textDecorationColor ? new _Color2.default(style.textDecorationColor) : null;\n var textDecorationStyle = parseTextDecorationStyle(style.textDecorationStyle);\n\n return {\n textDecorationLine: textDecorationLine,\n textDecorationColor: textDecorationColor,\n textDecorationStyle: textDecorationStyle\n };\n };\n\n /***/\n },\n /* 12 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.parseBorder = exports.BORDER_SIDES = exports.BORDER_STYLE = undefined;\n\n var _Color = __webpack_require__(0);\n\n var _Color2 = _interopRequireDefault(_Color);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n var BORDER_STYLE = exports.BORDER_STYLE = {\n NONE: 0,\n SOLID: 1\n };\n\n var BORDER_SIDES = exports.BORDER_SIDES = {\n TOP: 0,\n RIGHT: 1,\n BOTTOM: 2,\n LEFT: 3\n };\n\n var SIDES = Object.keys(BORDER_SIDES).map(function (s) {\n return s.toLowerCase();\n });\n\n var parseBorderStyle = function parseBorderStyle(style) {\n switch (style) {\n case 'none':\n return BORDER_STYLE.NONE;\n }\n return BORDER_STYLE.SOLID;\n };\n\n var parseBorder = exports.parseBorder = function parseBorder(style) {\n return SIDES.map(function (side) {\n var borderColor = new _Color2.default(style.getPropertyValue('border-' + side + '-color'));\n var borderStyle = parseBorderStyle(style.getPropertyValue('border-' + side + '-style'));\n var borderWidth = parseFloat(style.getPropertyValue('border-' + side + '-width'));\n return {\n borderColor: borderColor,\n borderStyle: borderStyle,\n borderWidth: isNaN(borderWidth) ? 0 : borderWidth\n };\n });\n };\n\n /***/\n },\n /* 13 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var toCodePoints = exports.toCodePoints = function toCodePoints(str) {\n var codePoints = [];\n var i = 0;\n var length = str.length;\n while (i < length) {\n var value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n var extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n };\n\n var fromCodePoint = exports.fromCodePoint = function fromCodePoint() {\n if (String.fromCodePoint) {\n return String.fromCodePoint.apply(String, arguments);\n }\n\n var length = arguments.length;\n if (!length) {\n return '';\n }\n\n var codeUnits = [];\n\n var index = -1;\n var result = '';\n while (++index < length) {\n var codePoint = arguments.length <= index ? undefined : arguments[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode.apply(String, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n // Use a lookup table to find the index.\n var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n var decode = exports.decode = function decode(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length,\n i = void 0,\n p = 0,\n encoded1 = void 0,\n encoded2 = void 0,\n encoded3 = void 0,\n encoded4 = void 0;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined' && typeof Uint8Array.prototype.slice !== 'undefined' ? new ArrayBuffer(bufferLength) : new Array(bufferLength);\n var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n\n return buffer;\n };\n\n var polyUint16Array = exports.polyUint16Array = function polyUint16Array(buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var _i = 0; _i < length; _i += 2) {\n bytes.push(buffer[_i + 1] << 8 | buffer[_i]);\n }\n return bytes;\n };\n\n var polyUint32Array = exports.polyUint32Array = function polyUint32Array(buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var _i2 = 0; _i2 < length; _i2 += 4) {\n bytes.push(buffer[_i2 + 3] << 24 | buffer[_i2 + 2] << 16 | buffer[_i2 + 1] << 8 | buffer[_i2]);\n }\n return bytes;\n };\n\n /***/\n },\n /* 14 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.createCounterText = exports.inlineListItemElement = exports.getListOwner = undefined;\n\n var _Util = __webpack_require__(4);\n\n var _NodeContainer = __webpack_require__(3);\n\n var _NodeContainer2 = _interopRequireDefault(_NodeContainer);\n\n var _TextContainer = __webpack_require__(9);\n\n var _TextContainer2 = _interopRequireDefault(_TextContainer);\n\n var _listStyle = __webpack_require__(8);\n\n var _Unicode = __webpack_require__(24);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n // Margin between the enumeration and the list item content\n var MARGIN_RIGHT = 7;\n\n var ancestorTypes = ['OL', 'UL', 'MENU'];\n\n var getListOwner = exports.getListOwner = function getListOwner(container) {\n var parent = container.parent;\n if (!parent) {\n return null;\n }\n\n do {\n var isAncestor = ancestorTypes.indexOf(parent.tagName) !== -1;\n if (isAncestor) {\n return parent;\n }\n parent = parent.parent;\n } while (parent);\n\n return container.parent;\n };\n\n var inlineListItemElement = exports.inlineListItemElement = function inlineListItemElement(node, container, resourceLoader) {\n var listStyle = container.style.listStyle;\n\n if (!listStyle) {\n return;\n }\n\n var style = node.ownerDocument.defaultView.getComputedStyle(node, null);\n var wrapper = node.ownerDocument.createElement('html2canvaswrapper');\n (0, _Util.copyCSSStyles)(style, wrapper);\n\n wrapper.style.position = 'absolute';\n wrapper.style.bottom = 'auto';\n wrapper.style.display = 'block';\n wrapper.style.letterSpacing = 'normal';\n\n switch (listStyle.listStylePosition) {\n case _listStyle.LIST_STYLE_POSITION.OUTSIDE:\n wrapper.style.left = 'auto';\n wrapper.style.right = node.ownerDocument.defaultView.innerWidth - container.bounds.left - container.style.margin[1].getAbsoluteValue(container.bounds.width) + MARGIN_RIGHT + 'px';\n wrapper.style.textAlign = 'right';\n break;\n case _listStyle.LIST_STYLE_POSITION.INSIDE:\n wrapper.style.left = container.bounds.left - container.style.margin[3].getAbsoluteValue(container.bounds.width) + 'px';\n wrapper.style.right = 'auto';\n wrapper.style.textAlign = 'left';\n break;\n }\n\n var text = void 0;\n var MARGIN_TOP = container.style.margin[0].getAbsoluteValue(container.bounds.width);\n var styleImage = listStyle.listStyleImage;\n if (styleImage) {\n if (styleImage.method === 'url') {\n var image = node.ownerDocument.createElement('img');\n image.src = styleImage.args[0];\n wrapper.style.top = container.bounds.top - MARGIN_TOP + 'px';\n wrapper.style.width = 'auto';\n wrapper.style.height = 'auto';\n wrapper.appendChild(image);\n } else {\n var size = parseFloat(container.style.font.fontSize) * 0.5;\n wrapper.style.top = container.bounds.top - MARGIN_TOP + container.bounds.height - 1.5 * size + 'px';\n wrapper.style.width = size + 'px';\n wrapper.style.height = size + 'px';\n wrapper.style.backgroundImage = style.listStyleImage;\n }\n } else if (typeof container.listIndex === 'number') {\n text = node.ownerDocument.createTextNode(createCounterText(container.listIndex, listStyle.listStyleType, true));\n wrapper.appendChild(text);\n wrapper.style.top = container.bounds.top - MARGIN_TOP + 'px';\n }\n\n // $FlowFixMe\n var body = node.ownerDocument.body;\n body.appendChild(wrapper);\n\n if (text) {\n container.childNodes.push(_TextContainer2.default.fromTextNode(text, container));\n body.removeChild(wrapper);\n } else {\n // $FlowFixMe\n container.childNodes.push(new _NodeContainer2.default(wrapper, container, resourceLoader, 0));\n }\n };\n\n var ROMAN_UPPER = {\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n };\n\n var ARMENIAN = {\n integers: [9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],\n values: ['Ք', 'Փ', 'Ւ', 'Ց', 'Ր', 'Տ', 'Վ', 'Ս', 'Ռ', 'Ջ', 'Պ', 'Չ', 'Ո', 'Շ', 'Ն', 'Յ', 'Մ', 'Ճ', 'Ղ', 'Ձ', 'Հ', 'Կ', 'Ծ', 'Խ', 'Լ', 'Ի', 'Ժ', 'Թ', 'Ը', 'Է', 'Զ', 'Ե', 'Դ', 'Գ', 'Բ', 'Ա']\n };\n\n var HEBREW = {\n integers: [10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],\n values: ['י׳', 'ט׳', 'ח׳', 'ז׳', 'ו׳', 'ה׳', 'ד׳', 'ג׳', 'ב׳', 'א׳', 'ת', 'ש', 'ר', 'ק', 'צ', 'פ', 'ע', 'ס', 'נ', 'מ', 'ל', 'כ', 'יט', 'יח', 'יז', 'טז', 'טו', 'י', 'ט', 'ח', 'ז', 'ו', 'ה', 'ד', 'ג', 'ב', 'א']\n };\n\n var GEORGIAN = {\n integers: [10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],\n values: ['ჵ', 'ჰ', 'ჯ', 'ჴ', 'ხ', 'ჭ', 'წ', 'ძ', 'ც', 'ჩ', 'შ', 'ყ', 'ღ', 'ქ', 'ფ', 'ჳ', 'ტ', 'ს', 'რ', 'ჟ', 'პ', 'ო', 'ჲ', 'ნ', 'მ', 'ლ', 'კ', 'ი', 'თ', 'ჱ', 'ზ', 'ვ', 'ე', 'დ', 'გ', 'ბ', 'ა']\n };\n\n var createAdditiveCounter = function createAdditiveCounter(value, min, max, symbols, fallback, suffix) {\n if (value < min || value > max) {\n return createCounterText(value, fallback, suffix.length > 0);\n }\n\n return symbols.integers.reduce(function (string, integer, index) {\n while (value >= integer) {\n value -= integer;\n string += symbols.values[index];\n }\n return string;\n }, '') + suffix;\n };\n\n var createCounterStyleWithSymbolResolver = function createCounterStyleWithSymbolResolver(value, codePointRangeLength, isNumeric, resolver) {\n var string = '';\n\n do {\n if (!isNumeric) {\n value--;\n }\n string = resolver(value) + string;\n value /= codePointRangeLength;\n } while (value * codePointRangeLength >= codePointRangeLength);\n\n return string;\n };\n\n var createCounterStyleFromRange = function createCounterStyleFromRange(value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {\n var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n\n return (value < 0 ? '-' : '') + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {\n return (0, _Unicode.fromCodePoint)(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);\n }) + suffix);\n };\n\n var createCounterStyleFromSymbols = function createCounterStyleFromSymbols(value, symbols) {\n var suffix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '. ';\n\n var codePointRangeLength = symbols.length;\n return createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) {\n return symbols[Math.floor(codePoint % codePointRangeLength)];\n }) + suffix;\n };\n\n var CJK_ZEROS = 1 << 0;\n var CJK_TEN_COEFFICIENTS = 1 << 1;\n var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\n var CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n\n var createCJKCounter = function createCJKCounter(value, numbers, multipliers, negativeSign, suffix, flags) {\n if (value < -9999 || value > 9999) {\n return createCounterText(value, _listStyle.LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\n }\n var tmp = Math.abs(value);\n var string = suffix;\n\n if (tmp === 0) {\n return numbers[0] + string;\n }\n\n for (var digit = 0; tmp > 0 && digit <= 4; digit++) {\n var coefficient = tmp % 10;\n\n if (coefficient === 0 && (0, _Util.contains)(flags, CJK_ZEROS) && string !== '') {\n string = numbers[coefficient] + string;\n } else if (coefficient > 1 || coefficient === 1 && digit === 0 || coefficient === 1 && digit === 1 && (0, _Util.contains)(flags, CJK_TEN_COEFFICIENTS) || coefficient === 1 && digit === 1 && (0, _Util.contains)(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100 || coefficient === 1 && digit > 1 && (0, _Util.contains)(flags, CJK_HUNDRED_COEFFICIENTS)) {\n string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n } else if (coefficient === 1 && digit > 0) {\n string = multipliers[digit - 1] + string;\n }\n tmp = Math.floor(tmp / 10);\n }\n\n return (value < 0 ? negativeSign : '') + string;\n };\n\n var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\n var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\n var JAPANESE_NEGATIVE = 'マイナス';\n var KOREAN_NEGATIVE = '마이너스 ';\n\n var createCounterText = exports.createCounterText = function createCounterText(value, type, appendSuffix) {\n var defaultSuffix = appendSuffix ? '. ' : '';\n var cjkSuffix = appendSuffix ? '、' : '';\n var koreanSuffix = appendSuffix ? ', ' : '';\n switch (type) {\n case _listStyle.LIST_STYLE_TYPE.DISC:\n return '•';\n case _listStyle.LIST_STYLE_TYPE.CIRCLE:\n return '◦';\n case _listStyle.LIST_STYLE_TYPE.SQUARE:\n return '◾';\n case _listStyle.LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:\n var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n return string.length < 4 ? '0' + string : string;\n case _listStyle.LIST_STYLE_TYPE.CJK_DECIMAL:\n return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n case _listStyle.LIST_STYLE_TYPE.LOWER_ROMAN:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, _listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();\n case _listStyle.LIST_STYLE_TYPE.UPPER_ROMAN:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, _listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.LOWER_GREEK:\n return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.LOWER_ALPHA:\n return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.UPPER_ALPHA:\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.ARABIC_INDIC:\n return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.ARMENIAN:\n case _listStyle.LIST_STYLE_TYPE.UPPER_ARMENIAN:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, _listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.LOWER_ARMENIAN:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, _listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();\n case _listStyle.LIST_STYLE_TYPE.BENGALI:\n return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.CAMBODIAN:\n case _listStyle.LIST_STYLE_TYPE.KHMER:\n return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:\n return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n case _listStyle.LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:\n return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n case _listStyle.LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:\n case _listStyle.LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case _listStyle.LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\n return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case _listStyle.LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case _listStyle.LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\n return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case _listStyle.LIST_STYLE_TYPE.JAPANESE_INFORMAL:\n return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n case _listStyle.LIST_STYLE_TYPE.JAPANESE_FORMAL:\n return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n case _listStyle.LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\n return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n case _listStyle.LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n case _listStyle.LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:\n return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n case _listStyle.LIST_STYLE_TYPE.DEVANAGARI:\n return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.GEORGIAN:\n return createAdditiveCounter(value, 1, 19999, GEORGIAN, _listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.GUJARATI:\n return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.GURMUKHI:\n return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.HEBREW:\n return createAdditiveCounter(value, 1, 10999, HEBREW, _listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.HIRAGANA:\n return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');\n case _listStyle.LIST_STYLE_TYPE.HIRAGANA_IROHA:\n return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');\n case _listStyle.LIST_STYLE_TYPE.KANNADA:\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.KATAKANA:\n return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);\n case _listStyle.LIST_STYLE_TYPE.KATAKANA_IROHA:\n return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);\n case _listStyle.LIST_STYLE_TYPE.LAO:\n return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.MONGOLIAN:\n return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.MYANMAR:\n return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.ORIYA:\n return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.PERSIAN:\n return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.TAMIL:\n return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.TELUGU:\n return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.THAI:\n return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.TIBETAN:\n return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n case _listStyle.LIST_STYLE_TYPE.DECIMAL:\n default:\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n }\n };\n\n /***/\n },\n /* 15 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n var _Path = __webpack_require__(6);\n\n var _textDecoration = __webpack_require__(11);\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var addColorStops = function addColorStops(gradient, canvasGradient) {\n var maxStop = Math.max.apply(null, gradient.colorStops.map(function (colorStop) {\n return colorStop.stop;\n }));\n var f = 1 / Math.max(1, maxStop);\n gradient.colorStops.forEach(function (colorStop) {\n canvasGradient.addColorStop(f * colorStop.stop, colorStop.color.toString());\n });\n };\n\n var CanvasRenderer = function () {\n function CanvasRenderer(canvas) {\n _classCallCheck(this, CanvasRenderer);\n\n this.canvas = canvas ? canvas : document.createElement('canvas');\n }\n\n _createClass(CanvasRenderer, [{\n key: 'render',\n value: function render(options) {\n this.ctx = this.canvas.getContext('2d');\n this.options = options;\n this.canvas.width = Math.floor(options.width * options.scale);\n this.canvas.height = Math.floor(options.height * options.scale);\n this.canvas.style.width = options.width + 'px';\n this.canvas.style.height = options.height + 'px';\n\n this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x, -options.y);\n this.ctx.textBaseline = 'bottom';\n options.logger.log('Canvas renderer initialized (' + options.width + 'x' + options.height + ' at ' + options.x + ',' + options.y + ') with scale ' + this.options.scale);\n }\n }, {\n key: 'clip',\n value: function clip(clipPaths, callback) {\n var _this = this;\n\n if (clipPaths.length) {\n this.ctx.save();\n clipPaths.forEach(function (path) {\n _this.path(path);\n _this.ctx.clip();\n });\n }\n\n callback();\n\n if (clipPaths.length) {\n this.ctx.restore();\n }\n }\n }, {\n key: 'drawImage',\n value: function drawImage(image, source, destination) {\n this.ctx.drawImage(image, source.left, source.top, source.width, source.height, destination.left, destination.top, destination.width, destination.height);\n }\n }, {\n key: 'drawShape',\n value: function drawShape(path, color) {\n this.path(path);\n this.ctx.fillStyle = color.toString();\n this.ctx.fill();\n }\n }, {\n key: 'fill',\n value: function fill(color) {\n this.ctx.fillStyle = color.toString();\n this.ctx.fill();\n }\n }, {\n key: 'getTarget',\n value: function getTarget() {\n return Promise.resolve(this.canvas);\n }\n }, {\n key: 'path',\n value: function path(_path) {\n var _this2 = this;\n\n this.ctx.beginPath();\n if (Array.isArray(_path)) {\n _path.forEach(function (point, index) {\n var start = point.type === _Path.PATH.VECTOR ? point : point.start;\n if (index === 0) {\n _this2.ctx.moveTo(start.x, start.y);\n } else {\n _this2.ctx.lineTo(start.x, start.y);\n }\n\n if (point.type === _Path.PATH.BEZIER_CURVE) {\n _this2.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);\n }\n });\n } else {\n this.ctx.arc(_path.x + _path.radius, _path.y + _path.radius, _path.radius, 0, Math.PI * 2, true);\n }\n\n this.ctx.closePath();\n }\n }, {\n key: 'rectangle',\n value: function rectangle(x, y, width, height, color) {\n this.ctx.fillStyle = color.toString();\n this.ctx.fillRect(x, y, width, height);\n }\n }, {\n key: 'renderLinearGradient',\n value: function renderLinearGradient(bounds, gradient) {\n var linearGradient = this.ctx.createLinearGradient(bounds.left + gradient.direction.x1, bounds.top + gradient.direction.y1, bounds.left + gradient.direction.x0, bounds.top + gradient.direction.y0);\n\n addColorStops(gradient, linearGradient);\n this.ctx.fillStyle = linearGradient;\n this.ctx.fillRect(bounds.left, bounds.top, bounds.width, bounds.height);\n }\n }, {\n key: 'renderRadialGradient',\n value: function renderRadialGradient(bounds, gradient) {\n var _this3 = this;\n\n var x = bounds.left + gradient.center.x;\n var y = bounds.top + gradient.center.y;\n\n var radialGradient = this.ctx.createRadialGradient(x, y, 0, x, y, gradient.radius.x);\n if (!radialGradient) {\n return;\n }\n\n addColorStops(gradient, radialGradient);\n this.ctx.fillStyle = radialGradient;\n\n if (gradient.radius.x !== gradient.radius.y) {\n // transforms for elliptical radial gradient\n var midX = bounds.left + 0.5 * bounds.width;\n var midY = bounds.top + 0.5 * bounds.height;\n var f = gradient.radius.y / gradient.radius.x;\n var invF = 1 / f;\n\n this.transform(midX, midY, [1, 0, 0, f, 0, 0], function () {\n return _this3.ctx.fillRect(bounds.left, invF * (bounds.top - midY) + midY, bounds.width, bounds.height * invF);\n });\n } else {\n this.ctx.fillRect(bounds.left, bounds.top, bounds.width, bounds.height);\n }\n }\n }, {\n key: 'renderRepeat',\n value: function renderRepeat(path, image, imageSize, offsetX, offsetY) {\n this.path(path);\n this.ctx.fillStyle = this.ctx.createPattern(this.resizeImage(image, imageSize), 'repeat');\n this.ctx.translate(offsetX, offsetY);\n this.ctx.fill();\n this.ctx.translate(-offsetX, -offsetY);\n }\n }, {\n key: 'renderTextNode',\n value: function renderTextNode(textBounds, color, font, textDecoration, textShadows) {\n var _this4 = this;\n\n this.ctx.font = [font.fontStyle, font.fontVariant, font.fontWeight, font.fontSize, font.fontFamily].join(' ');\n\n textBounds.forEach(function (text) {\n _this4.ctx.fillStyle = color.toString();\n if (textShadows && text.text.trim().length) {\n textShadows.slice(0).reverse().forEach(function (textShadow) {\n _this4.ctx.shadowColor = textShadow.color.toString();\n _this4.ctx.shadowOffsetX = textShadow.offsetX * _this4.options.scale;\n _this4.ctx.shadowOffsetY = textShadow.offsetY * _this4.options.scale;\n _this4.ctx.shadowBlur = textShadow.blur;\n\n _this4.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);\n });\n } else {\n _this4.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);\n }\n\n if (textDecoration !== null) {\n var textDecorationColor = textDecoration.textDecorationColor || color;\n textDecoration.textDecorationLine.forEach(function (textDecorationLine) {\n switch (textDecorationLine) {\n case _textDecoration.TEXT_DECORATION_LINE.UNDERLINE:\n // Draws a line at the baseline of the font\n // TODO As some browsers display the line as more than 1px if the font-size is big,\n // need to take that into account both in position and size\n var _options$fontMetrics$ = _this4.options.fontMetrics.getMetrics(font),\n baseline = _options$fontMetrics$.baseline;\n\n _this4.rectangle(text.bounds.left, Math.round(text.bounds.top + baseline), text.bounds.width, 1, textDecorationColor);\n break;\n case _textDecoration.TEXT_DECORATION_LINE.OVERLINE:\n _this4.rectangle(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1, textDecorationColor);\n break;\n case _textDecoration.TEXT_DECORATION_LINE.LINE_THROUGH:\n // TODO try and find exact position for line-through\n var _options$fontMetrics$2 = _this4.options.fontMetrics.getMetrics(font),\n middle = _options$fontMetrics$2.middle;\n\n _this4.rectangle(text.bounds.left, Math.ceil(text.bounds.top + middle), text.bounds.width, 1, textDecorationColor);\n break;\n }\n });\n }\n });\n }\n }, {\n key: 'resizeImage',\n value: function resizeImage(image, size) {\n if (image.width === size.width && image.height === size.height) {\n return image;\n }\n\n var canvas = this.canvas.ownerDocument.createElement('canvas');\n canvas.width = size.width;\n canvas.height = size.height;\n var ctx = canvas.getContext('2d');\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, size.width, size.height);\n return canvas;\n }\n }, {\n key: 'setOpacity',\n value: function setOpacity(opacity) {\n this.ctx.globalAlpha = opacity;\n }\n }, {\n key: 'transform',\n value: function transform(offsetX, offsetY, matrix, callback) {\n this.ctx.save();\n this.ctx.translate(offsetX, offsetY);\n this.ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n this.ctx.translate(-offsetX, -offsetY);\n\n callback();\n\n this.ctx.restore();\n }\n }]);\n\n return CanvasRenderer;\n }();\n\n exports.default = CanvasRenderer;\n\n /***/\n },\n /* 16 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var Logger = function () {\n function Logger(enabled, id, start) {\n _classCallCheck(this, Logger);\n\n this.enabled = typeof window !== 'undefined' && enabled;\n this.start = start ? start : Date.now();\n this.id = id;\n }\n\n _createClass(Logger, [{\n key: 'child',\n value: function child(id) {\n return new Logger(this.enabled, id, this.start);\n }\n\n // eslint-disable-next-line flowtype/no-weak-types\n\n }, {\n key: 'log',\n value: function log() {\n if (this.enabled && window.console && window.console.log) {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n Function.prototype.bind.call(window.console.log, window.console).apply(window.console, [Date.now() - this.start + 'ms', this.id ? 'html2canvas (' + this.id + '):' : 'html2canvas:'].concat([].slice.call(args, 0)));\n }\n }\n\n // eslint-disable-next-line flowtype/no-weak-types\n\n }, {\n key: 'error',\n value: function error() {\n if (this.enabled && window.console && window.console.error) {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n Function.prototype.bind.call(window.console.error, window.console).apply(window.console, [Date.now() - this.start + 'ms', this.id ? 'html2canvas (' + this.id + '):' : 'html2canvas:'].concat([].slice.call(args, 0)));\n }\n }\n }]);\n\n return Logger;\n }();\n\n exports.default = Logger;\n\n /***/\n },\n /* 17 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.parsePadding = exports.PADDING_SIDES = undefined;\n\n var _Length = __webpack_require__(2);\n\n var _Length2 = _interopRequireDefault(_Length);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n var PADDING_SIDES = exports.PADDING_SIDES = {\n TOP: 0,\n RIGHT: 1,\n BOTTOM: 2,\n LEFT: 3\n };\n\n var SIDES = ['top', 'right', 'bottom', 'left'];\n\n var parsePadding = exports.parsePadding = function parsePadding(style) {\n return SIDES.map(function (side) {\n return new _Length2.default(style.getPropertyValue('padding-' + side));\n });\n };\n\n /***/\n },\n /* 18 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var OVERFLOW_WRAP = exports.OVERFLOW_WRAP = {\n NORMAL: 0,\n BREAK_WORD: 1\n };\n\n var parseOverflowWrap = exports.parseOverflowWrap = function parseOverflowWrap(overflow) {\n switch (overflow) {\n case 'break-word':\n return OVERFLOW_WRAP.BREAK_WORD;\n case 'normal':\n default:\n return OVERFLOW_WRAP.NORMAL;\n }\n };\n\n /***/\n },\n /* 19 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var POSITION = exports.POSITION = {\n STATIC: 0,\n RELATIVE: 1,\n ABSOLUTE: 2,\n FIXED: 3,\n STICKY: 4\n };\n\n var parsePosition = exports.parsePosition = function parsePosition(position) {\n switch (position) {\n case 'relative':\n return POSITION.RELATIVE;\n case 'absolute':\n return POSITION.ABSOLUTE;\n case 'fixed':\n return POSITION.FIXED;\n case 'sticky':\n return POSITION.STICKY;\n }\n\n return POSITION.STATIC;\n };\n\n /***/\n },\n /* 20 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var TEXT_TRANSFORM = exports.TEXT_TRANSFORM = {\n NONE: 0,\n LOWERCASE: 1,\n UPPERCASE: 2,\n CAPITALIZE: 3\n };\n\n var parseTextTransform = exports.parseTextTransform = function parseTextTransform(textTransform) {\n switch (textTransform) {\n case 'uppercase':\n return TEXT_TRANSFORM.UPPERCASE;\n case 'lowercase':\n return TEXT_TRANSFORM.LOWERCASE;\n case 'capitalize':\n return TEXT_TRANSFORM.CAPITALIZE;\n }\n\n return TEXT_TRANSFORM.NONE;\n };\n\n /***/\n },\n /* 21 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.reformatInputBounds = exports.inlineSelectElement = exports.inlineTextAreaElement = exports.inlineInputElement = exports.getInputBorderRadius = exports.INPUT_BACKGROUND = exports.INPUT_BORDERS = exports.INPUT_COLOR = undefined;\n\n var _TextContainer = __webpack_require__(9);\n\n var _TextContainer2 = _interopRequireDefault(_TextContainer);\n\n var _background = __webpack_require__(5);\n\n var _border = __webpack_require__(12);\n\n var _Circle = __webpack_require__(50);\n\n var _Circle2 = _interopRequireDefault(_Circle);\n\n var _Vector = __webpack_require__(7);\n\n var _Vector2 = _interopRequireDefault(_Vector);\n\n var _Color = __webpack_require__(0);\n\n var _Color2 = _interopRequireDefault(_Color);\n\n var _Length = __webpack_require__(2);\n\n var _Length2 = _interopRequireDefault(_Length);\n\n var _Bounds = __webpack_require__(1);\n\n var _TextBounds = __webpack_require__(22);\n\n var _Util = __webpack_require__(4);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n var INPUT_COLOR = exports.INPUT_COLOR = new _Color2.default([42, 42, 42]);\n var INPUT_BORDER_COLOR = new _Color2.default([165, 165, 165]);\n var INPUT_BACKGROUND_COLOR = new _Color2.default([222, 222, 222]);\n var INPUT_BORDER = {\n borderWidth: 1,\n borderColor: INPUT_BORDER_COLOR,\n borderStyle: _border.BORDER_STYLE.SOLID\n };\n var INPUT_BORDERS = exports.INPUT_BORDERS = [INPUT_BORDER, INPUT_BORDER, INPUT_BORDER, INPUT_BORDER];\n var INPUT_BACKGROUND = exports.INPUT_BACKGROUND = {\n backgroundColor: INPUT_BACKGROUND_COLOR,\n backgroundImage: [],\n backgroundClip: _background.BACKGROUND_CLIP.PADDING_BOX,\n backgroundOrigin: _background.BACKGROUND_ORIGIN.PADDING_BOX\n };\n\n var RADIO_BORDER_RADIUS = new _Length2.default('50%');\n var RADIO_BORDER_RADIUS_TUPLE = [RADIO_BORDER_RADIUS, RADIO_BORDER_RADIUS];\n var INPUT_RADIO_BORDER_RADIUS = [RADIO_BORDER_RADIUS_TUPLE, RADIO_BORDER_RADIUS_TUPLE, RADIO_BORDER_RADIUS_TUPLE, RADIO_BORDER_RADIUS_TUPLE];\n\n var CHECKBOX_BORDER_RADIUS = new _Length2.default('3px');\n var CHECKBOX_BORDER_RADIUS_TUPLE = [CHECKBOX_BORDER_RADIUS, CHECKBOX_BORDER_RADIUS];\n var INPUT_CHECKBOX_BORDER_RADIUS = [CHECKBOX_BORDER_RADIUS_TUPLE, CHECKBOX_BORDER_RADIUS_TUPLE, CHECKBOX_BORDER_RADIUS_TUPLE, CHECKBOX_BORDER_RADIUS_TUPLE];\n\n var getInputBorderRadius = exports.getInputBorderRadius = function getInputBorderRadius(node) {\n return node.type === 'radio' ? INPUT_RADIO_BORDER_RADIUS : INPUT_CHECKBOX_BORDER_RADIUS;\n };\n\n var inlineInputElement = exports.inlineInputElement = function inlineInputElement(node, container) {\n if (node.type === 'radio' || node.type === 'checkbox') {\n if (node.checked) {\n var size = Math.min(container.bounds.width, container.bounds.height);\n container.childNodes.push(node.type === 'checkbox' ? [new _Vector2.default(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79), new _Vector2.default(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549), new _Vector2.default(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071), new _Vector2.default(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649), new _Vector2.default(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23), new _Vector2.default(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085), new _Vector2.default(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)] : new _Circle2.default(container.bounds.left + size / 4, container.bounds.top + size / 4, size / 4));\n }\n } else {\n inlineFormElement(getInputValue(node), node, container, false);\n }\n };\n\n var inlineTextAreaElement = exports.inlineTextAreaElement = function inlineTextAreaElement(node, container) {\n inlineFormElement(node.value, node, container, true);\n };\n\n var inlineSelectElement = exports.inlineSelectElement = function inlineSelectElement(node, container) {\n var option = node.options[node.selectedIndex || 0];\n inlineFormElement(option ? option.text || '' : '', node, container, false);\n };\n\n var reformatInputBounds = exports.reformatInputBounds = function reformatInputBounds(bounds) {\n if (bounds.width > bounds.height) {\n bounds.left += (bounds.width - bounds.height) / 2;\n bounds.width = bounds.height;\n } else if (bounds.width < bounds.height) {\n bounds.top += (bounds.height - bounds.width) / 2;\n bounds.height = bounds.width;\n }\n return bounds;\n };\n\n var inlineFormElement = function inlineFormElement(value, node, container, allowLinebreak) {\n var body = node.ownerDocument.body;\n if (value.length > 0 && body) {\n var wrapper = node.ownerDocument.createElement('html2canvaswrapper');\n (0, _Util.copyCSSStyles)(node.ownerDocument.defaultView.getComputedStyle(node, null), wrapper);\n wrapper.style.position = 'absolute';\n wrapper.style.left = container.bounds.left + 'px';\n wrapper.style.top = container.bounds.top + 'px';\n if (!allowLinebreak) {\n wrapper.style.whiteSpace = 'nowrap';\n }\n var text = node.ownerDocument.createTextNode(value);\n wrapper.appendChild(text);\n body.appendChild(wrapper);\n container.childNodes.push(_TextContainer2.default.fromTextNode(text, container));\n body.removeChild(wrapper);\n }\n };\n\n var getInputValue = function getInputValue(node) {\n var value = node.type === 'password' ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n\n return value.length === 0 ? node.placeholder || '' : value;\n };\n\n /***/\n },\n /* 22 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.parseTextBounds = exports.TextBounds = undefined;\n\n var _Bounds = __webpack_require__(1);\n\n var _textDecoration = __webpack_require__(11);\n\n var _Feature = __webpack_require__(10);\n\n var _Feature2 = _interopRequireDefault(_Feature);\n\n var _Unicode = __webpack_require__(24);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var TextBounds = exports.TextBounds = function TextBounds(text, bounds) {\n _classCallCheck(this, TextBounds);\n\n this.text = text;\n this.bounds = bounds;\n };\n\n var parseTextBounds = exports.parseTextBounds = function parseTextBounds(value, parent, node) {\n var letterRendering = parent.style.letterSpacing !== 0;\n var textList = letterRendering ? (0, _Unicode.toCodePoints)(value).map(function (i) {\n return (0, _Unicode.fromCodePoint)(i);\n }) : (0, _Unicode.breakWords)(value, parent);\n var length = textList.length;\n var defaultView = node.parentNode ? node.parentNode.ownerDocument.defaultView : null;\n var scrollX = defaultView ? defaultView.pageXOffset : 0;\n var scrollY = defaultView ? defaultView.pageYOffset : 0;\n var textBounds = [];\n var offset = 0;\n for (var i = 0; i < length; i++) {\n var text = textList[i];\n if (parent.style.textDecoration !== _textDecoration.TEXT_DECORATION.NONE || text.trim().length > 0) {\n if (_Feature2.default.SUPPORT_RANGE_BOUNDS) {\n textBounds.push(new TextBounds(text, getRangeBounds(node, offset, text.length, scrollX, scrollY)));\n } else {\n var replacementNode = node.splitText(text.length);\n textBounds.push(new TextBounds(text, getWrapperBounds(node, scrollX, scrollY)));\n node = replacementNode;\n }\n } else if (!_Feature2.default.SUPPORT_RANGE_BOUNDS) {\n node = node.splitText(text.length);\n }\n offset += text.length;\n }\n return textBounds;\n };\n\n var getWrapperBounds = function getWrapperBounds(node, scrollX, scrollY) {\n var wrapper = node.ownerDocument.createElement('html2canvaswrapper');\n wrapper.appendChild(node.cloneNode(true));\n var parentNode = node.parentNode;\n if (parentNode) {\n parentNode.replaceChild(wrapper, node);\n var bounds = (0, _Bounds.parseBounds)(wrapper, scrollX, scrollY);\n if (wrapper.firstChild) {\n parentNode.replaceChild(wrapper.firstChild, wrapper);\n }\n return bounds;\n }\n return new _Bounds.Bounds(0, 0, 0, 0);\n };\n\n var getRangeBounds = function getRangeBounds(node, offset, length, scrollX, scrollY) {\n var range = node.ownerDocument.createRange();\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return _Bounds.Bounds.fromClientRect(range.getBoundingClientRect(), scrollX, scrollY);\n };\n\n /***/\n },\n /* 23 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var ForeignObjectRenderer = function () {\n function ForeignObjectRenderer(element) {\n _classCallCheck(this, ForeignObjectRenderer);\n\n this.element = element;\n }\n\n _createClass(ForeignObjectRenderer, [{\n key: 'render',\n value: function render(options) {\n var _this = this;\n\n this.options = options;\n this.canvas = document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d');\n this.canvas.width = Math.floor(options.width) * options.scale;\n this.canvas.height = Math.floor(options.height) * options.scale;\n this.canvas.style.width = options.width + 'px';\n this.canvas.style.height = options.height + 'px';\n\n options.logger.log('ForeignObject renderer initialized (' + options.width + 'x' + options.height + ' at ' + options.x + ',' + options.y + ') with scale ' + options.scale);\n var svg = createForeignObjectSVG(Math.max(options.windowWidth, options.width) * options.scale, Math.max(options.windowHeight, options.height) * options.scale, options.scrollX * options.scale, options.scrollY * options.scale, this.element);\n\n return loadSerializedSVG(svg).then(function (img) {\n if (options.backgroundColor) {\n _this.ctx.fillStyle = options.backgroundColor.toString();\n _this.ctx.fillRect(0, 0, options.width * options.scale, options.height * options.scale);\n }\n\n _this.ctx.drawImage(img, -options.x * options.scale, -options.y * options.scale);\n return _this.canvas;\n });\n }\n }]);\n\n return ForeignObjectRenderer;\n }();\n\n exports.default = ForeignObjectRenderer;\n var createForeignObjectSVG = exports.createForeignObjectSVG = function createForeignObjectSVG(width, height, x, y, node) {\n var xmlns = 'http://www.w3.org/2000/svg';\n var svg = document.createElementNS(xmlns, 'svg');\n var foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS(null, 'width', width);\n svg.setAttributeNS(null, 'height', height);\n\n foreignObject.setAttributeNS(null, 'width', '100%');\n foreignObject.setAttributeNS(null, 'height', '100%');\n foreignObject.setAttributeNS(null, 'x', x);\n foreignObject.setAttributeNS(null, 'y', y);\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n\n foreignObject.appendChild(node);\n\n return svg;\n };\n\n var loadSerializedSVG = exports.loadSerializedSVG = function loadSerializedSVG(svg) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () {\n return resolve(img);\n };\n img.onerror = reject;\n\n img.src = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n });\n };\n\n /***/\n },\n /* 24 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.breakWords = exports.fromCodePoint = exports.toCodePoints = undefined;\n\n var _cssLineBreak = __webpack_require__(46);\n\n Object.defineProperty(exports, 'toCodePoints', {\n enumerable: true,\n get: function get() {\n return _cssLineBreak.toCodePoints;\n }\n });\n Object.defineProperty(exports, 'fromCodePoint', {\n enumerable: true,\n get: function get() {\n return _cssLineBreak.fromCodePoint;\n }\n });\n\n var _NodeContainer = __webpack_require__(3);\n\n var _NodeContainer2 = _interopRequireDefault(_NodeContainer);\n\n var _overflowWrap = __webpack_require__(18);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n var breakWords = exports.breakWords = function breakWords(str, parent) {\n var breaker = (0, _cssLineBreak.LineBreaker)(str, {\n lineBreak: parent.style.lineBreak,\n wordBreak: parent.style.overflowWrap === _overflowWrap.OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : parent.style.wordBreak\n });\n\n var words = [];\n var bk = void 0;\n\n while (!(bk = breaker.next()).done) {\n words.push(bk.value.slice());\n }\n\n return words;\n };\n\n /***/\n },\n /* 25 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FontMetrics = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n var _Util = __webpack_require__(4);\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var SAMPLE_TEXT = 'Hidden Text';\n\n var FontMetrics = exports.FontMetrics = function () {\n function FontMetrics(document) {\n _classCallCheck(this, FontMetrics);\n\n this._data = {};\n this._document = document;\n }\n\n _createClass(FontMetrics, [{\n key: '_parseMetrics',\n value: function _parseMetrics(font) {\n var container = this._document.createElement('div');\n var img = this._document.createElement('img');\n var span = this._document.createElement('span');\n\n var body = this._document.body;\n if (!body) {\n throw new Error(true ? 'No document found for font metrics' : '');\n }\n\n container.style.visibility = 'hidden';\n container.style.fontFamily = font.fontFamily;\n container.style.fontSize = font.fontSize;\n container.style.margin = '0';\n container.style.padding = '0';\n\n body.appendChild(container);\n\n img.src = _Util.SMALL_IMAGE;\n img.width = 1;\n img.height = 1;\n\n img.style.margin = '0';\n img.style.padding = '0';\n img.style.verticalAlign = 'baseline';\n\n span.style.fontFamily = font.fontFamily;\n span.style.fontSize = font.fontSize;\n span.style.margin = '0';\n span.style.padding = '0';\n\n span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n container.appendChild(span);\n container.appendChild(img);\n var baseline = img.offsetTop - span.offsetTop + 2;\n\n container.removeChild(span);\n container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n\n container.style.lineHeight = 'normal';\n img.style.verticalAlign = 'super';\n\n var middle = img.offsetTop - container.offsetTop + 2;\n\n body.removeChild(container);\n\n return { baseline: baseline, middle: middle };\n }\n }, {\n key: 'getMetrics',\n value: function getMetrics(font) {\n var key = font.fontFamily + ' ' + font.fontSize;\n if (this._data[key] === undefined) {\n this._data[key] = this._parseMetrics(font);\n }\n\n return this._data[key];\n }\n }]);\n\n return FontMetrics;\n }();\n\n /***/\n },\n /* 26 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Proxy = undefined;\n\n var _Feature = __webpack_require__(10);\n\n var _Feature2 = _interopRequireDefault(_Feature);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n var Proxy = exports.Proxy = function Proxy(src, options) {\n if (!options.proxy) {\n return Promise.reject(true ? 'No proxy defined' : null);\n }\n var proxy = options.proxy;\n\n return new Promise(function (resolve, reject) {\n var responseType = _Feature2.default.SUPPORT_CORS_XHR && _Feature2.default.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n var xhr = _Feature2.default.SUPPORT_CORS_XHR ? new XMLHttpRequest() : new XDomainRequest();\n xhr.onload = function () {\n if (xhr instanceof XMLHttpRequest) {\n if (xhr.status === 200) {\n if (responseType === 'text') {\n resolve(xhr.response);\n } else {\n var reader = new FileReader();\n // $FlowFixMe\n reader.addEventListener('load', function () {\n return resolve(reader.result);\n }, false);\n // $FlowFixMe\n reader.addEventListener('error', function (e) {\n return reject(e);\n }, false);\n reader.readAsDataURL(xhr.response);\n }\n } else {\n reject(true ? 'Failed to proxy resource ' + src.substring(0, 256) + ' with status code ' + xhr.status : '');\n }\n } else {\n resolve(xhr.responseText);\n }\n };\n\n xhr.onerror = reject;\n xhr.open('GET', proxy + '?url=' + encodeURIComponent(src) + '&responseType=' + responseType);\n\n if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n xhr.responseType = responseType;\n }\n\n if (options.imageTimeout) {\n var timeout = options.imageTimeout;\n xhr.timeout = timeout;\n xhr.ontimeout = function () {\n return reject(true ? 'Timed out (' + timeout + 'ms) proxying ' + src.substring(0, 256) : '');\n };\n }\n\n xhr.send();\n });\n };\n\n /***/\n },\n /* 27 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }return target;\n };\n\n var _CanvasRenderer = __webpack_require__(15);\n\n var _CanvasRenderer2 = _interopRequireDefault(_CanvasRenderer);\n\n var _Logger = __webpack_require__(16);\n\n var _Logger2 = _interopRequireDefault(_Logger);\n\n var _Window = __webpack_require__(28);\n\n var _Bounds = __webpack_require__(1);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n var html2canvas = function html2canvas(element, conf) {\n var config = conf || {};\n var logger = new _Logger2.default(typeof config.logging === 'boolean' ? config.logging : true);\n logger.log('html2canvas ' + \"1.0.0-alpha.10\");\n\n if (true && typeof config.onrendered === 'function') {\n logger.error('onrendered option is deprecated, html2canvas returns a Promise with the canvas as the value');\n }\n\n var ownerDocument = element.ownerDocument;\n if (!ownerDocument) {\n return Promise.reject('Provided element is not within a Document');\n }\n var defaultView = ownerDocument.defaultView;\n\n var scrollX = defaultView.pageXOffset;\n var scrollY = defaultView.pageYOffset;\n\n var isDocument = element.tagName === 'HTML' || element.tagName === 'BODY';\n\n var _ref = isDocument ? (0, _Bounds.parseDocumentSize)(ownerDocument) : (0, _Bounds.parseBounds)(element, scrollX, scrollY),\n width = _ref.width,\n height = _ref.height,\n left = _ref.left,\n top = _ref.top;\n\n var defaultOptions = {\n async: true,\n allowTaint: false,\n backgroundColor: '#ffffff',\n imageTimeout: 15000,\n logging: true,\n proxy: null,\n removeContainer: true,\n foreignObjectRendering: false,\n scale: defaultView.devicePixelRatio || 1,\n target: new _CanvasRenderer2.default(config.canvas),\n useCORS: false,\n x: left,\n y: top,\n width: Math.ceil(width),\n height: Math.ceil(height),\n windowWidth: defaultView.innerWidth,\n windowHeight: defaultView.innerHeight,\n scrollX: defaultView.pageXOffset,\n scrollY: defaultView.pageYOffset\n };\n\n var result = (0, _Window.renderElement)(element, _extends({}, defaultOptions, config), logger);\n\n if (true) {\n return result.catch(function (e) {\n logger.error(e);\n throw e;\n });\n }\n return result;\n };\n\n html2canvas.CanvasRenderer = _CanvasRenderer2.default;\n\n module.exports = html2canvas;\n\n /***/\n },\n /* 28 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.renderElement = undefined;\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];var _n = true;var _d = false;var _e = undefined;try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;_e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }return _arr;\n }return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _Logger = __webpack_require__(16);\n\n var _Logger2 = _interopRequireDefault(_Logger);\n\n var _NodeParser = __webpack_require__(29);\n\n var _Renderer = __webpack_require__(51);\n\n var _Renderer2 = _interopRequireDefault(_Renderer);\n\n var _ForeignObjectRenderer = __webpack_require__(23);\n\n var _ForeignObjectRenderer2 = _interopRequireDefault(_ForeignObjectRenderer);\n\n var _Feature = __webpack_require__(10);\n\n var _Feature2 = _interopRequireDefault(_Feature);\n\n var _Bounds = __webpack_require__(1);\n\n var _Clone = __webpack_require__(54);\n\n var _Font = __webpack_require__(25);\n\n var _Color = __webpack_require__(0);\n\n var _Color2 = _interopRequireDefault(_Color);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n var renderElement = exports.renderElement = function renderElement(element, options, logger) {\n var ownerDocument = element.ownerDocument;\n\n var windowBounds = new _Bounds.Bounds(options.scrollX, options.scrollY, options.windowWidth, options.windowHeight);\n\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n var documentBackgroundColor = ownerDocument.documentElement ? new _Color2.default(getComputedStyle(ownerDocument.documentElement).backgroundColor) : _Color.TRANSPARENT;\n var bodyBackgroundColor = ownerDocument.body ? new _Color2.default(getComputedStyle(ownerDocument.body).backgroundColor) : _Color.TRANSPARENT;\n\n var backgroundColor = element === ownerDocument.documentElement ? documentBackgroundColor.isTransparent() ? bodyBackgroundColor.isTransparent() ? options.backgroundColor ? new _Color2.default(options.backgroundColor) : null : bodyBackgroundColor : documentBackgroundColor : options.backgroundColor ? new _Color2.default(options.backgroundColor) : null;\n\n return (options.foreignObjectRendering ? // $FlowFixMe\n _Feature2.default.SUPPORT_FOREIGNOBJECT_DRAWING : Promise.resolve(false)).then(function (supportForeignObject) {\n return supportForeignObject ? function (cloner) {\n if (true) {\n logger.log('Document cloned, using foreignObject rendering');\n }\n\n return cloner.inlineFonts(ownerDocument).then(function () {\n return cloner.resourceLoader.ready();\n }).then(function () {\n var renderer = new _ForeignObjectRenderer2.default(cloner.documentElement);\n return renderer.render({\n backgroundColor: backgroundColor,\n logger: logger,\n scale: options.scale,\n x: options.x,\n y: options.y,\n width: options.width,\n height: options.height,\n windowWidth: options.windowWidth,\n windowHeight: options.windowHeight,\n scrollX: options.scrollX,\n scrollY: options.scrollY\n });\n });\n }(new _Clone.DocumentCloner(element, options, logger, true, renderElement)) : (0, _Clone.cloneWindow)(ownerDocument, windowBounds, element, options, logger, renderElement).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 3),\n container = _ref2[0],\n clonedElement = _ref2[1],\n resourceLoader = _ref2[2];\n\n if (true) {\n logger.log('Document cloned, using computed rendering');\n }\n\n var stack = (0, _NodeParser.NodeParser)(clonedElement, resourceLoader, logger);\n var clonedDocument = clonedElement.ownerDocument;\n\n if (backgroundColor === stack.container.style.background.backgroundColor) {\n stack.container.style.background.backgroundColor = _Color.TRANSPARENT;\n }\n\n return resourceLoader.ready().then(function (imageStore) {\n var fontMetrics = new _Font.FontMetrics(clonedDocument);\n if (true) {\n logger.log('Starting renderer');\n }\n\n var renderOptions = {\n backgroundColor: backgroundColor,\n fontMetrics: fontMetrics,\n imageStore: imageStore,\n logger: logger,\n scale: options.scale,\n x: options.x,\n y: options.y,\n width: options.width,\n height: options.height\n };\n\n if (Array.isArray(options.target)) {\n return Promise.all(options.target.map(function (target) {\n var renderer = new _Renderer2.default(target, renderOptions);\n return renderer.render(stack);\n }));\n } else {\n var renderer = new _Renderer2.default(options.target, renderOptions);\n var canvas = renderer.render(stack);\n if (options.removeContainer === true) {\n if (container.parentNode) {\n container.parentNode.removeChild(container);\n } else if (true) {\n logger.log('Cannot detach cloned iframe as it is not in the DOM anymore');\n }\n }\n\n return canvas;\n }\n });\n });\n });\n };\n\n /***/\n },\n /* 29 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.NodeParser = undefined;\n\n var _StackingContext = __webpack_require__(30);\n\n var _StackingContext2 = _interopRequireDefault(_StackingContext);\n\n var _NodeContainer = __webpack_require__(3);\n\n var _NodeContainer2 = _interopRequireDefault(_NodeContainer);\n\n var _TextContainer = __webpack_require__(9);\n\n var _TextContainer2 = _interopRequireDefault(_TextContainer);\n\n var _Input = __webpack_require__(21);\n\n var _ListItem = __webpack_require__(14);\n\n var _listStyle = __webpack_require__(8);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n var NodeParser = exports.NodeParser = function NodeParser(node, resourceLoader, logger) {\n if (true) {\n logger.log('Starting node parsing');\n }\n\n var index = 0;\n\n var container = new _NodeContainer2.default(node, null, resourceLoader, index++);\n var stack = new _StackingContext2.default(container, null, true);\n\n parseNodeTree(node, container, stack, resourceLoader, index);\n\n if (true) {\n logger.log('Finished parsing node tree');\n }\n\n return stack;\n };\n\n var IGNORED_NODE_NAMES = ['SCRIPT', 'HEAD', 'TITLE', 'OBJECT', 'BR', 'OPTION'];\n\n var parseNodeTree = function parseNodeTree(node, parent, stack, resourceLoader, index) {\n if (true && index > 50000) {\n throw new Error('Recursion error while parsing node tree');\n }\n\n for (var childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {\n nextNode = childNode.nextSibling;\n var defaultView = childNode.ownerDocument.defaultView;\n if (childNode instanceof defaultView.Text || childNode instanceof Text || defaultView.parent && childNode instanceof defaultView.parent.Text) {\n if (childNode.data.trim().length > 0) {\n parent.childNodes.push(_TextContainer2.default.fromTextNode(childNode, parent));\n }\n } else if (childNode instanceof defaultView.HTMLElement || childNode instanceof HTMLElement || defaultView.parent && childNode instanceof defaultView.parent.HTMLElement) {\n if (IGNORED_NODE_NAMES.indexOf(childNode.nodeName) === -1) {\n var container = new _NodeContainer2.default(childNode, parent, resourceLoader, index++);\n if (container.isVisible()) {\n if (childNode.tagName === 'INPUT') {\n // $FlowFixMe\n (0, _Input.inlineInputElement)(childNode, container);\n } else if (childNode.tagName === 'TEXTAREA') {\n // $FlowFixMe\n (0, _Input.inlineTextAreaElement)(childNode, container);\n } else if (childNode.tagName === 'SELECT') {\n // $FlowFixMe\n (0, _Input.inlineSelectElement)(childNode, container);\n } else if (container.style.listStyle && container.style.listStyle.listStyleType !== _listStyle.LIST_STYLE_TYPE.NONE) {\n (0, _ListItem.inlineListItemElement)(childNode, container, resourceLoader);\n }\n\n var SHOULD_TRAVERSE_CHILDREN = childNode.tagName !== 'TEXTAREA';\n var treatAsRealStackingContext = createsRealStackingContext(container, childNode);\n if (treatAsRealStackingContext || createsStackingContext(container)) {\n // for treatAsRealStackingContext:false, any positioned descendants and descendants\n // which actually create a new stacking context should be considered part of the parent stacking context\n var parentStack = treatAsRealStackingContext || container.isPositioned() ? stack.getRealParentStackingContext() : stack;\n var childStack = new _StackingContext2.default(container, parentStack, treatAsRealStackingContext);\n parentStack.contexts.push(childStack);\n if (SHOULD_TRAVERSE_CHILDREN) {\n parseNodeTree(childNode, container, childStack, resourceLoader, index);\n }\n } else {\n stack.children.push(container);\n if (SHOULD_TRAVERSE_CHILDREN) {\n parseNodeTree(childNode, container, stack, resourceLoader, index);\n }\n }\n }\n }\n } else if (childNode instanceof defaultView.SVGSVGElement || childNode instanceof SVGSVGElement || defaultView.parent && childNode instanceof defaultView.parent.SVGSVGElement) {\n var _container = new _NodeContainer2.default(childNode, parent, resourceLoader, index++);\n var _treatAsRealStackingContext = createsRealStackingContext(_container, childNode);\n if (_treatAsRealStackingContext || createsStackingContext(_container)) {\n // for treatAsRealStackingContext:false, any positioned descendants and descendants\n // which actually create a new stacking context should be considered part of the parent stacking context\n var _parentStack = _treatAsRealStackingContext || _container.isPositioned() ? stack.getRealParentStackingContext() : stack;\n var _childStack = new _StackingContext2.default(_container, _parentStack, _treatAsRealStackingContext);\n _parentStack.contexts.push(_childStack);\n } else {\n stack.children.push(_container);\n }\n }\n }\n };\n\n var createsRealStackingContext = function createsRealStackingContext(container, node) {\n return container.isRootElement() || container.isPositionedWithZIndex() || container.style.opacity < 1 || container.isTransformed() || isBodyWithTransparentRoot(container, node);\n };\n\n var createsStackingContext = function createsStackingContext(container) {\n return container.isPositioned() || container.isFloating();\n };\n\n var isBodyWithTransparentRoot = function isBodyWithTransparentRoot(container, node) {\n return node.nodeName === 'BODY' && container.parent instanceof _NodeContainer2.default && container.parent.style.background.backgroundColor.isTransparent();\n };\n\n /***/\n },\n /* 30 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n var _NodeContainer = __webpack_require__(3);\n\n var _NodeContainer2 = _interopRequireDefault(_NodeContainer);\n\n var _position = __webpack_require__(19);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var StackingContext = function () {\n function StackingContext(container, parent, treatAsRealStackingContext) {\n _classCallCheck(this, StackingContext);\n\n this.container = container;\n this.parent = parent;\n this.contexts = [];\n this.children = [];\n this.treatAsRealStackingContext = treatAsRealStackingContext;\n }\n\n _createClass(StackingContext, [{\n key: 'getOpacity',\n value: function getOpacity() {\n return this.parent ? this.container.style.opacity * this.parent.getOpacity() : this.container.style.opacity;\n }\n }, {\n key: 'getRealParentStackingContext',\n value: function getRealParentStackingContext() {\n return !this.parent || this.treatAsRealStackingContext ? this : this.parent.getRealParentStackingContext();\n }\n }]);\n\n return StackingContext;\n }();\n\n exports.default = StackingContext;\n\n /***/\n },\n /* 31 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var Size = function Size(width, height) {\n _classCallCheck(this, Size);\n\n this.width = width;\n this.height = height;\n };\n\n exports.default = Size;\n\n /***/\n },\n /* 32 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n var _Path = __webpack_require__(6);\n\n var _Vector = __webpack_require__(7);\n\n var _Vector2 = _interopRequireDefault(_Vector);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var lerp = function lerp(a, b, t) {\n return new _Vector2.default(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n };\n\n var BezierCurve = function () {\n function BezierCurve(start, startControl, endControl, end) {\n _classCallCheck(this, BezierCurve);\n\n this.type = _Path.PATH.BEZIER_CURVE;\n this.start = start;\n this.startControl = startControl;\n this.endControl = endControl;\n this.end = end;\n }\n\n _createClass(BezierCurve, [{\n key: 'subdivide',\n value: function subdivide(t, firstHalf) {\n var ab = lerp(this.start, this.startControl, t);\n var bc = lerp(this.startControl, this.endControl, t);\n var cd = lerp(this.endControl, this.end, t);\n var abbc = lerp(ab, bc, t);\n var bccd = lerp(bc, cd, t);\n var dest = lerp(abbc, bccd, t);\n return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n }\n }, {\n key: 'reverse',\n value: function reverse() {\n return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n }\n }]);\n\n return BezierCurve;\n }();\n\n exports.default = BezierCurve;\n\n /***/\n },\n /* 33 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.parseBorderRadius = undefined;\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];var _n = true;var _d = false;var _e = undefined;try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;_e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }return _arr;\n }return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _Length = __webpack_require__(2);\n\n var _Length2 = _interopRequireDefault(_Length);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n var SIDES = ['top-left', 'top-right', 'bottom-right', 'bottom-left'];\n\n var parseBorderRadius = exports.parseBorderRadius = function parseBorderRadius(style) {\n return SIDES.map(function (side) {\n var value = style.getPropertyValue('border-' + side + '-radius');\n\n var _value$split$map = value.split(' ').map(_Length2.default.create),\n _value$split$map2 = _slicedToArray(_value$split$map, 2),\n horizontal = _value$split$map2[0],\n vertical = _value$split$map2[1];\n\n return typeof vertical === 'undefined' ? [horizontal, horizontal] : [horizontal, vertical];\n });\n };\n\n /***/\n },\n /* 34 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var DISPLAY = exports.DISPLAY = {\n NONE: 1 << 0,\n BLOCK: 1 << 1,\n INLINE: 1 << 2,\n RUN_IN: 1 << 3,\n FLOW: 1 << 4,\n FLOW_ROOT: 1 << 5,\n TABLE: 1 << 6,\n FLEX: 1 << 7,\n GRID: 1 << 8,\n RUBY: 1 << 9,\n SUBGRID: 1 << 10,\n LIST_ITEM: 1 << 11,\n TABLE_ROW_GROUP: 1 << 12,\n TABLE_HEADER_GROUP: 1 << 13,\n TABLE_FOOTER_GROUP: 1 << 14,\n TABLE_ROW: 1 << 15,\n TABLE_CELL: 1 << 16,\n TABLE_COLUMN_GROUP: 1 << 17,\n TABLE_COLUMN: 1 << 18,\n TABLE_CAPTION: 1 << 19,\n RUBY_BASE: 1 << 20,\n RUBY_TEXT: 1 << 21,\n RUBY_BASE_CONTAINER: 1 << 22,\n RUBY_TEXT_CONTAINER: 1 << 23,\n CONTENTS: 1 << 24,\n INLINE_BLOCK: 1 << 25,\n INLINE_LIST_ITEM: 1 << 26,\n INLINE_TABLE: 1 << 27,\n INLINE_FLEX: 1 << 28,\n INLINE_GRID: 1 << 29\n };\n\n var parseDisplayValue = function parseDisplayValue(display) {\n switch (display) {\n case 'block':\n return DISPLAY.BLOCK;\n case 'inline':\n return DISPLAY.INLINE;\n case 'run-in':\n return DISPLAY.RUN_IN;\n case 'flow':\n return DISPLAY.FLOW;\n case 'flow-root':\n return DISPLAY.FLOW_ROOT;\n case 'table':\n return DISPLAY.TABLE;\n case 'flex':\n return DISPLAY.FLEX;\n case 'grid':\n return DISPLAY.GRID;\n case 'ruby':\n return DISPLAY.RUBY;\n case 'subgrid':\n return DISPLAY.SUBGRID;\n case 'list-item':\n return DISPLAY.LIST_ITEM;\n case 'table-row-group':\n return DISPLAY.TABLE_ROW_GROUP;\n case 'table-header-group':\n return DISPLAY.TABLE_HEADER_GROUP;\n case 'table-footer-group':\n return DISPLAY.TABLE_FOOTER_GROUP;\n case 'table-row':\n return DISPLAY.TABLE_ROW;\n case 'table-cell':\n return DISPLAY.TABLE_CELL;\n case 'table-column-group':\n return DISPLAY.TABLE_COLUMN_GROUP;\n case 'table-column':\n return DISPLAY.TABLE_COLUMN;\n case 'table-caption':\n return DISPLAY.TABLE_CAPTION;\n case 'ruby-base':\n return DISPLAY.RUBY_BASE;\n case 'ruby-text':\n return DISPLAY.RUBY_TEXT;\n case 'ruby-base-container':\n return DISPLAY.RUBY_BASE_CONTAINER;\n case 'ruby-text-container':\n return DISPLAY.RUBY_TEXT_CONTAINER;\n case 'contents':\n return DISPLAY.CONTENTS;\n case 'inline-block':\n return DISPLAY.INLINE_BLOCK;\n case 'inline-list-item':\n return DISPLAY.INLINE_LIST_ITEM;\n case 'inline-table':\n return DISPLAY.INLINE_TABLE;\n case 'inline-flex':\n return DISPLAY.INLINE_FLEX;\n case 'inline-grid':\n return DISPLAY.INLINE_GRID;\n }\n\n return DISPLAY.NONE;\n };\n\n var setDisplayBit = function setDisplayBit(bit, display) {\n return bit | parseDisplayValue(display);\n };\n\n var parseDisplay = exports.parseDisplay = function parseDisplay(display) {\n return display.split(' ').reduce(setDisplayBit, 0);\n };\n\n /***/\n },\n /* 35 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var FLOAT = exports.FLOAT = {\n NONE: 0,\n LEFT: 1,\n RIGHT: 2,\n INLINE_START: 3,\n INLINE_END: 4\n };\n\n var parseCSSFloat = exports.parseCSSFloat = function parseCSSFloat(float) {\n switch (float) {\n case 'left':\n return FLOAT.LEFT;\n case 'right':\n return FLOAT.RIGHT;\n case 'inline-start':\n return FLOAT.INLINE_START;\n case 'inline-end':\n return FLOAT.INLINE_END;\n }\n return FLOAT.NONE;\n };\n\n /***/\n },\n /* 36 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var parseFontWeight = function parseFontWeight(weight) {\n switch (weight) {\n case 'normal':\n return 400;\n case 'bold':\n return 700;\n }\n\n var value = parseInt(weight, 10);\n return isNaN(value) ? 400 : value;\n };\n\n var parseFont = exports.parseFont = function parseFont(style) {\n var fontFamily = style.fontFamily;\n var fontSize = style.fontSize;\n var fontStyle = style.fontStyle;\n var fontVariant = style.fontVariant;\n var fontWeight = parseFontWeight(style.fontWeight);\n\n return {\n fontFamily: fontFamily,\n fontSize: fontSize,\n fontStyle: fontStyle,\n fontVariant: fontVariant,\n fontWeight: fontWeight\n };\n };\n\n /***/\n },\n /* 37 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var parseLetterSpacing = exports.parseLetterSpacing = function parseLetterSpacing(letterSpacing) {\n if (letterSpacing === 'normal') {\n return 0;\n }\n var value = parseFloat(letterSpacing);\n return isNaN(value) ? 0 : value;\n };\n\n /***/\n },\n /* 38 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var LINE_BREAK = exports.LINE_BREAK = {\n NORMAL: 'normal',\n STRICT: 'strict'\n };\n\n var parseLineBreak = exports.parseLineBreak = function parseLineBreak(wordBreak) {\n switch (wordBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n };\n\n /***/\n },\n /* 39 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.parseMargin = undefined;\n\n var _Length = __webpack_require__(2);\n\n var _Length2 = _interopRequireDefault(_Length);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n var SIDES = ['top', 'right', 'bottom', 'left'];\n\n var parseMargin = exports.parseMargin = function parseMargin(style) {\n return SIDES.map(function (side) {\n return new _Length2.default(style.getPropertyValue('margin-' + side));\n });\n };\n\n /***/\n },\n /* 40 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var OVERFLOW = exports.OVERFLOW = {\n VISIBLE: 0,\n HIDDEN: 1,\n SCROLL: 2,\n AUTO: 3\n };\n\n var parseOverflow = exports.parseOverflow = function parseOverflow(overflow) {\n switch (overflow) {\n case 'hidden':\n return OVERFLOW.HIDDEN;\n case 'scroll':\n return OVERFLOW.SCROLL;\n case 'auto':\n return OVERFLOW.AUTO;\n case 'visible':\n default:\n return OVERFLOW.VISIBLE;\n }\n };\n\n /***/\n },\n /* 41 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.parseTextShadow = undefined;\n\n var _Color = __webpack_require__(0);\n\n var _Color2 = _interopRequireDefault(_Color);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n var NUMBER = /^([+-]|\\d|\\.)$/i;\n\n var parseTextShadow = exports.parseTextShadow = function parseTextShadow(textShadow) {\n if (textShadow === 'none' || typeof textShadow !== 'string') {\n return null;\n }\n\n var currentValue = '';\n var isLength = false;\n var values = [];\n var shadows = [];\n var numParens = 0;\n var color = null;\n\n var appendValue = function appendValue() {\n if (currentValue.length) {\n if (isLength) {\n values.push(parseFloat(currentValue));\n } else {\n color = new _Color2.default(currentValue);\n }\n }\n isLength = false;\n currentValue = '';\n };\n\n var appendShadow = function appendShadow() {\n if (values.length && color !== null) {\n shadows.push({\n color: color,\n offsetX: values[0] || 0,\n offsetY: values[1] || 0,\n blur: values[2] || 0\n });\n }\n values.splice(0, values.length);\n color = null;\n };\n\n for (var i = 0; i < textShadow.length; i++) {\n var c = textShadow[i];\n switch (c) {\n case '(':\n currentValue += c;\n numParens++;\n break;\n case ')':\n currentValue += c;\n numParens--;\n break;\n case ',':\n if (numParens === 0) {\n appendValue();\n appendShadow();\n } else {\n currentValue += c;\n }\n break;\n case ' ':\n if (numParens === 0) {\n appendValue();\n } else {\n currentValue += c;\n }\n break;\n default:\n if (currentValue.length === 0 && NUMBER.test(c)) {\n isLength = true;\n }\n currentValue += c;\n }\n }\n\n appendValue();\n appendShadow();\n\n if (shadows.length === 0) {\n return null;\n }\n\n return shadows;\n };\n\n /***/\n },\n /* 42 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.parseTransform = undefined;\n\n var _Length = __webpack_require__(2);\n\n var _Length2 = _interopRequireDefault(_Length);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n var toFloat = function toFloat(s) {\n return parseFloat(s.trim());\n };\n\n var MATRIX = /(matrix|matrix3d)\\((.+)\\)/;\n\n var parseTransform = exports.parseTransform = function parseTransform(style) {\n var transform = parseTransformMatrix(style.transform || style.webkitTransform || style.mozTransform ||\n // $FlowFixMe\n style.msTransform ||\n // $FlowFixMe\n style.oTransform);\n if (transform === null) {\n return null;\n }\n\n return {\n transform: transform,\n transformOrigin: parseTransformOrigin(style.transformOrigin || style.webkitTransformOrigin || style.mozTransformOrigin ||\n // $FlowFixMe\n style.msTransformOrigin ||\n // $FlowFixMe\n style.oTransformOrigin)\n };\n };\n\n // $FlowFixMe\n var parseTransformOrigin = function parseTransformOrigin(origin) {\n if (typeof origin !== 'string') {\n var v = new _Length2.default('0');\n return [v, v];\n }\n var values = origin.split(' ').map(_Length2.default.create);\n return [values[0], values[1]];\n };\n\n // $FlowFixMe\n var parseTransformMatrix = function parseTransformMatrix(transform) {\n if (transform === 'none' || typeof transform !== 'string') {\n return null;\n }\n\n var match = transform.match(MATRIX);\n if (match) {\n if (match[1] === 'matrix') {\n var matrix = match[2].split(',').map(toFloat);\n return [matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]];\n } else {\n var matrix3d = match[2].split(',').map(toFloat);\n return [matrix3d[0], matrix3d[1], matrix3d[4], matrix3d[5], matrix3d[12], matrix3d[13]];\n }\n }\n return null;\n };\n\n /***/\n },\n /* 43 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var VISIBILITY = exports.VISIBILITY = {\n VISIBLE: 0,\n HIDDEN: 1,\n COLLAPSE: 2\n };\n\n var parseVisibility = exports.parseVisibility = function parseVisibility(visibility) {\n switch (visibility) {\n case 'hidden':\n return VISIBILITY.HIDDEN;\n case 'collapse':\n return VISIBILITY.COLLAPSE;\n case 'visible':\n default:\n return VISIBILITY.VISIBLE;\n }\n };\n\n /***/\n },\n /* 44 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var WORD_BREAK = exports.WORD_BREAK = {\n NORMAL: 'normal',\n BREAK_ALL: 'break-all',\n KEEP_ALL: 'keep-all'\n };\n\n var parseWordBreak = exports.parseWordBreak = function parseWordBreak(wordBreak) {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n };\n\n /***/\n },\n /* 45 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var parseZIndex = exports.parseZIndex = function parseZIndex(zIndex) {\n var auto = zIndex === 'auto';\n return {\n auto: auto,\n order: auto ? 0 : parseInt(zIndex, 10)\n };\n };\n\n /***/\n },\n /* 46 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _Util = __webpack_require__(13);\n\n Object.defineProperty(exports, 'toCodePoints', {\n enumerable: true,\n get: function get() {\n return _Util.toCodePoints;\n }\n });\n Object.defineProperty(exports, 'fromCodePoint', {\n enumerable: true,\n get: function get() {\n return _Util.fromCodePoint;\n }\n });\n\n var _LineBreak = __webpack_require__(47);\n\n Object.defineProperty(exports, 'LineBreaker', {\n enumerable: true,\n get: function get() {\n return _LineBreak.LineBreaker;\n }\n });\n\n /***/\n },\n /* 47 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.LineBreaker = exports.inlineBreakOpportunities = exports.lineBreakAtIndex = exports.codePointsToCharacterClasses = exports.UnicodeTrie = exports.BREAK_ALLOWED = exports.BREAK_NOT_ALLOWED = exports.BREAK_MANDATORY = exports.classes = exports.LETTER_NUMBER_MODIFIER = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];var _n = true;var _d = false;var _e = undefined;try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;_e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }return _arr;\n }return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _Trie = __webpack_require__(48);\n\n var _linebreakTrie = __webpack_require__(49);\n\n var _linebreakTrie2 = _interopRequireDefault(_linebreakTrie);\n\n var _Util = __webpack_require__(13);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n function _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }return arr2;\n } else {\n return Array.from(arr);\n }\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var LETTER_NUMBER_MODIFIER = exports.LETTER_NUMBER_MODIFIER = 50;\n\n // Non-tailorable Line Breaking Classes\n var BK = 1; // Cause a line break (after)\n var CR = 2; // Cause a line break (after), except between CR and LF\n var LF = 3; // Cause a line break (after)\n var CM = 4; // Prohibit a line break between the character and the preceding character\n var NL = 5; // Cause a line break (after)\n var SG = 6; // Do not occur in well-formed text\n var WJ = 7; // Prohibit line breaks before and after\n var ZW = 8; // Provide a break opportunity\n var GL = 9; // Prohibit line breaks before and after\n var SP = 10; // Enable indirect line breaks\n var ZWJ = 11; // Prohibit line breaks within joiner sequences\n // Break Opportunities\n var B2 = 12; // Provide a line break opportunity before and after the character\n var BA = 13; // Generally provide a line break opportunity after the character\n var BB = 14; // Generally provide a line break opportunity before the character\n var HY = 15; // Provide a line break opportunity after the character, except in numeric context\n var CB = 16; // Provide a line break opportunity contingent on additional information\n // Characters Prohibiting Certain Breaks\n var CL = 17; // Prohibit line breaks before\n var CP = 18; // Prohibit line breaks before\n var EX = 19; // Prohibit line breaks before\n var IN = 20; // Allow only indirect line breaks between pairs\n var NS = 21; // Allow only indirect line breaks before\n var OP = 22; // Prohibit line breaks after\n var QU = 23; // Act like they are both opening and closing\n // Numeric Context\n var IS = 24; // Prevent breaks after any and before numeric\n var NU = 25; // Form numeric expressions for line breaking purposes\n var PO = 26; // Do not break following a numeric expression\n var PR = 27; // Do not break in front of a numeric expression\n var SY = 28; // Prevent a break before; and allow a break after\n // Other Characters\n var AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\n var AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\n var CJ = 31; // Treat as NS or ID for strict or normal breaking.\n var EB = 32; // Do not break from following Emoji Modifier\n var EM = 33; // Do not break from preceding Emoji Base\n var H2 = 34; // Form Korean syllable blocks\n var H3 = 35; // Form Korean syllable blocks\n var HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\n var ID = 37; // Break before or after; except in some numeric context\n var JL = 38; // Form Korean syllable blocks\n var JV = 39; // Form Korean syllable blocks\n var JT = 40; // Form Korean syllable blocks\n var RI = 41; // Keep pairs together. For pairs; break before and after other classes\n var SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\n var XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n\n var classes = exports.classes = {\n BK: BK,\n CR: CR,\n LF: LF,\n CM: CM,\n NL: NL,\n SG: SG,\n WJ: WJ,\n ZW: ZW,\n GL: GL,\n SP: SP,\n ZWJ: ZWJ,\n B2: B2,\n BA: BA,\n BB: BB,\n HY: HY,\n CB: CB,\n CL: CL,\n CP: CP,\n EX: EX,\n IN: IN,\n NS: NS,\n OP: OP,\n QU: QU,\n IS: IS,\n NU: NU,\n PO: PO,\n PR: PR,\n SY: SY,\n AI: AI,\n AL: AL,\n CJ: CJ,\n EB: EB,\n EM: EM,\n H2: H2,\n H3: H3,\n HL: HL,\n ID: ID,\n JL: JL,\n JV: JV,\n JT: JT,\n RI: RI,\n SA: SA,\n XX: XX\n };\n\n var BREAK_MANDATORY = exports.BREAK_MANDATORY = '!';\n var BREAK_NOT_ALLOWED = exports.BREAK_NOT_ALLOWED = '×';\n var BREAK_ALLOWED = exports.BREAK_ALLOWED = '÷';\n var UnicodeTrie = exports.UnicodeTrie = (0, _Trie.createTrieFromBase64)(_linebreakTrie2.default);\n\n var ALPHABETICS = [AL, HL];\n var HARD_LINE_BREAKS = [BK, CR, LF, NL];\n var SPACE = [SP, ZW];\n var PREFIX_POSTFIX = [PR, PO];\n var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\n var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\n var HYPHEN = [HY, BA];\n\n var codePointsToCharacterClasses = exports.codePointsToCharacterClasses = function codePointsToCharacterClasses(codePoints) {\n var lineBreak = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'strict';\n\n var types = [];\n var indicies = [];\n var categories = [];\n codePoints.forEach(function (codePoint, index) {\n var classType = UnicodeTrie.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n } else {\n categories.push(false);\n }\n\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indicies.push(index);\n return types.push(CB);\n }\n }\n\n if (classType === CM || classType === ZWJ) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indicies.push(index);\n return types.push(AL);\n }\n\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n var prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indicies.push(indicies[index - 1]);\n return types.push(prev);\n }\n indicies.push(index);\n return types.push(AL);\n }\n\n indicies.push(index);\n\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n\n if (classType === SA) {\n return types.push(AL);\n }\n\n if (classType === AI) {\n return types.push(AL);\n }\n\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n if (classType === XX) {\n if (codePoint >= 0x20000 && codePoint <= 0x2fffd || codePoint >= 0x30000 && codePoint <= 0x3fffd) {\n return types.push(ID);\n } else {\n return types.push(AL);\n }\n }\n\n types.push(classType);\n });\n\n return [indicies, types, categories];\n };\n\n var isAdjacentWithSpaceIgnored = function isAdjacentWithSpaceIgnored(a, b, currentIndex, classTypes) {\n var current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n var i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n var next = classTypes[i];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (current === SP) {\n var _i = currentIndex;\n\n while (_i > 0) {\n _i--;\n var prev = classTypes[_i];\n\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n var n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n var _next = classTypes[n];\n\n if (_next === b) {\n return true;\n }\n\n if (_next !== SP) {\n break;\n }\n }\n }\n\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n };\n\n var previousNonSpaceClassType = function previousNonSpaceClassType(currentIndex, classTypes) {\n var i = currentIndex;\n while (i >= 0) {\n var type = classTypes[i];\n if (type === SP) {\n i--;\n } else {\n return type;\n }\n }\n return 0;\n };\n\n var _lineBreakAtIndex = function _lineBreakAtIndex(codePoints, classTypes, indicies, index, forbiddenBreaks) {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n var currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED;\n }\n\n var beforeIndex = currentIndex - 1;\n var afterIndex = currentIndex + 1;\n var current = classTypes[currentIndex];\n\n // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n var next = classTypes[afterIndex];\n\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n }\n\n // LB6 Do not break before hard line breaks.\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB7 Do not break before spaces or zero width space.\n if (SPACE.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED;\n }\n\n // LB8a Do not break between a zero width joiner and an ideograph, emoji base or emoji modifier.\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ && (next === ID || next === EB || next === EM)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB11 Do not break before or after Word joiner and related characters.\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB15 Do not break within ‘”[’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED;\n }\n\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED;\n }\n\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB22 Do not break between two ellipses, or between letters, numbers or exclamations and ellipsis.\n if (next === IN && ALPHABETICS.concat(IN, EX, NU, ID, EB, EM).indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23 Do not break between digits and letters.\n if (ALPHABETICS.indexOf(next) !== -1 && current === NU || ALPHABETICS.indexOf(current) !== -1 && next === NU) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if (current === PR && [ID, EB, EM].indexOf(next) !== -1 || [ID, EB, EM].indexOf(current) !== -1 && next === PO) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1 || PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB25 Do not break between the following pairs of classes relevant to numbers:\n if (\n // (PR | PO) × ( OP | HY )? NU\n [PR, PO].indexOf(current) !== -1 && (next === NU || [OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU) ||\n // ( OP | HY ) × NU\n [OP, HY].indexOf(current) !== -1 && next === NU ||\n // NU ×\t(NU | SY | IS)\n current === NU && [NU, SY, IS].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n var prevIndex = currentIndex;\n while (prevIndex >= 0) {\n var type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n var _prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (_prevIndex >= 0) {\n var _type = classTypes[_prevIndex];\n if (_type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(_type) !== -1) {\n _prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // LB26 Do not break a Korean syllable.\n if (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1 || [JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1 || [JT, H3].indexOf(current) !== -1 && next === JT) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB27 Treat a Korean Syllable Block the same as ID.\n if (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1 || KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB28 Do not break between alphabetics (“at”).\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP || ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n if (current === RI && next === RI) {\n var i = indicies[currentIndex];\n var count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI) {\n count++;\n } else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // LB30b Do not break between an emoji base and an emoji modifier.\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED;\n }\n\n return BREAK_ALLOWED;\n };\n\n var lineBreakAtIndex = exports.lineBreakAtIndex = function lineBreakAtIndex(codePoints, index) {\n // LB2 Never break at the start of text.\n if (index === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB3 Always break at the end of text.\n if (index >= codePoints.length) {\n return BREAK_MANDATORY;\n }\n\n var _codePointsToCharacte = codePointsToCharacterClasses(codePoints),\n _codePointsToCharacte2 = _slicedToArray(_codePointsToCharacte, 2),\n indicies = _codePointsToCharacte2[0],\n classTypes = _codePointsToCharacte2[1];\n\n return _lineBreakAtIndex(codePoints, classTypes, indicies, index);\n };\n\n var cssFormattedClasses = function cssFormattedClasses(codePoints, options) {\n if (!options) {\n options = { lineBreak: 'normal', wordBreak: 'normal' };\n }\n\n var _codePointsToCharacte3 = codePointsToCharacterClasses(codePoints, options.lineBreak),\n _codePointsToCharacte4 = _slicedToArray(_codePointsToCharacte3, 3),\n indicies = _codePointsToCharacte4[0],\n classTypes = _codePointsToCharacte4[1],\n isLetterNumber = _codePointsToCharacte4[2];\n\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map(function (type) {\n return [NU, AL, SA].indexOf(type) !== -1 ? ID : type;\n });\n }\n\n var forbiddenBreakpoints = options.wordBreak === 'keep-all' ? isLetterNumber.map(function (isLetterNumber, i) {\n return isLetterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n }) : null;\n\n return [indicies, classTypes, forbiddenBreakpoints];\n };\n\n var inlineBreakOpportunities = exports.inlineBreakOpportunities = function inlineBreakOpportunities(str, options) {\n var codePoints = (0, _Util.toCodePoints)(str);\n var output = BREAK_NOT_ALLOWED;\n\n var _cssFormattedClasses = cssFormattedClasses(codePoints, options),\n _cssFormattedClasses2 = _slicedToArray(_cssFormattedClasses, 3),\n indicies = _cssFormattedClasses2[0],\n classTypes = _cssFormattedClasses2[1],\n forbiddenBreakpoints = _cssFormattedClasses2[2];\n\n codePoints.forEach(function (codePoint, i) {\n output += (0, _Util.fromCodePoint)(codePoint) + (i >= codePoints.length - 1 ? BREAK_MANDATORY : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\n });\n\n return output;\n };\n\n var Break = function () {\n function Break(codePoints, lineBreak, start, end) {\n _classCallCheck(this, Break);\n\n this._codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n\n _createClass(Break, [{\n key: 'slice',\n value: function slice() {\n return _Util.fromCodePoint.apply(undefined, _toConsumableArray(this._codePoints.slice(this.start, this.end)));\n }\n }]);\n\n return Break;\n }();\n\n var LineBreaker = exports.LineBreaker = function LineBreaker(str, options) {\n var codePoints = (0, _Util.toCodePoints)(str);\n\n var _cssFormattedClasses3 = cssFormattedClasses(codePoints, options),\n _cssFormattedClasses4 = _slicedToArray(_cssFormattedClasses3, 3),\n indicies = _cssFormattedClasses4[0],\n classTypes = _cssFormattedClasses4[1],\n forbiddenBreakpoints = _cssFormattedClasses4[2];\n\n var length = codePoints.length;\n var lastEnd = 0;\n var nextIndex = 0;\n\n return {\n next: function next() {\n if (nextIndex >= length) {\n return { done: true };\n }\n var lineBreak = BREAK_NOT_ALLOWED;\n while (nextIndex < length && (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === BREAK_NOT_ALLOWED) {}\n\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return { value: value, done: false };\n }\n\n return { done: true };\n }\n };\n };\n\n /***/\n },\n /* 48 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Trie = exports.createTrieFromBase64 = exports.UTRIE2_INDEX_2_MASK = exports.UTRIE2_INDEX_2_BLOCK_LENGTH = exports.UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = exports.UTRIE2_INDEX_1_OFFSET = exports.UTRIE2_UTF8_2B_INDEX_2_LENGTH = exports.UTRIE2_UTF8_2B_INDEX_2_OFFSET = exports.UTRIE2_INDEX_2_BMP_LENGTH = exports.UTRIE2_LSCP_INDEX_2_LENGTH = exports.UTRIE2_DATA_MASK = exports.UTRIE2_DATA_BLOCK_LENGTH = exports.UTRIE2_LSCP_INDEX_2_OFFSET = exports.UTRIE2_SHIFT_1_2 = exports.UTRIE2_INDEX_SHIFT = exports.UTRIE2_SHIFT_1 = exports.UTRIE2_SHIFT_2 = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n var _Util = __webpack_require__(13);\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n /** Shift size for getting the index-2 table offset. */\n var UTRIE2_SHIFT_2 = exports.UTRIE2_SHIFT_2 = 5;\n\n /** Shift size for getting the index-1 table offset. */\n var UTRIE2_SHIFT_1 = exports.UTRIE2_SHIFT_1 = 6 + 5;\n\n /**\r\n * Shift size for shifting left the index array values.\r\n * Increases possible data size with 16-bit index values at the cost\r\n * of compactability.\r\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\r\n */\n var UTRIE2_INDEX_SHIFT = exports.UTRIE2_INDEX_SHIFT = 2;\n\n /**\r\n * Difference between the two shift sizes,\r\n * for getting an index-1 offset from an index-2 offset. 6=11-5\r\n */\n var UTRIE2_SHIFT_1_2 = exports.UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n /**\r\n * The part of the index-2 table for U+D800..U+DBFF stores values for\r\n * lead surrogate code _units_ not code _points_.\r\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\r\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\r\n */\n var UTRIE2_LSCP_INDEX_2_OFFSET = exports.UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n /** Number of entries in a data block. 32=0x20 */\n var UTRIE2_DATA_BLOCK_LENGTH = exports.UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n /** Mask for getting the lower bits for the in-data-block offset. */\n var UTRIE2_DATA_MASK = exports.UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\n var UTRIE2_LSCP_INDEX_2_LENGTH = exports.UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n /** Count the lengths of both BMP pieces. 2080=0x820 */\n var UTRIE2_INDEX_2_BMP_LENGTH = exports.UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n /**\r\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\r\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\r\n */\n var UTRIE2_UTF8_2B_INDEX_2_OFFSET = exports.UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\n var UTRIE2_UTF8_2B_INDEX_2_LENGTH = exports.UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n /**\r\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\r\n * Variable length, for code points up to highStart, where the last single-value range starts.\r\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\r\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\r\n *\r\n * The part of the index-2 table for supplementary code points starts\r\n * after this index-1 table.\r\n *\r\n * Both the index-1 table and the following part of the index-2 table\r\n * are omitted completely if there is only BMP data.\r\n */\n var UTRIE2_INDEX_1_OFFSET = exports.UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n /**\r\n * Number of index-1 entries for the BMP. 32=0x20\r\n * This part of the index-1 table is omitted from the serialized form.\r\n */\n var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = exports.UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n /** Number of entries in an index-2 block. 64=0x40 */\n var UTRIE2_INDEX_2_BLOCK_LENGTH = exports.UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n /** Mask for getting the lower bits for the in-index-2-block offset. */\n var UTRIE2_INDEX_2_MASK = exports.UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\n var createTrieFromBase64 = exports.createTrieFromBase64 = function createTrieFromBase64(base64) {\n var buffer = (0, _Util.decode)(base64);\n var view32 = Array.isArray(buffer) ? (0, _Util.polyUint32Array)(buffer) : new Uint32Array(buffer);\n var view16 = Array.isArray(buffer) ? (0, _Util.polyUint16Array)(buffer) : new Uint16Array(buffer);\n var headerLength = 24;\n\n var index = view16.slice(headerLength / 2, view32[4] / 2);\n var data = view32[5] === 2 ? view16.slice((headerLength + view32[4]) / 2) : view32.slice(Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n };\n\n var Trie = exports.Trie = function () {\n function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n _classCallCheck(this, Trie);\n\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\r\n * Get the value for a code point as stored in the Trie.\r\n *\r\n * @param codePoint the code point\r\n * @return the value\r\n */\n\n _createClass(Trie, [{\n key: 'get',\n value: function get(codePoint) {\n var ix = void 0;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || codePoint > 0x0dbff && codePoint <= 0x0ffff) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + (codePoint - 0xd800 >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += codePoint >> UTRIE2_SHIFT_2 & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n }]);\n\n return Trie;\n }();\n\n /***/\n },\n /* 49 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n module.exports = 'KwAAAAAAAAAACA4AIDoAAPAfAAACAAAAAAAIABAAGABAAEgAUABYAF4AZgBeAGYAYABoAHAAeABeAGYAfACEAIAAiACQAJgAoACoAK0AtQC9AMUAXgBmAF4AZgBeAGYAzQDVAF4AZgDRANkA3gDmAOwA9AD8AAQBDAEUARoBIgGAAIgAJwEvATcBPwFFAU0BTAFUAVwBZAFsAXMBewGDATAAiwGTAZsBogGkAawBtAG8AcIBygHSAdoB4AHoAfAB+AH+AQYCDgIWAv4BHgImAi4CNgI+AkUCTQJTAlsCYwJrAnECeQKBAk0CiQKRApkCoQKoArACuALAAsQCzAIwANQC3ALkAjAA7AL0AvwCAQMJAxADGAMwACADJgMuAzYDPgOAAEYDSgNSA1IDUgNaA1oDYANiA2IDgACAAGoDgAByA3YDfgOAAIQDgACKA5IDmgOAAIAAogOqA4AAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAK8DtwOAAIAAvwPHA88D1wPfAyAD5wPsA/QD/AOAAIAABAQMBBIEgAAWBB4EJgQuBDMEIAM7BEEEXgBJBCADUQRZBGEEaQQwADAAcQQ+AXkEgQSJBJEEgACYBIAAoASoBK8EtwQwAL8ExQSAAIAAgACAAIAAgACgAM0EXgBeAF4AXgBeAF4AXgBeANUEXgDZBOEEXgDpBPEE+QQBBQkFEQUZBSEFKQUxBTUFPQVFBUwFVAVcBV4AYwVeAGsFcwV7BYMFiwWSBV4AmgWgBacFXgBeAF4AXgBeAKsFXgCyBbEFugW7BcIFwgXIBcIFwgXQBdQF3AXkBesF8wX7BQMGCwYTBhsGIwYrBjMGOwZeAD8GRwZNBl4AVAZbBl4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAGMGXgBqBnEGXgBeAF4AXgBeAF4AXgBeAF4AXgB5BoAG4wSGBo4GkwaAAIADHgR5AF4AXgBeAJsGgABGA4AAowarBrMGswagALsGwwbLBjAA0wbaBtoG3QbaBtoG2gbaBtoG2gblBusG8wb7BgMHCwcTBxsHCwcjBysHMAc1BzUHOgdCB9oGSgdSB1oHYAfaBloHaAfaBlIH2gbaBtoG2gbaBtoG2gbaBjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHbQdeAF4ANQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQd1B30HNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B4MH2gaKB68EgACAAIAAgACAAIAAgACAAI8HlwdeAJ8HpweAAIAArwe3B14AXgC/B8UHygcwANAH2AfgB4AA6AfwBz4B+AcACFwBCAgPCBcIogEYAR8IJwiAAC8INwg/CCADRwhPCFcIXwhnCEoDGgSAAIAAgABvCHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIhAiLCI4IMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQc1BzUHNQc1BzUHNQc1BzUHNQc1B54INQc1B6II2gaqCLIIugiAAIAAvgjGCIAAgACAAIAAgACAAIAAgACAAIAAywiHAYAA0wiAANkI3QjlCO0I9Aj8CIAAgACAAAIJCgkSCRoJIgknCTYHLwk3CZYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiAAIAAAAFAAXgBeAGAAcABeAHwAQACQAKAArQC9AJ4AXgBeAE0A3gBRAN4A7AD8AMwBGgEAAKcBNwEFAUwBXAF4QkhCmEKnArcCgAHHAsABz4LAAcABwAHAAd+C6ABoAG+C/4LAAcABwAHAAc+DF4MAAcAB54M3gweDV4Nng3eDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEeDqABVg6WDqABoQ6gAaABoAHXDvcONw/3DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DncPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB7cPPwlGCU4JMACAAIAAgABWCV4JYQmAAGkJcAl4CXwJgAkwADAAMAAwAIgJgACLCZMJgACZCZ8JowmrCYAAswkwAF4AXgB8AIAAuwkABMMJyQmAAM4JgADVCTAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAqwYWBNkIMAAwADAAMADdCeAJ6AnuCR4E9gkwAP4JBQoNCjAAMACAABUK0wiAAB0KJAosCjQKgAAwADwKQwqAAEsKvQmdCVMKWwowADAAgACAALcEMACAAGMKgABrCjAAMAAwADAAMAAwADAAMAAwADAAMAAeBDAAMAAwADAAMAAwADAAMAAwADAAMAAwAIkEPQFzCnoKiQSCCooKkAqJBJgKoAqkCokEGAGsCrQKvArBCjAAMADJCtEKFQHZCuEK/gHpCvEKMAAwADAAMACAAIwE+QowAIAAPwEBCzAAMAAwADAAMACAAAkLEQswAIAAPwEZCyELgAAOCCkLMAAxCzkLMAAwADAAMAAwADAAXgBeAEELMAAwADAAMAAwADAAMAAwAEkLTQtVC4AAXAtkC4AAiQkwADAAMAAwADAAMAAwADAAbAtxC3kLgAuFC4sLMAAwAJMLlwufCzAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAApwswADAAMACAAIAAgACvC4AAgACAAIAAgACAALcLMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAvwuAAMcLgACAAIAAgACAAIAAyguAAIAAgACAAIAA0QswADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAANkLgACAAIAA4AswADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACJCR4E6AswADAAhwHwC4AA+AsADAgMEAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACAAIAAGAwdDCUMMAAwAC0MNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQw1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHPQwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADUHNQc1BzUHNQc1BzUHNQc2BzAAMAA5DDUHNQc1BzUHNQc1BzUHNQc1BzUHNQdFDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAATQxSDFoMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAF4AXgBeAF4AXgBeAF4AYgxeAGoMXgBxDHkMfwxeAIUMXgBeAI0MMAAwADAAMAAwAF4AXgCVDJ0MMAAwADAAMABeAF4ApQxeAKsMswy7DF4Awgy9DMoMXgBeAF4AXgBeAF4AXgBeAF4AXgDRDNkMeQBqCeAM3Ax8AOYM7Az0DPgMXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgCgAAANoAAHDQ4NFg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAeDSYNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAC4NMABeAF4ANg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAD4NRg1ODVYNXg1mDTAAbQ0wADAAMAAwADAAMAAwADAA2gbaBtoG2gbaBtoG2gbaBnUNeg3CBYANwgWFDdoGjA3aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gaUDZwNpA2oDdoG2gawDbcNvw3HDdoG2gbPDdYN3A3fDeYN2gbsDfMN2gbaBvoN/g3aBgYODg7aBl4AXgBeABYOXgBeACUG2gYeDl4AJA5eACwO2w3aBtoGMQ45DtoG2gbaBtoGQQ7aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B1EO2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQdZDjUHNQc1BzUHNQc1B2EONQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHaA41BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B3AO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B2EO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBkkOeA6gAKAAoAAwADAAMAAwAKAAoACgAKAAoACgAKAAgA4wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAD//wQABAAEAAQABAAEAAQABAAEAA0AAwABAAEAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAKABMAFwAeABsAGgAeABcAFgASAB4AGwAYAA8AGAAcAEsASwBLAEsASwBLAEsASwBLAEsAGAAYAB4AHgAeABMAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAFgAbABIAHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYADQARAB4ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkAFgAaABsAGwAbAB4AHQAdAB4ATwAXAB4ADQAeAB4AGgAbAE8ATwAOAFAAHQAdAB0ATwBPABcATwBPAE8AFgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwArAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAAQABAANAA0ASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAUAArACsAKwArACsAKwArACsABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAGgAaAFAAUABQAFAAUABMAB4AGwBQAB4AKwArACsABAAEAAQAKwBQAFAAUABQAFAAUAArACsAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUAArAFAAUAArACsABAArAAQABAAEAAQABAArACsAKwArAAQABAArACsABAAEAAQAKwArACsABAArACsAKwArACsAKwArAFAAUABQAFAAKwBQACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwAEAAQAUABQAFAABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQAKwArAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeABsAKwArACsAKwArACsAKwBQAAQABAAEAAQABAAEACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAKwArACsAKwArACsAKwArAAQABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwAEAFAAKwBQAFAAUABQAFAAUAArACsAKwBQAFAAUAArAFAAUABQAFAAKwArACsAUABQACsAUAArAFAAUAArACsAKwBQAFAAKwArACsAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQAKwArACsABAAEAAQAKwAEAAQABAAEACsAKwBQACsAKwArACsAKwArAAQAKwArACsAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAB4AHgAeAB4AHgAeABsAHgArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArAFAAUABQACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAB4AUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArACsAKwArACsAKwArAFAAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwArAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAKwBcAFwAKwBcACsAKwBcACsAKwArACsAKwArAFwAXABcAFwAKwBcAFwAXABcAFwAXABcACsAXABcAFwAKwBcACsAXAArACsAXABcACsAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgArACoAKgBcACsAKwBcAFwAXABcAFwAKwBcACsAKgAqACoAKgAqACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAFwAXABcAFwAUAAOAA4ADgAOAB4ADgAOAAkADgAOAA0ACQATABMAEwATABMACQAeABMAHgAeAB4ABAAEAB4AHgAeAB4AHgAeAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUAANAAQAHgAEAB4ABAAWABEAFgARAAQABABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAAQABAAEAAQABAANAAQABABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsADQANAB4AHgAeAB4AHgAeAAQAHgAeAB4AHgAeAB4AKwAeAB4ADgAOAA0ADgAeAB4AHgAeAB4ACQAJACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgAeAB4AHgBcAFwAXABcAFwAXAAqACoAKgAqAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAKgAqACoAKgAqACoAKgBcAFwAXAAqACoAKgAqAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAXAAqAEsASwBLAEsASwBLAEsASwBLAEsAKgAqACoAKgAqACoAUABQAFAAUABQAFAAKwBQACsAKwArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQACsAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwAEAAQABAAeAA0AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAEQArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAADQANAA0AUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAA0ADQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoADQANABUAXAANAB4ADQAbAFwAKgArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAB4AHgATABMADQANAA4AHgATABMAHgAEAAQABAAJACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAUABQAFAAUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwAeACsAKwArABMAEwBLAEsASwBLAEsASwBLAEsASwBLAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwBcAFwAXABcAFwAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcACsAKwArACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwAeAB4AXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsABABLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKgAqACoAKgAqACoAKgBcACoAKgAqACoAKgAqACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAUABQAFAAUABQAFAAUAArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4ADQANAA0ADQAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAHgAeAB4AHgBQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwANAA0ADQANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwBQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsABAAEAAQAHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAABABQAFAAUABQAAQABAAEAFAAUAAEAAQABAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAKwBQACsAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAKwArAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAKwAeAB4AHgAeAB4AHgAeAA4AHgArAA0ADQANAA0ADQANAA0ACQANAA0ADQAIAAQACwAEAAQADQAJAA0ADQAMAB0AHQAeABcAFwAWABcAFwAXABYAFwAdAB0AHgAeABQAFAAUAA0AAQABAAQABAAEAAQABAAJABoAGgAaABoAGgAaABoAGgAeABcAFwAdABUAFQAeAB4AHgAeAB4AHgAYABYAEQAVABUAFQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgANAB4ADQANAA0ADQAeAA0ADQANAAcAHgAeAB4AHgArAAQABAAEAAQABAAEAAQABAAEAAQAUABQACsAKwBPAFAAUABQAFAAUAAeAB4AHgAWABEATwBQAE8ATwBPAE8AUABQAFAAUABQAB4AHgAeABYAEQArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGgAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgBQABoAHgAdAB4AUAAeABoAHgAeAB4AHgAeAB4AHgAeAB4ATwAeAFAAGwAeAB4AUABQAFAAUABQAB4AHgAeAB0AHQAeAFAAHgBQAB4AUAAeAFAATwBQAFAAHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AUABQAFAAUABPAE8AUABQAFAAUABQAE8AUABQAE8AUABPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAE8ATwBPAE8ATwBPAE8ATwBPAE8AUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAATwAeAB4AKwArACsAKwAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB0AHQAeAB4AHgAdAB0AHgAeAB0AHgAeAB4AHQAeAB0AGwAbAB4AHQAeAB4AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB0AHgAdAB4AHQAdAB0AHQAdAB0AHgAdAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAdAB0AHQAdAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAlACUAHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB0AHQAeAB4AHgAeAB0AHQAdAB4AHgAdAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB0AHQAeAB4AHQAeAB4AHgAeAB0AHQAeAB4AHgAeACUAJQAdAB0AJQAeACUAJQAlACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHQAdAB0AHgAdACUAHQAdAB4AHQAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHQAdAB0AHQAlAB4AJQAlACUAHQAlACUAHQAdAB0AJQAlAB0AHQAlAB0AHQAlACUAJQAeAB0AHgAeAB4AHgAdAB0AJQAdAB0AHQAdAB0AHQAlACUAJQAlACUAHQAlACUAIAAlAB0AHQAlACUAJQAlACUAJQAlACUAHgAeAB4AJQAlACAAIAAgACAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeABcAFwAXABcAFwAXAB4AEwATACUAHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACUAJQBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwArACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAE8ATwBPAE8ATwBPAE8ATwAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeACsAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUAArACsAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQBQAFAAUABQACsAKwArACsAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAABAAEAAQAKwAEAAQAKwArACsAKwArAAQABAAEAAQAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsABAAEAAQAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsADQANAA0ADQANAA0ADQANAB4AKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAUABQAFAAUABQAA0ADQANAA0ADQANABQAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwANAA0ADQANAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAeAAQABAAEAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLACsADQArAB4AKwArAAQABAAEAAQAUABQAB4AUAArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwAEAAQABAAEAAQABAAEAAQABAAOAA0ADQATABMAHgAeAB4ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0AUABQAFAAUAAEAAQAKwArAAQADQANAB4AUAArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXABcAA0ADQANACoASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUAArACsAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANACsADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEcARwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwAeAAQABAANAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAEAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUAArACsAUAArACsAUABQACsAKwBQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAeAB4ADQANAA0ADQAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAArAAQABAArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAEAAQABAAEAAQABAAEACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAFgAWAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAKwBQACsAKwArACsAKwArAFAAKwArACsAKwBQACsAUAArAFAAKwBQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQACsAUAArAFAAKwBQACsAUABQACsAUAArACsAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAUABQAFAAUAArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUAArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAlACUAJQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeACUAJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeACUAJQAlACUAJQAeACUAJQAlACUAJQAgACAAIAAlACUAIAAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIQAhACEAIQAhACUAJQAgACAAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAIAAlACUAJQAlACAAJQAgACAAIAAgACAAIAAgACAAIAAlACUAJQAgACUAJQAlACUAIAAgACAAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeACUAHgAlAB4AJQAlACUAJQAlACAAJQAlACUAJQAeACUAHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAIAAgACAAIAAgAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFwAXABcAFQAVABUAHgAeAB4AHgAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAlACAAIAAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsA';\n\n /***/\n },\n /* 50 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _Path = __webpack_require__(6);\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var Circle = function Circle(x, y, radius) {\n _classCallCheck(this, Circle);\n\n this.type = _Path.PATH.CIRCLE;\n this.x = x;\n this.y = y;\n this.radius = radius;\n if (true) {\n if (isNaN(x)) {\n console.error('Invalid x value given for Circle');\n }\n if (isNaN(y)) {\n console.error('Invalid y value given for Circle');\n }\n if (isNaN(radius)) {\n console.error('Invalid radius value given for Circle');\n }\n }\n };\n\n exports.default = Circle;\n\n /***/\n },\n /* 51 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];var _n = true;var _d = false;var _e = undefined;try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;_e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }return _arr;\n }return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n var _Bounds = __webpack_require__(1);\n\n var _Font = __webpack_require__(25);\n\n var _Gradient = __webpack_require__(52);\n\n var _TextContainer = __webpack_require__(9);\n\n var _TextContainer2 = _interopRequireDefault(_TextContainer);\n\n var _background = __webpack_require__(5);\n\n var _border = __webpack_require__(12);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var Renderer = function () {\n function Renderer(target, options) {\n _classCallCheck(this, Renderer);\n\n this.target = target;\n this.options = options;\n target.render(options);\n }\n\n _createClass(Renderer, [{\n key: 'renderNode',\n value: function renderNode(container) {\n if (container.isVisible()) {\n this.renderNodeBackgroundAndBorders(container);\n this.renderNodeContent(container);\n }\n }\n }, {\n key: 'renderNodeContent',\n value: function renderNodeContent(container) {\n var _this = this;\n\n var callback = function callback() {\n if (container.childNodes.length) {\n container.childNodes.forEach(function (child) {\n if (child instanceof _TextContainer2.default) {\n var style = child.parent.style;\n _this.target.renderTextNode(child.bounds, style.color, style.font, style.textDecoration, style.textShadow);\n } else {\n _this.target.drawShape(child, container.style.color);\n }\n });\n }\n\n if (container.image) {\n var _image = _this.options.imageStore.get(container.image);\n if (_image) {\n var contentBox = (0, _Bounds.calculateContentBox)(container.bounds, container.style.padding, container.style.border);\n var _width = typeof _image.width === 'number' && _image.width > 0 ? _image.width : contentBox.width;\n var _height = typeof _image.height === 'number' && _image.height > 0 ? _image.height : contentBox.height;\n if (_width > 0 && _height > 0) {\n _this.target.clip([(0, _Bounds.calculatePaddingBoxPath)(container.curvedBounds)], function () {\n _this.target.drawImage(_image, new _Bounds.Bounds(0, 0, _width, _height), contentBox);\n });\n }\n }\n }\n };\n var paths = container.getClipPaths();\n if (paths.length) {\n this.target.clip(paths, callback);\n } else {\n callback();\n }\n }\n }, {\n key: 'renderNodeBackgroundAndBorders',\n value: function renderNodeBackgroundAndBorders(container) {\n var _this2 = this;\n\n var HAS_BACKGROUND = !container.style.background.backgroundColor.isTransparent() || container.style.background.backgroundImage.length;\n\n var hasRenderableBorders = container.style.border.some(function (border) {\n return border.borderStyle !== _border.BORDER_STYLE.NONE && !border.borderColor.isTransparent();\n });\n\n var callback = function callback() {\n var backgroundPaintingArea = (0, _background.calculateBackgroungPaintingArea)(container.curvedBounds, container.style.background.backgroundClip);\n\n if (HAS_BACKGROUND) {\n _this2.target.clip([backgroundPaintingArea], function () {\n if (!container.style.background.backgroundColor.isTransparent()) {\n _this2.target.fill(container.style.background.backgroundColor);\n }\n\n _this2.renderBackgroundImage(container);\n });\n }\n\n container.style.border.forEach(function (border, side) {\n if (border.borderStyle !== _border.BORDER_STYLE.NONE && !border.borderColor.isTransparent()) {\n _this2.renderBorder(border, side, container.curvedBounds);\n }\n });\n };\n\n if (HAS_BACKGROUND || hasRenderableBorders) {\n var paths = container.parent ? container.parent.getClipPaths() : [];\n if (paths.length) {\n this.target.clip(paths, callback);\n } else {\n callback();\n }\n }\n }\n }, {\n key: 'renderBackgroundImage',\n value: function renderBackgroundImage(container) {\n var _this3 = this;\n\n container.style.background.backgroundImage.slice(0).reverse().forEach(function (backgroundImage) {\n if (backgroundImage.source.method === 'url' && backgroundImage.source.args.length) {\n _this3.renderBackgroundRepeat(container, backgroundImage);\n } else if (/gradient/i.test(backgroundImage.source.method)) {\n _this3.renderBackgroundGradient(container, backgroundImage);\n }\n });\n }\n }, {\n key: 'renderBackgroundRepeat',\n value: function renderBackgroundRepeat(container, background) {\n var image = this.options.imageStore.get(background.source.args[0]);\n if (image) {\n var backgroundPositioningArea = (0, _background.calculateBackgroungPositioningArea)(container.style.background.backgroundOrigin, container.bounds, container.style.padding, container.style.border);\n var backgroundImageSize = (0, _background.calculateBackgroundSize)(background, image, backgroundPositioningArea);\n var position = (0, _background.calculateBackgroundPosition)(background.position, backgroundImageSize, backgroundPositioningArea);\n var _path = (0, _background.calculateBackgroundRepeatPath)(background, position, backgroundImageSize, backgroundPositioningArea, container.bounds);\n\n var _offsetX = Math.round(backgroundPositioningArea.left + position.x);\n var _offsetY = Math.round(backgroundPositioningArea.top + position.y);\n this.target.renderRepeat(_path, image, backgroundImageSize, _offsetX, _offsetY);\n }\n }\n }, {\n key: 'renderBackgroundGradient',\n value: function renderBackgroundGradient(container, background) {\n var backgroundPositioningArea = (0, _background.calculateBackgroungPositioningArea)(container.style.background.backgroundOrigin, container.bounds, container.style.padding, container.style.border);\n var backgroundImageSize = (0, _background.calculateGradientBackgroundSize)(background, backgroundPositioningArea);\n var position = (0, _background.calculateBackgroundPosition)(background.position, backgroundImageSize, backgroundPositioningArea);\n var gradientBounds = new _Bounds.Bounds(Math.round(backgroundPositioningArea.left + position.x), Math.round(backgroundPositioningArea.top + position.y), backgroundImageSize.width, backgroundImageSize.height);\n\n var gradient = (0, _Gradient.parseGradient)(container, background.source, gradientBounds);\n if (gradient) {\n switch (gradient.type) {\n case _Gradient.GRADIENT_TYPE.LINEAR_GRADIENT:\n // $FlowFixMe\n this.target.renderLinearGradient(gradientBounds, gradient);\n break;\n case _Gradient.GRADIENT_TYPE.RADIAL_GRADIENT:\n // $FlowFixMe\n this.target.renderRadialGradient(gradientBounds, gradient);\n break;\n }\n }\n }\n }, {\n key: 'renderBorder',\n value: function renderBorder(border, side, curvePoints) {\n this.target.drawShape((0, _Bounds.parsePathForBorder)(curvePoints, side), border.borderColor);\n }\n }, {\n key: 'renderStack',\n value: function renderStack(stack) {\n var _this4 = this;\n\n if (stack.container.isVisible()) {\n var _opacity = stack.getOpacity();\n if (_opacity !== this._opacity) {\n this.target.setOpacity(stack.getOpacity());\n this._opacity = _opacity;\n }\n\n var _transform = stack.container.style.transform;\n if (_transform !== null) {\n this.target.transform(stack.container.bounds.left + _transform.transformOrigin[0].value, stack.container.bounds.top + _transform.transformOrigin[1].value, _transform.transform, function () {\n return _this4.renderStackContent(stack);\n });\n } else {\n this.renderStackContent(stack);\n }\n }\n }\n }, {\n key: 'renderStackContent',\n value: function renderStackContent(stack) {\n var _splitStackingContext = splitStackingContexts(stack),\n _splitStackingContext2 = _slicedToArray(_splitStackingContext, 5),\n negativeZIndex = _splitStackingContext2[0],\n zeroOrAutoZIndexOrTransformedOrOpacity = _splitStackingContext2[1],\n positiveZIndex = _splitStackingContext2[2],\n nonPositionedFloats = _splitStackingContext2[3],\n nonPositionedInlineLevel = _splitStackingContext2[4];\n\n var _splitDescendants = splitDescendants(stack),\n _splitDescendants2 = _slicedToArray(_splitDescendants, 2),\n inlineLevel = _splitDescendants2[0],\n nonInlineLevel = _splitDescendants2[1];\n\n // https://www.w3.org/TR/css-position-3/#painting-order\n // 1. the background and borders of the element forming the stacking context.\n\n\n this.renderNodeBackgroundAndBorders(stack.container);\n // 2. the child stacking contexts with negative stack levels (most negative first).\n negativeZIndex.sort(sortByZIndex).forEach(this.renderStack, this);\n // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n this.renderNodeContent(stack.container);\n nonInlineLevel.forEach(this.renderNode, this);\n // 4. All non-positioned floating descendants, in tree order. For each one of these,\n // treat the element as if it created a new stacking context, but any positioned descendants and descendants\n // which actually create a new stacking context should be considered part of the parent stacking context,\n // not this new one.\n nonPositionedFloats.forEach(this.renderStack, this);\n // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.\n nonPositionedInlineLevel.forEach(this.renderStack, this);\n inlineLevel.forEach(this.renderNode, this);\n // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories:\n // All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order.\n // For those with 'z-index: auto', treat the element as if it created a new stacking context,\n // but any positioned descendants and descendants which actually create a new stacking context should be\n // considered part of the parent stacking context, not this new one. For those with 'z-index: 0',\n // treat the stacking context generated atomically.\n //\n // All opacity descendants with opacity less than 1\n //\n // All transform descendants with transform other than none\n zeroOrAutoZIndexOrTransformedOrOpacity.forEach(this.renderStack, this);\n // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index\n // order (smallest first) then tree order.\n positiveZIndex.sort(sortByZIndex).forEach(this.renderStack, this);\n }\n }, {\n key: 'render',\n value: function render(stack) {\n var _this5 = this;\n\n if (this.options.backgroundColor) {\n this.target.rectangle(this.options.x, this.options.y, this.options.width, this.options.height, this.options.backgroundColor);\n }\n this.renderStack(stack);\n var target = this.target.getTarget();\n if (true) {\n return target.then(function (output) {\n _this5.options.logger.log('Render completed');\n return output;\n });\n }\n return target;\n }\n }]);\n\n return Renderer;\n }();\n\n exports.default = Renderer;\n\n var splitDescendants = function splitDescendants(stack) {\n var inlineLevel = [];\n var nonInlineLevel = [];\n\n var length = stack.children.length;\n for (var i = 0; i < length; i++) {\n var child = stack.children[i];\n if (child.isInlineLevel()) {\n inlineLevel.push(child);\n } else {\n nonInlineLevel.push(child);\n }\n }\n return [inlineLevel, nonInlineLevel];\n };\n\n var splitStackingContexts = function splitStackingContexts(stack) {\n var negativeZIndex = [];\n var zeroOrAutoZIndexOrTransformedOrOpacity = [];\n var positiveZIndex = [];\n var nonPositionedFloats = [];\n var nonPositionedInlineLevel = [];\n var length = stack.contexts.length;\n for (var i = 0; i < length; i++) {\n var child = stack.contexts[i];\n if (child.container.isPositioned() || child.container.style.opacity < 1 || child.container.isTransformed()) {\n if (child.container.style.zIndex.order < 0) {\n negativeZIndex.push(child);\n } else if (child.container.style.zIndex.order > 0) {\n positiveZIndex.push(child);\n } else {\n zeroOrAutoZIndexOrTransformedOrOpacity.push(child);\n }\n } else {\n if (child.container.isFloating()) {\n nonPositionedFloats.push(child);\n } else {\n nonPositionedInlineLevel.push(child);\n }\n }\n }\n return [negativeZIndex, zeroOrAutoZIndexOrTransformedOrOpacity, positiveZIndex, nonPositionedFloats, nonPositionedInlineLevel];\n };\n\n var sortByZIndex = function sortByZIndex(a, b) {\n if (a.container.style.zIndex.order > b.container.style.zIndex.order) {\n return 1;\n } else if (a.container.style.zIndex.order < b.container.style.zIndex.order) {\n return -1;\n }\n\n return a.container.index > b.container.index ? 1 : -1;\n };\n\n /***/\n },\n /* 52 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.transformWebkitRadialGradientArgs = exports.parseGradient = exports.RadialGradient = exports.LinearGradient = exports.RADIAL_GRADIENT_SHAPE = exports.GRADIENT_TYPE = undefined;\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];var _n = true;var _d = false;var _e = undefined;try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;_e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }return _arr;\n }return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _NodeContainer = __webpack_require__(3);\n\n var _NodeContainer2 = _interopRequireDefault(_NodeContainer);\n\n var _Angle = __webpack_require__(53);\n\n var _Color = __webpack_require__(0);\n\n var _Color2 = _interopRequireDefault(_Color);\n\n var _Length = __webpack_require__(2);\n\n var _Length2 = _interopRequireDefault(_Length);\n\n var _Util = __webpack_require__(4);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var SIDE_OR_CORNER = /^(to )?(left|top|right|bottom)( (left|top|right|bottom))?$/i;\n var PERCENTAGE_ANGLES = /^([+-]?\\d*\\.?\\d+)% ([+-]?\\d*\\.?\\d+)%$/i;\n var ENDS_WITH_LENGTH = /(px)|%|( 0)$/i;\n var FROM_TO_COLORSTOP = /^(from|to|color-stop)\\((?:([\\d.]+)(%)?,\\s*)?(.+?)\\)$/i;\n var RADIAL_SHAPE_DEFINITION = /^\\s*(circle|ellipse)?\\s*((?:([\\d.]+)(px|r?em|%)\\s*(?:([\\d.]+)(px|r?em|%))?)|closest-side|closest-corner|farthest-side|farthest-corner)?\\s*(?:at\\s*(?:(left|center|right)|([\\d.]+)(px|r?em|%))\\s+(?:(top|center|bottom)|([\\d.]+)(px|r?em|%)))?(?:\\s|$)/i;\n\n var GRADIENT_TYPE = exports.GRADIENT_TYPE = {\n LINEAR_GRADIENT: 0,\n RADIAL_GRADIENT: 1\n };\n\n var RADIAL_GRADIENT_SHAPE = exports.RADIAL_GRADIENT_SHAPE = {\n CIRCLE: 0,\n ELLIPSE: 1\n };\n\n var LENGTH_FOR_POSITION = {\n left: new _Length2.default('0%'),\n top: new _Length2.default('0%'),\n center: new _Length2.default('50%'),\n right: new _Length2.default('100%'),\n bottom: new _Length2.default('100%')\n };\n\n var LinearGradient = exports.LinearGradient = function LinearGradient(colorStops, direction) {\n _classCallCheck(this, LinearGradient);\n\n this.type = GRADIENT_TYPE.LINEAR_GRADIENT;\n this.colorStops = colorStops;\n this.direction = direction;\n };\n\n var RadialGradient = exports.RadialGradient = function RadialGradient(colorStops, shape, center, radius) {\n _classCallCheck(this, RadialGradient);\n\n this.type = GRADIENT_TYPE.RADIAL_GRADIENT;\n this.colorStops = colorStops;\n this.shape = shape;\n this.center = center;\n this.radius = radius;\n };\n\n var parseGradient = exports.parseGradient = function parseGradient(container, _ref, bounds) {\n var args = _ref.args,\n method = _ref.method,\n prefix = _ref.prefix;\n\n if (method === 'linear-gradient') {\n return parseLinearGradient(args, bounds, !!prefix);\n } else if (method === 'gradient' && args[0] === 'linear') {\n // TODO handle correct angle\n return parseLinearGradient(['to bottom'].concat(transformObsoleteColorStops(args.slice(3))), bounds, !!prefix);\n } else if (method === 'radial-gradient') {\n return parseRadialGradient(container, prefix === '-webkit-' ? transformWebkitRadialGradientArgs(args) : args, bounds);\n } else if (method === 'gradient' && args[0] === 'radial') {\n return parseRadialGradient(container, transformObsoleteColorStops(transformWebkitRadialGradientArgs(args.slice(1))), bounds);\n }\n };\n\n var parseColorStops = function parseColorStops(args, firstColorStopIndex, lineLength) {\n var colorStops = [];\n\n for (var i = firstColorStopIndex; i < args.length; i++) {\n var value = args[i];\n var HAS_LENGTH = ENDS_WITH_LENGTH.test(value);\n var lastSpaceIndex = value.lastIndexOf(' ');\n var _color = new _Color2.default(HAS_LENGTH ? value.substring(0, lastSpaceIndex) : value);\n var _stop = HAS_LENGTH ? new _Length2.default(value.substring(lastSpaceIndex + 1)) : i === firstColorStopIndex ? new _Length2.default('0%') : i === args.length - 1 ? new _Length2.default('100%') : null;\n colorStops.push({ color: _color, stop: _stop });\n }\n\n var absoluteValuedColorStops = colorStops.map(function (_ref2) {\n var color = _ref2.color,\n stop = _ref2.stop;\n\n var absoluteStop = lineLength === 0 ? 0 : stop ? stop.getAbsoluteValue(lineLength) / lineLength : null;\n\n return {\n color: color,\n // $FlowFixMe\n stop: absoluteStop\n };\n });\n\n var previousColorStop = absoluteValuedColorStops[0].stop;\n for (var _i = 0; _i < absoluteValuedColorStops.length; _i++) {\n if (previousColorStop !== null) {\n var _stop2 = absoluteValuedColorStops[_i].stop;\n if (_stop2 === null) {\n var n = _i;\n while (absoluteValuedColorStops[n].stop === null) {\n n++;\n }\n var steps = n - _i + 1;\n var nextColorStep = absoluteValuedColorStops[n].stop;\n var stepSize = (nextColorStep - previousColorStop) / steps;\n for (; _i < n; _i++) {\n previousColorStop = absoluteValuedColorStops[_i].stop = previousColorStop + stepSize;\n }\n } else {\n previousColorStop = _stop2;\n }\n }\n }\n\n return absoluteValuedColorStops;\n };\n\n var parseLinearGradient = function parseLinearGradient(args, bounds, hasPrefix) {\n var angle = (0, _Angle.parseAngle)(args[0]);\n var HAS_SIDE_OR_CORNER = SIDE_OR_CORNER.test(args[0]);\n var HAS_DIRECTION = HAS_SIDE_OR_CORNER || angle !== null || PERCENTAGE_ANGLES.test(args[0]);\n var direction = HAS_DIRECTION ? angle !== null ? calculateGradientDirection(\n // if there is a prefix, the 0° angle points due East (instead of North per W3C)\n hasPrefix ? angle - Math.PI * 0.5 : angle, bounds) : HAS_SIDE_OR_CORNER ? parseSideOrCorner(args[0], bounds) : parsePercentageAngle(args[0], bounds) : calculateGradientDirection(Math.PI, bounds);\n var firstColorStopIndex = HAS_DIRECTION ? 1 : 0;\n\n // TODO: Fix some inaccuracy with color stops with px values\n var lineLength = Math.min((0, _Util.distance)(Math.abs(direction.x0) + Math.abs(direction.x1), Math.abs(direction.y0) + Math.abs(direction.y1)), bounds.width * 2, bounds.height * 2);\n\n return new LinearGradient(parseColorStops(args, firstColorStopIndex, lineLength), direction);\n };\n\n var parseRadialGradient = function parseRadialGradient(container, args, bounds) {\n var m = args[0].match(RADIAL_SHAPE_DEFINITION);\n var shape = m && (m[1] === 'circle' || // explicit shape specification\n m[3] !== undefined && m[5] === undefined) // only one radius coordinate\n ? RADIAL_GRADIENT_SHAPE.CIRCLE : RADIAL_GRADIENT_SHAPE.ELLIPSE;\n var radius = {};\n var center = {};\n\n if (m) {\n // Radius\n if (m[3] !== undefined) {\n radius.x = (0, _Length.calculateLengthFromValueWithUnit)(container, m[3], m[4]).getAbsoluteValue(bounds.width);\n }\n\n if (m[5] !== undefined) {\n radius.y = (0, _Length.calculateLengthFromValueWithUnit)(container, m[5], m[6]).getAbsoluteValue(bounds.height);\n }\n\n // Position\n if (m[7]) {\n center.x = LENGTH_FOR_POSITION[m[7].toLowerCase()];\n } else if (m[8] !== undefined) {\n center.x = (0, _Length.calculateLengthFromValueWithUnit)(container, m[8], m[9]);\n }\n\n if (m[10]) {\n center.y = LENGTH_FOR_POSITION[m[10].toLowerCase()];\n } else if (m[11] !== undefined) {\n center.y = (0, _Length.calculateLengthFromValueWithUnit)(container, m[11], m[12]);\n }\n }\n\n var gradientCenter = {\n x: center.x === undefined ? bounds.width / 2 : center.x.getAbsoluteValue(bounds.width),\n y: center.y === undefined ? bounds.height / 2 : center.y.getAbsoluteValue(bounds.height)\n };\n var gradientRadius = calculateRadius(m && m[2] || 'farthest-corner', shape, gradientCenter, radius, bounds);\n\n return new RadialGradient(parseColorStops(args, m ? 1 : 0, Math.min(gradientRadius.x, gradientRadius.y)), shape, gradientCenter, gradientRadius);\n };\n\n var calculateGradientDirection = function calculateGradientDirection(radian, bounds) {\n var width = bounds.width;\n var height = bounds.height;\n var HALF_WIDTH = width * 0.5;\n var HALF_HEIGHT = height * 0.5;\n var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n var HALF_LINE_LENGTH = lineLength / 2;\n\n var x0 = HALF_WIDTH + Math.sin(radian) * HALF_LINE_LENGTH;\n var y0 = HALF_HEIGHT - Math.cos(radian) * HALF_LINE_LENGTH;\n var x1 = width - x0;\n var y1 = height - y0;\n\n return { x0: x0, x1: x1, y0: y0, y1: y1 };\n };\n\n var parseTopRight = function parseTopRight(bounds) {\n return Math.acos(bounds.width / 2 / ((0, _Util.distance)(bounds.width, bounds.height) / 2));\n };\n\n var parseSideOrCorner = function parseSideOrCorner(side, bounds) {\n switch (side) {\n case 'bottom':\n case 'to top':\n return calculateGradientDirection(0, bounds);\n case 'left':\n case 'to right':\n return calculateGradientDirection(Math.PI / 2, bounds);\n case 'right':\n case 'to left':\n return calculateGradientDirection(3 * Math.PI / 2, bounds);\n case 'top right':\n case 'right top':\n case 'to bottom left':\n case 'to left bottom':\n return calculateGradientDirection(Math.PI + parseTopRight(bounds), bounds);\n case 'top left':\n case 'left top':\n case 'to bottom right':\n case 'to right bottom':\n return calculateGradientDirection(Math.PI - parseTopRight(bounds), bounds);\n case 'bottom left':\n case 'left bottom':\n case 'to top right':\n case 'to right top':\n return calculateGradientDirection(parseTopRight(bounds), bounds);\n case 'bottom right':\n case 'right bottom':\n case 'to top left':\n case 'to left top':\n return calculateGradientDirection(2 * Math.PI - parseTopRight(bounds), bounds);\n case 'top':\n case 'to bottom':\n default:\n return calculateGradientDirection(Math.PI, bounds);\n }\n };\n\n var parsePercentageAngle = function parsePercentageAngle(angle, bounds) {\n var _angle$split$map = angle.split(' ').map(parseFloat),\n _angle$split$map2 = _slicedToArray(_angle$split$map, 2),\n left = _angle$split$map2[0],\n top = _angle$split$map2[1];\n\n var ratio = left / 100 * bounds.width / (top / 100 * bounds.height);\n\n return calculateGradientDirection(Math.atan(isNaN(ratio) ? 1 : ratio) + Math.PI / 2, bounds);\n };\n\n var findCorner = function findCorner(bounds, x, y, closest) {\n var corners = [{ x: 0, y: 0 }, { x: 0, y: bounds.height }, { x: bounds.width, y: 0 }, { x: bounds.width, y: bounds.height }];\n\n // $FlowFixMe\n return corners.reduce(function (stat, corner) {\n var d = (0, _Util.distance)(x - corner.x, y - corner.y);\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n\n return stat;\n }, {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }).optimumCorner;\n };\n\n var calculateRadius = function calculateRadius(extent, shape, center, radius, bounds) {\n var x = center.x;\n var y = center.y;\n var rx = 0;\n var ry = 0;\n\n switch (extent) {\n case 'closest-side':\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - bounds.width), Math.abs(y), Math.abs(y - bounds.height));\n } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {\n rx = Math.min(Math.abs(x), Math.abs(x - bounds.width));\n ry = Math.min(Math.abs(y), Math.abs(y - bounds.height));\n }\n break;\n\n case 'closest-corner':\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {\n rx = ry = Math.min((0, _Util.distance)(x, y), (0, _Util.distance)(x, y - bounds.height), (0, _Util.distance)(x - bounds.width, y), (0, _Util.distance)(x - bounds.width, y - bounds.height));\n } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n var c = Math.min(Math.abs(y), Math.abs(y - bounds.height)) / Math.min(Math.abs(x), Math.abs(x - bounds.width));\n var corner = findCorner(bounds, x, y, true);\n rx = (0, _Util.distance)(corner.x - x, (corner.y - y) / c);\n ry = c * rx;\n }\n break;\n\n case 'farthest-side':\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - bounds.width), Math.abs(y), Math.abs(y - bounds.height));\n } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {\n rx = Math.max(Math.abs(x), Math.abs(x - bounds.width));\n ry = Math.max(Math.abs(y), Math.abs(y - bounds.height));\n }\n break;\n\n case 'farthest-corner':\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {\n rx = ry = Math.max((0, _Util.distance)(x, y), (0, _Util.distance)(x, y - bounds.height), (0, _Util.distance)(x - bounds.width, y), (0, _Util.distance)(x - bounds.width, y - bounds.height));\n } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n var _c = Math.max(Math.abs(y), Math.abs(y - bounds.height)) / Math.max(Math.abs(x), Math.abs(x - bounds.width));\n var _corner = findCorner(bounds, x, y, false);\n rx = (0, _Util.distance)(_corner.x - x, (_corner.y - y) / _c);\n ry = _c * rx;\n }\n break;\n\n default:\n // pixel or percentage values\n rx = radius.x || 0;\n ry = radius.y !== undefined ? radius.y : rx;\n break;\n }\n\n return {\n x: rx,\n y: ry\n };\n };\n\n var transformWebkitRadialGradientArgs = exports.transformWebkitRadialGradientArgs = function transformWebkitRadialGradientArgs(args) {\n var shape = '';\n var radius = '';\n var extent = '';\n var position = '';\n var idx = 0;\n\n var POSITION = /^(left|center|right|\\d+(?:px|r?em|%)?)(?:\\s+(top|center|bottom|\\d+(?:px|r?em|%)?))?$/i;\n var SHAPE_AND_EXTENT = /^(circle|ellipse)?\\s*(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)?$/i;\n var RADIUS = /^\\d+(px|r?em|%)?(?:\\s+\\d+(px|r?em|%)?)?$/i;\n\n var matchStartPosition = args[idx].match(POSITION);\n if (matchStartPosition) {\n idx++;\n }\n\n var matchShapeExtent = args[idx].match(SHAPE_AND_EXTENT);\n if (matchShapeExtent) {\n shape = matchShapeExtent[1] || '';\n extent = matchShapeExtent[2] || '';\n if (extent === 'contain') {\n extent = 'closest-side';\n } else if (extent === 'cover') {\n extent = 'farthest-corner';\n }\n idx++;\n }\n\n var matchStartRadius = args[idx].match(RADIUS);\n if (matchStartRadius) {\n idx++;\n }\n\n var matchEndPosition = args[idx].match(POSITION);\n if (matchEndPosition) {\n idx++;\n }\n\n var matchEndRadius = args[idx].match(RADIUS);\n if (matchEndRadius) {\n idx++;\n }\n\n var matchPosition = matchEndPosition || matchStartPosition;\n if (matchPosition && matchPosition[1]) {\n position = matchPosition[1] + (/^\\d+$/.test(matchPosition[1]) ? 'px' : '');\n if (matchPosition[2]) {\n position += ' ' + matchPosition[2] + (/^\\d+$/.test(matchPosition[2]) ? 'px' : '');\n }\n }\n\n var matchRadius = matchEndRadius || matchStartRadius;\n if (matchRadius) {\n radius = matchRadius[0];\n if (!matchRadius[1]) {\n radius += 'px';\n }\n }\n\n if (position && !shape && !radius && !extent) {\n radius = position;\n position = '';\n }\n\n if (position) {\n position = 'at ' + position;\n }\n\n return [[shape, extent, radius, position].filter(function (s) {\n return !!s;\n }).join(' ')].concat(args.slice(idx));\n };\n\n var transformObsoleteColorStops = function transformObsoleteColorStops(args) {\n return args.map(function (color) {\n return color.match(FROM_TO_COLORSTOP);\n })\n // $FlowFixMe\n .map(function (v, index) {\n if (!v) {\n return args[index];\n }\n\n switch (v[1]) {\n case 'from':\n return v[4] + ' 0%';\n case 'to':\n return v[4] + ' 100%';\n case 'color-stop':\n if (v[3] === '%') {\n return v[4] + ' ' + v[2];\n }\n return v[4] + ' ' + parseFloat(v[2]) * 100 + '%';\n }\n });\n };\n\n /***/\n },\n /* 53 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var ANGLE = /([+-]?\\d*\\.?\\d+)(deg|grad|rad|turn)/i;\n\n var parseAngle = exports.parseAngle = function parseAngle(angle) {\n var match = angle.match(ANGLE);\n\n if (match) {\n var value = parseFloat(match[1]);\n switch (match[2].toLowerCase()) {\n case 'deg':\n return Math.PI * value / 180;\n case 'grad':\n return Math.PI / 200 * value;\n case 'rad':\n return value;\n case 'turn':\n return Math.PI * 2 * value;\n }\n }\n\n return null;\n };\n\n /***/\n },\n /* 54 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.cloneWindow = exports.DocumentCloner = undefined;\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];var _n = true;var _d = false;var _e = undefined;try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;_e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }return _arr;\n }return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n var _Bounds = __webpack_require__(1);\n\n var _Proxy = __webpack_require__(26);\n\n var _ResourceLoader = __webpack_require__(55);\n\n var _ResourceLoader2 = _interopRequireDefault(_ResourceLoader);\n\n var _Util = __webpack_require__(4);\n\n var _background = __webpack_require__(5);\n\n var _CanvasRenderer = __webpack_require__(15);\n\n var _CanvasRenderer2 = _interopRequireDefault(_CanvasRenderer);\n\n var _PseudoNodeContent = __webpack_require__(56);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\n var DocumentCloner = exports.DocumentCloner = function () {\n function DocumentCloner(element, options, logger, copyInline, renderer) {\n _classCallCheck(this, DocumentCloner);\n\n this.referenceElement = element;\n this.scrolledElements = [];\n this.copyStyles = copyInline;\n this.inlineImages = copyInline;\n this.logger = logger;\n this.options = options;\n this.renderer = renderer;\n this.resourceLoader = new _ResourceLoader2.default(options, logger, window);\n this.pseudoContentData = {\n counters: {},\n quoteDepth: 0\n };\n // $FlowFixMe\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement);\n }\n\n _createClass(DocumentCloner, [{\n key: 'inlineAllImages',\n value: function inlineAllImages(node) {\n var _this = this;\n\n if (this.inlineImages && node) {\n var style = node.style;\n Promise.all((0, _background.parseBackgroundImage)(style.backgroundImage).map(function (backgroundImage) {\n if (backgroundImage.method === 'url') {\n return _this.resourceLoader.inlineImage(backgroundImage.args[0]).then(function (img) {\n return img && typeof img.src === 'string' ? 'url(\"' + img.src + '\")' : 'none';\n }).catch(function (e) {\n if (true) {\n _this.logger.log('Unable to load image', e);\n }\n });\n }\n return Promise.resolve('' + backgroundImage.prefix + backgroundImage.method + '(' + backgroundImage.args.join(',') + ')');\n })).then(function (backgroundImages) {\n if (backgroundImages.length > 1) {\n // TODO Multiple backgrounds somehow broken in Chrome\n style.backgroundColor = '';\n }\n style.backgroundImage = backgroundImages.join(',');\n });\n\n if (node instanceof HTMLImageElement) {\n this.resourceLoader.inlineImage(node.src).then(function (img) {\n if (img && node instanceof HTMLImageElement && node.parentNode) {\n var parentNode = node.parentNode;\n var clonedChild = (0, _Util.copyCSSStyles)(node.style, img.cloneNode(false));\n parentNode.replaceChild(clonedChild, node);\n }\n }).catch(function (e) {\n if (true) {\n _this.logger.log('Unable to load image', e);\n }\n });\n }\n }\n }\n }, {\n key: 'inlineFonts',\n value: function inlineFonts(document) {\n var _this2 = this;\n\n return Promise.all(Array.from(document.styleSheets).map(function (sheet) {\n if (sheet.href) {\n return fetch(sheet.href).then(function (res) {\n return res.text();\n }).then(function (text) {\n return createStyleSheetFontsFromText(text, sheet.href);\n }).catch(function (e) {\n if (true) {\n _this2.logger.log('Unable to load stylesheet', e);\n }\n return [];\n });\n }\n return getSheetFonts(sheet, document);\n })).then(function (fonts) {\n return fonts.reduce(function (acc, font) {\n return acc.concat(font);\n }, []);\n }).then(function (fonts) {\n return Promise.all(fonts.map(function (font) {\n return fetch(font.formats[0].src).then(function (response) {\n return response.blob();\n }).then(function (blob) {\n return new Promise(function (resolve, reject) {\n var reader = new FileReader();\n reader.onerror = reject;\n reader.onload = function () {\n // $FlowFixMe\n var result = reader.result;\n resolve(result);\n };\n reader.readAsDataURL(blob);\n });\n }).then(function (dataUri) {\n font.fontFace.setProperty('src', 'url(\"' + dataUri + '\")');\n return '@font-face {' + font.fontFace.cssText + ' ';\n });\n }));\n }).then(function (fontCss) {\n var style = document.createElement('style');\n style.textContent = fontCss.join('\\n');\n _this2.documentElement.appendChild(style);\n });\n }\n }, {\n key: 'createElementClone',\n value: function createElementClone(node) {\n var _this3 = this;\n\n if (this.copyStyles && node instanceof HTMLCanvasElement) {\n var img = node.ownerDocument.createElement('img');\n try {\n img.src = node.toDataURL();\n image3.crossOrigin = \"anonymous\";\n return img;\n } catch (e) {\n if (true) {\n this.logger.log('Unable to clone canvas contents, canvas is tainted');\n }\n }\n }\n\n if (node instanceof HTMLIFrameElement) {\n var tempIframe = node.cloneNode(false);\n var iframeKey = generateIframeKey();\n tempIframe.setAttribute('data-html2canvas-internal-iframe-key', iframeKey);\n\n var _parseBounds = (0, _Bounds.parseBounds)(node, 0, 0),\n width = _parseBounds.width,\n height = _parseBounds.height;\n\n this.resourceLoader.cache[iframeKey] = getIframeDocumentElement(node, this.options).then(function (documentElement) {\n return _this3.renderer(documentElement, {\n async: _this3.options.async,\n allowTaint: _this3.options.allowTaint,\n backgroundColor: '#ffffff',\n canvas: null,\n imageTimeout: _this3.options.imageTimeout,\n logging: _this3.options.logging,\n proxy: _this3.options.proxy,\n removeContainer: _this3.options.removeContainer,\n scale: _this3.options.scale,\n foreignObjectRendering: _this3.options.foreignObjectRendering,\n useCORS: _this3.options.useCORS,\n target: new _CanvasRenderer2.default(),\n width: width,\n height: height,\n x: 0,\n y: 0,\n windowWidth: documentElement.ownerDocument.defaultView.innerWidth,\n windowHeight: documentElement.ownerDocument.defaultView.innerHeight,\n scrollX: documentElement.ownerDocument.defaultView.pageXOffset,\n scrollY: documentElement.ownerDocument.defaultView.pageYOffset\n }, _this3.logger.child(iframeKey));\n }).then(function (canvas) {\n return new Promise(function (resolve, reject) {\n var iframeCanvas = document.createElement('img');\n iframeCanvas.onload = function () {\n return resolve(canvas);\n };\n iframeCanvas.onerror = reject;\n iframeCanvas.src = canvas.toDataURL();\n if (tempIframe.parentNode) {\n tempIframe.parentNode.replaceChild((0, _Util.copyCSSStyles)(node.ownerDocument.defaultView.getComputedStyle(node), iframeCanvas), tempIframe);\n }\n });\n });\n return tempIframe;\n }\n\n if (node instanceof HTMLStyleElement && node.sheet && node.sheet.cssRules) {\n var css = [].slice.call(node.sheet.cssRules, 0).reduce(function (css, rule) {\n try {\n if (rule && rule.cssText) {\n return css + rule.cssText;\n }\n return css;\n } catch (err) {\n _this3.logger.log('Unable to access cssText property', rule.name);\n return css;\n }\n }, '');\n var style = node.cloneNode(false);\n style.textContent = css;\n return style;\n }\n\n return node.cloneNode(false);\n }\n }, {\n key: 'cloneNode',\n value: function cloneNode(node) {\n var clone = node.nodeType === Node.TEXT_NODE ? document.createTextNode(node.nodeValue) : this.createElementClone(node);\n\n var window = node.ownerDocument.defaultView;\n var style = node instanceof window.HTMLElement ? window.getComputedStyle(node) : null;\n var styleBefore = node instanceof window.HTMLElement ? window.getComputedStyle(node, ':before') : null;\n var styleAfter = node instanceof window.HTMLElement ? window.getComputedStyle(node, ':after') : null;\n\n if (this.referenceElement === node && clone instanceof window.HTMLElement) {\n this.clonedReferenceElement = clone;\n }\n\n if (clone instanceof window.HTMLBodyElement) {\n createPseudoHideStyles(clone);\n }\n\n var counters = (0, _PseudoNodeContent.parseCounterReset)(style, this.pseudoContentData);\n var contentBefore = (0, _PseudoNodeContent.resolvePseudoContent)(node, styleBefore, this.pseudoContentData);\n\n for (var child = node.firstChild; child; child = child.nextSibling) {\n if (child.nodeType !== Node.ELEMENT_NODE || child.nodeName !== 'SCRIPT' &&\n // $FlowFixMe\n !child.hasAttribute(IGNORE_ATTRIBUTE) && (typeof this.options.ignoreElements !== 'function' ||\n // $FlowFixMe\n !this.options.ignoreElements(child))) {\n if (!this.copyStyles || child.nodeName !== 'STYLE') {\n clone.appendChild(this.cloneNode(child));\n }\n }\n }\n\n var contentAfter = (0, _PseudoNodeContent.resolvePseudoContent)(node, styleAfter, this.pseudoContentData);\n (0, _PseudoNodeContent.popCounters)(counters, this.pseudoContentData);\n\n if (node instanceof window.HTMLElement && clone instanceof window.HTMLElement) {\n if (styleBefore) {\n this.inlineAllImages(inlinePseudoElement(node, clone, styleBefore, contentBefore, PSEUDO_BEFORE));\n }\n if (styleAfter) {\n this.inlineAllImages(inlinePseudoElement(node, clone, styleAfter, contentAfter, PSEUDO_AFTER));\n }\n if (style && this.copyStyles && !(node instanceof HTMLIFrameElement)) {\n (0, _Util.copyCSSStyles)(style, clone);\n }\n this.inlineAllImages(clone);\n if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n }\n switch (node.nodeName) {\n case 'CANVAS':\n if (!this.copyStyles) {\n cloneCanvasContents(node, clone);\n }\n break;\n case 'TEXTAREA':\n case 'SELECT':\n clone.value = node.value;\n break;\n }\n }\n return clone;\n }\n }]);\n\n return DocumentCloner;\n }();\n\n var getSheetFonts = function getSheetFonts(sheet, document) {\n // $FlowFixMe\n return (sheet.cssRules ? Array.from(sheet.cssRules) : []).filter(function (rule) {\n return rule.type === CSSRule.FONT_FACE_RULE;\n }).map(function (rule) {\n var src = (0, _background.parseBackgroundImage)(rule.style.getPropertyValue('src'));\n var formats = [];\n for (var i = 0; i < src.length; i++) {\n if (src[i].method === 'url' && src[i + 1] && src[i + 1].method === 'format') {\n var a = document.createElement('a');\n a.href = src[i].args[0];\n if (document.body) {\n document.body.appendChild(a);\n }\n\n var font = {\n src: a.href,\n format: src[i + 1].args[0]\n };\n formats.push(font);\n }\n }\n\n return {\n // TODO select correct format for browser),\n\n formats: formats.filter(function (font) {\n return (/^woff/i.test(font.format)\n );\n }),\n fontFace: rule.style\n };\n }).filter(function (font) {\n return font.formats.length;\n });\n };\n\n var createStyleSheetFontsFromText = function createStyleSheetFontsFromText(text, baseHref) {\n var doc = document.implementation.createHTMLDocument('');\n var base = document.createElement('base');\n // $FlowFixMe\n base.href = baseHref;\n var style = document.createElement('style');\n\n style.textContent = text;\n if (doc.head) {\n doc.head.appendChild(base);\n }\n if (doc.body) {\n doc.body.appendChild(style);\n }\n\n return style.sheet ? getSheetFonts(style.sheet, doc) : [];\n };\n\n var restoreOwnerScroll = function restoreOwnerScroll(ownerDocument, x, y) {\n if (ownerDocument.defaultView && (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {\n ownerDocument.defaultView.scrollTo(x, y);\n }\n };\n\n var cloneCanvasContents = function cloneCanvasContents(canvas, clonedCanvas) {\n try {\n if (clonedCanvas) {\n clonedCanvas.width = canvas.width;\n clonedCanvas.height = canvas.height;\n var ctx = canvas.getContext('2d');\n var clonedCtx = clonedCanvas.getContext('2d');\n if (ctx) {\n clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n } else {\n clonedCtx.drawImage(canvas, 0, 0);\n }\n }\n } catch (e) {}\n };\n\n var inlinePseudoElement = function inlinePseudoElement(node, clone, style, contentItems, pseudoElt) {\n if (!style || !style.content || style.content === 'none' || style.content === '-moz-alt-content' || style.display === 'none') {\n return;\n }\n\n var anonymousReplacedElement = clone.ownerDocument.createElement('html2canvaspseudoelement');\n (0, _Util.copyCSSStyles)(style, anonymousReplacedElement);\n\n if (contentItems) {\n var len = contentItems.length;\n for (var i = 0; i < len; i++) {\n var item = contentItems[i];\n switch (item.type) {\n case _PseudoNodeContent.PSEUDO_CONTENT_ITEM_TYPE.IMAGE:\n var img = clone.ownerDocument.createElement('img');\n img.src = (0, _background.parseBackgroundImage)('url(' + item.value + ')')[0].args[0];\n img.style.opacity = '1';\n anonymousReplacedElement.appendChild(img);\n break;\n case _PseudoNodeContent.PSEUDO_CONTENT_ITEM_TYPE.TEXT:\n anonymousReplacedElement.appendChild(clone.ownerDocument.createTextNode(item.value));\n break;\n }\n }\n }\n\n anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + ' ' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n clone.className += pseudoElt === PSEUDO_BEFORE ? ' ' + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE : ' ' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n if (pseudoElt === PSEUDO_BEFORE) {\n clone.insertBefore(anonymousReplacedElement, clone.firstChild);\n } else {\n clone.appendChild(anonymousReplacedElement);\n }\n\n return anonymousReplacedElement;\n };\n\n var URL_REGEXP = /^url\\((.+)\\)$/i;\n var PSEUDO_BEFORE = ':before';\n var PSEUDO_AFTER = ':after';\n var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\n var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\n\n var PSEUDO_HIDE_ELEMENT_STYLE = '{\\n content: \"\" !important;\\n display: none !important;\\n}';\n\n var createPseudoHideStyles = function createPseudoHideStyles(body) {\n createStyles(body, '.' + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + '\\n .' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE);\n };\n\n var createStyles = function createStyles(body, styles) {\n var style = body.ownerDocument.createElement('style');\n style.innerHTML = styles;\n body.appendChild(style);\n };\n\n var initNode = function initNode(_ref) {\n var _ref2 = _slicedToArray(_ref, 3),\n element = _ref2[0],\n x = _ref2[1],\n y = _ref2[2];\n\n element.scrollLeft = x;\n element.scrollTop = y;\n };\n\n var generateIframeKey = function generateIframeKey() {\n return Math.ceil(Date.now() + Math.random() * 10000000).toString(16);\n };\n\n var DATA_URI_REGEXP = /^data:text\\/(.+);(base64)?,(.*)$/i;\n\n var getIframeDocumentElement = function getIframeDocumentElement(node, options) {\n try {\n return Promise.resolve(node.contentWindow.document.documentElement);\n } catch (e) {\n return options.proxy ? (0, _Proxy.Proxy)(node.src, options).then(function (html) {\n var match = html.match(DATA_URI_REGEXP);\n if (!match) {\n return Promise.reject();\n }\n\n return match[2] === 'base64' ? window.atob(decodeURIComponent(match[3])) : decodeURIComponent(match[3]);\n }).then(function (html) {\n return createIframeContainer(node.ownerDocument, (0, _Bounds.parseBounds)(node, 0, 0)).then(function (cloneIframeContainer) {\n var cloneWindow = cloneIframeContainer.contentWindow;\n var documentClone = cloneWindow.document;\n\n documentClone.open();\n documentClone.write(html);\n var iframeLoad = iframeLoader(cloneIframeContainer).then(function () {\n return documentClone.documentElement;\n });\n\n documentClone.close();\n return iframeLoad;\n });\n }) : Promise.reject();\n }\n };\n\n var createIframeContainer = function createIframeContainer(ownerDocument, bounds) {\n var cloneIframeContainer = ownerDocument.createElement('iframe');\n\n cloneIframeContainer.className = 'html2canvas-container';\n cloneIframeContainer.style.visibility = 'hidden';\n cloneIframeContainer.style.position = 'fixed';\n cloneIframeContainer.style.left = '-10000px';\n cloneIframeContainer.style.top = '0px';\n cloneIframeContainer.style.border = '0';\n cloneIframeContainer.width = bounds.width.toString();\n cloneIframeContainer.height = bounds.height.toString();\n cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\n cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\n if (!ownerDocument.body) {\n return Promise.reject(true ? 'Body element not found in Document that is getting rendered' : '');\n }\n\n ownerDocument.body.appendChild(cloneIframeContainer);\n\n return Promise.resolve(cloneIframeContainer);\n };\n\n var iframeLoader = function iframeLoader(cloneIframeContainer) {\n var cloneWindow = cloneIframeContainer.contentWindow;\n var documentClone = cloneWindow.document;\n\n return new Promise(function (resolve, reject) {\n cloneWindow.onload = cloneIframeContainer.onload = documentClone.onreadystatechange = function () {\n var interval = setInterval(function () {\n if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n clearInterval(interval);\n resolve(cloneIframeContainer);\n }\n }, 50);\n };\n });\n };\n\n var cloneWindow = exports.cloneWindow = function cloneWindow(ownerDocument, bounds, referenceElement, options, logger, renderer) {\n var cloner = new DocumentCloner(referenceElement, options, logger, false, renderer);\n var scrollX = ownerDocument.defaultView.pageXOffset;\n var scrollY = ownerDocument.defaultView.pageYOffset;\n\n return createIframeContainer(ownerDocument, bounds).then(function (cloneIframeContainer) {\n var cloneWindow = cloneIframeContainer.contentWindow;\n var documentClone = cloneWindow.document;\n\n /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle\r\n if window url is about:blank, we can assign the url to current by writing onto the document\r\n */\n\n var iframeLoad = iframeLoader(cloneIframeContainer).then(function () {\n cloner.scrolledElements.forEach(initNode);\n cloneWindow.scrollTo(bounds.left, bounds.top);\n if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) && (cloneWindow.scrollY !== bounds.top || cloneWindow.scrollX !== bounds.left)) {\n documentClone.documentElement.style.top = -bounds.top + 'px';\n documentClone.documentElement.style.left = -bounds.left + 'px';\n documentClone.documentElement.style.position = 'absolute';\n }\n\n var result = Promise.resolve([cloneIframeContainer, cloner.clonedReferenceElement, cloner.resourceLoader]);\n\n var onclone = options.onclone;\n\n return cloner.clonedReferenceElement instanceof cloneWindow.HTMLElement || cloner.clonedReferenceElement instanceof ownerDocument.defaultView.HTMLElement || cloner.clonedReferenceElement instanceof HTMLElement ? typeof onclone === 'function' ? Promise.resolve().then(function () {\n return onclone(documentClone);\n }).then(function () {\n return result;\n }) : result : Promise.reject(true ? 'Error finding the ' + referenceElement.nodeName + ' in the cloned document' : '');\n });\n\n documentClone.open();\n documentClone.write(serializeDoctype(document.doctype) + '<html></html>');\n // Chrome scrolls the parent document for some reason after the write to the cloned window???\n restoreOwnerScroll(referenceElement.ownerDocument, scrollX, scrollY);\n documentClone.replaceChild(documentClone.adoptNode(cloner.documentElement), documentClone.documentElement);\n documentClone.close();\n\n return iframeLoad;\n });\n };\n\n var serializeDoctype = function serializeDoctype(doctype) {\n var str = '';\n if (doctype) {\n str += '<!DOCTYPE ';\n if (doctype.name) {\n str += doctype.name;\n }\n\n if (doctype.internalSubset) {\n str += doctype.internalSubset;\n }\n\n if (doctype.publicId) {\n str += '\"' + doctype.publicId + '\"';\n }\n\n if (doctype.systemId) {\n str += '\"' + doctype.systemId + '\"';\n }\n\n str += '>';\n }\n\n return str;\n };\n\n /***/\n },\n /* 55 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResourceStore = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n }();\n\n var _Feature = __webpack_require__(10);\n\n var _Feature2 = _interopRequireDefault(_Feature);\n\n var _Proxy = __webpack_require__(26);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var ResourceLoader = function () {\n function ResourceLoader(options, logger, window) {\n _classCallCheck(this, ResourceLoader);\n\n this.options = options;\n this._window = window;\n this.origin = this.getOrigin(window.location.href);\n this.cache = {};\n this.logger = logger;\n this._index = 0;\n }\n\n _createClass(ResourceLoader, [{\n key: 'loadImage',\n value: function loadImage(src) {\n var _this = this;\n\n if (this.hasResourceInCache(src)) {\n return src;\n }\n\n if (!isSVG(src) || _Feature2.default.SUPPORT_SVG_DRAWING) {\n if (this.options.allowTaint === true || isInlineImage(src) || this.isSameOrigin(src)) {\n return this.addImage(src, src, true);\n } else if (!this.isSameOrigin(src)) {\n if (typeof this.options.proxy === 'string') {\n this.cache[src] = (0, _Proxy.Proxy)(src, this.options).then(function (src) {\n return _loadImage(src, _this.options.imageTimeout || 0);\n });\n return src;\n } else if (this.options.useCORS === true && _Feature2.default.SUPPORT_CORS_IMAGES) {\n return this.addImage(src, src, true);\n }\n }\n }\n }\n }, {\n key: 'inlineImage',\n value: function inlineImage(src) {\n var _this2 = this;\n\n if (isInlineImage(src)) {\n return _loadImage(src, this.options.imageTimeout || 0);\n }\n if (this.hasResourceInCache(src)) {\n return this.cache[src];\n }\n if (!this.isSameOrigin(src) && typeof this.options.proxy === 'string') {\n return this.cache[src] = (0, _Proxy.Proxy)(src, this.options).then(function (src) {\n return _loadImage(src, _this2.options.imageTimeout || 0);\n });\n }\n\n return this.xhrImage(src);\n }\n }, {\n key: 'xhrImage',\n value: function xhrImage(src) {\n var _this3 = this;\n\n this.cache[src] = new Promise(function (resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status !== 200) {\n reject('Failed to fetch image ' + src.substring(0, 256) + ' with status code ' + xhr.status);\n } else {\n var reader = new FileReader();\n reader.addEventListener('load', function () {\n // $FlowFixMe\n var result = reader.result;\n resolve(result);\n }, false);\n reader.addEventListener('error', function (e) {\n return reject(e);\n }, false);\n reader.readAsDataURL(xhr.response);\n }\n }\n };\n xhr.responseType = 'blob';\n if (_this3.options.imageTimeout) {\n var timeout = _this3.options.imageTimeout;\n xhr.timeout = timeout;\n xhr.ontimeout = function () {\n return reject(true ? 'Timed out (' + timeout + 'ms) fetching ' + src.substring(0, 256) : '');\n };\n }\n xhr.open('GET', src, true);\n xhr.send();\n }).then(function (src) {\n return _loadImage(src, _this3.options.imageTimeout || 0);\n });\n\n return this.cache[src];\n }\n }, {\n key: 'loadCanvas',\n value: function loadCanvas(node) {\n var key = String(this._index++);\n this.cache[key] = Promise.resolve(node);\n return key;\n }\n }, {\n key: 'hasResourceInCache',\n value: function hasResourceInCache(key) {\n return typeof this.cache[key] !== 'undefined';\n }\n }, {\n key: 'addImage',\n value: function addImage(key, src, useCORS) {\n var _this4 = this;\n\n if (true) {\n this.logger.log('Added image ' + key.substring(0, 256));\n }\n\n var imageLoadHandler = function imageLoadHandler(supportsDataImages) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () {\n return resolve(img);\n };\n //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n if (!supportsDataImages || useCORS) {\n img.crossOrigin = 'anonymous';\n }\n\n img.onerror = reject;\n img.src = src;\n if (img.complete === true) {\n // Inline XML images may fail to parse, throwing an Error later on\n setTimeout(function () {\n resolve(img);\n }, 500);\n }\n if (_this4.options.imageTimeout) {\n var timeout = _this4.options.imageTimeout;\n setTimeout(function () {\n return reject(true ? 'Timed out (' + timeout + 'ms) fetching ' + src.substring(0, 256) : '');\n }, timeout);\n }\n });\n };\n\n this.cache[key] = isInlineBase64Image(src) && !isSVG(src) ? // $FlowFixMe\n _Feature2.default.SUPPORT_BASE64_DRAWING(src).then(imageLoadHandler) : imageLoadHandler(true);\n return key;\n }\n }, {\n key: 'isSameOrigin',\n value: function isSameOrigin(url) {\n return this.getOrigin(url) === this.origin;\n }\n }, {\n key: 'getOrigin',\n value: function getOrigin(url) {\n var link = this._link || (this._link = this._window.document.createElement('a'));\n link.href = url;\n link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n return link.protocol + link.hostname + link.port;\n }\n }, {\n key: 'ready',\n value: function ready() {\n var _this5 = this;\n\n var keys = Object.keys(this.cache);\n var values = keys.map(function (str) {\n return _this5.cache[str].catch(function (e) {\n if (true) {\n _this5.logger.log('Unable to load image', e);\n }\n return null;\n });\n });\n return Promise.all(values).then(function (images) {\n if (true) {\n _this5.logger.log('Finished loading ' + images.length + ' images', images);\n }\n return new ResourceStore(keys, images);\n });\n }\n }]);\n\n return ResourceLoader;\n }();\n\n exports.default = ResourceLoader;\n\n var ResourceStore = exports.ResourceStore = function () {\n function ResourceStore(keys, resources) {\n _classCallCheck(this, ResourceStore);\n\n this._keys = keys;\n this._resources = resources;\n }\n\n _createClass(ResourceStore, [{\n key: 'get',\n value: function get(key) {\n var index = this._keys.indexOf(key);\n return index === -1 ? null : this._resources[index];\n }\n }]);\n\n return ResourceStore;\n }();\n\n var INLINE_SVG = /^data:image\\/svg\\+xml/i;\n var INLINE_BASE64 = /^data:image\\/.*;base64,/i;\n var INLINE_IMG = /^data:image\\/.*/i;\n\n var isInlineImage = function isInlineImage(src) {\n return INLINE_IMG.test(src);\n };\n var isInlineBase64Image = function isInlineBase64Image(src) {\n return INLINE_BASE64.test(src);\n };\n\n var isSVG = function isSVG(src) {\n return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);\n };\n\n var _loadImage = function _loadImage(src, timeout) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () {\n return resolve(img);\n };\n img.onerror = reject;\n img.src = src;\n if (img.complete === true) {\n // Inline XML images may fail to parse, throwing an Error later on\n setTimeout(function () {\n resolve(img);\n }, 500);\n }\n if (timeout) {\n setTimeout(function () {\n return reject(true ? 'Timed out (' + timeout + 'ms) loading image' : '');\n }, timeout);\n }\n });\n };\n\n /***/\n },\n /* 56 */\n /***/function (module, exports, __webpack_require__) {\n\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.parseContent = exports.resolvePseudoContent = exports.popCounters = exports.parseCounterReset = exports.TOKEN_TYPE = exports.PSEUDO_CONTENT_ITEM_TYPE = undefined;\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];var _n = true;var _d = false;var _e = undefined;try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;_e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }return _arr;\n }return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _ListItem = __webpack_require__(14);\n\n var _listStyle = __webpack_require__(8);\n\n var PSEUDO_CONTENT_ITEM_TYPE = exports.PSEUDO_CONTENT_ITEM_TYPE = {\n TEXT: 0,\n IMAGE: 1\n };\n\n var TOKEN_TYPE = exports.TOKEN_TYPE = {\n STRING: 0,\n ATTRIBUTE: 1,\n URL: 2,\n COUNTER: 3,\n COUNTERS: 4,\n OPENQUOTE: 5,\n CLOSEQUOTE: 6\n };\n\n var parseCounterReset = exports.parseCounterReset = function parseCounterReset(style, data) {\n if (!style || !style.counterReset || style.counterReset === 'none') {\n return [];\n }\n\n var counterNames = [];\n var counterResets = style.counterReset.split(/\\s*,\\s*/);\n var lenCounterResets = counterResets.length;\n\n for (var i = 0; i < lenCounterResets; i++) {\n var _counterResets$i$spli = counterResets[i].split(/\\s+/),\n _counterResets$i$spli2 = _slicedToArray(_counterResets$i$spli, 2),\n counterName = _counterResets$i$spli2[0],\n initialValue = _counterResets$i$spli2[1];\n\n counterNames.push(counterName);\n var counter = data.counters[counterName];\n if (!counter) {\n counter = data.counters[counterName] = [];\n }\n counter.push(parseInt(initialValue || 0, 10));\n }\n\n return counterNames;\n };\n\n var popCounters = exports.popCounters = function popCounters(counterNames, data) {\n var lenCounters = counterNames.length;\n for (var i = 0; i < lenCounters; i++) {\n data.counters[counterNames[i]].pop();\n }\n };\n\n var resolvePseudoContent = exports.resolvePseudoContent = function resolvePseudoContent(node, style, data) {\n if (!style || !style.content || style.content === 'none' || style.content === '-moz-alt-content' || style.display === 'none') {\n return null;\n }\n\n var tokens = parseContent(style.content);\n\n var len = tokens.length;\n var contentItems = [];\n var s = '';\n\n // increment the counter (if there is a \"counter-increment\" declaration)\n var counterIncrement = style.counterIncrement;\n if (counterIncrement && counterIncrement !== 'none') {\n var _counterIncrement$spl = counterIncrement.split(/\\s+/),\n _counterIncrement$spl2 = _slicedToArray(_counterIncrement$spl, 2),\n counterName = _counterIncrement$spl2[0],\n incrementValue = _counterIncrement$spl2[1];\n\n var counter = data.counters[counterName];\n if (counter) {\n counter[counter.length - 1] += incrementValue === undefined ? 1 : parseInt(incrementValue, 10);\n }\n }\n\n // build the content string\n for (var i = 0; i < len; i++) {\n var token = tokens[i];\n switch (token.type) {\n case TOKEN_TYPE.STRING:\n s += token.value || '';\n break;\n\n case TOKEN_TYPE.ATTRIBUTE:\n if (node instanceof HTMLElement && token.value) {\n s += node.getAttribute(token.value) || '';\n }\n break;\n\n case TOKEN_TYPE.COUNTER:\n var _counter = data.counters[token.name || ''];\n if (_counter) {\n s += formatCounterValue([_counter[_counter.length - 1]], '', token.format);\n }\n break;\n\n case TOKEN_TYPE.COUNTERS:\n var _counters = data.counters[token.name || ''];\n if (_counters) {\n s += formatCounterValue(_counters, token.glue, token.format);\n }\n break;\n\n case TOKEN_TYPE.OPENQUOTE:\n s += getQuote(style, true, data.quoteDepth);\n data.quoteDepth++;\n break;\n\n case TOKEN_TYPE.CLOSEQUOTE:\n data.quoteDepth--;\n s += getQuote(style, false, data.quoteDepth);\n break;\n\n case TOKEN_TYPE.URL:\n if (s) {\n contentItems.push({ type: PSEUDO_CONTENT_ITEM_TYPE.TEXT, value: s });\n s = '';\n }\n contentItems.push({ type: PSEUDO_CONTENT_ITEM_TYPE.IMAGE, value: token.value || '' });\n break;\n }\n }\n\n if (s) {\n contentItems.push({ type: PSEUDO_CONTENT_ITEM_TYPE.TEXT, value: s });\n }\n\n return contentItems;\n };\n\n var parseContent = exports.parseContent = function parseContent(content, cache) {\n if (cache && cache[content]) {\n return cache[content];\n }\n\n var tokens = [];\n var len = content.length;\n\n var isString = false;\n var isEscaped = false;\n var isFunction = false;\n var str = '';\n var functionName = '';\n var args = [];\n\n for (var i = 0; i < len; i++) {\n var c = content.charAt(i);\n\n switch (c) {\n case \"'\":\n case '\"':\n if (isEscaped) {\n str += c;\n } else {\n isString = !isString;\n if (!isFunction && !isString) {\n tokens.push({ type: TOKEN_TYPE.STRING, value: str });\n str = '';\n }\n }\n break;\n\n case '\\\\':\n if (isEscaped) {\n str += c;\n isEscaped = false;\n } else {\n isEscaped = true;\n }\n break;\n\n case '(':\n if (isString) {\n str += c;\n } else {\n isFunction = true;\n functionName = str;\n str = '';\n args = [];\n }\n break;\n\n case ')':\n if (isString) {\n str += c;\n } else if (isFunction) {\n if (str) {\n args.push(str);\n }\n\n switch (functionName) {\n case 'attr':\n if (args.length > 0) {\n tokens.push({ type: TOKEN_TYPE.ATTRIBUTE, value: args[0] });\n }\n break;\n\n case 'counter':\n if (args.length > 0) {\n var counter = {\n type: TOKEN_TYPE.COUNTER,\n name: args[0]\n };\n if (args.length > 1) {\n counter.format = args[1];\n }\n tokens.push(counter);\n }\n break;\n\n case 'counters':\n if (args.length > 0) {\n var _counters2 = {\n type: TOKEN_TYPE.COUNTERS,\n name: args[0]\n };\n if (args.length > 1) {\n _counters2.glue = args[1];\n }\n if (args.length > 2) {\n _counters2.format = args[2];\n }\n tokens.push(_counters2);\n }\n break;\n\n case 'url':\n if (args.length > 0) {\n tokens.push({ type: TOKEN_TYPE.URL, value: args[0] });\n }\n break;\n }\n\n isFunction = false;\n str = '';\n }\n break;\n\n case ',':\n if (isString) {\n str += c;\n } else if (isFunction) {\n args.push(str);\n str = '';\n }\n break;\n\n case ' ':\n case '\\t':\n if (isString) {\n str += c;\n } else if (str) {\n addOtherToken(tokens, str);\n str = '';\n }\n break;\n\n default:\n str += c;\n }\n\n if (c !== '\\\\') {\n isEscaped = false;\n }\n }\n\n if (str) {\n addOtherToken(tokens, str);\n }\n\n if (cache) {\n cache[content] = tokens;\n }\n\n return tokens;\n };\n\n var addOtherToken = function addOtherToken(tokens, identifier) {\n switch (identifier) {\n case 'open-quote':\n tokens.push({ type: TOKEN_TYPE.OPENQUOTE });\n break;\n case 'close-quote':\n tokens.push({ type: TOKEN_TYPE.CLOSEQUOTE });\n break;\n }\n };\n\n var getQuote = function getQuote(style, isOpening, quoteDepth) {\n var quotes = style.quotes ? style.quotes.split(/\\s+/) : [\"'\\\"'\", \"'\\\"'\"];\n var idx = quoteDepth * 2;\n if (idx >= quotes.length) {\n idx = quotes.length - 2;\n }\n if (!isOpening) {\n ++idx;\n }\n return quotes[idx].replace(/^[\"']|[\"']$/g, '');\n };\n\n var formatCounterValue = function formatCounterValue(counter, glue, format) {\n var len = counter.length;\n var result = '';\n\n for (var i = 0; i < len; i++) {\n if (i > 0) {\n result += glue || '';\n }\n result += (0, _ListItem.createCounterText)(counter[i], (0, _listStyle.parseListStyleType)(format || 'decimal'), false);\n }\n\n return result;\n };\n\n /***/\n }]\n /******/)\n );\n});\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(104)(module)))\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MLSUserPreference = exports.MLSStats = exports.MLSGeography = exports.MLSCount = exports.MLSMedia = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(12);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactOdata = __webpack_require__(255);\n\nvar _reactOdata2 = _interopRequireDefault(_reactOdata);\n\n__webpack_require__(275);\n\nvar _promisePolyfill = __webpack_require__(19);\n\nvar _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar dbase = 'http://api1.mlslistings.com/resodata';\n//enable for QA environment\n//const statsbase = 'http://RETSAPI.qa.mlslistings.com';\nvar statsbase = 'https://aculist-widget-api.azureedge.net';\n\nvar MLSCount = function (_Component) {\n _inherits(MLSCount, _Component);\n\n function MLSCount() {\n _classCallCheck(this, MLSCount);\n\n return _possibleConstructorReturn(this, (MLSCount.__proto__ || Object.getPrototypeOf(MLSCount)).apply(this, arguments));\n }\n\n _createClass(MLSCount, [{\n key: 'render',\n value: function render() {\n var query = this.props.query;\n\n var countQuery = _extends({\n top: 0,\n count: true\n }, query);\n return _react2.default.createElement(MLSData, _extends({}, this.props, { query: countQuery }));\n }\n }]);\n\n return MLSCount;\n}(_react.Component);\n\nvar MLSMedia = function (_Component2) {\n _inherits(MLSMedia, _Component2);\n\n function MLSMedia() {\n _classCallCheck(this, MLSMedia);\n\n return _possibleConstructorReturn(this, (MLSMedia.__proto__ || Object.getPrototypeOf(MLSMedia)).apply(this, arguments));\n }\n\n _createClass(MLSMedia, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n _props$resource = _props.resource,\n resource = _props$resource === undefined ? \"public\" : _props$resource,\n _props$collection = _props.collection,\n collection = _props$collection === undefined ? \"Media\" : _props$collection,\n _props$ListingKeyNume = _props.ListingKeyNumeric,\n ListingKeyNumeric = _props$ListingKeyNume === undefined ? false : _props$ListingKeyNume,\n _props$MemberKeyNumer = _props.MemberKeyNumeric,\n MemberKeyNumeric = _props$MemberKeyNumer === undefined ? false : _props$MemberKeyNumer,\n _props$MediaType = _props.MediaType,\n MediaType = _props$MediaType === undefined ? 'Photo' : _props$MediaType;\n\n var ResourceRecordKeyNumeric = ListingKeyNumeric ? ListingKeyNumeric : MemberKeyNumeric;\n var mediaQuery = {\n filter: {\n and: [{ ResourceRecordKeyNumeric: ResourceRecordKeyNumeric }, \"MediaStatus eq ResourceEnums.MediaStatus'Valid'\", 'MediaCategory eq ResourceEnums.MediaCategory\\'' + MediaType + '\\'']\n },\n top: 1\n };\n return _react2.default.createElement(MLSData, _extends({}, this.props, { resource: resource, collection: collection, query: mediaQuery, processed: true }));\n }\n }]);\n\n return MLSMedia;\n}(_react.Component);\n\n//Adding classes to accommodate stats,geographies, and UserPreferences\n\n\nvar MLSGeography = function (_Component3) {\n _inherits(MLSGeography, _Component3);\n\n function MLSGeography() {\n _classCallCheck(this, MLSGeography);\n\n return _possibleConstructorReturn(this, (MLSGeography.__proto__ || Object.getPrototypeOf(MLSGeography)).apply(this, arguments));\n }\n\n _createClass(MLSGeography, [{\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n _props2$resource = _props2.resource,\n resource = _props2$resource === undefined ? \"BiEntity\" : _props2$resource,\n _props2$collection = _props2.collection,\n collection = _props2$collection === undefined ? \"vGeographyByGeographyTypes\" : _props2$collection,\n _props2$filter = _props2.filter,\n filter = _props2$filter === undefined ? \"\" : _props2$filter,\n _props2$select = _props2.select,\n select = _props2$select === undefined ? \"\" : _props2$select,\n rest = _objectWithoutProperties(_props2, ['resource', 'collection', 'filter', 'select']);\n\n return _react2.default.createElement(MLSData, _extends({ base: statsbase, resource: resource, collection: collection, query: { select: select, filter: filter } }, rest));\n }\n }]);\n\n return MLSGeography;\n}(_react.Component);\n\nvar MLSStats = function (_Component4) {\n _inherits(MLSStats, _Component4);\n\n function MLSStats() {\n _classCallCheck(this, MLSStats);\n\n return _possibleConstructorReturn(this, (MLSStats.__proto__ || Object.getPrototypeOf(MLSStats)).apply(this, arguments));\n }\n\n _createClass(MLSStats, [{\n key: 'render',\n value: function render() {\n var _props3 = this.props,\n _props3$resource = _props3.resource,\n resource = _props3$resource === undefined ? \"Growth\" : _props3$resource,\n collection = _props3.collection,\n filter = _props3.filter,\n select = _props3.select,\n orderBy = _props3.orderBy;\n\n var actualcollection = collection.toLowerCase() === 'markettrends' || collection.toLowerCase() === 'year-to-year' ? 'MarketTrends' : collection.toLowerCase() === 'kpi' ? 'MarketTrendsLast90' : collection.toLowerCase() === 'member' || collection.toLowerCase() === 'office' ? 'AgentProduction' : collection;\n return _react2.default.createElement(MLSData, _extends({}, this.props, { base: statsbase, resource: resource, collection: actualcollection, query: { select: select, filter: filter, orderBy: orderBy } }));\n }\n }]);\n\n return MLSStats;\n}(_react.Component);\n\nvar MLSUserPreference = function (_Component5) {\n _inherits(MLSUserPreference, _Component5);\n\n function MLSUserPreference() {\n _classCallCheck(this, MLSUserPreference);\n\n return _possibleConstructorReturn(this, (MLSUserPreference.__proto__ || Object.getPrototypeOf(MLSUserPreference)).apply(this, arguments));\n }\n\n _createClass(MLSUserPreference, [{\n key: 'render',\n value: function render() {\n var _props4 = this.props,\n _props4$resource = _props4.resource,\n resource = _props4$resource === undefined ? \"BiEntity\" : _props4$resource,\n _props4$collection = _props4.collection,\n collection = _props4$collection === undefined ? \"vWidgetAssets\" : _props4$collection,\n _props4$filter = _props4.filter,\n filter = _props4$filter === undefined ? \"\" : _props4$filter,\n _props4$select = _props4.select,\n select = _props4$select === undefined ? \"\" : _props4$select,\n rest = _objectWithoutProperties(_props4, ['resource', 'collection', 'filter', 'select']);\n\n return _react2.default.createElement(MLSData, _extends({ base: statsbase, resource: resource, collection: collection, query: { select: select, filter: filter } }, rest));\n }\n }]);\n\n return MLSUserPreference;\n}(_react.Component);\n//end\n\nvar MLSData = function (_Component6) {\n _inherits(MLSData, _Component6);\n\n function MLSData() {\n _classCallCheck(this, MLSData);\n\n return _possibleConstructorReturn(this, (MLSData.__proto__ || Object.getPrototypeOf(MLSData)).apply(this, arguments));\n }\n\n _createClass(MLSData, [{\n key: 'render',\n value: function render() {\n var _props5 = this.props,\n _props5$base = _props5.base,\n base = _props5$base === undefined ? dbase : _props5$base,\n token = _props5.token,\n collection = _props5.collection,\n _props5$authMethod = _props5.authMethod,\n authMethod = _props5$authMethod === undefined ? { method: 'POST' } : _props5$authMethod,\n _props5$authHeader = _props5.authHeader,\n authHeader = _props5$authHeader === undefined ? { headers: _extends({}, typeof this.props.token !== \"undefined\" && { Authorization: 'Bearer ' + this.props.token }, { 'Accept': 'application/json' }) } : _props5$authHeader,\n link = _props5.link,\n _props5$resource = _props5.resource,\n resource = _props5$resource === undefined ? 'www' : _props5$resource,\n limit = _props5.limit,\n _props5$processed = _props5.processed,\n processed = _props5$processed === undefined ? false : _props5$processed;\n\n\n if (link) {\n return _react2.default.createElement(_reactOdata2.default, _extends({}, this.props, { baseUrl: link, options: authHeader }));\n }\n\n if (collection.toLowerCase() === 'media' && !processed) {\n return _react2.default.createElement(MLSMedia, _extends({}, this.props, { collection: collection, resource: resource, options: authHeader }));\n }\n\n return _react2.default.createElement(_reactOdata2.default, _extends({}, this.props, { baseUrl: base + '/' + resource + '/' + collection, options: authHeader }));\n }\n }]);\n\n return MLSData;\n}(_react.Component);\n\nexports.MLSMedia = MLSMedia;\nexports.MLSCount = MLSCount;\nexports.MLSGeography = MLSGeography;\nexports.MLSStats = MLSStats;\nexports.MLSUserPreference = MLSUserPreference;\nexports.default = MLSData;\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(12);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MarketTrends = __webpack_require__(107);\n\nvar _MarketTrends2 = _interopRequireDefault(_MarketTrends);\n\nvar _promisePolyfill = __webpack_require__(19);\n\nvar _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar WidgetResidential = function (_Component) {\n _inherits(WidgetResidential, _Component);\n\n function WidgetResidential(props) {\n _classCallCheck(this, WidgetResidential);\n\n var _this = _possibleConstructorReturn(this, (WidgetResidential.__proto__ || Object.getPrototypeOf(WidgetResidential)).call(this, props));\n\n _this.state = {\n data: null,\n widgetselections: [{\n measure: \"InventoryCount\",\n periodtype: \"Quarter\",\n period: \"65\",\n geo: [\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest'\n }, {\n measure: \"AvgMonthsToSell\",\n periodtype: \"Quarter\",\n period: \"65\",\n geo: [\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest'\n }, {\n measure: \"SoldCount\",\n periodtype: \"Quarter\",\n period: \"65\",\n geo: [\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest'\n }, {\n measure: \"MedSalePrice\",\n periodtype: \"Quarter\",\n period: \"65\",\n geo: [\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest'\n }, {\n measure: \"AvgSalePrice\",\n periodtype: \"Quarter\",\n period: \"65\",\n geo: [\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest'\n }, {\n measure: \"AvgSaleOverListPrice\",\n periodtype: \"Quarter\",\n period: \"65\",\n geo: [\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest'\n }, {\n measure: \"SoldMedDOM\",\n periodtype: \"Quarter\",\n period: \"65\",\n geo: [\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest'\n }, {\n measure: \"MedSalePrice,AvgSalePrice\",\n periodtype: \"Quarter\",\n period: \"65\",\n geo: [\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest'\n }]\n\n };\n\n return _this;\n }\n\n _createClass(WidgetResidential, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n if (_.isEqual(nextProps.widgetselections, this.props.widgetselections) && !_.isEqual(nextProps.data, this.props.data)) {\n return true;\n } else {\n return false;\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var widgetselections = this.state.widgetselections;\n var widgetselection = nextProps.widgetselections;\n var newWidgetSelections = void 0;\n\n newWidgetSelections = widgetselections.map(function (widgetinstance, index) {\n\n var _widgetSelection = widgetinstance;\n\n _widgetSelection.geo = widgetselection.geo, _widgetSelection.period = widgetselection.period, _widgetSelection.periodtype = widgetselection.periodtype;\n\n return _widgetSelection;\n });\n\n this.setState({ widgetselections: newWidgetSelections, data: nextProps.data });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var widgets = this.state.widgetselections.map(function (widget, index) {\n return _react2.default.createElement(_MarketTrends2.default, { id: \"chart_\" + index, key: _.uniqueId(\"chart\"), widgetselections: widget, data: _this2.props.data });\n });\n\n return _react2.default.createElement(\n \"div\",\n null,\n widgets\n );\n }\n }]);\n\n return WidgetResidential;\n}(_react.Component);\n\nexports.default = WidgetResidential;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n(function (global, factory) {\n\t true ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.c3 = factory());\n}(this, (function () { 'use strict';\n\nvar CLASS = {\n target: 'c3-target',\n chart: 'c3-chart',\n chartLine: 'c3-chart-line',\n chartLines: 'c3-chart-lines',\n chartBar: 'c3-chart-bar',\n chartBars: 'c3-chart-bars',\n chartText: 'c3-chart-text',\n chartTexts: 'c3-chart-texts',\n chartArc: 'c3-chart-arc',\n chartArcs: 'c3-chart-arcs',\n chartArcsTitle: 'c3-chart-arcs-title',\n chartArcsBackground: 'c3-chart-arcs-background',\n chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit',\n chartArcsGaugeMax: 'c3-chart-arcs-gauge-max',\n chartArcsGaugeMin: 'c3-chart-arcs-gauge-min',\n selectedCircle: 'c3-selected-circle',\n selectedCircles: 'c3-selected-circles',\n eventRect: 'c3-event-rect',\n eventRects: 'c3-event-rects',\n eventRectsSingle: 'c3-event-rects-single',\n eventRectsMultiple: 'c3-event-rects-multiple',\n zoomRect: 'c3-zoom-rect',\n brush: 'c3-brush',\n focused: 'c3-focused',\n defocused: 'c3-defocused',\n region: 'c3-region',\n regions: 'c3-regions',\n title: 'c3-title',\n tooltipContainer: 'c3-tooltip-container',\n tooltip: 'c3-tooltip',\n tooltipName: 'c3-tooltip-name',\n shape: 'c3-shape',\n shapes: 'c3-shapes',\n line: 'c3-line',\n lines: 'c3-lines',\n bar: 'c3-bar',\n bars: 'c3-bars',\n circle: 'c3-circle',\n circles: 'c3-circles',\n arc: 'c3-arc',\n arcs: 'c3-arcs',\n area: 'c3-area',\n areas: 'c3-areas',\n empty: 'c3-empty',\n text: 'c3-text',\n texts: 'c3-texts',\n gaugeValue: 'c3-gauge-value',\n grid: 'c3-grid',\n gridLines: 'c3-grid-lines',\n xgrid: 'c3-xgrid',\n xgrids: 'c3-xgrids',\n xgridLine: 'c3-xgrid-line',\n xgridLines: 'c3-xgrid-lines',\n xgridFocus: 'c3-xgrid-focus',\n ygrid: 'c3-ygrid',\n ygrids: 'c3-ygrids',\n ygridLine: 'c3-ygrid-line',\n ygridLines: 'c3-ygrid-lines',\n axis: 'c3-axis',\n axisX: 'c3-axis-x',\n axisXLabel: 'c3-axis-x-label',\n axisY: 'c3-axis-y',\n axisYLabel: 'c3-axis-y-label',\n axisY2: 'c3-axis-y2',\n axisY2Label: 'c3-axis-y2-label',\n legendBackground: 'c3-legend-background',\n legendItem: 'c3-legend-item',\n legendItemEvent: 'c3-legend-item-event',\n legendItemTile: 'c3-legend-item-tile',\n legendItemHidden: 'c3-legend-item-hidden',\n legendItemFocused: 'c3-legend-item-focused',\n dragarea: 'c3-dragarea',\n EXPANDED: '_expanded_',\n SELECTED: '_selected_',\n INCLUDED: '_included_'\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n\n\n\n\n\n\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar isValue = function isValue(v) {\n return v || v === 0;\n};\nvar isFunction = function isFunction(o) {\n return typeof o === 'function';\n};\nvar isArray = function isArray(o) {\n return Array.isArray(o);\n};\nvar isString = function isString(o) {\n return typeof o === 'string';\n};\nvar isUndefined = function isUndefined(v) {\n return typeof v === 'undefined';\n};\nvar isDefined = function isDefined(v) {\n return typeof v !== 'undefined';\n};\nvar ceil10 = function ceil10(v) {\n return Math.ceil(v / 10) * 10;\n};\nvar asHalfPixel = function asHalfPixel(n) {\n return Math.ceil(n) + 0.5;\n};\nvar diffDomain = function diffDomain(d) {\n return d[1] - d[0];\n};\nvar isEmpty = function isEmpty(o) {\n return typeof o === 'undefined' || o === null || isString(o) && o.length === 0 || (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === 'object' && Object.keys(o).length === 0;\n};\nvar notEmpty = function notEmpty(o) {\n return !c3_chart_internal_fn.isEmpty(o);\n};\nvar getOption = function getOption(options, key, defaultValue) {\n return isDefined(options[key]) ? options[key] : defaultValue;\n};\nvar hasValue = function hasValue(dict, value) {\n var found = false;\n Object.keys(dict).forEach(function (key) {\n if (dict[key] === value) {\n found = true;\n }\n });\n return found;\n};\nvar sanitise = function sanitise(str) {\n return typeof str === 'string' ? str.replace(/</g, '<').replace(/>/g, '>') : str;\n};\nvar getPathBox = function getPathBox(path) {\n var box = path.getBoundingClientRect(),\n items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)],\n minX = items[0].x,\n minY = Math.min(items[0].y, items[1].y);\n return { x: minX, y: minY, width: box.width, height: box.height };\n};\n\nvar c3_axis_fn;\nvar c3_axis_internal_fn;\n\nfunction AxisInternal(component, params) {\n var internal = this;\n internal.component = component;\n internal.params = params || {};\n\n internal.d3 = component.d3;\n internal.scale = internal.d3.scale.linear();\n internal.range;\n internal.orient = \"bottom\";\n internal.innerTickSize = 6;\n internal.outerTickSize = this.params.withOuterTick ? 6 : 0;\n internal.tickPadding = 3;\n internal.tickValues = null;\n internal.tickFormat;\n internal.tickArguments;\n\n internal.tickOffset = 0;\n internal.tickCulling = true;\n internal.tickCentered;\n internal.tickTextCharSize;\n internal.tickTextRotate = internal.params.tickTextRotate;\n internal.tickLength;\n\n internal.axis = internal.generateAxis();\n}\nc3_axis_internal_fn = AxisInternal.prototype;\n\nc3_axis_internal_fn.axisX = function (selection, x, tickOffset) {\n selection.attr(\"transform\", function (d) {\n return \"translate(\" + Math.ceil(x(d) + tickOffset) + \", 0)\";\n });\n};\nc3_axis_internal_fn.axisY = function (selection, y) {\n selection.attr(\"transform\", function (d) {\n return \"translate(0,\" + Math.ceil(y(d)) + \")\";\n });\n};\nc3_axis_internal_fn.scaleExtent = function (domain) {\n var start = domain[0],\n stop = domain[domain.length - 1];\n return start < stop ? [start, stop] : [stop, start];\n};\nc3_axis_internal_fn.generateTicks = function (scale) {\n var internal = this;\n var i,\n domain,\n ticks = [];\n if (scale.ticks) {\n return scale.ticks.apply(scale, internal.tickArguments);\n }\n domain = scale.domain();\n for (i = Math.ceil(domain[0]); i < domain[1]; i++) {\n ticks.push(i);\n }\n if (ticks.length > 0 && ticks[0] > 0) {\n ticks.unshift(ticks[0] - (ticks[1] - ticks[0]));\n }\n return ticks;\n};\nc3_axis_internal_fn.copyScale = function () {\n var internal = this;\n var newScale = internal.scale.copy(),\n domain;\n if (internal.params.isCategory) {\n domain = internal.scale.domain();\n newScale.domain([domain[0], domain[1] - 1]);\n }\n return newScale;\n};\nc3_axis_internal_fn.textFormatted = function (v) {\n var internal = this,\n formatted = internal.tickFormat ? internal.tickFormat(v) : v;\n return typeof formatted !== 'undefined' ? formatted : '';\n};\nc3_axis_internal_fn.updateRange = function () {\n var internal = this;\n internal.range = internal.scale.rangeExtent ? internal.scale.rangeExtent() : internal.scaleExtent(internal.scale.range());\n return internal.range;\n};\nc3_axis_internal_fn.updateTickTextCharSize = function (tick) {\n var internal = this;\n if (internal.tickTextCharSize) {\n return internal.tickTextCharSize;\n }\n var size = {\n h: 11.5,\n w: 5.5\n };\n tick.select('text').text(function (d) {\n return internal.textFormatted(d);\n }).each(function (d) {\n var box = this.getBoundingClientRect(),\n text = internal.textFormatted(d),\n h = box.height,\n w = text ? box.width / text.length : undefined;\n if (h && w) {\n size.h = h;\n size.w = w;\n }\n }).text('');\n internal.tickTextCharSize = size;\n return size;\n};\nc3_axis_internal_fn.transitionise = function (selection) {\n return this.params.withoutTransition ? selection : this.d3.transition(selection);\n};\nc3_axis_internal_fn.isVertical = function () {\n return this.orient === 'left' || this.orient === 'right';\n};\nc3_axis_internal_fn.tspanData = function (d, i, ticks, scale) {\n var internal = this;\n var splitted = internal.params.tickMultiline ? internal.splitTickText(d, ticks, scale) : [].concat(internal.textFormatted(d));\n return splitted.map(function (s) {\n return { index: i, splitted: s, length: splitted.length };\n });\n};\nc3_axis_internal_fn.splitTickText = function (d, ticks, scale) {\n var internal = this,\n tickText = internal.textFormatted(d),\n maxWidth = internal.params.tickWidth,\n subtext,\n spaceIndex,\n textWidth,\n splitted = [];\n\n if (Object.prototype.toString.call(tickText) === \"[object Array]\") {\n return tickText;\n }\n\n if (!maxWidth || maxWidth <= 0) {\n maxWidth = internal.isVertical() ? 95 : internal.params.isCategory ? Math.ceil(scale(ticks[1]) - scale(ticks[0])) - 12 : 110;\n }\n\n function split(splitted, text) {\n spaceIndex = undefined;\n for (var i = 1; i < text.length; i++) {\n if (text.charAt(i) === ' ') {\n spaceIndex = i;\n }\n subtext = text.substr(0, i + 1);\n textWidth = internal.tickTextCharSize.w * subtext.length;\n // if text width gets over tick width, split by space index or crrent index\n if (maxWidth < textWidth) {\n return split(splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)), text.slice(spaceIndex ? spaceIndex + 1 : i));\n }\n }\n return splitted.concat(text);\n }\n\n return split(splitted, tickText + \"\");\n};\nc3_axis_internal_fn.updateTickLength = function () {\n var internal = this;\n internal.tickLength = Math.max(internal.innerTickSize, 0) + internal.tickPadding;\n};\nc3_axis_internal_fn.lineY2 = function (d) {\n var internal = this,\n tickPosition = internal.scale(d) + (internal.tickCentered ? 0 : internal.tickOffset);\n return internal.range[0] < tickPosition && tickPosition < internal.range[1] ? internal.innerTickSize : 0;\n};\nc3_axis_internal_fn.textY = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1) : internal.tickLength;\n};\nc3_axis_internal_fn.textTransform = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? \"rotate(\" + rotate + \")\" : \"\";\n};\nc3_axis_internal_fn.textTextAnchor = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? rotate > 0 ? \"start\" : \"end\" : \"middle\";\n};\nc3_axis_internal_fn.tspanDx = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 8 * Math.sin(Math.PI * (rotate / 180)) : 0;\n};\nc3_axis_internal_fn.tspanDy = function (d, i) {\n var internal = this,\n dy = internal.tickTextCharSize.h;\n if (i === 0) {\n if (internal.isVertical()) {\n dy = -((d.length - 1) * (internal.tickTextCharSize.h / 2) - 3);\n } else {\n dy = \".71em\";\n }\n }\n return dy;\n};\n\nc3_axis_internal_fn.generateAxis = function () {\n var internal = this,\n d3 = internal.d3,\n params = internal.params;\n function axis(g) {\n g.each(function () {\n var g = axis.g = d3.select(this);\n\n var scale0 = this.__chart__ || internal.scale,\n scale1 = this.__chart__ = internal.copyScale();\n\n var ticks = internal.tickValues ? internal.tickValues : internal.generateTicks(scale1),\n tick = g.selectAll(\".tick\").data(ticks, scale1),\n tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", 1e-6),\n\n // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks.\n tickExit = tick.exit().remove(),\n tickUpdate = internal.transitionise(tick).style(\"opacity\", 1),\n tickTransform,\n tickX,\n tickY;\n\n if (params.isCategory) {\n internal.tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2);\n tickX = internal.tickCentered ? 0 : internal.tickOffset;\n tickY = internal.tickCentered ? internal.tickOffset : 0;\n } else {\n internal.tickOffset = tickX = 0;\n }\n\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n\n internal.updateRange();\n internal.updateTickLength();\n internal.updateTickTextCharSize(g.select('.tick'));\n\n var lineUpdate = tickUpdate.select(\"line\"),\n textUpdate = tickUpdate.select(\"text\"),\n tspanUpdate = tick.select(\"text\").selectAll('tspan').data(function (d, i) {\n return internal.tspanData(d, i, ticks, scale1);\n });\n\n tspanUpdate.enter().append('tspan');\n tspanUpdate.exit().remove();\n tspanUpdate.text(function (d) {\n return d.splitted;\n });\n\n var path = g.selectAll(\".domain\").data([0]),\n pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), internal.transitionise(path));\n\n // TODO: each attr should be one function and change its behavior by internal.orient, probably\n switch (internal.orient) {\n case \"bottom\":\n {\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n return internal.lineY2(d, i);\n });\n textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n return internal.textY(d, i);\n }).attr(\"transform\", function (d, i) {\n return internal.textTransform(d, i);\n }).style(\"text-anchor\", function (d, i) {\n return internal.textTextAnchor(d, i);\n });\n tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n }).attr('dx', function (d, i) {\n return internal.tspanDx(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + internal.outerTickSize);\n break;\n }\n case \"top\":\n {\n // TODO: rotated tick text\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x2\", 0).attr(\"y2\", -internal.innerTickSize);\n textUpdate.attr(\"x\", 0).attr(\"y\", -internal.tickLength).style(\"text-anchor\", \"middle\");\n tspanUpdate.attr('x', 0).attr(\"dy\", \"0em\");\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + -internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + -internal.outerTickSize);\n break;\n }\n case \"left\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", -internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n textUpdate.attr(\"x\", -internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"end\");\n tspanUpdate.attr('x', -internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + -internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + -internal.outerTickSize);\n break;\n }\n case \"right\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", internal.innerTickSize).attr(\"y2\", 0);\n textUpdate.attr(\"x\", internal.tickLength).attr(\"y\", 0).style(\"text-anchor\", \"start\");\n tspanUpdate.attr('x', internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + internal.outerTickSize);\n break;\n }\n }\n if (scale1.rangeBand) {\n var x = scale1,\n dx = x.rangeBand() / 2;\n scale0 = scale1 = function scale1(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, internal.tickOffset);\n }\n tickEnter.call(tickTransform, scale0, internal.tickOffset);\n tickUpdate.call(tickTransform, scale1, internal.tickOffset);\n });\n }\n axis.scale = function (x) {\n if (!arguments.length) {\n return internal.scale;\n }\n internal.scale = x;\n return axis;\n };\n axis.orient = function (x) {\n if (!arguments.length) {\n return internal.orient;\n }\n internal.orient = x in { top: 1, right: 1, bottom: 1, left: 1 } ? x + \"\" : \"bottom\";\n return axis;\n };\n axis.tickFormat = function (format) {\n if (!arguments.length) {\n return internal.tickFormat;\n }\n internal.tickFormat = format;\n return axis;\n };\n axis.tickCentered = function (isCentered) {\n if (!arguments.length) {\n return internal.tickCentered;\n }\n internal.tickCentered = isCentered;\n return axis;\n };\n axis.tickOffset = function () {\n return internal.tickOffset;\n };\n axis.tickInterval = function () {\n var interval, length;\n if (params.isCategory) {\n interval = internal.tickOffset * 2;\n } else {\n length = axis.g.select('path.domain').node().getTotalLength() - internal.outerTickSize * 2;\n interval = length / axis.g.selectAll('line').size();\n }\n return interval === Infinity ? 0 : interval;\n };\n axis.ticks = function () {\n if (!arguments.length) {\n return internal.tickArguments;\n }\n internal.tickArguments = arguments;\n return axis;\n };\n axis.tickCulling = function (culling) {\n if (!arguments.length) {\n return internal.tickCulling;\n }\n internal.tickCulling = culling;\n return axis;\n };\n axis.tickValues = function (x) {\n if (typeof x === 'function') {\n internal.tickValues = function () {\n return x(internal.scale.domain());\n };\n } else {\n if (!arguments.length) {\n return internal.tickValues;\n }\n internal.tickValues = x;\n }\n return axis;\n };\n return axis;\n};\n\nvar Axis = function (_Component) {\n inherits(Axis, _Component);\n\n function Axis(owner) {\n classCallCheck(this, Axis);\n\n var fn = {\n fn: c3_axis_fn,\n internal: {\n fn: c3_axis_internal_fn\n }\n };\n\n var _this = possibleConstructorReturn(this, (Axis.__proto__ || Object.getPrototypeOf(Axis)).call(this, owner, 'axis', fn));\n\n _this.d3 = owner.d3;\n _this.internal = AxisInternal;\n return _this;\n }\n\n return Axis;\n}(Component);\n\nc3_axis_fn = Axis.prototype;\n\nc3_axis_fn.init = function init() {\n var $$ = this.owner,\n config = $$.config,\n main = $$.main;\n $$.axes.x = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisX).attr(\"clip-path\", $$.clipPathForXAxis).attr(\"transform\", $$.getTranslate('x')).style(\"visibility\", config.axis_x_show ? 'visible' : 'hidden');\n $$.axes.x.append(\"text\").attr(\"class\", CLASS.axisXLabel).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").style(\"text-anchor\", this.textAnchorForXAxisLabel.bind(this));\n $$.axes.y = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY).attr(\"clip-path\", config.axis_y_inner ? \"\" : $$.clipPathForYAxis).attr(\"transform\", $$.getTranslate('y')).style(\"visibility\", config.axis_y_show ? 'visible' : 'hidden');\n $$.axes.y.append(\"text\").attr(\"class\", CLASS.axisYLabel).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForYAxisLabel.bind(this));\n\n $$.axes.y2 = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY2\n // clip-path?\n ).attr(\"transform\", $$.getTranslate('y2')).style(\"visibility\", config.axis_y2_show ? 'visible' : 'hidden');\n $$.axes.y2.append(\"text\").attr(\"class\", CLASS.axisY2Label).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForY2AxisLabel.bind(this));\n};\nc3_axis_fn.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n isCategory: $$.isCategorized(),\n withOuterTick: withOuterTick,\n tickMultiline: config.axis_x_tick_multiline,\n tickWidth: config.axis_x_tick_width,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate,\n withoutTransition: withoutTransition\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient);\n\n if ($$.isTimeSeries() && tickValues && typeof tickValues !== \"function\") {\n tickValues = tickValues.map(function (v) {\n return $$.parseDate(v);\n });\n }\n\n // Set tick\n axis.tickFormat(tickFormat).tickValues(tickValues);\n if ($$.isCategorized()) {\n axis.tickCentered(config.axis_x_tick_centered);\n if (isEmpty(config.axis_x_tick_culling)) {\n config.axis_x_tick_culling = false;\n }\n }\n\n return axis;\n};\nc3_axis_fn.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) {\n var $$ = this.owner,\n config = $$.config,\n tickValues;\n if (config.axis_x_tick_fit || config.axis_x_tick_count) {\n tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());\n }\n if (axis) {\n axis.tickValues(tickValues);\n } else {\n $$.xAxis.tickValues(tickValues);\n $$.subXAxis.tickValues(tickValues);\n }\n return tickValues;\n};\nc3_axis_fn.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n withOuterTick: withOuterTick,\n withoutTransition: withoutTransition,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_y_tick_rotate\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient).tickFormat(tickFormat);\n if ($$.isTimeSeriesY()) {\n axis.ticks($$.d3.time[config.axis_y_tick_time_value], config.axis_y_tick_time_interval);\n } else {\n axis.tickValues(tickValues);\n }\n return axis;\n};\nc3_axis_fn.getId = function getId(id) {\n var config = this.owner.config;\n return id in config.data_axes ? config.data_axes[id] : 'y';\n};\nc3_axis_fn.getXAxisTickFormat = function getXAxisTickFormat() {\n var $$ = this.owner,\n config = $$.config,\n format = $$.isTimeSeries() ? $$.defaultAxisTimeFormat : $$.isCategorized() ? $$.categoryName : function (v) {\n return v < 0 ? v.toFixed(0) : v;\n };\n if (config.axis_x_tick_format) {\n if (isFunction(config.axis_x_tick_format)) {\n format = config.axis_x_tick_format;\n } else if ($$.isTimeSeries()) {\n format = function format(date) {\n return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : \"\";\n };\n }\n }\n return isFunction(format) ? function (v) {\n return format.call($$, v);\n } : format;\n};\nc3_axis_fn.getTickValues = function getTickValues(tickValues, axis) {\n return tickValues ? tickValues : axis ? axis.tickValues() : undefined;\n};\nc3_axis_fn.getXAxisTickValues = function getXAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis);\n};\nc3_axis_fn.getYAxisTickValues = function getYAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis);\n};\nc3_axis_fn.getY2AxisTickValues = function getY2AxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis);\n};\nc3_axis_fn.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) {\n var $$ = this.owner,\n config = $$.config,\n option;\n if (axisId === 'y') {\n option = config.axis_y_label;\n } else if (axisId === 'y2') {\n option = config.axis_y2_label;\n } else if (axisId === 'x') {\n option = config.axis_x_label;\n }\n return option;\n};\nc3_axis_fn.getLabelText = function getLabelText(axisId) {\n var option = this.getLabelOptionByAxisId(axisId);\n return isString(option) ? option : option ? option.text : null;\n};\nc3_axis_fn.setLabelText = function setLabelText(axisId, text) {\n var $$ = this.owner,\n config = $$.config,\n option = this.getLabelOptionByAxisId(axisId);\n if (isString(option)) {\n if (axisId === 'y') {\n config.axis_y_label = text;\n } else if (axisId === 'y2') {\n config.axis_y2_label = text;\n } else if (axisId === 'x') {\n config.axis_x_label = text;\n }\n } else if (option) {\n option.text = text;\n }\n};\nc3_axis_fn.getLabelPosition = function getLabelPosition(axisId, defaultPosition) {\n var option = this.getLabelOptionByAxisId(axisId),\n position = option && (typeof option === 'undefined' ? 'undefined' : _typeof(option)) === 'object' && option.position ? option.position : defaultPosition;\n return {\n isInner: position.indexOf('inner') >= 0,\n isOuter: position.indexOf('outer') >= 0,\n isLeft: position.indexOf('left') >= 0,\n isCenter: position.indexOf('center') >= 0,\n isRight: position.indexOf('right') >= 0,\n isTop: position.indexOf('top') >= 0,\n isMiddle: position.indexOf('middle') >= 0,\n isBottom: position.indexOf('bottom') >= 0\n };\n};\nc3_axis_fn.getXAxisLabelPosition = function getXAxisLabelPosition() {\n return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right');\n};\nc3_axis_fn.getYAxisLabelPosition = function getYAxisLabelPosition() {\n return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n};\nc3_axis_fn.getY2AxisLabelPosition = function getY2AxisLabelPosition() {\n return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n};\nc3_axis_fn.getLabelPositionById = function getLabelPositionById(id) {\n return id === 'y2' ? this.getY2AxisLabelPosition() : id === 'y' ? this.getYAxisLabelPosition() : this.getXAxisLabelPosition();\n};\nc3_axis_fn.textForXAxisLabel = function textForXAxisLabel() {\n return this.getLabelText('x');\n};\nc3_axis_fn.textForYAxisLabel = function textForYAxisLabel() {\n return this.getLabelText('y');\n};\nc3_axis_fn.textForY2AxisLabel = function textForY2AxisLabel() {\n return this.getLabelText('y2');\n};\nc3_axis_fn.xForAxisLabel = function xForAxisLabel(forHorizontal, position) {\n var $$ = this.owner;\n if (forHorizontal) {\n return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width;\n } else {\n return position.isBottom ? -$$.height : position.isMiddle ? -$$.height / 2 : 0;\n }\n};\nc3_axis_fn.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? \"0.5em\" : position.isRight ? \"-0.5em\" : \"0\";\n } else {\n return position.isTop ? \"-0.5em\" : position.isBottom ? \"0.5em\" : \"0\";\n }\n};\nc3_axis_fn.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end';\n } else {\n return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end';\n }\n};\nc3_axis_fn.xForXAxisLabel = function xForXAxisLabel() {\n return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n};\nc3_axis_fn.xForYAxisLabel = function xForYAxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n};\nc3_axis_fn.xForY2AxisLabel = function xForY2AxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n};\nc3_axis_fn.dxForXAxisLabel = function dxForXAxisLabel() {\n return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n};\nc3_axis_fn.dxForYAxisLabel = function dxForYAxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n};\nc3_axis_fn.dxForY2AxisLabel = function dxForY2AxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n};\nc3_axis_fn.dyForXAxisLabel = function dyForXAxisLabel() {\n var $$ = this.owner,\n config = $$.config,\n position = this.getXAxisLabelPosition();\n if (config.axis_rotated) {\n return position.isInner ? \"1.2em\" : -25 - this.getMaxTickWidth('x');\n } else {\n return position.isInner ? \"-0.5em\" : config.axis_x_height ? config.axis_x_height - 10 : \"3em\";\n }\n};\nc3_axis_fn.dyForYAxisLabel = function dyForYAxisLabel() {\n var $$ = this.owner,\n position = this.getYAxisLabelPosition();\n if ($$.config.axis_rotated) {\n return position.isInner ? \"-0.5em\" : \"3em\";\n } else {\n return position.isInner ? \"1.2em\" : -10 - ($$.config.axis_y_inner ? 0 : this.getMaxTickWidth('y') + 10);\n }\n};\nc3_axis_fn.dyForY2AxisLabel = function dyForY2AxisLabel() {\n var $$ = this.owner,\n position = this.getY2AxisLabelPosition();\n if ($$.config.axis_rotated) {\n return position.isInner ? \"1.2em\" : \"-2.2em\";\n } else {\n return position.isInner ? \"-0.5em\" : 15 + ($$.config.axis_y2_inner ? 0 : this.getMaxTickWidth('y2') + 15);\n }\n};\nc3_axis_fn.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition());\n};\nc3_axis_fn.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition());\n};\nc3_axis_fn.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition());\n};\nc3_axis_fn.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) {\n var $$ = this.owner,\n config = $$.config,\n maxWidth = 0,\n targetsToShow,\n scale,\n axis,\n dummy,\n svg;\n if (withoutRecompute && $$.currentMaxTickWidths[id]) {\n return $$.currentMaxTickWidths[id];\n }\n if ($$.svg) {\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n if (id === 'y') {\n scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y'));\n axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true, true);\n } else if (id === 'y2') {\n scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2'));\n axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true, true);\n } else {\n scale = $$.x.copy().domain($$.getXDomain(targetsToShow));\n axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true);\n this.updateXAxisTickValues(targetsToShow, axis);\n }\n dummy = $$.d3.select('body').append('div').classed('c3', true);\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0), svg.append('g').call(axis).each(function () {\n $$.d3.select(this).selectAll('text').each(function () {\n var box = this.getBoundingClientRect();\n if (maxWidth < box.width) {\n maxWidth = box.width;\n }\n });\n dummy.remove();\n });\n }\n $$.currentMaxTickWidths[id] = maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth;\n return $$.currentMaxTickWidths[id];\n};\n\nc3_axis_fn.updateLabels = function updateLabels(withTransition) {\n var $$ = this.owner;\n var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel),\n axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel),\n axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label);\n (withTransition ? axisXLabel.transition() : axisXLabel).attr(\"x\", this.xForXAxisLabel.bind(this)).attr(\"dx\", this.dxForXAxisLabel.bind(this)).attr(\"dy\", this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this));\n (withTransition ? axisYLabel.transition() : axisYLabel).attr(\"x\", this.xForYAxisLabel.bind(this)).attr(\"dx\", this.dxForYAxisLabel.bind(this)).attr(\"dy\", this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this));\n (withTransition ? axisY2Label.transition() : axisY2Label).attr(\"x\", this.xForY2AxisLabel.bind(this)).attr(\"dx\", this.dxForY2AxisLabel.bind(this)).attr(\"dy\", this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this));\n};\nc3_axis_fn.getPadding = function getPadding(padding, key, defaultValue, domainLength) {\n var p = typeof padding === 'number' ? padding : padding[key];\n if (!isValue(p)) {\n return defaultValue;\n }\n if (padding.unit === 'ratio') {\n return padding[key] * domainLength;\n }\n // assume padding is pixels if unit is not specified\n return this.convertPixelsToAxisPadding(p, domainLength);\n};\nc3_axis_fn.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) {\n var $$ = this.owner,\n length = $$.config.axis_rotated ? $$.width : $$.height;\n return domainLength * (pixels / length);\n};\nc3_axis_fn.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) {\n var tickValues = values,\n targetCount,\n start,\n end,\n count,\n interval,\n i,\n tickValue;\n if (tickCount) {\n targetCount = isFunction(tickCount) ? tickCount() : tickCount;\n // compute ticks according to tickCount\n if (targetCount === 1) {\n tickValues = [values[0]];\n } else if (targetCount === 2) {\n tickValues = [values[0], values[values.length - 1]];\n } else if (targetCount > 2) {\n count = targetCount - 2;\n start = values[0];\n end = values[values.length - 1];\n interval = (end - start) / (count + 1);\n // re-construct unique values\n tickValues = [start];\n for (i = 0; i < count; i++) {\n tickValue = +start + interval * (i + 1);\n tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue);\n }\n tickValues.push(end);\n }\n }\n if (!forTimeSeries) {\n tickValues = tickValues.sort(function (a, b) {\n return a - b;\n });\n }\n return tickValues;\n};\nc3_axis_fn.generateTransitions = function generateTransitions(duration) {\n var $$ = this.owner,\n axes = $$.axes;\n return {\n axisX: duration ? axes.x.transition().duration(duration) : axes.x,\n axisY: duration ? axes.y.transition().duration(duration) : axes.y,\n axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2,\n axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx\n };\n};\nc3_axis_fn.redraw = function redraw(transitions, isHidden) {\n var $$ = this.owner;\n $$.axes.x.style(\"opacity\", isHidden ? 0 : 1);\n $$.axes.y.style(\"opacity\", isHidden ? 0 : 1);\n $$.axes.y2.style(\"opacity\", isHidden ? 0 : 1);\n $$.axes.subx.style(\"opacity\", isHidden ? 0 : 1);\n transitions.axisX.call($$.xAxis);\n transitions.axisY.call($$.yAxis);\n transitions.axisY2.call($$.y2Axis);\n transitions.axisSubX.call($$.subXAxis);\n};\n\nvar c3$1 = { version: \"0.4.18\" };\n\nvar c3_chart_fn;\nvar c3_chart_internal_fn;\n\nfunction Component(owner, componentKey, fn) {\n this.owner = owner;\n c3$1.chart.internal[componentKey] = fn;\n}\n\nfunction Chart(config) {\n var $$ = this.internal = new ChartInternal(this);\n $$.loadConfig(config);\n\n $$.beforeInit(config);\n $$.init();\n $$.afterInit(config);\n\n // bind \"this\" to nested API\n (function bindThis(fn, target, argThis) {\n Object.keys(fn).forEach(function (key) {\n target[key] = fn[key].bind(argThis);\n if (Object.keys(fn[key]).length > 0) {\n bindThis(fn[key], target[key], argThis);\n }\n });\n })(c3_chart_fn, this, this);\n}\n\nfunction ChartInternal(api) {\n var $$ = this;\n $$.d3 = window.d3 ? window.d3 : true ? __webpack_require__(116) : undefined;\n $$.api = api;\n $$.config = $$.getDefaultConfig();\n $$.data = {};\n $$.cache = {};\n $$.axes = {};\n}\n\nc3$1.generate = function (config) {\n return new Chart(config);\n};\n\nc3$1.chart = {\n fn: Chart.prototype,\n internal: {\n fn: ChartInternal.prototype\n }\n};\nc3_chart_fn = c3$1.chart.fn;\nc3_chart_internal_fn = c3$1.chart.internal.fn;\n\nc3_chart_internal_fn.beforeInit = function () {\n // can do something\n};\nc3_chart_internal_fn.afterInit = function () {\n // can do something\n};\nc3_chart_internal_fn.init = function () {\n var $$ = this,\n config = $$.config;\n\n $$.initParams();\n\n if (config.data_url) {\n $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_headers, config.data_keys, $$.initWithData);\n } else if (config.data_json) {\n $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys));\n } else if (config.data_rows) {\n $$.initWithData($$.convertRowsToData(config.data_rows));\n } else if (config.data_columns) {\n $$.initWithData($$.convertColumnsToData(config.data_columns));\n } else {\n throw Error('url or json or rows or columns is required.');\n }\n};\n\nc3_chart_internal_fn.initParams = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n\n // MEMO: clipId needs to be unique because it conflicts when multiple charts exist\n $$.clipId = \"c3-\" + +new Date() + '-clip', $$.clipIdForXAxis = $$.clipId + '-xaxis', $$.clipIdForYAxis = $$.clipId + '-yaxis', $$.clipIdForGrid = $$.clipId + '-grid', $$.clipIdForSubchart = $$.clipId + '-subchart', $$.clipPath = $$.getClipPath($$.clipId), $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis), $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);\n $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid), $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart), $$.dragStart = null;\n $$.dragging = false;\n $$.flowing = false;\n $$.cancelClick = false;\n $$.mouseover = false;\n $$.transiting = false;\n\n $$.color = $$.generateColor();\n $$.levelColor = $$.generateLevelColor();\n\n $$.dataTimeFormat = config.data_xLocaltime ? d3.time.format : d3.time.format.utc;\n $$.axisTimeFormat = config.axis_x_localtime ? d3.time.format : d3.time.format.utc;\n $$.defaultAxisTimeFormat = $$.axisTimeFormat.multi([[\".%L\", function (d) {\n return d.getMilliseconds();\n }], [\":%S\", function (d) {\n return d.getSeconds();\n }], [\"%I:%M\", function (d) {\n return d.getMinutes();\n }], [\"%I %p\", function (d) {\n return d.getHours();\n }], [\"%-m/%-d\", function (d) {\n return d.getDay() && d.getDate() !== 1;\n }], [\"%-m/%-d\", function (d) {\n return d.getDate() !== 1;\n }], [\"%-m/%-d\", function (d) {\n return d.getMonth();\n }], [\"%Y/%-m/%-d\", function () {\n return true;\n }]]);\n\n $$.hiddenTargetIds = [];\n $$.hiddenLegendIds = [];\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n\n $$.xOrient = config.axis_rotated ? \"left\" : \"bottom\";\n $$.yOrient = config.axis_rotated ? config.axis_y_inner ? \"top\" : \"bottom\" : config.axis_y_inner ? \"right\" : \"left\";\n $$.y2Orient = config.axis_rotated ? config.axis_y2_inner ? \"bottom\" : \"top\" : config.axis_y2_inner ? \"left\" : \"right\";\n $$.subXOrient = config.axis_rotated ? \"left\" : \"bottom\";\n\n $$.isLegendRight = config.legend_position === 'right';\n $$.isLegendInset = config.legend_position === 'inset';\n $$.isLegendTop = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'top-right';\n $$.isLegendLeft = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'bottom-left';\n $$.legendStep = 0;\n $$.legendItemWidth = 0;\n $$.legendItemHeight = 0;\n\n $$.currentMaxTickWidths = {\n x: 0,\n y: 0,\n y2: 0\n };\n\n $$.rotated_padding_left = 30;\n $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30;\n $$.rotated_padding_top = 5;\n\n $$.withoutFadeIn = {};\n\n $$.intervalForObserveInserted = undefined;\n\n $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js\n};\n\nc3_chart_internal_fn.initChartElements = function () {\n if (this.initBar) {\n this.initBar();\n }\n if (this.initLine) {\n this.initLine();\n }\n if (this.initArc) {\n this.initArc();\n }\n if (this.initGauge) {\n this.initGauge();\n }\n if (this.initText) {\n this.initText();\n }\n};\n\nc3_chart_internal_fn.initWithData = function (data) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n var defs,\n main,\n binding = true;\n\n $$.axis = new Axis($$);\n\n if ($$.initPie) {\n $$.initPie();\n }\n if ($$.initBrush) {\n $$.initBrush();\n }\n if ($$.initZoom) {\n $$.initZoom();\n }\n\n if (!config.bindto) {\n $$.selectChart = d3.selectAll([]);\n } else if (typeof config.bindto.node === 'function') {\n $$.selectChart = config.bindto;\n } else {\n $$.selectChart = d3.select(config.bindto);\n }\n if ($$.selectChart.empty()) {\n $$.selectChart = d3.select(document.createElement('div')).style('opacity', 0);\n $$.observeInserted($$.selectChart);\n binding = false;\n }\n $$.selectChart.html(\"\").classed(\"c3\", true);\n\n // Init data as targets\n $$.data.xs = {};\n $$.data.targets = $$.convertDataToTargets(data);\n\n if (config.data_filter) {\n $$.data.targets = $$.data.targets.filter(config.data_filter);\n }\n\n // Set targets to hide if needed\n if (config.data_hide) {\n $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide);\n }\n if (config.legend_hide) {\n $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide);\n }\n\n // when gauge, hide legend // TODO: fix\n if ($$.hasType('gauge')) {\n config.legend_show = false;\n }\n\n // Init sizes and scales\n $$.updateSizes();\n $$.updateScales();\n\n // Set domains for each scale\n $$.x.domain(d3.extent($$.getXDomain($$.data.targets)));\n $$.y.domain($$.getYDomain($$.data.targets, 'y'));\n $$.y2.domain($$.getYDomain($$.data.targets, 'y2'));\n $$.subX.domain($$.x.domain());\n $$.subY.domain($$.y.domain());\n $$.subY2.domain($$.y2.domain());\n\n // Save original x domain for zoom update\n $$.orgXDomain = $$.x.domain();\n\n // Set initialized scales to brush and zoom\n if ($$.brush) {\n $$.brush.scale($$.subX);\n }\n if (config.zoom_enabled) {\n $$.zoom.scale($$.x);\n }\n\n /*-- Basic Elements --*/\n\n // Define svgs\n $$.svg = $$.selectChart.append(\"svg\").style(\"overflow\", \"hidden\").on('mouseenter', function () {\n return config.onmouseover.call($$);\n }).on('mouseleave', function () {\n return config.onmouseout.call($$);\n });\n\n if ($$.config.svg_classname) {\n $$.svg.attr('class', $$.config.svg_classname);\n }\n\n // Define defs\n defs = $$.svg.append(\"defs\");\n $$.clipChart = $$.appendClip(defs, $$.clipId);\n $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);\n $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);\n $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);\n $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart);\n $$.updateSvgSize();\n\n // Define regions\n main = $$.main = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('main'));\n\n if ($$.initSubchart) {\n $$.initSubchart();\n }\n if ($$.initTooltip) {\n $$.initTooltip();\n }\n if ($$.initLegend) {\n $$.initLegend();\n }\n if ($$.initTitle) {\n $$.initTitle();\n }\n\n /*-- Main Region --*/\n\n // text when empty\n main.append(\"text\").attr(\"class\", CLASS.text + ' ' + CLASS.empty).attr(\"text-anchor\", \"middle\" // horizontal centering of text at x position in all browsers.\n ).attr(\"dominant-baseline\", \"middle\"); // vertical centering of text at y position in all browsers, except IE.\n\n // Regions\n $$.initRegion();\n\n // Grids\n $$.initGrid();\n\n // Define g for chart area\n main.append('g').attr(\"clip-path\", $$.clipPath).attr('class', CLASS.chart);\n\n // Grid lines\n if (config.grid_lines_front) {\n $$.initGridLines();\n }\n\n // Cover whole with rects for events\n $$.initEventRect();\n\n // Define g for chart\n $$.initChartElements();\n\n // if zoom privileged, insert rect to forefront\n // TODO: is this needed?\n main.insert('rect', config.zoom_privileged ? null : 'g.' + CLASS.regions).attr('class', CLASS.zoomRect).attr('width', $$.width).attr('height', $$.height).style('opacity', 0).on(\"dblclick.zoom\", null);\n\n // Set default extent if defined\n if (config.axis_x_extent) {\n $$.brush.extent($$.getDefaultExtent());\n }\n\n // Add Axis\n $$.axis.init();\n\n // Set targets\n $$.updateTargets($$.data.targets);\n\n // Draw with targets\n if (binding) {\n $$.updateDimension();\n $$.config.oninit.call($$);\n $$.redraw({\n withTransition: false,\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransitionForAxis: false\n });\n }\n\n // Bind resize event\n $$.bindResize();\n\n // export element of the chart\n $$.api.element = $$.selectChart.node();\n};\n\nc3_chart_internal_fn.smoothLines = function (el, type) {\n var $$ = this;\n if (type === 'grid') {\n el.each(function () {\n var g = $$.d3.select(this),\n x1 = g.attr('x1'),\n x2 = g.attr('x2'),\n y1 = g.attr('y1'),\n y2 = g.attr('y2');\n g.attr({\n 'x1': Math.ceil(x1),\n 'x2': Math.ceil(x2),\n 'y1': Math.ceil(y1),\n 'y2': Math.ceil(y2)\n });\n });\n }\n};\n\nc3_chart_internal_fn.updateSizes = function () {\n var $$ = this,\n config = $$.config;\n var legendHeight = $$.legend ? $$.getLegendHeight() : 0,\n legendWidth = $$.legend ? $$.getLegendWidth() : 0,\n legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight,\n hasArc = $$.hasArcType(),\n xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'),\n subchartHeight = config.subchart_show && !hasArc ? config.subchart_size_height + xAxisHeight : 0;\n\n $$.currentWidth = $$.getCurrentWidth();\n $$.currentHeight = $$.getCurrentHeight();\n\n // for main\n $$.margin = config.axis_rotated ? {\n top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(),\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: $$.getHorizontalAxisHeight('y') + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft())\n } : {\n top: 4 + $$.getCurrentPaddingTop(), // for top tick text\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: xAxisHeight + subchartHeight + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: hasArc ? 0 : $$.getCurrentPaddingLeft()\n };\n\n // for subchart\n $$.margin2 = config.axis_rotated ? {\n top: $$.margin.top,\n right: NaN,\n bottom: 20 + legendHeightForBottom,\n left: $$.rotated_padding_left\n } : {\n top: $$.currentHeight - subchartHeight - legendHeightForBottom,\n right: NaN,\n bottom: xAxisHeight + legendHeightForBottom,\n left: $$.margin.left\n };\n\n // for legend\n $$.margin3 = {\n top: 0,\n right: NaN,\n bottom: 0,\n left: 0\n };\n if ($$.updateSizeForLegend) {\n $$.updateSizeForLegend(legendHeight, legendWidth);\n }\n\n $$.width = $$.currentWidth - $$.margin.left - $$.margin.right;\n $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom;\n if ($$.width < 0) {\n $$.width = 0;\n }\n if ($$.height < 0) {\n $$.height = 0;\n }\n\n $$.width2 = config.axis_rotated ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right : $$.width;\n $$.height2 = config.axis_rotated ? $$.height : $$.currentHeight - $$.margin2.top - $$.margin2.bottom;\n if ($$.width2 < 0) {\n $$.width2 = 0;\n }\n if ($$.height2 < 0) {\n $$.height2 = 0;\n }\n\n // for arc\n $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0);\n $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10);\n if ($$.hasType('gauge') && !config.gauge_fullCircle) {\n $$.arcHeight += $$.height - $$.getGaugeLabelHeight();\n }\n if ($$.updateRadius) {\n $$.updateRadius();\n }\n\n if ($$.isLegendRight && hasArc) {\n $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1;\n }\n};\n\nc3_chart_internal_fn.updateTargets = function (targets) {\n var $$ = this;\n\n /*-- Main --*/\n\n //-- Text --//\n $$.updateTargetsForText(targets);\n\n //-- Bar --//\n $$.updateTargetsForBar(targets);\n\n //-- Line --//\n $$.updateTargetsForLine(targets);\n\n //-- Arc --//\n if ($$.hasArcType() && $$.updateTargetsForArc) {\n $$.updateTargetsForArc(targets);\n }\n\n /*-- Sub --*/\n\n if ($$.updateTargetsForSubchart) {\n $$.updateTargetsForSubchart(targets);\n }\n\n // Fade-in each chart\n $$.showTargets();\n};\nc3_chart_internal_fn.showTargets = function () {\n var $$ = this;\n $$.svg.selectAll('.' + CLASS.target).filter(function (d) {\n return $$.isTargetToShow(d.id);\n }).transition().duration($$.config.transition_duration).style(\"opacity\", 1);\n};\n\nc3_chart_internal_fn.redraw = function (options, transitions) {\n var $$ = this,\n main = $$.main,\n d3 = $$.d3,\n config = $$.config;\n var areaIndices = $$.getShapeIndices($$.isAreaType),\n barIndices = $$.getShapeIndices($$.isBarType),\n lineIndices = $$.getShapeIndices($$.isLineType);\n var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis, withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend, withEventRect, withDimension, withUpdateXAxis;\n var hideAxis = $$.hasArcType();\n var drawArea, drawBar, drawLine, xForText, yForText;\n var duration, durationForExit, durationForAxis;\n var waitForDraw, flow;\n var targetsToShow = $$.filterTargetsToShow($$.data.targets),\n tickValues,\n i,\n intervalForCulling,\n xDomainForZoom;\n var xv = $$.xv.bind($$),\n cx,\n cy;\n\n options = options || {};\n withY = getOption(options, \"withY\", true);\n withSubchart = getOption(options, \"withSubchart\", true);\n withTransition = getOption(options, \"withTransition\", true);\n withTransform = getOption(options, \"withTransform\", false);\n withUpdateXDomain = getOption(options, \"withUpdateXDomain\", false);\n withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", false);\n withTrimXDomain = getOption(options, \"withTrimXDomain\", true);\n withUpdateXAxis = getOption(options, \"withUpdateXAxis\", withUpdateXDomain);\n withLegend = getOption(options, \"withLegend\", false);\n withEventRect = getOption(options, \"withEventRect\", true);\n withDimension = getOption(options, \"withDimension\", true);\n withTransitionForExit = getOption(options, \"withTransitionForExit\", withTransition);\n withTransitionForAxis = getOption(options, \"withTransitionForAxis\", withTransition);\n\n duration = withTransition ? config.transition_duration : 0;\n durationForExit = withTransitionForExit ? duration : 0;\n durationForAxis = withTransitionForAxis ? duration : 0;\n\n transitions = transitions || $$.axis.generateTransitions(durationForAxis);\n\n // update legend and transform each g\n if (withLegend && config.legend_show) {\n $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);\n } else if (withDimension) {\n // need to update dimension (e.g. axis.y.tick.values) because y tick values should change\n // no need to update axis in it because they will be updated in redraw()\n $$.updateDimension(true);\n }\n\n // MEMO: needed for grids calculation\n if ($$.isCategorized() && targetsToShow.length === 0) {\n $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]);\n }\n\n if (targetsToShow.length) {\n $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain);\n if (!config.axis_x_tick_values) {\n tickValues = $$.axis.updateXAxisTickValues(targetsToShow);\n }\n } else {\n $$.xAxis.tickValues([]);\n $$.subXAxis.tickValues([]);\n }\n\n if (config.zoom_rescale && !options.flow) {\n xDomainForZoom = $$.x.orgDomain();\n }\n\n $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom));\n $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom));\n\n if (!config.axis_y_tick_values && config.axis_y_tick_count) {\n $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count));\n }\n if (!config.axis_y2_tick_values && config.axis_y2_tick_count) {\n $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count));\n }\n\n // axes\n $$.axis.redraw(transitions, hideAxis);\n\n // Update axis label\n $$.axis.updateLabels(withTransition);\n\n // show/hide if manual culling needed\n if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) {\n if (config.axis_x_tick_culling && tickValues) {\n for (i = 1; i < tickValues.length; i++) {\n if (tickValues.length / i < config.axis_x_tick_culling_max) {\n intervalForCulling = i;\n break;\n }\n }\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) {\n var index = tickValues.indexOf(e);\n if (index >= 0) {\n d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block');\n }\n });\n } else {\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block');\n }\n }\n\n // setup drawer - MEMO: these must be called after axis updated\n drawArea = $$.generateDrawArea ? $$.generateDrawArea(areaIndices, false) : undefined;\n drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined;\n drawLine = $$.generateDrawLine ? $$.generateDrawLine(lineIndices, false) : undefined;\n xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true);\n yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false);\n\n // Update sub domain\n if (withY) {\n $$.subY.domain($$.getYDomain(targetsToShow, 'y'));\n $$.subY2.domain($$.getYDomain(targetsToShow, 'y2'));\n }\n\n // xgrid focus\n $$.updateXgridFocus();\n\n // Data empty label positioning and text.\n main.select(\"text.\" + CLASS.text + '.' + CLASS.empty).attr(\"x\", $$.width / 2).attr(\"y\", $$.height / 2).text(config.data_empty_label_text).transition().style('opacity', targetsToShow.length ? 0 : 1);\n\n // grid\n $$.updateGrid(duration);\n\n // rect for regions\n $$.updateRegion(duration);\n\n // bars\n $$.updateBar(durationForExit);\n\n // lines, areas and cricles\n $$.updateLine(durationForExit);\n $$.updateArea(durationForExit);\n $$.updateCircle();\n\n // text\n if ($$.hasDataLabel()) {\n $$.updateText(durationForExit);\n }\n\n // title\n if ($$.redrawTitle) {\n $$.redrawTitle();\n }\n\n // arc\n if ($$.redrawArc) {\n $$.redrawArc(duration, durationForExit, withTransform);\n }\n\n // subchart\n if ($$.redrawSubchart) {\n $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices);\n }\n\n // circles for select\n main.selectAll('.' + CLASS.selectedCircles).filter($$.isBarType.bind($$)).selectAll('circle').remove();\n\n // event rects will redrawn when flow called\n if (config.interaction_enabled && !options.flow && withEventRect) {\n $$.redrawEventRect();\n if ($$.updateZoom) {\n $$.updateZoom();\n }\n }\n\n // update circleY based on updated parameters\n $$.updateCircleY();\n\n // generate circle x/y functions depending on updated params\n cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$);\n cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$);\n\n if (options.flow) {\n flow = $$.generateFlow({\n targets: targetsToShow,\n flow: options.flow,\n duration: options.flow.duration,\n drawBar: drawBar,\n drawLine: drawLine,\n drawArea: drawArea,\n cx: cx,\n cy: cy,\n xv: xv,\n xForText: xForText,\n yForText: yForText\n });\n }\n\n if ((duration || flow) && $$.isTabVisible()) {\n // Only use transition if tab visible. See #938.\n // transition should be derived from one transition\n d3.transition().duration(duration).each(function () {\n var transitionsToWait = [];\n\n // redraw and gather transitions\n [$$.redrawBar(drawBar, true), $$.redrawLine(drawLine, true), $$.redrawArea(drawArea, true), $$.redrawCircle(cx, cy, true), $$.redrawText(xForText, yForText, options.flow, true), $$.redrawRegion(true), $$.redrawGrid(true)].forEach(function (transitions) {\n transitions.forEach(function (transition) {\n transitionsToWait.push(transition);\n });\n });\n\n // Wait for end of transitions to call flow and onrendered callback\n waitForDraw = $$.generateWait();\n transitionsToWait.forEach(function (t) {\n waitForDraw.add(t);\n });\n }).call(waitForDraw, function () {\n if (flow) {\n flow();\n }\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n });\n } else {\n $$.redrawBar(drawBar);\n $$.redrawLine(drawLine);\n $$.redrawArea(drawArea);\n $$.redrawCircle(cx, cy);\n $$.redrawText(xForText, yForText, options.flow);\n $$.redrawRegion();\n $$.redrawGrid();\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n }\n\n // update fadein condition\n $$.mapToIds($$.data.targets).forEach(function (id) {\n $$.withoutFadeIn[id] = true;\n });\n};\n\nc3_chart_internal_fn.updateAndRedraw = function (options) {\n var $$ = this,\n config = $$.config,\n transitions;\n options = options || {};\n // same with redraw\n options.withTransition = getOption(options, \"withTransition\", true);\n options.withTransform = getOption(options, \"withTransform\", false);\n options.withLegend = getOption(options, \"withLegend\", false);\n // NOT same with redraw\n options.withUpdateXDomain = true;\n options.withUpdateOrgXDomain = true;\n options.withTransitionForExit = false;\n options.withTransitionForTransform = getOption(options, \"withTransitionForTransform\", options.withTransition);\n // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called)\n $$.updateSizes();\n // MEMO: called in updateLegend in redraw if withLegend\n if (!(options.withLegend && config.legend_show)) {\n transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0);\n // Update scales\n $$.updateScales();\n $$.updateSvgSize();\n // Update g positions\n $$.transformAll(options.withTransitionForTransform, transitions);\n }\n // Draw with new sizes & scales\n $$.redraw(options, transitions);\n};\nc3_chart_internal_fn.redrawWithoutRescale = function () {\n this.redraw({\n withY: false,\n withSubchart: false,\n withEventRect: false,\n withTransitionForAxis: false\n });\n};\n\nc3_chart_internal_fn.isTimeSeries = function () {\n return this.config.axis_x_type === 'timeseries';\n};\nc3_chart_internal_fn.isCategorized = function () {\n return this.config.axis_x_type.indexOf('categor') >= 0;\n};\nc3_chart_internal_fn.isCustomX = function () {\n var $$ = this,\n config = $$.config;\n return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs));\n};\n\nc3_chart_internal_fn.isTimeSeriesY = function () {\n return this.config.axis_y_type === 'timeseries';\n};\n\nc3_chart_internal_fn.getTranslate = function (target) {\n var $$ = this,\n config = $$.config,\n x,\n y;\n if (target === 'main') {\n x = asHalfPixel($$.margin.left);\n y = asHalfPixel($$.margin.top);\n } else if (target === 'context') {\n x = asHalfPixel($$.margin2.left);\n y = asHalfPixel($$.margin2.top);\n } else if (target === 'legend') {\n x = $$.margin3.left;\n y = $$.margin3.top;\n } else if (target === 'x') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height;\n } else if (target === 'y') {\n x = 0;\n y = config.axis_rotated ? $$.height : 0;\n } else if (target === 'y2') {\n x = config.axis_rotated ? 0 : $$.width;\n y = config.axis_rotated ? 1 : 0;\n } else if (target === 'subx') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height2;\n } else if (target === 'arc') {\n x = $$.arcWidth / 2;\n y = $$.arcHeight / 2;\n }\n return \"translate(\" + x + \",\" + y + \")\";\n};\nc3_chart_internal_fn.initialOpacity = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0;\n};\nc3_chart_internal_fn.initialOpacityForCircle = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0;\n};\nc3_chart_internal_fn.opacityForCircle = function (d) {\n var isPointShouldBeShown = isFunction(this.config.point_show) ? this.config.point_show(d) : this.config.point_show;\n var opacity = isPointShouldBeShown ? 1 : 0;\n return isValue(d.value) ? this.isScatterType(d) ? 0.5 : opacity : 0;\n};\nc3_chart_internal_fn.opacityForText = function () {\n return this.hasDataLabel() ? 1 : 0;\n};\nc3_chart_internal_fn.xx = function (d) {\n return d ? this.x(d.x) : null;\n};\nc3_chart_internal_fn.xv = function (d) {\n var $$ = this,\n value = d.value;\n if ($$.isTimeSeries()) {\n value = $$.parseDate(d.value);\n } else if ($$.isCategorized() && typeof d.value === 'string') {\n value = $$.config.axis_x_categories.indexOf(d.value);\n }\n return Math.ceil($$.x(value));\n};\nc3_chart_internal_fn.yv = function (d) {\n var $$ = this,\n yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y;\n return Math.ceil(yScale(d.value));\n};\nc3_chart_internal_fn.subxx = function (d) {\n return d ? this.subX(d.x) : null;\n};\n\nc3_chart_internal_fn.transformMain = function (withTransition, transitions) {\n var $$ = this,\n xAxis,\n yAxis,\n y2Axis;\n if (transitions && transitions.axisX) {\n xAxis = transitions.axisX;\n } else {\n xAxis = $$.main.select('.' + CLASS.axisX);\n if (withTransition) {\n xAxis = xAxis.transition();\n }\n }\n if (transitions && transitions.axisY) {\n yAxis = transitions.axisY;\n } else {\n yAxis = $$.main.select('.' + CLASS.axisY);\n if (withTransition) {\n yAxis = yAxis.transition();\n }\n }\n if (transitions && transitions.axisY2) {\n y2Axis = transitions.axisY2;\n } else {\n y2Axis = $$.main.select('.' + CLASS.axisY2);\n if (withTransition) {\n y2Axis = y2Axis.transition();\n }\n }\n (withTransition ? $$.main.transition() : $$.main).attr(\"transform\", $$.getTranslate('main'));\n xAxis.attr(\"transform\", $$.getTranslate('x'));\n yAxis.attr(\"transform\", $$.getTranslate('y'));\n y2Axis.attr(\"transform\", $$.getTranslate('y2'));\n $$.main.select('.' + CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n};\nc3_chart_internal_fn.transformAll = function (withTransition, transitions) {\n var $$ = this;\n $$.transformMain(withTransition, transitions);\n if ($$.config.subchart_show) {\n $$.transformContext(withTransition, transitions);\n }\n if ($$.legend) {\n $$.transformLegend(withTransition);\n }\n};\n\nc3_chart_internal_fn.updateSvgSize = function () {\n var $$ = this,\n brush = $$.svg.select(\".c3-brush .background\");\n $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);\n $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect').attr('width', $$.width).attr('height', $$.height);\n $$.svg.select('#' + $$.clipIdForXAxis).select('rect').attr('x', $$.getXAxisClipX.bind($$)).attr('y', $$.getXAxisClipY.bind($$)).attr('width', $$.getXAxisClipWidth.bind($$)).attr('height', $$.getXAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForYAxis).select('rect').attr('x', $$.getYAxisClipX.bind($$)).attr('y', $$.getYAxisClipY.bind($$)).attr('width', $$.getYAxisClipWidth.bind($$)).attr('height', $$.getYAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForSubchart).select('rect').attr('width', $$.width).attr('height', brush.size() ? brush.attr('height') : 0);\n $$.svg.select('.' + CLASS.zoomRect).attr('width', $$.width).attr('height', $$.height);\n // MEMO: parent div's height will be bigger than svg when <!DOCTYPE html>\n $$.selectChart.style('max-height', $$.currentHeight + \"px\");\n};\n\nc3_chart_internal_fn.updateDimension = function (withoutAxis) {\n var $$ = this;\n if (!withoutAxis) {\n if ($$.config.axis_rotated) {\n $$.axes.x.call($$.xAxis);\n $$.axes.subx.call($$.subXAxis);\n } else {\n $$.axes.y.call($$.yAxis);\n $$.axes.y2.call($$.y2Axis);\n }\n }\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize();\n $$.transformAll(false);\n};\n\nc3_chart_internal_fn.observeInserted = function (selection) {\n var $$ = this,\n observer;\n if (typeof MutationObserver === 'undefined') {\n window.console.error(\"MutationObserver not defined.\");\n return;\n }\n observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.type === 'childList' && mutation.previousSibling) {\n observer.disconnect();\n // need to wait for completion of load because size calculation requires the actual sizes determined after that completion\n $$.intervalForObserveInserted = window.setInterval(function () {\n // parentNode will NOT be null when completed\n if (selection.node().parentNode) {\n window.clearInterval($$.intervalForObserveInserted);\n $$.updateDimension();\n if ($$.brush) {\n $$.brush.update();\n }\n $$.config.oninit.call($$);\n $$.redraw({\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransition: false,\n withTransitionForTransform: false,\n withLegend: true\n });\n selection.transition().style('opacity', 1);\n }\n }, 10);\n }\n });\n });\n observer.observe(selection.node(), { attributes: true, childList: true, characterData: true });\n};\n\nc3_chart_internal_fn.bindResize = function () {\n var $$ = this,\n config = $$.config;\n\n $$.resizeFunction = $$.generateResize();\n\n $$.resizeFunction.add(function () {\n config.onresize.call($$);\n });\n if (config.resize_auto) {\n $$.resizeFunction.add(function () {\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n $$.resizeTimeout = window.setTimeout(function () {\n delete $$.resizeTimeout;\n $$.api.flush();\n }, 100);\n });\n }\n $$.resizeFunction.add(function () {\n config.onresized.call($$);\n });\n\n if (window.attachEvent) {\n window.attachEvent('onresize', $$.resizeFunction);\n } else if (window.addEventListener) {\n window.addEventListener('resize', $$.resizeFunction, false);\n } else {\n // fallback to this, if this is a very old browser\n var wrapper = window.onresize;\n if (!wrapper) {\n // create a wrapper that will call all charts\n wrapper = $$.generateResize();\n } else if (!wrapper.add || !wrapper.remove) {\n // there is already a handler registered, make sure we call it too\n wrapper = $$.generateResize();\n wrapper.add(window.onresize);\n }\n // add this graph to the wrapper, we will be removed if the user calls destroy\n wrapper.add($$.resizeFunction);\n window.onresize = wrapper;\n }\n};\n\nc3_chart_internal_fn.generateResize = function () {\n var resizeFunctions = [];\n function callResizeFunctions() {\n resizeFunctions.forEach(function (f) {\n f();\n });\n }\n callResizeFunctions.add = function (f) {\n resizeFunctions.push(f);\n };\n callResizeFunctions.remove = function (f) {\n for (var i = 0; i < resizeFunctions.length; i++) {\n if (resizeFunctions[i] === f) {\n resizeFunctions.splice(i, 1);\n break;\n }\n }\n };\n return callResizeFunctions;\n};\n\nc3_chart_internal_fn.endall = function (transition, callback) {\n var n = 0;\n transition.each(function () {\n ++n;\n }).each(\"end\", function () {\n if (! --n) {\n callback.apply(this, arguments);\n }\n });\n};\nc3_chart_internal_fn.generateWait = function () {\n var transitionsToWait = [],\n f = function f(transition, callback) {\n var timer = setInterval(function () {\n var done = 0;\n transitionsToWait.forEach(function (t) {\n if (t.empty()) {\n done += 1;\n return;\n }\n try {\n t.transition();\n } catch (e) {\n done += 1;\n }\n });\n if (done === transitionsToWait.length) {\n clearInterval(timer);\n if (callback) {\n callback();\n }\n }\n }, 10);\n };\n f.add = function (transition) {\n transitionsToWait.push(transition);\n };\n return f;\n};\n\nc3_chart_internal_fn.parseDate = function (date) {\n var $$ = this,\n parsedDate;\n if (date instanceof Date) {\n parsedDate = date;\n } else if (typeof date === 'string') {\n parsedDate = $$.dataTimeFormat($$.config.data_xFormat).parse(date);\n } else if ((typeof date === 'undefined' ? 'undefined' : _typeof(date)) === 'object') {\n parsedDate = new Date(+date);\n } else if (typeof date === 'number' && !isNaN(date)) {\n parsedDate = new Date(+date);\n }\n if (!parsedDate || isNaN(+parsedDate)) {\n window.console.error(\"Failed to parse x '\" + date + \"' to Date object\");\n }\n return parsedDate;\n};\n\nc3_chart_internal_fn.isTabVisible = function () {\n var hidden;\n if (typeof document.hidden !== \"undefined\") {\n // Opera 12.10 and Firefox 18 and later support\n hidden = \"hidden\";\n } else if (typeof document.mozHidden !== \"undefined\") {\n hidden = \"mozHidden\";\n } else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n }\n\n return document[hidden] ? false : true;\n};\n\nc3_chart_internal_fn.isValue = isValue;\nc3_chart_internal_fn.isFunction = isFunction;\nc3_chart_internal_fn.isString = isString;\nc3_chart_internal_fn.isUndefined = isUndefined;\nc3_chart_internal_fn.isDefined = isDefined;\nc3_chart_internal_fn.ceil10 = ceil10;\nc3_chart_internal_fn.asHalfPixel = asHalfPixel;\nc3_chart_internal_fn.diffDomain = diffDomain;\nc3_chart_internal_fn.isEmpty = isEmpty;\nc3_chart_internal_fn.notEmpty = notEmpty;\nc3_chart_internal_fn.notEmpty = notEmpty;\nc3_chart_internal_fn.getOption = getOption;\nc3_chart_internal_fn.hasValue = hasValue;\nc3_chart_internal_fn.sanitise = sanitise;\nc3_chart_internal_fn.getPathBox = getPathBox;\nc3_chart_internal_fn.CLASS = CLASS;\n\n/* jshint ignore:start */\n\n// PhantomJS doesn't have support for Function.prototype.bind, which has caused confusion. Use\n// this polyfill to avoid the confusion.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill\n\nif (!Function.prototype.bind) {\n Function.prototype.bind = function (oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function fNOP() {},\n fBound = function fBound() {\n return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n fNOP.prototype = this.prototype;\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n}\n\n// SVGPathSeg API polyfill\n// https://github.com/progers/pathseg\n//\n// This is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from\n// SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec\n// changes which were implemented in Firefox 43 and Chrome 46.\n\n(function () {\n \"use strict\";\n\n if (!(\"SVGPathSeg\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg\n window.SVGPathSeg = function (type, typeAsLetter, owningPathSegList) {\n this.pathSegType = type;\n this.pathSegTypeAsLetter = typeAsLetter;\n this._owningPathSegList = owningPathSegList;\n };\n\n window.SVGPathSeg.prototype.classname = \"SVGPathSeg\";\n\n window.SVGPathSeg.PATHSEG_UNKNOWN = 0;\n window.SVGPathSeg.PATHSEG_CLOSEPATH = 1;\n window.SVGPathSeg.PATHSEG_MOVETO_ABS = 2;\n window.SVGPathSeg.PATHSEG_MOVETO_REL = 3;\n window.SVGPathSeg.PATHSEG_LINETO_ABS = 4;\n window.SVGPathSeg.PATHSEG_LINETO_REL = 5;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;\n window.SVGPathSeg.PATHSEG_ARC_ABS = 10;\n window.SVGPathSeg.PATHSEG_ARC_REL = 11;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;\n\n // Notify owning PathSegList on any changes so they can be synchronized back to the path element.\n window.SVGPathSeg.prototype._segmentChanged = function () {\n if (this._owningPathSegList) this._owningPathSegList.segmentChanged(this);\n };\n\n window.SVGPathSegClosePath = function (owningPathSegList) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CLOSEPATH, \"z\", owningPathSegList);\n };\n window.SVGPathSegClosePath.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegClosePath.prototype.toString = function () {\n return \"[object SVGPathSegClosePath]\";\n };\n window.SVGPathSegClosePath.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter;\n };\n window.SVGPathSegClosePath.prototype.clone = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n\n window.SVGPathSegMovetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_ABS, \"M\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegMovetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegMovetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegMovetoAbs]\";\n };\n window.SVGPathSegMovetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegMovetoAbs.prototype.clone = function () {\n return new window.SVGPathSegMovetoAbs(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegMovetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_REL, \"m\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegMovetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegMovetoRel.prototype.toString = function () {\n return \"[object SVGPathSegMovetoRel]\";\n };\n window.SVGPathSegMovetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegMovetoRel.prototype.clone = function () {\n return new window.SVGPathSegMovetoRel(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_ABS, \"L\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegLinetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoAbs]\";\n };\n window.SVGPathSegLinetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegLinetoAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoAbs(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_REL, \"l\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegLinetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoRel]\";\n };\n window.SVGPathSegLinetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegLinetoRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoRel(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoCubicAbs = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, \"C\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicAbs]\";\n };\n window.SVGPathSegCurvetoCubicAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoCubicAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x1\", { get: function get() {\n return this._x1;\n }, set: function set(x1) {\n this._x1 = x1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y1\", { get: function get() {\n return this._y1;\n }, set: function set(y1) {\n this._y1 = y1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x2\", { get: function get() {\n return this._x2;\n }, set: function set(x2) {\n this._x2 = x2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y2\", { get: function get() {\n return this._y2;\n }, set: function set(y2) {\n this._y2 = y2;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoCubicRel = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, \"c\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicRel]\";\n };\n window.SVGPathSegCurvetoCubicRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoCubicRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x1\", { get: function get() {\n return this._x1;\n }, set: function set(x1) {\n this._x1 = x1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y1\", { get: function get() {\n return this._y1;\n }, set: function set(y1) {\n this._y1 = y1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x2\", { get: function get() {\n return this._x2;\n }, set: function set(x2) {\n this._x2 = x2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y2\", { get: function get() {\n return this._y2;\n }, set: function set(y2) {\n this._y2 = y2;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoQuadraticAbs = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, \"Q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n window.SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticAbs]\";\n };\n window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x1\", { get: function get() {\n return this._x1;\n }, set: function set(x1) {\n this._x1 = x1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y1\", { get: function get() {\n return this._y1;\n }, set: function set(y1) {\n this._y1 = y1;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoQuadraticRel = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, \"q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n window.SVGPathSegCurvetoQuadraticRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticRel]\";\n };\n window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x1\", { get: function get() {\n return this._x1;\n }, set: function set(x1) {\n this._x1 = x1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y1\", { get: function get() {\n return this._y1;\n }, set: function set(y1) {\n this._y1 = y1;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegArcAbs = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_ABS, \"A\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n window.SVGPathSegArcAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegArcAbs.prototype.toString = function () {\n return \"[object SVGPathSegArcAbs]\";\n };\n window.SVGPathSegArcAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegArcAbs.prototype.clone = function () {\n return new window.SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r1\", { get: function get() {\n return this._r1;\n }, set: function set(r1) {\n this._r1 = r1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r2\", { get: function get() {\n return this._r2;\n }, set: function set(r2) {\n this._r2 = r2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"angle\", { get: function get() {\n return this._angle;\n }, set: function set(angle) {\n this._angle = angle;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"largeArcFlag\", { get: function get() {\n return this._largeArcFlag;\n }, set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"sweepFlag\", { get: function get() {\n return this._sweepFlag;\n }, set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegArcRel = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_REL, \"a\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n window.SVGPathSegArcRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegArcRel.prototype.toString = function () {\n return \"[object SVGPathSegArcRel]\";\n };\n window.SVGPathSegArcRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegArcRel.prototype.clone = function () {\n return new window.SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r1\", { get: function get() {\n return this._r1;\n }, set: function set(r1) {\n this._r1 = r1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r2\", { get: function get() {\n return this._r2;\n }, set: function set(r2) {\n this._r2 = r2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"angle\", { get: function get() {\n return this._angle;\n }, set: function set(angle) {\n this._angle = angle;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"largeArcFlag\", { get: function get() {\n return this._largeArcFlag;\n }, set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"sweepFlag\", { get: function get() {\n return this._sweepFlag;\n }, set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoHorizontalAbs = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, \"H\", owningPathSegList);\n this._x = x;\n };\n window.SVGPathSegLinetoHorizontalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoHorizontalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalAbs]\";\n };\n window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n window.SVGPathSegLinetoHorizontalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, this._x);\n };\n Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoHorizontalRel = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, \"h\", owningPathSegList);\n this._x = x;\n };\n window.SVGPathSegLinetoHorizontalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoHorizontalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalRel]\";\n };\n window.SVGPathSegLinetoHorizontalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n window.SVGPathSegLinetoHorizontalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, this._x);\n };\n Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoVerticalAbs = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, \"V\", owningPathSegList);\n this._y = y;\n };\n window.SVGPathSegLinetoVerticalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoVerticalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalAbs]\";\n };\n window.SVGPathSegLinetoVerticalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n window.SVGPathSegLinetoVerticalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoVerticalRel = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, \"v\", owningPathSegList);\n this._y = y;\n };\n window.SVGPathSegLinetoVerticalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoVerticalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalRel]\";\n };\n window.SVGPathSegLinetoVerticalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n window.SVGPathSegLinetoVerticalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalRel(undefined, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoCubicSmoothAbs = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, \"S\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothAbs]\";\n };\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x2\", { get: function get() {\n return this._x2;\n }, set: function set(x2) {\n this._x2 = x2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y2\", { get: function get() {\n return this._y2;\n }, set: function set(y2) {\n this._y2 = y2;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoCubicSmoothRel = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, \"s\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothRel]\";\n };\n window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x2\", { get: function get() {\n return this._x2;\n }, set: function set(x2) {\n this._x2 = x2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y2\", { get: function get() {\n return this._y2;\n }, set: function set(y2) {\n this._y2 = y2;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, \"T\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothAbs]\";\n };\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoQuadraticSmoothRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, \"t\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothRel]\";\n };\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n // Add createSVGPathSeg* functions to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-Interfacewindow.SVGPathElement.\n window.SVGPathElement.prototype.createSVGPathSegClosePath = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n window.SVGPathElement.prototype.createSVGPathSegMovetoAbs = function (x, y) {\n return new window.SVGPathSegMovetoAbs(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegMovetoRel = function (x, y) {\n return new window.SVGPathSegMovetoRel(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoAbs = function (x, y) {\n return new window.SVGPathSegLinetoAbs(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoRel = function (x, y) {\n return new window.SVGPathSegLinetoRel(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1);\n };\n window.SVGPathElement.prototype.createSVGPathSegArcAbs = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n window.SVGPathElement.prototype.createSVGPathSegArcRel = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function (x) {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, x);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function (x) {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, x);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function (y) {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function (y) {\n return new window.SVGPathSegLinetoVerticalRel(undefined, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y);\n };\n\n if (!(\"getPathSegAtLength\" in window.SVGPathElement.prototype)) {\n // Add getPathSegAtLength to SVGPathElement.\n // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-__svg__SVGPathElement__getPathSegAtLength\n // This polyfill requires SVGPathElement.getTotalLength to implement the distance-along-a-path algorithm.\n window.SVGPathElement.prototype.getPathSegAtLength = function (distance) {\n if (distance === undefined || !isFinite(distance)) throw \"Invalid arguments.\";\n\n var measurementElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n measurementElement.setAttribute(\"d\", this.getAttribute(\"d\"));\n var lastPathSegment = measurementElement.pathSegList.numberOfItems - 1;\n\n // If the path is empty, return 0.\n if (lastPathSegment <= 0) return 0;\n\n do {\n measurementElement.pathSegList.removeItem(lastPathSegment);\n if (distance > measurementElement.getTotalLength()) break;\n lastPathSegment--;\n } while (lastPathSegment > 0);\n return lastPathSegment;\n };\n }\n }\n\n if (!(\"SVGPathSegList\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList\n window.SVGPathSegList = function (pathElement) {\n this._pathElement = pathElement;\n this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n\n // Use a MutationObserver to catch changes to the path's \"d\" attribute.\n this._mutationObserverConfig = { \"attributes\": true, \"attributeFilter\": [\"d\"] };\n this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n };\n\n window.SVGPathSegList.prototype.classname = \"SVGPathSegList\";\n\n Object.defineProperty(window.SVGPathSegList.prototype, \"numberOfItems\", {\n get: function get() {\n this._checkPathSynchronizedToList();\n return this._list.length;\n },\n enumerable: true\n });\n\n // Add the pathSegList accessors to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData\n Object.defineProperty(window.SVGPathElement.prototype, \"pathSegList\", {\n get: function get() {\n if (!this._pathSegList) this._pathSegList = new window.SVGPathSegList(this);\n return this._pathSegList;\n },\n enumerable: true\n });\n // FIXME: The following are not implemented and simply return window.SVGPathElement.pathSegList.\n Object.defineProperty(window.SVGPathElement.prototype, \"normalizedPathSegList\", { get: function get() {\n return this.pathSegList;\n }, enumerable: true });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedPathSegList\", { get: function get() {\n return this.pathSegList;\n }, enumerable: true });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedNormalizedPathSegList\", { get: function get() {\n return this.pathSegList;\n }, enumerable: true });\n\n // Process any pending mutations to the path element and update the list as needed.\n // This should be the first call of all public functions and is needed because\n // MutationObservers are not synchronous so we can have pending asynchronous mutations.\n window.SVGPathSegList.prototype._checkPathSynchronizedToList = function () {\n this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());\n };\n\n window.SVGPathSegList.prototype._updateListFromPathMutations = function (mutationRecords) {\n if (!this._pathElement) return;\n var hasPathMutations = false;\n mutationRecords.forEach(function (record) {\n if (record.attributeName == \"d\") hasPathMutations = true;\n });\n if (hasPathMutations) this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n };\n\n // Serialize the list and update the path's 'd' attribute.\n window.SVGPathSegList.prototype._writeListToPath = function () {\n this._pathElementMutationObserver.disconnect();\n this._pathElement.setAttribute(\"d\", window.SVGPathSegList._pathSegArrayAsString(this._list));\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n };\n\n // When a path segment changes the list needs to be synchronized back to the path element.\n window.SVGPathSegList.prototype.segmentChanged = function (pathSeg) {\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.clear = function () {\n this._checkPathSynchronizedToList();\n\n this._list.forEach(function (pathSeg) {\n pathSeg._owningPathSegList = null;\n });\n this._list = [];\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.initialize = function (newItem) {\n this._checkPathSynchronizedToList();\n\n this._list = [newItem];\n newItem._owningPathSegList = this;\n this._writeListToPath();\n return newItem;\n };\n\n window.SVGPathSegList.prototype._checkValidIndex = function (index) {\n if (isNaN(index) || index < 0 || index >= this.numberOfItems) throw \"INDEX_SIZE_ERR\";\n };\n\n window.SVGPathSegList.prototype.getItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n return this._list[index];\n };\n\n window.SVGPathSegList.prototype.insertItemBefore = function (newItem, index) {\n this._checkPathSynchronizedToList();\n\n // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list.\n if (index > this.numberOfItems) index = this.numberOfItems;\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n this._list.splice(index, 0, newItem);\n newItem._owningPathSegList = this;\n this._writeListToPath();\n return newItem;\n };\n\n window.SVGPathSegList.prototype.replaceItem = function (newItem, index) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n this._checkValidIndex(index);\n this._list[index] = newItem;\n newItem._owningPathSegList = this;\n this._writeListToPath();\n return newItem;\n };\n\n window.SVGPathSegList.prototype.removeItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n var item = this._list[index];\n this._list.splice(index, 1);\n this._writeListToPath();\n return item;\n };\n\n window.SVGPathSegList.prototype.appendItem = function (newItem) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n this._list.push(newItem);\n newItem._owningPathSegList = this;\n // TODO: Optimize this to just append to the existing attribute.\n this._writeListToPath();\n return newItem;\n };\n\n window.SVGPathSegList._pathSegArrayAsString = function (pathSegArray) {\n var string = \"\";\n var first = true;\n pathSegArray.forEach(function (pathSeg) {\n if (first) {\n first = false;\n string += pathSeg._asPathString();\n } else {\n string += \" \" + pathSeg._asPathString();\n }\n });\n return string;\n };\n\n // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp.\n window.SVGPathSegList.prototype._parsePath = function (string) {\n if (!string || string.length == 0) return [];\n\n var owningPathSegList = this;\n\n var Builder = function Builder() {\n this.pathSegList = [];\n };\n\n Builder.prototype.appendSegment = function (pathSeg) {\n this.pathSegList.push(pathSeg);\n };\n\n var Source = function Source(string) {\n this._string = string;\n this._currentIndex = 0;\n this._endIndex = this._string.length;\n this._previousCommand = window.SVGPathSeg.PATHSEG_UNKNOWN;\n\n this._skipOptionalSpaces();\n };\n\n Source.prototype._isCurrentSpace = function () {\n var character = this._string[this._currentIndex];\n return character <= \" \" && (character == \" \" || character == \"\\n\" || character == \"\\t\" || character == \"\\r\" || character == \"\\f\");\n };\n\n Source.prototype._skipOptionalSpaces = function () {\n while (this._currentIndex < this._endIndex && this._isCurrentSpace()) {\n this._currentIndex++;\n }return this._currentIndex < this._endIndex;\n };\n\n Source.prototype._skipOptionalSpacesOrDelimiter = function () {\n if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != \",\") return false;\n if (this._skipOptionalSpaces()) {\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \",\") {\n this._currentIndex++;\n this._skipOptionalSpaces();\n }\n }\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.hasMoreData = function () {\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.peekSegmentType = function () {\n var lookahead = this._string[this._currentIndex];\n return this._pathSegTypeFromChar(lookahead);\n };\n\n Source.prototype._pathSegTypeFromChar = function (lookahead) {\n switch (lookahead) {\n case \"Z\":\n case \"z\":\n return window.SVGPathSeg.PATHSEG_CLOSEPATH;\n case \"M\":\n return window.SVGPathSeg.PATHSEG_MOVETO_ABS;\n case \"m\":\n return window.SVGPathSeg.PATHSEG_MOVETO_REL;\n case \"L\":\n return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n case \"l\":\n return window.SVGPathSeg.PATHSEG_LINETO_REL;\n case \"C\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;\n case \"c\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;\n case \"Q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;\n case \"q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;\n case \"A\":\n return window.SVGPathSeg.PATHSEG_ARC_ABS;\n case \"a\":\n return window.SVGPathSeg.PATHSEG_ARC_REL;\n case \"H\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;\n case \"h\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;\n case \"V\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;\n case \"v\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;\n case \"S\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\n case \"s\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\n case \"T\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\n case \"t\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\n default:\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n }\n };\n\n Source.prototype._nextCommandHelper = function (lookahead, previousCommand) {\n // Check for remaining coordinates in the current command.\n if ((lookahead == \"+\" || lookahead == \"-\" || lookahead == \".\" || lookahead >= \"0\" && lookahead <= \"9\") && previousCommand != window.SVGPathSeg.PATHSEG_CLOSEPATH) {\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_ABS) return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_REL) return window.SVGPathSeg.PATHSEG_LINETO_REL;\n return previousCommand;\n }\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n };\n\n Source.prototype.initialCommandIsMoveTo = function () {\n // If the path is empty it is still valid, so return true.\n if (!this.hasMoreData()) return true;\n var command = this.peekSegmentType();\n // Path must start with moveTo.\n return command == window.SVGPathSeg.PATHSEG_MOVETO_ABS || command == window.SVGPathSeg.PATHSEG_MOVETO_REL;\n };\n\n // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF\n Source.prototype._parseNumber = function () {\n var exponent = 0;\n var integer = 0;\n var frac = 1;\n var decimal = 0;\n var sign = 1;\n var expsign = 1;\n\n var startIndex = this._currentIndex;\n\n this._skipOptionalSpaces();\n\n // Read the sign.\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"+\") this._currentIndex++;else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n sign = -1;\n }\n\n if (this._currentIndex == this._endIndex || (this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") && this._string.charAt(this._currentIndex) != \".\")\n // The first character of a number must be one of [0-9+-.].\n return undefined;\n\n // Read the integer part, build right-to-left.\n var startIntPartIndex = this._currentIndex;\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n this._currentIndex++;\n } // Advance to first non-digit.\n\n if (this._currentIndex != startIntPartIndex) {\n var scanIntPartIndex = this._currentIndex - 1;\n var multiplier = 1;\n while (scanIntPartIndex >= startIntPartIndex) {\n integer += multiplier * (this._string.charAt(scanIntPartIndex--) - \"0\");\n multiplier *= 10;\n }\n }\n\n // Read the decimals.\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \".\") {\n this._currentIndex++;\n\n // There must be a least one digit following the .\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n frac *= 10;\n decimal += (this._string.charAt(this._currentIndex) - \"0\") / frac;\n this._currentIndex += 1;\n }\n }\n\n // Read the exponent part.\n if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == \"e\" || this._string.charAt(this._currentIndex) == \"E\") && this._string.charAt(this._currentIndex + 1) != \"x\" && this._string.charAt(this._currentIndex + 1) != \"m\") {\n this._currentIndex++;\n\n // Read the sign of the exponent.\n if (this._string.charAt(this._currentIndex) == \"+\") {\n this._currentIndex++;\n } else if (this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n expsign = -1;\n }\n\n // There must be an exponent.\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n exponent *= 10;\n exponent += this._string.charAt(this._currentIndex) - \"0\";\n this._currentIndex++;\n }\n }\n\n var number = integer + decimal;\n number *= sign;\n\n if (exponent) number *= Math.pow(10, expsign * exponent);\n\n if (startIndex == this._currentIndex) return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n\n return number;\n };\n\n Source.prototype._parseArcFlag = function () {\n if (this._currentIndex >= this._endIndex) return undefined;\n var flag = false;\n var flagChar = this._string.charAt(this._currentIndex++);\n if (flagChar == \"0\") flag = false;else if (flagChar == \"1\") flag = true;else return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n return flag;\n };\n\n Source.prototype.parseSegment = function () {\n var lookahead = this._string[this._currentIndex];\n var command = this._pathSegTypeFromChar(lookahead);\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) {\n // Possibly an implicit command. Not allowed if this is the first command.\n if (this._previousCommand == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n command = this._nextCommandHelper(lookahead, this._previousCommand);\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n } else {\n this._currentIndex++;\n }\n\n this._previousCommand = command;\n\n switch (command) {\n case window.SVGPathSeg.PATHSEG_MOVETO_REL:\n return new window.SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_MOVETO_ABS:\n return new window.SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_REL:\n return new window.SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_ABS:\n return new window.SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n return new window.SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n return new window.SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n return new window.SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n return new window.SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_CLOSEPATH:\n this._skipOptionalSpaces();\n return new window.SVGPathSegClosePath(owningPathSegList);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n var points = { x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n var points = { x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_ARC_REL:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n case window.SVGPathSeg.PATHSEG_ARC_ABS:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n default:\n throw \"Unknown path seg type.\";\n }\n };\n\n var builder = new Builder();\n var source = new Source(string);\n\n if (!source.initialCommandIsMoveTo()) return [];\n while (source.hasMoreData()) {\n var pathSeg = source.parseSegment();\n if (!pathSeg) return [];\n builder.appendSegment(pathSeg);\n }\n\n return builder.pathSegList;\n };\n }\n})();\n\n/* jshint ignore:end */\n\nc3_chart_fn.axis = function () {};\nc3_chart_fn.axis.labels = function (labels) {\n var $$ = this.internal;\n if (arguments.length) {\n Object.keys(labels).forEach(function (axisId) {\n $$.axis.setLabelText(axisId, labels[axisId]);\n });\n $$.axis.updateLabels();\n }\n // TODO: return some values?\n};\nc3_chart_fn.axis.max = function (max) {\n var $$ = this.internal,\n config = $$.config;\n if (arguments.length) {\n if ((typeof max === 'undefined' ? 'undefined' : _typeof(max)) === 'object') {\n if (isValue(max.x)) {\n config.axis_x_max = max.x;\n }\n if (isValue(max.y)) {\n config.axis_y_max = max.y;\n }\n if (isValue(max.y2)) {\n config.axis_y2_max = max.y2;\n }\n } else {\n config.axis_y_max = config.axis_y2_max = max;\n }\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n } else {\n return {\n x: config.axis_x_max,\n y: config.axis_y_max,\n y2: config.axis_y2_max\n };\n }\n};\nc3_chart_fn.axis.min = function (min) {\n var $$ = this.internal,\n config = $$.config;\n if (arguments.length) {\n if ((typeof min === 'undefined' ? 'undefined' : _typeof(min)) === 'object') {\n if (isValue(min.x)) {\n config.axis_x_min = min.x;\n }\n if (isValue(min.y)) {\n config.axis_y_min = min.y;\n }\n if (isValue(min.y2)) {\n config.axis_y2_min = min.y2;\n }\n } else {\n config.axis_y_min = config.axis_y2_min = min;\n }\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n } else {\n return {\n x: config.axis_x_min,\n y: config.axis_y_min,\n y2: config.axis_y2_min\n };\n }\n};\nc3_chart_fn.axis.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.axis.max(range.max);\n }\n if (isDefined(range.min)) {\n this.axis.min(range.min);\n }\n } else {\n return {\n max: this.axis.max(),\n min: this.axis.min()\n };\n }\n};\n\nc3_chart_fn.category = function (i, category) {\n var $$ = this.internal,\n config = $$.config;\n if (arguments.length > 1) {\n config.axis_x_categories[i] = category;\n $$.redraw();\n }\n return config.axis_x_categories[i];\n};\nc3_chart_fn.categories = function (categories) {\n var $$ = this.internal,\n config = $$.config;\n if (!arguments.length) {\n return config.axis_x_categories;\n }\n config.axis_x_categories = categories;\n $$.redraw();\n return config.axis_x_categories;\n};\n\nc3_chart_fn.resize = function (size) {\n var $$ = this.internal,\n config = $$.config;\n config.size_width = size ? size.width : null;\n config.size_height = size ? size.height : null;\n this.flush();\n};\n\nc3_chart_fn.flush = function () {\n var $$ = this.internal;\n $$.updateAndRedraw({ withLegend: true, withTransition: false, withTransitionForTransform: false });\n};\n\nc3_chart_fn.destroy = function () {\n var $$ = this.internal;\n\n window.clearInterval($$.intervalForObserveInserted);\n\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n\n if (window.detachEvent) {\n window.detachEvent('onresize', $$.resizeFunction);\n } else if (window.removeEventListener) {\n window.removeEventListener('resize', $$.resizeFunction);\n } else {\n var wrapper = window.onresize;\n // check if no one else removed our wrapper and remove our resizeFunction from it\n if (wrapper && wrapper.add && wrapper.remove) {\n wrapper.remove($$.resizeFunction);\n }\n }\n\n $$.selectChart.classed('c3', false).html(\"\");\n\n // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen.\n Object.keys($$).forEach(function (key) {\n $$[key] = null;\n });\n\n return null;\n};\n\n// TODO: fix\nc3_chart_fn.color = function (id) {\n var $$ = this.internal;\n return $$.color(id); // more patterns\n};\n\nc3_chart_fn.data = function (targetIds) {\n var targets = this.internal.data.targets;\n return typeof targetIds === 'undefined' ? targets : targets.filter(function (t) {\n return [].concat(targetIds).indexOf(t.id) >= 0;\n });\n};\nc3_chart_fn.data.shown = function (targetIds) {\n return this.internal.filterTargetsToShow(this.data(targetIds));\n};\nc3_chart_fn.data.values = function (targetId) {\n var targets,\n values = null;\n if (targetId) {\n targets = this.data(targetId);\n values = targets[0] ? targets[0].values.map(function (d) {\n return d.value;\n }) : null;\n }\n return values;\n};\nc3_chart_fn.data.names = function (names) {\n this.internal.clearLegendItemTextBoxCache();\n return this.internal.updateDataAttributes('names', names);\n};\nc3_chart_fn.data.colors = function (colors) {\n return this.internal.updateDataAttributes('colors', colors);\n};\nc3_chart_fn.data.axes = function (axes) {\n return this.internal.updateDataAttributes('axes', axes);\n};\n\nc3_chart_fn.flow = function (args) {\n var $$ = this.internal,\n targets,\n data,\n notfoundIds = [],\n orgDataCount = $$.getMaxDataCount(),\n dataCount,\n domain,\n baseTarget,\n baseValue,\n length = 0,\n tail = 0,\n diff,\n to;\n\n if (args.json) {\n data = $$.convertJsonToData(args.json, args.keys);\n } else if (args.rows) {\n data = $$.convertRowsToData(args.rows);\n } else if (args.columns) {\n data = $$.convertColumnsToData(args.columns);\n } else {\n return;\n }\n targets = $$.convertDataToTargets(data, true);\n\n // Update/Add data\n $$.data.targets.forEach(function (t) {\n var found = false,\n i,\n j;\n for (i = 0; i < targets.length; i++) {\n if (t.id === targets[i].id) {\n found = true;\n\n if (t.values[t.values.length - 1]) {\n tail = t.values[t.values.length - 1].index + 1;\n }\n length = targets[i].values.length;\n\n for (j = 0; j < length; j++) {\n targets[i].values[j].index = tail + j;\n if (!$$.isTimeSeries()) {\n targets[i].values[j].x = tail + j;\n }\n }\n t.values = t.values.concat(targets[i].values);\n\n targets.splice(i, 1);\n break;\n }\n }\n if (!found) {\n notfoundIds.push(t.id);\n }\n });\n\n // Append null for not found targets\n $$.data.targets.forEach(function (t) {\n var i, j;\n for (i = 0; i < notfoundIds.length; i++) {\n if (t.id === notfoundIds[i]) {\n tail = t.values[t.values.length - 1].index + 1;\n for (j = 0; j < length; j++) {\n t.values.push({\n id: t.id,\n index: tail + j,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j,\n value: null\n });\n }\n }\n }\n });\n\n // Generate null values for new target\n if ($$.data.targets.length) {\n targets.forEach(function (t) {\n var i,\n missing = [];\n for (i = $$.data.targets[0].values[0].index; i < tail; i++) {\n missing.push({\n id: t.id,\n index: i,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i,\n value: null\n });\n }\n t.values.forEach(function (v) {\n v.index += tail;\n if (!$$.isTimeSeries()) {\n v.x += tail;\n }\n });\n t.values = missing.concat(t.values);\n });\n }\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n\n // check data count because behavior needs to change when it's only one\n dataCount = $$.getMaxDataCount();\n baseTarget = $$.data.targets[0];\n baseValue = baseTarget.values[0];\n\n // Update length to flow if needed\n if (isDefined(args.to)) {\n length = 0;\n to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to;\n baseTarget.values.forEach(function (v) {\n if (v.x < to) {\n length++;\n }\n });\n } else if (isDefined(args.length)) {\n length = args.length;\n }\n\n // If only one data, update the domain to flow from left edge of the chart\n if (!orgDataCount) {\n if ($$.isTimeSeries()) {\n if (baseTarget.values.length > 1) {\n diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x;\n } else {\n diff = baseValue.x - $$.getXDomain($$.data.targets)[0];\n }\n } else {\n diff = 1;\n }\n domain = [baseValue.x - diff, baseValue.x];\n $$.updateXDomain(null, true, true, false, domain);\n } else if (orgDataCount === 1) {\n if ($$.isTimeSeries()) {\n diff = (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2;\n domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)];\n $$.updateXDomain(null, true, true, false, domain);\n }\n }\n\n // Set targets\n $$.updateTargets($$.data.targets);\n\n // Redraw with new targets\n $$.redraw({\n flow: {\n index: baseValue.index,\n length: length,\n duration: isValue(args.duration) ? args.duration : $$.config.transition_duration,\n done: args.done,\n orgDataCount: orgDataCount\n },\n withLegend: true,\n withTransition: orgDataCount > 1,\n withTrimXDomain: false,\n withUpdateXAxis: true\n });\n};\n\nc3_chart_internal_fn.generateFlow = function (args) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n\n return function () {\n var targets = args.targets,\n flow = args.flow,\n drawBar = args.drawBar,\n drawLine = args.drawLine,\n drawArea = args.drawArea,\n cx = args.cx,\n cy = args.cy,\n xv = args.xv,\n xForText = args.xForText,\n yForText = args.yForText,\n duration = args.duration;\n\n var translateX,\n scaleX = 1,\n transform,\n flowIndex = flow.index,\n flowLength = flow.length,\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex),\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength),\n orgDomain = $$.x.domain(),\n domain,\n durationForFlow = flow.duration || duration,\n done = flow.done || function () {},\n wait = $$.generateWait();\n\n var xgrid = $$.xgrid || d3.selectAll([]),\n xgridLines = $$.xgridLines || d3.selectAll([]),\n mainRegion = $$.mainRegion || d3.selectAll([]),\n mainText = $$.mainText || d3.selectAll([]),\n mainBar = $$.mainBar || d3.selectAll([]),\n mainLine = $$.mainLine || d3.selectAll([]),\n mainArea = $$.mainArea || d3.selectAll([]),\n mainCircle = $$.mainCircle || d3.selectAll([]);\n\n // set flag\n $$.flowing = true;\n\n // remove head data after rendered\n $$.data.targets.forEach(function (d) {\n d.values.splice(0, flowLength);\n });\n\n // update x domain to generate axis elements for flow\n domain = $$.updateXDomain(targets, true, true);\n // update elements related to x scale\n if ($$.updateXGrid) {\n $$.updateXGrid(true);\n }\n\n // generate transform to flow\n if (!flow.orgDataCount) {\n // if empty\n if ($$.data.targets[0].values.length !== 1) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0);\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1);\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n } else {\n translateX = diffDomain(domain) / 2;\n }\n }\n } else if (flow.orgDataCount === 1 || (flowStart && flowStart.x) === (flowEnd && flowEnd.x)) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n }\n }\n scaleX = diffDomain(orgDomain) / diffDomain(domain);\n transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)';\n\n $$.hideXGridFocus();\n\n d3.transition().ease('linear').duration(durationForFlow).each(function () {\n wait.add($$.axes.x.transition().call($$.xAxis));\n wait.add(mainBar.transition().attr('transform', transform));\n wait.add(mainLine.transition().attr('transform', transform));\n wait.add(mainArea.transition().attr('transform', transform));\n wait.add(mainCircle.transition().attr('transform', transform));\n wait.add(mainText.transition().attr('transform', transform));\n wait.add(mainRegion.filter($$.isRegionOnX).transition().attr('transform', transform));\n wait.add(xgrid.transition().attr('transform', transform));\n wait.add(xgridLines.transition().attr('transform', transform));\n }).call(wait, function () {\n var i,\n shapes = [],\n texts = [],\n eventRects = [];\n\n // remove flowed elements\n if (flowLength) {\n for (i = 0; i < flowLength; i++) {\n shapes.push('.' + CLASS.shape + '-' + (flowIndex + i));\n texts.push('.' + CLASS.text + '-' + (flowIndex + i));\n eventRects.push('.' + CLASS.eventRect + '-' + (flowIndex + i));\n }\n $$.svg.selectAll('.' + CLASS.shapes).selectAll(shapes).remove();\n $$.svg.selectAll('.' + CLASS.texts).selectAll(texts).remove();\n $$.svg.selectAll('.' + CLASS.eventRects).selectAll(eventRects).remove();\n $$.svg.select('.' + CLASS.xgrid).remove();\n }\n\n // draw again for removing flowed elements and reverting attr\n xgrid.attr('transform', null).attr($$.xgridAttr);\n xgridLines.attr('transform', null);\n xgridLines.select('line').attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv);\n xgridLines.select('text').attr(\"x\", config.axis_rotated ? $$.width : 0).attr(\"y\", xv);\n mainBar.attr('transform', null).attr(\"d\", drawBar);\n mainLine.attr('transform', null).attr(\"d\", drawLine);\n mainArea.attr('transform', null).attr(\"d\", drawArea);\n mainCircle.attr('transform', null).attr(\"cx\", cx).attr(\"cy\", cy);\n mainText.attr('transform', null).attr('x', xForText).attr('y', yForText).style('fill-opacity', $$.opacityForText.bind($$));\n mainRegion.attr('transform', null);\n mainRegion.select('rect').filter($$.isRegionOnX).attr(\"x\", $$.regionX.bind($$)).attr(\"width\", $$.regionWidth.bind($$));\n\n if (config.interaction_enabled) {\n $$.redrawEventRect();\n }\n\n // callback for end of flow\n done();\n\n $$.flowing = false;\n });\n };\n};\n\nc3_chart_fn.focus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), this.revert();\n this.defocus();\n candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);\n if ($$.hasArcType()) {\n $$.expandArc(targetIds);\n }\n $$.toggleFocusLegend(targetIds, true);\n\n $$.focusedTargetIds = targetIds;\n $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n};\n\nc3_chart_fn.defocus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n $$.toggleFocusLegend(targetIds, false);\n\n $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n $$.defocusedTargetIds = targetIds;\n};\n\nc3_chart_fn.revert = function (targetIds) {\n var $$ = this.internal,\n candidates;\n\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets\n\n candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n if ($$.config.legend_show) {\n $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));\n $$.legend.selectAll($$.selectorLegends(targetIds)).filter(function () {\n return $$.d3.select(this).classed(CLASS.legendItemFocused);\n }).classed(CLASS.legendItemFocused, false);\n }\n\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n};\n\nc3_chart_fn.xgrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n if (!grids) {\n return config.grid_x_lines;\n }\n config.grid_x_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_x_lines;\n};\nc3_chart_fn.xgrids.add = function (grids) {\n var $$ = this.internal;\n return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : []));\n};\nc3_chart_fn.xgrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, true);\n};\n\nc3_chart_fn.ygrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n if (!grids) {\n return config.grid_y_lines;\n }\n config.grid_y_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_y_lines;\n};\nc3_chart_fn.ygrids.add = function (grids) {\n var $$ = this.internal;\n return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : []));\n};\nc3_chart_fn.ygrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, false);\n};\n\nc3_chart_fn.groups = function (groups) {\n var $$ = this.internal,\n config = $$.config;\n if (isUndefined(groups)) {\n return config.data_groups;\n }\n config.data_groups = groups;\n $$.redraw();\n return config.data_groups;\n};\n\nc3_chart_fn.legend = function () {};\nc3_chart_fn.legend.show = function (targetIds) {\n var $$ = this.internal;\n $$.showLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({ withLegend: true });\n};\nc3_chart_fn.legend.hide = function (targetIds) {\n var $$ = this.internal;\n $$.hideLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({ withLegend: true });\n};\n\nc3_chart_fn.load = function (args) {\n var $$ = this.internal,\n config = $$.config;\n // update xs if specified\n if (args.xs) {\n $$.addXs(args.xs);\n }\n // update names if exists\n if ('names' in args) {\n c3_chart_fn.data.names.bind(this)(args.names);\n }\n // update classes if exists\n if ('classes' in args) {\n Object.keys(args.classes).forEach(function (id) {\n config.data_classes[id] = args.classes[id];\n });\n }\n // update categories if exists\n if ('categories' in args && $$.isCategorized()) {\n config.axis_x_categories = args.categories;\n }\n // update axes if exists\n if ('axes' in args) {\n Object.keys(args.axes).forEach(function (id) {\n config.data_axes[id] = args.axes[id];\n });\n }\n // update colors if exists\n if ('colors' in args) {\n Object.keys(args.colors).forEach(function (id) {\n config.data_colors[id] = args.colors[id];\n });\n }\n // use cache if exists\n if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {\n $$.load($$.getCaches(args.cacheIds), args.done);\n return;\n }\n // unload if needed\n if ('unload' in args) {\n // TODO: do not unload if target will load (included in url/rows/columns)\n $$.unload($$.mapToTargetIds(typeof args.unload === 'boolean' && args.unload ? null : args.unload), function () {\n $$.loadFromArgs(args);\n });\n } else {\n $$.loadFromArgs(args);\n }\n};\n\nc3_chart_fn.unload = function (args) {\n var $$ = this.internal;\n args = args || {};\n if (args instanceof Array) {\n args = { ids: args };\n } else if (typeof args === 'string') {\n args = { ids: [args] };\n }\n $$.unload($$.mapToTargetIds(args.ids), function () {\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n if (args.done) {\n args.done();\n }\n });\n};\n\nc3_chart_fn.regions = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n if (!regions) {\n return config.regions;\n }\n config.regions = regions;\n $$.redrawWithoutRescale();\n return config.regions;\n};\nc3_chart_fn.regions.add = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n if (!regions) {\n return config.regions;\n }\n config.regions = config.regions.concat(regions);\n $$.redrawWithoutRescale();\n return config.regions;\n};\nc3_chart_fn.regions.remove = function (options) {\n var $$ = this.internal,\n config = $$.config,\n duration,\n classes,\n regions;\n\n options = options || {};\n duration = $$.getOption(options, \"duration\", config.transition_duration);\n classes = $$.getOption(options, \"classes\", [CLASS.region]);\n\n regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) {\n return '.' + c;\n }));\n (duration ? regions.transition().duration(duration) : regions).style('opacity', 0).remove();\n\n config.regions = config.regions.filter(function (region) {\n var found = false;\n if (!region['class']) {\n return true;\n }\n region['class'].split(' ').forEach(function (c) {\n if (classes.indexOf(c) >= 0) {\n found = true;\n }\n });\n return !found;\n });\n\n return config.regions;\n};\n\nc3_chart_fn.selected = function (targetId) {\n var $$ = this.internal,\n d3 = $$.d3;\n return d3.merge($$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape).filter(function () {\n return d3.select(this).classed(CLASS.SELECTED);\n }).map(function (d) {\n return d.map(function (d) {\n var data = d.__data__;return data.data ? data.data : data;\n });\n }));\n};\nc3_chart_fn.select = function (ids, indices, resetOther) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n if (!config.data_selection_enabled) {\n return;\n }\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED);\n // line/area selection not supported yet\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d) && !isSelected) {\n toggle(true, shape.classed(CLASS.SELECTED, true), d, i);\n }\n } else if (isDefined(resetOther) && resetOther) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n });\n};\nc3_chart_fn.unselect = function (ids, indices) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n if (!config.data_selection_enabled) {\n return;\n }\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED);\n // line/area selection not supported yet\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d)) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n }\n });\n};\n\nc3_chart_fn.show = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n\n $$.removeHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n targets.transition().style('opacity', 1, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 1);\n });\n\n if (options.withLegend) {\n $$.showLegend(targetIds);\n }\n\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n};\n\nc3_chart_fn.hide = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n\n $$.addHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n targets.transition().style('opacity', 0, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 0);\n });\n\n if (options.withLegend) {\n $$.hideLegend(targetIds);\n }\n\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n};\n\nc3_chart_fn.toggle = function (targetIds, options) {\n var that = this,\n $$ = this.internal;\n $$.mapToTargetIds(targetIds).forEach(function (targetId) {\n $$.isTargetToShow(targetId) ? that.hide(targetId, options) : that.show(targetId, options);\n });\n};\n\nc3_chart_fn.tooltip = function () {};\nc3_chart_fn.tooltip.show = function (args) {\n var $$ = this.internal,\n index,\n mouse;\n\n // determine mouse position on the chart\n if (args.mouse) {\n mouse = args.mouse;\n }\n\n // determine focus data\n if (args.data) {\n if ($$.isMultipleX()) {\n // if multiple xs, target point will be determined by mouse\n mouse = [$$.x(args.data.x), $$.getYScale(args.data.id)(args.data.value)];\n index = null;\n } else {\n // TODO: when tooltip_grouped = false\n index = isValue(args.data.index) ? args.data.index : $$.getIndexByX(args.data.x);\n }\n } else if (typeof args.x !== 'undefined') {\n index = $$.getIndexByX(args.x);\n } else if (typeof args.index !== 'undefined') {\n index = args.index;\n }\n\n // emulate mouse events to show\n $$.dispatchEvent('mouseover', index, mouse);\n $$.dispatchEvent('mousemove', index, mouse);\n\n $$.config.tooltip_onshow.call($$, args.data);\n};\nc3_chart_fn.tooltip.hide = function () {\n // TODO: get target data by checking the state of focus\n this.internal.dispatchEvent('mouseout', 0);\n\n this.internal.config.tooltip_onhide.call(this);\n};\n\nc3_chart_fn.transform = function (type, targetIds) {\n var $$ = this.internal,\n options = ['pie', 'donut'].indexOf(type) >= 0 ? { withTransform: true } : null;\n $$.transformTo(targetIds, type, options);\n};\n\nc3_chart_internal_fn.transformTo = function (targetIds, type, optionsForRedraw) {\n var $$ = this,\n withTransitionForAxis = !$$.hasArcType(),\n options = optionsForRedraw || { withTransitionForAxis: withTransitionForAxis };\n options.withTransitionForTransform = false;\n $$.transiting = false;\n $$.setTargetType(targetIds, type);\n $$.updateTargets($$.data.targets); // this is needed when transforming to arc\n $$.updateAndRedraw(options);\n};\n\nc3_chart_fn.x = function (x) {\n var $$ = this.internal;\n if (arguments.length) {\n $$.updateTargetX($$.data.targets, x);\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n }\n return $$.data.xs;\n};\nc3_chart_fn.xs = function (xs) {\n var $$ = this.internal;\n if (arguments.length) {\n $$.updateTargetXs($$.data.targets, xs);\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n }\n return $$.data.xs;\n};\n\nc3_chart_fn.zoom = function (domain) {\n var $$ = this.internal;\n if (domain) {\n if ($$.isTimeSeries()) {\n domain = domain.map(function (x) {\n return $$.parseDate(x);\n });\n }\n $$.brush.extent(domain);\n $$.redraw({ withUpdateXDomain: true, withY: $$.config.zoom_rescale });\n $$.config.zoom_onzoom.call(this, $$.x.orgDomain());\n }\n return $$.brush.extent();\n};\nc3_chart_fn.zoom.enable = function (enabled) {\n var $$ = this.internal;\n $$.config.zoom_enabled = enabled;\n $$.updateAndRedraw();\n};\nc3_chart_fn.unzoom = function () {\n var $$ = this.internal;\n $$.brush.clear().update();\n $$.redraw({ withUpdateXDomain: true });\n};\n\nc3_chart_fn.zoom.max = function (max) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n if (max === 0 || max) {\n config.zoom_x_max = d3.max([$$.orgXDomain[1], max]);\n } else {\n return config.zoom_x_max;\n }\n};\n\nc3_chart_fn.zoom.min = function (min) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n if (min === 0 || min) {\n config.zoom_x_min = d3.min([$$.orgXDomain[0], min]);\n } else {\n return config.zoom_x_min;\n }\n};\n\nc3_chart_fn.zoom.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.domain.max(range.max);\n }\n if (isDefined(range.min)) {\n this.domain.min(range.min);\n }\n } else {\n return {\n max: this.domain.max(),\n min: this.domain.min()\n };\n }\n};\n\nc3_chart_internal_fn.initPie = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.pie = d3.layout.pie().value(function (d) {\n return d.values.reduce(function (a, b) {\n return a + b.value;\n }, 0);\n });\n $$.pie.sort($$.getOrderFunction() || null);\n};\n\nc3_chart_internal_fn.updateRadius = function () {\n var $$ = this,\n config = $$.config,\n w = config.gauge_width || config.donut_width;\n $$.radiusExpanded = Math.min($$.arcWidth, $$.arcHeight) / 2;\n $$.radius = $$.radiusExpanded * 0.95;\n $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6;\n $$.innerRadius = $$.hasType('donut') || $$.hasType('gauge') ? $$.radius * $$.innerRadiusRatio : 0;\n};\n\nc3_chart_internal_fn.updateArc = function () {\n var $$ = this;\n $$.svgArc = $$.getSvgArc();\n $$.svgArcExpanded = $$.getSvgArcExpanded();\n $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98);\n};\n\nc3_chart_internal_fn.updateAngle = function (d) {\n var $$ = this,\n config = $$.config,\n found = false,\n index = 0,\n gMin,\n gMax,\n gTic,\n gValue;\n\n if (!config) {\n return null;\n }\n\n $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) {\n if (!found && t.data.id === d.data.id) {\n found = true;\n d = t;\n d.index = index;\n }\n index++;\n });\n if (isNaN(d.startAngle)) {\n d.startAngle = 0;\n }\n if (isNaN(d.endAngle)) {\n d.endAngle = d.startAngle;\n }\n if ($$.isGaugeType(d.data)) {\n gMin = config.gauge_min;\n gMax = config.gauge_max;\n gTic = Math.PI * (config.gauge_fullCircle ? 2 : 1) / (gMax - gMin);\n gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : gMax - gMin;\n d.startAngle = config.gauge_startingAngle;\n d.endAngle = d.startAngle + gTic * gValue;\n }\n return found ? d : null;\n};\n\nc3_chart_internal_fn.getSvgArc = function () {\n var $$ = this,\n arc = $$.d3.svg.arc().outerRadius($$.radius).innerRadius($$.innerRadius),\n newArc = function newArc(d, withoutUpdate) {\n var updated;\n if (withoutUpdate) {\n return arc(d);\n } // for interpolate\n updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n };\n // TODO: extends all function\n newArc.centroid = arc.centroid;\n return newArc;\n};\n\nc3_chart_internal_fn.getSvgArcExpanded = function (rate) {\n var $$ = this,\n arc = $$.d3.svg.arc().outerRadius($$.radiusExpanded * (rate ? rate : 1)).innerRadius($$.innerRadius);\n return function (d) {\n var updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n };\n};\n\nc3_chart_internal_fn.getArc = function (d, withoutUpdate, force) {\n return force || this.isArcType(d.data) ? this.svgArc(d, withoutUpdate) : \"M 0 0\";\n};\n\nc3_chart_internal_fn.transformForArcLabel = function (d) {\n var $$ = this,\n config = $$.config,\n updated = $$.updateAngle(d),\n c,\n x,\n y,\n h,\n ratio,\n translate = \"\";\n if (updated && !$$.hasType('gauge')) {\n c = this.svgArc.centroid(updated);\n x = isNaN(c[0]) ? 0 : c[0];\n y = isNaN(c[1]) ? 0 : c[1];\n h = Math.sqrt(x * x + y * y);\n if ($$.hasType('donut') && config.donut_label_ratio) {\n ratio = isFunction(config.donut_label_ratio) ? config.donut_label_ratio(d, $$.radius, h) : config.donut_label_ratio;\n } else if ($$.hasType('pie') && config.pie_label_ratio) {\n ratio = isFunction(config.pie_label_ratio) ? config.pie_label_ratio(d, $$.radius, h) : config.pie_label_ratio;\n } else {\n ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0;\n }\n translate = \"translate(\" + x * ratio + ',' + y * ratio + \")\";\n }\n return translate;\n};\n\nc3_chart_internal_fn.getArcRatio = function (d) {\n var $$ = this,\n config = $$.config,\n whole = Math.PI * ($$.hasType('gauge') && !config.gauge_fullCircle ? 1 : 2);\n return d ? (d.endAngle - d.startAngle) / whole : null;\n};\n\nc3_chart_internal_fn.convertToArcData = function (d) {\n return this.addName({\n id: d.data.id,\n value: d.value,\n ratio: this.getArcRatio(d),\n index: d.index\n });\n};\n\nc3_chart_internal_fn.textForArcLabel = function (d) {\n var $$ = this,\n updated,\n value,\n ratio,\n id,\n format;\n if (!$$.shouldShowArcLabel()) {\n return \"\";\n }\n updated = $$.updateAngle(d);\n value = updated ? updated.value : null;\n ratio = $$.getArcRatio(updated);\n id = d.data.id;\n if (!$$.hasType('gauge') && !$$.meetsArcLabelThreshold(ratio)) {\n return \"\";\n }\n format = $$.getArcLabelFormat();\n return format ? format(value, ratio, id) : $$.defaultArcValueFormat(value, ratio);\n};\n\nc3_chart_internal_fn.textForGaugeMinMax = function (value, isMax) {\n var $$ = this,\n format = $$.getGaugeLabelExtents();\n\n return format ? format(value, isMax) : value;\n};\n\nc3_chart_internal_fn.expandArc = function (targetIds) {\n var $$ = this,\n interval;\n\n // MEMO: avoid to cancel transition\n if ($$.transiting) {\n interval = window.setInterval(function () {\n if (!$$.transiting) {\n window.clearInterval(interval);\n if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) {\n $$.expandArc(targetIds);\n }\n }\n }, 10);\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) {\n if (!$$.shouldExpand(d.data.id)) {\n return;\n }\n $$.d3.select(this).selectAll('path').transition().duration($$.expandDuration(d.data.id)).attr(\"d\", $$.svgArcExpanded).transition().duration($$.expandDuration(d.data.id) * 2).attr(\"d\", $$.svgArcExpandedSub).each(function (d) {\n if ($$.isDonutType(d.data)) {\n // callback here\n }\n });\n });\n};\n\nc3_chart_internal_fn.unexpandArc = function (targetIds) {\n var $$ = this;\n\n if ($$.transiting) {\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path').transition().duration(function (d) {\n return $$.expandDuration(d.data.id);\n }).attr(\"d\", $$.svgArc);\n $$.svg.selectAll('.' + CLASS.arc);\n};\n\nc3_chart_internal_fn.expandDuration = function (id) {\n var $$ = this,\n config = $$.config;\n\n if ($$.isDonutType(id)) {\n return config.donut_expand_duration;\n } else if ($$.isGaugeType(id)) {\n return config.gauge_expand_duration;\n } else if ($$.isPieType(id)) {\n return config.pie_expand_duration;\n } else {\n return 50;\n }\n};\n\nc3_chart_internal_fn.shouldExpand = function (id) {\n var $$ = this,\n config = $$.config;\n return $$.isDonutType(id) && config.donut_expand || $$.isGaugeType(id) && config.gauge_expand || $$.isPieType(id) && config.pie_expand;\n};\n\nc3_chart_internal_fn.shouldShowArcLabel = function () {\n var $$ = this,\n config = $$.config,\n shouldShow = true;\n if ($$.hasType('donut')) {\n shouldShow = config.donut_label_show;\n } else if ($$.hasType('pie')) {\n shouldShow = config.pie_label_show;\n }\n // when gauge, always true\n return shouldShow;\n};\n\nc3_chart_internal_fn.meetsArcLabelThreshold = function (ratio) {\n var $$ = this,\n config = $$.config,\n threshold = $$.hasType('donut') ? config.donut_label_threshold : config.pie_label_threshold;\n return ratio >= threshold;\n};\n\nc3_chart_internal_fn.getArcLabelFormat = function () {\n var $$ = this,\n config = $$.config,\n format = config.pie_label_format;\n if ($$.hasType('gauge')) {\n format = config.gauge_label_format;\n } else if ($$.hasType('donut')) {\n format = config.donut_label_format;\n }\n return format;\n};\n\nc3_chart_internal_fn.getGaugeLabelExtents = function () {\n var $$ = this,\n config = $$.config;\n return config.gauge_label_extents;\n};\n\nc3_chart_internal_fn.getArcTitle = function () {\n var $$ = this;\n return $$.hasType('donut') ? $$.config.donut_title : \"\";\n};\n\nc3_chart_internal_fn.updateTargetsForArc = function (targets) {\n var $$ = this,\n main = $$.main,\n mainPieUpdate,\n mainPieEnter,\n classChartArc = $$.classChartArc.bind($$),\n classArcs = $$.classArcs.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainPieUpdate = main.select('.' + CLASS.chartArcs).selectAll('.' + CLASS.chartArc).data($$.pie(targets)).attr(\"class\", function (d) {\n return classChartArc(d) + classFocus(d.data);\n });\n mainPieEnter = mainPieUpdate.enter().append(\"g\").attr(\"class\", classChartArc);\n mainPieEnter.append('g').attr('class', classArcs);\n mainPieEnter.append(\"text\").attr(\"dy\", $$.hasType('gauge') ? \"-.1em\" : \".35em\").style(\"opacity\", 0).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n // MEMO: can not keep same color..., but not bad to update color in redraw\n //mainPieUpdate.exit().remove();\n};\n\nc3_chart_internal_fn.initArc = function () {\n var $$ = this;\n $$.arcs = $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n $$.arcs.append('text').attr('class', CLASS.chartArcsTitle).style(\"text-anchor\", \"middle\").text($$.getArcTitle());\n};\n\nc3_chart_internal_fn.redrawArc = function (duration, durationForExit, withTransform) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n main = $$.main,\n mainArc;\n mainArc = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc).data($$.arcData.bind($$));\n mainArc.enter().append('path').attr(\"class\", $$.classArc.bind($$)).style(\"fill\", function (d) {\n return $$.color(d.data);\n }).style(\"cursor\", function (d) {\n return config.interaction_enabled && config.data_selection_isselectable(d) ? \"pointer\" : null;\n }).each(function (d) {\n if ($$.isGaugeType(d.data)) {\n d.startAngle = d.endAngle = config.gauge_startingAngle;\n }\n this._current = d;\n });\n mainArc.attr(\"transform\", function (d) {\n return !$$.isGaugeType(d.data) && withTransform ? \"scale(0)\" : \"\";\n }).on('mouseover', config.interaction_enabled ? function (d) {\n var updated, arcData;\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n updated = $$.updateAngle(d);\n if (updated) {\n arcData = $$.convertToArcData(updated);\n // transitions\n $$.expandArc(updated.data.id);\n $$.api.focus(updated.data.id);\n $$.toggleFocusLegend(updated.data.id, true);\n $$.config.data_onmouseover(arcData, this);\n }\n } : null).on('mousemove', config.interaction_enabled ? function (d) {\n var updated = $$.updateAngle(d),\n arcData,\n selectedData;\n if (updated) {\n arcData = $$.convertToArcData(updated), selectedData = [arcData];\n $$.showTooltip(selectedData, this);\n }\n } : null).on('mouseout', config.interaction_enabled ? function (d) {\n var updated, arcData;\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n updated = $$.updateAngle(d);\n if (updated) {\n arcData = $$.convertToArcData(updated);\n // transitions\n $$.unexpandArc(updated.data.id);\n $$.api.revert();\n $$.revertLegend();\n $$.hideTooltip();\n $$.config.data_onmouseout(arcData, this);\n }\n } : null).on('click', config.interaction_enabled ? function (d, i) {\n var updated = $$.updateAngle(d),\n arcData;\n if (updated) {\n arcData = $$.convertToArcData(updated);\n if ($$.toggleShape) {\n $$.toggleShape(this, arcData, i);\n }\n $$.config.data_onclick.call($$.api, arcData, this);\n }\n } : null).each(function () {\n $$.transiting = true;\n }).transition().duration(duration).attrTween(\"d\", function (d) {\n var updated = $$.updateAngle(d),\n interpolate;\n if (!updated) {\n return function () {\n return \"M 0 0\";\n };\n }\n // if (this._current === d) {\n // this._current = {\n // startAngle: Math.PI*2,\n // endAngle: Math.PI*2,\n // };\n // }\n if (isNaN(this._current.startAngle)) {\n this._current.startAngle = 0;\n }\n if (isNaN(this._current.endAngle)) {\n this._current.endAngle = this._current.startAngle;\n }\n interpolate = d3.interpolate(this._current, updated);\n this._current = interpolate(0);\n return function (t) {\n var interpolated = interpolate(t);\n interpolated.data = d.data; // data.id will be updated by interporator\n return $$.getArc(interpolated, true);\n };\n }).attr(\"transform\", withTransform ? \"scale(1)\" : \"\").style(\"fill\", function (d) {\n return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data.id);\n } // Where gauge reading color would receive customization.\n ).call($$.endall, function () {\n $$.transiting = false;\n });\n mainArc.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n main.selectAll('.' + CLASS.chartArc).select('text').style(\"opacity\", 0).attr('class', function (d) {\n return $$.isGaugeType(d.data) ? CLASS.gaugeValue : '';\n }).text($$.textForArcLabel.bind($$)).attr(\"transform\", $$.transformForArcLabel.bind($$)).style('font-size', function (d) {\n return $$.isGaugeType(d.data) ? Math.round($$.radius / 5) + 'px' : '';\n }).transition().duration(duration).style(\"opacity\", function (d) {\n return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0;\n });\n main.select('.' + CLASS.chartArcsTitle).style(\"opacity\", $$.hasType('donut') || $$.hasType('gauge') ? 1 : 0);\n\n if ($$.hasType('gauge')) {\n $$.arcs.select('.' + CLASS.chartArcsBackground).attr(\"d\", function () {\n var d = {\n data: [{ value: config.gauge_max }],\n startAngle: config.gauge_startingAngle,\n endAngle: -1 * config.gauge_startingAngle\n };\n return $$.getArc(d, true, true);\n });\n $$.arcs.select('.' + CLASS.chartArcsGaugeUnit).attr(\"dy\", \".75em\").text(config.gauge_label_show ? config.gauge_units : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMin).attr(\"dx\", -1 * ($$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2)) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_min, false) : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMax).attr(\"dx\", $$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_max, true) : '');\n }\n};\nc3_chart_internal_fn.initGauge = function () {\n var arcs = this.arcs;\n if (this.hasType('gauge')) {\n arcs.append('path').attr(\"class\", CLASS.chartArcsBackground);\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeUnit).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMin).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMax).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n }\n};\nc3_chart_internal_fn.getGaugeLabelHeight = function () {\n return this.config.gauge_label_show ? 20 : 0;\n};\n\nc3_chart_internal_fn.hasCaches = function (ids) {\n for (var i = 0; i < ids.length; i++) {\n if (!(ids[i] in this.cache)) {\n return false;\n }\n }\n return true;\n};\nc3_chart_internal_fn.addCache = function (id, target) {\n this.cache[id] = this.cloneTarget(target);\n};\nc3_chart_internal_fn.getCaches = function (ids) {\n var targets = [],\n i;\n for (i = 0; i < ids.length; i++) {\n if (ids[i] in this.cache) {\n targets.push(this.cloneTarget(this.cache[ids[i]]));\n }\n }\n return targets;\n};\n\nc3_chart_internal_fn.categoryName = function (i) {\n var config = this.config;\n return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i;\n};\n\nc3_chart_internal_fn.generateClass = function (prefix, targetId) {\n return \" \" + prefix + \" \" + prefix + this.getTargetSelectorSuffix(targetId);\n};\nc3_chart_internal_fn.classText = function (d) {\n return this.generateClass(CLASS.text, d.index);\n};\nc3_chart_internal_fn.classTexts = function (d) {\n return this.generateClass(CLASS.texts, d.id);\n};\nc3_chart_internal_fn.classShape = function (d) {\n return this.generateClass(CLASS.shape, d.index);\n};\nc3_chart_internal_fn.classShapes = function (d) {\n return this.generateClass(CLASS.shapes, d.id);\n};\nc3_chart_internal_fn.classLine = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.line, d.id);\n};\nc3_chart_internal_fn.classLines = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.lines, d.id);\n};\nc3_chart_internal_fn.classCircle = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.circle, d.index);\n};\nc3_chart_internal_fn.classCircles = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.circles, d.id);\n};\nc3_chart_internal_fn.classBar = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.bar, d.index);\n};\nc3_chart_internal_fn.classBars = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.bars, d.id);\n};\nc3_chart_internal_fn.classArc = function (d) {\n return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id);\n};\nc3_chart_internal_fn.classArcs = function (d) {\n return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id);\n};\nc3_chart_internal_fn.classArea = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.area, d.id);\n};\nc3_chart_internal_fn.classAreas = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.areas, d.id);\n};\nc3_chart_internal_fn.classRegion = function (d, i) {\n return this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : '');\n};\nc3_chart_internal_fn.classEvent = function (d) {\n return this.generateClass(CLASS.eventRect, d.index);\n};\nc3_chart_internal_fn.classTarget = function (id) {\n var $$ = this;\n var additionalClassSuffix = $$.config.data_classes[id],\n additionalClass = '';\n if (additionalClassSuffix) {\n additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix;\n }\n return $$.generateClass(CLASS.target, id) + additionalClass;\n};\nc3_chart_internal_fn.classFocus = function (d) {\n return this.classFocused(d) + this.classDefocused(d);\n};\nc3_chart_internal_fn.classFocused = function (d) {\n return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : '');\n};\nc3_chart_internal_fn.classDefocused = function (d) {\n return ' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : '');\n};\nc3_chart_internal_fn.classChartText = function (d) {\n return CLASS.chartText + this.classTarget(d.id);\n};\nc3_chart_internal_fn.classChartLine = function (d) {\n return CLASS.chartLine + this.classTarget(d.id);\n};\nc3_chart_internal_fn.classChartBar = function (d) {\n return CLASS.chartBar + this.classTarget(d.id);\n};\nc3_chart_internal_fn.classChartArc = function (d) {\n return CLASS.chartArc + this.classTarget(d.data.id);\n};\nc3_chart_internal_fn.getTargetSelectorSuffix = function (targetId) {\n return targetId || targetId === 0 ? ('-' + targetId).replace(/[\\s?!@#$%^&*()_=+,.<>'\":;\\[\\]\\/|~`{}\\\\]/g, '-') : '';\n};\nc3_chart_internal_fn.selectorTarget = function (id, prefix) {\n return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);\n};\nc3_chart_internal_fn.selectorTargets = function (ids, prefix) {\n var $$ = this;\n ids = ids || [];\n return ids.length ? ids.map(function (id) {\n return $$.selectorTarget(id, prefix);\n }) : null;\n};\nc3_chart_internal_fn.selectorLegend = function (id) {\n return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id);\n};\nc3_chart_internal_fn.selectorLegends = function (ids) {\n var $$ = this;\n return ids && ids.length ? ids.map(function (id) {\n return $$.selectorLegend(id);\n }) : null;\n};\n\nc3_chart_internal_fn.getClipPath = function (id) {\n var isIE9 = window.navigator.appVersion.toLowerCase().indexOf(\"msie 9.\") >= 0;\n return \"url(\" + (isIE9 ? \"\" : document.URL.split('#')[0]) + \"#\" + id + \")\";\n};\nc3_chart_internal_fn.appendClip = function (parent, id) {\n return parent.append(\"clipPath\").attr(\"id\", id).append(\"rect\");\n};\nc3_chart_internal_fn.getAxisClipX = function (forHorizontal) {\n // axis line width + padding for left\n var left = Math.max(30, this.margin.left);\n return forHorizontal ? -(1 + left) : -(left - 1);\n};\nc3_chart_internal_fn.getAxisClipY = function (forHorizontal) {\n return forHorizontal ? -20 : -this.margin.top;\n};\nc3_chart_internal_fn.getXAxisClipX = function () {\n var $$ = this;\n return $$.getAxisClipX(!$$.config.axis_rotated);\n};\nc3_chart_internal_fn.getXAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY(!$$.config.axis_rotated);\n};\nc3_chart_internal_fn.getYAxisClipX = function () {\n var $$ = this;\n return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);\n};\nc3_chart_internal_fn.getYAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY($$.config.axis_rotated);\n};\nc3_chart_internal_fn.getAxisClipWidth = function (forHorizontal) {\n var $$ = this,\n left = Math.max(30, $$.margin.left),\n right = Math.max(30, $$.margin.right);\n // width + axis line width + padding for left/right\n return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20;\n};\nc3_chart_internal_fn.getAxisClipHeight = function (forHorizontal) {\n // less than 20 is not enough to show the axis label 'outer' without legend\n return (forHorizontal ? this.margin.bottom : this.margin.top + this.height) + 20;\n};\nc3_chart_internal_fn.getXAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth(!$$.config.axis_rotated);\n};\nc3_chart_internal_fn.getXAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight(!$$.config.axis_rotated);\n};\nc3_chart_internal_fn.getYAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0);\n};\nc3_chart_internal_fn.getYAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight($$.config.axis_rotated);\n};\n\nc3_chart_internal_fn.generateColor = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n colors = config.data_colors,\n pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.scale.category10().range(),\n callback = config.data_color,\n ids = [];\n\n return function (d) {\n var id = d.id || d.data && d.data.id || d,\n color;\n\n // if callback function is provided\n if (colors[id] instanceof Function) {\n color = colors[id](d);\n }\n // if specified, choose that color\n else if (colors[id]) {\n color = colors[id];\n }\n // if not specified, choose from pattern\n else {\n if (ids.indexOf(id) < 0) {\n ids.push(id);\n }\n color = pattern[ids.indexOf(id) % pattern.length];\n colors[id] = color;\n }\n return callback instanceof Function ? callback(color, d) : color;\n };\n};\nc3_chart_internal_fn.generateLevelColor = function () {\n var $$ = this,\n config = $$.config,\n colors = config.color_pattern,\n threshold = config.color_threshold,\n asValue = threshold.unit === 'value',\n values = threshold.values && threshold.values.length ? threshold.values : [],\n max = threshold.max || 100;\n return notEmpty(config.color_threshold) ? function (value) {\n var i,\n v,\n color = colors[colors.length - 1];\n for (i = 0; i < values.length; i++) {\n v = asValue ? value : value * 100 / max;\n if (v < values[i]) {\n color = colors[i];\n break;\n }\n }\n return color;\n } : null;\n};\n\nc3_chart_internal_fn.getDefaultConfig = function () {\n var config = {\n bindto: '#chart',\n svg_classname: undefined,\n size_width: undefined,\n size_height: undefined,\n padding_left: undefined,\n padding_right: undefined,\n padding_top: undefined,\n padding_bottom: undefined,\n resize_auto: true,\n zoom_enabled: false,\n zoom_extent: undefined,\n zoom_privileged: false,\n zoom_rescale: false,\n zoom_onzoom: function zoom_onzoom() {},\n zoom_onzoomstart: function zoom_onzoomstart() {},\n zoom_onzoomend: function zoom_onzoomend() {},\n zoom_x_min: undefined,\n zoom_x_max: undefined,\n interaction_brighten: true,\n interaction_enabled: true,\n onmouseover: function onmouseover() {},\n onmouseout: function onmouseout() {},\n onresize: function onresize() {},\n onresized: function onresized() {},\n oninit: function oninit() {},\n onrendered: function onrendered() {},\n transition_duration: 350,\n data_x: undefined,\n data_xs: {},\n data_xFormat: '%Y-%m-%d',\n data_xLocaltime: true,\n data_xSort: true,\n data_idConverter: function data_idConverter(id) {\n return id;\n },\n data_names: {},\n data_classes: {},\n data_groups: [],\n data_axes: {},\n data_type: undefined,\n data_types: {},\n data_labels: {},\n data_order: 'desc',\n data_regions: {},\n data_color: undefined,\n data_colors: {},\n data_hide: false,\n data_filter: undefined,\n data_selection_enabled: false,\n data_selection_grouped: false,\n data_selection_isselectable: function data_selection_isselectable() {\n return true;\n },\n data_selection_multiple: true,\n data_selection_draggable: false,\n data_onclick: function data_onclick() {},\n data_onmouseover: function data_onmouseover() {},\n data_onmouseout: function data_onmouseout() {},\n data_onselected: function data_onselected() {},\n data_onunselected: function data_onunselected() {},\n data_url: undefined,\n data_headers: undefined,\n data_json: undefined,\n data_rows: undefined,\n data_columns: undefined,\n data_mimeType: undefined,\n data_keys: undefined,\n // configuration for no plot-able data supplied.\n data_empty_label_text: \"\",\n // subchart\n subchart_show: false,\n subchart_size_height: 60,\n subchart_axis_x_show: true,\n subchart_onbrush: function subchart_onbrush() {},\n // color\n color_pattern: [],\n color_threshold: {},\n // legend\n legend_show: true,\n legend_hide: false,\n legend_position: 'bottom',\n legend_inset_anchor: 'top-left',\n legend_inset_x: 10,\n legend_inset_y: 0,\n legend_inset_step: undefined,\n legend_item_onclick: undefined,\n legend_item_onmouseover: undefined,\n legend_item_onmouseout: undefined,\n legend_equally: false,\n legend_padding: 0,\n legend_item_tile_width: 10,\n legend_item_tile_height: 10,\n // axis\n axis_rotated: false,\n axis_x_show: true,\n axis_x_type: 'indexed',\n axis_x_localtime: true,\n axis_x_categories: [],\n axis_x_tick_centered: false,\n axis_x_tick_format: undefined,\n axis_x_tick_culling: {},\n axis_x_tick_culling_max: 10,\n axis_x_tick_count: undefined,\n axis_x_tick_fit: true,\n axis_x_tick_values: null,\n axis_x_tick_rotate: 0,\n axis_x_tick_outer: true,\n axis_x_tick_multiline: true,\n axis_x_tick_width: null,\n axis_x_max: undefined,\n axis_x_min: undefined,\n axis_x_padding: {},\n axis_x_height: undefined,\n axis_x_extent: undefined,\n axis_x_label: {},\n axis_y_show: true,\n axis_y_type: undefined,\n axis_y_max: undefined,\n axis_y_min: undefined,\n axis_y_inverted: false,\n axis_y_center: undefined,\n axis_y_inner: undefined,\n axis_y_label: {},\n axis_y_tick_format: undefined,\n axis_y_tick_outer: true,\n axis_y_tick_values: null,\n axis_y_tick_rotate: 0,\n axis_y_tick_count: undefined,\n axis_y_tick_time_value: undefined,\n axis_y_tick_time_interval: undefined,\n axis_y_padding: {},\n axis_y_default: undefined,\n axis_y2_show: false,\n axis_y2_max: undefined,\n axis_y2_min: undefined,\n axis_y2_inverted: false,\n axis_y2_center: undefined,\n axis_y2_inner: undefined,\n axis_y2_label: {},\n axis_y2_tick_format: undefined,\n axis_y2_tick_outer: true,\n axis_y2_tick_values: null,\n axis_y2_tick_count: undefined,\n axis_y2_padding: {},\n axis_y2_default: undefined,\n // grid\n grid_x_show: false,\n grid_x_type: 'tick',\n grid_x_lines: [],\n grid_y_show: false,\n // not used\n // grid_y_type: 'tick',\n grid_y_lines: [],\n grid_y_ticks: 10,\n grid_focus_show: true,\n grid_lines_front: true,\n // point - point of each data\n point_show: true,\n point_r: 2.5,\n point_sensitivity: 10,\n point_focus_expand_enabled: true,\n point_focus_expand_r: undefined,\n point_select_r: undefined,\n // line\n line_connectNull: false,\n line_step_type: 'step',\n // bar\n bar_width: undefined,\n bar_width_ratio: 0.6,\n bar_width_max: undefined,\n bar_zerobased: true,\n bar_space: 0,\n // area\n area_zerobased: true,\n area_above: false,\n // pie\n pie_label_show: true,\n pie_label_format: undefined,\n pie_label_threshold: 0.05,\n pie_label_ratio: undefined,\n pie_expand: {},\n pie_expand_duration: 50,\n // gauge\n gauge_fullCircle: false,\n gauge_label_show: true,\n gauge_label_format: undefined,\n gauge_min: 0,\n gauge_max: 100,\n gauge_startingAngle: -1 * Math.PI / 2,\n gauge_label_extents: undefined,\n gauge_units: undefined,\n gauge_width: undefined,\n gauge_expand: {},\n gauge_expand_duration: 50,\n // donut\n donut_label_show: true,\n donut_label_format: undefined,\n donut_label_threshold: 0.05,\n donut_label_ratio: undefined,\n donut_width: undefined,\n donut_title: \"\",\n donut_expand: {},\n donut_expand_duration: 50,\n // spline\n spline_interpolation_type: 'cardinal',\n // region - region to change style\n regions: [],\n // tooltip - show when mouseover on each data\n tooltip_show: true,\n tooltip_grouped: true,\n tooltip_order: undefined,\n tooltip_format_title: undefined,\n tooltip_format_name: undefined,\n tooltip_format_value: undefined,\n tooltip_position: undefined,\n tooltip_contents: function tooltip_contents(d, defaultTitleFormat, defaultValueFormat, color) {\n return this.getTooltipContent ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color) : '';\n },\n tooltip_init_show: false,\n tooltip_init_x: 0,\n tooltip_init_position: { top: '0px', left: '50px' },\n tooltip_onshow: function tooltip_onshow() {},\n tooltip_onhide: function tooltip_onhide() {},\n // title\n title_text: undefined,\n title_padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n title_position: 'top-center'\n };\n\n Object.keys(this.additionalConfig).forEach(function (key) {\n config[key] = this.additionalConfig[key];\n }, this);\n\n return config;\n};\nc3_chart_internal_fn.additionalConfig = {};\n\nc3_chart_internal_fn.loadConfig = function (config) {\n var this_config = this.config,\n target,\n keys,\n read;\n function find() {\n var key = keys.shift();\n // console.log(\"key =>\", key, \", target =>\", target);\n if (key && target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && key in target) {\n target = target[key];\n return find();\n } else if (!key) {\n return target;\n } else {\n return undefined;\n }\n }\n Object.keys(this_config).forEach(function (key) {\n target = config;\n keys = key.split('_');\n read = find();\n // console.log(\"CONFIG : \", key, read);\n if (isDefined(read)) {\n this_config[key] = read;\n }\n });\n};\n\nc3_chart_internal_fn.convertUrlToData = function (url, mimeType, headers, keys, done) {\n var $$ = this,\n type = mimeType ? mimeType : 'csv';\n var req = $$.d3.xhr(url);\n if (headers) {\n Object.keys(headers).forEach(function (header) {\n req.header(header, headers[header]);\n });\n }\n req.get(function (error, data) {\n var d;\n var dataResponse = data.response || data.responseText; // Fixes IE9 XHR issue; see #1345\n if (!data) {\n throw new Error(error.responseURL + ' ' + error.status + ' (' + error.statusText + ')');\n }\n if (type === 'json') {\n d = $$.convertJsonToData(JSON.parse(dataResponse), keys);\n } else if (type === 'tsv') {\n d = $$.convertTsvToData(dataResponse);\n } else {\n d = $$.convertCsvToData(dataResponse);\n }\n done.call($$, d);\n });\n};\nc3_chart_internal_fn.convertXsvToData = function (xsv, parser) {\n var rows = parser.parseRows(xsv),\n d;\n if (rows.length === 1) {\n d = [{}];\n rows[0].forEach(function (id) {\n d[0][id] = null;\n });\n } else {\n d = parser.parse(xsv);\n }\n return d;\n};\nc3_chart_internal_fn.convertCsvToData = function (csv) {\n return this.convertXsvToData(csv, this.d3.csv);\n};\nc3_chart_internal_fn.convertTsvToData = function (tsv) {\n return this.convertXsvToData(tsv, this.d3.tsv);\n};\nc3_chart_internal_fn.convertJsonToData = function (json, keys) {\n var $$ = this,\n new_rows = [],\n targetKeys,\n data;\n if (keys) {\n // when keys specified, json would be an array that includes objects\n if (keys.x) {\n targetKeys = keys.value.concat(keys.x);\n $$.config.data_x = keys.x;\n } else {\n targetKeys = keys.value;\n }\n new_rows.push(targetKeys);\n json.forEach(function (o) {\n var new_row = [];\n targetKeys.forEach(function (key) {\n // convert undefined to null because undefined data will be removed in convertDataToTargets()\n var v = $$.findValueInJson(o, key);\n if (isUndefined(v)) {\n v = null;\n }\n new_row.push(v);\n });\n new_rows.push(new_row);\n });\n data = $$.convertRowsToData(new_rows);\n } else {\n Object.keys(json).forEach(function (key) {\n new_rows.push([key].concat(json[key]));\n });\n data = $$.convertColumnsToData(new_rows);\n }\n return data;\n};\nc3_chart_internal_fn.findValueInJson = function (object, path) {\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties (replace [] with .)\n path = path.replace(/^\\./, ''); // strip a leading dot\n var pathArray = path.split('.');\n for (var i = 0; i < pathArray.length; ++i) {\n var k = pathArray[i];\n if (k in object) {\n object = object[k];\n } else {\n return;\n }\n }\n return object;\n};\n\n/**\n * Converts the rows to normalized data.\n * @param {any[][]} rows The row data\n * @return {Object[]}\n */\nc3_chart_internal_fn.convertRowsToData = function (rows) {\n var newRows = [];\n var keys = rows[0];\n\n for (var i = 1; i < rows.length; i++) {\n var newRow = {};\n for (var j = 0; j < rows[i].length; j++) {\n if (isUndefined(rows[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n newRow[keys[j]] = rows[i][j];\n }\n newRows.push(newRow);\n }\n return newRows;\n};\n\n/**\n * Converts the columns to normalized data.\n * @param {any[][]} columns The column data\n * @return {Object[]}\n */\nc3_chart_internal_fn.convertColumnsToData = function (columns) {\n var newRows = [];\n\n for (var i = 0; i < columns.length; i++) {\n var key = columns[i][0];\n for (var j = 1; j < columns[i].length; j++) {\n if (isUndefined(newRows[j - 1])) {\n newRows[j - 1] = {};\n }\n if (isUndefined(columns[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n newRows[j - 1][key] = columns[i][j];\n }\n }\n\n return newRows;\n};\n\nc3_chart_internal_fn.convertDataToTargets = function (data, appendXs) {\n var $$ = this,\n config = $$.config,\n ids = $$.d3.keys(data[0]).filter($$.isNotX, $$),\n xs = $$.d3.keys(data[0]).filter($$.isX, $$),\n targets;\n\n // save x for update data by load when custom x and c3.x API\n ids.forEach(function (id) {\n var xKey = $$.getXKey(id);\n\n if ($$.isCustomX() || $$.isTimeSeries()) {\n // if included in input data\n if (xs.indexOf(xKey) >= 0) {\n $$.data.xs[id] = (appendXs && $$.data.xs[id] ? $$.data.xs[id] : []).concat(data.map(function (d) {\n return d[xKey];\n }).filter(isValue).map(function (rawX, i) {\n return $$.generateTargetX(rawX, id, i);\n }));\n }\n // if not included in input data, find from preloaded data of other id's x\n else if (config.data_x) {\n $$.data.xs[id] = $$.getOtherTargetXs();\n }\n // if not included in input data, find from preloaded data\n else if (notEmpty(config.data_xs)) {\n $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets);\n }\n // MEMO: if no x included, use same x of current will be used\n } else {\n $$.data.xs[id] = data.map(function (d, i) {\n return i;\n });\n }\n });\n\n // check x is defined\n ids.forEach(function (id) {\n if (!$$.data.xs[id]) {\n throw new Error('x is not defined for id = \"' + id + '\".');\n }\n });\n\n // convert to target\n targets = ids.map(function (id, index) {\n var convertedId = config.data_idConverter(id);\n return {\n id: convertedId,\n id_org: id,\n values: data.map(function (d, i) {\n var xKey = $$.getXKey(id),\n rawX = d[xKey],\n value = d[id] !== null && !isNaN(d[id]) ? +d[id] : null,\n x;\n // use x as categories if custom x and categorized\n if ($$.isCustomX() && $$.isCategorized() && !isUndefined(rawX)) {\n if (index === 0 && i === 0) {\n config.axis_x_categories = [];\n }\n x = config.axis_x_categories.indexOf(rawX);\n if (x === -1) {\n x = config.axis_x_categories.length;\n config.axis_x_categories.push(rawX);\n }\n } else {\n x = $$.generateTargetX(rawX, id, i);\n }\n // mark as x = undefined if value is undefined and filter to remove after mapped\n if (isUndefined(d[id]) || $$.data.xs[id].length <= i) {\n x = undefined;\n }\n return { x: x, value: value, id: convertedId };\n }).filter(function (v) {\n return isDefined(v.x);\n })\n };\n });\n\n // finish targets\n targets.forEach(function (t) {\n var i;\n // sort values by its x\n if (config.data_xSort) {\n t.values = t.values.sort(function (v1, v2) {\n var x1 = v1.x || v1.x === 0 ? v1.x : Infinity,\n x2 = v2.x || v2.x === 0 ? v2.x : Infinity;\n return x1 - x2;\n });\n }\n // indexing each value\n i = 0;\n t.values.forEach(function (v) {\n v.index = i++;\n });\n // this needs to be sorted because its index and value.index is identical\n $$.data.xs[t.id].sort(function (v1, v2) {\n return v1 - v2;\n });\n });\n\n // cache information about values\n $$.hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n $$.hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n\n // set target types\n if (config.data_type) {\n $$.setTargetType($$.mapToIds(targets).filter(function (id) {\n return !(id in config.data_types);\n }), config.data_type);\n }\n\n // cache as original id keyed\n targets.forEach(function (d) {\n $$.addCache(d.id_org, d);\n });\n\n return targets;\n};\n\nc3_chart_internal_fn.isX = function (key) {\n var $$ = this,\n config = $$.config;\n return config.data_x && key === config.data_x || notEmpty(config.data_xs) && hasValue(config.data_xs, key);\n};\nc3_chart_internal_fn.isNotX = function (key) {\n return !this.isX(key);\n};\nc3_chart_internal_fn.getXKey = function (id) {\n var $$ = this,\n config = $$.config;\n return config.data_x ? config.data_x : notEmpty(config.data_xs) ? config.data_xs[id] : null;\n};\nc3_chart_internal_fn.getXValuesOfXKey = function (key, targets) {\n var $$ = this,\n xValues,\n ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : [];\n ids.forEach(function (id) {\n if ($$.getXKey(id) === key) {\n xValues = $$.data.xs[id];\n }\n });\n return xValues;\n};\nc3_chart_internal_fn.getIndexByX = function (x) {\n var $$ = this,\n data = $$.filterByX($$.data.targets, x);\n return data.length ? data[0].index : null;\n};\nc3_chart_internal_fn.getXValue = function (id, i) {\n var $$ = this;\n return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i]) ? $$.data.xs[id][i] : i;\n};\nc3_chart_internal_fn.getOtherTargetXs = function () {\n var $$ = this,\n idsForX = Object.keys($$.data.xs);\n return idsForX.length ? $$.data.xs[idsForX[0]] : null;\n};\nc3_chart_internal_fn.getOtherTargetX = function (index) {\n var xs = this.getOtherTargetXs();\n return xs && index < xs.length ? xs[index] : null;\n};\nc3_chart_internal_fn.addXs = function (xs) {\n var $$ = this;\n Object.keys(xs).forEach(function (id) {\n $$.config.data_xs[id] = xs[id];\n });\n};\nc3_chart_internal_fn.hasMultipleX = function (xs) {\n return this.d3.set(Object.keys(xs).map(function (id) {\n return xs[id];\n })).size() > 1;\n};\nc3_chart_internal_fn.isMultipleX = function () {\n return notEmpty(this.config.data_xs) || !this.config.data_xSort || this.hasType('scatter');\n};\nc3_chart_internal_fn.addName = function (data) {\n var $$ = this,\n name;\n if (data) {\n name = $$.config.data_names[data.id];\n data.name = name !== undefined ? name : data.id;\n }\n return data;\n};\nc3_chart_internal_fn.getValueOnIndex = function (values, index) {\n var valueOnIndex = values.filter(function (v) {\n return v.index === index;\n });\n return valueOnIndex.length ? valueOnIndex[0] : null;\n};\nc3_chart_internal_fn.updateTargetX = function (targets, x) {\n var $$ = this;\n targets.forEach(function (t) {\n t.values.forEach(function (v, i) {\n v.x = $$.generateTargetX(x[i], t.id, i);\n });\n $$.data.xs[t.id] = x;\n });\n};\nc3_chart_internal_fn.updateTargetXs = function (targets, xs) {\n var $$ = this;\n targets.forEach(function (t) {\n if (xs[t.id]) {\n $$.updateTargetX([t], xs[t.id]);\n }\n });\n};\nc3_chart_internal_fn.generateTargetX = function (rawX, id, index) {\n var $$ = this,\n x;\n if ($$.isTimeSeries()) {\n x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index));\n } else if ($$.isCustomX() && !$$.isCategorized()) {\n x = isValue(rawX) ? +rawX : $$.getXValue(id, index);\n } else {\n x = index;\n }\n return x;\n};\nc3_chart_internal_fn.cloneTarget = function (target) {\n return {\n id: target.id,\n id_org: target.id_org,\n values: target.values.map(function (d) {\n return { x: d.x, value: d.value, id: d.id };\n })\n };\n};\nc3_chart_internal_fn.updateXs = function () {\n var $$ = this;\n if ($$.data.targets.length) {\n $$.xs = [];\n $$.data.targets[0].values.forEach(function (v) {\n $$.xs[v.index] = v.x;\n });\n }\n};\nc3_chart_internal_fn.getPrevX = function (i) {\n var x = this.xs[i - 1];\n return typeof x !== 'undefined' ? x : null;\n};\nc3_chart_internal_fn.getNextX = function (i) {\n var x = this.xs[i + 1];\n return typeof x !== 'undefined' ? x : null;\n};\nc3_chart_internal_fn.getMaxDataCount = function () {\n var $$ = this;\n return $$.d3.max($$.data.targets, function (t) {\n return t.values.length;\n });\n};\nc3_chart_internal_fn.getMaxDataCountTarget = function (targets) {\n var length = targets.length,\n max = 0,\n maxTarget;\n if (length > 1) {\n targets.forEach(function (t) {\n if (t.values.length > max) {\n maxTarget = t;\n max = t.values.length;\n }\n });\n } else {\n maxTarget = length ? targets[0] : null;\n }\n return maxTarget;\n};\nc3_chart_internal_fn.getEdgeX = function (targets) {\n var $$ = this;\n return !targets.length ? [0, 0] : [$$.d3.min(targets, function (t) {\n return t.values[0].x;\n }), $$.d3.max(targets, function (t) {\n return t.values[t.values.length - 1].x;\n })];\n};\nc3_chart_internal_fn.mapToIds = function (targets) {\n return targets.map(function (d) {\n return d.id;\n });\n};\nc3_chart_internal_fn.mapToTargetIds = function (ids) {\n var $$ = this;\n return ids ? [].concat(ids) : $$.mapToIds($$.data.targets);\n};\nc3_chart_internal_fn.hasTarget = function (targets, id) {\n var ids = this.mapToIds(targets),\n i;\n for (i = 0; i < ids.length; i++) {\n if (ids[i] === id) {\n return true;\n }\n }\n return false;\n};\nc3_chart_internal_fn.isTargetToShow = function (targetId) {\n return this.hiddenTargetIds.indexOf(targetId) < 0;\n};\nc3_chart_internal_fn.isLegendToShow = function (targetId) {\n return this.hiddenLegendIds.indexOf(targetId) < 0;\n};\nc3_chart_internal_fn.filterTargetsToShow = function (targets) {\n var $$ = this;\n return targets.filter(function (t) {\n return $$.isTargetToShow(t.id);\n });\n};\nc3_chart_internal_fn.mapTargetsToUniqueXs = function (targets) {\n var $$ = this;\n var xs = $$.d3.set($$.d3.merge(targets.map(function (t) {\n return t.values.map(function (v) {\n return +v.x;\n });\n }))).values();\n xs = $$.isTimeSeries() ? xs.map(function (x) {\n return new Date(+x);\n }) : xs.map(function (x) {\n return +x;\n });\n return xs.sort(function (a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n });\n};\nc3_chart_internal_fn.addHiddenTargetIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenTargetIds.indexOf(targetIds[i]) < 0) {\n this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds[i]);\n }\n }\n};\nc3_chart_internal_fn.removeHiddenTargetIds = function (targetIds) {\n this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n};\nc3_chart_internal_fn.addHiddenLegendIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenLegendIds.indexOf(targetIds[i]) < 0) {\n this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds[i]);\n }\n }\n};\nc3_chart_internal_fn.removeHiddenLegendIds = function (targetIds) {\n this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n};\nc3_chart_internal_fn.getValuesAsIdKeyed = function (targets) {\n var ys = {};\n targets.forEach(function (t) {\n ys[t.id] = [];\n t.values.forEach(function (v) {\n ys[t.id].push(v.value);\n });\n });\n return ys;\n};\nc3_chart_internal_fn.checkValueInTargets = function (targets, checker) {\n var ids = Object.keys(targets),\n i,\n j,\n values;\n for (i = 0; i < ids.length; i++) {\n values = targets[ids[i]].values;\n for (j = 0; j < values.length; j++) {\n if (checker(values[j].value)) {\n return true;\n }\n }\n }\n return false;\n};\nc3_chart_internal_fn.hasNegativeValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v < 0;\n });\n};\nc3_chart_internal_fn.hasPositiveValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v > 0;\n });\n};\nc3_chart_internal_fn.isOrderDesc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'desc';\n};\nc3_chart_internal_fn.isOrderAsc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'asc';\n};\nc3_chart_internal_fn.getOrderFunction = function () {\n var $$ = this,\n config = $$.config,\n orderAsc = $$.isOrderAsc(),\n orderDesc = $$.isOrderDesc();\n if (orderAsc || orderDesc) {\n return function (t1, t2) {\n var reducer = function reducer(p, c) {\n return p + Math.abs(c.value);\n };\n var t1Sum = t1.values.reduce(reducer, 0),\n t2Sum = t2.values.reduce(reducer, 0);\n return orderDesc ? t2Sum - t1Sum : t1Sum - t2Sum;\n };\n } else if (isFunction(config.data_order)) {\n return config.data_order;\n } else if (isArray(config.data_order)) {\n var order = config.data_order;\n return function (t1, t2) {\n return order.indexOf(t1.id) - order.indexOf(t2.id);\n };\n }\n};\nc3_chart_internal_fn.orderTargets = function (targets) {\n var fct = this.getOrderFunction();\n if (fct) {\n targets.sort(fct);\n if (this.isOrderAsc() || this.isOrderDesc()) {\n targets.reverse();\n }\n }\n return targets;\n};\nc3_chart_internal_fn.filterByX = function (targets, x) {\n return this.d3.merge(targets.map(function (t) {\n return t.values;\n })).filter(function (v) {\n return v.x - x === 0;\n });\n};\nc3_chart_internal_fn.filterRemoveNull = function (data) {\n return data.filter(function (d) {\n return isValue(d.value);\n });\n};\nc3_chart_internal_fn.filterByXDomain = function (targets, xDomain) {\n return targets.map(function (t) {\n return {\n id: t.id,\n id_org: t.id_org,\n values: t.values.filter(function (v) {\n return xDomain[0] <= v.x && v.x <= xDomain[1];\n })\n };\n });\n};\nc3_chart_internal_fn.hasDataLabel = function () {\n var config = this.config;\n if (typeof config.data_labels === 'boolean' && config.data_labels) {\n return true;\n } else if (_typeof(config.data_labels) === 'object' && notEmpty(config.data_labels)) {\n return true;\n }\n return false;\n};\nc3_chart_internal_fn.getDataLabelLength = function (min, max, key) {\n var $$ = this,\n lengths = [0, 0],\n paddingCoef = 1.3;\n $$.selectChart.select('svg').selectAll('.dummy').data([min, max]).enter().append('text').text(function (d) {\n return $$.dataLabelFormat(d.id)(d);\n }).each(function (d, i) {\n lengths[i] = this.getBoundingClientRect()[key] * paddingCoef;\n }).remove();\n return lengths;\n};\nc3_chart_internal_fn.isNoneArc = function (d) {\n return this.hasTarget(this.data.targets, d.id);\n}, c3_chart_internal_fn.isArc = function (d) {\n return 'data' in d && this.hasTarget(this.data.targets, d.data.id);\n};\nc3_chart_internal_fn.findSameXOfValues = function (values, index) {\n var i,\n targetX = values[index].x,\n sames = [];\n for (i = index - 1; i >= 0; i--) {\n if (targetX !== values[i].x) {\n break;\n }\n sames.push(values[i]);\n }\n for (i = index; i < values.length; i++) {\n if (targetX !== values[i].x) {\n break;\n }\n sames.push(values[i]);\n }\n return sames;\n};\n\nc3_chart_internal_fn.findClosestFromTargets = function (targets, pos) {\n var $$ = this,\n candidates;\n\n // map to array of closest points of each target\n candidates = targets.map(function (target) {\n return $$.findClosest(target.values, pos);\n });\n\n // decide closest point and return\n return $$.findClosest(candidates, pos);\n};\nc3_chart_internal_fn.findClosest = function (values, pos) {\n var $$ = this,\n minDist = $$.config.point_sensitivity,\n closest;\n\n // find mouseovering bar\n values.filter(function (v) {\n return v && $$.isBarType(v.id);\n }).forEach(function (v) {\n var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node();\n if (!closest && $$.isWithinBar(shape)) {\n closest = v;\n }\n });\n\n // find closest point from non-bar\n values.filter(function (v) {\n return v && !$$.isBarType(v.id);\n }).forEach(function (v) {\n var d = $$.dist(v, pos);\n if (d < minDist) {\n minDist = d;\n closest = v;\n }\n });\n\n return closest;\n};\nc3_chart_internal_fn.dist = function (data, pos) {\n var $$ = this,\n config = $$.config,\n xIndex = config.axis_rotated ? 1 : 0,\n yIndex = config.axis_rotated ? 0 : 1,\n y = $$.circleY(data, data.index),\n x = $$.x(data.x);\n return Math.sqrt(Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2));\n};\nc3_chart_internal_fn.convertValuesToStep = function (values) {\n var converted = [].concat(values),\n i;\n\n if (!this.isCategorized()) {\n return values;\n }\n\n for (i = values.length + 1; 0 < i; i--) {\n converted[i] = converted[i - 1];\n }\n\n converted[0] = {\n x: converted[0].x - 1,\n value: converted[0].value,\n id: converted[0].id\n };\n converted[values.length + 1] = {\n x: converted[values.length].x + 1,\n value: converted[values.length].value,\n id: converted[values.length].id\n };\n\n return converted;\n};\nc3_chart_internal_fn.updateDataAttributes = function (name, attrs) {\n var $$ = this,\n config = $$.config,\n current = config['data_' + name];\n if (typeof attrs === 'undefined') {\n return current;\n }\n Object.keys(attrs).forEach(function (id) {\n current[id] = attrs[id];\n });\n $$.redraw({ withLegend: true });\n return current;\n};\n\nc3_chart_internal_fn.load = function (targets, args) {\n var $$ = this;\n if (targets) {\n // filter loading targets if needed\n if (args.filter) {\n targets = targets.filter(args.filter);\n }\n // set type if args.types || args.type specified\n if (args.type || args.types) {\n targets.forEach(function (t) {\n var type = args.types && args.types[t.id] ? args.types[t.id] : args.type;\n $$.setTargetType(t.id, type);\n });\n }\n // Update/Add data\n $$.data.targets.forEach(function (d) {\n for (var i = 0; i < targets.length; i++) {\n if (d.id === targets[i].id) {\n d.values = targets[i].values;\n targets.splice(i, 1);\n break;\n }\n }\n });\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n }\n\n // Set targets\n $$.updateTargets($$.data.targets);\n\n // Redraw with new targets\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n\n if (args.done) {\n args.done();\n }\n};\nc3_chart_internal_fn.loadFromArgs = function (args) {\n var $$ = this;\n if (args.data) {\n $$.load($$.convertDataToTargets(args.data), args);\n } else if (args.url) {\n $$.convertUrlToData(args.url, args.mimeType, args.headers, args.keys, function (data) {\n $$.load($$.convertDataToTargets(data), args);\n });\n } else if (args.json) {\n $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args);\n } else if (args.rows) {\n $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args);\n } else if (args.columns) {\n $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args);\n } else {\n $$.load(null, args);\n }\n};\nc3_chart_internal_fn.unload = function (targetIds, done) {\n var $$ = this;\n if (!done) {\n done = function done() {};\n }\n // filter existing target\n targetIds = targetIds.filter(function (id) {\n return $$.hasTarget($$.data.targets, id);\n });\n // If no target, call done and return\n if (!targetIds || targetIds.length === 0) {\n done();\n return;\n }\n $$.svg.selectAll(targetIds.map(function (id) {\n return $$.selectorTarget(id);\n })).transition().style('opacity', 0).remove().call($$.endall, done);\n targetIds.forEach(function (id) {\n // Reset fadein for future load\n $$.withoutFadeIn[id] = false;\n // Remove target's elements\n if ($$.legend) {\n $$.legend.selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id)).remove();\n }\n // Remove target\n $$.data.targets = $$.data.targets.filter(function (t) {\n return t.id !== id;\n });\n });\n};\n\nc3_chart_internal_fn.getYDomainMin = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasNegativeValue;\n if (config.data_groups.length > 0) {\n hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n if (idsInGroup.length === 0) {\n continue;\n }\n baseId = idsInGroup[0];\n // Consider negative values\n if (hasNegativeValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v < 0 ? v : 0;\n });\n }\n // Compute min\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n if (!ys[id]) {\n continue;\n }\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasNegativeValue && +v > 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n return $$.d3.min(Object.keys(ys).map(function (key) {\n return $$.d3.min(ys[key]);\n }));\n};\nc3_chart_internal_fn.getYDomainMax = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasPositiveValue;\n if (config.data_groups.length > 0) {\n hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n if (idsInGroup.length === 0) {\n continue;\n }\n baseId = idsInGroup[0];\n // Consider positive values\n if (hasPositiveValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v > 0 ? v : 0;\n });\n }\n // Compute max\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n if (!ys[id]) {\n continue;\n }\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasPositiveValue && +v < 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n return $$.d3.max(Object.keys(ys).map(function (key) {\n return $$.d3.max(ys[key]);\n }));\n};\nc3_chart_internal_fn.getYDomain = function (targets, axisId, xDomain) {\n var $$ = this,\n config = $$.config,\n targetsByAxisId = targets.filter(function (t) {\n return $$.axis.getId(t.id) === axisId;\n }),\n yTargets = xDomain ? $$.filterByXDomain(targetsByAxisId, xDomain) : targetsByAxisId,\n yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min,\n yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max,\n yDomainMin = $$.getYDomainMin(yTargets),\n yDomainMax = $$.getYDomainMax(yTargets),\n domain,\n domainLength,\n padding,\n padding_top,\n padding_bottom,\n center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center,\n yDomainAbs,\n lengths,\n diff,\n ratio,\n isAllPositive,\n isAllNegative,\n isZeroBased = $$.hasType('bar', yTargets) && config.bar_zerobased || $$.hasType('area', yTargets) && config.area_zerobased,\n isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted,\n showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated,\n showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated;\n\n // MEMO: avoid inverting domain unexpectedly\n yDomainMin = isValue(yMin) ? yMin : isValue(yMax) ? yDomainMin < yMax ? yDomainMin : yMax - 10 : yDomainMin;\n yDomainMax = isValue(yMax) ? yMax : isValue(yMin) ? yMin < yDomainMax ? yDomainMax : yMin + 10 : yDomainMax;\n\n if (yTargets.length === 0) {\n // use current domain if target of axisId is none\n return axisId === 'y2' ? $$.y2.domain() : $$.y.domain();\n }\n if (isNaN(yDomainMin)) {\n // set minimum to zero when not number\n yDomainMin = 0;\n }\n if (isNaN(yDomainMax)) {\n // set maximum to have same value as yDomainMin\n yDomainMax = yDomainMin;\n }\n if (yDomainMin === yDomainMax) {\n yDomainMin < 0 ? yDomainMax = 0 : yDomainMin = 0;\n }\n isAllPositive = yDomainMin >= 0 && yDomainMax >= 0;\n isAllNegative = yDomainMin <= 0 && yDomainMax <= 0;\n\n // Cancel zerobased if axis_*_min / axis_*_max specified\n if (isValue(yMin) && isAllPositive || isValue(yMax) && isAllNegative) {\n isZeroBased = false;\n }\n\n // Bar/Area chart should be 0-based if all positive|negative\n if (isZeroBased) {\n if (isAllPositive) {\n yDomainMin = 0;\n }\n if (isAllNegative) {\n yDomainMax = 0;\n }\n }\n\n domainLength = Math.abs(yDomainMax - yDomainMin);\n padding = padding_top = padding_bottom = domainLength * 0.1;\n\n if (typeof center !== 'undefined') {\n yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax));\n yDomainMax = center + yDomainAbs;\n yDomainMin = center - yDomainAbs;\n }\n // add padding for data label\n if (showHorizontalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width');\n diff = diffDomain($$.y.range());\n ratio = [lengths[0] / diff, lengths[1] / diff];\n padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1]));\n padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1]));\n } else if (showVerticalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height');\n padding_top += $$.axis.convertPixelsToAxisPadding(lengths[1], domainLength);\n padding_bottom += $$.axis.convertPixelsToAxisPadding(lengths[0], domainLength);\n }\n if (axisId === 'y' && notEmpty(config.axis_y_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength);\n }\n if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength);\n }\n // Bar/Area chart should be 0-based if all positive|negative\n if (isZeroBased) {\n if (isAllPositive) {\n padding_bottom = yDomainMin;\n }\n if (isAllNegative) {\n padding_top = -yDomainMax;\n }\n }\n domain = [yDomainMin - padding_bottom, yDomainMax + padding_top];\n return isInverted ? domain.reverse() : domain;\n};\nc3_chart_internal_fn.getXDomainMin = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_min) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_min) : config.axis_x_min : $$.d3.min(targets, function (t) {\n return $$.d3.min(t.values, function (v) {\n return v.x;\n });\n });\n};\nc3_chart_internal_fn.getXDomainMax = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_max) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_max) : config.axis_x_max : $$.d3.max(targets, function (t) {\n return $$.d3.max(t.values, function (v) {\n return v.x;\n });\n });\n};\nc3_chart_internal_fn.getXDomainPadding = function (domain) {\n var $$ = this,\n config = $$.config,\n diff = domain[1] - domain[0],\n maxDataCount,\n padding,\n paddingLeft,\n paddingRight;\n if ($$.isCategorized()) {\n padding = 0;\n } else if ($$.hasType('bar')) {\n maxDataCount = $$.getMaxDataCount();\n padding = maxDataCount > 1 ? diff / (maxDataCount - 1) / 2 : 0.5;\n } else {\n padding = diff * 0.01;\n }\n if (_typeof(config.axis_x_padding) === 'object' && notEmpty(config.axis_x_padding)) {\n paddingLeft = isValue(config.axis_x_padding.left) ? config.axis_x_padding.left : padding;\n paddingRight = isValue(config.axis_x_padding.right) ? config.axis_x_padding.right : padding;\n } else if (typeof config.axis_x_padding === 'number') {\n paddingLeft = paddingRight = config.axis_x_padding;\n } else {\n paddingLeft = paddingRight = padding;\n }\n return { left: paddingLeft, right: paddingRight };\n};\nc3_chart_internal_fn.getXDomain = function (targets) {\n var $$ = this,\n xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)],\n firstX = xDomain[0],\n lastX = xDomain[1],\n padding = $$.getXDomainPadding(xDomain),\n min = 0,\n max = 0;\n // show center of x domain if min and max are the same\n if (firstX - lastX === 0 && !$$.isCategorized()) {\n if ($$.isTimeSeries()) {\n firstX = new Date(firstX.getTime() * 0.5);\n lastX = new Date(lastX.getTime() * 1.5);\n } else {\n firstX = firstX === 0 ? 1 : firstX * 0.5;\n lastX = lastX === 0 ? -1 : lastX * 1.5;\n }\n }\n if (firstX || firstX === 0) {\n min = $$.isTimeSeries() ? new Date(firstX.getTime() - padding.left) : firstX - padding.left;\n }\n if (lastX || lastX === 0) {\n max = $$.isTimeSeries() ? new Date(lastX.getTime() + padding.right) : lastX + padding.right;\n }\n return [min, max];\n};\nc3_chart_internal_fn.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) {\n var $$ = this,\n config = $$.config;\n\n if (withUpdateOrgXDomain) {\n $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets)));\n $$.orgXDomain = $$.x.domain();\n if (config.zoom_enabled) {\n $$.zoom.scale($$.x).updateScaleExtent();\n }\n $$.subX.domain($$.x.domain());\n if ($$.brush) {\n $$.brush.scale($$.subX);\n }\n }\n if (withUpdateXDomain) {\n $$.x.domain(domain ? domain : !$$.brush || $$.brush.empty() ? $$.orgXDomain : $$.brush.extent());\n if (config.zoom_enabled) {\n $$.zoom.scale($$.x).updateScaleExtent();\n }\n }\n\n // Trim domain when too big by zoom mousemove event\n if (withTrim) {\n $$.x.domain($$.trimXDomain($$.x.orgDomain()));\n }\n\n return $$.x.domain();\n};\nc3_chart_internal_fn.trimXDomain = function (domain) {\n var zoomDomain = this.getZoomDomain(),\n min = zoomDomain[0],\n max = zoomDomain[1];\n if (domain[0] <= min) {\n domain[1] = +domain[1] + (min - domain[0]);\n domain[0] = min;\n }\n if (max <= domain[1]) {\n domain[0] = +domain[0] - (domain[1] - max);\n domain[1] = max;\n }\n return domain;\n};\n\nc3_chart_internal_fn.drag = function (mouse) {\n var $$ = this,\n config = $$.config,\n main = $$.main,\n d3 = $$.d3;\n var sx, sy, mx, my, minX, maxX, minY, maxY;\n\n if ($$.hasArcType()) {\n return;\n }\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n if (config.zoom_enabled && !$$.zoom.altDomain) {\n return;\n } // skip if zoomable because of conflict drag dehavior\n if (!config.data_selection_multiple) {\n return;\n } // skip when single selection because drag is used for multiple selection\n\n sx = $$.dragStart[0];\n sy = $$.dragStart[1];\n mx = mouse[0];\n my = mouse[1];\n minX = Math.min(sx, mx);\n maxX = Math.max(sx, mx);\n minY = config.data_selection_grouped ? $$.margin.top : Math.min(sy, my);\n maxY = config.data_selection_grouped ? $$.height : Math.max(sy, my);\n\n main.select('.' + CLASS.dragarea).attr('x', minX).attr('y', minY).attr('width', maxX - minX).attr('height', maxY - minY);\n // TODO: binary search when multiple xs\n main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).filter(function (d) {\n return config.data_selection_isselectable(d);\n }).each(function (d, i) {\n var shape = d3.select(this),\n isSelected = shape.classed(CLASS.SELECTED),\n isIncluded = shape.classed(CLASS.INCLUDED),\n _x,\n _y,\n _w,\n _h,\n toggle,\n isWithin = false,\n box;\n if (shape.classed(CLASS.circle)) {\n _x = shape.attr(\"cx\") * 1;\n _y = shape.attr(\"cy\") * 1;\n toggle = $$.togglePoint;\n isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY;\n } else if (shape.classed(CLASS.bar)) {\n box = getPathBox(this);\n _x = box.x;\n _y = box.y;\n _w = box.width;\n _h = box.height;\n toggle = $$.togglePath;\n isWithin = !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY);\n } else {\n // line/area selection not supported yet\n return;\n }\n if (isWithin ^ isIncluded) {\n shape.classed(CLASS.INCLUDED, !isIncluded);\n // TODO: included/unincluded callback here\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle.call($$, !isSelected, shape, d, i);\n }\n });\n};\n\nc3_chart_internal_fn.dragstart = function (mouse) {\n var $$ = this,\n config = $$.config;\n if ($$.hasArcType()) {\n return;\n }\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n $$.dragStart = mouse;\n $$.main.select('.' + CLASS.chart).append('rect').attr('class', CLASS.dragarea).style('opacity', 0.1);\n $$.dragging = true;\n};\n\nc3_chart_internal_fn.dragend = function () {\n var $$ = this,\n config = $$.config;\n if ($$.hasArcType()) {\n return;\n }\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n $$.main.select('.' + CLASS.dragarea).transition().duration(100).style('opacity', 0).remove();\n $$.main.selectAll('.' + CLASS.shape).classed(CLASS.INCLUDED, false);\n $$.dragging = false;\n};\n\nc3_chart_internal_fn.getYFormat = function (forArc) {\n var $$ = this,\n formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat,\n formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format;\n return function (v, ratio, id) {\n var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY;\n return format.call($$, v, ratio);\n };\n};\nc3_chart_internal_fn.yFormat = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y_tick_format ? config.axis_y_tick_format : $$.defaultValueFormat;\n return format(v);\n};\nc3_chart_internal_fn.y2Format = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y2_tick_format ? config.axis_y2_tick_format : $$.defaultValueFormat;\n return format(v);\n};\nc3_chart_internal_fn.defaultValueFormat = function (v) {\n return isValue(v) ? +v : \"\";\n};\nc3_chart_internal_fn.defaultArcValueFormat = function (v, ratio) {\n return (ratio * 100).toFixed(1) + '%';\n};\nc3_chart_internal_fn.dataLabelFormat = function (targetId) {\n var $$ = this,\n data_labels = $$.config.data_labels,\n format,\n defaultFormat = function defaultFormat(v) {\n return isValue(v) ? +v : \"\";\n };\n // find format according to axis id\n if (typeof data_labels.format === 'function') {\n format = data_labels.format;\n } else if (_typeof(data_labels.format) === 'object') {\n if (data_labels.format[targetId]) {\n format = data_labels.format[targetId] === true ? defaultFormat : data_labels.format[targetId];\n } else {\n format = function format() {\n return '';\n };\n }\n } else {\n format = defaultFormat;\n }\n return format;\n};\n\nc3_chart_internal_fn.initGrid = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n $$.grid = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid);\n if (config.grid_x_show) {\n $$.grid.append(\"g\").attr(\"class\", CLASS.xgrids);\n }\n if (config.grid_y_show) {\n $$.grid.append('g').attr('class', CLASS.ygrids);\n }\n if (config.grid_focus_show) {\n $$.grid.append('g').attr(\"class\", CLASS.xgridFocus).append('line').attr('class', CLASS.xgridFocus);\n }\n $$.xgrid = d3.selectAll([]);\n if (!config.grid_lines_front) {\n $$.initGridLines();\n }\n};\nc3_chart_internal_fn.initGridLines = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.gridLines = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid + ' ' + CLASS.gridLines);\n $$.gridLines.append('g').attr(\"class\", CLASS.xgridLines);\n $$.gridLines.append('g').attr('class', CLASS.ygridLines);\n $$.xgridLines = d3.selectAll([]);\n};\nc3_chart_internal_fn.updateXGrid = function (withoutUpdate) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n xgridData = $$.generateGridData(config.grid_x_type, $$.x),\n tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0;\n\n $$.xgridAttr = config.axis_rotated ? {\n 'x1': 0,\n 'x2': $$.width,\n 'y1': function y1(d) {\n return $$.x(d) - tickOffset;\n },\n 'y2': function y2(d) {\n return $$.x(d) - tickOffset;\n }\n } : {\n 'x1': function x1(d) {\n return $$.x(d) + tickOffset;\n },\n 'x2': function x2(d) {\n return $$.x(d) + tickOffset;\n },\n 'y1': 0,\n 'y2': $$.height\n };\n\n $$.xgrid = $$.main.select('.' + CLASS.xgrids).selectAll('.' + CLASS.xgrid).data(xgridData);\n $$.xgrid.enter().append('line').attr(\"class\", CLASS.xgrid);\n if (!withoutUpdate) {\n $$.xgrid.attr($$.xgridAttr).style(\"opacity\", function () {\n return +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1') === (config.axis_rotated ? $$.height : 0) ? 0 : 1;\n });\n }\n $$.xgrid.exit().remove();\n};\n\nc3_chart_internal_fn.updateYGrid = function () {\n var $$ = this,\n config = $$.config,\n gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks);\n $$.ygrid = $$.main.select('.' + CLASS.ygrids).selectAll('.' + CLASS.ygrid).data(gridValues);\n $$.ygrid.enter().append('line').attr('class', CLASS.ygrid);\n $$.ygrid.attr(\"x1\", config.axis_rotated ? $$.y : 0).attr(\"x2\", config.axis_rotated ? $$.y : $$.width).attr(\"y1\", config.axis_rotated ? 0 : $$.y).attr(\"y2\", config.axis_rotated ? $$.height : $$.y);\n $$.ygrid.exit().remove();\n $$.smoothLines($$.ygrid, 'grid');\n};\n\nc3_chart_internal_fn.gridTextAnchor = function (d) {\n return d.position ? d.position : \"end\";\n};\nc3_chart_internal_fn.gridTextDx = function (d) {\n return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4;\n};\nc3_chart_internal_fn.xGridTextX = function (d) {\n return d.position === 'start' ? -this.height : d.position === 'middle' ? -this.height / 2 : 0;\n};\nc3_chart_internal_fn.yGridTextX = function (d) {\n return d.position === 'start' ? 0 : d.position === 'middle' ? this.width / 2 : this.width;\n};\nc3_chart_internal_fn.updateGrid = function (duration) {\n var $$ = this,\n main = $$.main,\n config = $$.config,\n xgridLine,\n ygridLine,\n yv;\n\n // hide if arc type\n $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n if (config.grid_x_show) {\n $$.updateXGrid();\n }\n $$.xgridLines = main.select('.' + CLASS.xgridLines).selectAll('.' + CLASS.xgridLine).data(config.grid_x_lines);\n // enter\n xgridLine = $$.xgridLines.enter().append('g').attr(\"class\", function (d) {\n return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n xgridLine.append('line').style(\"opacity\", 0);\n xgridLine.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0);\n // udpate\n // done in d3.transition() of the end of this function\n // exit\n $$.xgridLines.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n\n // Y-Grid\n if (config.grid_y_show) {\n $$.updateYGrid();\n }\n $$.ygridLines = main.select('.' + CLASS.ygridLines).selectAll('.' + CLASS.ygridLine).data(config.grid_y_lines);\n // enter\n ygridLine = $$.ygridLines.enter().append('g').attr(\"class\", function (d) {\n return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n ygridLine.append('line').style(\"opacity\", 0);\n ygridLine.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0);\n // update\n yv = $$.yv.bind($$);\n $$.ygridLines.select('line').transition().duration(duration).attr(\"x1\", config.axis_rotated ? yv : 0).attr(\"x2\", config.axis_rotated ? yv : $$.width).attr(\"y1\", config.axis_rotated ? 0 : yv).attr(\"y2\", config.axis_rotated ? $$.height : yv).style(\"opacity\", 1);\n $$.ygridLines.select('text').transition().duration(duration).attr(\"x\", config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$)).attr(\"y\", yv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1);\n // exit\n $$.ygridLines.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n};\nc3_chart_internal_fn.redrawGrid = function (withTransition) {\n var $$ = this,\n config = $$.config,\n xv = $$.xv.bind($$),\n lines = $$.xgridLines.select('line'),\n texts = $$.xgridLines.select('text');\n return [(withTransition ? lines.transition() : lines).attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv).attr(\"y1\", config.axis_rotated ? xv : 0).attr(\"y2\", config.axis_rotated ? xv : $$.height).style(\"opacity\", 1), (withTransition ? texts.transition() : texts).attr(\"x\", config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$)).attr(\"y\", xv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1)];\n};\nc3_chart_internal_fn.showXGridFocus = function (selectedData) {\n var $$ = this,\n config = $$.config,\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus),\n xx = $$.xx.bind($$);\n if (!config.tooltip_show) {\n return;\n }\n // Hide when scatter plot exists\n if ($$.hasType('scatter') || $$.hasArcType()) {\n return;\n }\n focusEl.style(\"visibility\", \"visible\").data([dataToShow[0]]).attr(config.axis_rotated ? 'y1' : 'x1', xx).attr(config.axis_rotated ? 'y2' : 'x2', xx);\n $$.smoothLines(focusEl, 'grid');\n};\nc3_chart_internal_fn.hideXGridFocus = function () {\n this.main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n};\nc3_chart_internal_fn.updateXgridFocus = function () {\n var $$ = this,\n config = $$.config;\n $$.main.select('line.' + CLASS.xgridFocus).attr(\"x1\", config.axis_rotated ? 0 : -10).attr(\"x2\", config.axis_rotated ? $$.width : -10).attr(\"y1\", config.axis_rotated ? -10 : 0).attr(\"y2\", config.axis_rotated ? -10 : $$.height);\n};\nc3_chart_internal_fn.generateGridData = function (type, scale) {\n var $$ = this,\n gridData = [],\n xDomain,\n firstYear,\n lastYear,\n i,\n tickNum = $$.main.select(\".\" + CLASS.axisX).selectAll('.tick').size();\n if (type === 'year') {\n xDomain = $$.getXDomain();\n firstYear = xDomain[0].getFullYear();\n lastYear = xDomain[1].getFullYear();\n for (i = firstYear; i <= lastYear; i++) {\n gridData.push(new Date(i + '-01-01 00:00:00'));\n }\n } else {\n gridData = scale.ticks(10);\n if (gridData.length > tickNum) {\n // use only int\n gridData = gridData.filter(function (d) {\n return (\"\" + d).indexOf('.') < 0;\n });\n }\n }\n return gridData;\n};\nc3_chart_internal_fn.getGridFilterToRemove = function (params) {\n return params ? function (line) {\n var found = false;\n [].concat(params).forEach(function (param) {\n if ('value' in param && line.value === param.value || 'class' in param && line['class'] === param['class']) {\n found = true;\n }\n });\n return found;\n } : function () {\n return true;\n };\n};\nc3_chart_internal_fn.removeGridLines = function (params, forX) {\n var $$ = this,\n config = $$.config,\n toRemove = $$.getGridFilterToRemove(params),\n toShow = function toShow(line) {\n return !toRemove(line);\n },\n classLines = forX ? CLASS.xgridLines : CLASS.ygridLines,\n classLine = forX ? CLASS.xgridLine : CLASS.ygridLine;\n $$.main.select('.' + classLines).selectAll('.' + classLine).filter(toRemove).transition().duration(config.transition_duration).style('opacity', 0).remove();\n if (forX) {\n config.grid_x_lines = config.grid_x_lines.filter(toShow);\n } else {\n config.grid_y_lines = config.grid_y_lines.filter(toShow);\n }\n};\n\nc3_chart_internal_fn.initEventRect = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.eventRects).style('fill-opacity', 0);\n};\nc3_chart_internal_fn.redrawEventRect = function () {\n var $$ = this,\n config = $$.config,\n eventRectUpdate,\n maxDataCountTarget,\n isMultipleX = $$.isMultipleX();\n\n // rects for mouseover\n var eventRects = $$.main.select('.' + CLASS.eventRects).style('cursor', config.zoom_enabled ? config.axis_rotated ? 'ns-resize' : 'ew-resize' : null).classed(CLASS.eventRectsMultiple, isMultipleX).classed(CLASS.eventRectsSingle, !isMultipleX);\n\n // clear old rects\n eventRects.selectAll('.' + CLASS.eventRect).remove();\n\n // open as public variable\n $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);\n\n if (isMultipleX) {\n eventRectUpdate = $$.eventRect.data([0]);\n // enter : only one rect will be added\n $$.generateEventRectsForMultipleXs(eventRectUpdate.enter());\n // update\n $$.updateEventRect(eventRectUpdate);\n // exit : not needed because always only one rect exists\n } else {\n // Set data and update $$.eventRect\n maxDataCountTarget = $$.getMaxDataCountTarget($$.data.targets);\n eventRects.datum(maxDataCountTarget ? maxDataCountTarget.values : []);\n $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);\n eventRectUpdate = $$.eventRect.data(function (d) {\n return d;\n });\n // enter\n $$.generateEventRectsForSingleX(eventRectUpdate.enter());\n // update\n $$.updateEventRect(eventRectUpdate);\n // exit\n eventRectUpdate.exit().remove();\n }\n};\nc3_chart_internal_fn.updateEventRect = function (eventRectUpdate) {\n var $$ = this,\n config = $$.config,\n x,\n y,\n w,\n h,\n rectW,\n rectX;\n\n // set update selection if null\n eventRectUpdate = eventRectUpdate || $$.eventRect.data(function (d) {\n return d;\n });\n\n if ($$.isMultipleX()) {\n // TODO: rotated not supported yet\n x = 0;\n y = 0;\n w = $$.width;\n h = $$.height;\n } else {\n if (($$.isCustomX() || $$.isTimeSeries()) && !$$.isCategorized()) {\n\n // update index for x that is used by prevX and nextX\n $$.updateXs();\n\n rectW = function rectW(d) {\n var prevX = $$.getPrevX(d.index),\n nextX = $$.getNextX(d.index);\n\n // if there this is a single data point make the eventRect full width (or height)\n if (prevX === null && nextX === null) {\n return config.axis_rotated ? $$.height : $$.width;\n }\n\n if (prevX === null) {\n prevX = $$.x.domain()[0];\n }\n if (nextX === null) {\n nextX = $$.x.domain()[1];\n }\n\n return Math.max(0, ($$.x(nextX) - $$.x(prevX)) / 2);\n };\n rectX = function rectX(d) {\n var prevX = $$.getPrevX(d.index),\n nextX = $$.getNextX(d.index),\n thisX = $$.data.xs[d.id][d.index];\n\n // if there this is a single data point position the eventRect at 0\n if (prevX === null && nextX === null) {\n return 0;\n }\n\n if (prevX === null) {\n prevX = $$.x.domain()[0];\n }\n\n return ($$.x(thisX) + $$.x(prevX)) / 2;\n };\n } else {\n rectW = $$.getEventRectWidth();\n rectX = function rectX(d) {\n return $$.x(d.x) - rectW / 2;\n };\n }\n x = config.axis_rotated ? 0 : rectX;\n y = config.axis_rotated ? rectX : 0;\n w = config.axis_rotated ? $$.width : rectW;\n h = config.axis_rotated ? rectW : $$.height;\n }\n\n eventRectUpdate.attr('class', $$.classEvent.bind($$)).attr(\"x\", x).attr(\"y\", y).attr(\"width\", w).attr(\"height\", h);\n};\nc3_chart_internal_fn.generateEventRectsForSingleX = function (eventRectEnter) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n eventRectEnter.append(\"rect\").attr(\"class\", $$.classEvent.bind($$)).style(\"cursor\", config.data_selection_enabled && config.data_selection_grouped ? \"pointer\" : null).on('mouseover', function (d) {\n var index = d.index;\n\n if ($$.dragging || $$.flowing) {\n return;\n } // do nothing while dragging/flowing\n if ($$.hasArcType()) {\n return;\n }\n\n // Expand shapes for selection\n if (config.point_focus_expand_enabled) {\n $$.expandCircles(index, null, true);\n }\n $$.expandBars(index, null, true);\n\n // Call event handler\n $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n config.data_onmouseover.call($$.api, d);\n });\n }).on('mouseout', function (d) {\n var index = d.index;\n if (!$$.config) {\n return;\n } // chart is destroyed\n if ($$.hasArcType()) {\n return;\n }\n $$.hideXGridFocus();\n $$.hideTooltip();\n // Undo expanded shapes\n $$.unexpandCircles();\n $$.unexpandBars();\n // Call event handler\n $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n config.data_onmouseout.call($$.api, d);\n });\n }).on('mousemove', function (d) {\n var selectedData,\n index = d.index,\n eventRect = $$.svg.select('.' + CLASS.eventRect + '-' + index);\n\n if ($$.dragging || $$.flowing) {\n return;\n } // do nothing while dragging/flowing\n if ($$.hasArcType()) {\n return;\n }\n\n if ($$.isStepType(d) && $$.config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {\n index -= 1;\n }\n\n // Show tooltip\n selectedData = $$.filterTargetsToShow($$.data.targets).map(function (t) {\n return $$.addName($$.getValueOnIndex(t.values, index));\n });\n\n if (config.tooltip_grouped) {\n $$.showTooltip(selectedData, this);\n $$.showXGridFocus(selectedData);\n }\n\n if (config.tooltip_grouped && (!config.data_selection_enabled || config.data_selection_grouped)) {\n return;\n }\n\n $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function () {\n d3.select(this).classed(CLASS.EXPANDED, true);\n if (config.data_selection_enabled) {\n eventRect.style('cursor', config.data_selection_grouped ? 'pointer' : null);\n }\n if (!config.tooltip_grouped) {\n $$.hideXGridFocus();\n $$.hideTooltip();\n if (!config.data_selection_grouped) {\n $$.unexpandCircles(index);\n $$.unexpandBars(index);\n }\n }\n }).filter(function (d) {\n return $$.isWithinShape(this, d);\n }).each(function (d) {\n if (config.data_selection_enabled && (config.data_selection_grouped || config.data_selection_isselectable(d))) {\n eventRect.style('cursor', 'pointer');\n }\n if (!config.tooltip_grouped) {\n $$.showTooltip([d], this);\n $$.showXGridFocus([d]);\n if (config.point_focus_expand_enabled) {\n $$.expandCircles(index, d.id, true);\n }\n $$.expandBars(index, d.id, true);\n }\n });\n }).on('click', function (d) {\n var index = d.index;\n if ($$.hasArcType() || !$$.toggleShape) {\n return;\n }\n if ($$.cancelClick) {\n $$.cancelClick = false;\n return;\n }\n if ($$.isStepType(d) && config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {\n index -= 1;\n }\n $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n if (config.data_selection_grouped || $$.isWithinShape(this, d)) {\n $$.toggleShape(this, d, index);\n $$.config.data_onclick.call($$.api, d, this);\n }\n });\n }).call(config.data_selection_draggable && $$.drag ? d3.behavior.drag().origin(Object).on('drag', function () {\n $$.drag(d3.mouse(this));\n }).on('dragstart', function () {\n $$.dragstart(d3.mouse(this));\n }).on('dragend', function () {\n $$.dragend();\n }) : function () {});\n};\n\nc3_chart_internal_fn.generateEventRectsForMultipleXs = function (eventRectEnter) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n\n function mouseout() {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', null);\n $$.hideXGridFocus();\n $$.hideTooltip();\n $$.unexpandCircles();\n $$.unexpandBars();\n }\n\n eventRectEnter.append('rect').attr('x', 0).attr('y', 0).attr('width', $$.width).attr('height', $$.height).attr('class', CLASS.eventRect).on('mouseout', function () {\n if (!$$.config) {\n return;\n } // chart is destroyed\n if ($$.hasArcType()) {\n return;\n }\n mouseout();\n }).on('mousemove', function () {\n var targetsToShow = $$.filterTargetsToShow($$.data.targets);\n var mouse, closest, sameXData, selectedData;\n\n if ($$.dragging) {\n return;\n } // do nothing when dragging\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n if ($$.mouseover && (!closest || closest.id !== $$.mouseover.id)) {\n config.data_onmouseout.call($$.api, $$.mouseover);\n $$.mouseover = undefined;\n }\n\n if (!closest) {\n mouseout();\n return;\n }\n\n if ($$.isScatterType(closest) || !config.tooltip_grouped) {\n sameXData = [closest];\n } else {\n sameXData = $$.filterByX(targetsToShow, closest.x);\n }\n\n // show tooltip when cursor is close to some point\n selectedData = sameXData.map(function (d) {\n return $$.addName(d);\n });\n $$.showTooltip(selectedData, this);\n\n // expand points\n if (config.point_focus_expand_enabled) {\n $$.expandCircles(closest.index, closest.id, true);\n }\n $$.expandBars(closest.index, closest.id, true);\n\n // Show xgrid focus line\n $$.showXGridFocus(selectedData);\n\n // Show cursor as pointer if point is close to mouse position\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer');\n if (!$$.mouseover) {\n config.data_onmouseover.call($$.api, closest);\n $$.mouseover = closest;\n }\n }\n }).on('click', function () {\n var targetsToShow = $$.filterTargetsToShow($$.data.targets);\n var mouse, closest;\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n if (!closest) {\n return;\n }\n // select if selection enabled\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(closest.id)).selectAll('.' + CLASS.shape + '-' + closest.index).each(function () {\n if (config.data_selection_grouped || $$.isWithinShape(this, closest)) {\n $$.toggleShape(this, closest, closest.index);\n $$.config.data_onclick.call($$.api, closest, this);\n }\n });\n }\n }).call(config.data_selection_draggable && $$.drag ? d3.behavior.drag().origin(Object).on('drag', function () {\n $$.drag(d3.mouse(this));\n }).on('dragstart', function () {\n $$.dragstart(d3.mouse(this));\n }).on('dragend', function () {\n $$.dragend();\n }) : function () {});\n};\nc3_chart_internal_fn.dispatchEvent = function (type, index, mouse) {\n var $$ = this,\n selector = '.' + CLASS.eventRect + (!$$.isMultipleX() ? '-' + index : ''),\n eventRect = $$.main.select(selector).node(),\n box = eventRect.getBoundingClientRect(),\n x = box.left + (mouse ? mouse[0] : 0),\n y = box.top + (mouse ? mouse[1] : 0),\n event = document.createEvent(\"MouseEvents\");\n\n event.initMouseEvent(type, true, true, window, 0, x, y, x, y, false, false, false, false, 0, null);\n eventRect.dispatchEvent(event);\n};\n\nc3_chart_internal_fn.initLegend = function () {\n var $$ = this;\n $$.legendItemTextBox = {};\n $$.legendHasRendered = false;\n $$.legend = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('legend'));\n if (!$$.config.legend_show) {\n $$.legend.style('visibility', 'hidden');\n $$.hiddenLegendIds = $$.mapToIds($$.data.targets);\n return;\n }\n // MEMO: call here to update legend box and tranlate for all\n // MEMO: translate will be upated by this, so transform not needed in updateLegend()\n $$.updateLegendWithDefaults();\n};\nc3_chart_internal_fn.updateLegendWithDefaults = function () {\n var $$ = this;\n $$.updateLegend($$.mapToIds($$.data.targets), { withTransform: false, withTransitionForTransform: false, withTransition: false });\n};\nc3_chart_internal_fn.updateSizeForLegend = function (legendHeight, legendWidth) {\n var $$ = this,\n config = $$.config,\n insetLegendPosition = {\n top: $$.isLegendTop ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5 : $$.currentHeight - legendHeight - $$.getCurrentPaddingBottom() - config.legend_inset_y,\n left: $$.isLegendLeft ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5 : $$.currentWidth - legendWidth - $$.getCurrentPaddingRight() - config.legend_inset_x + 0.5\n };\n\n $$.margin3 = {\n top: $$.isLegendRight ? 0 : $$.isLegendInset ? insetLegendPosition.top : $$.currentHeight - legendHeight,\n right: NaN,\n bottom: 0,\n left: $$.isLegendRight ? $$.currentWidth - legendWidth : $$.isLegendInset ? insetLegendPosition.left : 0\n };\n};\nc3_chart_internal_fn.transformLegend = function (withTransition) {\n var $$ = this;\n (withTransition ? $$.legend.transition() : $$.legend).attr(\"transform\", $$.getTranslate('legend'));\n};\nc3_chart_internal_fn.updateLegendStep = function (step) {\n this.legendStep = step;\n};\nc3_chart_internal_fn.updateLegendItemWidth = function (w) {\n this.legendItemWidth = w;\n};\nc3_chart_internal_fn.updateLegendItemHeight = function (h) {\n this.legendItemHeight = h;\n};\nc3_chart_internal_fn.getLegendWidth = function () {\n var $$ = this;\n return $$.config.legend_show ? $$.isLegendRight || $$.isLegendInset ? $$.legendItemWidth * ($$.legendStep + 1) : $$.currentWidth : 0;\n};\nc3_chart_internal_fn.getLegendHeight = function () {\n var $$ = this,\n h = 0;\n if ($$.config.legend_show) {\n if ($$.isLegendRight) {\n h = $$.currentHeight;\n } else {\n h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1);\n }\n }\n return h;\n};\nc3_chart_internal_fn.opacityForLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 1;\n};\nc3_chart_internal_fn.opacityForUnfocusedLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3;\n};\nc3_chart_internal_fn.toggleFocusLegend = function (targetIds, focus) {\n var $$ = this;\n targetIds = $$.mapToTargetIds(targetIds);\n $$.legend.selectAll('.' + CLASS.legendItem).filter(function (id) {\n return targetIds.indexOf(id) >= 0;\n }).classed(CLASS.legendItemFocused, focus).transition().duration(100).style('opacity', function () {\n var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend;\n return opacity.call($$, $$.d3.select(this));\n });\n};\nc3_chart_internal_fn.revertLegend = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemFocused, false).transition().duration(100).style('opacity', function () {\n return $$.opacityForLegend(d3.select(this));\n });\n};\nc3_chart_internal_fn.showLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n if (!config.legend_show) {\n config.legend_show = true;\n $$.legend.style('visibility', 'visible');\n if (!$$.legendHasRendered) {\n $$.updateLegendWithDefaults();\n }\n }\n $$.removeHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('visibility', 'visible').transition().style('opacity', function () {\n return $$.opacityForLegend($$.d3.select(this));\n });\n};\nc3_chart_internal_fn.hideLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n if (config.legend_show && isEmpty(targetIds)) {\n config.legend_show = false;\n $$.legend.style('visibility', 'hidden');\n }\n $$.addHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('opacity', 0).style('visibility', 'hidden');\n};\nc3_chart_internal_fn.clearLegendItemTextBoxCache = function () {\n this.legendItemTextBox = {};\n};\nc3_chart_internal_fn.updateLegend = function (targetIds, options, transitions) {\n var $$ = this,\n config = $$.config;\n var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect, x1ForLegendTile, x2ForLegendTile, yForLegendTile;\n var paddingTop = 4,\n paddingRight = 10,\n maxWidth = 0,\n maxHeight = 0,\n posMin = 10,\n tileWidth = config.legend_item_tile_width + 5;\n var l,\n totalLength = 0,\n offsets = {},\n widths = {},\n heights = {},\n margins = [0],\n steps = {},\n step = 0;\n var withTransition, withTransitionForTransform;\n var texts, rects, tiles, background;\n\n // Skip elements when their name is set to null\n targetIds = targetIds.filter(function (id) {\n return !isDefined(config.data_names[id]) || config.data_names[id] !== null;\n });\n\n options = options || {};\n withTransition = getOption(options, \"withTransition\", true);\n withTransitionForTransform = getOption(options, \"withTransitionForTransform\", true);\n\n function getTextBox(textElement, id) {\n if (!$$.legendItemTextBox[id]) {\n $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem, textElement);\n }\n return $$.legendItemTextBox[id];\n }\n\n function updatePositions(textElement, id, index) {\n var reset = index === 0,\n isLast = index === targetIds.length - 1,\n box = getTextBox(textElement, id),\n itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight) + config.legend_padding,\n itemHeight = box.height + paddingTop,\n itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth,\n areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(),\n margin,\n maxLength;\n\n // MEMO: care about condifion of step, totalLength\n function updateValues(id, withoutStep) {\n if (!withoutStep) {\n margin = (areaLength - totalLength - itemLength) / 2;\n if (margin < posMin) {\n margin = (areaLength - itemLength) / 2;\n totalLength = 0;\n step++;\n }\n }\n steps[id] = step;\n margins[step] = $$.isLegendInset ? 10 : margin;\n offsets[id] = totalLength;\n totalLength += itemLength;\n }\n\n if (reset) {\n totalLength = 0;\n step = 0;\n maxWidth = 0;\n maxHeight = 0;\n }\n\n if (config.legend_show && !$$.isLegendToShow(id)) {\n widths[id] = heights[id] = steps[id] = offsets[id] = 0;\n return;\n }\n\n widths[id] = itemWidth;\n heights[id] = itemHeight;\n\n if (!maxWidth || itemWidth >= maxWidth) {\n maxWidth = itemWidth;\n }\n if (!maxHeight || itemHeight >= maxHeight) {\n maxHeight = itemHeight;\n }\n maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth;\n\n if (config.legend_equally) {\n Object.keys(widths).forEach(function (id) {\n widths[id] = maxWidth;\n });\n Object.keys(heights).forEach(function (id) {\n heights[id] = maxHeight;\n });\n margin = (areaLength - maxLength * targetIds.length) / 2;\n if (margin < posMin) {\n totalLength = 0;\n step = 0;\n targetIds.forEach(function (id) {\n updateValues(id);\n });\n } else {\n updateValues(id, true);\n }\n } else {\n updateValues(id);\n }\n }\n\n if ($$.isLegendInset) {\n step = config.legend_inset_step ? config.legend_inset_step : targetIds.length;\n $$.updateLegendStep(step);\n }\n\n if ($$.isLegendRight) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id];\n };\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else if ($$.isLegendInset) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id] + 10;\n };\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else {\n xForLegend = function xForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n yForLegend = function yForLegend(id) {\n return maxHeight * steps[id];\n };\n }\n xForLegendText = function xForLegendText(id, i) {\n return xForLegend(id, i) + 4 + config.legend_item_tile_width;\n };\n yForLegendText = function yForLegendText(id, i) {\n return yForLegend(id, i) + 9;\n };\n xForLegendRect = function xForLegendRect(id, i) {\n return xForLegend(id, i);\n };\n yForLegendRect = function yForLegendRect(id, i) {\n return yForLegend(id, i) - 5;\n };\n x1ForLegendTile = function x1ForLegendTile(id, i) {\n return xForLegend(id, i) - 2;\n };\n x2ForLegendTile = function x2ForLegendTile(id, i) {\n return xForLegend(id, i) - 2 + config.legend_item_tile_width;\n };\n yForLegendTile = function yForLegendTile(id, i) {\n return yForLegend(id, i) + 4;\n };\n\n // Define g for legend area\n l = $$.legend.selectAll('.' + CLASS.legendItem).data(targetIds).enter().append('g').attr('class', function (id) {\n return $$.generateClass(CLASS.legendItem, id);\n }).style('visibility', function (id) {\n return $$.isLegendToShow(id) ? 'visible' : 'hidden';\n }).style('cursor', 'pointer').on('click', function (id) {\n if (config.legend_item_onclick) {\n config.legend_item_onclick.call($$, id);\n } else {\n if ($$.d3.event.altKey) {\n $$.api.hide();\n $$.api.show(id);\n } else {\n $$.api.toggle(id);\n $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert();\n }\n }\n }).on('mouseover', function (id) {\n if (config.legend_item_onmouseover) {\n config.legend_item_onmouseover.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, true);\n if (!$$.transiting && $$.isTargetToShow(id)) {\n $$.api.focus(id);\n }\n }\n }).on('mouseout', function (id) {\n if (config.legend_item_onmouseout) {\n config.legend_item_onmouseout.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, false);\n $$.api.revert();\n }\n });\n l.append('text').text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n }).each(function (id, i) {\n updatePositions(this, id, i);\n }).style(\"pointer-events\", \"none\").attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText);\n l.append('rect').attr(\"class\", CLASS.legendItemEvent).style('fill-opacity', 0).attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect);\n l.append('line').attr('class', CLASS.legendItemTile).style('stroke', $$.color).style(\"pointer-events\", \"none\").attr('x1', $$.isLegendRight || $$.isLegendInset ? x1ForLegendTile : -200).attr('y1', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('x2', $$.isLegendRight || $$.isLegendInset ? x2ForLegendTile : -200).attr('y2', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('stroke-width', config.legend_item_tile_height);\n\n // Set background for inset legend\n background = $$.legend.select('.' + CLASS.legendBackground + ' rect');\n if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) {\n background = $$.legend.insert('g', '.' + CLASS.legendItem).attr(\"class\", CLASS.legendBackground).append('rect');\n }\n\n texts = $$.legend.selectAll('text').data(targetIds).text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n } // MEMO: needed for update\n ).each(function (id, i) {\n updatePositions(this, id, i);\n });\n (withTransition ? texts.transition() : texts).attr('x', xForLegendText).attr('y', yForLegendText);\n\n rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent).data(targetIds);\n (withTransition ? rects.transition() : rects).attr('width', function (id) {\n return widths[id];\n }).attr('height', function (id) {\n return heights[id];\n }).attr('x', xForLegendRect).attr('y', yForLegendRect);\n\n tiles = $$.legend.selectAll('line.' + CLASS.legendItemTile).data(targetIds);\n (withTransition ? tiles.transition() : tiles).style('stroke', $$.color).attr('x1', x1ForLegendTile).attr('y1', yForLegendTile).attr('x2', x2ForLegendTile).attr('y2', yForLegendTile);\n\n if (background) {\n (withTransition ? background.transition() : background).attr('height', $$.getLegendHeight() - 12).attr('width', maxWidth * (step + 1) + 10);\n }\n\n // toggle legend state\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemHidden, function (id) {\n return !$$.isTargetToShow(id);\n });\n\n // Update all to reflect change of legend\n $$.updateLegendItemWidth(maxWidth);\n $$.updateLegendItemHeight(maxHeight);\n $$.updateLegendStep(step);\n // Update size and scale\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize();\n // Update g positions\n $$.transformAll(withTransitionForTransform, transitions);\n $$.legendHasRendered = true;\n};\n\nc3_chart_internal_fn.initRegion = function () {\n var $$ = this;\n $$.region = $$.main.append('g').attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.regions);\n};\nc3_chart_internal_fn.updateRegion = function (duration) {\n var $$ = this,\n config = $$.config;\n\n // hide if arc type\n $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n $$.mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region).data(config.regions);\n $$.mainRegion.enter().append('g').append('rect').style(\"fill-opacity\", 0);\n $$.mainRegion.attr('class', $$.classRegion.bind($$));\n $$.mainRegion.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n};\nc3_chart_internal_fn.redrawRegion = function (withTransition) {\n var $$ = this,\n regions = $$.mainRegion.selectAll('rect').each(function () {\n // data is binded to g and it's not transferred to rect (child node) automatically,\n // then data of each rect has to be updated manually.\n // TODO: there should be more efficient way to solve this?\n var parentData = $$.d3.select(this.parentNode).datum();\n $$.d3.select(this).datum(parentData);\n }),\n x = $$.regionX.bind($$),\n y = $$.regionY.bind($$),\n w = $$.regionWidth.bind($$),\n h = $$.regionHeight.bind($$);\n return [(withTransition ? regions.transition() : regions).attr(\"x\", x).attr(\"y\", y).attr(\"width\", w).attr(\"height\", h).style(\"fill-opacity\", function (d) {\n return isValue(d.opacity) ? d.opacity : 0.1;\n })];\n};\nc3_chart_internal_fn.regionX = function (d) {\n var $$ = this,\n config = $$.config,\n xPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n xPos = config.axis_rotated ? 'start' in d ? yScale(d.start) : 0 : 0;\n } else {\n xPos = config.axis_rotated ? 0 : 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0;\n }\n return xPos;\n};\nc3_chart_internal_fn.regionY = function (d) {\n var $$ = this,\n config = $$.config,\n yPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n yPos = config.axis_rotated ? 0 : 'end' in d ? yScale(d.end) : 0;\n } else {\n yPos = config.axis_rotated ? 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0 : 0;\n }\n return yPos;\n};\nc3_chart_internal_fn.regionWidth = function (d) {\n var $$ = this,\n config = $$.config,\n start = $$.regionX(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? 'end' in d ? yScale(d.end) : $$.width : $$.width;\n } else {\n end = config.axis_rotated ? $$.width : 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.width;\n }\n return end < start ? 0 : end - start;\n};\nc3_chart_internal_fn.regionHeight = function (d) {\n var $$ = this,\n config = $$.config,\n start = this.regionY(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? $$.height : 'start' in d ? yScale(d.start) : $$.height;\n } else {\n end = config.axis_rotated ? 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.height : $$.height;\n }\n return end < start ? 0 : end - start;\n};\nc3_chart_internal_fn.isRegionOnX = function (d) {\n return !d.axis || d.axis === 'x';\n};\n\nc3_chart_internal_fn.getScale = function (min, max, forTimeseries) {\n return (forTimeseries ? this.d3.time.scale() : this.d3.scale.linear()).range([min, max]);\n};\nc3_chart_internal_fn.getX = function (min, max, domain, offset) {\n var $$ = this,\n scale = $$.getScale(min, max, $$.isTimeSeries()),\n _scale = domain ? scale.domain(domain) : scale,\n key;\n // Define customized scale if categorized axis\n if ($$.isCategorized()) {\n offset = offset || function () {\n return 0;\n };\n scale = function scale(d, raw) {\n var v = _scale(d) + offset(d);\n return raw ? v : Math.ceil(v);\n };\n } else {\n scale = function scale(d, raw) {\n var v = _scale(d);\n return raw ? v : Math.ceil(v);\n };\n }\n // define functions\n for (key in _scale) {\n scale[key] = _scale[key];\n }\n scale.orgDomain = function () {\n return _scale.domain();\n };\n // define custom domain() for categorized axis\n if ($$.isCategorized()) {\n scale.domain = function (domain) {\n if (!arguments.length) {\n domain = this.orgDomain();\n return [domain[0], domain[1] + 1];\n }\n _scale.domain(domain);\n return scale;\n };\n }\n return scale;\n};\nc3_chart_internal_fn.getY = function (min, max, domain) {\n var scale = this.getScale(min, max, this.isTimeSeriesY());\n if (domain) {\n scale.domain(domain);\n }\n return scale;\n};\nc3_chart_internal_fn.getYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.y2 : this.y;\n};\nc3_chart_internal_fn.getSubYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY;\n};\nc3_chart_internal_fn.updateScales = function () {\n var $$ = this,\n config = $$.config,\n forInit = !$$.x;\n // update edges\n $$.xMin = config.axis_rotated ? 1 : 0;\n $$.xMax = config.axis_rotated ? $$.height : $$.width;\n $$.yMin = config.axis_rotated ? 0 : $$.height;\n $$.yMax = config.axis_rotated ? $$.width : 1;\n $$.subXMin = $$.xMin;\n $$.subXMax = $$.xMax;\n $$.subYMin = config.axis_rotated ? 0 : $$.height2;\n $$.subYMax = config.axis_rotated ? $$.width2 : 1;\n // update scales\n $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () {\n return $$.xAxis.tickOffset();\n });\n $$.y = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y_default : $$.y.domain());\n $$.y2 = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y2_default : $$.y2.domain());\n $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) {\n return d % 1 ? 0 : $$.subXAxis.tickOffset();\n });\n $$.subY = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y_default : $$.subY.domain());\n $$.subY2 = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y2_default : $$.subY2.domain());\n // update axes\n $$.xAxisTickFormat = $$.axis.getXAxisTickFormat();\n $$.xAxisTickValues = $$.axis.getXAxisTickValues();\n $$.yAxisTickValues = $$.axis.getYAxisTickValues();\n $$.y2AxisTickValues = $$.axis.getY2AxisTickValues();\n\n $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.yAxis = $$.axis.getYAxis($$.y, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, config.axis_y_tick_outer);\n $$.y2Axis = $$.axis.getYAxis($$.y2, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, config.axis_y2_tick_outer);\n\n // Set initialized scales to brush and zoom\n if (!forInit) {\n if ($$.brush) {\n $$.brush.scale($$.subX);\n }\n if (config.zoom_enabled) {\n $$.zoom.scale($$.x);\n }\n }\n // update for arc\n if ($$.updateArc) {\n $$.updateArc();\n }\n};\n\nc3_chart_internal_fn.selectPoint = function (target, d, i) {\n var $$ = this,\n config = $$.config,\n cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$),\n cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$),\n r = $$.pointSelectR.bind($$);\n config.data_onselected.call($$.api, d, target.node());\n // add selected-circle on low layer g\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).data([d]).enter().append('circle').attr(\"class\", function () {\n return $$.generateClass(CLASS.selectedCircle, i);\n }).attr(\"cx\", cx).attr(\"cy\", cy).attr(\"stroke\", function () {\n return $$.color(d);\n }).attr(\"r\", function (d) {\n return $$.pointSelectR(d) * 1.4;\n }).transition().duration(100).attr(\"r\", r);\n};\nc3_chart_internal_fn.unselectPoint = function (target, d, i) {\n var $$ = this;\n $$.config.data_onunselected.call($$.api, d, target.node());\n // remove selected-circle from low layer g\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).transition().duration(100).attr('r', 0).remove();\n};\nc3_chart_internal_fn.togglePoint = function (selected, target, d, i) {\n selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i);\n};\nc3_chart_internal_fn.selectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onselected.call($$, d, target.node());\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.d3.rgb($$.color(d)).brighter(0.75);\n });\n }\n};\nc3_chart_internal_fn.unselectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onunselected.call($$, d, target.node());\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.color(d);\n });\n }\n};\nc3_chart_internal_fn.togglePath = function (selected, target, d, i) {\n selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i);\n};\nc3_chart_internal_fn.getToggle = function (that, d) {\n var $$ = this,\n toggle;\n if (that.nodeName === 'circle') {\n if ($$.isStepType(d)) {\n // circle is hidden in step chart, so treat as within the click area\n toggle = function toggle() {}; // TODO: how to select step chart?\n } else {\n toggle = $$.togglePoint;\n }\n } else if (that.nodeName === 'path') {\n toggle = $$.togglePath;\n }\n return toggle;\n};\nc3_chart_internal_fn.toggleShape = function (that, d, i) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n shape = d3.select(that),\n isSelected = shape.classed(CLASS.SELECTED),\n toggle = $$.getToggle(that, d).bind($$);\n\n if (config.data_selection_enabled && config.data_selection_isselectable(d)) {\n if (!config.data_selection_multiple) {\n $$.main.selectAll('.' + CLASS.shapes + (config.data_selection_grouped ? $$.getTargetSelectorSuffix(d.id) : \"\")).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this);\n if (shape.classed(CLASS.SELECTED)) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n });\n }\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle(!isSelected, shape, d, i);\n }\n};\n\nc3_chart_internal_fn.initBar = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars);\n};\nc3_chart_internal_fn.updateTargetsForBar = function (targets) {\n var $$ = this,\n config = $$.config,\n mainBarUpdate,\n mainBarEnter,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainBarUpdate = $$.main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets).attr('class', function (d) {\n return classChartBar(d) + classFocus(d);\n });\n mainBarEnter = mainBarUpdate.enter().append('g').attr('class', classChartBar).style(\"pointer-events\", \"none\");\n // Bars for each data\n mainBarEnter.append('g').attr(\"class\", classBars).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n });\n};\nc3_chart_internal_fn.updateBar = function (durationForExit) {\n var $$ = this,\n barData = $$.barData.bind($$),\n classBar = $$.classBar.bind($$),\n initialOpacity = $$.initialOpacity.bind($$),\n color = function color(d) {\n return $$.color(d.id);\n };\n $$.mainBar = $$.main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data(barData);\n $$.mainBar.enter().append('path').attr(\"class\", classBar).style(\"stroke\", color).style(\"fill\", color);\n $$.mainBar.style(\"opacity\", initialOpacity);\n $$.mainBar.exit().transition().duration(durationForExit).remove();\n};\nc3_chart_internal_fn.redrawBar = function (drawBar, withTransition) {\n return [(withTransition ? this.mainBar.transition(Math.random().toString()) : this.mainBar).attr('d', drawBar).style(\"stroke\", this.color).style(\"fill\", this.color).style(\"opacity\", 1)];\n};\nc3_chart_internal_fn.getBarW = function (axis, barTargetsNum) {\n var $$ = this,\n config = $$.config,\n w = typeof config.bar_width === 'number' ? config.bar_width : barTargetsNum ? axis.tickInterval() * config.bar_width_ratio / barTargetsNum : 0;\n return config.bar_width_max && w > config.bar_width_max ? config.bar_width_max : w;\n};\nc3_chart_internal_fn.getBars = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : ''));\n};\nc3_chart_internal_fn.expandBars = function (i, id, reset) {\n var $$ = this;\n if (reset) {\n $$.unexpandBars();\n }\n $$.getBars(i, id).classed(CLASS.EXPANDED, true);\n};\nc3_chart_internal_fn.unexpandBars = function (i) {\n var $$ = this;\n $$.getBars(i).classed(CLASS.EXPANDED, false);\n};\nc3_chart_internal_fn.generateDrawBar = function (barIndices, isSub) {\n var $$ = this,\n config = $$.config,\n getPoints = $$.generateGetBarPoints(barIndices, isSub);\n return function (d, i) {\n // 4 points that make a bar\n var points = getPoints(d, i);\n\n // switch points if axis is rotated, not applicable for sub chart\n var indexX = config.axis_rotated ? 1 : 0;\n var indexY = config.axis_rotated ? 0 : 1;\n\n var path = 'M ' + points[0][indexX] + ',' + points[0][indexY] + ' ' + 'L' + points[1][indexX] + ',' + points[1][indexY] + ' ' + 'L' + points[2][indexX] + ',' + points[2][indexY] + ' ' + 'L' + points[3][indexX] + ',' + points[3][indexY] + ' ' + 'z';\n\n return path;\n };\n};\nc3_chart_internal_fn.generateGetBarPoints = function (barIndices, isSub) {\n var $$ = this,\n axis = isSub ? $$.subXAxis : $$.xAxis,\n barTargetsNum = barIndices.__max__ + 1,\n barW = $$.getBarW(axis, barTargetsNum),\n barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub),\n barY = $$.getShapeY(!!isSub),\n barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub),\n barSpaceOffset = barW * ($$.config.bar_space / 2),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = barOffset(d, i) || y0,\n // offset is for stacked bar chart\n posX = barX(d),\n posY = barY(d);\n // fix posY not to overflow opposite quadrant\n if ($$.config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n }\n // 4 points that make a bar\n return [[posX + barSpaceOffset, offset], [posX + barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, offset]];\n };\n};\nc3_chart_internal_fn.isWithinBar = function (that) {\n var mouse = this.d3.mouse(that),\n box = that.getBoundingClientRect(),\n seg0 = that.pathSegList.getItem(0),\n seg1 = that.pathSegList.getItem(1),\n x = Math.min(seg0.x, seg1.x),\n y = Math.min(seg0.y, seg1.y),\n w = box.width,\n h = box.height,\n offset = 2,\n sx = x - offset,\n ex = x + w + offset,\n sy = y + h + offset,\n ey = y - offset;\n return sx < mouse[0] && mouse[0] < ex && ey < mouse[1] && mouse[1] < sy;\n};\n\nc3_chart_internal_fn.getShapeIndices = function (typeFilter) {\n var $$ = this,\n config = $$.config,\n indices = {},\n i = 0,\n j,\n k;\n $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) {\n for (j = 0; j < config.data_groups.length; j++) {\n if (config.data_groups[j].indexOf(d.id) < 0) {\n continue;\n }\n for (k = 0; k < config.data_groups[j].length; k++) {\n if (config.data_groups[j][k] in indices) {\n indices[d.id] = indices[config.data_groups[j][k]];\n break;\n }\n }\n }\n if (isUndefined(indices[d.id])) {\n indices[d.id] = i++;\n }\n });\n indices.__max__ = i - 1;\n return indices;\n};\nc3_chart_internal_fn.getShapeX = function (offset, targetsNum, indices, isSub) {\n var $$ = this,\n scale = isSub ? $$.subX : $$.x;\n return function (d) {\n var index = d.id in indices ? indices[d.id] : 0;\n return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0;\n };\n};\nc3_chart_internal_fn.getShapeY = function (isSub) {\n var $$ = this;\n return function (d) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id);\n return scale(d.value);\n };\n};\nc3_chart_internal_fn.getShapeOffset = function (typeFilter, indices, isSub) {\n var $$ = this,\n targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))),\n targetIds = targets.map(function (t) {\n return t.id;\n });\n return function (d, i) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id),\n y0 = scale(0),\n offset = y0;\n targets.forEach(function (t) {\n var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values;\n if (t.id === d.id || indices[t.id] !== indices[d.id]) {\n return;\n }\n if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) {\n // check if the x values line up\n if (typeof values[i] === 'undefined' || +values[i].x !== +d.x) {\n // \"+\" for timeseries\n // if not, try to find the value that does line up\n i = -1;\n values.forEach(function (v, j) {\n if (v.x === d.x) {\n i = j;\n }\n });\n }\n if (i in values && values[i].value * d.value >= 0) {\n offset += scale(values[i].value) - y0;\n }\n }\n });\n return offset;\n };\n};\nc3_chart_internal_fn.isWithinShape = function (that, d) {\n var $$ = this,\n shape = $$.d3.select(that),\n isWithin;\n if (!$$.isTargetToShow(d.id)) {\n isWithin = false;\n } else if (that.nodeName === 'circle') {\n isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);\n } else if (that.nodeName === 'path') {\n isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar(that) : true;\n }\n return isWithin;\n};\n\nc3_chart_internal_fn.getInterpolate = function (d) {\n var $$ = this,\n interpolation = $$.isInterpolationType($$.config.spline_interpolation_type) ? $$.config.spline_interpolation_type : 'cardinal';\n return $$.isSplineType(d) ? interpolation : $$.isStepType(d) ? $$.config.line_step_type : \"linear\";\n};\n\nc3_chart_internal_fn.initLine = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines);\n};\nc3_chart_internal_fn.updateTargetsForLine = function (targets) {\n var $$ = this,\n config = $$.config,\n mainLineUpdate,\n mainLineEnter,\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$),\n classCircles = $$.classCircles.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainLineUpdate = $$.main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets).attr('class', function (d) {\n return classChartLine(d) + classFocus(d);\n });\n mainLineEnter = mainLineUpdate.enter().append('g').attr('class', classChartLine).style('opacity', 0).style(\"pointer-events\", \"none\");\n // Lines for each data\n mainLineEnter.append('g').attr(\"class\", classLines);\n // Areas\n mainLineEnter.append('g').attr('class', classAreas);\n // Circles for each data point on lines\n mainLineEnter.append('g').attr(\"class\", function (d) {\n return $$.generateClass(CLASS.selectedCircles, d.id);\n });\n mainLineEnter.append('g').attr(\"class\", classCircles).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n });\n // Update date for selected circles\n targets.forEach(function (t) {\n $$.main.selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id)).selectAll('.' + CLASS.selectedCircle).each(function (d) {\n d.value = t.values[d.index].value;\n });\n });\n // MEMO: can not keep same color...\n //mainLineUpdate.exit().remove();\n};\nc3_chart_internal_fn.updateLine = function (durationForExit) {\n var $$ = this;\n $$.mainLine = $$.main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n $$.mainLine.enter().append('path').attr('class', $$.classLine.bind($$)).style(\"stroke\", $$.color);\n $$.mainLine.style(\"opacity\", $$.initialOpacity.bind($$)).style('shape-rendering', function (d) {\n return $$.isStepType(d) ? 'crispEdges' : '';\n }).attr('transform', null);\n $$.mainLine.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n};\nc3_chart_internal_fn.redrawLine = function (drawLine, withTransition) {\n return [(withTransition ? this.mainLine.transition(Math.random().toString()) : this.mainLine).attr(\"d\", drawLine).style(\"stroke\", this.color).style(\"opacity\", 1)];\n};\nc3_chart_internal_fn.generateDrawLine = function (lineIndices, isSub) {\n var $$ = this,\n config = $$.config,\n line = $$.d3.svg.line(),\n getPoints = $$.generateGetLinePoints(lineIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n yValue = function yValue(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n line = config.axis_rotated ? line.x(yValue).y(xValue) : line.x(xValue).y(yValue);\n if (!config.line_connectNull) {\n line = line.defined(function (d) {\n return d.value != null;\n });\n }\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x = isSub ? $$.x : $$.subX,\n y = yScaleGetter.call($$, d.id),\n x0 = 0,\n y0 = 0,\n path;\n if ($$.isLineType(d)) {\n if (config.data_regions[d.id]) {\n path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]);\n } else {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n path = line.interpolate($$.getInterpolate(d))(values);\n }\n } else {\n if (values[0]) {\n x0 = x(values[0].x);\n y0 = y(values[0].value);\n }\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n return path ? path : \"M 0 0\";\n };\n};\nc3_chart_internal_fn.generateGetLinePoints = function (lineIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n lineTargetsNum = lineIndices.__max__ + 1,\n x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = lineOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d);\n // fix posY not to overflow opposite quadrant\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n }\n // 1 point that marks the line position\n return [[posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)] // needed for compatibility\n ];\n };\n};\n\nc3_chart_internal_fn.lineWithRegions = function (d, x, y, _regions) {\n var $$ = this,\n config = $$.config,\n prev = -1,\n i,\n j,\n s = \"M\",\n sWithRegion,\n xp,\n yp,\n dx,\n dy,\n dd,\n diff,\n diffx2,\n xOffset = $$.isCategorized() ? 0.5 : 0,\n xValue,\n yValue,\n regions = [];\n\n function isWithinRegions(x, regions) {\n var i;\n for (i = 0; i < regions.length; i++) {\n if (regions[i].start < x && x <= regions[i].end) {\n return true;\n }\n }\n return false;\n }\n\n // Check start/end of regions\n if (isDefined(_regions)) {\n for (i = 0; i < _regions.length; i++) {\n regions[i] = {};\n if (isUndefined(_regions[i].start)) {\n regions[i].start = d[0].x;\n } else {\n regions[i].start = $$.isTimeSeries() ? $$.parseDate(_regions[i].start) : _regions[i].start;\n }\n if (isUndefined(_regions[i].end)) {\n regions[i].end = d[d.length - 1].x;\n } else {\n regions[i].end = $$.isTimeSeries() ? $$.parseDate(_regions[i].end) : _regions[i].end;\n }\n }\n }\n\n // Set scales\n xValue = config.axis_rotated ? function (d) {\n return y(d.value);\n } : function (d) {\n return x(d.x);\n };\n yValue = config.axis_rotated ? function (d) {\n return x(d.x);\n } : function (d) {\n return y(d.value);\n };\n\n // Define svg generator function for region\n function generateM(points) {\n return 'M' + points[0][0] + ' ' + points[0][1] + ' ' + points[1][0] + ' ' + points[1][1];\n }\n if ($$.isTimeSeries()) {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var x0 = d0.x.getTime(),\n x_diff = d1.x - d0.x,\n xv0 = new Date(x0 + x_diff * j),\n xv1 = new Date(x0 + x_diff * (j + diff)),\n points;\n if (config.axis_rotated) {\n points = [[y(yp(j)), x(xv0)], [y(yp(j + diff)), x(xv1)]];\n } else {\n points = [[x(xv0), y(yp(j))], [x(xv1), y(yp(j + diff))]];\n }\n return generateM(points);\n };\n } else {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var points;\n if (config.axis_rotated) {\n points = [[y(yp(j), true), x(xp(j))], [y(yp(j + diff), true), x(xp(j + diff))]];\n } else {\n points = [[x(xp(j), true), y(yp(j))], [x(xp(j + diff), true), y(yp(j + diff))]];\n }\n return generateM(points);\n };\n }\n\n // Generate\n for (i = 0; i < d.length; i++) {\n\n // Draw as normal\n if (isUndefined(regions) || !isWithinRegions(d[i].x, regions)) {\n s += \" \" + xValue(d[i]) + \" \" + yValue(d[i]);\n }\n // Draw with region // TODO: Fix for horizotal charts\n else {\n xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries());\n yp = $$.getScale(d[i - 1].value, d[i].value);\n\n dx = x(d[i].x) - x(d[i - 1].x);\n dy = y(d[i].value) - y(d[i - 1].value);\n dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n diff = 2 / dd;\n diffx2 = diff * 2;\n\n for (j = diff; j <= 1; j += diffx2) {\n s += sWithRegion(d[i - 1], d[i], j, diff);\n }\n }\n prev = d[i].x;\n }\n\n return s;\n};\n\nc3_chart_internal_fn.updateArea = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n $$.mainArea = $$.main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n $$.mainArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');return 0;\n });\n $$.mainArea.style(\"opacity\", $$.orgAreaOpacity);\n $$.mainArea.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n};\nc3_chart_internal_fn.redrawArea = function (drawArea, withTransition) {\n return [(withTransition ? this.mainArea.transition(Math.random().toString()) : this.mainArea).attr(\"d\", drawArea).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity)];\n};\nc3_chart_internal_fn.generateDrawArea = function (areaIndices, isSub) {\n var $$ = this,\n config = $$.config,\n area = $$.d3.svg.area(),\n getPoints = $$.generateGetAreaPoints(areaIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n value0 = function value0(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id));\n },\n value1 = function value1(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(config.area_above ? 0 : value0).y1(value1);\n if (!config.line_connectNull) {\n area = area.defined(function (d) {\n return d.value !== null;\n });\n }\n\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x0 = 0,\n y0 = 0,\n path;\n if ($$.isAreaType(d)) {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n path = area.interpolate($$.getInterpolate(d))(values);\n } else {\n if (values[0]) {\n x0 = $$.x(values[0].x);\n y0 = $$.getYScale(d.id)(values[0].value);\n }\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n return path ? path : \"M 0 0\";\n };\n};\nc3_chart_internal_fn.getAreaBaseValue = function () {\n return 0;\n};\nc3_chart_internal_fn.generateGetAreaPoints = function (areaIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n areaTargetsNum = areaIndices.__max__ + 1,\n x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = areaOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d);\n // fix posY not to overflow opposite quadrant\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n }\n // 1 point that marks the area position\n return [[posX, offset], [posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, offset] // needed for compatibility\n ];\n };\n};\n\nc3_chart_internal_fn.updateCircle = function () {\n var $$ = this;\n $$.mainCircle = $$.main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle).data($$.lineOrScatterData.bind($$));\n $$.mainCircle.enter().append(\"circle\").attr(\"class\", $$.classCircle.bind($$)).attr(\"r\", $$.pointR.bind($$)).style(\"fill\", $$.color);\n $$.mainCircle.style(\"opacity\", $$.initialOpacityForCircle.bind($$));\n $$.mainCircle.exit().remove();\n};\nc3_chart_internal_fn.redrawCircle = function (cx, cy, withTransition) {\n var selectedCircles = this.main.selectAll('.' + CLASS.selectedCircle);\n return [(withTransition ? this.mainCircle.transition(Math.random().toString()) : this.mainCircle).style('opacity', this.opacityForCircle.bind(this)).style(\"fill\", this.color).attr(\"cx\", cx).attr(\"cy\", cy), (withTransition ? selectedCircles.transition(Math.random().toString()) : selectedCircles).attr(\"cx\", cx).attr(\"cy\", cy)];\n};\nc3_chart_internal_fn.circleX = function (d) {\n return d.x || d.x === 0 ? this.x(d.x) : null;\n};\nc3_chart_internal_fn.updateCircleY = function () {\n var $$ = this,\n lineIndices,\n getPoints;\n if ($$.config.data_groups.length > 0) {\n lineIndices = $$.getShapeIndices($$.isLineType), getPoints = $$.generateGetLinePoints(lineIndices);\n $$.circleY = function (d, i) {\n return getPoints(d, i)[0][1];\n };\n } else {\n $$.circleY = function (d) {\n return $$.getYScale(d.id)(d.value);\n };\n }\n};\nc3_chart_internal_fn.getCircles = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : ''));\n};\nc3_chart_internal_fn.expandCircles = function (i, id, reset) {\n var $$ = this,\n r = $$.pointExpandedR.bind($$);\n if (reset) {\n $$.unexpandCircles();\n }\n $$.getCircles(i, id).classed(CLASS.EXPANDED, true).attr('r', r);\n};\nc3_chart_internal_fn.unexpandCircles = function (i) {\n var $$ = this,\n r = $$.pointR.bind($$);\n $$.getCircles(i).filter(function () {\n return $$.d3.select(this).classed(CLASS.EXPANDED);\n }).classed(CLASS.EXPANDED, false).attr('r', r);\n};\nc3_chart_internal_fn.pointR = function (d) {\n var $$ = this,\n config = $$.config;\n return $$.isStepType(d) ? 0 : isFunction(config.point_r) ? config.point_r(d) : config.point_r;\n};\nc3_chart_internal_fn.pointExpandedR = function (d) {\n var $$ = this,\n config = $$.config;\n if (config.point_focus_expand_enabled) {\n return isFunction(config.point_focus_expand_r) ? config.point_focus_expand_r(d) : config.point_focus_expand_r ? config.point_focus_expand_r : $$.pointR(d) * 1.75;\n } else {\n return $$.pointR(d);\n }\n};\nc3_chart_internal_fn.pointSelectR = function (d) {\n var $$ = this,\n config = $$.config;\n return isFunction(config.point_select_r) ? config.point_select_r(d) : config.point_select_r ? config.point_select_r : $$.pointR(d) * 4;\n};\nc3_chart_internal_fn.isWithinCircle = function (that, r) {\n var d3 = this.d3,\n mouse = d3.mouse(that),\n d3_this = d3.select(that),\n cx = +d3_this.attr(\"cx\"),\n cy = +d3_this.attr(\"cy\");\n return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r;\n};\nc3_chart_internal_fn.isWithinStep = function (that, y) {\n return Math.abs(y - this.d3.mouse(that)[1]) < 30;\n};\n\nc3_chart_internal_fn.getCurrentWidth = function () {\n var $$ = this,\n config = $$.config;\n return config.size_width ? config.size_width : $$.getParentWidth();\n};\nc3_chart_internal_fn.getCurrentHeight = function () {\n var $$ = this,\n config = $$.config,\n h = config.size_height ? config.size_height : $$.getParentHeight();\n return h > 0 ? h : 320 / ($$.hasType('gauge') && !config.gauge_fullCircle ? 2 : 1);\n};\nc3_chart_internal_fn.getCurrentPaddingTop = function () {\n var $$ = this,\n config = $$.config,\n padding = isValue(config.padding_top) ? config.padding_top : 0;\n if ($$.title && $$.title.node()) {\n padding += $$.getTitlePadding();\n }\n return padding;\n};\nc3_chart_internal_fn.getCurrentPaddingBottom = function () {\n var config = this.config;\n return isValue(config.padding_bottom) ? config.padding_bottom : 0;\n};\nc3_chart_internal_fn.getCurrentPaddingLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config;\n if (isValue(config.padding_left)) {\n return config.padding_left;\n } else if (config.axis_rotated) {\n return !config.axis_x_show ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);\n } else if (!config.axis_y_show || config.axis_y_inner) {\n // && !config.axis_rotated\n return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1;\n } else {\n return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));\n }\n};\nc3_chart_internal_fn.getCurrentPaddingRight = function () {\n var $$ = this,\n config = $$.config,\n defaultPadding = 10,\n legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0;\n if (isValue(config.padding_right)) {\n return config.padding_right + 1; // 1 is needed not to hide tick line\n } else if (config.axis_rotated) {\n return defaultPadding + legendWidthOnRight;\n } else if (!config.axis_y2_show || config.axis_y2_inner) {\n // && !config.axis_rotated\n return 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0);\n } else {\n return ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;\n }\n};\n\nc3_chart_internal_fn.getParentRectValue = function (key) {\n var parent = this.selectChart.node(),\n v;\n while (parent && parent.tagName !== 'BODY') {\n try {\n v = parent.getBoundingClientRect()[key];\n } catch (e) {\n if (key === 'width') {\n // In IE in certain cases getBoundingClientRect\n // will cause an \"unspecified error\"\n v = parent.offsetWidth;\n }\n }\n if (v) {\n break;\n }\n parent = parent.parentNode;\n }\n return v;\n};\nc3_chart_internal_fn.getParentWidth = function () {\n return this.getParentRectValue('width');\n};\nc3_chart_internal_fn.getParentHeight = function () {\n var h = this.selectChart.style('height');\n return h.indexOf('px') > 0 ? +h.replace('px', '') : 0;\n};\n\nc3_chart_internal_fn.getSvgLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config,\n hasLeftAxisRect = config.axis_rotated || !config.axis_rotated && !config.axis_y_inner,\n leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY,\n leftAxis = $$.main.select('.' + leftAxisClass).node(),\n svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : { right: 0 },\n chartRect = $$.selectChart.node().getBoundingClientRect(),\n hasArc = $$.hasArcType(),\n svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute));\n return svgLeft > 0 ? svgLeft : 0;\n};\n\nc3_chart_internal_fn.getAxisWidthByAxisId = function (id, withoutRecompute) {\n var $$ = this,\n position = $$.axis.getLabelPositionById(id);\n return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40);\n};\nc3_chart_internal_fn.getHorizontalAxisHeight = function (axisId) {\n var $$ = this,\n config = $$.config,\n h = 30;\n if (axisId === 'x' && !config.axis_x_show) {\n return 8;\n }\n if (axisId === 'x' && config.axis_x_height) {\n return config.axis_x_height;\n }\n if (axisId === 'y' && !config.axis_y_show) {\n return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1;\n }\n if (axisId === 'y2' && !config.axis_y2_show) {\n return $$.rotated_padding_top;\n }\n // Calculate x axis height when tick rotated\n if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_x_tick_rotate) / 180);\n }\n // Calculate y axis height when tick rotated\n if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_y_tick_rotate) / 180);\n }\n return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n};\n\nc3_chart_internal_fn.getEventRectWidth = function () {\n return Math.max(0, this.xAxis.tickInterval());\n};\n\nc3_chart_internal_fn.initBrush = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.brush = d3.svg.brush().on(\"brush\", function () {\n $$.redrawForBrush();\n });\n $$.brush.update = function () {\n if ($$.context) {\n $$.context.select('.' + CLASS.brush).call(this);\n }\n return this;\n };\n $$.brush.scale = function (scale) {\n return $$.config.axis_rotated ? this.y(scale) : this.x(scale);\n };\n};\nc3_chart_internal_fn.initSubchart = function () {\n var $$ = this,\n config = $$.config,\n context = $$.context = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('context')),\n visibility = config.subchart_show ? 'visible' : 'hidden';\n\n context.style('visibility', visibility);\n\n // Define g for chart area\n context.append('g').attr(\"clip-path\", $$.clipPathForSubchart).attr('class', CLASS.chart);\n\n // Define g for bar chart area\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars);\n\n // Define g for line chart area\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines);\n\n // Add extent rect for Brush\n context.append(\"g\").attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.brush).call($$.brush);\n\n // ATTENTION: This must be called AFTER chart added\n // Add Axis\n $$.axes.subx = context.append(\"g\").attr(\"class\", CLASS.axisX).attr(\"transform\", $$.getTranslate('subx')).attr(\"clip-path\", config.axis_rotated ? \"\" : $$.clipPathForXAxis).style(\"visibility\", config.subchart_axis_x_show ? visibility : 'hidden');\n};\nc3_chart_internal_fn.updateTargetsForSubchart = function (targets) {\n var $$ = this,\n context = $$.context,\n config = $$.config,\n contextLineEnter,\n contextLineUpdate,\n contextBarEnter,\n contextBarUpdate,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$);\n\n if (config.subchart_show) {\n //-- Bar --//\n contextBarUpdate = context.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets).attr('class', classChartBar);\n contextBarEnter = contextBarUpdate.enter().append('g').style('opacity', 0).attr('class', classChartBar);\n // Bars for each data\n contextBarEnter.append('g').attr(\"class\", classBars);\n\n //-- Line --//\n contextLineUpdate = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets).attr('class', classChartLine);\n contextLineEnter = contextLineUpdate.enter().append('g').style('opacity', 0).attr('class', classChartLine);\n // Lines for each data\n contextLineEnter.append(\"g\").attr(\"class\", classLines);\n // Area\n contextLineEnter.append(\"g\").attr(\"class\", classAreas);\n\n //-- Brush --//\n context.selectAll('.' + CLASS.brush + ' rect').attr(config.axis_rotated ? \"width\" : \"height\", config.axis_rotated ? $$.width2 : $$.height2);\n }\n};\nc3_chart_internal_fn.updateBarForSubchart = function (durationForExit) {\n var $$ = this;\n $$.contextBar = $$.context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data($$.barData.bind($$));\n $$.contextBar.enter().append('path').attr(\"class\", $$.classBar.bind($$)).style(\"stroke\", 'none').style(\"fill\", $$.color);\n $$.contextBar.style(\"opacity\", $$.initialOpacity.bind($$));\n $$.contextBar.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n};\nc3_chart_internal_fn.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) {\n (withTransition ? this.contextBar.transition(Math.random().toString()).duration(duration) : this.contextBar).attr('d', drawBarOnSub).style('opacity', 1);\n};\nc3_chart_internal_fn.updateLineForSubchart = function (durationForExit) {\n var $$ = this;\n $$.contextLine = $$.context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n $$.contextLine.enter().append('path').attr('class', $$.classLine.bind($$)).style('stroke', $$.color);\n $$.contextLine.style(\"opacity\", $$.initialOpacity.bind($$));\n $$.contextLine.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n};\nc3_chart_internal_fn.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) {\n (withTransition ? this.contextLine.transition(Math.random().toString()).duration(duration) : this.contextLine).attr(\"d\", drawLineOnSub).style('opacity', 1);\n};\nc3_chart_internal_fn.updateAreaForSubchart = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n $$.contextArea = $$.context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n $$.contextArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');return 0;\n });\n $$.contextArea.style(\"opacity\", 0);\n $$.contextArea.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n};\nc3_chart_internal_fn.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) {\n (withTransition ? this.contextArea.transition(Math.random().toString()).duration(duration) : this.contextArea).attr(\"d\", drawAreaOnSub).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity);\n};\nc3_chart_internal_fn.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n drawAreaOnSub,\n drawBarOnSub,\n drawLineOnSub;\n\n $$.context.style('visibility', config.subchart_show ? 'visible' : 'hidden');\n\n // subchart\n if (config.subchart_show) {\n // reflect main chart to extent on subchart if zoomed\n if (d3.event && d3.event.type === 'zoom') {\n $$.brush.extent($$.x.orgDomain()).update();\n }\n // update subchart elements if needed\n if (withSubchart) {\n\n // extent rect\n if (!$$.brush.empty()) {\n $$.brush.extent($$.x.orgDomain()).update();\n }\n // setup drawer - MEMO: this must be called after axis updated\n drawAreaOnSub = $$.generateDrawArea(areaIndices, true);\n drawBarOnSub = $$.generateDrawBar(barIndices, true);\n drawLineOnSub = $$.generateDrawLine(lineIndices, true);\n\n $$.updateBarForSubchart(duration);\n $$.updateLineForSubchart(duration);\n $$.updateAreaForSubchart(duration);\n\n $$.redrawBarForSubchart(drawBarOnSub, duration, duration);\n $$.redrawLineForSubchart(drawLineOnSub, duration, duration);\n $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration);\n }\n }\n};\nc3_chart_internal_fn.redrawForBrush = function () {\n var $$ = this,\n x = $$.x;\n $$.redraw({\n withTransition: false,\n withY: $$.config.zoom_rescale,\n withSubchart: false,\n withUpdateXDomain: true,\n withDimension: false\n });\n $$.config.subchart_onbrush.call($$.api, x.orgDomain());\n};\nc3_chart_internal_fn.transformContext = function (withTransition, transitions) {\n var $$ = this,\n subXAxis;\n if (transitions && transitions.axisSubX) {\n subXAxis = transitions.axisSubX;\n } else {\n subXAxis = $$.context.select('.' + CLASS.axisX);\n if (withTransition) {\n subXAxis = subXAxis.transition();\n }\n }\n $$.context.attr(\"transform\", $$.getTranslate('context'));\n subXAxis.attr(\"transform\", $$.getTranslate('subx'));\n};\nc3_chart_internal_fn.getDefaultExtent = function () {\n var $$ = this,\n config = $$.config,\n extent = isFunction(config.axis_x_extent) ? config.axis_x_extent($$.getXDomain($$.data.targets)) : config.axis_x_extent;\n if ($$.isTimeSeries()) {\n extent = [$$.parseDate(extent[0]), $$.parseDate(extent[1])];\n }\n return extent;\n};\n\nc3_chart_internal_fn.initText = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartTexts);\n $$.mainText = $$.d3.selectAll([]);\n};\nc3_chart_internal_fn.updateTargetsForText = function (targets) {\n var $$ = this,\n mainTextUpdate,\n mainTextEnter,\n classChartText = $$.classChartText.bind($$),\n classTexts = $$.classTexts.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainTextUpdate = $$.main.select('.' + CLASS.chartTexts).selectAll('.' + CLASS.chartText).data(targets).attr('class', function (d) {\n return classChartText(d) + classFocus(d);\n });\n mainTextEnter = mainTextUpdate.enter().append('g').attr('class', classChartText).style('opacity', 0).style(\"pointer-events\", \"none\");\n mainTextEnter.append('g').attr('class', classTexts);\n};\nc3_chart_internal_fn.updateText = function (durationForExit) {\n var $$ = this,\n config = $$.config,\n barOrLineData = $$.barOrLineData.bind($$),\n classText = $$.classText.bind($$);\n $$.mainText = $$.main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text).data(barOrLineData);\n $$.mainText.enter().append('text').attr(\"class\", classText).attr('text-anchor', function (d) {\n return config.axis_rotated ? d.value < 0 ? 'end' : 'start' : 'middle';\n }).style(\"stroke\", 'none').style(\"fill\", function (d) {\n return $$.color(d);\n }).style(\"fill-opacity\", 0);\n $$.mainText.text(function (d, i, j) {\n return $$.dataLabelFormat(d.id)(d.value, d.id, i, j);\n });\n $$.mainText.exit().transition().duration(durationForExit).style('fill-opacity', 0).remove();\n};\nc3_chart_internal_fn.redrawText = function (xForText, yForText, forFlow, withTransition) {\n return [(withTransition ? this.mainText.transition() : this.mainText).attr('x', xForText).attr('y', yForText).style(\"fill\", this.color).style(\"fill-opacity\", forFlow ? 0 : this.opacityForText.bind(this))];\n};\nc3_chart_internal_fn.getTextRect = function (text, cls, element) {\n var dummy = this.d3.select('body').append('div').classed('c3', true),\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n font = this.d3.select(element).style('font'),\n rect;\n svg.selectAll('.dummy').data([text]).enter().append('text').classed(cls ? cls : \"\", true).style('font', font).text(text).each(function () {\n rect = this.getBoundingClientRect();\n });\n dummy.remove();\n return rect;\n};\nc3_chart_internal_fn.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) {\n var $$ = this,\n getAreaPoints = $$.generateGetAreaPoints(areaIndices, false),\n getBarPoints = $$.generateGetBarPoints(barIndices, false),\n getLinePoints = $$.generateGetLinePoints(lineIndices, false),\n getter = forX ? $$.getXForText : $$.getYForText;\n return function (d, i) {\n var getPoints = $$.isAreaType(d) ? getAreaPoints : $$.isBarType(d) ? getBarPoints : getLinePoints;\n return getter.call($$, getPoints(d, i), d, this);\n };\n};\nc3_chart_internal_fn.getXForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n xPos,\n padding;\n if ($$.config.axis_rotated) {\n padding = $$.isBarType(d) ? 4 : 6;\n xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1);\n } else {\n xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0];\n }\n // show labels regardless of the domain if value is null\n if (d.value === null) {\n if (xPos > $$.width) {\n xPos = $$.width - box.width;\n } else if (xPos < 0) {\n xPos = 4;\n }\n }\n return xPos;\n};\nc3_chart_internal_fn.getYForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n yPos;\n if ($$.config.axis_rotated) {\n yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2;\n } else {\n yPos = points[2][1];\n if (d.value < 0 || d.value === 0 && !$$.hasPositiveValue) {\n yPos += box.height;\n if ($$.isBarType(d) && $$.isSafari()) {\n yPos -= 3;\n } else if (!$$.isBarType(d) && $$.isChrome()) {\n yPos += 3;\n }\n } else {\n yPos += $$.isBarType(d) ? -3 : -6;\n }\n }\n // show labels regardless of the domain if value is null\n if (d.value === null && !$$.config.axis_rotated) {\n if (yPos < box.height) {\n yPos = box.height;\n } else if (yPos > this.height) {\n yPos = this.height - 4;\n }\n }\n return yPos;\n};\n\nc3_chart_internal_fn.initTitle = function () {\n var $$ = this;\n $$.title = $$.svg.append(\"text\").text($$.config.title_text).attr(\"class\", $$.CLASS.title);\n};\nc3_chart_internal_fn.redrawTitle = function () {\n var $$ = this;\n $$.title.attr(\"x\", $$.xForTitle.bind($$)).attr(\"y\", $$.yForTitle.bind($$));\n};\nc3_chart_internal_fn.xForTitle = function () {\n var $$ = this,\n config = $$.config,\n position = config.title_position || 'left',\n x;\n if (position.indexOf('right') >= 0) {\n x = $$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width - config.title_padding.right;\n } else if (position.indexOf('center') >= 0) {\n x = ($$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width) / 2;\n } else {\n // left\n x = config.title_padding.left;\n }\n return x;\n};\nc3_chart_internal_fn.yForTitle = function () {\n var $$ = this;\n return $$.config.title_padding.top + $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).height;\n};\nc3_chart_internal_fn.getTitlePadding = function () {\n var $$ = this;\n return $$.yForTitle() + $$.config.title_padding.bottom;\n};\n\nc3_chart_internal_fn.initTooltip = function () {\n var $$ = this,\n config = $$.config,\n i;\n $$.tooltip = $$.selectChart.style(\"position\", \"relative\").append(\"div\").attr('class', CLASS.tooltipContainer).style(\"position\", \"absolute\").style(\"pointer-events\", \"none\").style(\"display\", \"none\");\n // Show tooltip if needed\n if (config.tooltip_init_show) {\n if ($$.isTimeSeries() && isString(config.tooltip_init_x)) {\n config.tooltip_init_x = $$.parseDate(config.tooltip_init_x);\n for (i = 0; i < $$.data.targets[0].values.length; i++) {\n if ($$.data.targets[0].values[i].x - config.tooltip_init_x === 0) {\n break;\n }\n }\n config.tooltip_init_x = i;\n }\n $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) {\n return $$.addName(d.values[config.tooltip_init_x]);\n }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color));\n $$.tooltip.style(\"top\", config.tooltip_init_position.top).style(\"left\", config.tooltip_init_position.left).style(\"display\", \"block\");\n }\n};\nc3_chart_internal_fn.getTooltipSortFunction = function () {\n var $$ = this,\n config = $$.config;\n\n if (config.data_groups.length === 0 || config.tooltip_order !== undefined) {\n // if data are not grouped or if an order is specified\n // for the tooltip values we sort them by their values\n\n var order = config.tooltip_order;\n if (order === undefined) {\n order = config.data_order;\n }\n\n var valueOf = function valueOf(obj) {\n return obj ? obj.value : null;\n };\n\n // if data are not grouped, we sort them by their value\n if (isString(order) && order.toLowerCase() === 'asc') {\n return function (a, b) {\n return valueOf(a) - valueOf(b);\n };\n } else if (isString(order) && order.toLowerCase() === 'desc') {\n return function (a, b) {\n return valueOf(b) - valueOf(a);\n };\n } else if (isFunction(order)) {\n\n // if the function is from data_order we need\n // to wrap the returned function in order to format\n // the sorted value to the expected format\n\n var sortFunction = order;\n\n if (config.tooltip_order === undefined) {\n sortFunction = function sortFunction(a, b) {\n return order(a ? {\n id: a.id,\n values: [a]\n } : null, b ? {\n id: b.id,\n values: [b]\n } : null);\n };\n }\n\n return sortFunction;\n } else if (isArray(order)) {\n return function (a, b) {\n return order.indexOf(a.id) - order.indexOf(b.id);\n };\n }\n } else {\n // if data are grouped, we follow the order of grouped targets\n var ids = $$.orderTargets($$.data.targets).map(function (i) {\n return i.id;\n });\n\n // if it was either asc or desc we need to invert the order\n // returned by orderTargets\n if ($$.isOrderAsc() || $$.isOrderDesc()) {\n ids = ids.reverse();\n }\n\n return function (a, b) {\n return ids.indexOf(a.id) - ids.indexOf(b.id);\n };\n }\n};\nc3_chart_internal_fn.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) {\n var $$ = this,\n config = $$.config,\n titleFormat = config.tooltip_format_title || defaultTitleFormat,\n nameFormat = config.tooltip_format_name || function (name) {\n return name;\n },\n valueFormat = config.tooltip_format_value || defaultValueFormat,\n text,\n i,\n title,\n value,\n name,\n bgcolor;\n\n var tooltipSortFunction = this.getTooltipSortFunction();\n if (tooltipSortFunction) {\n d.sort(tooltipSortFunction);\n }\n\n for (i = 0; i < d.length; i++) {\n if (!(d[i] && (d[i].value || d[i].value === 0))) {\n continue;\n }\n\n if (!text) {\n title = sanitise(titleFormat ? titleFormat(d[i].x) : d[i].x);\n text = \"<table class='\" + $$.CLASS.tooltip + \"'>\" + (title || title === 0 ? \"<tr><th colspan='2'>\" + title + \"</th></tr>\" : \"\");\n }\n\n value = sanitise(valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index, d));\n if (value !== undefined) {\n // Skip elements when their name is set to null\n if (d[i].name === null) {\n continue;\n }\n name = sanitise(nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index));\n bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);\n\n text += \"<tr class='\" + $$.CLASS.tooltipName + \"-\" + $$.getTargetSelectorSuffix(d[i].id) + \"'>\";\n text += \"<td class='name'><span style='background-color:\" + bgcolor + \"'></span>\" + name + \"</td>\";\n text += \"<td class='value'>\" + value + \"</td>\";\n text += \"</tr>\";\n }\n }\n return text + \"</table>\";\n};\nc3_chart_internal_fn.tooltipPosition = function (dataToShow, tWidth, tHeight, element) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight;\n var forArc = $$.hasArcType(),\n mouse = d3.mouse(element);\n // Determin tooltip position\n if (forArc) {\n tooltipLeft = ($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2 + mouse[0];\n tooltipTop = $$.height / 2 + mouse[1] + 20;\n } else {\n svgLeft = $$.getSvgLeft(true);\n if (config.axis_rotated) {\n tooltipLeft = svgLeft + mouse[0] + 100;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = $$.x(dataToShow[0].x) + 20;\n } else {\n tooltipLeft = svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = mouse[1] + 15;\n }\n\n if (tooltipRight > chartRight) {\n // 20 is needed for Firefox to keep tooltip width\n tooltipLeft -= tooltipRight - chartRight + 20;\n }\n if (tooltipTop + tHeight > $$.currentHeight) {\n tooltipTop -= tHeight + 30;\n }\n }\n if (tooltipTop < 0) {\n tooltipTop = 0;\n }\n return { top: tooltipTop, left: tooltipLeft };\n};\nc3_chart_internal_fn.showTooltip = function (selectedData, element) {\n var $$ = this,\n config = $$.config;\n var tWidth, tHeight, position;\n var forArc = $$.hasArcType(),\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n positionFunction = config.tooltip_position || c3_chart_internal_fn.tooltipPosition;\n if (dataToShow.length === 0 || !config.tooltip_show) {\n return;\n }\n $$.tooltip.html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color)).style(\"display\", \"block\");\n\n // Get tooltip dimensions\n tWidth = $$.tooltip.property('offsetWidth');\n tHeight = $$.tooltip.property('offsetHeight');\n\n position = positionFunction.call(this, dataToShow, tWidth, tHeight, element);\n // Set tooltip\n $$.tooltip.style(\"top\", position.top + \"px\").style(\"left\", position.left + 'px');\n};\nc3_chart_internal_fn.hideTooltip = function () {\n this.tooltip.style(\"display\", \"none\");\n};\n\nc3_chart_internal_fn.setTargetType = function (targetIds, type) {\n var $$ = this,\n config = $$.config;\n $$.mapToTargetIds(targetIds).forEach(function (id) {\n $$.withoutFadeIn[id] = type === config.data_types[id];\n config.data_types[id] = type;\n });\n if (!targetIds) {\n config.data_type = type;\n }\n};\nc3_chart_internal_fn.hasType = function (type, targets) {\n var $$ = this,\n types = $$.config.data_types,\n has = false;\n targets = targets || $$.data.targets;\n if (targets && targets.length) {\n targets.forEach(function (target) {\n var t = types[target.id];\n if (t && t.indexOf(type) >= 0 || !t && type === 'line') {\n has = true;\n }\n });\n } else if (Object.keys(types).length) {\n Object.keys(types).forEach(function (id) {\n if (types[id] === type) {\n has = true;\n }\n });\n } else {\n has = $$.config.data_type === type;\n }\n return has;\n};\nc3_chart_internal_fn.hasArcType = function (targets) {\n return this.hasType('pie', targets) || this.hasType('donut', targets) || this.hasType('gauge', targets);\n};\nc3_chart_internal_fn.isLineType = function (d) {\n var config = this.config,\n id = isString(d) ? d : d.id;\n return !config.data_types[id] || ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0;\n};\nc3_chart_internal_fn.isStepType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n};\nc3_chart_internal_fn.isSplineType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0;\n};\nc3_chart_internal_fn.isAreaType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n};\nc3_chart_internal_fn.isBarType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'bar';\n};\nc3_chart_internal_fn.isScatterType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'scatter';\n};\nc3_chart_internal_fn.isPieType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'pie';\n};\nc3_chart_internal_fn.isGaugeType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'gauge';\n};\nc3_chart_internal_fn.isDonutType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'donut';\n};\nc3_chart_internal_fn.isArcType = function (d) {\n return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d);\n};\nc3_chart_internal_fn.lineData = function (d) {\n return this.isLineType(d) ? [d] : [];\n};\nc3_chart_internal_fn.arcData = function (d) {\n return this.isArcType(d.data) ? [d] : [];\n};\n/* not used\n function scatterData(d) {\n return isScatterType(d) ? d.values : [];\n }\n */\nc3_chart_internal_fn.barData = function (d) {\n return this.isBarType(d) ? d.values : [];\n};\nc3_chart_internal_fn.lineOrScatterData = function (d) {\n return this.isLineType(d) || this.isScatterType(d) ? d.values : [];\n};\nc3_chart_internal_fn.barOrLineData = function (d) {\n return this.isBarType(d) || this.isLineType(d) ? d.values : [];\n};\nc3_chart_internal_fn.isInterpolationType = function (type) {\n return ['linear', 'linear-closed', 'basis', 'basis-open', 'basis-closed', 'bundle', 'cardinal', 'cardinal-open', 'cardinal-closed', 'monotone'].indexOf(type) >= 0;\n};\n\nc3_chart_internal_fn.isSafari = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0;\n};\nc3_chart_internal_fn.isChrome = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Chrome') >= 0;\n};\n\nc3_chart_internal_fn.initZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n startEvent;\n\n $$.zoom = d3.behavior.zoom().on(\"zoomstart\", function () {\n startEvent = d3.event.sourceEvent;\n $$.zoom.altDomain = d3.event.sourceEvent.altKey ? $$.x.orgDomain() : null;\n config.zoom_onzoomstart.call($$.api, d3.event.sourceEvent);\n }).on(\"zoom\", function () {\n $$.redrawForZoom.call($$);\n }).on('zoomend', function () {\n var event = d3.event.sourceEvent;\n // if click, do nothing. otherwise, click interaction will be canceled.\n if (event && startEvent.clientX === event.clientX && startEvent.clientY === event.clientY) {\n return;\n }\n $$.redrawEventRect();\n $$.updateZoom();\n config.zoom_onzoomend.call($$.api, $$.x.orgDomain());\n });\n $$.zoom.scale = function (scale) {\n return config.axis_rotated ? this.y(scale) : this.x(scale);\n };\n $$.zoom.orgScaleExtent = function () {\n var extent = config.zoom_extent ? config.zoom_extent : [1, 10];\n return [extent[0], Math.max($$.getMaxDataCount() / extent[1], extent[1])];\n };\n $$.zoom.updateScaleExtent = function () {\n var ratio = diffDomain($$.x.orgDomain()) / diffDomain($$.getZoomDomain()),\n extent = this.orgScaleExtent();\n this.scaleExtent([extent[0] * ratio, extent[1] * ratio]);\n return this;\n };\n};\nc3_chart_internal_fn.getZoomDomain = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n min = d3.min([$$.orgXDomain[0], config.zoom_x_min]),\n max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);\n return [min, max];\n};\nc3_chart_internal_fn.updateZoom = function () {\n var $$ = this,\n z = $$.config.zoom_enabled ? $$.zoom : function () {};\n $$.main.select('.' + CLASS.zoomRect).call(z).on(\"dblclick.zoom\", null);\n $$.main.selectAll('.' + CLASS.eventRect).call(z).on(\"dblclick.zoom\", null);\n};\nc3_chart_internal_fn.redrawForZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n zoom = $$.zoom,\n x = $$.x;\n if (!config.zoom_enabled) {\n return;\n }\n if ($$.filterTargetsToShow($$.data.targets).length === 0) {\n return;\n }\n if (d3.event.sourceEvent.type === 'mousemove' && zoom.altDomain) {\n x.domain(zoom.altDomain);\n zoom.scale(x).updateScaleExtent();\n return;\n }\n if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) {\n x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]);\n }\n $$.redraw({\n withTransition: false,\n withY: config.zoom_rescale,\n withSubchart: false,\n withEventRect: false,\n withDimension: false\n });\n if (d3.event.sourceEvent.type === 'mousemove') {\n $$.cancelClick = true;\n }\n config.zoom_onzoom.call($$.api, x.orgDomain());\n};\n\nreturn c3$1;\n\n})));\n\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;!function() {\n var d3 = {\n version: \"3.5.17\"\n };\n var d3_arraySlice = [].slice, d3_array = function(list) {\n return d3_arraySlice.call(list);\n };\n var d3_document = this.document;\n function d3_documentElement(node) {\n return node && (node.ownerDocument || node.document || node).documentElement;\n }\n function d3_window(node) {\n return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n }\n if (d3_document) {\n try {\n d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n } catch (e) {\n d3_array = function(list) {\n var i = list.length, array = new Array(i);\n while (i--) array[i] = list[i];\n return array;\n };\n }\n }\n if (!Date.now) Date.now = function() {\n return +new Date();\n };\n if (d3_document) {\n try {\n d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n } catch (error) {\n var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n d3_element_prototype.setAttribute = function(name, value) {\n d3_element_setAttribute.call(this, name, value + \"\");\n };\n d3_element_prototype.setAttributeNS = function(space, local, value) {\n d3_element_setAttributeNS.call(this, space, local, value + \"\");\n };\n d3_style_prototype.setProperty = function(name, value, priority) {\n d3_style_setProperty.call(this, name, value + \"\", priority);\n };\n }\n }\n d3.ascending = d3_ascending;\n function d3_ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n }\n d3.descending = function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n };\n d3.min = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n }\n return a;\n };\n d3.max = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n }\n return a;\n };\n d3.extent = function(array, f) {\n var i = -1, n = array.length, a, b, c;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n }\n return [ a, c ];\n };\n function d3_number(x) {\n return x === null ? NaN : +x;\n }\n function d3_numeric(x) {\n return !isNaN(x);\n }\n d3.sum = function(array, f) {\n var s = 0, n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n } else {\n while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n }\n return s;\n };\n d3.mean = function(array, f) {\n var s = 0, n = array.length, a, i = -1, j = n;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n }\n if (j) return s / j;\n };\n d3.quantile = function(values, p) {\n var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n return e ? v + e * (values[h] - v) : v;\n };\n d3.median = function(array, f) {\n var numbers = [], n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n }\n if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n };\n d3.variance = function(array, f) {\n var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n if (arguments.length === 1) {\n while (++i < n) {\n if (d3_numeric(a = d3_number(array[i]))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n } else {\n while (++i < n) {\n if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n }\n if (j > 1) return s / (j - 1);\n };\n d3.deviation = function() {\n var v = d3.variance.apply(this, arguments);\n return v ? Math.sqrt(v) : v;\n };\n function d3_bisector(compare) {\n return {\n left: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n }\n return lo;\n }\n };\n }\n var d3_bisect = d3_bisector(d3_ascending);\n d3.bisectLeft = d3_bisect.left;\n d3.bisect = d3.bisectRight = d3_bisect.right;\n d3.bisector = function(f) {\n return d3_bisector(f.length === 1 ? function(d, x) {\n return d3_ascending(f(d), x);\n } : f);\n };\n d3.shuffle = function(array, i0, i1) {\n if ((m = arguments.length) < 3) {\n i1 = array.length;\n if (m < 2) i0 = 0;\n }\n var m = i1 - i0, t, i;\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n }\n return array;\n };\n d3.permute = function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n };\n d3.pairs = function(array) {\n var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n return pairs;\n };\n d3.transpose = function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n };\n function d3_transposeLength(d) {\n return d.length;\n }\n d3.zip = function() {\n return d3.transpose(arguments);\n };\n d3.keys = function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n };\n d3.values = function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n };\n d3.entries = function(map) {\n var entries = [];\n for (var key in map) entries.push({\n key: key,\n value: map[key]\n });\n return entries;\n };\n d3.merge = function(arrays) {\n var n = arrays.length, m, i = -1, j = 0, merged, array;\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n return merged;\n };\n var abs = Math.abs;\n d3.range = function(start, stop, step) {\n if (arguments.length < 3) {\n step = 1;\n if (arguments.length < 2) {\n stop = start;\n start = 0;\n }\n }\n if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n start *= k, stop *= k, step *= k;\n if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n return range;\n };\n function d3_range_integerScale(x) {\n var k = 1;\n while (x * k % 1) k *= 10;\n return k;\n }\n function d3_class(ctor, properties) {\n for (var key in properties) {\n Object.defineProperty(ctor.prototype, key, {\n value: properties[key],\n enumerable: false\n });\n }\n }\n d3.map = function(object, f) {\n var map = new d3_Map();\n if (object instanceof d3_Map) {\n object.forEach(function(key, value) {\n map.set(key, value);\n });\n } else if (Array.isArray(object)) {\n var i = -1, n = object.length, o;\n if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n } else {\n for (var key in object) map.set(key, object[key]);\n }\n return map;\n };\n function d3_Map() {\n this._ = Object.create(null);\n }\n var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n d3_class(d3_Map, {\n has: d3_map_has,\n get: function(key) {\n return this._[d3_map_escape(key)];\n },\n set: function(key, value) {\n return this._[d3_map_escape(key)] = value;\n },\n remove: d3_map_remove,\n keys: d3_map_keys,\n values: function() {\n var values = [];\n for (var key in this._) values.push(this._[key]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var key in this._) entries.push({\n key: d3_map_unescape(key),\n value: this._[key]\n });\n return entries;\n },\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n }\n });\n function d3_map_escape(key) {\n return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n }\n function d3_map_unescape(key) {\n return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n }\n function d3_map_has(key) {\n return d3_map_escape(key) in this._;\n }\n function d3_map_remove(key) {\n return (key = d3_map_escape(key)) in this._ && delete this._[key];\n }\n function d3_map_keys() {\n var keys = [];\n for (var key in this._) keys.push(d3_map_unescape(key));\n return keys;\n }\n function d3_map_size() {\n var size = 0;\n for (var key in this._) ++size;\n return size;\n }\n function d3_map_empty() {\n for (var key in this._) return false;\n return true;\n }\n d3.nest = function() {\n var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n function map(mapType, array, depth) {\n if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n values.push(object);\n } else {\n valuesByKey.set(keyValue, [ object ]);\n }\n }\n if (mapType) {\n object = mapType();\n setter = function(keyValue, values) {\n object.set(keyValue, map(mapType, values, depth));\n };\n } else {\n object = {};\n setter = function(keyValue, values) {\n object[keyValue] = map(mapType, values, depth);\n };\n }\n valuesByKey.forEach(setter);\n return object;\n }\n function entries(map, depth) {\n if (depth >= keys.length) return map;\n var array = [], sortKey = sortKeys[depth++];\n map.forEach(function(key, keyMap) {\n array.push({\n key: key,\n values: entries(keyMap, depth)\n });\n });\n return sortKey ? array.sort(function(a, b) {\n return sortKey(a.key, b.key);\n }) : array;\n }\n nest.map = function(array, mapType) {\n return map(mapType, array, 0);\n };\n nest.entries = function(array) {\n return entries(map(d3.map, array, 0), 0);\n };\n nest.key = function(d) {\n keys.push(d);\n return nest;\n };\n nest.sortKeys = function(order) {\n sortKeys[keys.length - 1] = order;\n return nest;\n };\n nest.sortValues = function(order) {\n sortValues = order;\n return nest;\n };\n nest.rollup = function(f) {\n rollup = f;\n return nest;\n };\n return nest;\n };\n d3.set = function(array) {\n var set = new d3_Set();\n if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n return set;\n };\n function d3_Set() {\n this._ = Object.create(null);\n }\n d3_class(d3_Set, {\n has: d3_map_has,\n add: function(key) {\n this._[d3_map_escape(key += \"\")] = true;\n return key;\n },\n remove: d3_map_remove,\n values: d3_map_keys,\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key));\n }\n });\n d3.behavior = {};\n function d3_identity(d) {\n return d;\n }\n d3.rebind = function(target, source) {\n var i = 1, n = arguments.length, method;\n while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n return target;\n };\n function d3_rebind(target, source, method) {\n return function() {\n var value = method.apply(source, arguments);\n return value === source ? target : value;\n };\n }\n function d3_vendorSymbol(object, name) {\n if (name in object) return name;\n name = name.charAt(0).toUpperCase() + name.slice(1);\n for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n var prefixName = d3_vendorPrefixes[i] + name;\n if (prefixName in object) return prefixName;\n }\n }\n var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n function d3_noop() {}\n d3.dispatch = function() {\n var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n return dispatch;\n };\n function d3_dispatch() {}\n d3_dispatch.prototype.on = function(type, listener) {\n var i = type.indexOf(\".\"), name = \"\";\n if (i >= 0) {\n name = type.slice(i + 1);\n type = type.slice(0, i);\n }\n if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n if (arguments.length === 2) {\n if (listener == null) for (type in this) {\n if (this.hasOwnProperty(type)) this[type].on(name, null);\n }\n return this;\n }\n };\n function d3_dispatch_event(dispatch) {\n var listeners = [], listenerByName = new d3_Map();\n function event() {\n var z = listeners, i = -1, n = z.length, l;\n while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n return dispatch;\n }\n event.on = function(name, listener) {\n var l = listenerByName.get(name), i;\n if (arguments.length < 2) return l && l.on;\n if (l) {\n l.on = null;\n listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n listenerByName.remove(name);\n }\n if (listener) listeners.push(listenerByName.set(name, {\n on: listener\n }));\n return dispatch;\n };\n return event;\n }\n d3.event = null;\n function d3_eventPreventDefault() {\n d3.event.preventDefault();\n }\n function d3_eventSource() {\n var e = d3.event, s;\n while (s = e.sourceEvent) e = s;\n return e;\n }\n function d3_eventDispatch(target) {\n var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n dispatch.of = function(thiz, argumentz) {\n return function(e1) {\n try {\n var e0 = e1.sourceEvent = d3.event;\n e1.target = target;\n d3.event = e1;\n dispatch[e1.type].apply(thiz, argumentz);\n } finally {\n d3.event = e0;\n }\n };\n };\n return dispatch;\n }\n d3.requote = function(s) {\n return s.replace(d3_requote_re, \"\\\\$&\");\n };\n var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n var d3_subclass = {}.__proto__ ? function(object, prototype) {\n object.__proto__ = prototype;\n } : function(object, prototype) {\n for (var property in prototype) object[property] = prototype[property];\n };\n function d3_selection(groups) {\n d3_subclass(groups, d3_selectionPrototype);\n return groups;\n }\n var d3_select = function(s, n) {\n return n.querySelector(s);\n }, d3_selectAll = function(s, n) {\n return n.querySelectorAll(s);\n }, d3_selectMatches = function(n, s) {\n var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n d3_selectMatches = function(n, s) {\n return d3_selectMatcher.call(n, s);\n };\n return d3_selectMatches(n, s);\n };\n if (typeof Sizzle === \"function\") {\n d3_select = function(s, n) {\n return Sizzle(s, n)[0] || null;\n };\n d3_selectAll = Sizzle;\n d3_selectMatches = Sizzle.matchesSelector;\n }\n d3.selection = function() {\n return d3.select(d3_document.documentElement);\n };\n var d3_selectionPrototype = d3.selection.prototype = [];\n d3_selectionPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, group, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selector(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_select(selector, this);\n };\n }\n d3_selectionPrototype.selectAll = function(selector) {\n var subgroups = [], subgroup, node;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n subgroup.parentNode = node;\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selectorAll(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_selectAll(selector, this);\n };\n }\n var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n var d3_nsPrefix = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: d3_nsXhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n };\n d3.ns = {\n prefix: d3_nsPrefix,\n qualify: function(name) {\n var i = name.indexOf(\":\"), prefix = name;\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return d3_nsPrefix.hasOwnProperty(prefix) ? {\n space: d3_nsPrefix[prefix],\n local: name\n } : name;\n }\n };\n d3_selectionPrototype.attr = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node();\n name = d3.ns.qualify(name);\n return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n }\n for (value in name) this.each(d3_selection_attr(value, name[value]));\n return this;\n }\n return this.each(d3_selection_attr(name, value));\n };\n function d3_selection_attr(name, value) {\n name = d3.ns.qualify(name);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrConstant() {\n this.setAttribute(name, value);\n }\n function attrConstantNS() {\n this.setAttributeNS(name.space, name.local, value);\n }\n function attrFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n }\n function attrFunctionNS() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n }\n return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n }\n function d3_collapse(s) {\n return s.trim().replace(/\\s+/g, \" \");\n }\n d3_selectionPrototype.classed = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n if (value = node.classList) {\n while (++i < n) if (!value.contains(name[i])) return false;\n } else {\n value = node.getAttribute(\"class\");\n while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n }\n return true;\n }\n for (value in name) this.each(d3_selection_classed(value, name[value]));\n return this;\n }\n return this.each(d3_selection_classed(name, value));\n };\n function d3_selection_classedRe(name) {\n return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n }\n function d3_selection_classes(name) {\n return (name + \"\").trim().split(/^|\\s+/);\n }\n function d3_selection_classed(name, value) {\n name = d3_selection_classes(name).map(d3_selection_classedName);\n var n = name.length;\n function classedConstant() {\n var i = -1;\n while (++i < n) name[i](this, value);\n }\n function classedFunction() {\n var i = -1, x = value.apply(this, arguments);\n while (++i < n) name[i](this, x);\n }\n return typeof value === \"function\" ? classedFunction : classedConstant;\n }\n function d3_selection_classedName(name) {\n var re = d3_selection_classedRe(name);\n return function(node, value) {\n if (c = node.classList) return value ? c.add(name) : c.remove(name);\n var c = node.getAttribute(\"class\") || \"\";\n if (value) {\n re.lastIndex = 0;\n if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n } else {\n node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n }\n };\n }\n d3_selectionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n return this;\n }\n if (n < 2) {\n var node = this.node();\n return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n }\n priority = \"\";\n }\n return this.each(d3_selection_style(name, value, priority));\n };\n function d3_selection_style(name, value, priority) {\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleConstant() {\n this.style.setProperty(name, value, priority);\n }\n function styleFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n }\n return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n }\n d3_selectionPrototype.property = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") return this.node()[name];\n for (value in name) this.each(d3_selection_property(value, name[value]));\n return this;\n }\n return this.each(d3_selection_property(name, value));\n };\n function d3_selection_property(name, value) {\n function propertyNull() {\n delete this[name];\n }\n function propertyConstant() {\n this[name] = value;\n }\n function propertyFunction() {\n var x = value.apply(this, arguments);\n if (x == null) delete this[name]; else this[name] = x;\n }\n return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n }\n d3_selectionPrototype.text = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n } : value == null ? function() {\n this.textContent = \"\";\n } : function() {\n this.textContent = value;\n }) : this.node().textContent;\n };\n d3_selectionPrototype.html = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n } : value == null ? function() {\n this.innerHTML = \"\";\n } : function() {\n this.innerHTML = value;\n }) : this.node().innerHTML;\n };\n d3_selectionPrototype.append = function(name) {\n name = d3_selection_creator(name);\n return this.select(function() {\n return this.appendChild(name.apply(this, arguments));\n });\n };\n function d3_selection_creator(name) {\n function create() {\n var document = this.ownerDocument, namespace = this.namespaceURI;\n return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n }\n function createNS() {\n return this.ownerDocument.createElementNS(name.space, name.local);\n }\n return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n }\n d3_selectionPrototype.insert = function(name, before) {\n name = d3_selection_creator(name);\n before = d3_selection_selector(before);\n return this.select(function() {\n return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n });\n };\n d3_selectionPrototype.remove = function() {\n return this.each(d3_selectionRemove);\n };\n function d3_selectionRemove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n }\n d3_selectionPrototype.data = function(value, key) {\n var i = -1, n = this.length, group, node;\n if (!arguments.length) {\n value = new Array(n = (group = this[0]).length);\n while (++i < n) {\n if (node = group[i]) {\n value[i] = node.__data__;\n }\n }\n return value;\n }\n function bind(group, groupData) {\n var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n if (key) {\n var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n for (i = -1; ++i < n; ) {\n if (node = group[i]) {\n if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n exitNodes[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n keyValues[i] = keyValue;\n }\n }\n for (i = -1; ++i < m; ) {\n if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n } else if (node !== true) {\n updateNodes[i] = node;\n node.__data__ = nodeData;\n }\n nodeByKeyValue.set(keyValue, true);\n }\n for (i = -1; ++i < n; ) {\n if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n exitNodes[i] = group[i];\n }\n }\n } else {\n for (i = -1; ++i < n0; ) {\n node = group[i];\n nodeData = groupData[i];\n if (node) {\n node.__data__ = nodeData;\n updateNodes[i] = node;\n } else {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n }\n }\n for (;i < m; ++i) {\n enterNodes[i] = d3_selection_dataNode(groupData[i]);\n }\n for (;i < n; ++i) {\n exitNodes[i] = group[i];\n }\n }\n enterNodes.update = updateNodes;\n enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n enter.push(enterNodes);\n update.push(updateNodes);\n exit.push(exitNodes);\n }\n var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n if (typeof value === \"function\") {\n while (++i < n) {\n bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n }\n } else {\n while (++i < n) {\n bind(group = this[i], value);\n }\n }\n update.enter = function() {\n return enter;\n };\n update.exit = function() {\n return exit;\n };\n return update;\n };\n function d3_selection_dataNode(data) {\n return {\n __data__: data\n };\n }\n d3_selectionPrototype.datum = function(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n };\n d3_selectionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_filter(selector) {\n return function() {\n return d3_selectMatches(this, selector);\n };\n }\n d3_selectionPrototype.order = function() {\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n return this;\n };\n d3_selectionPrototype.sort = function(comparator) {\n comparator = d3_selection_sortComparator.apply(this, arguments);\n for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n return this.order();\n };\n function d3_selection_sortComparator(comparator) {\n if (!arguments.length) comparator = d3_ascending;\n return function(a, b) {\n return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n };\n }\n d3_selectionPrototype.each = function(callback) {\n return d3_selection_each(this, function(node, i, j) {\n callback.call(node, node.__data__, i, j);\n });\n };\n function d3_selection_each(groups, callback) {\n for (var j = 0, m = groups.length; j < m; j++) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n if (node = group[i]) callback(node, i, j);\n }\n }\n return groups;\n }\n d3_selectionPrototype.call = function(callback) {\n var args = d3_array(arguments);\n callback.apply(args[0] = this, args);\n return this;\n };\n d3_selectionPrototype.empty = function() {\n return !this.node();\n };\n d3_selectionPrototype.node = function() {\n for (var j = 0, m = this.length; j < m; j++) {\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n var node = group[i];\n if (node) return node;\n }\n }\n return null;\n };\n d3_selectionPrototype.size = function() {\n var n = 0;\n d3_selection_each(this, function() {\n ++n;\n });\n return n;\n };\n function d3_selection_enter(selection) {\n d3_subclass(selection, d3_selection_enterPrototype);\n return selection;\n }\n var d3_selection_enterPrototype = [];\n d3.selection.enter = d3_selection_enter;\n d3.selection.enter.prototype = d3_selection_enterPrototype;\n d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n d3_selection_enterPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, upgroup, group, node;\n for (var j = -1, m = this.length; ++j < m; ) {\n upgroup = (group = this[j]).update;\n subgroups.push(subgroup = []);\n subgroup.parentNode = group.parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n d3_selection_enterPrototype.insert = function(name, before) {\n if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n return d3_selectionPrototype.insert.call(this, name, before);\n };\n function d3_selection_enterInsertBefore(enter) {\n var i0, j0;\n return function(d, i, j) {\n var group = enter[j].update, n = group.length, node;\n if (j != j0) j0 = j, i0 = 0;\n if (i >= i0) i0 = i + 1;\n while (!(node = group[i0]) && ++i0 < n) ;\n return node;\n };\n }\n d3.select = function(node) {\n var group;\n if (typeof node === \"string\") {\n group = [ d3_select(node, d3_document) ];\n group.parentNode = d3_document.documentElement;\n } else {\n group = [ node ];\n group.parentNode = d3_documentElement(node);\n }\n return d3_selection([ group ]);\n };\n d3.selectAll = function(nodes) {\n var group;\n if (typeof nodes === \"string\") {\n group = d3_array(d3_selectAll(nodes, d3_document));\n group.parentNode = d3_document.documentElement;\n } else {\n group = d3_array(nodes);\n group.parentNode = null;\n }\n return d3_selection([ group ]);\n };\n d3_selectionPrototype.on = function(type, listener, capture) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof type !== \"string\") {\n if (n < 2) listener = false;\n for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n return this;\n }\n if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n capture = false;\n }\n return this.each(d3_selection_on(type, listener, capture));\n };\n function d3_selection_on(type, listener, capture) {\n var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n if (i > 0) type = type.slice(0, i);\n var filter = d3_selection_onFilters.get(type);\n if (filter) type = filter, wrap = d3_selection_onFilter;\n function onRemove() {\n var l = this[name];\n if (l) {\n this.removeEventListener(type, l, l.$);\n delete this[name];\n }\n }\n function onAdd() {\n var l = wrap(listener, d3_array(arguments));\n onRemove.call(this);\n this.addEventListener(type, this[name] = l, l.$ = capture);\n l._ = listener;\n }\n function removeAll() {\n var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n for (var name in this) {\n if (match = name.match(re)) {\n var l = this[name];\n this.removeEventListener(match[1], l, l.$);\n delete this[name];\n }\n }\n }\n return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n }\n var d3_selection_onFilters = d3.map({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n });\n if (d3_document) {\n d3_selection_onFilters.forEach(function(k) {\n if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n });\n }\n function d3_selection_onListener(listener, argumentz) {\n return function(e) {\n var o = d3.event;\n d3.event = e;\n argumentz[0] = this.__data__;\n try {\n listener.apply(this, argumentz);\n } finally {\n d3.event = o;\n }\n };\n }\n function d3_selection_onFilter(listener, argumentz) {\n var l = d3_selection_onListener(listener, argumentz);\n return function(e) {\n var target = this, related = e.relatedTarget;\n if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n l.call(target, e);\n }\n };\n }\n var d3_event_dragSelect, d3_event_dragId = 0;\n function d3_event_dragSuppress(node) {\n var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n if (d3_event_dragSelect == null) {\n d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n }\n if (d3_event_dragSelect) {\n var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n style[d3_event_dragSelect] = \"none\";\n }\n return function(suppressClick) {\n w.on(name, null);\n if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n if (suppressClick) {\n var off = function() {\n w.on(click, null);\n };\n w.on(click, function() {\n d3_eventPreventDefault();\n off();\n }, true);\n setTimeout(off, 0);\n }\n };\n }\n d3.mouse = function(container) {\n return d3_mousePoint(container, d3_eventSource());\n };\n var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n function d3_mousePoint(container, e) {\n if (e.changedTouches) e = e.changedTouches[0];\n var svg = container.ownerSVGElement || container;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n if (d3_mouse_bug44083 < 0) {\n var window = d3_window(container);\n if (window.scrollX || window.scrollY) {\n svg = d3.select(\"body\").append(\"svg\").style({\n position: \"absolute\",\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n border: \"none\"\n }, \"important\");\n var ctm = svg[0][0].getScreenCTM();\n d3_mouse_bug44083 = !(ctm.f || ctm.e);\n svg.remove();\n }\n }\n if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n point.y = e.clientY;\n point = point.matrixTransform(container.getScreenCTM().inverse());\n return [ point.x, point.y ];\n }\n var rect = container.getBoundingClientRect();\n return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n }\n d3.touch = function(container, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return d3_mousePoint(container, touch);\n }\n }\n };\n d3.behavior.drag = function() {\n var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n function drag() {\n this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n }\n function dragstart(id, position, subject, move, end) {\n return function() {\n var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n if (origin) {\n dragOffset = origin.apply(that, arguments);\n dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n } else {\n dragOffset = [ 0, 0 ];\n }\n dispatch({\n type: \"dragstart\"\n });\n function moved() {\n var position1 = position(parent, dragId), dx, dy;\n if (!position1) return;\n dx = position1[0] - position0[0];\n dy = position1[1] - position0[1];\n dragged |= dx | dy;\n position0 = position1;\n dispatch({\n type: \"drag\",\n x: position1[0] + dragOffset[0],\n y: position1[1] + dragOffset[1],\n dx: dx,\n dy: dy\n });\n }\n function ended() {\n if (!position(parent, dragId)) return;\n dragSubject.on(move + dragName, null).on(end + dragName, null);\n dragRestore(dragged);\n dispatch({\n type: \"dragend\"\n });\n }\n };\n }\n drag.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return drag;\n };\n return d3.rebind(drag, event, \"on\");\n };\n function d3_behavior_dragTouchId() {\n return d3.event.changedTouches[0].identifier;\n }\n d3.touches = function(container, touches) {\n if (arguments.length < 2) touches = d3_eventSource().touches;\n return touches ? d3_array(touches).map(function(touch) {\n var point = d3_mousePoint(container, touch);\n point.identifier = touch.identifier;\n return point;\n }) : [];\n };\n var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n function d3_sgn(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n }\n function d3_cross2d(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n }\n function d3_acos(x) {\n return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n }\n function d3_asin(x) {\n return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n }\n function d3_sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n }\n function d3_cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n }\n function d3_tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n }\n function d3_haversin(x) {\n return (x = Math.sin(x / 2)) * x;\n }\n var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n d3.interpolateZoom = function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n if (d2 < ε2) {\n S = Math.log(w1 / w0) / ρ;\n i = function(t) {\n return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n };\n } else {\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / ρ;\n i = function(t) {\n var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n };\n }\n i.duration = S * 1e3;\n return i;\n };\n d3.behavior.zoom = function() {\n var view = {\n x: 0,\n y: 0,\n k: 1\n }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n if (!d3_behavior_zoomWheel) {\n d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return d3.event.wheelDelta;\n }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n return -d3.event.detail;\n }, \"MozMousePixelScroll\");\n }\n function zoom(g) {\n g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n }\n zoom.event = function(g) {\n g.each(function() {\n var dispatch = event.of(this, arguments), view1 = view;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.zoom\", function() {\n view = this.__chart__ || {\n x: 0,\n y: 0,\n k: 1\n };\n zoomstarted(dispatch);\n }).tween(\"zoom:zoom\", function() {\n var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n return function(t) {\n var l = i(t), k = dx / l[2];\n this.__chart__ = view = {\n x: cx - l[0] * k,\n y: cy - l[1] * k,\n k: k\n };\n zoomed(dispatch);\n };\n }).each(\"interrupt.zoom\", function() {\n zoomended(dispatch);\n }).each(\"end.zoom\", function() {\n zoomended(dispatch);\n });\n } else {\n this.__chart__ = view;\n zoomstarted(dispatch);\n zoomed(dispatch);\n zoomended(dispatch);\n }\n });\n };\n zoom.translate = function(_) {\n if (!arguments.length) return [ view.x, view.y ];\n view = {\n x: +_[0],\n y: +_[1],\n k: view.k\n };\n rescale();\n return zoom;\n };\n zoom.scale = function(_) {\n if (!arguments.length) return view.k;\n view = {\n x: view.x,\n y: view.y,\n k: null\n };\n scaleTo(+_);\n rescale();\n return zoom;\n };\n zoom.scaleExtent = function(_) {\n if (!arguments.length) return scaleExtent;\n scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.center = function(_) {\n if (!arguments.length) return center;\n center = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.size = function(_) {\n if (!arguments.length) return size;\n size = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.duration = function(_) {\n if (!arguments.length) return duration;\n duration = +_;\n return zoom;\n };\n zoom.x = function(z) {\n if (!arguments.length) return x1;\n x1 = z;\n x0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n zoom.y = function(z) {\n if (!arguments.length) return y1;\n y1 = z;\n y0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n function location(p) {\n return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n }\n function point(l) {\n return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n }\n function scaleTo(s) {\n view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n }\n function translateTo(p, l) {\n l = point(l);\n view.x += p[0] - l[0];\n view.y += p[1] - l[1];\n }\n function zoomTo(that, p, l, k) {\n that.__chart__ = {\n x: view.x,\n y: view.y,\n k: view.k\n };\n scaleTo(Math.pow(2, k));\n translateTo(center0 = p, l);\n that = d3.select(that);\n if (duration > 0) that = that.transition().duration(duration);\n that.call(zoom.event);\n }\n function rescale() {\n if (x1) x1.domain(x0.range().map(function(x) {\n return (x - view.x) / view.k;\n }).map(x0.invert));\n if (y1) y1.domain(y0.range().map(function(y) {\n return (y - view.y) / view.k;\n }).map(y0.invert));\n }\n function zoomstarted(dispatch) {\n if (!zooming++) dispatch({\n type: \"zoomstart\"\n });\n }\n function zoomed(dispatch) {\n rescale();\n dispatch({\n type: \"zoom\",\n scale: view.k,\n translate: [ view.x, view.y ]\n });\n }\n function zoomended(dispatch) {\n if (!--zooming) dispatch({\n type: \"zoomend\"\n }), center0 = null;\n }\n function mousedowned() {\n var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n d3_selection_interrupt.call(that);\n zoomstarted(dispatch);\n function moved() {\n dragged = 1;\n translateTo(d3.mouse(that), location0);\n zoomed(dispatch);\n }\n function ended() {\n subject.on(mousemove, null).on(mouseup, null);\n dragRestore(dragged);\n zoomended(dispatch);\n }\n }\n function touchstarted() {\n var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n started();\n zoomstarted(dispatch);\n subject.on(mousedown, null).on(touchstart, started);\n function relocate() {\n var touches = d3.touches(that);\n scale0 = view.k;\n touches.forEach(function(t) {\n if (t.identifier in locations0) locations0[t.identifier] = location(t);\n });\n return touches;\n }\n function started() {\n var target = d3.event.target;\n d3.select(target).on(touchmove, moved).on(touchend, ended);\n targets.push(target);\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n locations0[changed[i].identifier] = null;\n }\n var touches = relocate(), now = Date.now();\n if (touches.length === 1) {\n if (now - touchtime < 500) {\n var p = touches[0];\n zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n d3_eventPreventDefault();\n }\n touchtime = now;\n } else if (touches.length > 1) {\n var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n distance0 = dx * dx + dy * dy;\n }\n }\n function moved() {\n var touches = d3.touches(that), p0, l0, p1, l1;\n d3_selection_interrupt.call(that);\n for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n p1 = touches[i];\n if (l1 = locations0[p1.identifier]) {\n if (l0) break;\n p0 = p1, l0 = l1;\n }\n }\n if (l1) {\n var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n scaleTo(scale1 * scale0);\n }\n touchtime = null;\n translateTo(p0, l0);\n zoomed(dispatch);\n }\n function ended() {\n if (d3.event.touches.length) {\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n delete locations0[changed[i].identifier];\n }\n for (var identifier in locations0) {\n return void relocate();\n }\n }\n d3.selectAll(targets).on(zoomName, null);\n subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n dragRestore();\n zoomended(dispatch);\n }\n }\n function mousewheeled() {\n var dispatch = event.of(this, arguments);\n if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n mousewheelTimer = setTimeout(function() {\n mousewheelTimer = null;\n zoomended(dispatch);\n }, 50);\n d3_eventPreventDefault();\n scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n translateTo(center0, translate0);\n zoomed(dispatch);\n }\n function dblclicked() {\n var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n }\n return d3.rebind(zoom, event, \"on\");\n };\n var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n d3.color = d3_color;\n function d3_color() {}\n d3_color.prototype.toString = function() {\n return this.rgb() + \"\";\n };\n d3.hsl = d3_hsl;\n function d3_hsl(h, s, l) {\n return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n }\n var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n d3_hslPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, this.l / k);\n };\n d3_hslPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, k * this.l);\n };\n d3_hslPrototype.rgb = function() {\n return d3_hsl_rgb(this.h, this.s, this.l);\n };\n function d3_hsl_rgb(h, s, l) {\n var m1, m2;\n h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n m1 = 2 * l - m2;\n function v(h) {\n if (h > 360) h -= 360; else if (h < 0) h += 360;\n if (h < 60) return m1 + (m2 - m1) * h / 60;\n if (h < 180) return m2;\n if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n return m1;\n }\n function vv(h) {\n return Math.round(v(h) * 255);\n }\n return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n }\n d3.hcl = d3_hcl;\n function d3_hcl(h, c, l) {\n return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n }\n var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n d3_hclPrototype.brighter = function(k) {\n return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.darker = function(k) {\n return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.rgb = function() {\n return d3_hcl_lab(this.h, this.c, this.l).rgb();\n };\n function d3_hcl_lab(h, c, l) {\n if (isNaN(h)) h = 0;\n if (isNaN(c)) c = 0;\n return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n }\n d3.lab = d3_lab;\n function d3_lab(l, a, b) {\n return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n }\n var d3_lab_K = 18;\n var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n var d3_labPrototype = d3_lab.prototype = new d3_color();\n d3_labPrototype.brighter = function(k) {\n return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.darker = function(k) {\n return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.rgb = function() {\n return d3_lab_rgb(this.l, this.a, this.b);\n };\n function d3_lab_rgb(l, a, b) {\n var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n x = d3_lab_xyz(x) * d3_lab_X;\n y = d3_lab_xyz(y) * d3_lab_Y;\n z = d3_lab_xyz(z) * d3_lab_Z;\n return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n }\n function d3_lab_hcl(l, a, b) {\n return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n }\n function d3_lab_xyz(x) {\n return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n }\n function d3_xyz_lab(x) {\n return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n }\n function d3_xyz_rgb(r) {\n return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n }\n d3.rgb = d3_rgb;\n function d3_rgb(r, g, b) {\n return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n }\n function d3_rgbNumber(value) {\n return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n }\n function d3_rgbString(value) {\n return d3_rgbNumber(value) + \"\";\n }\n var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n d3_rgbPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n var r = this.r, g = this.g, b = this.b, i = 30;\n if (!r && !g && !b) return new d3_rgb(i, i, i);\n if (r && r < i) r = i;\n if (g && g < i) g = i;\n if (b && b < i) b = i;\n return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n };\n d3_rgbPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_rgb(k * this.r, k * this.g, k * this.b);\n };\n d3_rgbPrototype.hsl = function() {\n return d3_rgb_hsl(this.r, this.g, this.b);\n };\n d3_rgbPrototype.toString = function() {\n return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n };\n function d3_rgb_hex(v) {\n return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n }\n function d3_rgb_parse(format, rgb, hsl) {\n var r = 0, g = 0, b = 0, m1, m2, color;\n m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n if (m1) {\n m2 = m1[2].split(\",\");\n switch (m1[1]) {\n case \"hsl\":\n {\n return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n }\n\n case \"rgb\":\n {\n return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n }\n }\n }\n if (color = d3_rgb_names.get(format)) {\n return rgb(color.r, color.g, color.b);\n }\n if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n if (format.length === 4) {\n r = (color & 3840) >> 4;\n r = r >> 4 | r;\n g = color & 240;\n g = g >> 4 | g;\n b = color & 15;\n b = b << 4 | b;\n } else if (format.length === 7) {\n r = (color & 16711680) >> 16;\n g = (color & 65280) >> 8;\n b = color & 255;\n }\n }\n return rgb(r, g, b);\n }\n function d3_rgb_hsl(r, g, b) {\n var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n if (d) {\n s = l < .5 ? d / (max + min) : d / (2 - max - min);\n if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n h *= 60;\n } else {\n h = NaN;\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new d3_hsl(h, s, l);\n }\n function d3_rgb_lab(r, g, b) {\n r = d3_rgb_xyz(r);\n g = d3_rgb_xyz(g);\n b = d3_rgb_xyz(b);\n var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n }\n function d3_rgb_xyz(r) {\n return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n }\n function d3_rgb_parseNumber(c) {\n var f = parseFloat(c);\n return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n }\n var d3_rgb_names = d3.map({\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n });\n d3_rgb_names.forEach(function(key, value) {\n d3_rgb_names.set(key, d3_rgbNumber(value));\n });\n function d3_functor(v) {\n return typeof v === \"function\" ? v : function() {\n return v;\n };\n }\n d3.functor = d3_functor;\n d3.xhr = d3_xhrType(d3_identity);\n function d3_xhrType(response) {\n return function(url, mimeType, callback) {\n if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n mimeType = null;\n return d3_xhr(url, mimeType, response, callback);\n };\n }\n function d3_xhr(url, mimeType, response, callback) {\n var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n request.readyState > 3 && respond();\n };\n function respond() {\n var status = request.status, result;\n if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n try {\n result = response.call(xhr, request);\n } catch (e) {\n dispatch.error.call(xhr, e);\n return;\n }\n dispatch.load.call(xhr, result);\n } else {\n dispatch.error.call(xhr, request);\n }\n }\n request.onprogress = function(event) {\n var o = d3.event;\n d3.event = event;\n try {\n dispatch.progress.call(xhr, request);\n } finally {\n d3.event = o;\n }\n };\n xhr.header = function(name, value) {\n name = (name + \"\").toLowerCase();\n if (arguments.length < 2) return headers[name];\n if (value == null) delete headers[name]; else headers[name] = value + \"\";\n return xhr;\n };\n xhr.mimeType = function(value) {\n if (!arguments.length) return mimeType;\n mimeType = value == null ? null : value + \"\";\n return xhr;\n };\n xhr.responseType = function(value) {\n if (!arguments.length) return responseType;\n responseType = value;\n return xhr;\n };\n xhr.response = function(value) {\n response = value;\n return xhr;\n };\n [ \"get\", \"post\" ].forEach(function(method) {\n xhr[method] = function() {\n return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n };\n });\n xhr.send = function(method, data, callback) {\n if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n request.open(method, url, true);\n if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n if (responseType != null) request.responseType = responseType;\n if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n callback(null, request);\n });\n dispatch.beforesend.call(xhr, request);\n request.send(data == null ? null : data);\n return xhr;\n };\n xhr.abort = function() {\n request.abort();\n return xhr;\n };\n d3.rebind(xhr, dispatch, \"on\");\n return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n }\n function d3_xhr_fixCallback(callback) {\n return callback.length === 1 ? function(error, request) {\n callback(error == null ? request : null);\n } : callback;\n }\n function d3_xhrHasResponse(request) {\n var type = request.responseType;\n return type && type !== \"text\" ? request.response : request.responseText;\n }\n d3.dsv = function(delimiter, mimeType) {\n var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n function dsv(url, row, callback) {\n if (arguments.length < 3) callback = row, row = null;\n var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n xhr.row = function(_) {\n return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n };\n return xhr;\n }\n function response(request) {\n return dsv.parse(request.responseText);\n }\n function typedResponse(f) {\n return function(request) {\n return dsv.parse(request.responseText, f);\n };\n }\n dsv.parse = function(text, f) {\n var o;\n return dsv.parseRows(text, function(row, i) {\n if (o) return o(row, i - 1);\n var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n o = f ? function(row, i) {\n return f(a(row), i);\n } : a;\n });\n };\n dsv.parseRows = function(text, f) {\n var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n function token() {\n if (I >= N) return EOF;\n if (eol) return eol = false, EOL;\n var j = I;\n if (text.charCodeAt(j) === 34) {\n var i = j;\n while (i++ < N) {\n if (text.charCodeAt(i) === 34) {\n if (text.charCodeAt(i + 1) !== 34) break;\n ++i;\n }\n }\n I = i + 2;\n var c = text.charCodeAt(i + 1);\n if (c === 13) {\n eol = true;\n if (text.charCodeAt(i + 2) === 10) ++I;\n } else if (c === 10) {\n eol = true;\n }\n return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n }\n while (I < N) {\n var c = text.charCodeAt(I++), k = 1;\n if (c === 10) eol = true; else if (c === 13) {\n eol = true;\n if (text.charCodeAt(I) === 10) ++I, ++k;\n } else if (c !== delimiterCode) continue;\n return text.slice(j, I - k);\n }\n return text.slice(j);\n }\n while ((t = token()) !== EOF) {\n var a = [];\n while (t !== EOL && t !== EOF) {\n a.push(t);\n t = token();\n }\n if (f && (a = f(a, n++)) == null) continue;\n rows.push(a);\n }\n return rows;\n };\n dsv.format = function(rows) {\n if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n var fieldSet = new d3_Set(), fields = [];\n rows.forEach(function(row) {\n for (var field in row) {\n if (!fieldSet.has(field)) {\n fields.push(fieldSet.add(field));\n }\n }\n });\n return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n return fields.map(function(field) {\n return formatValue(row[field]);\n }).join(delimiter);\n })).join(\"\\n\");\n };\n dsv.formatRows = function(rows) {\n return rows.map(formatRow).join(\"\\n\");\n };\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n function formatValue(text) {\n return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n }\n return dsv;\n };\n d3.csv = d3.dsv(\",\", \"text/csv\");\n d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n setTimeout(callback, 17);\n };\n d3.timer = function() {\n d3_timer.apply(this, arguments);\n };\n function d3_timer(callback, delay, then) {\n var n = arguments.length;\n if (n < 2) delay = 0;\n if (n < 3) then = Date.now();\n var time = then + delay, timer = {\n c: callback,\n t: time,\n n: null\n };\n if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n d3_timer_queueTail = timer;\n if (!d3_timer_interval) {\n d3_timer_timeout = clearTimeout(d3_timer_timeout);\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n return timer;\n }\n function d3_timer_step() {\n var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n if (delay > 24) {\n if (isFinite(delay)) {\n clearTimeout(d3_timer_timeout);\n d3_timer_timeout = setTimeout(d3_timer_step, delay);\n }\n d3_timer_interval = 0;\n } else {\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n }\n d3.timer.flush = function() {\n d3_timer_mark();\n d3_timer_sweep();\n };\n function d3_timer_mark() {\n var now = Date.now(), timer = d3_timer_queueHead;\n while (timer) {\n if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n timer = timer.n;\n }\n return now;\n }\n function d3_timer_sweep() {\n var t0, t1 = d3_timer_queueHead, time = Infinity;\n while (t1) {\n if (t1.c) {\n if (t1.t < time) time = t1.t;\n t1 = (t0 = t1).n;\n } else {\n t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n }\n }\n d3_timer_queueTail = t0;\n return time;\n }\n function d3_format_precision(x, p) {\n return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n }\n d3.round = function(x, n) {\n return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n };\n var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n d3.formatPrefix = function(value, precision) {\n var i = 0;\n if (value = +value) {\n if (value < 0) value *= -1;\n if (precision) value = d3.round(value, d3_format_precision(value, precision));\n i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n }\n return d3_formatPrefixes[8 + i / 3];\n };\n function d3_formatPrefix(d, i) {\n var k = Math.pow(10, abs(8 - i) * 3);\n return {\n scale: i > 8 ? function(d) {\n return d / k;\n } : function(d) {\n return d * k;\n },\n symbol: d\n };\n }\n function d3_locale_numberFormat(locale) {\n var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = locale_grouping[j = (j + 1) % locale_grouping.length];\n }\n return t.reverse().join(locale_thousands);\n } : d3_identity;\n return function(specifier) {\n var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n if (precision) precision = +precision.substring(1);\n if (zfill || fill === \"0\" && align === \"=\") {\n zfill = fill = \"0\";\n align = \"=\";\n }\n switch (type) {\n case \"n\":\n comma = true;\n type = \"g\";\n break;\n\n case \"%\":\n scale = 100;\n suffix = \"%\";\n type = \"f\";\n break;\n\n case \"p\":\n scale = 100;\n suffix = \"%\";\n type = \"r\";\n break;\n\n case \"b\":\n case \"o\":\n case \"x\":\n case \"X\":\n if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n case \"c\":\n exponent = false;\n\n case \"d\":\n integer = true;\n precision = 0;\n break;\n\n case \"s\":\n scale = -1;\n type = \"r\";\n break;\n }\n if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n if (type == \"r\" && !precision) type = \"g\";\n if (precision != null) {\n if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n }\n type = d3_format_types.get(type) || d3_format_typeDefault;\n var zcomma = zfill && comma;\n return function(value) {\n var fullSuffix = suffix;\n if (integer && value % 1) return \"\";\n var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n if (scale < 0) {\n var unit = d3.formatPrefix(value, precision);\n value = unit.scale(value);\n fullSuffix = unit.symbol + suffix;\n } else {\n value *= scale;\n }\n value = type(value, precision);\n var i = value.lastIndexOf(\".\"), before, after;\n if (i < 0) {\n var j = exponent ? value.lastIndexOf(\"e\") : -1;\n if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n } else {\n before = value.substring(0, i);\n after = locale_decimal + value.substring(i + 1);\n }\n if (!zfill && comma) before = formatGroup(before, Infinity);\n var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n negative += prefix;\n value = before + after;\n return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n };\n };\n }\n var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n var d3_format_types = d3.map({\n b: function(x) {\n return x.toString(2);\n },\n c: function(x) {\n return String.fromCharCode(x);\n },\n o: function(x) {\n return x.toString(8);\n },\n x: function(x) {\n return x.toString(16);\n },\n X: function(x) {\n return x.toString(16).toUpperCase();\n },\n g: function(x, p) {\n return x.toPrecision(p);\n },\n e: function(x, p) {\n return x.toExponential(p);\n },\n f: function(x, p) {\n return x.toFixed(p);\n },\n r: function(x, p) {\n return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n }\n });\n function d3_format_typeDefault(x) {\n return x + \"\";\n }\n var d3_time = d3.time = {}, d3_date = Date;\n function d3_date_utc() {\n this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n }\n d3_date_utc.prototype = {\n getDate: function() {\n return this._.getUTCDate();\n },\n getDay: function() {\n return this._.getUTCDay();\n },\n getFullYear: function() {\n return this._.getUTCFullYear();\n },\n getHours: function() {\n return this._.getUTCHours();\n },\n getMilliseconds: function() {\n return this._.getUTCMilliseconds();\n },\n getMinutes: function() {\n return this._.getUTCMinutes();\n },\n getMonth: function() {\n return this._.getUTCMonth();\n },\n getSeconds: function() {\n return this._.getUTCSeconds();\n },\n getTime: function() {\n return this._.getTime();\n },\n getTimezoneOffset: function() {\n return 0;\n },\n valueOf: function() {\n return this._.valueOf();\n },\n setDate: function() {\n d3_time_prototype.setUTCDate.apply(this._, arguments);\n },\n setDay: function() {\n d3_time_prototype.setUTCDay.apply(this._, arguments);\n },\n setFullYear: function() {\n d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n },\n setHours: function() {\n d3_time_prototype.setUTCHours.apply(this._, arguments);\n },\n setMilliseconds: function() {\n d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n },\n setMinutes: function() {\n d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n },\n setMonth: function() {\n d3_time_prototype.setUTCMonth.apply(this._, arguments);\n },\n setSeconds: function() {\n d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n },\n setTime: function() {\n d3_time_prototype.setTime.apply(this._, arguments);\n }\n };\n var d3_time_prototype = Date.prototype;\n function d3_time_interval(local, step, number) {\n function round(date) {\n var d0 = local(date), d1 = offset(d0, 1);\n return date - d0 < d1 - date ? d0 : d1;\n }\n function ceil(date) {\n step(date = local(new d3_date(date - 1)), 1);\n return date;\n }\n function offset(date, k) {\n step(date = new d3_date(+date), k);\n return date;\n }\n function range(t0, t1, dt) {\n var time = ceil(t0), times = [];\n if (dt > 1) {\n while (time < t1) {\n if (!(number(time) % dt)) times.push(new Date(+time));\n step(time, 1);\n }\n } else {\n while (time < t1) times.push(new Date(+time)), step(time, 1);\n }\n return times;\n }\n function range_utc(t0, t1, dt) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = t0;\n return range(utc, t1, dt);\n } finally {\n d3_date = Date;\n }\n }\n local.floor = local;\n local.round = round;\n local.ceil = ceil;\n local.offset = offset;\n local.range = range;\n var utc = local.utc = d3_time_interval_utc(local);\n utc.floor = utc;\n utc.round = d3_time_interval_utc(round);\n utc.ceil = d3_time_interval_utc(ceil);\n utc.offset = d3_time_interval_utc(offset);\n utc.range = range_utc;\n return local;\n }\n function d3_time_interval_utc(method) {\n return function(date, k) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = date;\n return method(utc, k)._;\n } finally {\n d3_date = Date;\n }\n };\n }\n d3_time.year = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setMonth(0, 1);\n return date;\n }, function(date, offset) {\n date.setFullYear(date.getFullYear() + offset);\n }, function(date) {\n return date.getFullYear();\n });\n d3_time.years = d3_time.year.range;\n d3_time.years.utc = d3_time.year.utc.range;\n d3_time.day = d3_time_interval(function(date) {\n var day = new d3_date(2e3, 0);\n day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n return day;\n }, function(date, offset) {\n date.setDate(date.getDate() + offset);\n }, function(date) {\n return date.getDate() - 1;\n });\n d3_time.days = d3_time.day.range;\n d3_time.days.utc = d3_time.day.utc.range;\n d3_time.dayOfYear = function(date) {\n var year = d3_time.year(date);\n return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n };\n [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n i = 7 - i;\n var interval = d3_time[day] = d3_time_interval(function(date) {\n (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n return date;\n }, function(date, offset) {\n date.setDate(date.getDate() + Math.floor(offset) * 7);\n }, function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n });\n d3_time[day + \"s\"] = interval.range;\n d3_time[day + \"s\"].utc = interval.utc.range;\n d3_time[day + \"OfYear\"] = function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n };\n });\n d3_time.week = d3_time.sunday;\n d3_time.weeks = d3_time.sunday.range;\n d3_time.weeks.utc = d3_time.sunday.utc.range;\n d3_time.weekOfYear = d3_time.sundayOfYear;\n function d3_locale_timeFormat(locale) {\n var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n function d3_time_format(template) {\n var n = template.length;\n function format(date) {\n var string = [], i = -1, j = 0, c, p, f;\n while (++i < n) {\n if (template.charCodeAt(i) === 37) {\n string.push(template.slice(j, i));\n if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(template.slice(j, i));\n return string.join(\"\");\n }\n format.parse = function(string) {\n var d = {\n y: 1900,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0,\n Z: null\n }, i = d3_time_parse(d, template, string, 0);\n if (i != string.length) return null;\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n date.setFullYear(d.y, 0, 1);\n date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n } else date.setFullYear(d.y, d.m, d.d);\n date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n return localZ ? date._ : date;\n };\n format.toString = function() {\n return template;\n };\n return format;\n }\n function d3_time_parse(date, template, string, j) {\n var c, p, t, i = 0, n = template.length, m = string.length;\n while (i < n) {\n if (j >= m) return -1;\n c = template.charCodeAt(i++);\n if (c === 37) {\n t = template.charAt(i++);\n p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n if (!p || (j = p(date, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n d3_time_format.utc = function(template) {\n var local = d3_time_format(template);\n function format(date) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date();\n utc._ = date;\n return local(utc);\n } finally {\n d3_date = Date;\n }\n }\n format.parse = function(string) {\n try {\n d3_date = d3_date_utc;\n var date = local.parse(string);\n return date && date._;\n } finally {\n d3_date = Date;\n }\n };\n format.toString = local.toString;\n return format;\n };\n d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n locale_periods.forEach(function(p, i) {\n d3_time_periodLookup.set(p.toLowerCase(), i);\n });\n var d3_time_formats = {\n a: function(d) {\n return locale_shortDays[d.getDay()];\n },\n A: function(d) {\n return locale_days[d.getDay()];\n },\n b: function(d) {\n return locale_shortMonths[d.getMonth()];\n },\n B: function(d) {\n return locale_months[d.getMonth()];\n },\n c: d3_time_format(locale_dateTime),\n d: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n e: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n H: function(d, p) {\n return d3_time_formatPad(d.getHours(), p, 2);\n },\n I: function(d, p) {\n return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n },\n j: function(d, p) {\n return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n },\n L: function(d, p) {\n return d3_time_formatPad(d.getMilliseconds(), p, 3);\n },\n m: function(d, p) {\n return d3_time_formatPad(d.getMonth() + 1, p, 2);\n },\n M: function(d, p) {\n return d3_time_formatPad(d.getMinutes(), p, 2);\n },\n p: function(d) {\n return locale_periods[+(d.getHours() >= 12)];\n },\n S: function(d, p) {\n return d3_time_formatPad(d.getSeconds(), p, 2);\n },\n U: function(d, p) {\n return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n },\n w: function(d) {\n return d.getDay();\n },\n W: function(d, p) {\n return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n },\n x: d3_time_format(locale_date),\n X: d3_time_format(locale_time),\n y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n },\n Y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n },\n Z: d3_time_zone,\n \"%\": function() {\n return \"%\";\n }\n };\n var d3_time_parsers = {\n a: d3_time_parseWeekdayAbbrev,\n A: d3_time_parseWeekday,\n b: d3_time_parseMonthAbbrev,\n B: d3_time_parseMonth,\n c: d3_time_parseLocaleFull,\n d: d3_time_parseDay,\n e: d3_time_parseDay,\n H: d3_time_parseHour24,\n I: d3_time_parseHour24,\n j: d3_time_parseDayOfYear,\n L: d3_time_parseMilliseconds,\n m: d3_time_parseMonthNumber,\n M: d3_time_parseMinutes,\n p: d3_time_parseAmPm,\n S: d3_time_parseSeconds,\n U: d3_time_parseWeekNumberSunday,\n w: d3_time_parseWeekdayNumber,\n W: d3_time_parseWeekNumberMonday,\n x: d3_time_parseLocaleDate,\n X: d3_time_parseLocaleTime,\n y: d3_time_parseYear,\n Y: d3_time_parseFullYear,\n Z: d3_time_parseZone,\n \"%\": d3_time_parseLiteralPercent\n };\n function d3_time_parseWeekdayAbbrev(date, string, i) {\n d3_time_dayAbbrevRe.lastIndex = 0;\n var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseWeekday(date, string, i) {\n d3_time_dayRe.lastIndex = 0;\n var n = d3_time_dayRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonthAbbrev(date, string, i) {\n d3_time_monthAbbrevRe.lastIndex = 0;\n var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonth(date, string, i) {\n d3_time_monthRe.lastIndex = 0;\n var n = d3_time_monthRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseLocaleFull(date, string, i) {\n return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n }\n function d3_time_parseLocaleDate(date, string, i) {\n return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n }\n function d3_time_parseLocaleTime(date, string, i) {\n return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n }\n function d3_time_parseAmPm(date, string, i) {\n var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n return n == null ? -1 : (date.p = n, i);\n }\n return d3_time_format;\n }\n var d3_time_formatPads = {\n \"-\": \"\",\n _: \" \",\n \"0\": \"0\"\n }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n function d3_time_formatPad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n function d3_time_formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n }\n function d3_time_formatLookup(names) {\n var map = new d3_Map(), i = -1, n = names.length;\n while (++i < n) map.set(names[i].toLowerCase(), i);\n return map;\n }\n function d3_time_parseWeekdayNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n return n ? (date.w = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberSunday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.U = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberMonday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.W = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseFullYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n return n ? (date.y = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n }\n function d3_time_parseZone(date, string, i) {\n return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n i + 5) : -1;\n }\n function d3_time_expandYear(d) {\n return d + (d > 68 ? 1900 : 2e3);\n }\n function d3_time_parseMonthNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n }\n function d3_time_parseDay(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.d = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseDayOfYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.j = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseHour24(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.H = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMinutes(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.M = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseSeconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.S = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMilliseconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.L = +n[0], i + n[0].length) : -1;\n }\n function d3_time_zone(d) {\n var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n }\n function d3_time_parseLiteralPercent(date, string, i) {\n d3_time_percentRe.lastIndex = 0;\n var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n function d3_time_formatMulti(formats) {\n var n = formats.length, i = -1;\n while (++i < n) formats[i][0] = this(formats[i][0]);\n return function(date) {\n var i = 0, f = formats[i];\n while (!f[1](date)) f = formats[++i];\n return f[0](date);\n };\n }\n d3.locale = function(locale) {\n return {\n numberFormat: d3_locale_numberFormat(locale),\n timeFormat: d3_locale_timeFormat(locale)\n };\n };\n var d3_locale_enUS = d3.locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [ 3 ],\n currency: [ \"$\", \"\" ],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%m/%d/%Y\",\n time: \"%H:%M:%S\",\n periods: [ \"AM\", \"PM\" ],\n days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n });\n d3.format = d3_locale_enUS.numberFormat;\n d3.geo = {};\n function d3_adder() {}\n d3_adder.prototype = {\n s: 0,\n t: 0,\n add: function(y) {\n d3_adderSum(y, this.t, d3_adderTemp);\n d3_adderSum(d3_adderTemp.s, this.s, this);\n if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n },\n reset: function() {\n this.s = this.t = 0;\n },\n valueOf: function() {\n return this.s;\n }\n };\n var d3_adderTemp = new d3_adder();\n function d3_adderSum(a, b, o) {\n var x = o.s = a + b, bv = x - a, av = x - bv;\n o.t = a - av + (b - bv);\n }\n d3.geo.stream = function(object, listener) {\n if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n d3_geo_streamObjectType[object.type](object, listener);\n } else {\n d3_geo_streamGeometry(object, listener);\n }\n };\n function d3_geo_streamGeometry(geometry, listener) {\n if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n d3_geo_streamGeometryType[geometry.type](geometry, listener);\n }\n }\n var d3_geo_streamObjectType = {\n Feature: function(feature, listener) {\n d3_geo_streamGeometry(feature.geometry, listener);\n },\n FeatureCollection: function(object, listener) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n }\n };\n var d3_geo_streamGeometryType = {\n Sphere: function(object, listener) {\n listener.sphere();\n },\n Point: function(object, listener) {\n object = object.coordinates;\n listener.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n },\n LineString: function(object, listener) {\n d3_geo_streamLine(object.coordinates, listener, 0);\n },\n MultiLineString: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n },\n Polygon: function(object, listener) {\n d3_geo_streamPolygon(object.coordinates, listener);\n },\n MultiPolygon: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n },\n GeometryCollection: function(object, listener) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n }\n };\n function d3_geo_streamLine(coordinates, listener, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n listener.lineStart();\n while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n listener.lineEnd();\n }\n function d3_geo_streamPolygon(coordinates, listener) {\n var i = -1, n = coordinates.length;\n listener.polygonStart();\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n listener.polygonEnd();\n }\n d3.geo.area = function(object) {\n d3_geo_areaSum = 0;\n d3.geo.stream(object, d3_geo_area);\n return d3_geo_areaSum;\n };\n var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n var d3_geo_area = {\n sphere: function() {\n d3_geo_areaSum += 4 * π;\n },\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_areaRingSum.reset();\n d3_geo_area.lineStart = d3_geo_areaRingStart;\n },\n polygonEnd: function() {\n var area = 2 * d3_geo_areaRingSum;\n d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n }\n };\n function d3_geo_areaRingStart() {\n var λ00, φ00, λ0, cosφ0, sinφ0;\n d3_geo_area.point = function(λ, φ) {\n d3_geo_area.point = nextPoint;\n λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n sinφ0 = Math.sin(φ);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n φ = φ * d3_radians / 2 + π / 4;\n var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n d3_geo_areaRingSum.add(Math.atan2(v, u));\n λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n }\n d3_geo_area.lineEnd = function() {\n nextPoint(λ00, φ00);\n };\n }\n function d3_geo_cartesian(spherical) {\n var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n }\n function d3_geo_cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n }\n function d3_geo_cartesianCross(a, b) {\n return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n }\n function d3_geo_cartesianAdd(a, b) {\n a[0] += b[0];\n a[1] += b[1];\n a[2] += b[2];\n }\n function d3_geo_cartesianScale(vector, k) {\n return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n }\n function d3_geo_cartesianNormalize(d) {\n var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l;\n d[1] /= l;\n d[2] /= l;\n }\n function d3_geo_spherical(cartesian) {\n return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n }\n function d3_geo_sphericalEqual(a, b) {\n return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n }\n d3.geo.bounds = function() {\n var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n var bound = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n bound.point = ringPoint;\n bound.lineStart = ringStart;\n bound.lineEnd = ringEnd;\n dλSum = 0;\n d3_geo_area.polygonStart();\n },\n polygonEnd: function() {\n d3_geo_area.polygonEnd();\n bound.point = point;\n bound.lineStart = lineStart;\n bound.lineEnd = lineEnd;\n if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n range[0] = λ0, range[1] = λ1;\n }\n };\n function point(λ, φ) {\n ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n function linePoint(λ, φ) {\n var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n if (p0) {\n var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n d3_geo_cartesianNormalize(inflection);\n inflection = d3_geo_spherical(inflection);\n var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = inflection[1] * d3_degrees;\n if (φi > φ1) φ1 = φi;\n } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = -inflection[1] * d3_degrees;\n if (φi < φ0) φ0 = φi;\n } else {\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n if (antimeridian) {\n if (λ < λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n } else {\n if (λ1 >= λ0) {\n if (λ < λ0) λ0 = λ;\n if (λ > λ1) λ1 = λ;\n } else {\n if (λ > λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n }\n }\n } else {\n point(λ, φ);\n }\n p0 = p, λ_ = λ;\n }\n function lineStart() {\n bound.point = linePoint;\n }\n function lineEnd() {\n range[0] = λ0, range[1] = λ1;\n bound.point = point;\n p0 = null;\n }\n function ringPoint(λ, φ) {\n if (p0) {\n var dλ = λ - λ_;\n dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n } else λ__ = λ, φ__ = φ;\n d3_geo_area.point(λ, φ);\n linePoint(λ, φ);\n }\n function ringStart() {\n d3_geo_area.lineStart();\n }\n function ringEnd() {\n ringPoint(λ__, φ__);\n d3_geo_area.lineEnd();\n if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n range[0] = λ0, range[1] = λ1;\n p0 = null;\n }\n function angle(λ0, λ1) {\n return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n }\n function compareRanges(a, b) {\n return a[0] - b[0];\n }\n function withinRange(x, range) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n }\n return function(feature) {\n φ1 = λ1 = -(λ0 = φ0 = Infinity);\n ranges = [];\n d3.geo.stream(feature, bound);\n var n = ranges.length;\n if (n) {\n ranges.sort(compareRanges);\n for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n b = ranges[i];\n if (withinRange(b[0], a) || withinRange(b[1], a)) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n var best = -Infinity, dλ;\n for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n b = merged[i];\n if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n }\n }\n ranges = range = null;\n return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n };\n }();\n d3.geo.centroid = function(object) {\n d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, d3_geo_centroid);\n var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n if (m < ε2) {\n x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n m = x * x + y * y + z * z;\n if (m < ε2) return [ NaN, NaN ];\n }\n return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n };\n var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n var d3_geo_centroid = {\n sphere: d3_noop,\n point: d3_geo_centroidPoint,\n lineStart: d3_geo_centroidLineStart,\n lineEnd: d3_geo_centroidLineEnd,\n polygonStart: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n }\n };\n function d3_geo_centroidPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n }\n function d3_geo_centroidPointXYZ(x, y, z) {\n ++d3_geo_centroidW0;\n d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n }\n function d3_geo_centroidLineStart() {\n var x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroid.point = nextPoint;\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_centroidLineEnd() {\n d3_geo_centroid.point = d3_geo_centroidPoint;\n }\n function d3_geo_centroidRingStart() {\n var λ00, φ00, x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ00 = λ, φ00 = φ;\n d3_geo_centroid.point = nextPoint;\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n d3_geo_centroid.lineEnd = function() {\n nextPoint(λ00, φ00);\n d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n d3_geo_centroid.point = d3_geo_centroidPoint;\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n d3_geo_centroidX2 += v * cx;\n d3_geo_centroidY2 += v * cy;\n d3_geo_centroidZ2 += v * cz;\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_compose(a, b) {\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n return compose;\n }\n function d3_true() {\n return true;\n }\n function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n var subject = [], clip = [];\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n];\n if (d3_geo_sphericalEqual(p0, p1)) {\n listener.lineStart();\n for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n listener.lineEnd();\n return;\n }\n var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n a.o = b;\n subject.push(a);\n clip.push(b);\n a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n a.o = b;\n subject.push(a);\n clip.push(b);\n });\n clip.sort(compare);\n d3_geo_clipPolygonLinkCircular(subject);\n d3_geo_clipPolygonLinkCircular(clip);\n if (!subject.length) return;\n for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n clip[i].e = entry = !entry;\n }\n var start = subject[0], points, point;\n while (1) {\n var current = start, isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n listener.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, listener);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, listener);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n listener.lineEnd();\n }\n }\n function d3_geo_clipPolygonLinkCircular(array) {\n if (!(n = array.length)) return;\n var n, i = 0, a = array[0], b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n }\n function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other;\n this.e = entry;\n this.v = false;\n this.n = this.p = null;\n }\n function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n return function(rotate, listener) {\n var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = d3.merge(segments);\n var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n if (segments.length) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n } else if (clipStartInside) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n listener.polygonStart();\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n listener.polygonEnd();\n }\n };\n function point(λ, φ) {\n var point = rotate(λ, φ);\n if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n }\n function pointLine(λ, φ) {\n var point = rotate(λ, φ);\n line.point(point[0], point[1]);\n }\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n var segments;\n var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n function pointRing(λ, φ) {\n ring.push([ λ, φ ]);\n var point = rotate(λ, φ);\n ringListener.point(point[0], point[1]);\n }\n function ringStart() {\n ringListener.lineStart();\n ring = [];\n }\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringListener.lineEnd();\n var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n ring.pop();\n polygon.push(ring);\n ring = null;\n if (!n) return;\n if (clean & 1) {\n segment = ringSegments[0];\n var n = segment.length - 1, i = -1, point;\n if (n > 0) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n while (++i < n) listener.point((point = segment[i])[0], point[1]);\n listener.lineEnd();\n }\n return;\n }\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n }\n return clip;\n };\n }\n function d3_geo_clipSegmentLength1(segment) {\n return segment.length > 1;\n }\n function d3_geo_clipBufferListener() {\n var lines = [], line;\n return {\n lineStart: function() {\n lines.push(line = []);\n },\n point: function(λ, φ) {\n line.push([ λ, φ ]);\n },\n lineEnd: d3_noop,\n buffer: function() {\n var buffer = lines;\n lines = [];\n line = null;\n return buffer;\n },\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n }\n };\n }\n function d3_geo_clipSort(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n }\n var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n function d3_geo_clipAntimeridianLine(listener) {\n var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n return {\n lineStart: function() {\n listener.lineStart();\n clean = 1;\n },\n point: function(λ1, φ1) {\n var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n if (abs(dλ - π) < ε) {\n listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n listener.point(λ1, φ0);\n clean = 0;\n } else if (sλ0 !== sλ1 && dλ >= π) {\n if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n clean = 0;\n }\n listener.point(λ0 = λ1, φ0 = φ1);\n sλ0 = sλ1;\n },\n lineEnd: function() {\n listener.lineEnd();\n λ0 = φ0 = NaN;\n },\n clean: function() {\n return 2 - clean;\n }\n };\n }\n function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n }\n function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n var φ;\n if (from == null) {\n φ = direction * halfπ;\n listener.point(-π, φ);\n listener.point(0, φ);\n listener.point(π, φ);\n listener.point(π, 0);\n listener.point(π, -φ);\n listener.point(0, -φ);\n listener.point(-π, -φ);\n listener.point(-π, 0);\n listener.point(-π, φ);\n } else if (abs(from[0] - to[0]) > ε) {\n var s = from[0] < to[0] ? π : -π;\n φ = direction * s / 2;\n listener.point(-s, φ);\n listener.point(0, φ);\n listener.point(s, φ);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function d3_geo_pointInPolygon(point, polygon) {\n var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n d3_geo_areaRingSum.reset();\n for (var i = 0, n = polygon.length; i < n; ++i) {\n var ring = polygon[i], m = ring.length;\n if (!m) continue;\n var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n while (true) {\n if (j === m) j = 0;\n point = ring[j];\n var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n d3_geo_cartesianNormalize(arc);\n var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n d3_geo_cartesianNormalize(intersection);\n var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n }\n }\n if (!j++) break;\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n }\n }\n return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n }\n function d3_geo_clipCircle(radius) {\n var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n function visible(λ, φ) {\n return Math.cos(λ) * Math.cos(φ) > cr;\n }\n function clipLine(listener) {\n var point0, c0, v0, v00, clean;\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(λ, φ) {\n var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n if (!point0 && (v00 = v0 = v)) listener.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n point1[0] += ε;\n point1[1] += ε;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n listener.lineStart();\n point2 = intersect(point1, point0);\n listener.point(point2[0], point2[1]);\n } else {\n point2 = intersect(point0, point1);\n listener.point(point2[0], point2[1]);\n listener.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n } else {\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n listener.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) listener.lineEnd();\n point0 = null;\n },\n clean: function() {\n return clean | (v00 && v0) << 1;\n }\n };\n }\n function intersect(a, b, two) {\n var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n if (!determinant) return !two && a;\n var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n d3_geo_cartesianAdd(A, B);\n var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n if (t2 < 0) return;\n var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n d3_geo_cartesianAdd(q, A);\n q = d3_geo_spherical(q);\n if (!two) return q;\n var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n d3_geo_cartesianAdd(q1, A);\n return [ q, d3_geo_spherical(q1) ];\n }\n }\n function code(λ, φ) {\n var r = smallRadius ? radius : π - radius, code = 0;\n if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n return code;\n }\n }\n function d3_geom_clipLine(x0, y0, x1, y1) {\n return function(line) {\n var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n if (t0 > 0) line.a = {\n x: ax + t0 * dx,\n y: ay + t0 * dy\n };\n if (t1 < 1) line.b = {\n x: ax + t1 * dx,\n y: ay + t1 * dy\n };\n return line;\n };\n }\n var d3_geo_clipExtentMAX = 1e9;\n d3.geo.clipExtent = function() {\n var x0, y0, x1, y1, stream, clip, clipExtent = {\n stream: function(output) {\n if (stream) stream.valid = false;\n stream = clip(output);\n stream.valid = true;\n return stream;\n },\n extent: function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n if (stream) stream.valid = false, stream = null;\n return clipExtent;\n }\n };\n return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n };\n function d3_geo_clipExtent(x0, y0, x1, y1) {\n return function(listener) {\n var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n listener = bufferListener;\n segments = [];\n polygon = [];\n clean = true;\n },\n polygonEnd: function() {\n listener = listener_;\n segments = d3.merge(segments);\n var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n if (inside || visible) {\n listener.polygonStart();\n if (inside) {\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (visible) {\n d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n }\n listener.polygonEnd();\n }\n segments = polygon = ring = null;\n }\n };\n function insidePolygon(p) {\n var wn = 0, n = polygon.length, y = p[1];\n for (var i = 0; i < n; ++i) {\n for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n b = v[j];\n if (a[1] <= y) {\n if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n } else {\n if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n }\n a = b;\n }\n }\n return wn !== 0;\n }\n function interpolate(from, to, direction, listener) {\n var a = 0, a1 = 0;\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n do {\n listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n } while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function pointVisible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n function point(x, y) {\n if (pointVisible(x, y)) listener.point(x, y);\n }\n var x__, y__, v__, x_, y_, v_, first, clean;\n function lineStart() {\n clip.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferListener.rejoin();\n segments.push(bufferListener.buffer());\n }\n clip.point = point;\n if (v_) listener.lineEnd();\n }\n function linePoint(x, y) {\n x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n var v = pointVisible(x, y);\n if (polygon) ring.push([ x, y ]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n listener.lineStart();\n listener.point(x, y);\n }\n } else {\n if (v && v_) listener.point(x, y); else {\n var l = {\n a: {\n x: x_,\n y: y_\n },\n b: {\n x: x,\n y: y\n }\n };\n if (clipLine(l)) {\n if (!v_) {\n listener.lineStart();\n listener.point(l.a.x, l.a.y);\n }\n listener.point(l.b.x, l.b.y);\n if (!v) listener.lineEnd();\n clean = false;\n } else if (v) {\n listener.lineStart();\n listener.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n return clip;\n };\n function corner(p, direction) {\n return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n }\n function compare(a, b) {\n return comparePoints(a.x, b.x);\n }\n function comparePoints(a, b) {\n var ca = corner(a, 1), cb = corner(b, 1);\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n }\n }\n function d3_geo_conic(projectAt) {\n var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n p.parallels = function(_) {\n if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n };\n return p;\n }\n function d3_geo_conicEqualArea(φ0, φ1) {\n var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n function forward(λ, φ) {\n var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = ρ0 - y;\n return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n };\n return forward;\n }\n (d3.geo.conicEqualArea = function() {\n return d3_geo_conic(d3_geo_conicEqualArea);\n }).raw = d3_geo_conicEqualArea;\n d3.geo.albers = function() {\n return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n };\n d3.geo.albersUsa = function() {\n var lower48 = d3.geo.albers();\n var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n var point, pointStream = {\n point: function(x, y) {\n point = [ x, y ];\n }\n }, lower48Point, alaskaPoint, hawaiiPoint;\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n point = null;\n (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n return point;\n }\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n };\n albersUsa.stream = function(stream) {\n var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n return {\n point: function(x, y) {\n lower48Stream.point(x, y);\n alaskaStream.point(x, y);\n hawaiiStream.point(x, y);\n },\n sphere: function() {\n lower48Stream.sphere();\n alaskaStream.sphere();\n hawaiiStream.sphere();\n },\n lineStart: function() {\n lower48Stream.lineStart();\n alaskaStream.lineStart();\n hawaiiStream.lineStart();\n },\n lineEnd: function() {\n lower48Stream.lineEnd();\n alaskaStream.lineEnd();\n hawaiiStream.lineEnd();\n },\n polygonStart: function() {\n lower48Stream.polygonStart();\n alaskaStream.polygonStart();\n hawaiiStream.polygonStart();\n },\n polygonEnd: function() {\n lower48Stream.polygonEnd();\n alaskaStream.polygonEnd();\n hawaiiStream.polygonEnd();\n }\n };\n };\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_);\n alaska.precision(_);\n hawaii.precision(_);\n return albersUsa;\n };\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_);\n alaska.scale(_ * .35);\n hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n return albersUsa;\n };\n return albersUsa.scale(1070);\n };\n var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_pathAreaPolygon = 0;\n d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n }\n };\n function d3_geo_pathAreaRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathArea.point = function(x, y) {\n d3_geo_pathArea.point = nextPoint;\n x00 = x0 = x, y00 = y0 = y;\n };\n function nextPoint(x, y) {\n d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n x0 = x, y0 = y;\n }\n d3_geo_pathArea.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n var d3_geo_pathBounds = {\n point: d3_geo_pathBoundsPoint,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_pathBoundsPoint(x, y) {\n if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n }\n function d3_geo_pathBuffer() {\n var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointCircle = d3_geo_pathBufferCircle(_);\n return stream;\n },\n result: function() {\n if (buffer.length) {\n var result = buffer.join(\"\");\n buffer = [];\n return result;\n }\n }\n };\n function point(x, y) {\n buffer.push(\"M\", x, \",\", y, pointCircle);\n }\n function pointLineStart(x, y) {\n buffer.push(\"M\", x, \",\", y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n buffer.push(\"L\", x, \",\", y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n buffer.push(\"Z\");\n }\n return stream;\n }\n function d3_geo_pathBufferCircle(radius) {\n return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n }\n var d3_geo_pathCentroid = {\n point: d3_geo_pathCentroidPoint,\n lineStart: d3_geo_pathCentroidLineStart,\n lineEnd: d3_geo_pathCentroidLineEnd,\n polygonStart: function() {\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n }\n };\n function d3_geo_pathCentroidPoint(x, y) {\n d3_geo_centroidX0 += x;\n d3_geo_centroidY0 += y;\n ++d3_geo_centroidZ0;\n }\n function d3_geo_pathCentroidLineStart() {\n var x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n }\n function d3_geo_pathCentroidLineEnd() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n }\n function d3_geo_pathCentroidRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n z = y0 * x - x0 * y;\n d3_geo_centroidX2 += z * (x0 + x);\n d3_geo_centroidY2 += z * (y0 + y);\n d3_geo_centroidZ2 += z * 3;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n d3_geo_pathCentroid.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n function d3_geo_pathContext(context) {\n var pointRadius = 4.5;\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointRadius = _;\n return stream;\n },\n result: d3_noop\n };\n function point(x, y) {\n context.moveTo(x + pointRadius, y);\n context.arc(x, y, pointRadius, 0, τ);\n }\n function pointLineStart(x, y) {\n context.moveTo(x, y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n context.lineTo(x, y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n context.closePath();\n }\n return stream;\n }\n function d3_geo_resample(project) {\n var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n function resample(stream) {\n return (maxDepth ? resampleRecursive : resampleNone)(stream);\n }\n function resampleNone(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n });\n }\n function resampleRecursive(stream) {\n var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n var resample = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.polygonStart();\n resample.lineStart = ringStart;\n },\n polygonEnd: function() {\n stream.polygonEnd();\n resample.lineStart = lineStart;\n }\n };\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n function lineStart() {\n x0 = NaN;\n resample.point = linePoint;\n stream.lineStart();\n }\n function linePoint(λ, φ) {\n var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n function lineEnd() {\n resample.point = point;\n stream.lineEnd();\n }\n function ringStart() {\n lineStart();\n resample.point = ringPoint;\n resample.lineEnd = ringEnd;\n }\n function ringPoint(λ, φ) {\n linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resample.point = linePoint;\n }\n function ringEnd() {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n resample.lineEnd = lineEnd;\n lineEnd();\n }\n return resample;\n }\n function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n if (d2 > 4 * δ2 && depth--) {\n var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n }\n }\n }\n resample.precision = function(_) {\n if (!arguments.length) return Math.sqrt(δ2);\n maxDepth = (δ2 = _ * _) > 0 && 16;\n return resample;\n };\n return resample;\n }\n d3.geo.path = function() {\n var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n d3.geo.stream(object, cacheStream);\n }\n return contextStream.result();\n }\n path.area = function(object) {\n d3_geo_pathAreaSum = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathArea));\n return d3_geo_pathAreaSum;\n };\n path.centroid = function(object) {\n d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n };\n path.bounds = function(object) {\n d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n };\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n return reset();\n };\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return reset();\n };\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n function reset() {\n cacheStream = null;\n return path;\n }\n return path.projection(d3.geo.albersUsa()).context(null);\n };\n function d3_geo_pathProjectStream(project) {\n var resample = d3_geo_resample(function(x, y) {\n return project([ x * d3_degrees, y * d3_degrees ]);\n });\n return function(stream) {\n return d3_geo_projectionRadians(resample(stream));\n };\n }\n d3.geo.transform = function(methods) {\n return {\n stream: function(stream) {\n var transform = new d3_geo_transform(stream);\n for (var k in methods) transform[k] = methods[k];\n return transform;\n }\n };\n };\n function d3_geo_transform(stream) {\n this.stream = stream;\n }\n d3_geo_transform.prototype = {\n point: function(x, y) {\n this.stream.point(x, y);\n },\n sphere: function() {\n this.stream.sphere();\n },\n lineStart: function() {\n this.stream.lineStart();\n },\n lineEnd: function() {\n this.stream.lineEnd();\n },\n polygonStart: function() {\n this.stream.polygonStart();\n },\n polygonEnd: function() {\n this.stream.polygonEnd();\n }\n };\n function d3_geo_transformPoint(stream, point) {\n return {\n point: point,\n sphere: function() {\n stream.sphere();\n },\n lineStart: function() {\n stream.lineStart();\n },\n lineEnd: function() {\n stream.lineEnd();\n },\n polygonStart: function() {\n stream.polygonStart();\n },\n polygonEnd: function() {\n stream.polygonEnd();\n }\n };\n }\n d3.geo.projection = d3_geo_projection;\n d3.geo.projectionMutator = d3_geo_projectionMutator;\n function d3_geo_projection(project) {\n return d3_geo_projectionMutator(function() {\n return project;\n })();\n }\n function d3_geo_projectionMutator(projectAt) {\n var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n x = project(x, y);\n return [ x[0] * k + δx, δy - x[1] * k ];\n }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n function projection(point) {\n point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n return [ point[0] * k + δx, δy - point[1] * k ];\n }\n function invert(point) {\n point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n }\n projection.stream = function(output) {\n if (stream) stream.valid = false;\n stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n stream.valid = true;\n return stream;\n };\n projection.clipAngle = function(_) {\n if (!arguments.length) return clipAngle;\n preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n return invalidate();\n };\n projection.clipExtent = function(_) {\n if (!arguments.length) return clipExtent;\n clipExtent = _;\n postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n return invalidate();\n };\n projection.scale = function(_) {\n if (!arguments.length) return k;\n k = +_;\n return reset();\n };\n projection.translate = function(_) {\n if (!arguments.length) return [ x, y ];\n x = +_[0];\n y = +_[1];\n return reset();\n };\n projection.center = function(_) {\n if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n λ = _[0] % 360 * d3_radians;\n φ = _[1] % 360 * d3_radians;\n return reset();\n };\n projection.rotate = function(_) {\n if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n δλ = _[0] % 360 * d3_radians;\n δφ = _[1] % 360 * d3_radians;\n δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n return reset();\n };\n d3.rebind(projection, projectResample, \"precision\");\n function reset() {\n projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n var center = project(λ, φ);\n δx = x - center[0] * k;\n δy = y + center[1] * k;\n return invalidate();\n }\n function invalidate() {\n if (stream) stream.valid = false, stream = null;\n return projection;\n }\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return reset();\n };\n }\n function d3_geo_projectionRadians(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n stream.point(x * d3_radians, y * d3_radians);\n });\n }\n function d3_geo_equirectangular(λ, φ) {\n return [ λ, φ ];\n }\n (d3.geo.equirectangular = function() {\n return d3_geo_projection(d3_geo_equirectangular);\n }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n d3.geo.rotation = function(rotate) {\n rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n }\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n };\n return forward;\n };\n function d3_geo_identityRotation(λ, φ) {\n return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n }\n d3_geo_identityRotation.invert = d3_geo_equirectangular;\n function d3_geo_rotation(δλ, δφ, δγ) {\n return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n }\n function d3_geo_forwardRotationλ(δλ) {\n return function(λ, φ) {\n return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n };\n }\n function d3_geo_rotationλ(δλ) {\n var rotation = d3_geo_forwardRotationλ(δλ);\n rotation.invert = d3_geo_forwardRotationλ(-δλ);\n return rotation;\n }\n function d3_geo_rotationφγ(δφ, δγ) {\n var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n function rotation(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n }\n rotation.invert = function(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n };\n return rotation;\n }\n d3.geo.circle = function() {\n var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n function circle() {\n var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n interpolate(null, null, 1, {\n point: function(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= d3_degrees, x[1] *= d3_degrees;\n }\n });\n return {\n type: \"Polygon\",\n coordinates: [ ring ]\n };\n }\n circle.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return circle;\n };\n circle.angle = function(x) {\n if (!arguments.length) return angle;\n interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n return circle;\n };\n circle.precision = function(_) {\n if (!arguments.length) return precision;\n interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n return circle;\n };\n return circle.angle(90);\n };\n function d3_geo_circleInterpolate(radius, precision) {\n var cr = Math.cos(radius), sr = Math.sin(radius);\n return function(from, to, direction, listener) {\n var step = direction * precision;\n if (from != null) {\n from = d3_geo_circleAngle(cr, from);\n to = d3_geo_circleAngle(cr, to);\n if (direction > 0 ? from < to : from > to) from += direction * τ;\n } else {\n from = radius + direction * τ;\n to = radius - .5 * step;\n }\n for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n }\n };\n }\n function d3_geo_circleAngle(cr, point) {\n var a = d3_geo_cartesian(point);\n a[0] -= cr;\n d3_geo_cartesianNormalize(a);\n var angle = d3_acos(-a[1]);\n return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n }\n d3.geo.distance = function(a, b) {\n var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n };\n d3.geo.graticule = function() {\n var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n function graticule() {\n return {\n type: \"MultiLineString\",\n coordinates: lines()\n };\n }\n function lines() {\n return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n return abs(x % DX) > ε;\n }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n return abs(y % DY) > ε;\n }).map(y));\n }\n graticule.lines = function() {\n return lines().map(function(coordinates) {\n return {\n type: \"LineString\",\n coordinates: coordinates\n };\n });\n };\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n };\n };\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.minorExtent();\n return graticule.majorExtent(_).minorExtent(_);\n };\n graticule.majorExtent = function(_) {\n if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n graticule.minorExtent = function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n graticule.step = function(_) {\n if (!arguments.length) return graticule.minorStep();\n return graticule.majorStep(_).minorStep(_);\n };\n graticule.majorStep = function(_) {\n if (!arguments.length) return [ DX, DY ];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n graticule.minorStep = function(_) {\n if (!arguments.length) return [ dx, dy ];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = d3_geo_graticuleX(y0, y1, 90);\n y = d3_geo_graticuleY(x0, x1, precision);\n X = d3_geo_graticuleX(Y0, Y1, 90);\n Y = d3_geo_graticuleY(X0, X1, precision);\n return graticule;\n };\n return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n };\n function d3_geo_graticuleX(y0, y1, dy) {\n var y = d3.range(y0, y1 - ε, dy).concat(y1);\n return function(x) {\n return y.map(function(y) {\n return [ x, y ];\n });\n };\n }\n function d3_geo_graticuleY(x0, x1, dx) {\n var x = d3.range(x0, x1 - ε, dx).concat(x1);\n return function(y) {\n return x.map(function(x) {\n return [ x, y ];\n });\n };\n }\n function d3_source(d) {\n return d.source;\n }\n function d3_target(d) {\n return d.target;\n }\n d3.geo.greatArc = function() {\n var source = d3_source, source_, target = d3_target, target_;\n function greatArc() {\n return {\n type: \"LineString\",\n coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n };\n }\n greatArc.distance = function() {\n return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n };\n greatArc.source = function(_) {\n if (!arguments.length) return source;\n source = _, source_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.target = function(_) {\n if (!arguments.length) return target;\n target = _, target_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.precision = function() {\n return arguments.length ? greatArc : 0;\n };\n return greatArc;\n };\n d3.geo.interpolate = function(source, target) {\n return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n };\n function d3_geo_interpolate(x0, y0, x1, y1) {\n var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n var interpolate = d ? function(t) {\n var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n } : function() {\n return [ x0 * d3_degrees, y0 * d3_degrees ];\n };\n interpolate.distance = d;\n return interpolate;\n }\n d3.geo.length = function(object) {\n d3_geo_lengthSum = 0;\n d3.geo.stream(object, d3_geo_length);\n return d3_geo_lengthSum;\n };\n var d3_geo_lengthSum;\n var d3_geo_length = {\n sphere: d3_noop,\n point: d3_noop,\n lineStart: d3_geo_lengthLineStart,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_lengthLineStart() {\n var λ0, sinφ0, cosφ0;\n d3_geo_length.point = function(λ, φ) {\n λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n d3_geo_length.point = nextPoint;\n };\n d3_geo_length.lineEnd = function() {\n d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n };\n function nextPoint(λ, φ) {\n var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n }\n }\n function d3_geo_azimuthal(scale, angle) {\n function azimuthal(λ, φ) {\n var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n }\n azimuthal.invert = function(x, y) {\n var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n };\n return azimuthal;\n }\n var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n return Math.sqrt(2 / (1 + cosλcosφ));\n }, function(ρ) {\n return 2 * Math.asin(ρ / 2);\n });\n (d3.geo.azimuthalEqualArea = function() {\n return d3_geo_projection(d3_geo_azimuthalEqualArea);\n }).raw = d3_geo_azimuthalEqualArea;\n var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n var c = Math.acos(cosλcosφ);\n return c && c / Math.sin(c);\n }, d3_identity);\n (d3.geo.azimuthalEquidistant = function() {\n return d3_geo_projection(d3_geo_azimuthalEquidistant);\n }).raw = d3_geo_azimuthalEquidistant;\n function d3_geo_conicConformal(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), t = function(φ) {\n return Math.tan(π / 4 + φ / 2);\n }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n if (!n) return d3_geo_mercator;\n function forward(λ, φ) {\n if (F > 0) {\n if (φ < -halfπ + ε) φ = -halfπ + ε;\n } else {\n if (φ > halfπ - ε) φ = halfπ - ε;\n }\n var ρ = F / Math.pow(t(φ), n);\n return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n };\n return forward;\n }\n (d3.geo.conicConformal = function() {\n return d3_geo_conic(d3_geo_conicConformal);\n }).raw = d3_geo_conicConformal;\n function d3_geo_conicEquidistant(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n if (abs(n) < ε) return d3_geo_equirectangular;\n function forward(λ, φ) {\n var ρ = G - φ;\n return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = G - y;\n return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n };\n return forward;\n }\n (d3.geo.conicEquidistant = function() {\n return d3_geo_conic(d3_geo_conicEquidistant);\n }).raw = d3_geo_conicEquidistant;\n var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / cosλcosφ;\n }, Math.atan);\n (d3.geo.gnomonic = function() {\n return d3_geo_projection(d3_geo_gnomonic);\n }).raw = d3_geo_gnomonic;\n function d3_geo_mercator(λ, φ) {\n return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n }\n d3_geo_mercator.invert = function(x, y) {\n return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n };\n function d3_geo_mercatorProjection(project) {\n var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n m.scale = function() {\n var v = scale.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.translate = function() {\n var v = translate.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.clipExtent = function(_) {\n var v = clipExtent.apply(m, arguments);\n if (v === m) {\n if (clipAuto = _ == null) {\n var k = π * scale(), t = translate();\n clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n }\n } else if (clipAuto) {\n v = null;\n }\n return v;\n };\n return m.clipExtent(null);\n }\n (d3.geo.mercator = function() {\n return d3_geo_mercatorProjection(d3_geo_mercator);\n }).raw = d3_geo_mercator;\n var d3_geo_orthographic = d3_geo_azimuthal(function() {\n return 1;\n }, Math.asin);\n (d3.geo.orthographic = function() {\n return d3_geo_projection(d3_geo_orthographic);\n }).raw = d3_geo_orthographic;\n var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / (1 + cosλcosφ);\n }, function(ρ) {\n return 2 * Math.atan(ρ);\n });\n (d3.geo.stereographic = function() {\n return d3_geo_projection(d3_geo_stereographic);\n }).raw = d3_geo_stereographic;\n function d3_geo_transverseMercator(λ, φ) {\n return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n }\n d3_geo_transverseMercator.invert = function(x, y) {\n return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n };\n (d3.geo.transverseMercator = function() {\n var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n projection.center = function(_) {\n return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n };\n projection.rotate = function(_) {\n return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n [ _[0], _[1], _[2] - 90 ]);\n };\n return rotate([ 0, 0, 90 ]);\n }).raw = d3_geo_transverseMercator;\n d3.geom = {};\n function d3_geom_pointX(d) {\n return d[0];\n }\n function d3_geom_pointY(d) {\n return d[1];\n }\n d3.geom.hull = function(vertices) {\n var x = d3_geom_pointX, y = d3_geom_pointY;\n if (arguments.length) return hull(vertices);\n function hull(data) {\n if (data.length < 3) return [];\n var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n for (i = 0; i < n; i++) {\n points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n }\n points.sort(d3_geom_hullOrder);\n for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n return polygon;\n }\n hull.x = function(_) {\n return arguments.length ? (x = _, hull) : x;\n };\n hull.y = function(_) {\n return arguments.length ? (y = _, hull) : y;\n };\n return hull;\n };\n function d3_geom_hullUpper(points) {\n var n = points.length, hull = [ 0, 1 ], hs = 2;\n for (var i = 2; i < n; i++) {\n while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n hull[hs++] = i;\n }\n return hull.slice(0, hs);\n }\n function d3_geom_hullOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n }\n d3.geom.polygon = function(coordinates) {\n d3_subclass(coordinates, d3_geom_polygonPrototype);\n return coordinates;\n };\n var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n d3_geom_polygonPrototype.area = function() {\n var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n while (++i < n) {\n a = b;\n b = this[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n return area * .5;\n };\n d3_geom_polygonPrototype.centroid = function(k) {\n var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n if (!arguments.length) k = -1 / (6 * this.area());\n while (++i < n) {\n a = b;\n b = this[i];\n c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n return [ x * k, y * k ];\n };\n d3_geom_polygonPrototype.clip = function(subject) {\n var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n while (++i < n) {\n input = subject.slice();\n subject.length = 0;\n b = this[i];\n c = input[(m = input.length - closed) - 1];\n j = -1;\n while (++j < m) {\n d = input[j];\n if (d3_geom_polygonInside(d, a, b)) {\n if (!d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n subject.push(d);\n } else if (d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n c = d;\n }\n if (closed) subject.push(subject[0]);\n a = b;\n }\n return subject;\n };\n function d3_geom_polygonInside(p, a, b) {\n return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n }\n function d3_geom_polygonIntersect(c, d, a, b) {\n var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n return [ x1 + ua * x21, y1 + ua * y21 ];\n }\n function d3_geom_polygonClosed(coordinates) {\n var a = coordinates[0], b = coordinates[coordinates.length - 1];\n return !(a[0] - b[0] || a[1] - b[1]);\n }\n var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n function d3_geom_voronoiBeach() {\n d3_geom_voronoiRedBlackNode(this);\n this.edge = this.site = this.circle = null;\n }\n function d3_geom_voronoiCreateBeach(site) {\n var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n beach.site = site;\n return beach;\n }\n function d3_geom_voronoiDetachBeach(beach) {\n d3_geom_voronoiDetachCircle(beach);\n d3_geom_voronoiBeaches.remove(beach);\n d3_geom_voronoiBeachPool.push(beach);\n d3_geom_voronoiRedBlackNode(beach);\n }\n function d3_geom_voronoiRemoveBeach(beach) {\n var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n x: x,\n y: y\n }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n d3_geom_voronoiDetachBeach(beach);\n var lArc = previous;\n while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachBeach(lArc);\n lArc = previous;\n }\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachCircle(lArc);\n var rArc = next;\n while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n next = rArc.N;\n disappearing.push(rArc);\n d3_geom_voronoiDetachBeach(rArc);\n rArc = next;\n }\n disappearing.push(rArc);\n d3_geom_voronoiDetachCircle(rArc);\n var nArcs = disappearing.length, iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiAddBeach(site) {\n var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n while (node) {\n dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n if (dxl > ε) node = node.L; else {\n dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n if (dxr > ε) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -ε) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -ε) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n var newArc = d3_geom_voronoiCreateBeach(site);\n d3_geom_voronoiBeaches.insert(lArc, newArc);\n if (!lArc && !rArc) return;\n if (lArc === rArc) {\n d3_geom_voronoiDetachCircle(lArc);\n rArc = d3_geom_voronoiCreateBeach(lArc.site);\n d3_geom_voronoiBeaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n return;\n }\n if (!rArc) {\n newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n return;\n }\n d3_geom_voronoiDetachCircle(lArc);\n d3_geom_voronoiDetachCircle(rArc);\n var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n x: (cy * hb - by * hc) / d + ax,\n y: (bx * hc - cx * hb) / d + ay\n };\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n if (!pby2) return rfocx;\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n site = lArc.site;\n var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n if (!plby2) return lfocx;\n var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n return (rfocx + lfocx) / 2;\n }\n function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site.y === directrix ? site.x : Infinity;\n }\n function d3_geom_voronoiCell(site) {\n this.site = site;\n this.edges = [];\n }\n d3_geom_voronoiCell.prototype.prepare = function() {\n var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n while (iHalfEdge--) {\n edge = halfEdges[iHalfEdge].edge;\n if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n }\n halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n return halfEdges.length;\n };\n function d3_geom_voronoiCloseCells(extent) {\n var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n while (iCell--) {\n cell = cells[iCell];\n if (!cell || !cell.prepare()) continue;\n halfEdges = cell.edges;\n nHalfEdges = halfEdges.length;\n iHalfEdge = 0;\n while (iHalfEdge < nHalfEdges) {\n end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n x: x0,\n y: abs(x2 - x0) < ε ? y2 : y1\n } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n x: abs(y2 - y1) < ε ? x2 : x1,\n y: y1\n } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n x: x1,\n y: abs(x2 - x1) < ε ? y2 : y0\n } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n x: abs(y2 - y0) < ε ? x2 : x0,\n y: y0\n } : null), cell.site, null));\n ++nHalfEdges;\n }\n }\n }\n }\n function d3_geom_voronoiHalfEdgeOrder(a, b) {\n return b.angle - a.angle;\n }\n function d3_geom_voronoiCircle() {\n d3_geom_voronoiRedBlackNode(this);\n this.x = this.y = this.arc = this.site = this.cy = null;\n }\n function d3_geom_voronoiAttachCircle(arc) {\n var lArc = arc.P, rArc = arc.N;\n if (!lArc || !rArc) return;\n var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n if (lSite === rSite) return;\n var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -ε2) return;\n var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = cy + Math.sqrt(x * x + y * y);\n circle.cy = cy;\n arc.circle = circle;\n var before = null, node = d3_geom_voronoiCircles._;\n while (node) {\n if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n if (node.L) node = node.L; else {\n before = node.P;\n break;\n }\n } else {\n if (node.R) node = node.R; else {\n before = node;\n break;\n }\n }\n }\n d3_geom_voronoiCircles.insert(before, circle);\n if (!before) d3_geom_voronoiFirstCircle = circle;\n }\n function d3_geom_voronoiDetachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n d3_geom_voronoiCircles.remove(circle);\n d3_geom_voronoiCirclePool.push(circle);\n d3_geom_voronoiRedBlackNode(circle);\n arc.circle = null;\n }\n }\n function d3_geom_voronoiClipEdges(extent) {\n var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n while (i--) {\n e = edges[i];\n if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n e.a = e.b = null;\n edges.splice(i, 1);\n }\n }\n }\n function d3_geom_voronoiConnectEdge(edge, extent) {\n var vb = edge.b;\n if (vb) return true;\n var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!va) va = {\n x: fx,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: fx,\n y: y1\n };\n } else {\n if (!va) va = {\n x: fx,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: fx,\n y: y0\n };\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!va) va = {\n x: (y0 - fb) / fm,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: (y1 - fb) / fm,\n y: y1\n };\n } else {\n if (!va) va = {\n x: (y1 - fb) / fm,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: (y0 - fb) / fm,\n y: y0\n };\n }\n } else {\n if (ly < ry) {\n if (!va) va = {\n x: x0,\n y: fm * x0 + fb\n }; else if (va.x >= x1) return;\n vb = {\n x: x1,\n y: fm * x1 + fb\n };\n } else {\n if (!va) va = {\n x: x1,\n y: fm * x1 + fb\n }; else if (va.x < x0) return;\n vb = {\n x: x0,\n y: fm * x0 + fb\n };\n }\n }\n }\n edge.a = va;\n edge.b = vb;\n return true;\n }\n function d3_geom_voronoiEdge(lSite, rSite) {\n this.l = lSite;\n this.r = rSite;\n this.a = this.b = null;\n }\n function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, rSite);\n d3_geom_voronoiEdges.push(edge);\n if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n return edge;\n }\n function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, null);\n edge.a = va;\n edge.b = vb;\n d3_geom_voronoiEdges.push(edge);\n return edge;\n }\n function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n if (!edge.a && !edge.b) {\n edge.a = vertex;\n edge.l = lSite;\n edge.r = rSite;\n } else if (edge.l === rSite) {\n edge.b = vertex;\n } else {\n edge.a = vertex;\n }\n }\n function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n var va = edge.a, vb = edge.b;\n this.edge = edge;\n this.site = lSite;\n this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n }\n d3_geom_voronoiHalfEdge.prototype = {\n start: function() {\n return this.edge.l === this.site ? this.edge.a : this.edge.b;\n },\n end: function() {\n return this.edge.l === this.site ? this.edge.b : this.edge.a;\n }\n };\n function d3_geom_voronoiRedBlackTree() {\n this._ = null;\n }\n function d3_geom_voronoiRedBlackNode(node) {\n node.U = node.C = node.L = node.R = node.P = node.N = null;\n }\n d3_geom_voronoiRedBlackTree.prototype = {\n insert: function(after, node) {\n var parent, grandpa, uncle;\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = d3_geom_voronoiRedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n if (parent) {\n if (parent.L === node) parent.L = next; else parent.R = next;\n } else {\n this._ = next;\n }\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) {\n node.C = false;\n return;\n }\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n if (node) node.C = false;\n }\n };\n function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n var p = node, q = node.R, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n }\n function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n var p = node, q = node.L, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n }\n function d3_geom_voronoiRedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n }\n function d3_geom_voronoi(sites, bbox) {\n var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n d3_geom_voronoiEdges = [];\n d3_geom_voronoiCells = new Array(sites.length);\n d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n while (true) {\n circle = d3_geom_voronoiFirstCircle;\n if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n if (site.x !== x0 || site.y !== y0) {\n d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n d3_geom_voronoiAddBeach(site);\n x0 = site.x, y0 = site.y;\n }\n site = sites.pop();\n } else if (circle) {\n d3_geom_voronoiRemoveBeach(circle.arc);\n } else {\n break;\n }\n }\n if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n var diagram = {\n cells: d3_geom_voronoiCells,\n edges: d3_geom_voronoiEdges\n };\n d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n return diagram;\n }\n function d3_geom_voronoiVertexOrder(a, b) {\n return b.y - a.y || b.x - a.x;\n }\n d3.geom.voronoi = function(points) {\n var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n if (points) return voronoi(points);\n function voronoi(data) {\n var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n var s = e.start();\n return [ s.x, s.y ];\n }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n polygon.point = data[i];\n });\n return polygons;\n }\n function sites(data) {\n return data.map(function(d, i) {\n return {\n x: Math.round(fx(d, i) / ε) * ε,\n y: Math.round(fy(d, i) / ε) * ε,\n i: i\n };\n });\n }\n voronoi.links = function(data) {\n return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n return edge.l && edge.r;\n }).map(function(edge) {\n return {\n source: data[edge.l.i],\n target: data[edge.r.i]\n };\n });\n };\n voronoi.triangles = function(data) {\n var triangles = [];\n d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n while (++j < m) {\n e0 = e1;\n s0 = s1;\n e1 = edges[j].edge;\n s1 = e1.l === site ? e1.r : e1.l;\n if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n }\n }\n });\n return triangles;\n };\n voronoi.x = function(_) {\n return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n };\n voronoi.y = function(_) {\n return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n };\n voronoi.clipExtent = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n return voronoi;\n };\n voronoi.size = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n };\n return voronoi;\n };\n var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n function d3_geom_voronoiTriangleArea(a, b, c) {\n return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n }\n d3.geom.delaunay = function(vertices) {\n return d3.geom.voronoi().triangles(vertices);\n };\n d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n if (compat = arguments.length) {\n x = d3_geom_quadtreeCompatX;\n y = d3_geom_quadtreeCompatY;\n if (compat === 3) {\n y2 = y1;\n x2 = x1;\n y1 = x1 = 0;\n }\n return quadtree(points);\n }\n function quadtree(data) {\n var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n if (x1 != null) {\n x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n } else {\n x2_ = y2_ = -(x1_ = y1_ = Infinity);\n xs = [], ys = [];\n n = data.length;\n if (compat) for (i = 0; i < n; ++i) {\n d = data[i];\n if (d.x < x1_) x1_ = d.x;\n if (d.y < y1_) y1_ = d.y;\n if (d.x > x2_) x2_ = d.x;\n if (d.y > y2_) y2_ = d.y;\n xs.push(d.x);\n ys.push(d.y);\n } else for (i = 0; i < n; ++i) {\n var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n if (x_ < x1_) x1_ = x_;\n if (y_ < y1_) y1_ = y_;\n if (x_ > x2_) x2_ = x_;\n if (y_ > y2_) y2_ = y_;\n xs.push(x_);\n ys.push(y_);\n }\n }\n var dx = x2_ - x1_, dy = y2_ - y1_;\n if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n function insert(n, d, x, y, x1, y1, x2, y2) {\n if (isNaN(x) || isNaN(y)) return;\n if (n.leaf) {\n var nx = n.x, ny = n.y;\n if (nx != null) {\n if (abs(nx - x) + abs(ny - y) < .01) {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n } else {\n var nPoint = n.point;\n n.x = n.y = n.point = null;\n insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n } else {\n n.x = x, n.y = y, n.point = d;\n }\n } else {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n }\n function insertChild(n, d, x, y, x1, y1, x2, y2) {\n var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n n.leaf = false;\n n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n if (right) x1 = xm; else x2 = xm;\n if (below) y1 = ym; else y2 = ym;\n insert(n, d, x, y, x1, y1, x2, y2);\n }\n var root = d3_geom_quadtreeNode();\n root.add = function(d) {\n insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n };\n root.visit = function(f) {\n d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n };\n root.find = function(point) {\n return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n };\n i = -1;\n if (x1 == null) {\n while (++i < n) {\n insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n }\n --i;\n } else data.forEach(root.add);\n xs = ys = data = d = null;\n return root;\n }\n quadtree.x = function(_) {\n return arguments.length ? (x = _, quadtree) : x;\n };\n quadtree.y = function(_) {\n return arguments.length ? (y = _, quadtree) : y;\n };\n quadtree.extent = function(_) {\n if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n y2 = +_[1][1];\n return quadtree;\n };\n quadtree.size = function(_) {\n if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n return quadtree;\n };\n return quadtree;\n };\n function d3_geom_quadtreeCompatX(d) {\n return d.x;\n }\n function d3_geom_quadtreeCompatY(d) {\n return d.y;\n }\n function d3_geom_quadtreeNode() {\n return {\n leaf: true,\n nodes: [],\n point: null,\n x: null,\n y: null\n };\n }\n function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n if (!f(node, x1, y1, x2, y2)) {\n var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n }\n }\n function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n var minDistance2 = Infinity, closestPoint;\n (function find(node, x1, y1, x2, y2) {\n if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n if (point = node.point) {\n var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n if (distance2 < minDistance2) {\n var distance = Math.sqrt(minDistance2 = distance2);\n x0 = x - distance, y0 = y - distance;\n x3 = x + distance, y3 = y + distance;\n closestPoint = point;\n }\n }\n var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n if (node = children[i & 3]) switch (i & 3) {\n case 0:\n find(node, x1, y1, xm, ym);\n break;\n\n case 1:\n find(node, xm, y1, x2, ym);\n break;\n\n case 2:\n find(node, x1, ym, xm, y2);\n break;\n\n case 3:\n find(node, xm, ym, x2, y2);\n break;\n }\n }\n })(root, x0, y0, x3, y3);\n return closestPoint;\n }\n d3.interpolateRgb = d3_interpolateRgb;\n function d3_interpolateRgb(a, b) {\n a = d3.rgb(a);\n b = d3.rgb(b);\n var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n return function(t) {\n return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n };\n }\n d3.interpolateObject = d3_interpolateObject;\n function d3_interpolateObject(a, b) {\n var i = {}, c = {}, k;\n for (k in a) {\n if (k in b) {\n i[k] = d3_interpolate(a[k], b[k]);\n } else {\n c[k] = a[k];\n }\n }\n for (k in b) {\n if (!(k in a)) {\n c[k] = b[k];\n }\n }\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n }\n d3.interpolateNumber = d3_interpolateNumber;\n function d3_interpolateNumber(a, b) {\n a = +a, b = +b;\n return function(t) {\n return a * (1 - t) + b * t;\n };\n }\n d3.interpolateString = d3_interpolateString;\n function d3_interpolateString(a, b) {\n var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n a = a + \"\", b = b + \"\";\n while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i]) s[i] += bm; else s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({\n i: i,\n x: d3_interpolateNumber(am, bm)\n });\n }\n bi = d3_interpolate_numberB.lastIndex;\n }\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n return b(t) + \"\";\n }) : function() {\n return b;\n } : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n }\n var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n d3.interpolate = d3_interpolate;\n function d3_interpolate(a, b) {\n var i = d3.interpolators.length, f;\n while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n return f;\n }\n d3.interpolators = [ function(a, b) {\n var t = typeof b;\n return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n } ];\n d3.interpolateArray = d3_interpolateArray;\n function d3_interpolateArray(a, b) {\n var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n for (;i < na; ++i) c[i] = a[i];\n for (;i < nb; ++i) c[i] = b[i];\n return function(t) {\n for (i = 0; i < n0; ++i) c[i] = x[i](t);\n return c;\n };\n }\n var d3_ease_default = function() {\n return d3_identity;\n };\n var d3_ease = d3.map({\n linear: d3_ease_default,\n poly: d3_ease_poly,\n quad: function() {\n return d3_ease_quad;\n },\n cubic: function() {\n return d3_ease_cubic;\n },\n sin: function() {\n return d3_ease_sin;\n },\n exp: function() {\n return d3_ease_exp;\n },\n circle: function() {\n return d3_ease_circle;\n },\n elastic: d3_ease_elastic,\n back: d3_ease_back,\n bounce: function() {\n return d3_ease_bounce;\n }\n });\n var d3_ease_mode = d3.map({\n \"in\": d3_identity,\n out: d3_ease_reverse,\n \"in-out\": d3_ease_reflect,\n \"out-in\": function(f) {\n return d3_ease_reflect(d3_ease_reverse(f));\n }\n });\n d3.ease = function(name) {\n var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n t = d3_ease.get(t) || d3_ease_default;\n m = d3_ease_mode.get(m) || d3_identity;\n return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n };\n function d3_ease_clamp(f) {\n return function(t) {\n return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n };\n }\n function d3_ease_reverse(f) {\n return function(t) {\n return 1 - f(1 - t);\n };\n }\n function d3_ease_reflect(f) {\n return function(t) {\n return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n };\n }\n function d3_ease_quad(t) {\n return t * t;\n }\n function d3_ease_cubic(t) {\n return t * t * t;\n }\n function d3_ease_cubicInOut(t) {\n if (t <= 0) return 0;\n if (t >= 1) return 1;\n var t2 = t * t, t3 = t2 * t;\n return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n }\n function d3_ease_poly(e) {\n return function(t) {\n return Math.pow(t, e);\n };\n }\n function d3_ease_sin(t) {\n return 1 - Math.cos(t * halfπ);\n }\n function d3_ease_exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n function d3_ease_circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n function d3_ease_elastic(a, p) {\n var s;\n if (arguments.length < 2) p = .45;\n if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n return function(t) {\n return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n };\n }\n function d3_ease_back(s) {\n if (!s) s = 1.70158;\n return function(t) {\n return t * t * ((s + 1) * t - s);\n };\n }\n function d3_ease_bounce(t) {\n return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n }\n d3.interpolateHcl = d3_interpolateHcl;\n function d3_interpolateHcl(a, b) {\n a = d3.hcl(a);\n b = d3.hcl(b);\n var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateHsl = d3_interpolateHsl;\n function d3_interpolateHsl(a, b) {\n a = d3.hsl(a);\n b = d3.hsl(b);\n var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateLab = d3_interpolateLab;\n function d3_interpolateLab(a, b) {\n a = d3.lab(a);\n b = d3.lab(b);\n var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n return function(t) {\n return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n };\n }\n d3.interpolateRound = d3_interpolateRound;\n function d3_interpolateRound(a, b) {\n b -= a;\n return function(t) {\n return Math.round(a + b * t);\n };\n }\n d3.transform = function(string) {\n var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n return (d3.transform = function(string) {\n if (string != null) {\n g.setAttribute(\"transform\", string);\n var t = g.transform.baseVal.consolidate();\n }\n return new d3_transform(t ? t.matrix : d3_transformIdentity);\n })(string);\n };\n function d3_transform(m) {\n var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n if (r0[0] * r1[1] < r1[0] * r0[1]) {\n r0[0] *= -1;\n r0[1] *= -1;\n kx *= -1;\n kz *= -1;\n }\n this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n this.translate = [ m.e, m.f ];\n this.scale = [ kx, ky ];\n this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n }\n d3_transform.prototype.toString = function() {\n return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n };\n function d3_transformDot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n }\n function d3_transformNormalize(a) {\n var k = Math.sqrt(d3_transformDot(a, a));\n if (k) {\n a[0] /= k;\n a[1] /= k;\n }\n return k;\n }\n function d3_transformCombine(a, b, k) {\n a[0] += k * b[0];\n a[1] += k * b[1];\n return a;\n }\n var d3_transformIdentity = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n };\n d3.interpolateTransform = d3_interpolateTransform;\n function d3_interpolateTransformPop(s) {\n return s.length ? s.pop() + \",\" : \"\";\n }\n function d3_interpolateTranslate(ta, tb, s, q) {\n if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n var i = s.push(\"translate(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ta[0], tb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ta[1], tb[1])\n });\n } else if (tb[0] || tb[1]) {\n s.push(\"translate(\" + tb + \")\");\n }\n }\n function d3_interpolateRotate(ra, rb, s, q) {\n if (ra !== rb) {\n if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n x: d3_interpolateNumber(ra, rb)\n });\n } else if (rb) {\n s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n }\n }\n function d3_interpolateSkew(wa, wb, s, q) {\n if (wa !== wb) {\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n x: d3_interpolateNumber(wa, wb)\n });\n } else if (wb) {\n s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n }\n }\n function d3_interpolateScale(ka, kb, s, q) {\n if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ka[0], kb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ka[1], kb[1])\n });\n } else if (kb[0] !== 1 || kb[1] !== 1) {\n s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n }\n }\n function d3_interpolateTransform(a, b) {\n var s = [], q = [];\n a = d3.transform(a), b = d3.transform(b);\n d3_interpolateTranslate(a.translate, b.translate, s, q);\n d3_interpolateRotate(a.rotate, b.rotate, s, q);\n d3_interpolateSkew(a.skew, b.skew, s, q);\n d3_interpolateScale(a.scale, b.scale, s, q);\n a = b = null;\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n }\n function d3_uninterpolateNumber(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return (x - a) / b;\n };\n }\n function d3_uninterpolateClamp(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return Math.max(0, Math.min(1, (x - a) / b));\n };\n }\n d3.layout = {};\n d3.layout.bundle = function() {\n return function(links) {\n var paths = [], i = -1, n = links.length;\n while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n return paths;\n };\n };\n function d3_layout_bundlePath(link) {\n var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n while (start !== lca) {\n start = start.parent;\n points.push(start);\n }\n var k = points.length;\n while (end !== lca) {\n points.splice(k, 0, end);\n end = end.parent;\n }\n return points;\n }\n function d3_layout_bundleAncestors(node) {\n var ancestors = [], parent = node.parent;\n while (parent != null) {\n ancestors.push(node);\n node = parent;\n parent = parent.parent;\n }\n ancestors.push(node);\n return ancestors;\n }\n function d3_layout_bundleLeastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n while (aNode === bNode) {\n sharedNode = aNode;\n aNode = aNodes.pop();\n bNode = bNodes.pop();\n }\n return sharedNode;\n }\n d3.layout.chord = function() {\n var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n function relayout() {\n var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n chords = [];\n groups = [];\n k = 0, i = -1;\n while (++i < n) {\n x = 0, j = -1;\n while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(d3.range(n));\n k += x;\n }\n if (sortGroups) {\n groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n }\n if (sortSubgroups) {\n subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n }\n k = (τ - padding * n) / k;\n x = 0, i = -1;\n while (++i < n) {\n x0 = x, j = -1;\n while (++j < n) {\n var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n subgroups[di + \"-\" + dj] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += padding;\n }\n i = -1;\n while (++i < n) {\n j = i - 1;\n while (++j < n) {\n var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n if (source.value || target.value) {\n chords.push(source.value < target.value ? {\n source: target,\n target: source\n } : {\n source: source,\n target: target\n });\n }\n }\n }\n if (sortChords) resort();\n }\n function resort() {\n chords.sort(function(a, b) {\n return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n });\n }\n chord.matrix = function(x) {\n if (!arguments.length) return matrix;\n n = (matrix = x) && matrix.length;\n chords = groups = null;\n return chord;\n };\n chord.padding = function(x) {\n if (!arguments.length) return padding;\n padding = x;\n chords = groups = null;\n return chord;\n };\n chord.sortGroups = function(x) {\n if (!arguments.length) return sortGroups;\n sortGroups = x;\n chords = groups = null;\n return chord;\n };\n chord.sortSubgroups = function(x) {\n if (!arguments.length) return sortSubgroups;\n sortSubgroups = x;\n chords = null;\n return chord;\n };\n chord.sortChords = function(x) {\n if (!arguments.length) return sortChords;\n sortChords = x;\n if (chords) resort();\n return chord;\n };\n chord.chords = function() {\n if (!chords) relayout();\n return chords;\n };\n chord.groups = function() {\n if (!groups) relayout();\n return groups;\n };\n return chord;\n };\n d3.layout.force = function() {\n var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n function repulse(node) {\n return function(quad, x1, _, x2) {\n if (quad.point !== node) {\n var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n if (dw * dw / theta2 < dn) {\n if (dn < chargeDistance2) {\n var k = quad.charge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n return true;\n }\n if (quad.point && dn && dn < chargeDistance2) {\n var k = quad.pointCharge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n }\n return !quad.charge;\n };\n }\n force.tick = function() {\n if ((alpha *= .99) < .005) {\n timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n return true;\n }\n var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n for (i = 0; i < m; ++i) {\n o = links[i];\n s = o.source;\n t = o.target;\n x = t.x - s.x;\n y = t.y - s.y;\n if (l = x * x + y * y) {\n l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n x *= l;\n y *= l;\n t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n t.y -= y * k;\n s.x += x * (k = 1 - k);\n s.y += y * k;\n }\n }\n if (k = alpha * gravity) {\n x = size[0] / 2;\n y = size[1] / 2;\n i = -1;\n if (k) while (++i < n) {\n o = nodes[i];\n o.x += (x - o.x) * k;\n o.y += (y - o.y) * k;\n }\n }\n if (charge) {\n d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n i = -1;\n while (++i < n) {\n if (!(o = nodes[i]).fixed) {\n q.visit(repulse(o));\n }\n }\n }\n i = -1;\n while (++i < n) {\n o = nodes[i];\n if (o.fixed) {\n o.x = o.px;\n o.y = o.py;\n } else {\n o.x -= (o.px - (o.px = o.x)) * friction;\n o.y -= (o.py - (o.py = o.y)) * friction;\n }\n }\n event.tick({\n type: \"tick\",\n alpha: alpha\n });\n };\n force.nodes = function(x) {\n if (!arguments.length) return nodes;\n nodes = x;\n return force;\n };\n force.links = function(x) {\n if (!arguments.length) return links;\n links = x;\n return force;\n };\n force.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return force;\n };\n force.linkDistance = function(x) {\n if (!arguments.length) return linkDistance;\n linkDistance = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.distance = force.linkDistance;\n force.linkStrength = function(x) {\n if (!arguments.length) return linkStrength;\n linkStrength = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.friction = function(x) {\n if (!arguments.length) return friction;\n friction = +x;\n return force;\n };\n force.charge = function(x) {\n if (!arguments.length) return charge;\n charge = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.chargeDistance = function(x) {\n if (!arguments.length) return Math.sqrt(chargeDistance2);\n chargeDistance2 = x * x;\n return force;\n };\n force.gravity = function(x) {\n if (!arguments.length) return gravity;\n gravity = +x;\n return force;\n };\n force.theta = function(x) {\n if (!arguments.length) return Math.sqrt(theta2);\n theta2 = x * x;\n return force;\n };\n force.alpha = function(x) {\n if (!arguments.length) return alpha;\n x = +x;\n if (alpha) {\n if (x > 0) {\n alpha = x;\n } else {\n timer.c = null, timer.t = NaN, timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n }\n } else if (x > 0) {\n event.start({\n type: \"start\",\n alpha: alpha = x\n });\n timer = d3_timer(force.tick);\n }\n return force;\n };\n force.start = function() {\n var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n for (i = 0; i < n; ++i) {\n (o = nodes[i]).index = i;\n o.weight = 0;\n }\n for (i = 0; i < m; ++i) {\n o = links[i];\n if (typeof o.source == \"number\") o.source = nodes[o.source];\n if (typeof o.target == \"number\") o.target = nodes[o.target];\n ++o.source.weight;\n ++o.target.weight;\n }\n for (i = 0; i < n; ++i) {\n o = nodes[i];\n if (isNaN(o.x)) o.x = position(\"x\", w);\n if (isNaN(o.y)) o.y = position(\"y\", h);\n if (isNaN(o.px)) o.px = o.x;\n if (isNaN(o.py)) o.py = o.y;\n }\n distances = [];\n if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n strengths = [];\n if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n charges = [];\n if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n function position(dimension, size) {\n if (!neighbors) {\n neighbors = new Array(n);\n for (j = 0; j < n; ++j) {\n neighbors[j] = [];\n }\n for (j = 0; j < m; ++j) {\n var o = links[j];\n neighbors[o.source.index].push(o.target);\n neighbors[o.target.index].push(o.source);\n }\n }\n var candidates = neighbors[i], j = -1, l = candidates.length, x;\n while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n return Math.random() * size;\n }\n return force.resume();\n };\n force.resume = function() {\n return force.alpha(.1);\n };\n force.stop = function() {\n return force.alpha(0);\n };\n force.drag = function() {\n if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n if (!arguments.length) return drag;\n this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n };\n function dragmove(d) {\n d.px = d3.event.x, d.py = d3.event.y;\n force.resume();\n }\n return d3.rebind(force, event, \"on\");\n };\n function d3_layout_forceDragstart(d) {\n d.fixed |= 2;\n }\n function d3_layout_forceDragend(d) {\n d.fixed &= ~6;\n }\n function d3_layout_forceMouseover(d) {\n d.fixed |= 4;\n d.px = d.x, d.py = d.y;\n }\n function d3_layout_forceMouseout(d) {\n d.fixed &= ~4;\n }\n function d3_layout_forceAccumulate(quad, alpha, charges) {\n var cx = 0, cy = 0;\n quad.charge = 0;\n if (!quad.leaf) {\n var nodes = quad.nodes, n = nodes.length, i = -1, c;\n while (++i < n) {\n c = nodes[i];\n if (c == null) continue;\n d3_layout_forceAccumulate(c, alpha, charges);\n quad.charge += c.charge;\n cx += c.charge * c.cx;\n cy += c.charge * c.cy;\n }\n }\n if (quad.point) {\n if (!quad.leaf) {\n quad.point.x += Math.random() - .5;\n quad.point.y += Math.random() - .5;\n }\n var k = alpha * charges[quad.point.index];\n quad.charge += quad.pointCharge = k;\n cx += k * quad.point.x;\n cy += k * quad.point.y;\n }\n quad.cx = cx / quad.charge;\n quad.cy = cy / quad.charge;\n }\n var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n d3.layout.hierarchy = function() {\n var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n function hierarchy(root) {\n var stack = [ root ], nodes = [], node;\n root.depth = 0;\n while ((node = stack.pop()) != null) {\n nodes.push(node);\n if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n var n, childs, child;\n while (--n >= 0) {\n stack.push(child = childs[n]);\n child.parent = node;\n child.depth = node.depth + 1;\n }\n if (value) node.value = 0;\n node.children = childs;\n } else {\n if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n delete node.children;\n }\n }\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var childs, parent;\n if (sort && (childs = node.children)) childs.sort(sort);\n if (value && (parent = node.parent)) parent.value += node.value;\n });\n return nodes;\n }\n hierarchy.sort = function(x) {\n if (!arguments.length) return sort;\n sort = x;\n return hierarchy;\n };\n hierarchy.children = function(x) {\n if (!arguments.length) return children;\n children = x;\n return hierarchy;\n };\n hierarchy.value = function(x) {\n if (!arguments.length) return value;\n value = x;\n return hierarchy;\n };\n hierarchy.revalue = function(root) {\n if (value) {\n d3_layout_hierarchyVisitBefore(root, function(node) {\n if (node.children) node.value = 0;\n });\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var parent;\n if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n if (parent = node.parent) parent.value += node.value;\n });\n }\n return root;\n };\n return hierarchy;\n };\n function d3_layout_hierarchyRebind(object, hierarchy) {\n d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n object.nodes = object;\n object.links = d3_layout_hierarchyLinks;\n return object;\n }\n function d3_layout_hierarchyVisitBefore(node, callback) {\n var nodes = [ node ];\n while ((node = nodes.pop()) != null) {\n callback(node);\n if ((children = node.children) && (n = children.length)) {\n var n, children;\n while (--n >= 0) nodes.push(children[n]);\n }\n }\n }\n function d3_layout_hierarchyVisitAfter(node, callback) {\n var nodes = [ node ], nodes2 = [];\n while ((node = nodes.pop()) != null) {\n nodes2.push(node);\n if ((children = node.children) && (n = children.length)) {\n var i = -1, n, children;\n while (++i < n) nodes.push(children[i]);\n }\n }\n while ((node = nodes2.pop()) != null) {\n callback(node);\n }\n }\n function d3_layout_hierarchyChildren(d) {\n return d.children;\n }\n function d3_layout_hierarchyValue(d) {\n return d.value;\n }\n function d3_layout_hierarchySort(a, b) {\n return b.value - a.value;\n }\n function d3_layout_hierarchyLinks(nodes) {\n return d3.merge(nodes.map(function(parent) {\n return (parent.children || []).map(function(child) {\n return {\n source: parent,\n target: child\n };\n });\n }));\n }\n d3.layout.partition = function() {\n var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n function position(node, x, dx, dy) {\n var children = node.children;\n node.x = x;\n node.y = node.depth * dy;\n node.dx = dx;\n node.dy = dy;\n if (children && (n = children.length)) {\n var i = -1, n, c, d;\n dx = node.value ? dx / node.value : 0;\n while (++i < n) {\n position(c = children[i], x, d = c.value * dx, dy);\n x += d;\n }\n }\n }\n function depth(node) {\n var children = node.children, d = 0;\n if (children && (n = children.length)) {\n var i = -1, n;\n while (++i < n) d = Math.max(d, depth(children[i]));\n }\n return 1 + d;\n }\n function partition(d, i) {\n var nodes = hierarchy.call(this, d, i);\n position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n return nodes;\n }\n partition.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return partition;\n };\n return d3_layout_hierarchyRebind(partition, hierarchy);\n };\n d3.layout.pie = function() {\n var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n function pie(data) {\n var n = data.length, values = data.map(function(d, i) {\n return +value.call(pie, d, i);\n }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n return values[j] - values[i];\n } : function(i, j) {\n return sort(data[i], data[j]);\n });\n index.forEach(function(i) {\n arcs[i] = {\n data: data[i],\n value: v = values[i],\n startAngle: a,\n endAngle: a += v * k + pa,\n padAngle: p\n };\n });\n return arcs;\n }\n pie.value = function(_) {\n if (!arguments.length) return value;\n value = _;\n return pie;\n };\n pie.sort = function(_) {\n if (!arguments.length) return sort;\n sort = _;\n return pie;\n };\n pie.startAngle = function(_) {\n if (!arguments.length) return startAngle;\n startAngle = _;\n return pie;\n };\n pie.endAngle = function(_) {\n if (!arguments.length) return endAngle;\n endAngle = _;\n return pie;\n };\n pie.padAngle = function(_) {\n if (!arguments.length) return padAngle;\n padAngle = _;\n return pie;\n };\n return pie;\n };\n var d3_layout_pieSortByValue = {};\n d3.layout.stack = function() {\n var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n function stack(data, index) {\n if (!(n = data.length)) return data;\n var series = data.map(function(d, i) {\n return values.call(stack, d, i);\n });\n var points = series.map(function(d) {\n return d.map(function(v, i) {\n return [ x.call(stack, v, i), y.call(stack, v, i) ];\n });\n });\n var orders = order.call(stack, points, index);\n series = d3.permute(series, orders);\n points = d3.permute(points, orders);\n var offsets = offset.call(stack, points, index);\n var m = series[0].length, n, i, j, o;\n for (j = 0; j < m; ++j) {\n out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n for (i = 1; i < n; ++i) {\n out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n }\n }\n return data;\n }\n stack.values = function(x) {\n if (!arguments.length) return values;\n values = x;\n return stack;\n };\n stack.order = function(x) {\n if (!arguments.length) return order;\n order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n return stack;\n };\n stack.offset = function(x) {\n if (!arguments.length) return offset;\n offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n return stack;\n };\n stack.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n return stack;\n };\n stack.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n return stack;\n };\n stack.out = function(z) {\n if (!arguments.length) return out;\n out = z;\n return stack;\n };\n return stack;\n };\n function d3_layout_stackX(d) {\n return d.x;\n }\n function d3_layout_stackY(d) {\n return d.y;\n }\n function d3_layout_stackOut(d, y0, y) {\n d.y0 = y0;\n d.y = y;\n }\n var d3_layout_stackOrders = d3.map({\n \"inside-out\": function(data) {\n var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n return max[a] - max[b];\n }), top = 0, bottom = 0, tops = [], bottoms = [];\n for (i = 0; i < n; ++i) {\n j = index[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n return bottoms.reverse().concat(tops);\n },\n reverse: function(data) {\n return d3.range(data.length).reverse();\n },\n \"default\": d3_layout_stackOrderDefault\n });\n var d3_layout_stackOffsets = d3.map({\n silhouette: function(data) {\n var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o > max) max = o;\n sums.push(o);\n }\n for (j = 0; j < m; ++j) {\n y0[j] = (max - sums[j]) / 2;\n }\n return y0;\n },\n wiggle: function(data) {\n var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n y0[0] = o = o0 = 0;\n for (j = 1; j < m; ++j) {\n for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n }\n s2 += s3 * data[i][j][1];\n }\n y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n if (o < o0) o0 = o;\n }\n for (j = 0; j < m; ++j) y0[j] -= o0;\n return y0;\n },\n expand: function(data) {\n var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n }\n for (j = 0; j < m; ++j) y0[j] = 0;\n return y0;\n },\n zero: d3_layout_stackOffsetZero\n });\n function d3_layout_stackOrderDefault(data) {\n return d3.range(data.length);\n }\n function d3_layout_stackOffsetZero(data) {\n var j = -1, m = data[0].length, y0 = [];\n while (++j < m) y0[j] = 0;\n return y0;\n }\n function d3_layout_stackMaxIndex(array) {\n var i = 1, j = 0, v = array[0][1], k, n = array.length;\n for (;i < n; ++i) {\n if ((k = array[i][1]) > v) {\n j = i;\n v = k;\n }\n }\n return j;\n }\n function d3_layout_stackReduceSum(d) {\n return d.reduce(d3_layout_stackSum, 0);\n }\n function d3_layout_stackSum(p, d) {\n return p + d[1];\n }\n d3.layout.histogram = function() {\n var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n function histogram(data, i) {\n var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n while (++i < m) {\n bin = bins[i] = [];\n bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n bin.y = 0;\n }\n if (m > 0) {\n i = -1;\n while (++i < n) {\n x = values[i];\n if (x >= range[0] && x <= range[1]) {\n bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n bin.y += k;\n bin.push(data[i]);\n }\n }\n }\n return bins;\n }\n histogram.value = function(x) {\n if (!arguments.length) return valuer;\n valuer = x;\n return histogram;\n };\n histogram.range = function(x) {\n if (!arguments.length) return ranger;\n ranger = d3_functor(x);\n return histogram;\n };\n histogram.bins = function(x) {\n if (!arguments.length) return binner;\n binner = typeof x === \"number\" ? function(range) {\n return d3_layout_histogramBinFixed(range, x);\n } : d3_functor(x);\n return histogram;\n };\n histogram.frequency = function(x) {\n if (!arguments.length) return frequency;\n frequency = !!x;\n return histogram;\n };\n return histogram;\n };\n function d3_layout_histogramBinSturges(range, values) {\n return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n }\n function d3_layout_histogramBinFixed(range, n) {\n var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n while (++x <= n) f[x] = m * x + b;\n return f;\n }\n function d3_layout_histogramRange(values) {\n return [ d3.min(values), d3.max(values) ];\n }\n d3.layout.pack = function() {\n var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n function pack(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n return radius;\n };\n root.x = root.y = 0;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r = +r(d.value);\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n if (padding) {\n var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r += dr;\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r -= dr;\n });\n }\n d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n return nodes;\n }\n pack.size = function(_) {\n if (!arguments.length) return size;\n size = _;\n return pack;\n };\n pack.radius = function(_) {\n if (!arguments.length) return radius;\n radius = _ == null || typeof _ === \"function\" ? _ : +_;\n return pack;\n };\n pack.padding = function(_) {\n if (!arguments.length) return padding;\n padding = +_;\n return pack;\n };\n return d3_layout_hierarchyRebind(pack, hierarchy);\n };\n function d3_layout_packSort(a, b) {\n return a.value - b.value;\n }\n function d3_layout_packInsert(a, b) {\n var c = a._pack_next;\n a._pack_next = b;\n b._pack_prev = a;\n b._pack_next = c;\n c._pack_prev = b;\n }\n function d3_layout_packSplice(a, b) {\n a._pack_next = b;\n b._pack_prev = a;\n }\n function d3_layout_packIntersects(a, b) {\n var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n return .999 * dr * dr > dx * dx + dy * dy;\n }\n function d3_layout_packSiblings(node) {\n if (!(nodes = node.children) || !(n = nodes.length)) return;\n var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n function bound(node) {\n xMin = Math.min(node.x - node.r, xMin);\n xMax = Math.max(node.x + node.r, xMax);\n yMin = Math.min(node.y - node.r, yMin);\n yMax = Math.max(node.y + node.r, yMax);\n }\n nodes.forEach(d3_layout_packLink);\n a = nodes[0];\n a.x = -a.r;\n a.y = 0;\n bound(a);\n if (n > 1) {\n b = nodes[1];\n b.x = b.r;\n b.y = 0;\n bound(b);\n if (n > 2) {\n c = nodes[2];\n d3_layout_packPlace(a, b, c);\n bound(c);\n d3_layout_packInsert(a, c);\n a._pack_prev = c;\n d3_layout_packInsert(c, b);\n b = a._pack_next;\n for (i = 3; i < n; i++) {\n d3_layout_packPlace(a, b, c = nodes[i]);\n var isect = 0, s1 = 1, s2 = 1;\n for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n if (d3_layout_packIntersects(j, c)) {\n isect = 1;\n break;\n }\n }\n if (isect == 1) {\n for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n if (d3_layout_packIntersects(k, c)) {\n break;\n }\n }\n }\n if (isect) {\n if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n i--;\n } else {\n d3_layout_packInsert(a, c);\n b = c;\n bound(c);\n }\n }\n }\n }\n var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n for (i = 0; i < n; i++) {\n c = nodes[i];\n c.x -= cx;\n c.y -= cy;\n cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n }\n node.r = cr;\n nodes.forEach(d3_layout_packUnlink);\n }\n function d3_layout_packLink(node) {\n node._pack_next = node._pack_prev = node;\n }\n function d3_layout_packUnlink(node) {\n delete node._pack_next;\n delete node._pack_prev;\n }\n function d3_layout_packTransform(node, x, y, k) {\n var children = node.children;\n node.x = x += k * node.x;\n node.y = y += k * node.y;\n node.r *= k;\n if (children) {\n var i = -1, n = children.length;\n while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n }\n }\n function d3_layout_packPlace(a, b, c) {\n var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n if (db && (dx || dy)) {\n var da = b.r + c.r, dc = dx * dx + dy * dy;\n da *= da;\n db *= db;\n var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n c.x = a.x + x * dx + y * dy;\n c.y = a.y + x * dy - y * dx;\n } else {\n c.x = a.x + db;\n c.y = a.y;\n }\n }\n d3.layout.tree = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n function tree(d, i) {\n var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n d3_layout_hierarchyVisitBefore(root1, secondWalk);\n if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n var left = root0, right = root0, bottom = root0;\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return nodes;\n }\n function wrapTree(root0) {\n var root1 = {\n A: null,\n children: [ root0 ]\n }, queue = [ root1 ], node1;\n while ((node1 = queue.pop()) != null) {\n for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n queue.push((children[i] = child = {\n _: children[i],\n parent: node1,\n children: (child = children[i].children) && child.slice() || [],\n A: null,\n a: null,\n z: 0,\n m: 0,\n c: 0,\n s: 0,\n t: null,\n i: i\n }).a = child);\n }\n }\n return root1.children[0];\n }\n function firstWalk(v) {\n var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n if (children.length) {\n d3_layout_treeShift(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n vom = d3_layout_treeLeft(vom);\n vop = d3_layout_treeRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !d3_layout_treeRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !d3_layout_treeLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= size[0];\n node.y = node.depth * size[1];\n }\n tree.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return tree;\n };\n tree.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null ? sizeNode : null;\n return tree;\n };\n tree.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) == null ? null : sizeNode;\n return tree;\n };\n return d3_layout_hierarchyRebind(tree, hierarchy);\n };\n function d3_layout_treeSeparation(a, b) {\n return a.parent == b.parent ? 1 : 2;\n }\n function d3_layout_treeLeft(v) {\n var children = v.children;\n return children.length ? children[0] : v.t;\n }\n function d3_layout_treeRight(v) {\n var children = v.children, n;\n return (n = children.length) ? children[n - 1] : v.t;\n }\n function d3_layout_treeMove(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n }\n function d3_layout_treeShift(v) {\n var shift = 0, change = 0, children = v.children, i = children.length, w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n }\n function d3_layout_treeAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n }\n d3.layout.cluster = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n function cluster(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var children = node.children;\n if (children && children.length) {\n node.x = d3_layout_clusterX(children);\n node.y = d3_layout_clusterY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n node.x = (node.x - root.x) * size[0];\n node.y = (root.y - node.y) * size[1];\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * size[0];\n node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n });\n return nodes;\n }\n cluster.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return cluster;\n };\n cluster.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null;\n return cluster;\n };\n cluster.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) != null;\n return cluster;\n };\n return d3_layout_hierarchyRebind(cluster, hierarchy);\n };\n function d3_layout_clusterY(children) {\n return 1 + d3.max(children, function(child) {\n return child.y;\n });\n }\n function d3_layout_clusterX(children) {\n return children.reduce(function(x, child) {\n return x + child.x;\n }, 0) / children.length;\n }\n function d3_layout_clusterLeft(node) {\n var children = node.children;\n return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n }\n function d3_layout_clusterRight(node) {\n var children = node.children, n;\n return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n }\n d3.layout.treemap = function() {\n var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n function scale(children, k) {\n var i = -1, n = children.length, child, area;\n while (++i < n) {\n area = (child = children[i]).value * (k < 0 ? 0 : k);\n child.area = isNaN(area) || area <= 0 ? 0 : area;\n }\n }\n function squarify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while ((n = remaining.length) > 0) {\n row.push(child = remaining[n - 1]);\n row.area += child.area;\n if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n remaining.pop();\n best = score;\n } else {\n row.area -= row.pop().area;\n position(row, u, rect, false);\n u = Math.min(rect.dx, rect.dy);\n row.length = row.area = 0;\n best = Infinity;\n }\n }\n if (row.length) {\n position(row, u, rect, true);\n row.length = row.area = 0;\n }\n children.forEach(squarify);\n }\n }\n function stickify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), remaining = children.slice(), child, row = [];\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while (child = remaining.pop()) {\n row.push(child);\n row.area += child.area;\n if (child.z != null) {\n position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n row.length = row.area = 0;\n }\n }\n children.forEach(stickify);\n }\n }\n function worst(row, u) {\n var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n while (++i < n) {\n if (!(r = row[i].area)) continue;\n if (r < rmin) rmin = r;\n if (r > rmax) rmax = r;\n }\n s *= s;\n u *= u;\n return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n }\n function position(row, u, rect, flush) {\n var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n if (u == rect.dx) {\n if (flush || v > rect.dy) v = rect.dy;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dy = v;\n x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n }\n o.z = true;\n o.dx += rect.x + rect.dx - x;\n rect.y += v;\n rect.dy -= v;\n } else {\n if (flush || v > rect.dx) v = rect.dx;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dx = v;\n y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n }\n o.z = false;\n o.dy += rect.y + rect.dy - y;\n rect.x += v;\n rect.dx -= v;\n }\n }\n function treemap(d) {\n var nodes = stickies || hierarchy(d), root = nodes[0];\n root.x = root.y = 0;\n if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n if (stickies) hierarchy.revalue(root);\n scale([ root ], root.dx * root.dy / root.value);\n (stickies ? stickify : squarify)(root);\n if (sticky) stickies = nodes;\n return nodes;\n }\n treemap.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return treemap;\n };\n treemap.padding = function(x) {\n if (!arguments.length) return padding;\n function padFunction(node) {\n var p = x.call(treemap, node, node.depth);\n return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n }\n function padConstant(node) {\n return d3_layout_treemapPad(node, x);\n }\n var type;\n pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n padConstant) : padConstant;\n return treemap;\n };\n treemap.round = function(x) {\n if (!arguments.length) return round != Number;\n round = x ? Math.round : Number;\n return treemap;\n };\n treemap.sticky = function(x) {\n if (!arguments.length) return sticky;\n sticky = x;\n stickies = null;\n return treemap;\n };\n treemap.ratio = function(x) {\n if (!arguments.length) return ratio;\n ratio = x;\n return treemap;\n };\n treemap.mode = function(x) {\n if (!arguments.length) return mode;\n mode = x + \"\";\n return treemap;\n };\n return d3_layout_hierarchyRebind(treemap, hierarchy);\n };\n function d3_layout_treemapPadNull(node) {\n return {\n x: node.x,\n y: node.y,\n dx: node.dx,\n dy: node.dy\n };\n }\n function d3_layout_treemapPad(node, padding) {\n var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n if (dx < 0) {\n x += dx / 2;\n dx = 0;\n }\n if (dy < 0) {\n y += dy / 2;\n dy = 0;\n }\n return {\n x: x,\n y: y,\n dx: dx,\n dy: dy\n };\n }\n d3.random = {\n normal: function(µ, σ) {\n var n = arguments.length;\n if (n < 2) σ = 1;\n if (n < 1) µ = 0;\n return function() {\n var x, y, r;\n do {\n x = Math.random() * 2 - 1;\n y = Math.random() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n };\n },\n logNormal: function() {\n var random = d3.random.normal.apply(d3, arguments);\n return function() {\n return Math.exp(random());\n };\n },\n bates: function(m) {\n var random = d3.random.irwinHall(m);\n return function() {\n return random() / m;\n };\n },\n irwinHall: function(m) {\n return function() {\n for (var s = 0, j = 0; j < m; j++) s += Math.random();\n return s;\n };\n }\n };\n d3.scale = {};\n function d3_scaleExtent(domain) {\n var start = domain[0], stop = domain[domain.length - 1];\n return start < stop ? [ start, stop ] : [ stop, start ];\n }\n function d3_scaleRange(scale) {\n return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n }\n function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n return function(x) {\n return i(u(x));\n };\n }\n function d3_scale_nice(domain, nice) {\n var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n if (x1 < x0) {\n dx = i0, i0 = i1, i1 = dx;\n dx = x0, x0 = x1, x1 = dx;\n }\n domain[i0] = nice.floor(x0);\n domain[i1] = nice.ceil(x1);\n return domain;\n }\n function d3_scale_niceStep(step) {\n return step ? {\n floor: function(x) {\n return Math.floor(x / step) * step;\n },\n ceil: function(x) {\n return Math.ceil(x / step) * step;\n }\n } : d3_scale_niceIdentity;\n }\n var d3_scale_niceIdentity = {\n floor: d3_identity,\n ceil: d3_identity\n };\n function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n if (domain[k] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n while (++j <= k) {\n u.push(uninterpolate(domain[j - 1], domain[j]));\n i.push(interpolate(range[j - 1], range[j]));\n }\n return function(x) {\n var j = d3.bisect(domain, x, 1, k) - 1;\n return i[j](u[j](x));\n };\n }\n d3.scale.linear = function() {\n return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n };\n function d3_scale_linear(domain, range, interpolate, clamp) {\n var output, input;\n function rescale() {\n var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n output = linear(domain, range, uninterpolate, interpolate);\n input = linear(range, domain, uninterpolate, d3_interpolate);\n return scale;\n }\n function scale(x) {\n return output(x);\n }\n scale.invert = function(y) {\n return input(y);\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(Number);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.rangeRound = function(x) {\n return scale.range(x).interpolate(d3_interpolateRound);\n };\n scale.clamp = function(x) {\n if (!arguments.length) return clamp;\n clamp = x;\n return rescale();\n };\n scale.interpolate = function(x) {\n if (!arguments.length) return interpolate;\n interpolate = x;\n return rescale();\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n d3_scale_linearNice(domain, m);\n return rescale();\n };\n scale.copy = function() {\n return d3_scale_linear(domain, range, interpolate, clamp);\n };\n return rescale();\n }\n function d3_scale_linearRebind(scale, linear) {\n return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n }\n function d3_scale_linearNice(domain, m) {\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n return domain;\n }\n function d3_scale_linearTickRange(domain, m) {\n if (m == null) m = 10;\n var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n extent[0] = Math.ceil(extent[0] / step) * step;\n extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n extent[2] = step;\n return extent;\n }\n function d3_scale_linearTicks(domain, m) {\n return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n }\n function d3_scale_linearTickFormat(domain, m, format) {\n var range = d3_scale_linearTickRange(domain, m);\n if (format) {\n var match = d3_format_re.exec(format);\n match.shift();\n if (match[8] === \"s\") {\n var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n match[8] = \"f\";\n format = d3.format(match.join(\"\"));\n return function(d) {\n return format(prefix.scale(d)) + prefix.symbol;\n };\n }\n if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n format = match.join(\"\");\n } else {\n format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n }\n return d3.format(format);\n }\n var d3_scale_linearFormatSignificant = {\n s: 1,\n g: 1,\n p: 1,\n r: 1,\n e: 1\n };\n function d3_scale_linearPrecision(value) {\n return -Math.floor(Math.log(value) / Math.LN10 + .01);\n }\n function d3_scale_linearFormatPrecision(type, range) {\n var p = d3_scale_linearPrecision(range[2]);\n return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n }\n d3.scale.log = function() {\n return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n };\n function d3_scale_log(linear, base, positive, domain) {\n function log(x) {\n return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n }\n function pow(x) {\n return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n }\n function scale(x) {\n return linear(log(x));\n }\n scale.invert = function(x) {\n return pow(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n positive = x[0] >= 0;\n linear.domain((domain = x.map(Number)).map(log));\n return scale;\n };\n scale.base = function(_) {\n if (!arguments.length) return base;\n base = +_;\n linear.domain(domain.map(log));\n return scale;\n };\n scale.nice = function() {\n var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n linear.domain(niced);\n domain = niced.map(pow);\n return scale;\n };\n scale.ticks = function() {\n var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n if (isFinite(j - i)) {\n if (positive) {\n for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n ticks.push(pow(i));\n } else {\n ticks.push(pow(i));\n for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n }\n for (i = 0; ticks[i] < u; i++) {}\n for (j = ticks.length; ticks[j - 1] > v; j--) {}\n ticks = ticks.slice(i, j);\n }\n return ticks;\n };\n scale.tickFormat = function(n, format) {\n if (!arguments.length) return d3_scale_logFormat;\n if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n var k = Math.max(1, base * n / scale.ticks().length);\n return function(d) {\n var i = d / pow(Math.round(log(d)));\n if (i * base < base - .5) i *= base;\n return i <= k ? format(d) : \"\";\n };\n };\n scale.copy = function() {\n return d3_scale_log(linear.copy(), base, positive, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n floor: function(x) {\n return -Math.ceil(-x);\n },\n ceil: function(x) {\n return -Math.floor(-x);\n }\n };\n d3.scale.pow = function() {\n return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n };\n function d3_scale_pow(linear, exponent, domain) {\n var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n function scale(x) {\n return linear(powp(x));\n }\n scale.invert = function(x) {\n return powb(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n linear.domain((domain = x.map(Number)).map(powp));\n return scale;\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n return scale.domain(d3_scale_linearNice(domain, m));\n };\n scale.exponent = function(x) {\n if (!arguments.length) return exponent;\n powp = d3_scale_powPow(exponent = x);\n powb = d3_scale_powPow(1 / exponent);\n linear.domain(domain.map(powp));\n return scale;\n };\n scale.copy = function() {\n return d3_scale_pow(linear.copy(), exponent, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_scale_powPow(e) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n };\n }\n d3.scale.sqrt = function() {\n return d3.scale.pow().exponent(.5);\n };\n d3.scale.ordinal = function() {\n return d3_scale_ordinal([], {\n t: \"range\",\n a: [ [] ]\n });\n };\n function d3_scale_ordinal(domain, ranger) {\n var index, range, rangeBand;\n function scale(x) {\n return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n }\n function steps(start, step) {\n return d3.range(domain.length).map(function(i) {\n return start + step * i;\n });\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = [];\n index = new d3_Map();\n var i = -1, n = x.length, xi;\n while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n return scale[ranger.t].apply(scale, ranger.a);\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n rangeBand = 0;\n ranger = {\n t: \"range\",\n a: arguments\n };\n return scale;\n };\n scale.rangePoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n 0) : (stop - start) / (domain.length - 1 + padding);\n range = steps(start + step * padding / 2, step);\n rangeBand = 0;\n ranger = {\n t: \"rangePoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundPoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n rangeBand = 0;\n ranger = {\n t: \"rangeRoundPoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n range = steps(start + step * outerPadding, step);\n if (reverse) range.reverse();\n rangeBand = step * (1 - padding);\n ranger = {\n t: \"rangeBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n if (reverse) range.reverse();\n rangeBand = Math.round(step * (1 - padding));\n ranger = {\n t: \"rangeRoundBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBand = function() {\n return rangeBand;\n };\n scale.rangeExtent = function() {\n return d3_scaleExtent(ranger.a[0]);\n };\n scale.copy = function() {\n return d3_scale_ordinal(domain, ranger);\n };\n return scale.domain(domain);\n }\n d3.scale.category10 = function() {\n return d3.scale.ordinal().range(d3_category10);\n };\n d3.scale.category20 = function() {\n return d3.scale.ordinal().range(d3_category20);\n };\n d3.scale.category20b = function() {\n return d3.scale.ordinal().range(d3_category20b);\n };\n d3.scale.category20c = function() {\n return d3.scale.ordinal().range(d3_category20c);\n };\n var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n d3.scale.quantile = function() {\n return d3_scale_quantile([], []);\n };\n function d3_scale_quantile(domain, range) {\n var thresholds;\n function rescale() {\n var k = 0, q = range.length;\n thresholds = [];\n while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n return scale;\n }\n function scale(x) {\n if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.quantiles = function() {\n return thresholds;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n };\n scale.copy = function() {\n return d3_scale_quantile(domain, range);\n };\n return rescale();\n }\n d3.scale.quantize = function() {\n return d3_scale_quantize(0, 1, [ 0, 1 ]);\n };\n function d3_scale_quantize(x0, x1, range) {\n var kx, i;\n function scale(x) {\n return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n }\n function rescale() {\n kx = range.length / (x1 - x0);\n i = range.length - 1;\n return scale;\n }\n scale.domain = function(x) {\n if (!arguments.length) return [ x0, x1 ];\n x0 = +x[0];\n x1 = +x[x.length - 1];\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n y = y < 0 ? NaN : y / kx + x0;\n return [ y, y + 1 / kx ];\n };\n scale.copy = function() {\n return d3_scale_quantize(x0, x1, range);\n };\n return rescale();\n }\n d3.scale.threshold = function() {\n return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n };\n function d3_scale_threshold(domain, range) {\n function scale(x) {\n if (x <= x) return range[d3.bisect(domain, x)];\n }\n scale.domain = function(_) {\n if (!arguments.length) return domain;\n domain = _;\n return scale;\n };\n scale.range = function(_) {\n if (!arguments.length) return range;\n range = _;\n return scale;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return [ domain[y - 1], domain[y] ];\n };\n scale.copy = function() {\n return d3_scale_threshold(domain, range);\n };\n return scale;\n }\n d3.scale.identity = function() {\n return d3_scale_identity([ 0, 1 ]);\n };\n function d3_scale_identity(domain) {\n function identity(x) {\n return +x;\n }\n identity.invert = identity;\n identity.domain = identity.range = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(identity);\n return identity;\n };\n identity.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n identity.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n identity.copy = function() {\n return d3_scale_identity(domain);\n };\n return identity;\n }\n d3.svg = {};\n function d3_zero() {\n return 0;\n }\n d3.svg.arc = function() {\n var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n function arc() {\n var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n if (!cw) p1 *= -1;\n if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n }\n if (r1) {\n x0 = r1 * Math.cos(a0 + p1);\n y0 = r1 * Math.sin(a0 + p1);\n x1 = r1 * Math.cos(a1 - p1);\n y1 = r1 * Math.sin(a1 - p1);\n var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n var h1 = (a0 + a1) / 2;\n x0 = r1 * Math.cos(h1);\n y0 = r1 * Math.sin(h1);\n x1 = y1 = null;\n }\n } else {\n x0 = y0 = 0;\n }\n if (r0) {\n x2 = r0 * Math.cos(a1 - p0);\n y2 = r0 * Math.sin(a1 - p0);\n x3 = r0 * Math.cos(a0 + p0);\n y3 = r0 * Math.sin(a0 + p0);\n var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n var h0 = (a0 + a1) / 2;\n x2 = r0 * Math.cos(h0);\n y2 = r0 * Math.sin(h0);\n x3 = y3 = null;\n }\n } else {\n x2 = y2 = 0;\n }\n if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n cr = r0 < r1 ^ cw ? 0 : 1;\n var rc1 = rc, rc0 = rc;\n if (da < π) {\n var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n if (x1 != null) {\n var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n if (rc === rc1) {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n } else {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n }\n if (x3 != null) {\n var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n if (rc === rc0) {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n } else {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n }\n } else {\n path.push(\"L\", x2, \",\", y2);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n path.push(\"L\", x2, \",\", y2);\n if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n }\n path.push(\"Z\");\n return path.join(\"\");\n }\n function circleSegment(r1, cw) {\n return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n }\n arc.innerRadius = function(v) {\n if (!arguments.length) return innerRadius;\n innerRadius = d3_functor(v);\n return arc;\n };\n arc.outerRadius = function(v) {\n if (!arguments.length) return outerRadius;\n outerRadius = d3_functor(v);\n return arc;\n };\n arc.cornerRadius = function(v) {\n if (!arguments.length) return cornerRadius;\n cornerRadius = d3_functor(v);\n return arc;\n };\n arc.padRadius = function(v) {\n if (!arguments.length) return padRadius;\n padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n return arc;\n };\n arc.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return arc;\n };\n arc.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return arc;\n };\n arc.padAngle = function(v) {\n if (!arguments.length) return padAngle;\n padAngle = d3_functor(v);\n return arc;\n };\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n return [ Math.cos(a) * r, Math.sin(a) * r ];\n };\n return arc;\n };\n var d3_svg_arcAuto = \"auto\";\n function d3_svg_arcInnerRadius(d) {\n return d.innerRadius;\n }\n function d3_svg_arcOuterRadius(d) {\n return d.outerRadius;\n }\n function d3_svg_arcStartAngle(d) {\n return d.startAngle;\n }\n function d3_svg_arcEndAngle(d) {\n return d.endAngle;\n }\n function d3_svg_arcPadAngle(d) {\n return d && d.padAngle;\n }\n function d3_svg_arcSweep(x0, y0, x1, y1) {\n return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n }\n function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n }\n function d3_svg_line(projection) {\n var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n function line(data) {\n var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n function segment() {\n segments.push(\"M\", interpolate(projection(points), tension));\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n } else if (points.length) {\n segment();\n points = [];\n }\n }\n if (points.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n line.x = function(_) {\n if (!arguments.length) return x;\n x = _;\n return line;\n };\n line.y = function(_) {\n if (!arguments.length) return y;\n y = _;\n return line;\n };\n line.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return line;\n };\n line.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n return line;\n };\n line.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return line;\n };\n return line;\n }\n d3.svg.line = function() {\n return d3_svg_line(d3_identity);\n };\n var d3_svg_lineInterpolators = d3.map({\n linear: d3_svg_lineLinear,\n \"linear-closed\": d3_svg_lineLinearClosed,\n step: d3_svg_lineStep,\n \"step-before\": d3_svg_lineStepBefore,\n \"step-after\": d3_svg_lineStepAfter,\n basis: d3_svg_lineBasis,\n \"basis-open\": d3_svg_lineBasisOpen,\n \"basis-closed\": d3_svg_lineBasisClosed,\n bundle: d3_svg_lineBundle,\n cardinal: d3_svg_lineCardinal,\n \"cardinal-open\": d3_svg_lineCardinalOpen,\n \"cardinal-closed\": d3_svg_lineCardinalClosed,\n monotone: d3_svg_lineMonotone\n });\n d3_svg_lineInterpolators.forEach(function(key, value) {\n value.key = key;\n value.closed = /-closed$/.test(key);\n });\n function d3_svg_lineLinear(points) {\n return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n }\n function d3_svg_lineLinearClosed(points) {\n return points.join(\"L\") + \"Z\";\n }\n function d3_svg_lineStep(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n if (n > 1) path.push(\"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepBefore(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepAfter(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n return path.join(\"\");\n }\n function d3_svg_lineCardinalOpen(points, tension) {\n return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineCardinalClosed(points, tension) {\n return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n }\n function d3_svg_lineCardinal(points, tension) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineHermite(points, tangents) {\n if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n return d3_svg_lineLinear(points);\n }\n var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n if (quad) {\n path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n p0 = points[1];\n pi = 2;\n }\n if (tangents.length > 1) {\n t = tangents[1];\n p = points[pi];\n pi++;\n path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n for (var i = 2; i < tangents.length; i++, pi++) {\n p = points[pi];\n t = tangents[i];\n path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n }\n }\n if (quad) {\n var lp = points[pi];\n path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n }\n return path;\n }\n function d3_svg_lineCardinalTangents(points, tension) {\n var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n while (++i < n) {\n p0 = p1;\n p1 = p2;\n p2 = points[i];\n tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n }\n return tangents;\n }\n function d3_svg_lineBasis(points) {\n if (points.length < 3) return d3_svg_lineLinear(points);\n var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n points.push(points[n - 1]);\n while (++i <= n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n points.pop();\n path.push(\"L\", pi);\n return path.join(\"\");\n }\n function d3_svg_lineBasisOpen(points) {\n if (points.length < 4) return d3_svg_lineLinear(points);\n var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n while (++i < 3) {\n pi = points[i];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n --i;\n while (++i < n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBasisClosed(points) {\n var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n while (++i < 4) {\n pi = points[i % n];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n --i;\n while (++i < m) {\n pi = points[i % n];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBundle(points, tension) {\n var n = points.length - 1;\n if (n) {\n var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n while (++i <= n) {\n p = points[i];\n t = i / n;\n p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n }\n }\n return d3_svg_lineBasis(points);\n }\n function d3_svg_lineDot4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n }\n var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n function d3_svg_lineBasisBezier(path, x, y) {\n path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n }\n function d3_svg_lineSlope(p0, p1) {\n return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n }\n function d3_svg_lineFiniteDifferences(points) {\n var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n while (++i < j) {\n m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n }\n m[i] = d;\n return m;\n }\n function d3_svg_lineMonotoneTangents(points) {\n var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n while (++i < j) {\n d = d3_svg_lineSlope(points[i], points[i + 1]);\n if (abs(d) < ε) {\n m[i] = m[i + 1] = 0;\n } else {\n a = m[i] / d;\n b = m[i + 1] / d;\n s = a * a + b * b;\n if (s > 9) {\n s = d * 3 / Math.sqrt(s);\n m[i] = s * a;\n m[i + 1] = s * b;\n }\n }\n }\n i = -1;\n while (++i <= j) {\n s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n tangents.push([ s || 0, m[i] * s || 0 ]);\n }\n return tangents;\n }\n function d3_svg_lineMonotone(points) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n }\n d3.svg.line.radial = function() {\n var line = d3_svg_line(d3_svg_lineRadial);\n line.radius = line.x, delete line.x;\n line.angle = line.y, delete line.y;\n return line;\n };\n function d3_svg_lineRadial(points) {\n var point, i = -1, n = points.length, r, a;\n while (++i < n) {\n point = points[i];\n r = point[0];\n a = point[1] - halfπ;\n point[0] = r * Math.cos(a);\n point[1] = r * Math.sin(a);\n }\n return points;\n }\n function d3_svg_area(projection) {\n var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n function area(data) {\n var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n return x;\n } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n return y;\n } : d3_functor(y1), x, y;\n function segment() {\n segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n } else if (points0.length) {\n segment();\n points0 = [];\n points1 = [];\n }\n }\n if (points0.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n area.x = function(_) {\n if (!arguments.length) return x1;\n x0 = x1 = _;\n return area;\n };\n area.x0 = function(_) {\n if (!arguments.length) return x0;\n x0 = _;\n return area;\n };\n area.x1 = function(_) {\n if (!arguments.length) return x1;\n x1 = _;\n return area;\n };\n area.y = function(_) {\n if (!arguments.length) return y1;\n y0 = y1 = _;\n return area;\n };\n area.y0 = function(_) {\n if (!arguments.length) return y0;\n y0 = _;\n return area;\n };\n area.y1 = function(_) {\n if (!arguments.length) return y1;\n y1 = _;\n return area;\n };\n area.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return area;\n };\n area.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n interpolateReverse = interpolate.reverse || interpolate;\n L = interpolate.closed ? \"M\" : \"L\";\n return area;\n };\n area.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return area;\n };\n return area;\n }\n d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n d3.svg.area = function() {\n return d3_svg_area(d3_identity);\n };\n d3.svg.area.radial = function() {\n var area = d3_svg_area(d3_svg_lineRadial);\n area.radius = area.x, delete area.x;\n area.innerRadius = area.x0, delete area.x0;\n area.outerRadius = area.x1, delete area.x1;\n area.angle = area.y, delete area.y;\n area.startAngle = area.y0, delete area.y0;\n area.endAngle = area.y1, delete area.y1;\n return area;\n };\n d3.svg.chord = function() {\n var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n function chord(d, i) {\n var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n }\n function subgroup(self, f, d, i) {\n var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n return {\n r: r,\n a0: a0,\n a1: a1,\n p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n };\n }\n function equals(a, b) {\n return a.a0 == b.a0 && a.a1 == b.a1;\n }\n function arc(r, p, a) {\n return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n }\n function curve(r0, p0, r1, p1) {\n return \"Q 0,0 \" + p1;\n }\n chord.radius = function(v) {\n if (!arguments.length) return radius;\n radius = d3_functor(v);\n return chord;\n };\n chord.source = function(v) {\n if (!arguments.length) return source;\n source = d3_functor(v);\n return chord;\n };\n chord.target = function(v) {\n if (!arguments.length) return target;\n target = d3_functor(v);\n return chord;\n };\n chord.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return chord;\n };\n chord.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return chord;\n };\n return chord;\n };\n function d3_svg_chordRadius(d) {\n return d.radius;\n }\n d3.svg.diagonal = function() {\n var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n function diagonal(d, i) {\n var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n x: p0.x,\n y: m\n }, {\n x: p3.x,\n y: m\n }, p3 ];\n p = p.map(projection);\n return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n }\n diagonal.source = function(x) {\n if (!arguments.length) return source;\n source = d3_functor(x);\n return diagonal;\n };\n diagonal.target = function(x) {\n if (!arguments.length) return target;\n target = d3_functor(x);\n return diagonal;\n };\n diagonal.projection = function(x) {\n if (!arguments.length) return projection;\n projection = x;\n return diagonal;\n };\n return diagonal;\n };\n function d3_svg_diagonalProjection(d) {\n return [ d.x, d.y ];\n }\n d3.svg.diagonal.radial = function() {\n var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n diagonal.projection = function(x) {\n return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n };\n return diagonal;\n };\n function d3_svg_diagonalRadialProjection(projection) {\n return function() {\n var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n return [ r * Math.cos(a), r * Math.sin(a) ];\n };\n }\n d3.svg.symbol = function() {\n var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n function symbol(d, i) {\n return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n }\n symbol.type = function(x) {\n if (!arguments.length) return type;\n type = d3_functor(x);\n return symbol;\n };\n symbol.size = function(x) {\n if (!arguments.length) return size;\n size = d3_functor(x);\n return symbol;\n };\n return symbol;\n };\n function d3_svg_symbolSize() {\n return 64;\n }\n function d3_svg_symbolType() {\n return \"circle\";\n }\n function d3_svg_symbolCircle(size) {\n var r = Math.sqrt(size / π);\n return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n }\n var d3_svg_symbols = d3.map({\n circle: d3_svg_symbolCircle,\n cross: function(size) {\n var r = Math.sqrt(size / 5) / 2;\n return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n },\n diamond: function(size) {\n var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n },\n square: function(size) {\n var r = Math.sqrt(size) / 2;\n return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n },\n \"triangle-down\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n },\n \"triangle-up\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n }\n });\n d3.svg.symbolTypes = d3_svg_symbols.keys();\n var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n d3_selectionPrototype.transition = function(name) {\n var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n time: Date.now(),\n ease: d3_ease_cubicInOut,\n delay: 0,\n duration: 250\n };\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_selectionPrototype.interrupt = function(name) {\n return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n };\n var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n function d3_selection_interruptNS(ns) {\n return function() {\n var lock, activeId, active;\n if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n active.timer.c = null;\n active.timer.t = NaN;\n if (--lock.count) delete lock[activeId]; else delete this[ns];\n lock.active += .5;\n active.event && active.event.interrupt.call(this, this.__data__, active.index);\n }\n };\n }\n function d3_transition(groups, ns, id) {\n d3_subclass(groups, d3_transitionPrototype);\n groups.namespace = ns;\n groups.id = id;\n return groups;\n }\n var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n d3_transitionPrototype.call = d3_selectionPrototype.call;\n d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n d3_transitionPrototype.node = d3_selectionPrototype.node;\n d3_transitionPrototype.size = d3_selectionPrototype.size;\n d3.transition = function(selection, name) {\n return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n };\n d3.transition.prototype = d3_transitionPrototype;\n d3_transitionPrototype.select = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n subgroup.push(subnode);\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.selectAll = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n transition = node[ns][id];\n subnodes = selector.call(node, node.__data__, i, j);\n subgroups.push(subgroup = []);\n for (var k = -1, o = subnodes.length; ++k < o; ) {\n if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n subgroup.push(subnode);\n }\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_transition(subgroups, this.namespace, this.id);\n };\n d3_transitionPrototype.tween = function(name, tween) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n return d3_selection_each(this, tween == null ? function(node) {\n node[ns][id].tween.remove(name);\n } : function(node) {\n node[ns][id].tween.set(name, tween);\n });\n };\n function d3_transition_tween(groups, name, value, tween) {\n var id = groups.id, ns = groups.namespace;\n return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n } : (value = tween(value), function(node) {\n node[ns][id].tween.set(name, value);\n }));\n }\n d3_transitionPrototype.attr = function(nameNS, value) {\n if (arguments.length < 2) {\n for (value in nameNS) this.attr(value, nameNS[value]);\n return this;\n }\n var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrTween(b) {\n return b == null ? attrNull : (b += \"\", function() {\n var a = this.getAttribute(name), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttribute(name, i(t));\n });\n });\n }\n function attrTweenNS(b) {\n return b == null ? attrNullNS : (b += \"\", function() {\n var a = this.getAttributeNS(name.space, name.local), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttributeNS(name.space, name.local, i(t));\n });\n });\n }\n return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.attrTween = function(nameNS, tween) {\n var name = d3.ns.qualify(nameNS);\n function attrTween(d, i) {\n var f = tween.call(this, d, i, this.getAttribute(name));\n return f && function(t) {\n this.setAttribute(name, f(t));\n };\n }\n function attrTweenNS(d, i) {\n var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n return f && function(t) {\n this.setAttributeNS(name.space, name.local, f(t));\n };\n }\n return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.style(priority, name[priority], value);\n return this;\n }\n priority = \"\";\n }\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleString(b) {\n return b == null ? styleNull : (b += \"\", function() {\n var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n return a !== b && (i = d3_interpolate(a, b), function(t) {\n this.style.setProperty(name, i(t), priority);\n });\n });\n }\n return d3_transition_tween(this, \"style.\" + name, value, styleString);\n };\n d3_transitionPrototype.styleTween = function(name, tween, priority) {\n if (arguments.length < 3) priority = \"\";\n function styleTween(d, i) {\n var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n return f && function(t) {\n this.style.setProperty(name, f(t), priority);\n };\n }\n return this.tween(\"style.\" + name, styleTween);\n };\n d3_transitionPrototype.text = function(value) {\n return d3_transition_tween(this, \"text\", value, d3_transition_text);\n };\n function d3_transition_text(b) {\n if (b == null) b = \"\";\n return function() {\n this.textContent = b;\n };\n }\n d3_transitionPrototype.remove = function() {\n var ns = this.namespace;\n return this.each(\"end.transition\", function() {\n var p;\n if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n });\n };\n d3_transitionPrototype.ease = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].ease;\n if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n return d3_selection_each(this, function(node) {\n node[ns][id].ease = value;\n });\n };\n d3_transitionPrototype.delay = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].delay;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].delay = +value.call(node, node.__data__, i, j);\n } : (value = +value, function(node) {\n node[ns][id].delay = value;\n }));\n };\n d3_transitionPrototype.duration = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].duration;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n } : (value = Math.max(1, value), function(node) {\n node[ns][id].duration = value;\n }));\n };\n d3_transitionPrototype.each = function(type, listener) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) {\n var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n try {\n d3_transitionInheritId = id;\n d3_selection_each(this, function(node, i, j) {\n d3_transitionInherit = node[ns][id];\n type.call(node, node.__data__, i, j);\n });\n } finally {\n d3_transitionInherit = inherit;\n d3_transitionInheritId = inheritId;\n }\n } else {\n d3_selection_each(this, function(node) {\n var transition = node[ns][id];\n (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n });\n }\n return this;\n };\n d3_transitionPrototype.transition = function() {\n var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if (node = group[i]) {\n transition = node[ns][id0];\n d3_transitionNode(node, i, ns, id1, {\n time: transition.time,\n ease: transition.ease,\n delay: transition.delay + transition.duration,\n duration: transition.duration\n });\n }\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id1);\n };\n function d3_transitionNamespace(name) {\n return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n }\n function d3_transitionNode(node, i, ns, id, inherit) {\n var lock = node[ns] || (node[ns] = {\n active: 0,\n count: 0\n }), transition = lock[id], time, timer, duration, ease, tweens;\n function schedule(elapsed) {\n var delay = transition.delay;\n timer.t = delay + time;\n if (delay <= elapsed) return start(elapsed - delay);\n timer.c = start;\n }\n function start(elapsed) {\n var activeId = lock.active, active = lock[activeId];\n if (active) {\n active.timer.c = null;\n active.timer.t = NaN;\n --lock.count;\n delete lock[activeId];\n active.event && active.event.interrupt.call(node, node.__data__, active.index);\n }\n for (var cancelId in lock) {\n if (+cancelId < id) {\n var cancel = lock[cancelId];\n cancel.timer.c = null;\n cancel.timer.t = NaN;\n --lock.count;\n delete lock[cancelId];\n }\n }\n timer.c = tick;\n d3_timer(function() {\n if (timer.c && tick(elapsed || 1)) {\n timer.c = null;\n timer.t = NaN;\n }\n return 1;\n }, 0, time);\n lock.active = id;\n transition.event && transition.event.start.call(node, node.__data__, i);\n tweens = [];\n transition.tween.forEach(function(key, value) {\n if (value = value.call(node, node.__data__, i)) {\n tweens.push(value);\n }\n });\n ease = transition.ease;\n duration = transition.duration;\n }\n function tick(elapsed) {\n var t = elapsed / duration, e = ease(t), n = tweens.length;\n while (n > 0) {\n tweens[--n].call(node, e);\n }\n if (t >= 1) {\n transition.event && transition.event.end.call(node, node.__data__, i);\n if (--lock.count) delete lock[id]; else delete node[ns];\n return 1;\n }\n }\n if (!transition) {\n time = inherit.time;\n timer = d3_timer(schedule, 0, time);\n transition = lock[id] = {\n tween: new d3_Map(),\n time: time,\n timer: timer,\n delay: inherit.delay,\n duration: inherit.duration,\n ease: inherit.ease,\n index: i\n };\n inherit = null;\n ++lock.count;\n }\n }\n d3.svg.axis = function() {\n var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n function axis(g) {\n g.each(function() {\n var g = d3.select(this);\n var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n d3.transition(path));\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n if (orient === \"bottom\" || orient === \"top\") {\n tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n } else {\n tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n }\n lineEnter.attr(y2, sign * innerTickSize);\n textEnter.attr(y1, sign * tickSpacing);\n lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n if (scale1.rangeBand) {\n var x = scale1, dx = x.rangeBand() / 2;\n scale0 = scale1 = function(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, scale0);\n }\n tickEnter.call(tickTransform, scale0, scale1);\n tickUpdate.call(tickTransform, scale1, scale1);\n });\n }\n axis.scale = function(x) {\n if (!arguments.length) return scale;\n scale = x;\n return axis;\n };\n axis.orient = function(x) {\n if (!arguments.length) return orient;\n orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n return axis;\n };\n axis.ticks = function() {\n if (!arguments.length) return tickArguments_;\n tickArguments_ = d3_array(arguments);\n return axis;\n };\n axis.tickValues = function(x) {\n if (!arguments.length) return tickValues;\n tickValues = x;\n return axis;\n };\n axis.tickFormat = function(x) {\n if (!arguments.length) return tickFormat_;\n tickFormat_ = x;\n return axis;\n };\n axis.tickSize = function(x) {\n var n = arguments.length;\n if (!n) return innerTickSize;\n innerTickSize = +x;\n outerTickSize = +arguments[n - 1];\n return axis;\n };\n axis.innerTickSize = function(x) {\n if (!arguments.length) return innerTickSize;\n innerTickSize = +x;\n return axis;\n };\n axis.outerTickSize = function(x) {\n if (!arguments.length) return outerTickSize;\n outerTickSize = +x;\n return axis;\n };\n axis.tickPadding = function(x) {\n if (!arguments.length) return tickPadding;\n tickPadding = +x;\n return axis;\n };\n axis.tickSubdivide = function() {\n return arguments.length && axis;\n };\n return axis;\n };\n var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n };\n function d3_svg_axisX(selection, x0, x1) {\n selection.attr(\"transform\", function(d) {\n var v0 = x0(d);\n return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n });\n }\n function d3_svg_axisY(selection, y0, y1) {\n selection.attr(\"transform\", function(d) {\n var v0 = y0(d);\n return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n });\n }\n d3.svg.brush = function() {\n var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n function brush(g) {\n g.each(function() {\n var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n var background = g.selectAll(\".background\").data([ 0 ]);\n background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n resize.exit().remove();\n resize.enter().append(\"g\").attr(\"class\", function(d) {\n return \"resize \" + d;\n }).style(\"cursor\", function(d) {\n return d3_svg_brushCursor[d];\n }).append(\"rect\").attr(\"x\", function(d) {\n return /[ew]$/.test(d) ? -3 : null;\n }).attr(\"y\", function(d) {\n return /^[ns]/.test(d) ? -3 : null;\n }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n resize.style(\"display\", brush.empty() ? \"none\" : null);\n var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n if (x) {\n range = d3_scaleRange(x);\n backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n redrawX(gUpdate);\n }\n if (y) {\n range = d3_scaleRange(y);\n backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n redrawY(gUpdate);\n }\n redraw(gUpdate);\n });\n }\n brush.event = function(g) {\n g.each(function() {\n var event_ = event.of(this, arguments), extent1 = {\n x: xExtent,\n y: yExtent,\n i: xExtentDomain,\n j: yExtentDomain\n }, extent0 = this.__chart__ || extent1;\n this.__chart__ = extent1;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.brush\", function() {\n xExtentDomain = extent0.i;\n yExtentDomain = extent0.j;\n xExtent = extent0.x;\n yExtent = extent0.y;\n event_({\n type: \"brushstart\"\n });\n }).tween(\"brush:brush\", function() {\n var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n xExtentDomain = yExtentDomain = null;\n return function(t) {\n xExtent = extent1.x = xi(t);\n yExtent = extent1.y = yi(t);\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n };\n }).each(\"end.brush\", function() {\n xExtentDomain = extent1.i;\n yExtentDomain = extent1.j;\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n });\n } else {\n event_({\n type: \"brushstart\"\n });\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n }\n });\n };\n function redraw(g) {\n g.selectAll(\".resize\").attr(\"transform\", function(d) {\n return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n });\n }\n function redrawX(g) {\n g.select(\".extent\").attr(\"x\", xExtent[0]);\n g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n }\n function redrawY(g) {\n g.select(\".extent\").attr(\"y\", yExtent[0]);\n g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n }\n function brushstart() {\n var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n if (d3.event.changedTouches) {\n w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n } else {\n w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n }\n g.interrupt().selectAll(\"*\").interrupt();\n if (dragging) {\n origin[0] = xExtent[0] - origin[0];\n origin[1] = yExtent[0] - origin[1];\n } else if (resizing) {\n var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n origin[0] = xExtent[ex];\n origin[1] = yExtent[ey];\n } else if (d3.event.altKey) center = origin.slice();\n g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n event_({\n type: \"brushstart\"\n });\n brushmove();\n function keydown() {\n if (d3.event.keyCode == 32) {\n if (!dragging) {\n center = null;\n origin[0] -= xExtent[1];\n origin[1] -= yExtent[1];\n dragging = 2;\n }\n d3_eventPreventDefault();\n }\n }\n function keyup() {\n if (d3.event.keyCode == 32 && dragging == 2) {\n origin[0] += xExtent[1];\n origin[1] += yExtent[1];\n dragging = 0;\n d3_eventPreventDefault();\n }\n }\n function brushmove() {\n var point = d3.mouse(target), moved = false;\n if (offset) {\n point[0] += offset[0];\n point[1] += offset[1];\n }\n if (!dragging) {\n if (d3.event.altKey) {\n if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n origin[0] = xExtent[+(point[0] < center[0])];\n origin[1] = yExtent[+(point[1] < center[1])];\n } else center = null;\n }\n if (resizingX && move1(point, x, 0)) {\n redrawX(g);\n moved = true;\n }\n if (resizingY && move1(point, y, 1)) {\n redrawY(g);\n moved = true;\n }\n if (moved) {\n redraw(g);\n event_({\n type: \"brush\",\n mode: dragging ? \"move\" : \"resize\"\n });\n }\n }\n function move1(point, scale, i) {\n var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n if (dragging) {\n r0 -= position;\n r1 -= size + position;\n }\n min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n if (dragging) {\n max = (min += position) + size;\n } else {\n if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n if (position < min) {\n max = min;\n min = position;\n } else {\n max = position;\n }\n }\n if (extent[0] != min || extent[1] != max) {\n if (i) yExtentDomain = null; else xExtentDomain = null;\n extent[0] = min;\n extent[1] = max;\n return true;\n }\n }\n function brushend() {\n brushmove();\n g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n d3.select(\"body\").style(\"cursor\", null);\n w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n dragRestore();\n event_({\n type: \"brushend\"\n });\n }\n }\n brush.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.clamp = function(z) {\n if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n return brush;\n };\n brush.extent = function(z) {\n var x0, x1, y0, y1, t;\n if (!arguments.length) {\n if (x) {\n if (xExtentDomain) {\n x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n } else {\n x0 = xExtent[0], x1 = xExtent[1];\n if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n }\n }\n if (y) {\n if (yExtentDomain) {\n y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n } else {\n y0 = yExtent[0], y1 = yExtent[1];\n if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n }\n }\n return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n }\n if (x) {\n x0 = z[0], x1 = z[1];\n if (y) x0 = x0[0], x1 = x1[0];\n xExtentDomain = [ x0, x1 ];\n if (x.invert) x0 = x(x0), x1 = x(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n }\n if (y) {\n y0 = z[0], y1 = z[1];\n if (x) y0 = y0[1], y1 = y1[1];\n yExtentDomain = [ y0, y1 ];\n if (y.invert) y0 = y(y0), y1 = y(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n }\n return brush;\n };\n brush.clear = function() {\n if (!brush.empty()) {\n xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n xExtentDomain = yExtentDomain = null;\n }\n return brush;\n };\n brush.empty = function() {\n return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n };\n return d3.rebind(brush, event, \"on\");\n };\n var d3_svg_brushCursor = {\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n };\n var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n var d3_time_formatUtc = d3_time_format.utc;\n var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n function d3_time_formatIsoNative(date) {\n return date.toISOString();\n }\n d3_time_formatIsoNative.parse = function(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n };\n d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n d3_time.second = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 1e3) * 1e3);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n }, function(date) {\n return date.getSeconds();\n });\n d3_time.seconds = d3_time.second.range;\n d3_time.seconds.utc = d3_time.second.utc.range;\n d3_time.minute = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 6e4) * 6e4);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n }, function(date) {\n return date.getMinutes();\n });\n d3_time.minutes = d3_time.minute.range;\n d3_time.minutes.utc = d3_time.minute.utc.range;\n d3_time.hour = d3_time_interval(function(date) {\n var timezone = date.getTimezoneOffset() / 60;\n return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n }, function(date) {\n return date.getHours();\n });\n d3_time.hours = d3_time.hour.range;\n d3_time.hours.utc = d3_time.hour.utc.range;\n d3_time.month = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setDate(1);\n return date;\n }, function(date, offset) {\n date.setMonth(date.getMonth() + offset);\n }, function(date) {\n return date.getMonth();\n });\n d3_time.months = d3_time.month.range;\n d3_time.months.utc = d3_time.month.utc.range;\n function d3_time_scale(linear, methods, format) {\n function scale(x) {\n return linear(x);\n }\n scale.invert = function(x) {\n return d3_time_scaleDate(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n linear.domain(x);\n return scale;\n };\n function tickMethod(extent, count) {\n var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n return d / 31536e6;\n }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n }\n scale.nice = function(interval, skip) {\n var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n if (method) interval = method[0], skip = method[1];\n function skipped(date) {\n return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n }\n return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n floor: function(date) {\n while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n return date;\n },\n ceil: function(date) {\n while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n return date;\n }\n } : interval));\n };\n scale.ticks = function(interval, skip) {\n var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n range: interval\n }, skip ];\n if (method) interval = method[0], skip = method[1];\n return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n };\n scale.tickFormat = function() {\n return format;\n };\n scale.copy = function() {\n return d3_time_scale(linear.copy(), methods, format);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_time_scaleDate(t) {\n return new Date(t);\n }\n var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];\n var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n return d.getMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getHours();\n } ], [ \"%a %d\", function(d) {\n return d.getDay() && d.getDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getMonth();\n } ], [ \"%Y\", d3_true ] ]);\n var d3_time_scaleMilliseconds = {\n range: function(start, stop, step) {\n return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n },\n floor: d3_identity,\n ceil: d3_identity\n };\n d3_time_scaleLocalMethods.year = d3_time.year;\n d3_time.scale = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n };\n var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n return [ m[0].utc, m[1] ];\n });\n var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n return d.getUTCMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getUTCSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getUTCMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getUTCHours();\n } ], [ \"%a %d\", function(d) {\n return d.getUTCDay() && d.getUTCDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getUTCDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getUTCMonth();\n } ], [ \"%Y\", d3_true ] ]);\n d3_time_scaleUtcMethods.year = d3_time.year.utc;\n d3_time.scale.utc = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n };\n d3.text = d3_xhrType(function(request) {\n return request.responseText;\n });\n d3.json = function(url, callback) {\n return d3_xhr(url, \"application/json\", d3_json, callback);\n };\n function d3_json(request) {\n return JSON.parse(request.responseText);\n }\n d3.html = function(url, callback) {\n return d3_xhr(url, \"text/html\", d3_html, callback);\n };\n function d3_html(request) {\n var range = d3_document.createRange();\n range.selectNode(d3_document.body);\n return range.createContextualFragment(request.responseText);\n }\n d3.xml = d3_xhrType(function(request) {\n return request.responseXML;\n });\n if (true) this.d3 = d3, !(__WEBPACK_AMD_DEFINE_FACTORY__ = (d3),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar emptyObject = __webpack_require__(26);\nvar _invariant = __webpack_require__(0);\n\nif (false) {\n var warning = require('fbjs/lib/warning');\n}\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (false) {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {\n ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (false) {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (false) {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (false) {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (false) {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (false) {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (false) {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isInherited = name in Constructor;\n _invariant(\n !isInherited,\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (false) {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (false) {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (false) {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (false) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (false) {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (false) {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\n\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(61)(undefined);\n// imports\n\n\n// module\nexports.push([module.i, \"/*-- Chart --*/\\n.c3 svg {\\n font: 10px sans-serif;\\n -webkit-tap-highlight-color: transparent; }\\n\\n.c3 path, .c3 line {\\n fill: none;\\n stroke: #000; }\\n\\n.c3 text {\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none; }\\n\\n.c3-legend-item-tile,\\n.c3-xgrid-focus,\\n.c3-ygrid,\\n.c3-event-rect,\\n.c3-bars path {\\n shape-rendering: crispEdges; }\\n\\n.c3-chart-arc path {\\n stroke: #fff; }\\n\\n.c3-chart-arc text {\\n fill: #fff;\\n font-size: 13px; }\\n\\n/*-- Axis --*/\\n/*-- Grid --*/\\n.c3-grid line {\\n stroke: #aaa; }\\n\\n.c3-grid text {\\n fill: #aaa; }\\n\\n.c3-xgrid, .c3-ygrid {\\n stroke-dasharray: 3 3; }\\n\\n/*-- Text on Chart --*/\\n.c3-text.c3-empty {\\n fill: #808080;\\n font-size: 2em; }\\n\\n/*-- Line --*/\\n.c3-line {\\n stroke-width: 1px; }\\n\\n/*-- Point --*/\\n.c3-circle._expanded_ {\\n stroke-width: 1px;\\n stroke: white; }\\n\\n.c3-selected-circle {\\n fill: white;\\n stroke-width: 2px; }\\n\\n/*-- Bar --*/\\n.c3-bar {\\n stroke-width: 0; }\\n\\n.c3-bar._expanded_ {\\n fill-opacity: 1;\\n fill-opacity: 0.75; }\\n\\n/*-- Focus --*/\\n.c3-target.c3-focused {\\n opacity: 1; }\\n\\n.c3-target.c3-focused path.c3-line, .c3-target.c3-focused path.c3-step {\\n stroke-width: 2px; }\\n\\n.c3-target.c3-defocused {\\n opacity: 0.3 !important; }\\n\\n/*-- Region --*/\\n.c3-region {\\n fill: steelblue;\\n fill-opacity: .1; }\\n\\n/*-- Brush --*/\\n.c3-brush .extent {\\n fill-opacity: .1; }\\n\\n/*-- Select - Drag --*/\\n/*-- Legend --*/\\n.c3-legend-item {\\n font-size: 12px; }\\n\\n.c3-legend-item-hidden {\\n opacity: 0.15; }\\n\\n.c3-legend-background {\\n opacity: 0.75;\\n fill: white;\\n stroke: lightgray;\\n stroke-width: 1; }\\n\\n/*-- Title --*/\\n.c3-title {\\n font: 14px sans-serif; }\\n\\n/*-- Tooltip --*/\\n.c3-tooltip-container {\\n z-index: 10; }\\n\\n.c3-tooltip {\\n border-collapse: collapse;\\n border-spacing: 0;\\n background-color: #fff;\\n empty-cells: show;\\n -webkit-box-shadow: 7px 7px 12px -9px #777777;\\n -moz-box-shadow: 7px 7px 12px -9px #777777;\\n box-shadow: 7px 7px 12px -9px #777777;\\n opacity: 0.9; }\\n\\n.c3-tooltip tr {\\n border: 1px solid #CCC; }\\n\\n.c3-tooltip th {\\n background-color: #aaa;\\n font-size: 14px;\\n padding: 2px 5px;\\n text-align: left;\\n color: #FFF; }\\n\\n.c3-tooltip td {\\n font-size: 13px;\\n padding: 3px 6px;\\n background-color: #fff;\\n border-left: 1px dotted #999; }\\n\\n.c3-tooltip td > span {\\n display: inline-block;\\n width: 10px;\\n height: 10px;\\n margin-right: 6px; }\\n\\n.c3-tooltip td.value {\\n text-align: right; }\\n\\n/*-- Area --*/\\n.c3-area {\\n stroke-width: 0;\\n opacity: 0.2; }\\n\\n/*-- Arc --*/\\n.c3-chart-arcs-title {\\n dominant-baseline: middle;\\n font-size: 1.3em; }\\n\\n.c3-chart-arcs .c3-chart-arcs-background {\\n fill: #e0e0e0;\\n stroke: none; }\\n\\n.c3-chart-arcs .c3-chart-arcs-gauge-unit {\\n fill: #000;\\n font-size: 16px; }\\n\\n.c3-chart-arcs .c3-chart-arcs-gauge-max {\\n fill: #777; }\\n\\n.c3-chart-arcs .c3-chart-arcs-gauge-min {\\n fill: #777; }\\n\\n.c3-chart-arc .c3-gauge-value {\\n fill: #000;\\n /* font-size: 28px !important;*/ }\\n\\n.c3-chart-arc.c3-target g path {\\n opacity: 1; }\\n\\n.c3-chart-arc.c3-target.c3-focused g path {\\n opacity: 1; }\\n\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(61)(undefined);\n// imports\n\n\n// module\nexports.push([module.i, \"/* Utility Styles */\\n#aculistWidgetRoot {\\n text-align: center;\\n min-height: calc(100vh - 293px);\\n position: relative;\\n }\\n\\n #aculistWidgetRoot.aculist .section_container {\\n text-align: right;\\n}\\n\\n /* div[class^=\\\"section_container\\\"] > button[class^=\\\"copybtn\\\"] { text-align: right!important; } */\\n\\n #aculistWidgetRoot.aculist img.copybtn {\\n background-color: rgb(0,130,202);\\n color: white;\\n padding: .4%;\\n cursor: pointer;\\n \\n background-repeat: no-repeat;\\n background-position: center;\\n}\\n\\n#aculistWidgetRoot.aculist .d-inline-block {\\n display: inline-block!important;\\n}\\n\\n#aculistWidgetRoot.aculist .mx-auto {\\n margin: 0 auto;\\n}\\n\\n#aculistWidgetRoot.aculist .text-center {\\n text-align: center;\\n}\\n\\n#aculistWidgetRoot.aculist text.c3-axis-x-label {\\n font-style: oblique;\\n}\\n#aculistWidgetRoot.aculist text.c3-axis-y-label {\\n font-style: oblique;\\n}\\n#aculistWidgetRoot.aculist text.c3-axis-y2-label {\\n font-style: oblique;\\n}\\n\\n#aculistWidgetRoot.aculist p {\\n text-align: center;\\n}\\n\\n#aculistWidgetRoot.aculist .chartTitle {\\n padding: 0 0 12px 0; \\n color: black;\\n font-family: Roboto, 'Segoe UI', Tahoma, sans-serif;\\n font-size: 24px;\\n font-weight: bold; \\n /* -webkit-font-smoothing: antialiased;\\n text-transform: uppercase;\\n letter-spacing: .02em;\\n font-size:18px;\\n font-style: normal; */\\n}\\n\\n#aculistWidgetRoot.aculist .section_container {\\n padding: 1%;\\n margin-bottom: 25px;\\n box-shadow: 0 0 2px 2px rgb(217,218,208);\\n width: 100%;\\n \\n background-color: white;\\n}\\n\\n#aculistWidgetRoot.aculist button.btn.btn-secondary.active {\\n color: white!important;\\n background-color: gray!important;\\n background-image: none;\\n border-color: #adadad;\\n}\\n#aculistWidgetRoot.aculist #chart {\\n background: white;\\n margin: 1em auto;\\n}\\n#aculistWidgetRoot.aculist path.c3-line {\\n stroke-width: 3px; \\n}\\n\\n/* line.c3-axis-y {\\n fill: none;\\n stroke: blueviolet;\\n path.domain { stroke: white; }\\n.tick text { stroke: yellow; }\\n.c3-legend-item text { stroke: grey; }\\n} */\\n\\n#aculistWidgetRoot.aculist .c3 .c3-axis-y path, .c3 .c3-axis-y line {\\n stroke: transparent;\\n}\\n#aculistWidgetRoot.aculist .c3 .c3-axis-y2 path, .c3 .c3-axis-y2 line {\\n stroke: transparent;\\n}\\n/* #aculistWidgetRoot.aculist .c3 .c3-ygrid line {\\n stroke: blue;\\n} */\\n\\n/* #aculistWidgetRoot.aculist .c3-ygrid {\\n stroke: #70707a;\\n stroke-dasharray: 3 3; }\\n .c3-bar-region {\\n stroke-width: 2;\\n stroke-opacity: 0.7;\\n stroke-dasharray: 5 5;\\n fill-opacity: 0.3;\\n} */\\n\\n#aculistWidgetRoot.aculist .c3-bar-region._expanded_ {\\n fill-opacity: 0.5;\\n}\\n\\n#aculistWidgetRoot.aculist .c3-circle {\\n stroke:none; \\n}\\n\\n/* Widget Loading Spinner */\\n#aculistWidgetRoot.aculist .markettrends.loading .chart-body{\\n visibility: hidden!important;\\n}\\n\\n#aculistWidgetRoot.aculist .markettrends.loading .chart-body svg {\\nopacity: 0!important;\\n}\\n\\n/* .markettrends.loading:after {\\n content: \\\"Loading...\\\";\\n display:block;\\n position: absolute;\\n top: 35%;\\n left: 45%;\\n} */\\n\\n#aculistWidgetRoot.aculist .loader,\\n#aculistWidgetRoot.aculist .loader:after {\\n border-radius: 50%;\\n width: 10em;\\n height: 10em;\\n}\\n#aculistWidgetRoot.aculist .loader {\\n margin: 60px auto;\\n font-size: 5px;\\n position: relative;\\n text-indent: -9999em;\\n border-top: 1.1em solid RGB(0,130,202);\\n border-right: 1.1em solid RGB(0,130,202);\\n border-bottom: 1.1em solid RGB(0,130,202);\\n border-left: 1.1em solid #ffffff;\\n -webkit-transform: translateZ(0);\\n -ms-transform: translateZ(0);\\n transform: translateZ(0);\\n -webkit-animation: load8 1.1s infinite linear;\\n animation: load8 1.1s infinite linear;\\n\\n}\\n\\n@-webkit-keyframes load8 {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes load8 {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n\\n#aculistWidgetRoot.aculist .c3-axis .tick line {display: none;}\\n#aculistWidgetRoot.aculist .c3-area {\\n opacity: 1 !important;\\n}\\n\\n#widget-container, #widgetChartContainer {\\n max-width: 960px;\\n}\\n\\n.widgetContainer, .widgetHolder {\\n min-height: 400px;\\n}\\n\\n#aculistWidgetRoot.aculist .d-block {\\n display: block!important;\\n line-height: 1.5\\n}\\n\\n/* #aculistWidgetRoot.aculist .c3-axis-y text {\\n fill:#70707a;\\n\\n}\\n#aculistWidgetRoot.aculist .c3-axis-x text {\\n \\n fill:#70707a;\\n} \\n#aculistWidgetRoot.aculist .c3-axis-y2 text {\\n \\n fill:#70707a;\\n}*/\\n\\n#aculistWidgetRoot.aculist h2 {\\n display: block;\\n \\n -webkit-margin-before: 0.83em;\\n -webkit-margin-after: 0.83em;\\n -webkit-margin-start: 0px;\\n -webkit-margin-end: 0px;\\n font-weight: bold;\\n}\\n#aculistWidgetRoot.aculist .chartShare\\n{\\ndisplay:block;\\nposition: absolute;\\ntop:25%;\\nleft:18%;\\nbackground-color: transparent;\\n\\n\\n}\\n#aculistWidgetRoot.aculist .h4, h4 {\\n font-size: .5rem;\\n font-weight: 800;\\n}\\n/* #aculistWidgetRoot.aculist .attribution-img {\\n position: relative;\\n top: -20px;\\n left: 75px;\\n} */\\n#aculistWidgetRoot.aculist .attribution-label {\\n line-height: 21px;\\n font-size: 11px;\\n}\\n@media screen and (max-width: 750px) and (orientation: landscape) {\\n #aculistWidgetRoot.aculist .section_container {\\n width: calc(100% - 2rem);\\n margin: 0 1rem;\\n margin-bottom: 1rem;\\n }\\n \\n #aculistWidgetRoot.aculist .section_container .c3 {\\n max-height: 300px!important;\\n }\\n \\n #aculistWidgetRoot.aculist .section_container svg {\\n min-height: 300px!important;\\n font: 8px sans-serif;\\n }\\n \\n #aculistWidgetRoot.aculist .c3-legend-item {\\n font-size: 10px;\\n }\\n\\n #aculistWidgetRoot.aculist .chartTitle {\\n font-size: 1rem;\\n }\\n \\n \\n #aculistWidgetRoot.aculist .c3-axis-x-label {\\n text-anchor: end;\\n transform: translate(10px, 10px);\\n }\\n }\\n @media screen and (max-width: 600px) {\\n #aculistWidgetRoot.aculist .section_container {\\n width: calc(100% - 2rem);\\n margin: 0 1rem;\\n }\\n \\n #aculistWidgetRoot.aculist .section_container .c3 {\\n max-height: 400px!important;\\n }\\n \\n #aculistWidgetRoot.aculist .section_container svg {\\n min-height: 400px!important;\\n font: 8px sans-serif;\\n }\\n \\n #aculistWidgetRoot.aculist .c3-legend-item {\\n font-size: 10px;\\n \\n }\\n \\n \\n \\n #aculistWidgetRoot.aculist .c3-axis-x-label {\\n text-anchor: end;\\n transform: translate(10px, 10px);\\n }\\n }\\n \\n @media screen and (max-width: 450px) {\\n #aculistWidgetRoot.aculist .section_container {\\n width: 100%;\\n margin: 0;\\n }\\n #aculistWidgetRoot.aculist .c3-axis-x .tick * {\\n font-size:6px;\\n }\\n }\\n\\n #aculistWidgetRoot.aculist .hidden {\\n display: none!important;\\n visibility: hidden!important;\\n}\\n \\n/*Computed styles for canvas to Image*/\\n\\n\\n#chartCopyHolder .title {\\n \\n padding-top: \\n 20px;\\n \\n }\\n \\n \\n \\n #chartCopyHolder .copybtn {\\n \\n display: \\n none;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 .text-center {\\n \\n text-align: \\n center;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 text.c3-axis-x-label {\\n \\n font-style: \\n oblique;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 text.c3-axis-y-label {\\n \\n font-style: \\n oblique;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 text.c3-axis-y2-label {\\n \\n font-style: \\n oblique;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 .c3-axis-y path, .c3 .c3-axis-y line {\\n \\n stroke: transparent;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 .c3-axis-y2 path, .c3 .c3-axis-y2 line {\\n \\n stroke: transparent;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 .c3-bar-region._expanded_ {\\n \\n fill-opacity: \\n 0.5;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 .c3-circle {\\n \\n stroke:none;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 {\\n \\n font: 10px\\n sans-serif;\\n \\n -webkit-tap-highlight-color: \\n transparent; \\n \\n }\\n \\n div#chartCopyHolder .section_container {\\n padding-left: 0!important;\\n padding-right: 0!important;\\n position: relative;\\n} \\n \\n \\n\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 120 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_defaultLocale__ = __webpack_require__(121);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"formatDefaultLocale\", function() { return __WEBPACK_IMPORTED_MODULE_0__src_defaultLocale__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return __WEBPACK_IMPORTED_MODULE_0__src_defaultLocale__[\"b\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"formatPrefix\", function() { return __WEBPACK_IMPORTED_MODULE_0__src_defaultLocale__[\"c\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_locale__ = __webpack_require__(65);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"formatLocale\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_locale__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_formatSpecifier__ = __webpack_require__(63);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"formatSpecifier\", function() { return __WEBPACK_IMPORTED_MODULE_2__src_formatSpecifier__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_precisionFixed__ = __webpack_require__(127);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"precisionFixed\", function() { return __WEBPACK_IMPORTED_MODULE_3__src_precisionFixed__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_precisionPrefix__ = __webpack_require__(128);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"precisionPrefix\", function() { return __WEBPACK_IMPORTED_MODULE_4__src_precisionPrefix__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_precisionRound__ = __webpack_require__(129);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"precisionRound\", function() { return __WEBPACK_IMPORTED_MODULE_5__src_precisionRound__[\"a\"]; });\n\n\n\n\n\n\n\n\n/***/ }),\n/* 121 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return formatPrefix; });\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = defaultLocale;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__locale__ = __webpack_require__(65);\n\n\nvar locale;\nvar format;\nvar formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nfunction defaultLocale(definition) {\n locale = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__locale__[\"a\" /* default */])(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n\n\n/***/ }),\n/* 122 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(x, p) {\n x = x.toPrecision(p);\n\n out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (x[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n case \"e\": break out;\n default: if (i0 > 0) i0 = 0; break;\n }\n }\n\n return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n});\n\n\n/***/ }),\n/* 123 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n});\n\n\n/***/ }),\n/* 124 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n});\n\n\n/***/ }),\n/* 125 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__formatDecimal__ = __webpack_require__(32);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(x, p) {\n var d = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__formatDecimal__[\"a\" /* default */])(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n});\n\n\n/***/ }),\n/* 126 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(x) {\n return x;\n});\n\n\n/***/ }),\n/* 127 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__exponent__ = __webpack_require__(25);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(step) {\n return Math.max(0, -__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__exponent__[\"a\" /* default */])(Math.abs(step)));\n});\n\n\n/***/ }),\n/* 128 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__exponent__ = __webpack_require__(25);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__exponent__[\"a\" /* default */])(value) / 3))) * 3 - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__exponent__[\"a\" /* default */])(Math.abs(step)));\n});\n\n\n/***/ }),\n/* 129 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__exponent__ = __webpack_require__(25);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__exponent__[\"a\" /* default */])(max) - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__exponent__[\"a\" /* default */])(step)) + 1;\n});\n\n\n/***/ }),\n/* 130 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_creator__ = __webpack_require__(33);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"creator\", function() { return __WEBPACK_IMPORTED_MODULE_0__src_creator__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_local__ = __webpack_require__(132);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"local\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_local__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_matcher__ = __webpack_require__(66);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"matcher\", function() { return __WEBPACK_IMPORTED_MODULE_2__src_matcher__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_mouse__ = __webpack_require__(133);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"mouse\", function() { return __WEBPACK_IMPORTED_MODULE_3__src_mouse__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_namespace__ = __webpack_require__(34);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"namespace\", function() { return __WEBPACK_IMPORTED_MODULE_4__src_namespace__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_namespaces__ = __webpack_require__(35);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"namespaces\", function() { return __WEBPACK_IMPORTED_MODULE_5__src_namespaces__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_select__ = __webpack_require__(134);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"select\", function() { return __WEBPACK_IMPORTED_MODULE_6__src_select__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__src_selectAll__ = __webpack_require__(135);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"selectAll\", function() { return __WEBPACK_IMPORTED_MODULE_7__src_selectAll__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__src_selection_index__ = __webpack_require__(6);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"selection\", function() { return __WEBPACK_IMPORTED_MODULE_8__src_selection_index__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__src_selector__ = __webpack_require__(38);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"selector\", function() { return __WEBPACK_IMPORTED_MODULE_9__src_selector__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__src_selectorAll__ = __webpack_require__(70);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"selectorAll\", function() { return __WEBPACK_IMPORTED_MODULE_10__src_selectorAll__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__src_selection_style__ = __webpack_require__(69);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"style\", function() { return __WEBPACK_IMPORTED_MODULE_11__src_selection_style__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__src_touch__ = __webpack_require__(162);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"touch\", function() { return __WEBPACK_IMPORTED_MODULE_12__src_touch__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__src_touches__ = __webpack_require__(163);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"touches\", function() { return __WEBPACK_IMPORTED_MODULE_13__src_touches__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__src_window__ = __webpack_require__(40);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"window\", function() { return __WEBPACK_IMPORTED_MODULE_14__src_window__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__src_selection_on__ = __webpack_require__(37);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"event\", function() { return __WEBPACK_IMPORTED_MODULE_15__src_selection_on__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"customEvent\", function() { return __WEBPACK_IMPORTED_MODULE_15__src_selection_on__[\"b\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/***/ }),\n/* 131 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(x) {\n return function() {\n return x;\n };\n});\n\n\n/***/ }),\n/* 132 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = local;\nvar nextId = 0;\n\nfunction local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n\n\n/***/ }),\n/* 133 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sourceEvent__ = __webpack_require__(39);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__point__ = __webpack_require__(36);\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(node) {\n var event = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sourceEvent__[\"a\" /* default */])();\n if (event.changedTouches) event = event.changedTouches[0];\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__point__[\"a\" /* default */])(node, event);\n});\n\n\n/***/ }),\n/* 134 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__selection_index__ = __webpack_require__(6);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(selector) {\n return typeof selector === \"string\"\n ? new __WEBPACK_IMPORTED_MODULE_0__selection_index__[\"b\" /* Selection */]([[document.querySelector(selector)]], [document.documentElement])\n : new __WEBPACK_IMPORTED_MODULE_0__selection_index__[\"b\" /* Selection */]([[selector]], __WEBPACK_IMPORTED_MODULE_0__selection_index__[\"c\" /* root */]);\n});\n\n\n/***/ }),\n/* 135 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__selection_index__ = __webpack_require__(6);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(selector) {\n return typeof selector === \"string\"\n ? new __WEBPACK_IMPORTED_MODULE_0__selection_index__[\"b\" /* Selection */]([document.querySelectorAll(selector)], [document.documentElement])\n : new __WEBPACK_IMPORTED_MODULE_0__selection_index__[\"b\" /* Selection */]([selector == null ? [] : selector], __WEBPACK_IMPORTED_MODULE_0__selection_index__[\"c\" /* root */]);\n});\n\n\n/***/ }),\n/* 136 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__creator__ = __webpack_require__(33);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(name) {\n var create = typeof name === \"function\" ? name : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__creator__[\"a\" /* default */])(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n});\n\n\n/***/ }),\n/* 137 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__namespace__ = __webpack_require__(34);\n\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(name, value) {\n var fullname = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__namespace__[\"a\" /* default */])(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n});\n\n\n/***/ }),\n/* 138 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n});\n\n\n/***/ }),\n/* 139 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n});\n\n\n/***/ }),\n/* 140 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__enter__ = __webpack_require__(67);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constant__ = __webpack_require__(131);\n\n\n\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new __WEBPACK_IMPORTED_MODULE_1__enter__[\"b\" /* EnterNode */](parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new __WEBPACK_IMPORTED_MODULE_1__enter__[\"b\" /* EnterNode */](parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__constant__[\"a\" /* default */])(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new __WEBPACK_IMPORTED_MODULE_0__index__[\"b\" /* Selection */](update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n});\n\n\n/***/ }),\n/* 141 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n});\n\n\n/***/ }),\n/* 142 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__window__ = __webpack_require__(40);\n\n\nfunction dispatchEvent(node, type, params) {\n var window = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__window__[\"a\" /* default */])(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n});\n\n\n/***/ }),\n/* 143 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n});\n\n\n/***/ }),\n/* 144 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function() {\n return !this.node();\n});\n\n\n/***/ }),\n/* 145 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sparse__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__index__ = __webpack_require__(6);\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function() {\n return new __WEBPACK_IMPORTED_MODULE_1__index__[\"b\" /* Selection */](this._exit || this._groups.map(__WEBPACK_IMPORTED_MODULE_0__sparse__[\"a\" /* default */]), this._parents);\n});\n\n\n/***/ }),\n/* 146 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__matcher__ = __webpack_require__(66);\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(match) {\n if (typeof match !== \"function\") match = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__matcher__[\"a\" /* default */])(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new __WEBPACK_IMPORTED_MODULE_0__index__[\"b\" /* Selection */](subgroups, this._parents);\n});\n\n\n/***/ }),\n/* 147 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n});\n\n\n/***/ }),\n/* 148 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__creator__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__selector__ = __webpack_require__(38);\n\n\n\nfunction constantNull() {\n return null;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(name, before) {\n var create = typeof name === \"function\" ? name : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__creator__[\"a\" /* default */])(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__selector__[\"a\" /* default */])(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n});\n\n\n/***/ }),\n/* 149 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function() {\n return this.each(lower);\n});\n\n\n/***/ }),\n/* 150 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(6);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new __WEBPACK_IMPORTED_MODULE_0__index__[\"b\" /* Selection */](merges, this._parents);\n});\n\n\n/***/ }),\n/* 151 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n});\n\n\n/***/ }),\n/* 152 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n});\n\n\n/***/ }),\n/* 153 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n});\n\n\n/***/ }),\n/* 154 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n});\n\n\n/***/ }),\n/* 155 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function() {\n return this.each(raise);\n});\n\n\n/***/ }),\n/* 156 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function() {\n return this.each(remove);\n});\n\n\n/***/ }),\n/* 157 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__selector__ = __webpack_require__(38);\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(select) {\n if (typeof select !== \"function\") select = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__selector__[\"a\" /* default */])(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new __WEBPACK_IMPORTED_MODULE_0__index__[\"b\" /* Selection */](subgroups, this._parents);\n});\n\n\n/***/ }),\n/* 158 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__selectorAll__ = __webpack_require__(70);\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(select) {\n if (typeof select !== \"function\") select = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__selectorAll__[\"a\" /* default */])(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new __WEBPACK_IMPORTED_MODULE_0__index__[\"b\" /* Selection */](subgroups, parents);\n});\n\n\n/***/ }),\n/* 159 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n});\n\n\n/***/ }),\n/* 160 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(6);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new __WEBPACK_IMPORTED_MODULE_0__index__[\"b\" /* Selection */](sortgroups, this._parents).order();\n});\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\n\n/***/ }),\n/* 161 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n});\n\n\n/***/ }),\n/* 162 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sourceEvent__ = __webpack_require__(39);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__point__ = __webpack_require__(36);\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sourceEvent__[\"a\" /* default */])().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__point__[\"a\" /* default */])(node, touch);\n }\n }\n\n return null;\n});\n\n\n/***/ }),\n/* 163 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sourceEvent__ = __webpack_require__(39);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__point__ = __webpack_require__(36);\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function(node, touches) {\n if (touches == null) touches = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sourceEvent__[\"a\" /* default */])().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__point__[\"a\" /* default */])(node, touches[i]);\n }\n\n return points;\n});\n\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n\n\nvar camelize = __webpack_require__(164);\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nvar isTextNode = __webpack_require__(174);\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? false ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n\n !(typeof length === 'number') ? false ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n\n !(length === 0 || length - 1 in obj) ? false ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n\n !(typeof obj.callee !== 'function') ? false ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;\n\n // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\n\n // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj && (\n // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') &&\n // quacks like an array\n 'length' in obj &&\n // not window\n !('setInterval' in obj) &&\n // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && (\n // a real array\n Array.isArray(obj) ||\n // arguments\n 'callee' in obj ||\n // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar createArrayFromMixed = __webpack_require__(167);\nvar getMarkupWrap = __webpack_require__(169);\nvar invariant = __webpack_require__(0);\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * <script> element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any <script> elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered <script>.\n * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n */\nfunction createNodesFromMarkup(markup, handleScript) {\n var node = dummyNode;\n !!!dummyNode ? false ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;\n var nodeName = getNodeName(markup);\n\n var wrap = nodeName && getMarkupWrap(nodeName);\n if (wrap) {\n node.innerHTML = wrap[1] + markup + wrap[2];\n\n var wrapDepth = wrap[0];\n while (wrapDepth--) {\n node = node.lastChild;\n }\n } else {\n node.innerHTML = markup;\n }\n\n var scripts = node.getElementsByTagName('script');\n if (scripts.length) {\n !handleScript ? false ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;\n createArrayFromMixed(scripts).forEach(handleScript);\n }\n\n var nodes = Array.from(node.childNodes);\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/*eslint-disable fb-www/unsafe-html */\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Dummy container used to detect which wraps are necessary.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n */\n\nvar shouldWrap = {};\n\nvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\nvar tableWrap = [1, '<table>', '</table>'];\nvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\nvar svgWrap = [1, '<svg xmlns=\"http://www.w3.org/2000/svg\">', '</svg>'];\n\nvar markupWrap = {\n '*': [1, '?<div>', '</div>'],\n\n 'area': [1, '<map>', '</map>'],\n 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n 'legend': [1, '<fieldset>', '</fieldset>'],\n 'param': [1, '<object>', '</object>'],\n 'tr': [2, '<table><tbody>', '</tbody></table>'],\n\n 'optgroup': selectWrap,\n 'option': selectWrap,\n\n 'caption': tableWrap,\n 'colgroup': tableWrap,\n 'tbody': tableWrap,\n 'tfoot': tableWrap,\n 'thead': tableWrap,\n\n 'td': trWrap,\n 'th': trWrap\n};\n\n// Initialize the SVG elements since we know they'll always need to be wrapped\n// consistently. If they are created inside a <div> they will be initialized in\n// the wrong namespace (and will not display).\nvar svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];\nsvgElements.forEach(function (nodeName) {\n markupWrap[nodeName] = svgWrap;\n shouldWrap[nodeName] = true;\n});\n\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\nfunction getMarkupWrap(nodeName) {\n !!!dummyNode ? false ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;\n if (!markupWrap.hasOwnProperty(nodeName)) {\n nodeName = '*';\n }\n if (!shouldWrap.hasOwnProperty(nodeName)) {\n if (nodeName === '*') {\n dummyNode.innerHTML = '<link />';\n } else {\n dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n }\n shouldWrap[nodeName] = !dummyNode.firstChild;\n }\n return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\nmodule.exports = getMarkupWrap;\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n\n\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n\n\nvar hyphenate = __webpack_require__(171);\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar isNode = __webpack_require__(173);\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n\n\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(42),\n getRawTag = __webpack_require__(180),\n objectToString = __webpack_require__(181);\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(42),\n arrayMap = __webpack_require__(176),\n isArray = __webpack_require__(183),\n isSymbol = __webpack_require__(185);\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\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 (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\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\nmodule.exports = baseToString;\n\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(60)))\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(42);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar freeGlobal = __webpack_require__(179);\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\nmodule.exports = root;\n\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports) {\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\nmodule.exports = isArray;\n\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports) {\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 != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(177),\n isObjectLike = __webpack_require__(184);\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\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) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, module) {var __WEBPACK_AMD_DEFINE_RESULT__;/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.4';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var 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 empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var 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 */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:(?:1st|2nd|3rd|(?![123])\\\\dth)\\\\b)',\n rsOrdUpper = '\\\\d*(?:(?:1ST|2ND|3RD|(?![123])\\\\dTH)\\\\b)',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\n function addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n }\n\n /**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\n function addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n }\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` 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 * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` 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 * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee 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 all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\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 */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\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 `_.reduceRight` 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 last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, 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 */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` 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 * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\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 */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\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 */\n function 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 `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` 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 * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\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 */\n function 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 `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\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 */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\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 */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\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 */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\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 */\n function 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 */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\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 */\n function 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 /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\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 */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var 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. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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 */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\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 */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\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 */\n function 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 */\n function 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 */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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 */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\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 */\n function 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 --this.size;\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 */\n function 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 */\n function 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 */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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 */\n function mapCacheClear() {\n this.size = 0;\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 */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\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 */\n function 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 */\n function 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 */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\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 */\n function 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 */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\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 */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\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 */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\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 */\n function 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 */\n function 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 */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\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 */\n function 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 * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\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 */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` 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 */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\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 */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\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 */\n var baseForRight = createBaseFor(true);\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 */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` 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 */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\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 */\n function baseGet(object, path) {\n path = castPath(path, object);\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 `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` 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 */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\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 */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\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 {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, 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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_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, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\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 */\n function 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, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, 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 */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\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 */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(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 */\n function 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 */\n function 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 `_.keysIn` 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 */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` 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} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\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 */\n function 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 */\n function 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, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(object[key], srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = object[key],\n srcValue = source[key],\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\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 */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection 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 */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\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 */\n function 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 (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\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 * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\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 * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\n function cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), CLONE_DEEP_FLAG) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\n function cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), CLONE_DEEP_FLAG) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\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 */\n function 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 */\n function 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 * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_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 & COMPARE_UNORDERED_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 (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, 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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, 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 & COMPARE_PARTIAL_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 |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, 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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(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, bitmask, customizer, 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 * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : 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 */\n function 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 */\n function 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 */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\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 */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((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 = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\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 * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\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 */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\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 || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\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 */\n function 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 the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\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 */\n function 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 */\n function 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 a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\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 */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\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 */\n function 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 */\n function 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 */\n function 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 * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\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 */\n var stringToPath = memoizeCapped(function(string) {\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 */\n function 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 convert.\n * @returns {string} Returns the source code.\n */\n function 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 * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\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} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\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} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.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 * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.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 * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.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 {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\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 iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\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 * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\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 */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\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 _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\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} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\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} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\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|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\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 `clear`, `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 */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && 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) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\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 */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= 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 */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\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 */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\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 */\n function 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 */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or 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 boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\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 DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.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 * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\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 * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\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 an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(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 */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\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 integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\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 */\n function 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 */\n function isObject(value) {\n var type = typeof value;\n return value != null && (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 */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\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 native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\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 nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` 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 regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\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 safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\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 */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(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 */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is 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 convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\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 convert.\n * @returns {string} Returns the converted 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 */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(args) {\n args.push(undefined, customDefaultsAssignIn);\n return apply(assignInWith, undefined, args);\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\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 */\n function 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 property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\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 = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\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 */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` 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 of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\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 */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\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 * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\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 values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n var sourceURL = '//# sourceURL=' +\n ('sourceURL' in options\n ? options.sourceURL\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimEnd, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\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 */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|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 * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n */\n var overSome = createOver(arraySome);\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 */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = (lodashFunc.name + ''),\n names = realNames[key] || (realNames[key] = []);\n\n names.push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (true) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n !(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n return _;\n }.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(60), __webpack_require__(104)(module)))\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseToString = __webpack_require__(178);\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 convert.\n * @returns {string} Returns the converted 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\nmodule.exports = toString;\n\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toString = __webpack_require__(187);\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (false) {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (false) {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n/***/ }),\n/* 190 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar emptyFunction = __webpack_require__(7);\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\nvar assign = __webpack_require__(3);\n\nvar ReactPropTypesSecret = __webpack_require__(191);\nvar checkPropTypes = __webpack_require__(189);\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (false) {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (false) {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n false ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n false ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n/***/ }),\n/* 191 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n/***/ }),\n/* 192 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ARIADOMPropertyConfig = {\n Properties: {\n // Global States and Properties\n 'aria-current': 0, // state\n 'aria-details': 0,\n 'aria-disabled': 0, // state\n 'aria-hidden': 0, // state\n 'aria-invalid': 0, // state\n 'aria-keyshortcuts': 0,\n 'aria-label': 0,\n 'aria-roledescription': 0,\n // Widget Attributes\n 'aria-autocomplete': 0,\n 'aria-checked': 0,\n 'aria-expanded': 0,\n 'aria-haspopup': 0,\n 'aria-level': 0,\n 'aria-modal': 0,\n 'aria-multiline': 0,\n 'aria-multiselectable': 0,\n 'aria-orientation': 0,\n 'aria-placeholder': 0,\n 'aria-pressed': 0,\n 'aria-readonly': 0,\n 'aria-required': 0,\n 'aria-selected': 0,\n 'aria-sort': 0,\n 'aria-valuemax': 0,\n 'aria-valuemin': 0,\n 'aria-valuenow': 0,\n 'aria-valuetext': 0,\n // Live Region Attributes\n 'aria-atomic': 0,\n 'aria-busy': 0,\n 'aria-live': 0,\n 'aria-relevant': 0,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': 0,\n 'aria-grabbed': 0,\n // Relationship Attributes\n 'aria-activedescendant': 0,\n 'aria-colcount': 0,\n 'aria-colindex': 0,\n 'aria-colspan': 0,\n 'aria-controls': 0,\n 'aria-describedby': 0,\n 'aria-errormessage': 0,\n 'aria-flowto': 0,\n 'aria-labelledby': 0,\n 'aria-owns': 0,\n 'aria-posinset': 0,\n 'aria-rowcount': 0,\n 'aria-rowindex': 0,\n 'aria-rowspan': 0,\n 'aria-setsize': 0\n },\n DOMAttributeNames: {},\n DOMPropertyNames: {}\n};\n\nmodule.exports = ARIADOMPropertyConfig;\n\n/***/ }),\n/* 193 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ReactDOMComponentTree = __webpack_require__(4);\n\nvar focusNode = __webpack_require__(72);\n\nvar AutoFocusUtils = {\n focusDOMComponent: function () {\n focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n }\n};\n\nmodule.exports = AutoFocusUtils;\n\n/***/ }),\n/* 194 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar EventPropagators = __webpack_require__(21);\nvar ExecutionEnvironment = __webpack_require__(5);\nvar FallbackCompositionState = __webpack_require__(200);\nvar SyntheticCompositionEvent = __webpack_require__(237);\nvar SyntheticInputEvent = __webpack_require__(240);\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: 'onBeforeInput',\n captured: 'onBeforeInputCapture'\n },\n dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionEnd',\n captured: 'onCompositionEndCapture'\n },\n dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionStart',\n captured: 'onCompositionStartCapture'\n },\n dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionUpdate',\n captured: 'onCompositionUpdateCapture'\n },\n dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case 'topCompositionStart':\n return eventTypes.compositionStart;\n case 'topCompositionEnd':\n return eventTypes.compositionEnd;\n case 'topCompositionUpdate':\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topKeyUp':\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n case 'topKeyDown':\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n case 'topKeyPress':\n case 'topMouseDown':\n case 'topBlur':\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n if (typeof detail === 'object' && 'data' in detail) {\n return detail.data;\n }\n return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topCompositionEnd':\n return getDataFromCustomEvent(nativeEvent);\n case 'topKeyPress':\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case 'topTextInput':\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n // If composition event is available, we extract a string only at\n // compositionevent, otherwise extract it at fallback events.\n if (currentComposition) {\n if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n return null;\n }\n\n switch (topLevelType) {\n case 'topPaste':\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n case 'topKeyPress':\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case 'topCompositionEnd':\n return useFallbackCompositionData ? null : nativeEvent.data;\n default:\n return null;\n }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;\n\n/***/ }),\n/* 195 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar CSSProperty = __webpack_require__(75);\nvar ExecutionEnvironment = __webpack_require__(5);\nvar ReactInstrumentation = __webpack_require__(8);\n\nvar camelizeStyleName = __webpack_require__(165);\nvar dangerousStyleValue = __webpack_require__(246);\nvar hyphenateStyleName = __webpack_require__(172);\nvar memoizeStringOnly = __webpack_require__(175);\nvar warning = __webpack_require__(1);\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar hasShorthandPropertyBug = false;\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n var tempStyle = document.createElement('div').style;\n try {\n // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n tempStyle.font = '';\n } catch (e) {\n hasShorthandPropertyBug = true;\n }\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (false) {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n\n var warnHyphenatedStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n };\n\n var warnBadVendoredStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n };\n\n var warnStyleValueWithSemicolon = function (name, value, owner) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, \"Style property values shouldn't contain a semicolon.%s \" + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;\n };\n\n var warnStyleValueIsNaN = function (name, value, owner) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;\n };\n\n var checkRenderMessage = function (owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n };\n\n /**\n * @param {string} name\n * @param {*} value\n * @param {ReactDOMComponent} component\n */\n var warnValidStyle = function (name, value, component) {\n var owner;\n if (component) {\n owner = component._currentElement._owner;\n }\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name, owner);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name, owner);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value, owner);\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n warnStyleValueIsNaN(name, value, owner);\n }\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @param {ReactDOMComponent} component\n * @return {?string}\n */\n createMarkupForStyles: function (styles, component) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var isCustomProperty = styleName.indexOf('--') === 0;\n var styleValue = styles[styleName];\n if (false) {\n if (!isCustomProperty) {\n warnValidStyle(styleName, styleValue, component);\n }\n }\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, component, isCustomProperty) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n * @param {ReactDOMComponent} component\n */\n setValueForStyles: function (node, styles, component) {\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: component._debugID,\n type: 'update styles',\n payload: styles\n });\n }\n\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var isCustomProperty = styleName.indexOf('--') === 0;\n if (false) {\n if (!isCustomProperty) {\n warnValidStyle(styleName, styles[styleName], component);\n }\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName], component, isCustomProperty);\n if (styleName === 'float' || styleName === 'cssFloat') {\n styleName = styleFloatAccessor;\n }\n if (isCustomProperty) {\n style.setProperty(styleName, styleValue);\n } else if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n};\n\nmodule.exports = CSSPropertyOperations;\n\n/***/ }),\n/* 196 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar EventPluginHub = __webpack_require__(20);\nvar EventPropagators = __webpack_require__(21);\nvar ExecutionEnvironment = __webpack_require__(5);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactUpdates = __webpack_require__(9);\nvar SyntheticEvent = __webpack_require__(10);\n\nvar inputValueTracking = __webpack_require__(91);\nvar getEventTarget = __webpack_require__(56);\nvar isEventSupported = __webpack_require__(57);\nvar isTextInputElement = __webpack_require__(93);\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: 'onChange',\n captured: 'onChangeCapture'\n },\n dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n }\n};\n\nfunction createAndAccumulateChangeEvent(inst, nativeEvent, target) {\n var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, target);\n event.type = 'change';\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = createAndAccumulateChangeEvent(activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue(false);\n}\n\nfunction startWatchingForChangeEventIE8(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementInst = null;\n}\n\nfunction getInstIfValueChanged(targetInst, nativeEvent) {\n var updated = inputValueTracking.updateValueIfChanged(targetInst);\n var simulated = nativeEvent.simulated === true && ChangeEventPlugin._allowSimulatedPassThrough;\n\n if (updated || simulated) {\n return targetInst;\n }\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n if (topLevelType === 'topChange') {\n return targetInst;\n }\n}\n\nfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForChangeEventIE8();\n }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n\n isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9);\n}\n\n/**\n * (For IE <=9) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n}\n\n/**\n * (For IE <=9) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n\n activeElement = null;\n activeElementInst = null;\n}\n\n/**\n * (For IE <=9) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n if (getInstIfValueChanged(activeElementInst, nativeEvent)) {\n manualDispatchChangeEvent(nativeEvent);\n }\n}\n\nfunction handleEventsForInputEventPolyfill(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventPolyfill(topLevelType, targetInst, nativeEvent) {\n if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n return getInstIfValueChanged(activeElementInst, nativeEvent);\n }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n var nodeName = elem.nodeName;\n return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst, nativeEvent) {\n if (topLevelType === 'topClick') {\n return getInstIfValueChanged(targetInst, nativeEvent);\n }\n}\n\nfunction getTargetInstForInputOrChangeEvent(topLevelType, targetInst, nativeEvent) {\n if (topLevelType === 'topInput' || topLevelType === 'topChange') {\n return getInstIfValueChanged(targetInst, nativeEvent);\n }\n}\n\nfunction handleControlledInputBlur(inst, node) {\n // TODO: In IE, inst is occasionally null. Why?\n if (inst == null) {\n return;\n }\n\n // Fiber and ReactDOM keep wrapper state in separate places\n var state = inst._wrapperState || node._wrapperState;\n\n if (!state || !state.controlled || node.type !== 'number') {\n return;\n }\n\n // If controlled, assign the value attribute to the current value on blur\n var value = '' + node.value;\n if (node.getAttribute('value') !== value) {\n node.setAttribute('value', value);\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n eventTypes: eventTypes,\n\n _allowSimulatedPassThrough: true,\n _isInputEventSupported: isInputEventSupported,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n var getTargetInstFunc, handleEventFunc;\n if (shouldUseChangeEvent(targetNode)) {\n if (doesChangeEventBubble) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n handleEventFunc = handleEventsForInputEventPolyfill;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n }\n\n if (getTargetInstFunc) {\n var inst = getTargetInstFunc(topLevelType, targetInst, nativeEvent);\n if (inst) {\n var event = createAndAccumulateChangeEvent(inst, nativeEvent, nativeEventTarget);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(topLevelType, targetNode, targetInst);\n }\n\n // When blurring, set the value attribute for number inputs\n if (topLevelType === 'topBlur') {\n handleControlledInputBlur(targetInst, targetNode);\n }\n }\n};\n\nmodule.exports = ChangeEventPlugin;\n\n/***/ }),\n/* 197 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar DOMLazyTree = __webpack_require__(14);\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar createNodesFromMarkup = __webpack_require__(168);\nvar emptyFunction = __webpack_require__(7);\nvar invariant = __webpack_require__(0);\n\nvar Danger = {\n /**\n * Replaces a node with a string of markup at its current position within its\n * parent. The markup must render into a single root node.\n *\n * @param {DOMElement} oldChild Child node to replace.\n * @param {string} markup Markup to render in place of the child node.\n * @internal\n */\n dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {\n !ExecutionEnvironment.canUseDOM ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;\n !markup ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;\n !(oldChild.nodeName !== 'HTML') ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;\n\n if (typeof markup === 'string') {\n var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n oldChild.parentNode.replaceChild(newChild, oldChild);\n } else {\n DOMLazyTree.replaceChildWithTree(oldChild, markup);\n }\n }\n};\n\nmodule.exports = Danger;\n\n/***/ }),\n/* 198 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\nvar DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\nmodule.exports = DefaultEventPluginOrder;\n\n/***/ }),\n/* 199 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar EventPropagators = __webpack_require__(21);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar SyntheticMouseEvent = __webpack_require__(28);\n\nvar eventTypes = {\n mouseEnter: {\n registrationName: 'onMouseEnter',\n dependencies: ['topMouseOut', 'topMouseOver']\n },\n mouseLeave: {\n registrationName: 'onMouseLeave',\n dependencies: ['topMouseOut', 'topMouseOver']\n }\n};\n\nvar EnterLeaveEventPlugin = {\n eventTypes: eventTypes,\n\n /**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n return null;\n }\n if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n // Must not be a mouse in or mouse out - ignoring.\n return null;\n }\n\n var win;\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = nativeEventTarget.ownerDocument;\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from;\n var to;\n if (topLevelType === 'topMouseOut') {\n from = targetInst;\n var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return null;\n }\n\n var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n\n var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n leave.type = 'mouseleave';\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n\n var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n enter.type = 'mouseenter';\n enter.target = toNode;\n enter.relatedTarget = fromNode;\n\n EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n return [leave, enter];\n }\n};\n\nmodule.exports = EnterLeaveEventPlugin;\n\n/***/ }),\n/* 200 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar PooledClass = __webpack_require__(13);\n\nvar getTextContentAccessor = __webpack_require__(90);\n\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n this._root = root;\n this._startText = this.getText();\n this._fallbackText = null;\n}\n\n_assign(FallbackCompositionState.prototype, {\n destructor: function () {\n this._root = null;\n this._startText = null;\n this._fallbackText = null;\n },\n\n /**\n * Get current text of input.\n *\n * @return {string}\n */\n getText: function () {\n if ('value' in this._root) {\n return this._root.value;\n }\n return this._root[getTextContentAccessor()];\n },\n\n /**\n * Determine the differing substring between the initially stored\n * text content and the current content.\n *\n * @return {string}\n */\n getData: function () {\n if (this._fallbackText) {\n return this._fallbackText;\n }\n\n var start;\n var startValue = this._startText;\n var startLength = startValue.length;\n var end;\n var endValue = this.getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n this._fallbackText = endValue.slice(start, sliceTail);\n return this._fallbackText;\n }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\n\nmodule.exports = FallbackCompositionState;\n\n/***/ }),\n/* 201 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar DOMProperty = __webpack_require__(15);\n\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),\n Properties: {\n /**\n * Standard Properties\n */\n accept: 0,\n acceptCharset: 0,\n accessKey: 0,\n action: 0,\n allowFullScreen: HAS_BOOLEAN_VALUE,\n allowTransparency: 0,\n alt: 0,\n // specifies target context for links with `preload` type\n as: 0,\n async: HAS_BOOLEAN_VALUE,\n autoComplete: 0,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n capture: HAS_BOOLEAN_VALUE,\n cellPadding: 0,\n cellSpacing: 0,\n charSet: 0,\n challenge: 0,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n cite: 0,\n classID: 0,\n className: 0,\n cols: HAS_POSITIVE_NUMERIC_VALUE,\n colSpan: 0,\n content: 0,\n contentEditable: 0,\n contextMenu: 0,\n controls: HAS_BOOLEAN_VALUE,\n controlsList: 0,\n coords: 0,\n crossOrigin: 0,\n data: 0, // For `<object />` acts as `src`.\n dateTime: 0,\n 'default': HAS_BOOLEAN_VALUE,\n defer: HAS_BOOLEAN_VALUE,\n dir: 0,\n disabled: HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: 0,\n encType: 0,\n form: 0,\n formAction: 0,\n formEncType: 0,\n formMethod: 0,\n formNoValidate: HAS_BOOLEAN_VALUE,\n formTarget: 0,\n frameBorder: 0,\n headers: 0,\n height: 0,\n hidden: HAS_BOOLEAN_VALUE,\n high: 0,\n href: 0,\n hrefLang: 0,\n htmlFor: 0,\n httpEquiv: 0,\n icon: 0,\n id: 0,\n inputMode: 0,\n integrity: 0,\n is: 0,\n keyParams: 0,\n keyType: 0,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: HAS_BOOLEAN_VALUE,\n low: 0,\n manifest: 0,\n marginHeight: 0,\n marginWidth: 0,\n max: 0,\n maxLength: 0,\n media: 0,\n mediaGroup: 0,\n method: 0,\n min: 0,\n minLength: 0,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n name: 0,\n nonce: 0,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n playsInline: HAS_BOOLEAN_VALUE,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 0,\n readOnly: HAS_BOOLEAN_VALUE,\n referrerPolicy: 0,\n rel: 0,\n required: HAS_BOOLEAN_VALUE,\n reversed: HAS_BOOLEAN_VALUE,\n role: 0,\n rows: HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: HAS_NUMERIC_VALUE,\n sandbox: 0,\n scope: 0,\n scoped: HAS_BOOLEAN_VALUE,\n scrolling: 0,\n seamless: HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n shape: 0,\n size: HAS_POSITIVE_NUMERIC_VALUE,\n sizes: 0,\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: 0,\n src: 0,\n srcDoc: 0,\n srcLang: 0,\n srcSet: 0,\n start: HAS_NUMERIC_VALUE,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 0,\n target: 0,\n title: 0,\n // Setting .type throws on non-<input> tags\n type: 0,\n useMap: 0,\n value: 0,\n width: 0,\n wmode: 0,\n wrap: 0,\n\n /**\n * RDFa Properties\n */\n about: 0,\n datatype: 0,\n inlist: 0,\n prefix: 0,\n // property is also supported for OpenGraph in meta tags.\n property: 0,\n resource: 0,\n 'typeof': 0,\n vocab: 0,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: 0,\n autoCorrect: 0,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: 0,\n // color is for Safari mask-icon link\n color: 0,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: 0,\n itemScope: HAS_BOOLEAN_VALUE,\n itemType: 0,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: 0,\n itemRef: 0,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: 0,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: 0,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMPropertyNames: {},\n DOMMutationMethods: {\n value: function (node, value) {\n if (value == null) {\n return node.removeAttribute('value');\n }\n\n // Number inputs get special treatment due to some edge cases in\n // Chrome. Let everything else assign the value attribute as normal.\n // https://github.com/facebook/react/issues/7253#issuecomment-236074326\n if (node.type !== 'number' || node.hasAttribute('value') === false) {\n node.setAttribute('value', '' + value);\n } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) {\n // Don't assign an attribute if validation reports bad\n // input. Chrome will clear the value. Additionally, don't\n // operate on inputs that have focus, otherwise Chrome might\n // strip off trailing decimal places and cause the user's\n // cursor position to jump to the beginning of the input.\n //\n // In ReactDOMInput, we have an onBlur event that will trigger\n // this function again when focus is lost.\n node.setAttribute('value', '' + value);\n }\n }\n }\n};\n\nmodule.exports = HTMLDOMPropertyConfig;\n\n/***/ }),\n/* 202 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ReactReconciler = __webpack_require__(16);\n\nvar instantiateReactComponent = __webpack_require__(92);\nvar KeyEscapeUtils = __webpack_require__(48);\nvar shouldUpdateReactComponent = __webpack_require__(58);\nvar traverseAllChildren = __webpack_require__(95);\nvar warning = __webpack_require__(1);\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && \"production\" === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = __webpack_require__(97);\n}\n\nfunction instantiateChild(childInstances, child, name, selfDebugID) {\n // We found a component instance.\n var keyUnique = childInstances[name] === undefined;\n if (false) {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (child != null && keyUnique) {\n childInstances[name] = instantiateReactComponent(child, true);\n }\n}\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID) // 0 in production and for roots\n {\n if (nestedChildNodes == null) {\n return null;\n }\n var childInstances = {};\n\n if (false) {\n traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {\n return instantiateChild(childInsts, child, name, selfDebugID);\n }, childInstances);\n } else {\n traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n }\n return childInstances;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextChildren Flat child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID) // 0 in production and for roots\n {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n var prevChild;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(nextElement, true);\n nextChildren[name] = nextChildInstance;\n // Creating mount image now ensures refs are resolved in right order\n // (see https://github.com/facebook/react/pull/7101 for explanation).\n var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);\n mountImages.push(nextChildMountImage);\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {\n prevChild = prevChildren[name];\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function (renderedChildren, safely) {\n for (var name in renderedChildren) {\n if (renderedChildren.hasOwnProperty(name)) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild, safely);\n }\n }\n }\n};\n\nmodule.exports = ReactChildReconciler;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(43)))\n\n/***/ }),\n/* 203 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar DOMChildrenOperations = __webpack_require__(44);\nvar ReactDOMIDOperations = __webpack_require__(210);\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;\n\n/***/ }),\n/* 204 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar React = __webpack_require__(17);\nvar ReactComponentEnvironment = __webpack_require__(50);\nvar ReactCurrentOwner = __webpack_require__(11);\nvar ReactErrorUtils = __webpack_require__(51);\nvar ReactInstanceMap = __webpack_require__(22);\nvar ReactInstrumentation = __webpack_require__(8);\nvar ReactNodeTypes = __webpack_require__(85);\nvar ReactReconciler = __webpack_require__(16);\n\nif (false) {\n var checkReactTypeSpec = require('./checkReactTypeSpec');\n}\n\nvar emptyObject = __webpack_require__(26);\nvar invariant = __webpack_require__(0);\nvar shallowEqual = __webpack_require__(41);\nvar shouldUpdateReactComponent = __webpack_require__(58);\nvar warning = __webpack_require__(1);\n\nvar CompositeTypes = {\n ImpureClass: 0,\n PureClass: 1,\n StatelessFunctional: 2\n};\n\nfunction StatelessComponent(Component) {}\nStatelessComponent.prototype.render = function () {\n var Component = ReactInstanceMap.get(this)._currentElement.type;\n var element = Component(this.props, this.context, this.updater);\n warnIfInvalidElement(Component, element);\n return element;\n};\n\nfunction warnIfInvalidElement(Component, element) {\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;\n }\n}\n\nfunction shouldConstruct(Component) {\n return !!(Component.prototype && Component.prototype.isReactComponent);\n}\n\nfunction isPureComponent(Component) {\n return !!(Component.prototype && Component.prototype.isPureReactComponent);\n}\n\n// Separated into a function to contain deoptimizations caused by try/finally.\nfunction measureLifeCyclePerf(fn, debugID, timerType) {\n if (debugID === 0) {\n // Top-level wrappers (see ReactMount) and empty components (see\n // ReactDOMEmptyComponent) are invisible to hooks and devtools.\n // Both are implementation details that should go away in the future.\n return fn();\n }\n\n ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);\n try {\n return fn();\n } finally {\n ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);\n }\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponent = {\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function (element) {\n this._currentElement = element;\n this._rootNodeID = 0;\n this._compositeType = null;\n this._instance = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n\n // See ReactUpdateQueue\n this._updateBatchNumber = null;\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._context = null;\n this._mountOrder = 0;\n this._topLevelWrapper = null;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n\n // ComponentWillUnmount shall only be called once\n this._calledComponentWillUnmount = false;\n\n if (false) {\n this._warnedAboutRefsInRender = false;\n }\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} hostParent\n * @param {?object} hostContainerInfo\n * @param {?object} context\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var _this = this;\n\n this._context = context;\n this._mountOrder = nextMountID++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var publicProps = this._currentElement.props;\n var publicContext = this._processContext(context);\n\n var Component = this._currentElement.type;\n\n var updateQueue = transaction.getUpdateQueue();\n\n // Initialize the public class\n var doConstruct = shouldConstruct(Component);\n var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);\n var renderedElement;\n\n // Support functional components\n if (!doConstruct && (inst == null || inst.render == null)) {\n renderedElement = inst;\n warnIfInvalidElement(Component, renderedElement);\n !(inst === null || inst === false || React.isValidElement(inst)) ? false ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;\n inst = new StatelessComponent(Component);\n this._compositeType = CompositeTypes.StatelessFunctional;\n } else {\n if (isPureComponent(Component)) {\n this._compositeType = CompositeTypes.PureClass;\n } else {\n this._compositeType = CompositeTypes.ImpureClass;\n }\n }\n\n if (false) {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n if (inst.render == null) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;\n }\n\n var propsMutated = inst.props !== publicProps;\n var componentName = Component.displayName || Component.name || 'Component';\n\n process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + \"up the same props that your component's constructor was passed.\", componentName, componentName) : void 0;\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n inst.updater = updateQueue;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (false) {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? false ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var markup;\n if (inst.unstable_handleError) {\n markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } else {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n\n if (inst.componentDidMount) {\n if (false) {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(function () {\n return inst.componentDidMount();\n }, _this._debugID, 'componentDidMount');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n }\n\n return markup;\n },\n\n _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {\n if (false) {\n ReactCurrentOwner.current = this;\n try {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n }\n },\n\n _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {\n var Component = this._currentElement.type;\n\n if (doConstruct) {\n if (false) {\n return measureLifeCyclePerf(function () {\n return new Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'ctor');\n } else {\n return new Component(publicProps, publicContext, updateQueue);\n }\n }\n\n // This can still be an instance in case of factory components\n // but we'll count this as time spent rendering as the more common case.\n if (false) {\n return measureLifeCyclePerf(function () {\n return Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'render');\n } else {\n return Component(publicProps, publicContext, updateQueue);\n }\n },\n\n performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var markup;\n var checkpoint = transaction.checkpoint();\n try {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } catch (e) {\n // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n transaction.rollback(checkpoint);\n this._instance.unstable_handleError(e);\n if (this._pendingStateQueue) {\n this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n }\n checkpoint = transaction.checkpoint();\n\n this._renderedComponent.unmountComponent(true);\n transaction.rollback(checkpoint);\n\n // Try again - we've informed the component about the error, so they can render an error message this time.\n // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n return markup;\n },\n\n performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var inst = this._instance;\n\n var debugID = 0;\n if (false) {\n debugID = this._debugID;\n }\n\n if (inst.componentWillMount) {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillMount();\n }, debugID, 'componentWillMount');\n } else {\n inst.componentWillMount();\n }\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n // If not a stateless component, we now render\n if (renderedElement === undefined) {\n renderedElement = this._renderValidatedComponent();\n }\n\n var nodeType = ReactNodeTypes.getType(renderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);\n\n if (false) {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n return markup;\n },\n\n getHostNode: function () {\n return ReactReconciler.getHostNode(this._renderedComponent);\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (safely) {\n if (!this._renderedComponent) {\n return;\n }\n\n var inst = this._instance;\n\n if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {\n inst._calledComponentWillUnmount = true;\n\n if (safely) {\n var name = this.getName() + '.componentWillUnmount()';\n ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n } else {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillUnmount();\n }, this._debugID, 'componentWillUnmount');\n } else {\n inst.componentWillUnmount();\n }\n }\n }\n\n if (this._renderedComponent) {\n ReactReconciler.unmountComponent(this._renderedComponent, safely);\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._instance = null;\n }\n\n // Reset pending fields\n // Even if this component is scheduled for another update in ReactUpdates,\n // it would still be ignored because these fields are reset.\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = 0;\n this._topLevelWrapper = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function (context) {\n var Component = this._currentElement.type;\n var contextTypes = Component.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n var maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function (context) {\n var maskedContext = this._maskContext(context);\n if (false) {\n var Component = this._currentElement.type;\n if (Component.contextTypes) {\n this._checkContextTypes(Component.contextTypes, maskedContext, 'context');\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function (currentContext) {\n var Component = this._currentElement.type;\n var inst = this._instance;\n var childContext;\n\n if (inst.getChildContext) {\n if (false) {\n ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n try {\n childContext = inst.getChildContext();\n } finally {\n ReactInstrumentation.debugTool.onEndProcessingChildContext();\n }\n } else {\n childContext = inst.getChildContext();\n }\n }\n\n if (childContext) {\n !(typeof Component.childContextTypes === 'object') ? false ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;\n if (false) {\n this._checkContextTypes(Component.childContextTypes, childContext, 'child context');\n }\n for (var name in childContext) {\n !(name in Component.childContextTypes) ? false ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;\n }\n return _assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Assert that the context types are valid\n *\n * @param {object} typeSpecs Map of context field to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkContextTypes: function (typeSpecs, values, location) {\n if (false) {\n checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);\n }\n },\n\n receiveComponent: function (nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n } else {\n this._updateBatchNumber = null;\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n var inst = this._instance;\n !(inst != null) ? false ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;\n\n var willReceive = false;\n var nextContext;\n\n // Determine if the context has changed or not\n if (this._context === nextUnmaskedContext) {\n nextContext = inst.context;\n } else {\n nextContext = this._processContext(nextUnmaskedContext);\n willReceive = true;\n }\n\n var prevProps = prevParentElement.props;\n var nextProps = nextParentElement.props;\n\n // Not a simple state update but a props update\n if (prevParentElement !== nextParentElement) {\n willReceive = true;\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n if (willReceive && inst.componentWillReceiveProps) {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillReceiveProps(nextProps, nextContext);\n }, this._debugID, 'componentWillReceiveProps');\n } else {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n var shouldUpdate = true;\n\n if (!this._pendingForceUpdate) {\n if (inst.shouldComponentUpdate) {\n if (false) {\n shouldUpdate = measureLifeCyclePerf(function () {\n return inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'shouldComponentUpdate');\n } else {\n shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }\n } else {\n if (this._compositeType === CompositeTypes.PureClass) {\n shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);\n }\n }\n }\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;\n }\n\n this._updateBatchNumber = null;\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function (props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = _assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n var _this2 = this;\n\n var inst = this._instance;\n\n var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n var prevProps;\n var prevState;\n var prevContext;\n if (hasComponentDidUpdate) {\n prevProps = inst.props;\n prevState = inst.state;\n prevContext = inst.context;\n }\n\n if (inst.componentWillUpdate) {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'componentWillUpdate');\n } else {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (hasComponentDidUpdate) {\n if (false) {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n }\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function (transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n\n var debugID = 0;\n if (false) {\n debugID = this._debugID;\n }\n\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n } else {\n var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);\n ReactReconciler.unmountComponent(prevComponentInstance, false);\n\n var nodeType = ReactNodeTypes.getType(nextRenderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);\n\n if (false) {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);\n }\n },\n\n /**\n * Overridden in shallow rendering.\n *\n * @protected\n */\n _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {\n ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function () {\n var inst = this._instance;\n var renderedElement;\n\n if (false) {\n renderedElement = measureLifeCyclePerf(function () {\n return inst.render();\n }, this._debugID, 'render');\n } else {\n renderedElement = inst.render();\n }\n\n if (false) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (renderedElement === undefined && inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedElement = null;\n }\n }\n\n return renderedElement;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function () {\n var renderedElement;\n if (\"production\" !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {\n ReactCurrentOwner.current = this;\n try {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n }\n !(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? false ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;\n\n return renderedElement;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function (ref, component) {\n var inst = this.getPublicInstance();\n !(inst != null) ? false ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;\n var publicComponentInstance = component.getPublicInstance();\n if (false) {\n var componentName = component && component.getName ? component.getName() : 'a component';\n process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref \"%s\" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;\n }\n var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n refs[ref] = publicComponentInstance;\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function (ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function () {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function () {\n var inst = this._instance;\n if (this._compositeType === CompositeTypes.StatelessFunctional) {\n return null;\n }\n return inst;\n },\n\n // Stub\n _instantiateReactComponent: null\n};\n\nmodule.exports = ReactCompositeComponent;\n\n/***/ }),\n/* 205 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n\n\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactDefaultInjection = __webpack_require__(218);\nvar ReactMount = __webpack_require__(84);\nvar ReactReconciler = __webpack_require__(16);\nvar ReactUpdates = __webpack_require__(9);\nvar ReactVersion = __webpack_require__(231);\n\nvar findDOMNode = __webpack_require__(247);\nvar getHostComponentFromComposite = __webpack_require__(89);\nvar renderSubtreeIntoContainer = __webpack_require__(254);\nvar warning = __webpack_require__(1);\n\nReactDefaultInjection.inject();\n\nvar ReactDOM = {\n findDOMNode: findDOMNode,\n render: ReactMount.render,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n version: ReactVersion,\n\n /* eslint-disable camelcase */\n unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n /* eslint-enable camelcase */\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n ComponentTree: {\n getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n getNodeFromInstance: function (inst) {\n // inst is an internal instance (but could be a composite)\n if (inst._renderedComponent) {\n inst = getHostComponentFromComposite(inst);\n }\n if (inst) {\n return ReactDOMComponentTree.getNodeFromInstance(inst);\n } else {\n return null;\n }\n }\n },\n Mount: ReactMount,\n Reconciler: ReactReconciler\n });\n}\n\nif (false) {\n var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n // First check if devtools is not installed\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // If we're in Chrome or Firefox, provide a download link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n // Firefox does not have the issue with devtools loaded over file://\n var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;\n console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');\n }\n }\n\n var testFunc = function testFn() {};\n process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, \"It looks like you're using a minified copy of the development build \" + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0;\n\n // If we're in IE8, check to see if we are in compatibility mode and provide\n // information on preventing compatibility mode\n var ieCompatibilityMode = document.documentMode && document.documentMode < 8;\n\n process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />') : void 0;\n\n var expectedFeatures = [\n // shims\n Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;\n break;\n }\n }\n }\n}\n\nif (false) {\n var ReactInstrumentation = require('./ReactInstrumentation');\n var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook');\n var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook');\n var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook');\n\n ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);\n}\n\nmodule.exports = ReactDOM;\n\n/***/ }),\n/* 206 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* global hasOwnProperty:true */\n\n\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar AutoFocusUtils = __webpack_require__(193);\nvar CSSPropertyOperations = __webpack_require__(195);\nvar DOMLazyTree = __webpack_require__(14);\nvar DOMNamespaces = __webpack_require__(45);\nvar DOMProperty = __webpack_require__(15);\nvar DOMPropertyOperations = __webpack_require__(77);\nvar EventPluginHub = __webpack_require__(20);\nvar EventPluginRegistry = __webpack_require__(46);\nvar ReactBrowserEventEmitter = __webpack_require__(27);\nvar ReactDOMComponentFlags = __webpack_require__(78);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactDOMInput = __webpack_require__(211);\nvar ReactDOMOption = __webpack_require__(212);\nvar ReactDOMSelect = __webpack_require__(79);\nvar ReactDOMTextarea = __webpack_require__(215);\nvar ReactInstrumentation = __webpack_require__(8);\nvar ReactMultiChild = __webpack_require__(224);\nvar ReactServerRenderingTransaction = __webpack_require__(229);\n\nvar emptyFunction = __webpack_require__(7);\nvar escapeTextContentForBrowser = __webpack_require__(30);\nvar invariant = __webpack_require__(0);\nvar isEventSupported = __webpack_require__(57);\nvar shallowEqual = __webpack_require__(41);\nvar inputValueTracking = __webpack_require__(91);\nvar validateDOMNesting = __webpack_require__(59);\nvar warning = __webpack_require__(1);\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = { string: true, number: true };\n\nvar STYLE = 'style';\nvar HTML = '__html';\nvar RESERVED_PROPS = {\n children: null,\n dangerouslySetInnerHTML: null,\n suppressContentEditableWarning: null\n};\n\n// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\nvar DOC_FRAGMENT_TYPE = 11;\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n if (internalInstance) {\n var owner = internalInstance._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' This DOM node was rendered by `' + name + '`.';\n }\n }\n }\n return '';\n}\n\nfunction friendlyStringify(obj) {\n if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return '[' + obj.map(friendlyStringify).join(', ') + ']';\n } else {\n var pairs = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n }\n }\n return '{' + pairs.join(', ') + '}';\n }\n } else if (typeof obj === 'string') {\n return JSON.stringify(obj);\n } else if (typeof obj === 'function') {\n return '[function object]';\n }\n // Differs from JSON.stringify in that undefined because undefined and that\n // inf and nan don't become null\n return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n if (style1 == null || style2 == null) {\n return;\n }\n if (shallowEqual(style1, style2)) {\n return;\n }\n\n var componentName = component._tag;\n var owner = component._currentElement._owner;\n var ownerName;\n if (owner) {\n ownerName = owner.getName();\n }\n\n var hash = ownerName + '|' + componentName;\n\n if (styleMutationWarning.hasOwnProperty(hash)) {\n return;\n }\n\n styleMutationWarning[hash] = true;\n\n false ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n}\n\n/**\n * @param {object} component\n * @param {?object} props\n */\nfunction assertValidProps(component, props) {\n if (!props) {\n return;\n }\n // Note the use of `==` which checks for null or undefined.\n if (voidElementTags[component._tag]) {\n !(props.children == null && props.dangerouslySetInnerHTML == null) ? false ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;\n }\n if (props.dangerouslySetInnerHTML != null) {\n !(props.children == null) ? false ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;\n !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? false ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;\n }\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;\n }\n !(props.style == null || typeof props.style === 'object') ? false ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n if (transaction instanceof ReactServerRenderingTransaction) {\n return;\n }\n if (false) {\n // IE8 has no API for event capturing and the `onScroll` event doesn't\n // bubble.\n process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), \"This browser doesn't support the `onScroll` event\") : void 0;\n }\n var containerInfo = inst._hostContainerInfo;\n var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n listenTo(registrationName, doc);\n transaction.getReactMountReady().enqueue(putListener, {\n inst: inst,\n registrationName: registrationName,\n listener: listener\n });\n}\n\nfunction putListener() {\n var listenerToPut = this;\n EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction inputPostMount() {\n var inst = this;\n ReactDOMInput.postMountWrapper(inst);\n}\n\nfunction textareaPostMount() {\n var inst = this;\n ReactDOMTextarea.postMountWrapper(inst);\n}\n\nfunction optionPostMount() {\n var inst = this;\n ReactDOMOption.postMountWrapper(inst);\n}\n\nvar setAndValidateContentChildDev = emptyFunction;\nif (false) {\n setAndValidateContentChildDev = function (content) {\n var hasExistingContent = this._contentDebugID != null;\n var debugID = this._debugID;\n // This ID represents the inlined child that has no backing instance:\n var contentDebugID = -debugID;\n\n if (content == null) {\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n }\n this._contentDebugID = null;\n return;\n }\n\n validateDOMNesting(null, String(content), this, this._ancestorInfo);\n this._contentDebugID = contentDebugID;\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n } else {\n ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n }\n };\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n topAbort: 'abort',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTimeUpdate: 'timeupdate',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting'\n};\n\nfunction trackInputValue() {\n inputValueTracking.track(this);\n}\n\nfunction trapBubbledEventsLocal() {\n var inst = this;\n // If a component renders to null or if another component fatals and causes\n // the state of the tree to be corrupted, `node` here can be null.\n !inst._rootNodeID ? false ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;\n var node = getNode(inst);\n !node ? false ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;\n\n switch (inst._tag) {\n case 'iframe':\n case 'object':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'video':\n case 'audio':\n inst._wrapperState.listeners = [];\n // Create listener for each media event\n for (var event in mediaEvents) {\n if (mediaEvents.hasOwnProperty(event)) {\n inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n }\n }\n break;\n case 'source':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];\n break;\n case 'img':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'form':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];\n break;\n case 'input':\n case 'select':\n case 'textarea':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];\n break;\n }\n}\n\nfunction postUpdateSelectWrapper() {\n ReactDOMSelect.postUpdateWrapper(this);\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n // NOTE: menuitem's close tag should be omitted, but that causes problems.\n};\n\nvar newlineEatingTags = {\n listing: true,\n pre: true,\n textarea: true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n menuitem: true\n}, omittedCloseTags);\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n if (!hasOwnProperty.call(validatedTagCache, tag)) {\n !VALID_TAG_REGEX.test(tag) ? false ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;\n validatedTagCache[tag] = true;\n }\n}\n\nfunction isCustomComponent(tagName, props) {\n return tagName.indexOf('-') >= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n * - Event listeners: `onClick`, `onMouseDown`, etc.\n * - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(element) {\n var tag = element.type;\n validateDangerousTag(tag);\n this._currentElement = element;\n this._tag = tag.toLowerCase();\n this._namespaceURI = null;\n this._renderedChildren = null;\n this._previousStyle = null;\n this._previousStyleCopy = null;\n this._hostNode = null;\n this._hostParent = null;\n this._rootNodeID = 0;\n this._domID = 0;\n this._hostContainerInfo = null;\n this._wrapperState = null;\n this._topLevelWrapper = null;\n this._flags = 0;\n if (false) {\n this._ancestorInfo = null;\n setAndValidateContentChildDev.call(this, null);\n }\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\n\nReactDOMComponent.Mixin = {\n /**\n * Generates root tag markup then recurses. This method has side effects and\n * is not idempotent.\n *\n * @internal\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?ReactDOMComponent} the parent component instance\n * @param {?object} info about the host container\n * @param {object} context\n * @return {string} The computed markup.\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n this._rootNodeID = globalIdCounter++;\n this._domID = hostContainerInfo._idCounter++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var props = this._currentElement.props;\n\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n this._wrapperState = {\n listeners: null\n };\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'input':\n ReactDOMInput.mountWrapper(this, props, hostParent);\n props = ReactDOMInput.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trackInputValue, this);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'option':\n ReactDOMOption.mountWrapper(this, props, hostParent);\n props = ReactDOMOption.getHostProps(this, props);\n break;\n case 'select':\n ReactDOMSelect.mountWrapper(this, props, hostParent);\n props = ReactDOMSelect.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'textarea':\n ReactDOMTextarea.mountWrapper(this, props, hostParent);\n props = ReactDOMTextarea.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trackInputValue, this);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n }\n\n assertValidProps(this, props);\n\n // We create tags in the namespace of their parent container, except HTML\n // tags get no namespace.\n var namespaceURI;\n var parentTag;\n if (hostParent != null) {\n namespaceURI = hostParent._namespaceURI;\n parentTag = hostParent._tag;\n } else if (hostContainerInfo._tag) {\n namespaceURI = hostContainerInfo._namespaceURI;\n parentTag = hostContainerInfo._tag;\n }\n if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n namespaceURI = DOMNamespaces.html;\n }\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'svg') {\n namespaceURI = DOMNamespaces.svg;\n } else if (this._tag === 'math') {\n namespaceURI = DOMNamespaces.mathml;\n }\n }\n this._namespaceURI = namespaceURI;\n\n if (false) {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo._tag) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(this._tag, null, this, parentInfo);\n }\n this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n }\n\n var mountImage;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var el;\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'script') {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n var div = ownerDocument.createElement('div');\n var type = this._currentElement.type;\n div.innerHTML = '<' + type + '></' + type + '>';\n el = div.removeChild(div.firstChild);\n } else if (props.is) {\n el = ownerDocument.createElement(this._currentElement.type, props.is);\n } else {\n // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n el = ownerDocument.createElement(this._currentElement.type);\n }\n } else {\n el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n }\n ReactDOMComponentTree.precacheNode(this, el);\n this._flags |= Flags.hasCachedChildNodes;\n if (!this._hostParent) {\n DOMPropertyOperations.setAttributeForRoot(el);\n }\n this._updateDOMProperties(null, props, transaction);\n var lazyTree = DOMLazyTree(el);\n this._createInitialChildren(transaction, props, context, lazyTree);\n mountImage = lazyTree;\n } else {\n var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n var tagContent = this._createContentMarkup(transaction, props, context);\n if (!tagContent && omittedCloseTags[this._tag]) {\n mountImage = tagOpen + '/>';\n } else {\n mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n }\n }\n\n switch (this._tag) {\n case 'input':\n transaction.getReactMountReady().enqueue(inputPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'textarea':\n transaction.getReactMountReady().enqueue(textareaPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'select':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'button':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'option':\n transaction.getReactMountReady().enqueue(optionPostMount, this);\n break;\n }\n\n return mountImage;\n },\n\n /**\n * Creates markup for the open tag and all attributes.\n *\n * This method has side effects because events get registered.\n *\n * Iterating over object properties is faster than iterating over arrays.\n * @see http://jsperf.com/obj-vs-arr-iteration\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @return {string} Markup of opening tag.\n */\n _createOpenTagMarkupAndPutListeners: function (transaction, props) {\n var ret = '<' + this._currentElement.type;\n\n for (var propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n var propValue = props[propKey];\n if (propValue == null) {\n continue;\n }\n if (registrationNameModules.hasOwnProperty(propKey)) {\n if (propValue) {\n enqueuePutListener(this, propKey, propValue, transaction);\n }\n } else {\n if (propKey === STYLE) {\n if (propValue) {\n if (false) {\n // See `_updateDOMProperties`. style block\n this._previousStyle = propValue;\n }\n propValue = this._previousStyleCopy = _assign({}, props.style);\n }\n propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n }\n var markup = null;\n if (this._tag != null && isCustomComponent(this._tag, props)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n }\n } else {\n markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n }\n if (markup) {\n ret += ' ' + markup;\n }\n }\n }\n\n // For static pages, no need to put React ID and checksum. Saves lots of\n // bytes.\n if (transaction.renderToStaticMarkup) {\n return ret;\n }\n\n if (!this._hostParent) {\n ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n }\n ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n return ret;\n },\n\n /**\n * Creates markup for the content between the tags.\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @param {object} context\n * @return {string} Content markup.\n */\n _createContentMarkup: function (transaction, props, context) {\n var ret = '';\n\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n ret = innerHTML.__html;\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n ret = escapeTextContentForBrowser(contentToUse);\n if (false) {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n ret = mountImages.join('');\n }\n }\n if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n // text/html ignores the first character in these tags if it's a newline\n // Prefer to break application/xml over text/html (for now) by adding\n // a newline specifically to get eaten by the parser. (Alternately for\n // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n // \\r is normalized out by HTMLTextAreaElement#value.)\n // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n return '\\n' + ret;\n } else {\n return ret;\n }\n },\n\n _createInitialChildren: function (transaction, props, context, lazyTree) {\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n // TODO: Validate that text is allowed as a child of this node\n if (contentToUse != null) {\n // Avoid setting textContent when the text is empty. In IE11 setting\n // textContent on a text area will cause the placeholder to not\n // show within the textarea until it has been focused and blurred again.\n // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n if (contentToUse !== '') {\n if (false) {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n DOMLazyTree.queueText(lazyTree, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n for (var i = 0; i < mountImages.length; i++) {\n DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n }\n }\n }\n },\n\n /**\n * Receives a next element and updates the component.\n *\n * @internal\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} context\n */\n receiveComponent: function (nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n this.updateComponent(transaction, prevElement, nextElement, context);\n },\n\n /**\n * Updates a DOM component after it has already been allocated and\n * attached to the DOM. Reconciles the root DOM node, then recurses.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @param {ReactElement} nextElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevElement, nextElement, context) {\n var lastProps = prevElement.props;\n var nextProps = this._currentElement.props;\n\n switch (this._tag) {\n case 'input':\n lastProps = ReactDOMInput.getHostProps(this, lastProps);\n nextProps = ReactDOMInput.getHostProps(this, nextProps);\n break;\n case 'option':\n lastProps = ReactDOMOption.getHostProps(this, lastProps);\n nextProps = ReactDOMOption.getHostProps(this, nextProps);\n break;\n case 'select':\n lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n break;\n case 'textarea':\n lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n break;\n }\n\n assertValidProps(this, nextProps);\n this._updateDOMProperties(lastProps, nextProps, transaction);\n this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n switch (this._tag) {\n case 'input':\n // Update the wrapper around inputs *after* updating props. This has to\n // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n // raise warnings and prevent the new value from being assigned.\n ReactDOMInput.updateWrapper(this);\n\n // We also check that we haven't missed a value update, such as a\n // Radio group shifting the checked value to another named radio input.\n inputValueTracking.updateValueIfChanged(this);\n break;\n case 'textarea':\n ReactDOMTextarea.updateWrapper(this);\n break;\n case 'select':\n // <select> value update needs to occur after <option> children\n // reconciliation\n transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n break;\n }\n },\n\n /**\n * Reconciles the properties by detecting differences in property values and\n * updating the DOM as necessary. This function is probably the single most\n * critical path for performance optimization.\n *\n * TODO: Benchmark whether checking for changed values in memory actually\n * improves performance (especially statically positioned elements).\n * TODO: Benchmark the effects of putting this at the top since 99% of props\n * do not change for a given reconciliation.\n * TODO: Benchmark areas that can be improved with caching.\n *\n * @private\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {?DOMElement} node\n */\n _updateDOMProperties: function (lastProps, nextProps, transaction) {\n var propKey;\n var styleName;\n var styleUpdates;\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n continue;\n }\n if (propKey === STYLE) {\n var lastStyle = this._previousStyleCopy;\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n this._previousStyleCopy = null;\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (lastProps[propKey]) {\n // Only call deleteListener if there was a listener previously or\n // else willDeleteListener gets called when there wasn't actually a\n // listener (e.g., onClick={null})\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, lastProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n }\n }\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n continue;\n }\n if (propKey === STYLE) {\n if (nextProp) {\n if (false) {\n checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n this._previousStyle = nextProp;\n }\n nextProp = this._previousStyleCopy = _assign({}, nextProp);\n } else {\n this._previousStyleCopy = null;\n }\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n // Update styles that changed since `lastProp`.\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n styleUpdates = nextProp;\n }\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (nextProp) {\n enqueuePutListener(this, propKey, nextProp, transaction);\n } else if (lastProp) {\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, nextProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n var node = getNode(this);\n // If we're updating to null or undefined, we should remove the property\n // from the DOM node instead of inadvertently setting to a string. This\n // brings us in line with the same behavior we have on initial render.\n if (nextProp != null) {\n DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n } else {\n DOMPropertyOperations.deleteValueForProperty(node, propKey);\n }\n }\n }\n if (styleUpdates) {\n CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n }\n },\n\n /**\n * Reconciles the children with the various properties that affect the\n * children content.\n *\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n */\n _updateDOMChildren: function (lastProps, nextProps, transaction, context) {\n var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;\n var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;\n\n var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;\n\n // Note the use of `!=` which checks for null or undefined.\n var lastChildren = lastContent != null ? null : lastProps.children;\n var nextChildren = nextContent != null ? null : nextProps.children;\n\n // If we're switching from children to content/html or vice versa, remove\n // the old content\n var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n if (lastChildren != null && nextChildren == null) {\n this.updateChildren(null, transaction, context);\n } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n this.updateTextContent('');\n if (false) {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n }\n\n if (nextContent != null) {\n if (lastContent !== nextContent) {\n this.updateTextContent('' + nextContent);\n if (false) {\n setAndValidateContentChildDev.call(this, nextContent);\n }\n }\n } else if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n this.updateMarkup('' + nextHtml);\n }\n if (false) {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n } else if (nextChildren != null) {\n if (false) {\n setAndValidateContentChildDev.call(this, null);\n }\n\n this.updateChildren(nextChildren, transaction, context);\n }\n },\n\n getHostNode: function () {\n return getNode(this);\n },\n\n /**\n * Destroys all event registrations for this instance. Does not remove from\n * the DOM. That must be done by the parent.\n *\n * @internal\n */\n unmountComponent: function (safely) {\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n var listeners = this._wrapperState.listeners;\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].remove();\n }\n }\n break;\n case 'input':\n case 'textarea':\n inputValueTracking.stopTracking(this);\n break;\n case 'html':\n case 'head':\n case 'body':\n /**\n * Components like <html> <head> and <body> can't be removed or added\n * easily in a cross-browser way, however it's valuable to be able to\n * take advantage of React's reconciliation for styling and <title>\n * management. So we just document it and throw in dangerous cases.\n */\n true ? false ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;\n break;\n }\n\n this.unmountChildren(safely);\n ReactDOMComponentTree.uncacheNode(this);\n EventPluginHub.deleteAllListeners(this);\n this._rootNodeID = 0;\n this._domID = 0;\n this._wrapperState = null;\n\n if (false) {\n setAndValidateContentChildDev.call(this, null);\n }\n },\n\n getPublicInstance: function () {\n return getNode(this);\n }\n};\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;\n\n/***/ }),\n/* 207 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar validateDOMNesting = __webpack_require__(59);\n\nvar DOC_NODE_TYPE = 9;\n\nfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n var info = {\n _topLevelWrapper: topLevelWrapper,\n _idCounter: 1,\n _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n _node: node,\n _tag: node ? node.nodeName.toLowerCase() : null,\n _namespaceURI: node ? node.namespaceURI : null\n };\n if (false) {\n info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n }\n return info;\n}\n\nmodule.exports = ReactDOMContainerInfo;\n\n/***/ }),\n/* 208 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar DOMLazyTree = __webpack_require__(14);\nvar ReactDOMComponentTree = __webpack_require__(4);\n\nvar ReactDOMEmptyComponent = function (instantiate) {\n // ReactCompositeComponent uses this:\n this._currentElement = null;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n this._domID = 0;\n};\n_assign(ReactDOMEmptyComponent.prototype, {\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var domID = hostContainerInfo._idCounter++;\n this._domID = domID;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var nodeValue = ' react-empty: ' + this._domID + ' ';\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var node = ownerDocument.createComment(nodeValue);\n ReactDOMComponentTree.precacheNode(this, node);\n return DOMLazyTree(node);\n } else {\n if (transaction.renderToStaticMarkup) {\n // Normally we'd insert a comment node, but since this is a situation\n // where React won't take over (static pages), we can simply return\n // nothing.\n return '';\n }\n return '<!--' + nodeValue + '-->';\n }\n },\n receiveComponent: function () {},\n getHostNode: function () {\n return ReactDOMComponentTree.getNodeFromInstance(this);\n },\n unmountComponent: function () {\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMEmptyComponent;\n\n/***/ }),\n/* 209 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ReactDOMFeatureFlags = {\n useCreateElement: true,\n useFiber: false\n};\n\nmodule.exports = ReactDOMFeatureFlags;\n\n/***/ }),\n/* 210 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar DOMChildrenOperations = __webpack_require__(44);\nvar ReactDOMComponentTree = __webpack_require__(4);\n\n/**\n * Operations used to process updates to DOM nodes.\n */\nvar ReactDOMIDOperations = {\n /**\n * Updates a component's children by processing a series of updates.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n dangerouslyProcessChildrenUpdates: function (parentInst, updates) {\n var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n DOMChildrenOperations.processUpdates(node, updates);\n }\n};\n\nmodule.exports = ReactDOMIDOperations;\n\n/***/ }),\n/* 211 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar DOMPropertyOperations = __webpack_require__(77);\nvar LinkedValueUtils = __webpack_require__(49);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactUpdates = __webpack_require__(9);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nvar didWarnValueLink = false;\nvar didWarnCheckedLink = false;\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMInput.updateWrapper(this);\n }\n}\n\nfunction isControlled(props) {\n var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = {\n getHostProps: function (inst, props) {\n var value = LinkedValueUtils.getValue(props);\n var checked = LinkedValueUtils.getChecked(props);\n\n var hostProps = _assign({\n // Make sure we set .type before any other properties (setting .value\n // before .type means .value is lost in IE11 and below)\n type: undefined,\n // Make sure we set .step before .value (setting .value before .step\n // means .value is rounded on mount, based upon step precision)\n step: undefined,\n // Make sure we set .min & .max before .value (to ensure proper order\n // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n min: undefined,\n max: undefined\n }, props, {\n defaultChecked: undefined,\n defaultValue: undefined,\n value: value != null ? value : inst._wrapperState.initialValue,\n checked: checked != null ? checked : inst._wrapperState.initialChecked,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (false) {\n LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);\n\n var owner = inst._currentElement._owner;\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.checkedLink !== undefined && !didWarnCheckedLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnCheckedLink = true;\n }\n if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnCheckedDefaultChecked = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnValueDefaultValue = true;\n }\n }\n\n var defaultValue = props.defaultValue;\n inst._wrapperState = {\n initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n initialValue: props.value != null ? props.value : defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n controlled: isControlled(props)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n if (false) {\n var controlled = isControlled(props);\n var owner = inst._currentElement._owner;\n\n if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnUncontrolledToControlled = true;\n }\n if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnControlledToUncontrolled = true;\n }\n }\n\n // TODO: Shouldn't this be getChecked(props)?\n var checked = props.checked;\n if (checked != null) {\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n if (value === 0 && node.value === '') {\n node.value = '0';\n // Note: IE9 reports a number inputs as 'text', so check props instead.\n } else if (props.type === 'number') {\n // Simulate `input.valueAsNumber`. IE9 does not support it\n var valueAsNumber = parseFloat(node.value, 10) || 0;\n\n if (\n // eslint-disable-next-line\n value != valueAsNumber ||\n // eslint-disable-next-line\n value == valueAsNumber && node.value != value) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n } else if (node.value !== '' + value) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n } else {\n if (props.value == null && props.defaultValue != null) {\n // In Chrome, assigning defaultValue to certain input types triggers input validation.\n // For number inputs, the display value loses trailing decimal points. For email inputs,\n // Chrome raises \"The specified value <x> is not a valid email address\".\n //\n // Here we check to see if the defaultValue has actually changed, avoiding these problems\n // when the user is inputting text\n //\n // https://github.com/facebook/react/issues/7253\n if (node.defaultValue !== '' + props.defaultValue) {\n node.defaultValue = '' + props.defaultValue;\n }\n }\n if (props.checked == null && props.defaultChecked != null) {\n node.defaultChecked = !!props.defaultChecked;\n }\n }\n },\n\n postMountWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n // Detach value from defaultValue. We won't do anything if we're working on\n // submit or reset inputs as those values & defaultValues are linked. They\n // are not resetable nodes so this operation doesn't matter and actually\n // removes browser-default values (eg \"Submit Query\") when no value is\n // provided.\n\n switch (props.type) {\n case 'submit':\n case 'reset':\n break;\n case 'color':\n case 'date':\n case 'datetime':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n // This fixes the no-show issue on iOS Safari and Android Chrome:\n // https://github.com/facebook/react/issues/7233\n node.value = '';\n node.value = node.defaultValue;\n break;\n default:\n node.value = node.value;\n break;\n }\n\n // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n // this is needed to work around a chrome bug where setting defaultChecked\n // will sometimes influence the value of checked (even after detachment).\n // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n // We need to temporarily unset name to avoid disrupting radio button groups.\n var name = node.name;\n if (name !== '') {\n node.name = '';\n }\n node.defaultChecked = !node.defaultChecked;\n node.defaultChecked = !node.defaultChecked;\n if (name !== '') {\n node.name = name;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n // Here we use asap to wait until all updates have propagated, which\n // is important when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n ReactUpdates.asap(forceUpdateIfMounted, this);\n\n var name = props.name;\n if (props.type === 'radio' && name != null) {\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n }\n\n // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form, let's just use the global\n // `querySelectorAll` to ensure we don't miss anything.\n var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0; i < group.length; i++) {\n var otherNode = group[i];\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n }\n // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n !otherInstance ? false ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;\n // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n }\n }\n\n return returnValue;\n}\n\nmodule.exports = ReactDOMInput;\n\n/***/ }),\n/* 212 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar React = __webpack_require__(17);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactDOMSelect = __webpack_require__(79);\n\nvar warning = __webpack_require__(1);\nvar didWarnInvalidOptionChildren = false;\n\nfunction flattenChildren(children) {\n var content = '';\n\n // Flatten children and warn if they aren't strings or numbers;\n // invalid types are ignored.\n React.Children.forEach(children, function (child) {\n if (child == null) {\n return;\n }\n if (typeof child === 'string' || typeof child === 'number') {\n content += child;\n } else if (!didWarnInvalidOptionChildren) {\n didWarnInvalidOptionChildren = true;\n false ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;\n }\n });\n\n return content;\n}\n\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\nvar ReactDOMOption = {\n mountWrapper: function (inst, props, hostParent) {\n // TODO (yungsters): Remove support for `selected` in <option>.\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;\n }\n\n // Look up whether this option is 'selected'\n var selectValue = null;\n if (hostParent != null) {\n var selectParent = hostParent;\n\n if (selectParent._tag === 'optgroup') {\n selectParent = selectParent._hostParent;\n }\n\n if (selectParent != null && selectParent._tag === 'select') {\n selectValue = ReactDOMSelect.getSelectValueContext(selectParent);\n }\n }\n\n // If the value is null (e.g., no specified value or after initial mount)\n // or missing (e.g., for <datalist>), we don't change props.selected\n var selected = null;\n if (selectValue != null) {\n var value;\n if (props.value != null) {\n value = props.value + '';\n } else {\n value = flattenChildren(props.children);\n }\n selected = false;\n if (Array.isArray(selectValue)) {\n // multiple\n for (var i = 0; i < selectValue.length; i++) {\n if ('' + selectValue[i] === value) {\n selected = true;\n break;\n }\n }\n } else {\n selected = '' + selectValue === value;\n }\n }\n\n inst._wrapperState = { selected: selected };\n },\n\n postMountWrapper: function (inst) {\n // value=\"\" should make a value attribute (#6219)\n var props = inst._currentElement.props;\n if (props.value != null) {\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n node.setAttribute('value', props.value);\n }\n },\n\n getHostProps: function (inst, props) {\n var hostProps = _assign({ selected: undefined, children: undefined }, props);\n\n // Read state only from initial mount because <select> updates value\n // manually; we need the initial state only for server rendering\n if (inst._wrapperState.selected != null) {\n hostProps.selected = inst._wrapperState.selected;\n }\n\n var content = flattenChildren(props.children);\n\n if (content) {\n hostProps.children = content;\n }\n\n return hostProps;\n }\n};\n\nmodule.exports = ReactDOMOption;\n\n/***/ }),\n/* 213 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar getNodeForCharacterOffset = __webpack_require__(251);\nvar getTextContentAccessor = __webpack_require__(90);\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n return anchorNode === focusNode && anchorOffset === focusOffset;\n}\n\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE's selection API doesn't provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it's always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getIEOffsets(node) {\n var selection = document.selection;\n var selectedRange = selection.createRange();\n var selectedLength = selectedRange.text.length;\n\n // Duplicate selection so we can move range without breaking user selection.\n var fromStart = selectedRange.duplicate();\n fromStart.moveToElementText(node);\n fromStart.setEndPoint('EndToStart', selectedRange);\n\n var startOffset = fromStart.text.length;\n var endOffset = startOffset + selectedLength;\n\n return {\n start: startOffset,\n end: endOffset\n };\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n var selection = window.getSelection && window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode;\n var anchorOffset = selection.anchorOffset;\n var focusNode = selection.focusNode;\n var focusOffset = selection.focusOffset;\n\n var currentRange = selection.getRangeAt(0);\n\n // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n // divs do not seem to expose properties, triggering a \"Permission denied\n // error\" if any of its properties are accessed. The only seemingly possible\n // way to avoid erroring is to access a property that typically works for\n // non-anonymous divs and catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n try {\n /* eslint-disable no-unused-expressions */\n currentRange.startContainer.nodeType;\n currentRange.endContainer.nodeType;\n /* eslint-enable no-unused-expressions */\n } catch (e) {\n return null;\n }\n\n // If the node and offset values are the same, the selection is collapsed.\n // `Selection.isCollapsed` is available natively, but IE sometimes gets\n // this value wrong.\n var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\n var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n var tempRange = currentRange.cloneRange();\n tempRange.selectNodeContents(node);\n tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\n var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n var end = start + rangeLength;\n\n // Detect whether the selection is backward.\n var detectionRange = document.createRange();\n detectionRange.setStart(anchorNode, anchorOffset);\n detectionRange.setEnd(focusNode, focusOffset);\n var isBackward = detectionRange.collapsed;\n\n return {\n start: isBackward ? end : start,\n end: isBackward ? start : end\n };\n}\n\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setIEOffsets(node, offsets) {\n var range = document.selection.createRange().duplicate();\n var start, end;\n\n if (offsets.end === undefined) {\n start = offsets.start;\n end = start;\n } else if (offsets.start > offsets.end) {\n start = offsets.end;\n end = offsets.start;\n } else {\n start = offsets.start;\n end = offsets.end;\n }\n\n range.moveToElementText(node);\n range.moveStart('character', start);\n range.setEndPoint('EndToStart', range);\n range.moveEnd('character', end - start);\n range.select();\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n if (!window.getSelection) {\n return;\n }\n\n var selection = window.getSelection();\n var length = node[getTextContentAccessor()].length;\n var start = Math.min(offsets.start, length);\n var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n var range = document.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nvar useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);\n\nvar ReactDOMSelection = {\n /**\n * @param {DOMElement} node\n */\n getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n /**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\n\nmodule.exports = ReactDOMSelection;\n\n/***/ }),\n/* 214 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar DOMChildrenOperations = __webpack_require__(44);\nvar DOMLazyTree = __webpack_require__(14);\nvar ReactDOMComponentTree = __webpack_require__(4);\n\nvar escapeTextContentForBrowser = __webpack_require__(30);\nvar invariant = __webpack_require__(0);\nvar validateDOMNesting = __webpack_require__(59);\n\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n * - When mounting text into the DOM, adjacent text nodes are merged.\n * - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings between comment nodes so that they\n * can undergo the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\nvar ReactDOMTextComponent = function (text) {\n // TODO: This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n\n // Properties\n this._domID = 0;\n this._mountIndex = 0;\n this._closingComment = null;\n this._commentNodes = null;\n};\n\n_assign(ReactDOMTextComponent.prototype, {\n /**\n * Creates the markup for this text node. This node is not intended to have\n * any features besides containing text content.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup for this text node.\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n if (false) {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo != null) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(null, this._stringText, this, parentInfo);\n }\n }\n\n var domID = hostContainerInfo._idCounter++;\n var openingValue = ' react-text: ' + domID + ' ';\n var closingValue = ' /react-text ';\n this._domID = domID;\n this._hostParent = hostParent;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var openingComment = ownerDocument.createComment(openingValue);\n var closingComment = ownerDocument.createComment(closingValue);\n var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n if (this._stringText) {\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n }\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n ReactDOMComponentTree.precacheNode(this, openingComment);\n this._closingComment = closingComment;\n return lazyTree;\n } else {\n var escapedText = escapeTextContentForBrowser(this._stringText);\n\n if (transaction.renderToStaticMarkup) {\n // Normally we'd wrap this between comment nodes for the reasons stated\n // above, but since this is a situation where React won't take over\n // (static pages), we can simply return the text as it is.\n return escapedText;\n }\n\n return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';\n }\n },\n\n /**\n * Updates this component by updating the text content.\n *\n * @param {ReactText} nextText The next text content\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n receiveComponent: function (nextText, transaction) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n // TODO: Save this as pending props and use performUpdateIfNecessary\n // and/or updateComponent to do the actual update for consistency with\n // other component types?\n this._stringText = nextStringText;\n var commentNodes = this.getHostNode();\n DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n }\n }\n },\n\n getHostNode: function () {\n var hostNode = this._commentNodes;\n if (hostNode) {\n return hostNode;\n }\n if (!this._closingComment) {\n var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n var node = openingComment.nextSibling;\n while (true) {\n !(node != null) ? false ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;\n if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {\n this._closingComment = node;\n break;\n }\n node = node.nextSibling;\n }\n }\n hostNode = [this._hostNode, this._closingComment];\n this._commentNodes = hostNode;\n return hostNode;\n },\n\n unmountComponent: function () {\n this._closingComment = null;\n this._commentNodes = null;\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMTextComponent;\n\n/***/ }),\n/* 215 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar LinkedValueUtils = __webpack_require__(49);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactUpdates = __webpack_require__(9);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nvar didWarnValueLink = false;\nvar didWarnValDefaultVal = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMTextarea.updateWrapper(this);\n }\n}\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = {\n getHostProps: function (inst, props) {\n !(props.dangerouslySetInnerHTML == null) ? false ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;\n\n // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated. We could add a check in setTextContent\n // to only set the value if/when the value differs from the node value (which would\n // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.\n // The value can be a boolean or object so that's why it's forced to be a string.\n var hostProps = _assign({}, props, {\n value: undefined,\n defaultValue: undefined,\n children: '' + inst._wrapperState.initialValue,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (false) {\n LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValDefaultVal = true;\n }\n }\n\n var value = LinkedValueUtils.getValue(props);\n var initialValue = value;\n\n // Only bother fetching default value if we're going to use it\n if (value == null) {\n var defaultValue = props.defaultValue;\n // TODO (yungsters): Remove support for children content in <textarea>.\n var children = props.children;\n if (children != null) {\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;\n }\n !(defaultValue == null) ? false ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;\n if (Array.isArray(children)) {\n !(children.length <= 1) ? false ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;\n children = children[0];\n }\n\n defaultValue = '' + children;\n }\n if (defaultValue == null) {\n defaultValue = '';\n }\n initialValue = defaultValue;\n }\n\n inst._wrapperState = {\n initialValue: '' + initialValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n if (props.defaultValue == null) {\n node.defaultValue = newValue;\n }\n }\n if (props.defaultValue != null) {\n node.defaultValue = props.defaultValue;\n }\n },\n\n postMountWrapper: function (inst) {\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var textContent = node.textContent;\n\n // Only set node.value if textContent is equal to the expected\n // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n // will populate textContent as well.\n // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n if (textContent === inst._wrapperState.initialValue) {\n node.value = textContent;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n ReactUpdates.asap(forceUpdateIfMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMTextarea;\n\n/***/ }),\n/* 216 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n !('_hostNode' in instA) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n !('_hostNode' in instB) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n var depthA = 0;\n for (var tempA = instA; tempA; tempA = tempA._hostParent) {\n depthA++;\n }\n var depthB = 0;\n for (var tempB = instB; tempB; tempB = tempB._hostParent) {\n depthB++;\n }\n\n // If A is deeper, crawl up.\n while (depthA - depthB > 0) {\n instA = instA._hostParent;\n depthA--;\n }\n\n // If B is deeper, crawl up.\n while (depthB - depthA > 0) {\n instB = instB._hostParent;\n depthB--;\n }\n\n // Walk in lockstep until we find a match.\n var depth = depthA;\n while (depth--) {\n if (instA === instB) {\n return instA;\n }\n instA = instA._hostParent;\n instB = instB._hostParent;\n }\n return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\nfunction isAncestor(instA, instB) {\n !('_hostNode' in instA) ? false ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n !('_hostNode' in instB) ? false ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n\n while (instB) {\n if (instB === instA) {\n return true;\n }\n instB = instB._hostParent;\n }\n return false;\n}\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n !('_hostNode' in inst) ? false ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;\n\n return inst._hostParent;\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n var path = [];\n while (inst) {\n path.push(inst);\n inst = inst._hostParent;\n }\n var i;\n for (i = path.length; i-- > 0;) {\n fn(path[i], 'captured', arg);\n }\n for (i = 0; i < path.length; i++) {\n fn(path[i], 'bubbled', arg);\n }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n var common = from && to ? getLowestCommonAncestor(from, to) : null;\n var pathFrom = [];\n while (from && from !== common) {\n pathFrom.push(from);\n from = from._hostParent;\n }\n var pathTo = [];\n while (to && to !== common) {\n pathTo.push(to);\n to = to._hostParent;\n }\n var i;\n for (i = 0; i < pathFrom.length; i++) {\n fn(pathFrom[i], 'bubbled', argFrom);\n }\n for (i = pathTo.length; i-- > 0;) {\n fn(pathTo[i], 'captured', argTo);\n }\n}\n\nmodule.exports = {\n isAncestor: isAncestor,\n getLowestCommonAncestor: getLowestCommonAncestor,\n getParentInstance: getParentInstance,\n traverseTwoPhase: traverseTwoPhase,\n traverseEnterLeave: traverseEnterLeave\n};\n\n/***/ }),\n/* 217 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar ReactUpdates = __webpack_require__(9);\nvar Transaction = __webpack_require__(29);\n\nvar emptyFunction = __webpack_require__(7);\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function () {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\n_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n }\n});\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function (callback, a, b, c, d, e) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n return callback(a, b, c, d, e);\n } else {\n return transaction.perform(callback, null, a, b, c, d, e);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;\n\n/***/ }),\n/* 218 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ARIADOMPropertyConfig = __webpack_require__(192);\nvar BeforeInputEventPlugin = __webpack_require__(194);\nvar ChangeEventPlugin = __webpack_require__(196);\nvar DefaultEventPluginOrder = __webpack_require__(198);\nvar EnterLeaveEventPlugin = __webpack_require__(199);\nvar HTMLDOMPropertyConfig = __webpack_require__(201);\nvar ReactComponentBrowserEnvironment = __webpack_require__(203);\nvar ReactDOMComponent = __webpack_require__(206);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactDOMEmptyComponent = __webpack_require__(208);\nvar ReactDOMTreeTraversal = __webpack_require__(216);\nvar ReactDOMTextComponent = __webpack_require__(214);\nvar ReactDefaultBatchingStrategy = __webpack_require__(217);\nvar ReactEventListener = __webpack_require__(221);\nvar ReactInjection = __webpack_require__(222);\nvar ReactReconcileTransaction = __webpack_require__(227);\nvar SVGDOMPropertyConfig = __webpack_require__(232);\nvar SelectEventPlugin = __webpack_require__(233);\nvar SimpleEventPlugin = __webpack_require__(234);\n\nvar alreadyInjected = false;\n\nfunction inject() {\n if (alreadyInjected) {\n // TODO: This is currently true because these injections are shared between\n // the client and the server package. They should be built independently\n // and not share any injection state. Then this problem will be solved.\n return;\n }\n alreadyInjected = true;\n\n ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n\n /**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\n ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n ReactInjection.EventPluginHub.injectEventPluginsByName({\n SimpleEventPlugin: SimpleEventPlugin,\n EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n ChangeEventPlugin: ChangeEventPlugin,\n SelectEventPlugin: SelectEventPlugin,\n BeforeInputEventPlugin: BeforeInputEventPlugin\n });\n\n ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);\n\n ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);\n\n ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n return new ReactDOMEmptyComponent(instantiate);\n });\n\n ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n\n ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n}\n\nmodule.exports = {\n inject: inject\n};\n\n/***/ }),\n/* 219 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n/***/ }),\n/* 220 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar EventPluginHub = __webpack_require__(20);\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n */\n handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;\n\n/***/ }),\n/* 221 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar EventListener = __webpack_require__(71);\nvar ExecutionEnvironment = __webpack_require__(5);\nvar PooledClass = __webpack_require__(13);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactUpdates = __webpack_require__(9);\n\nvar getEventTarget = __webpack_require__(56);\nvar getUnboundedScrollPosition = __webpack_require__(170);\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findParent(inst) {\n // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n // traversal, but caching is difficult to do correctly without using a\n // mutation observer to listen for all DOM changes.\n while (inst._hostParent) {\n inst = inst._hostParent;\n }\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n var container = rootNode.parentNode;\n return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n this.topLevelType = topLevelType;\n this.nativeEvent = nativeEvent;\n this.ancestors = [];\n}\n_assign(TopLevelCallbackBookKeeping.prototype, {\n destructor: function () {\n this.topLevelType = null;\n this.nativeEvent = null;\n this.ancestors.length = 0;\n }\n});\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\n // Loop through the hierarchy, in case there's any nested components.\n // It's important that we build the array of ancestors before calling any\n // event handlers, because event handlers can modify the DOM, leading to\n // inconsistencies with ReactMount's node cache. See #1105.\n var ancestor = targetInst;\n do {\n bookKeeping.ancestors.push(ancestor);\n ancestor = ancestor && findParent(ancestor);\n } while (ancestor);\n\n for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n targetInst = bookKeeping.ancestors[i];\n ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n }\n}\n\nfunction scrollValueMonitor(cb) {\n var scrollPosition = getUnboundedScrollPosition(window);\n cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n _enabled: true,\n _handleTopLevel: null,\n\n WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n setHandleTopLevel: function (handleTopLevel) {\n ReactEventListener._handleTopLevel = handleTopLevel;\n },\n\n setEnabled: function (enabled) {\n ReactEventListener._enabled = !!enabled;\n },\n\n isEnabled: function () {\n return ReactEventListener._enabled;\n },\n\n /**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapBubbledEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n /**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapCapturedEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n monitorScrollValue: function (refresh) {\n var callback = scrollValueMonitor.bind(null, refresh);\n EventListener.listen(window, 'scroll', callback);\n },\n\n dispatchEvent: function (topLevelType, nativeEvent) {\n if (!ReactEventListener._enabled) {\n return;\n }\n\n var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n try {\n // Event queue being processed in the same cycle allows\n // `preventDefault`.\n ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n } finally {\n TopLevelCallbackBookKeeping.release(bookKeeping);\n }\n }\n};\n\nmodule.exports = ReactEventListener;\n\n/***/ }),\n/* 222 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar DOMProperty = __webpack_require__(15);\nvar EventPluginHub = __webpack_require__(20);\nvar EventPluginUtils = __webpack_require__(47);\nvar ReactComponentEnvironment = __webpack_require__(50);\nvar ReactEmptyComponent = __webpack_require__(80);\nvar ReactBrowserEventEmitter = __webpack_require__(27);\nvar ReactHostComponent = __webpack_require__(82);\nvar ReactUpdates = __webpack_require__(9);\n\nvar ReactInjection = {\n Component: ReactComponentEnvironment.injection,\n DOMProperty: DOMProperty.injection,\n EmptyComponent: ReactEmptyComponent.injection,\n EventPluginHub: EventPluginHub.injection,\n EventPluginUtils: EventPluginUtils.injection,\n EventEmitter: ReactBrowserEventEmitter.injection,\n HostComponent: ReactHostComponent.injection,\n Updates: ReactUpdates.injection\n};\n\nmodule.exports = ReactInjection;\n\n/***/ }),\n/* 223 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar adler32 = __webpack_require__(245);\n\nvar TAG_END = /\\/?>/;\nvar COMMENT_START = /^<\\!\\-\\-/;\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function (markup) {\n var checksum = adler32(markup);\n\n // Add checksum (handle both parent tags, comments and self-closing tags)\n if (COMMENT_START.test(markup)) {\n return markup;\n } else {\n return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\"$&');\n }\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function (markup, element) {\n var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;\n\n/***/ }),\n/* 224 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactComponentEnvironment = __webpack_require__(50);\nvar ReactInstanceMap = __webpack_require__(22);\nvar ReactInstrumentation = __webpack_require__(8);\n\nvar ReactCurrentOwner = __webpack_require__(11);\nvar ReactReconciler = __webpack_require__(16);\nvar ReactChildReconciler = __webpack_require__(202);\n\nvar emptyFunction = __webpack_require__(7);\nvar flattenChildren = __webpack_require__(248);\nvar invariant = __webpack_require__(0);\n\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'INSERT_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction makeMove(child, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'MOVE_EXISTING',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: ReactReconciler.getHostNode(child),\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction makeRemove(child, node) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'REMOVE_NODE',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: node,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\nfunction makeSetMarkup(markup) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'SET_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction makeTextContent(textContent) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'TEXT_CONTENT',\n content: textContent,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\nfunction enqueue(queue, update) {\n if (update) {\n queue = queue || [];\n queue.push(update);\n }\n return queue;\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue(inst, updateQueue) {\n ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n\nvar setChildrenForInstrumentation = emptyFunction;\nif (false) {\n var getDebugID = function (inst) {\n if (!inst._debugID) {\n // Check for ART-like instances. TODO: This is silly/gross.\n var internal;\n if (internal = ReactInstanceMap.get(inst)) {\n inst = internal;\n }\n }\n return inst._debugID;\n };\n setChildrenForInstrumentation = function (children) {\n var debugID = getDebugID(this);\n // TODO: React Native empty components are also multichild.\n // This means they still get into this method but don't have _debugID.\n if (debugID !== 0) {\n ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n return children[key]._debugID;\n }) : []);\n }\n };\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {\n if (false) {\n var selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n }\n }\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n },\n\n _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n var nextChildren;\n var selfDebugID = 0;\n if (false) {\n selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n }\n }\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n },\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function (nestedChildren, transaction, context) {\n var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n this._renderedChildren = children;\n\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n var selfDebugID = 0;\n if (false) {\n selfDebugID = getDebugID(this);\n }\n var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n child._mountIndex = index++;\n mountImages.push(mountImage);\n }\n }\n\n if (false) {\n setChildrenForInstrumentation.call(this, children);\n }\n\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function (nextContent) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n true ? false ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n // Set new text content.\n var updates = [makeTextContent(nextContent)];\n processQueue(this, updates);\n },\n\n /**\n * Replaces any rendered children with a markup string.\n *\n * @param {string} nextMarkup String of markup.\n * @internal\n */\n updateMarkup: function (nextMarkup) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n true ? false ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n var updates = [makeSetMarkup(nextMarkup)];\n processQueue(this, updates);\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function (nextNestedChildrenElements, transaction, context) {\n // Hook used by React ART\n this._updateChildren(nextNestedChildrenElements, transaction, context);\n },\n\n /**\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function (nextNestedChildrenElements, transaction, context) {\n var prevChildren = this._renderedChildren;\n var removedNodes = {};\n var mountImages = [];\n var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n if (!nextChildren && !prevChildren) {\n return;\n }\n var updates = null;\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var nextIndex = 0;\n var lastIndex = 0;\n // `nextMountIndex` will increment for each newly mounted child.\n var nextMountIndex = 0;\n var lastPlacedNode = null;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n // The `removedNodes` loop below will actually remove the child.\n }\n // The child must be instantiated before it's mounted.\n updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n nextMountIndex++;\n }\n nextIndex++;\n lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n }\n // Remove children that are no longer present.\n for (name in removedNodes) {\n if (removedNodes.hasOwnProperty(name)) {\n updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n }\n }\n if (updates) {\n processQueue(this, updates);\n }\n this._renderedChildren = nextChildren;\n\n if (false) {\n setChildrenForInstrumentation.call(this, nextChildren);\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted. It does not actually perform any\n * backend operations.\n *\n * @internal\n */\n unmountChildren: function (safely) {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren, safely);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function (child, afterNode, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n return makeMove(child, afterNode, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function (child, afterNode, mountImage) {\n return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function (child, node) {\n return makeRemove(child, node);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {\n child._mountIndex = index;\n return this.createChild(child, afterNode, mountImage);\n },\n\n /**\n * Unmounts a rendered child.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @private\n */\n _unmountChild: function (child, node) {\n var update = this.removeChild(child, node);\n child._mountIndex = null;\n return update;\n }\n }\n};\n\nmodule.exports = ReactMultiChild;\n\n/***/ }),\n/* 225 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\nfunction isValidOwner(object) {\n return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');\n}\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function (component, ref, owner) {\n !isValidOwner(owner) ? false ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function (component, ref, owner) {\n !isValidOwner(owner) ? false ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;\n var ownerPublicInstance = owner.getPublicInstance();\n // Check that `component`'s owner is still alive and that `component` is still the current ref\n // because we do not want to detach the ref if another component stole it.\n if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n};\n\nmodule.exports = ReactOwner;\n\n/***/ }),\n/* 226 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n/***/ }),\n/* 227 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar CallbackQueue = __webpack_require__(76);\nvar PooledClass = __webpack_require__(13);\nvar ReactBrowserEventEmitter = __webpack_require__(27);\nvar ReactInputSelection = __webpack_require__(83);\nvar ReactInstrumentation = __webpack_require__(8);\nvar Transaction = __webpack_require__(29);\nvar ReactUpdateQueue = __webpack_require__(52);\n\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\nvar SELECTION_RESTORATION = {\n /**\n * @return {Selection} Selection information.\n */\n initialize: ReactInputSelection.getSelectionInformation,\n /**\n * @param {Selection} sel Selection information returned from `initialize`.\n */\n close: ReactInputSelection.restoreSelection\n};\n\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\nvar EVENT_SUPPRESSION = {\n /**\n * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n * the reconciliation.\n */\n initialize: function () {\n var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n ReactBrowserEventEmitter.setEnabled(false);\n return currentlyEnabled;\n },\n\n /**\n * @param {boolean} previouslyEnabled Enabled status of\n * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n * restores the previous value.\n */\n close: function (previouslyEnabled) {\n ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n }\n};\n\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function () {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function () {\n this.reactMountReady.notifyAll();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n\nif (false) {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\nfunction ReactReconcileTransaction(useCreateElement) {\n this.reinitializeTransaction();\n // Only server-side rendering really needs this option (see\n // `ReactServerRendering`), but server-side uses\n // `ReactServerRenderingTransaction` instead. This option is here so that it's\n // accessible and defaults to false when `ReactDOMComponent` and\n // `ReactDOMTextComponent` checks it in `mountComponent`.`\n this.renderToStaticMarkup = false;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.useCreateElement = useCreateElement;\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap procedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return this.reactMountReady;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return ReactUpdateQueue;\n },\n\n /**\n * Save current transaction state -- if the return value from this method is\n * passed to `rollback`, the transaction will be reset to that state.\n */\n checkpoint: function () {\n // reactMountReady is the our only stateful wrapper\n return this.reactMountReady.checkpoint();\n },\n\n rollback: function (checkpoint) {\n this.reactMountReady.rollback(checkpoint);\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\n_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\n\nmodule.exports = ReactReconcileTransaction;\n\n/***/ }),\n/* 228 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar ReactOwner = __webpack_require__(225);\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n var prevRef = null;\n var prevOwner = null;\n if (prevElement !== null && typeof prevElement === 'object') {\n prevRef = prevElement.ref;\n prevOwner = prevElement._owner;\n }\n\n var nextRef = null;\n var nextOwner = null;\n if (nextElement !== null && typeof nextElement === 'object') {\n nextRef = nextElement.ref;\n nextOwner = nextElement._owner;\n }\n\n return prevRef !== nextRef ||\n // If owner changes but we have an unchanged function ref, don't update refs\n typeof nextRef === 'string' && nextOwner !== prevOwner;\n};\n\nReactRef.detachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;\n\n/***/ }),\n/* 229 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar PooledClass = __webpack_require__(13);\nvar Transaction = __webpack_require__(29);\nvar ReactInstrumentation = __webpack_require__(8);\nvar ReactServerUpdateQueue = __webpack_require__(230);\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [];\n\nif (false) {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\nvar noopCallbackQueue = {\n enqueue: function () {}\n};\n\n/**\n * @class ReactServerRenderingTransaction\n * @param {boolean} renderToStaticMarkup\n */\nfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n this.reinitializeTransaction();\n this.renderToStaticMarkup = renderToStaticMarkup;\n this.useCreateElement = false;\n this.updateQueue = new ReactServerUpdateQueue(this);\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array} Empty list of operation wrap procedures.\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return noopCallbackQueue;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return this.updateQueue;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {},\n\n checkpoint: function () {},\n\n rollback: function () {}\n};\n\n_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\nmodule.exports = ReactServerRenderingTransaction;\n\n/***/ }),\n/* 230 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ReactUpdateQueue = __webpack_require__(52);\n\nvar warning = __webpack_require__(1);\n\nfunction warnNoop(publicInstance, callerName) {\n if (false) {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the update queue used for server rendering.\n * It delegates to ReactUpdateQueue while server rendering is in progress and\n * switches to ReactNoopUpdateQueue after the transaction has completed.\n * @class ReactServerUpdateQueue\n * @param {Transaction} transaction\n */\n\nvar ReactServerUpdateQueue = function () {\n function ReactServerUpdateQueue(transaction) {\n _classCallCheck(this, ReactServerUpdateQueue);\n\n this.transaction = transaction;\n }\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n\n\n ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {\n return false;\n };\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);\n }\n };\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueForceUpdate(publicInstance);\n } else {\n warnNoop(publicInstance, 'forceUpdate');\n }\n };\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} completeState Next state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);\n } else {\n warnNoop(publicInstance, 'replaceState');\n }\n };\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} partialState Next partial state to be merged with state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueSetState(publicInstance, partialState);\n } else {\n warnNoop(publicInstance, 'setState');\n }\n };\n\n return ReactServerUpdateQueue;\n}();\n\nmodule.exports = ReactServerUpdateQueue;\n\n/***/ }),\n/* 231 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nmodule.exports = '15.6.2';\n\n/***/ }),\n/* 232 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar NS = {\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace'\n};\n\n// We use attributes for everything SVG so let's avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\nvar ATTRS = {\n accentHeight: 'accent-height',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 'alignment-baseline',\n allowReorder: 'allowReorder',\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 'arabic-form',\n ascent: 0,\n attributeName: 'attributeName',\n attributeType: 'attributeType',\n autoReverse: 'autoReverse',\n azimuth: 0,\n baseFrequency: 'baseFrequency',\n baseProfile: 'baseProfile',\n baselineShift: 'baseline-shift',\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 'calcMode',\n capHeight: 'cap-height',\n clip: 0,\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n clipPathUnits: 'clipPathUnits',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n contentScriptType: 'contentScriptType',\n contentStyleType: 'contentStyleType',\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 'diffuseConstant',\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 'dominant-baseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 'edgeMode',\n elevation: 0,\n enableBackground: 'enable-background',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 'externalResourcesRequired',\n fill: 0,\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n filter: 0,\n filterRes: 'filterRes',\n filterUnits: 'filterUnits',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n focusable: 0,\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n glyphRef: 'glyphRef',\n gradientTransform: 'gradientTransform',\n gradientUnits: 'gradientUnits',\n hanging: 0,\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n ideographic: 0,\n imageRendering: 'image-rendering',\n 'in': 0,\n in2: 0,\n intercept: 0,\n k: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n kernelMatrix: 'kernelMatrix',\n kernelUnitLength: 'kernelUnitLength',\n kerning: 0,\n keyPoints: 'keyPoints',\n keySplines: 'keySplines',\n keyTimes: 'keyTimes',\n lengthAdjust: 'lengthAdjust',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n limitingConeAngle: 'limitingConeAngle',\n local: 0,\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n markerHeight: 'markerHeight',\n markerUnits: 'markerUnits',\n markerWidth: 'markerWidth',\n mask: 0,\n maskContentUnits: 'maskContentUnits',\n maskUnits: 'maskUnits',\n mathematical: 0,\n mode: 0,\n numOctaves: 'numOctaves',\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pathLength: 'pathLength',\n patternContentUnits: 'patternContentUnits',\n patternTransform: 'patternTransform',\n patternUnits: 'patternUnits',\n pointerEvents: 'pointer-events',\n points: 0,\n pointsAtX: 'pointsAtX',\n pointsAtY: 'pointsAtY',\n pointsAtZ: 'pointsAtZ',\n preserveAlpha: 'preserveAlpha',\n preserveAspectRatio: 'preserveAspectRatio',\n primitiveUnits: 'primitiveUnits',\n r: 0,\n radius: 0,\n refX: 'refX',\n refY: 'refY',\n renderingIntent: 'rendering-intent',\n repeatCount: 'repeatCount',\n repeatDur: 'repeatDur',\n requiredExtensions: 'requiredExtensions',\n requiredFeatures: 'requiredFeatures',\n restart: 0,\n result: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n seed: 0,\n shapeRendering: 'shape-rendering',\n slope: 0,\n spacing: 0,\n specularConstant: 'specularConstant',\n specularExponent: 'specularExponent',\n speed: 0,\n spreadMethod: 'spreadMethod',\n startOffset: 'startOffset',\n stdDeviation: 'stdDeviation',\n stemh: 0,\n stemv: 0,\n stitchTiles: 'stitchTiles',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n surfaceScale: 'surfaceScale',\n systemLanguage: 'systemLanguage',\n tableValues: 'tableValues',\n targetX: 'targetX',\n targetY: 'targetY',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n textLength: 'textLength',\n to: 0,\n transform: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicode: 0,\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n values: 0,\n vectorEffect: 'vector-effect',\n version: 0,\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n viewBox: 'viewBox',\n viewTarget: 'viewTarget',\n visibility: 0,\n widths: 0,\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n x: 0,\n xHeight: 'x-height',\n x1: 0,\n x2: 0,\n xChannelSelector: 'xChannelSelector',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlns: 0,\n xmlnsXlink: 'xmlns:xlink',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n y: 0,\n y1: 0,\n y2: 0,\n yChannelSelector: 'yChannelSelector',\n z: 0,\n zoomAndPan: 'zoomAndPan'\n};\n\nvar SVGDOMPropertyConfig = {\n Properties: {},\n DOMAttributeNamespaces: {\n xlinkActuate: NS.xlink,\n xlinkArcrole: NS.xlink,\n xlinkHref: NS.xlink,\n xlinkRole: NS.xlink,\n xlinkShow: NS.xlink,\n xlinkTitle: NS.xlink,\n xlinkType: NS.xlink,\n xmlBase: NS.xml,\n xmlLang: NS.xml,\n xmlSpace: NS.xml\n },\n DOMAttributeNames: {}\n};\n\nObject.keys(ATTRS).forEach(function (key) {\n SVGDOMPropertyConfig.Properties[key] = 0;\n if (ATTRS[key]) {\n SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n }\n});\n\nmodule.exports = SVGDOMPropertyConfig;\n\n/***/ }),\n/* 233 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar EventPropagators = __webpack_require__(21);\nvar ExecutionEnvironment = __webpack_require__(5);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactInputSelection = __webpack_require__(83);\nvar SyntheticEvent = __webpack_require__(10);\n\nvar getActiveElement = __webpack_require__(73);\nvar isTextInputElement = __webpack_require__(93);\nvar shallowEqual = __webpack_require__(41);\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nvar eventTypes = {\n select: {\n phasedRegistrationNames: {\n bubbled: 'onSelect',\n captured: 'onSelectCapture'\n },\n dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n }\n};\n\nvar activeElement = null;\nvar activeElementInst = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n// Track whether a listener exists for this plugin. If none exist, we do\n// not extract events. See #3639.\nvar hasListener = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else if (window.getSelection) {\n var selection = window.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n } else if (document.selection) {\n var range = document.selection.createRange();\n return {\n parentElement: range.parentElement(),\n text: range.text,\n top: range.boundingTop,\n left: range.boundingLeft\n };\n }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n return null;\n }\n\n // Only fire when selection has actually changed.\n var currentSelection = getSelection(activeElement);\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n\n var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n\n syntheticEvent.type = 'select';\n syntheticEvent.target = activeElement;\n\n EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\n return syntheticEvent;\n }\n\n return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (!hasListener) {\n return null;\n }\n\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n switch (topLevelType) {\n // Track the input node that has focus.\n case 'topFocus':\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement = targetNode;\n activeElementInst = targetInst;\n lastSelection = null;\n }\n break;\n case 'topBlur':\n activeElement = null;\n activeElementInst = null;\n lastSelection = null;\n break;\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n case 'topMouseDown':\n mouseDown = true;\n break;\n case 'topContextMenu':\n case 'topMouseUp':\n mouseDown = false;\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n case 'topSelectionChange':\n if (skipSelectionChangeEvent) {\n break;\n }\n // falls through\n case 'topKeyDown':\n case 'topKeyUp':\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n }\n\n return null;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n if (registrationName === 'onSelect') {\n hasListener = true;\n }\n }\n};\n\nmodule.exports = SelectEventPlugin;\n\n/***/ }),\n/* 234 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar EventListener = __webpack_require__(71);\nvar EventPropagators = __webpack_require__(21);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar SyntheticAnimationEvent = __webpack_require__(235);\nvar SyntheticClipboardEvent = __webpack_require__(236);\nvar SyntheticEvent = __webpack_require__(10);\nvar SyntheticFocusEvent = __webpack_require__(239);\nvar SyntheticKeyboardEvent = __webpack_require__(241);\nvar SyntheticMouseEvent = __webpack_require__(28);\nvar SyntheticDragEvent = __webpack_require__(238);\nvar SyntheticTouchEvent = __webpack_require__(242);\nvar SyntheticTransitionEvent = __webpack_require__(243);\nvar SyntheticUIEvent = __webpack_require__(23);\nvar SyntheticWheelEvent = __webpack_require__(244);\n\nvar emptyFunction = __webpack_require__(7);\nvar getEventCharCode = __webpack_require__(54);\nvar invariant = __webpack_require__(0);\n\n/**\n * Turns\n * ['abort', ...]\n * into\n * eventTypes = {\n * 'abort': {\n * phasedRegistrationNames: {\n * bubbled: 'onAbort',\n * captured: 'onAbortCapture',\n * },\n * dependencies: ['topAbort'],\n * },\n * ...\n * };\n * topLevelEventsToDispatchConfig = {\n * 'topAbort': { sameConfig }\n * };\n */\nvar eventTypes = {};\nvar topLevelEventsToDispatchConfig = {};\n['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) {\n var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n var onEvent = 'on' + capitalizedEvent;\n var topEvent = 'top' + capitalizedEvent;\n\n var type = {\n phasedRegistrationNames: {\n bubbled: onEvent,\n captured: onEvent + 'Capture'\n },\n dependencies: [topEvent]\n };\n eventTypes[event] = type;\n topLevelEventsToDispatchConfig[topEvent] = type;\n});\n\nvar onClickListeners = {};\n\nfunction getDictionaryKey(inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n}\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nvar SimpleEventPlugin = {\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n if (!dispatchConfig) {\n return null;\n }\n var EventConstructor;\n switch (topLevelType) {\n case 'topAbort':\n case 'topCanPlay':\n case 'topCanPlayThrough':\n case 'topDurationChange':\n case 'topEmptied':\n case 'topEncrypted':\n case 'topEnded':\n case 'topError':\n case 'topInput':\n case 'topInvalid':\n case 'topLoad':\n case 'topLoadedData':\n case 'topLoadedMetadata':\n case 'topLoadStart':\n case 'topPause':\n case 'topPlay':\n case 'topPlaying':\n case 'topProgress':\n case 'topRateChange':\n case 'topReset':\n case 'topSeeked':\n case 'topSeeking':\n case 'topStalled':\n case 'topSubmit':\n case 'topSuspend':\n case 'topTimeUpdate':\n case 'topVolumeChange':\n case 'topWaiting':\n // HTML Events\n // @see http://www.w3.org/TR/html5/index.html#events-0\n EventConstructor = SyntheticEvent;\n break;\n case 'topKeyPress':\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return null;\n }\n /* falls through */\n case 'topKeyDown':\n case 'topKeyUp':\n EventConstructor = SyntheticKeyboardEvent;\n break;\n case 'topBlur':\n case 'topFocus':\n EventConstructor = SyntheticFocusEvent;\n break;\n case 'topClick':\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return null;\n }\n /* falls through */\n case 'topDoubleClick':\n case 'topMouseDown':\n case 'topMouseMove':\n case 'topMouseUp':\n // TODO: Disabled elements should not respond to mouse events\n /* falls through */\n case 'topMouseOut':\n case 'topMouseOver':\n case 'topContextMenu':\n EventConstructor = SyntheticMouseEvent;\n break;\n case 'topDrag':\n case 'topDragEnd':\n case 'topDragEnter':\n case 'topDragExit':\n case 'topDragLeave':\n case 'topDragOver':\n case 'topDragStart':\n case 'topDrop':\n EventConstructor = SyntheticDragEvent;\n break;\n case 'topTouchCancel':\n case 'topTouchEnd':\n case 'topTouchMove':\n case 'topTouchStart':\n EventConstructor = SyntheticTouchEvent;\n break;\n case 'topAnimationEnd':\n case 'topAnimationIteration':\n case 'topAnimationStart':\n EventConstructor = SyntheticAnimationEvent;\n break;\n case 'topTransitionEnd':\n EventConstructor = SyntheticTransitionEvent;\n break;\n case 'topScroll':\n EventConstructor = SyntheticUIEvent;\n break;\n case 'topWheel':\n EventConstructor = SyntheticWheelEvent;\n break;\n case 'topCopy':\n case 'topCut':\n case 'topPaste':\n EventConstructor = SyntheticClipboardEvent;\n break;\n }\n !EventConstructor ? false ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;\n var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n if (!onClickListeners[key]) {\n onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);\n }\n }\n },\n\n willDeleteListener: function (inst, registrationName) {\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n onClickListeners[key].remove();\n delete onClickListeners[key];\n }\n }\n};\n\nmodule.exports = SimpleEventPlugin;\n\n/***/ }),\n/* 235 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar AnimationEventInterface = {\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\nmodule.exports = SyntheticAnimationEvent;\n\n/***/ }),\n/* 236 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n clipboardData: function (event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nmodule.exports = SyntheticClipboardEvent;\n\n/***/ }),\n/* 237 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\nmodule.exports = SyntheticCompositionEvent;\n\n/***/ }),\n/* 238 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar SyntheticMouseEvent = __webpack_require__(28);\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nmodule.exports = SyntheticDragEvent;\n\n/***/ }),\n/* 239 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(23);\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nmodule.exports = SyntheticFocusEvent;\n\n/***/ }),\n/* 240 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\nvar InputEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\n\nmodule.exports = SyntheticInputEvent;\n\n/***/ }),\n/* 241 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(23);\n\nvar getEventCharCode = __webpack_require__(54);\nvar getEventKey = __webpack_require__(249);\nvar getEventModifierState = __webpack_require__(55);\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n key: getEventKey,\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function (event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n return 0;\n },\n keyCode: function (event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n },\n which: function (event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nmodule.exports = SyntheticKeyboardEvent;\n\n/***/ }),\n/* 242 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(23);\n\nvar getEventModifierState = __webpack_require__(55);\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: getEventModifierState\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nmodule.exports = SyntheticTouchEvent;\n\n/***/ }),\n/* 243 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar TransitionEventInterface = {\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\nmodule.exports = SyntheticTransitionEvent;\n\n/***/ }),\n/* 244 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar SyntheticMouseEvent = __webpack_require__(28);\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n deltaX: function (event) {\n return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n },\n deltaY: function (event) {\n return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0;\n },\n deltaZ: null,\n\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nmodule.exports = SyntheticWheelEvent;\n\n/***/ }),\n/* 245 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar MOD = 65521;\n\n// adler32 is not cryptographically strong, and is only used to sanity check that\n// markup generated on the server matches the markup generated on the client.\n// This implementation (a modified version of the SheetJS version) has been optimized\n// for our use case, at the expense of conforming to the adler32 specification\n// for non-ascii inputs.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n var i = 0;\n var l = data.length;\n var m = l & ~0x3;\n while (i < m) {\n var n = Math.min(i + 4096, m);\n for (; i < n; i += 4) {\n b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n }\n a %= MOD;\n b %= MOD;\n }\n for (; i < l; i++) {\n b += a += data.charCodeAt(i);\n }\n a %= MOD;\n b %= MOD;\n return a | b << 16;\n}\n\nmodule.exports = adler32;\n\n/***/ }),\n/* 246 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar CSSProperty = __webpack_require__(75);\nvar warning = __webpack_require__(1);\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\nvar styleWarnings = {};\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @param {ReactDOMComponent} component\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, component, isCustomProperty) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n if (isEmpty) {\n return '';\n }\n\n var isNonNumeric = isNaN(value);\n if (isCustomProperty || isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n return '' + value; // cast to string\n }\n\n if (typeof value === 'string') {\n if (false) {\n // Allow '0' to pass through without warning. 0 is already special and\n // doesn't require units, so we don't need to warn about it.\n if (component && value !== '0') {\n var owner = component._currentElement._owner;\n var ownerName = owner ? owner.getName() : null;\n if (ownerName && !styleWarnings[ownerName]) {\n styleWarnings[ownerName] = {};\n }\n var warned = false;\n if (ownerName) {\n var warnings = styleWarnings[ownerName];\n warned = warnings[name];\n if (!warned) {\n warnings[name] = true;\n }\n }\n if (!warned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;\n }\n }\n }\n value = value.trim();\n }\n return value + 'px';\n}\n\nmodule.exports = dangerousStyleValue;\n\n/***/ }),\n/* 247 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactCurrentOwner = __webpack_require__(11);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactInstanceMap = __webpack_require__(22);\n\nvar getHostComponentFromComposite = __webpack_require__(89);\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\n/**\n * Returns the DOM node rendered by this element.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {?DOMElement} The root node of this element.\n */\nfunction findDOMNode(componentOrElement) {\n if (false) {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrElement == null) {\n return null;\n }\n if (componentOrElement.nodeType === 1) {\n return componentOrElement;\n }\n\n var inst = ReactInstanceMap.get(componentOrElement);\n if (inst) {\n inst = getHostComponentFromComposite(inst);\n return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n }\n\n if (typeof componentOrElement.render === 'function') {\n true ? false ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;\n } else {\n true ? false ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;\n }\n}\n\nmodule.exports = findDOMNode;\n\n/***/ }),\n/* 248 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar KeyEscapeUtils = __webpack_require__(48);\nvar traverseAllChildren = __webpack_require__(95);\nvar warning = __webpack_require__(1);\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && \"production\" === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = __webpack_require__(97);\n}\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n * @param {number=} selfDebugID Optional debugID of the current internal instance.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {\n // We found a component instance.\n if (traverseContext && typeof traverseContext === 'object') {\n var result = traverseContext;\n var keyUnique = result[name] === undefined;\n if (false) {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children, selfDebugID) {\n if (children == null) {\n return children;\n }\n var result = {};\n\n if (false) {\n traverseAllChildren(children, function (traverseContext, child, name) {\n return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);\n }, result);\n } else {\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n }\n return result;\n}\n\nmodule.exports = flattenChildren;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(43)))\n\n/***/ }),\n/* 249 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar getEventCharCode = __webpack_require__(54);\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n Esc: 'Escape',\n Spacebar: ' ',\n Left: 'ArrowLeft',\n Up: 'ArrowUp',\n Right: 'ArrowRight',\n Down: 'ArrowDown',\n Del: 'Delete',\n Win: 'OS',\n Menu: 'ContextMenu',\n Apps: 'ContextMenu',\n Scroll: 'ScrollLock',\n MozPrintableKey: 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 112: 'F1',\n 113: 'F2',\n 114: 'F3',\n 115: 'F4',\n 116: 'F5',\n 117: 'F6',\n 118: 'F7',\n 119: 'F8',\n 120: 'F9',\n 121: 'F10',\n 122: 'F11',\n 123: 'F12',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 224: 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (key !== 'Unidentified') {\n return key;\n }\n }\n\n // Browser does not implement `key`, polyfill as much of it as we can.\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent);\n\n // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n return '';\n}\n\nmodule.exports = getEventKey;\n\n/***/ }),\n/* 250 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n/***/ }),\n/* 251 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n node = node.parentNode;\n }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === 3) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\nmodule.exports = getNodeForCharacterOffset;\n\n/***/ }),\n/* 252 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n prefixes['ms' + styleProp] = 'MS' + eventName;\n prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\n return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n style = document.createElement('div').style;\n\n // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n }\n\n // Same as above\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n for (var styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return '';\n}\n\nmodule.exports = getVendorPrefixedEventName;\n\n/***/ }),\n/* 253 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar escapeTextContentForBrowser = __webpack_require__(30);\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextContentForBrowser(value) + '\"';\n}\n\nmodule.exports = quoteAttributeValueForBrowser;\n\n/***/ }),\n/* 254 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ReactMount = __webpack_require__(84);\n\nmodule.exports = ReactMount.renderSubtreeIntoContainer;\n\n/***/ }),\n/* 255 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.renderChildren = exports.buildQuery = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(12);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactFetchComponent = __webpack_require__(257);\n\nvar _reactFetchComponent2 = _interopRequireDefault(_reactFetchComponent);\n\nvar _odataQuery = __webpack_require__(256);\n\nvar _odataQuery2 = _interopRequireDefault(_odataQuery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction buildUrl(baseUrl, query) {\n return query !== false && baseUrl + (0, _odataQuery2.default)(query);\n}\n\nvar OData = function (_Component) {\n _inherits(OData, _Component);\n\n function OData() {\n _classCallCheck(this, OData);\n\n return _possibleConstructorReturn(this, (OData.__proto__ || Object.getPrototypeOf(OData)).apply(this, arguments));\n }\n\n _createClass(OData, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n baseUrl = _props.baseUrl,\n query = _props.query,\n children = _props.children,\n rest = _objectWithoutProperties(_props, ['baseUrl', 'query', 'children']);\n\n var url = buildUrl(baseUrl, query);\n\n return _react2.default.createElement(\n _reactFetchComponent2.default,\n _extends({ url: url }, rest),\n function (_ref) {\n var _fetch = _ref.fetch,\n props = _objectWithoutProperties(_ref, ['fetch']);\n\n return (0, _reactFetchComponent.renderChildren)(children, _extends({}, props, {\n fetch: function fetch(query, options, updateOptions) {\n return _fetch(buildUrl(baseUrl, query || _this2.props.query), options || _this2.props.options, updateOptions);\n }\n }));\n }\n );\n }\n }]);\n\n return OData;\n}(_react.Component);\n\nexports.buildQuery = _odataQuery2.default;\nexports.renderChildren = _reactFetchComponent.renderChildren;\nexports.default = OData;\n\n/***/ }),\n/* 256 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n select = _ref.select,\n filter = _ref.filter,\n groupBy = _ref.groupBy,\n transform = _ref.transform,\n orderBy = _ref.orderBy,\n top = _ref.top,\n skip = _ref.skip,\n key = _ref.key,\n count = _ref.count,\n expand = _ref.expand,\n action = _ref.action,\n func = _ref.func;\n\n var path = '';\n var params = {};\n\n if (select) {\n params.$select = select;\n }\n\n if (filter || count instanceof Object) {\n var builtFilter = buildFilter(count instanceof Object ? count : filter);\n if (builtFilter !== undefined) {\n params.$filter = builtFilter;\n }\n }\n\n if (transform) {\n var builtTransforms = buildTransforms(transform);\n if (builtTransforms !== undefined) {\n params.$apply = builtTransforms;\n }\n }\n\n if (top) {\n params.$top = top;\n }\n\n if (skip) {\n params.$skip = skip;\n }\n\n if (key) {\n if ((typeof key === 'undefined' ? 'undefined' : _typeof(key)) === 'object') {\n var keys = Object.keys(key).map(function (k) {\n return k + '=' + key[k];\n }).join(',');\n path += '(' + keys + ')';\n } else {\n path += '(' + key + ')';\n }\n }\n\n if (count) {\n if (typeof count === 'boolean') {\n params.$count = true;\n } else {\n path += '/$count';\n }\n }\n\n if (action) {\n path += '/' + action;\n }\n\n if (func) {\n if (typeof func === 'string') {\n path += '/' + func;\n } else if ((typeof func === 'undefined' ? 'undefined' : _typeof(func)) === 'object') {\n var _Object$keys = Object.keys(func),\n _Object$keys2 = _slicedToArray(_Object$keys, 1),\n funcName = _Object$keys2[0];\n\n var funcParams = Object.keys(func[funcName]).map(function (p) {\n return p + '=' + func[funcName][p];\n }).join(',');\n\n path += '/' + funcName;\n if (funcParams.length) {\n path += '(' + funcParams + ')';\n }\n }\n }\n\n if (expand) {\n params.$expand = buildExpand(expand);\n }\n\n if (orderBy) {\n params.$orderby = buildOrderBy(orderBy);\n }\n\n return buildUrl(path, params);\n};\n\nfunction _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; }\n\nvar COMPARISON_OPERATORS = ['eq', 'ne', 'gt', 'ge', 'lt', 'le'];\nvar LOGICAL_OPERATORS = ['and', 'or', 'not'];\nvar COLLECTION_OPERATORS = ['any', 'all'];\nvar BOOLEAN_FUNCTIONS = ['startswith', 'endswith', 'contains'];\nvar SUPPORTED_EXPAND_PROPERTIES = ['expand', 'select', 'top', 'orderby', 'filter'];\n\nfunction buildFilter() {\n var filters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var propPrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n if (filters == null) {\n // ignore `null` and `undefined` filters (useful for conditionally applied filters)\n return;\n } else if (typeof filters === 'string') {\n // Use raw filter string\n return filters;\n } else if (Array.isArray(filters)) {\n var builtFilters = filters.map(function (f) {\n return buildFilter(f, propPrefix);\n }).filter(function (f) {\n return f !== undefined;\n });\n if (builtFilters.length) {\n return '(' + builtFilters.join(' and ') + ')';\n }\n } else if ((typeof filters === 'undefined' ? 'undefined' : _typeof(filters)) === 'object') {\n var filtersArray = Object.keys(filters).reduce(function (result, filterKey) {\n var value = filters[filterKey];\n var propName = propPrefix ? propPrefix + '/' + filterKey : filterKey;\n\n if ([\"number\", \"string\", \"boolean\"].indexOf(typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== -1 || value instanceof Date || value === null) {\n // Simple key/value handled as equals operator\n result.push(propName + ' eq ' + handleValue(value));\n } else if (Array.isArray(value)) {\n var op = filterKey;\n var _builtFilters = value.map(function (v) {\n return buildFilter(v, propPrefix);\n }).filter(function (f) {\n return f !== undefined;\n });\n if (_builtFilters.length) {\n result.push('(' + _builtFilters.join(' ' + op + ' ') + ')');\n }\n } else if (LOGICAL_OPERATORS.indexOf(propName) !== -1) {\n var _builtFilters2 = Object.keys(value).map(function (valueKey) {\n return buildFilter(_defineProperty({}, valueKey, value[valueKey]));\n });\n if (_builtFilters2.length) {\n result.push('' + _builtFilters2.join(' ' + propName + ' '));\n }\n } else if (value instanceof Object) {\n var operators = Object.keys(value);\n operators.forEach(function (op) {\n if ([].concat(COMPARISON_OPERATORS, LOGICAL_OPERATORS).indexOf(op) !== -1) {\n result.push(propName + ' ' + op + ' ' + handleValue(value[op]));\n } else if (COLLECTION_OPERATORS.indexOf(op) !== -1) {\n var lambaParameter = propName[0].toLowerCase();\n result.push(propName + '/' + op + '(' + lambaParameter + ':' + buildFilter(value[op], lambaParameter) + ')');\n } else if (op === 'in') {\n // Convert `{ Prop: { in: [1,2,3] } }` to `Prop eq 1 or Prop eq 2 or Prop eq 3`\n result.push(value[op].map(function (v) {\n return propName + ' eq ' + handleValue(v);\n }).join(' or '));\n } else if (BOOLEAN_FUNCTIONS.indexOf(op) !== -1) {\n // Simple boolean functions (startswith, endswith, contains)\n result.push(op + '(' + propName + ',' + handleValue(value[op]) + ')');\n } else {\n // Nested property\n result.push(buildFilter(value, propName));\n }\n });\n } else if (value === undefined) {\n // Ignore/omit filter if value is `undefined`\n } else {\n throw new Error('Unexpected value type: ' + value);\n }\n\n return result;\n }, []);\n\n return filtersArray.join(' and ') || undefined;\n } else {\n throw new Error('Unexpected filters type: ' + filters);\n }\n}\n\nfunction handleValue(value) {\n if (typeof value === 'string') {\n return '\\'' + value.replace(\"'\", \"''\") + '\\'';\n } else if (value instanceof Date) {\n return value.toISOString();\n } else {\n // TODO: Figure out how best to specify types. See: https://github.com/devnixs/ODataAngularResources/blob/master/src/odatavalue.js\n return value;\n }\n}\n\nfunction buildExpand(expands) {\n if (typeof expands === 'number') {\n return expands;\n } else if (typeof expands === 'string') {\n\n if (expands.indexOf('/') === -1) {\n return expands;\n }\n\n // Change `Foo/Bar/Baz` to `Foo($expand=Bar($expand=Baz))`\n return expands.split('/').reverse().reduce(function (results, item, index, arr) {\n if (index === 0) {\n // Inner-most item\n return '$expand=' + item;\n } else if (index === arr.length - 1) {\n // Outer-most item, don't add `$expand=` prefix (added above)\n return item + '(' + results + ')';\n } else {\n // Other items\n return '$expand=' + item + '(' + results + ')';\n }\n }, '');\n } else if (Array.isArray(expands)) {\n return '' + expands.map(function (e) {\n return buildExpand(e);\n }).join(',');\n } else if ((typeof expands === 'undefined' ? 'undefined' : _typeof(expands)) === 'object') {\n var expandKeys = Object.keys(expands);\n\n if (expandKeys.some(function (key) {\n return SUPPORTED_EXPAND_PROPERTIES.indexOf(key.toLowerCase()) !== -1;\n })) {\n return expandKeys.map(function (key) {\n var value = key === 'filter' ? buildFilter(expands[key]) : key.toLowerCase() === 'orderby' ? buildOrderBy(expands[key]) : buildExpand(expands[key]);\n return '$' + key.toLowerCase() + '=' + value;\n }).join(';');\n } else {\n return expandKeys.map(function (key) {\n var builtExpand = buildExpand(expands[key]);\n return builtExpand ? key + '(' + builtExpand + ')' : key;\n }).join(',');\n }\n }\n}\n\nfunction buildTransforms(transforms) {\n // Wrap single object an array for simplified processing\n var transformsArray = Array.isArray(transforms) ? transforms : [transforms];\n\n var transformsResult = transformsArray.reduce(function (result, transform) {\n Object.keys(transform).forEach(function (transformKey) {\n var transformValue = transform[transformKey];\n switch (transformKey) {\n case 'aggregate':\n result.push('aggregate(' + buildAggregate(transformValue) + ')');\n break;\n case 'filter':\n var builtFilter = buildFilter(transformValue);\n if (builtFilter !== undefined) {\n result.push('filter(' + buildFilter(transformValue) + ')');\n }\n break;\n case 'groupby': // support both cases\n case 'groupBy':\n result.push('groupby(' + buildGroupBy(transformValue) + ')');\n break;\n default:\n // TODO: support as many of the following:\n // topcount, topsum, toppercent,\n // bottomsum, bottomcount, bottompercent,\n // identity, concat, expand, search, compute, isdefined\n throw new Error('Unsupported transform: \\'' + transformKey + '\\'');\n }\n });\n\n return result;\n }, []);\n\n return transformsResult.join('/') || undefined;\n}\n\nfunction buildAggregate(aggregate) {\n // Wrap single object an array for simplified processing\n var aggregateArray = Array.isArray(aggregate) ? aggregate : [aggregate];\n\n return aggregateArray.map(function (aggregateItem) {\n return Object.keys(aggregateItem).map(function (aggregateKey) {\n var aggregateValue = aggregateItem[aggregateKey];\n\n // TODO: Are these always required? Can/should we default them if so? \n if (aggregateValue.with === undefined) {\n throw new Error('\\'with\\' property required for \\'' + aggregateKey + '\\'');\n }\n if (aggregateValue.as === undefined) {\n throw new Error('\\'as\\' property required for \\'' + aggregateKey + '\\'');\n }\n\n return aggregateKey + ' with ' + aggregateValue.with + ' as ' + aggregateValue.as;\n });\n }).join(',');\n}\n\nfunction buildGroupBy(groupBy) {\n if (groupBy.properties === undefined) {\n throw new Error('\\'properties\\' property required for groupBy:\\'' + aggregateKey + '\\'');\n }\n\n var result = '(' + groupBy.properties.join(',') + ')';\n\n if (groupBy.transform) {\n result += ',' + buildTransforms(groupBy.transform);\n }\n\n return result;\n}\n\nfunction buildOrderBy(orderBy) {\n if (typeof orderBy === 'number') {\n return orderBy;\n } else if (typeof orderBy === 'string') {\n return orderBy;\n } else if (Array.isArray(orderBy)) {\n return '' + orderBy.map(function (o) {\n return buildOrderBy(o);\n }).join(',');\n }\n}\n\nfunction buildUrl(path, params) {\n if (Object.keys(params).length) {\n return path + '?' + Object.keys(params).map(function (key) {\n return key + '=' + params[key];\n }).join('&');\n } else {\n return path;\n }\n}\n\n/***/ }),\n/* 257 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nexports.renderChildren = renderChildren;\n\nvar _react = __webpack_require__(12);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _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; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Fetch = function (_Component) {\n _inherits(Fetch, _Component);\n\n function Fetch() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Fetch);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Fetch.__proto__ || Object.getPrototypeOf(Fetch)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n request: {\n url: _this.props.url,\n options: _this.props.options\n },\n fetch: _this.fetch.bind(_this),\n clearData: _this.clearData.bind(_this),\n loading: null\n }, _this.cache = {}, _this.promises = [], _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Fetch, [{\n key: 'getOptions',\n value: function getOptions(options) {\n return typeof options === 'function' ? options() : options;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _props = this.props,\n url = _props.url,\n options = _props.options,\n manual = _props.manual,\n onChange = _props.onChange;\n\n this.mounted = true;\n\n if (typeof onChange === 'function') {\n onChange(this.state);\n }\n\n if (url && !manual) {\n this.fetch(url, options);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var _props2 = this.props,\n url = _props2.url,\n options = _props2.options,\n manual = _props2.manual;\n\n if (url !== prevProps.url && !manual) {\n this.fetch(url, options);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.mounted = false;\n }\n }, {\n key: 'fetch',\n value: function (_fetch) {\n function fetch(_x, _x2, _x3) {\n return _fetch.apply(this, arguments);\n }\n\n fetch.toString = function () {\n return _fetch.toString();\n };\n\n return fetch;\n }(function (url, options, updateOptions) {\n var _this2 = this;\n\n var _props3 = this.props,\n as = _props3.as,\n cache = _props3.cache;\n\n\n if (url == null) {\n url = this.props.url;\n }\n\n options = this.getOptions(options || this.props.options);\n var request = { url: url, options: options };\n\n if (cache && this.cache[url]) {\n // Restore cached state\n var promise = this.cache[url];\n promise.then(function (cachedState) {\n return _this2.update(cachedState, promise, updateOptions);\n });\n this.promises.push(promise);\n } else {\n this.update({ request: request, loading: true }, null, updateOptions);\n\n var _promise = fetch(url, options).then(function (response) {\n return response[as]().then(function (data) {\n return { response: response, data: data };\n }).catch(function (error) {\n return { response: response, data: error };\n });\n }).then(function (_ref2) {\n var _newState;\n\n var response = _ref2.response,\n data = _ref2.data;\n\n var newState = (_newState = {\n request: request,\n loading: false\n }, _defineProperty(_newState, response.ok ? 'error' : 'data', undefined), _defineProperty(_newState, response.ok ? 'data' : 'error', data), _defineProperty(_newState, 'response', response), _newState);\n\n _this2.update(newState, _promise, updateOptions);\n\n return newState;\n }).catch(function (error) {\n // Catch request errors with no response (CORS issues, etc)\n var newState = {\n request: request,\n data: undefined,\n error: error,\n loading: false\n };\n\n _this2.update(newState, _promise, updateOptions);\n\n // Rethrow so not to swallow errors, especially from errors within handlers (children func / onChange)\n throw error;\n\n return newState;\n });\n\n this.promises.push(_promise);\n\n if (cache) {\n this.cache[url] = _promise;\n }\n\n return _promise;\n }\n })\n }, {\n key: 'clearData',\n value: function clearData() {\n this.setState({ data: undefined });\n }\n }, {\n key: 'update',\n value: function update(nextState, currentPromise) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (currentPromise) {\n // Handle (i.e. ignore) promises resolved out of order from requests\n var index = this.promises.indexOf(currentPromise);\n if (index === -1) {\n // Ignore update as a later request/promise has already been processed\n return;\n }\n\n // Remove currently resolved promise and any outstanding promises\n // (which will cause them to be ignored when they do resolve/reject)\n this.promises.splice(0, index + 1);\n }\n\n var _props4 = this.props,\n onChange = _props4.onChange,\n onDataChange = _props4.onDataChange;\n\n\n var data = undefined;\n if (nextState.data && nextState.data !== this.state.data && typeof onDataChange === 'function') {\n data = onDataChange(nextState.data, options.ignorePreviousData ? undefined : this.state.data);\n }\n\n if (typeof onChange === 'function') {\n // Always call onChange even if unmounted. Useful for `POST` requests with a redirect\n onChange(_extends({}, this.state, nextState, data && { data: data }));\n }\n\n // Ignore passing state down if no longer mounted\n if (this.mounted) {\n // If `onDataChange` prop returned a value, we use it for data passed down to the children function\n this.setState(_extends({}, nextState, data && { data: data }));\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var children = this.props.children;\n\n return renderChildren(children, this.state);\n }\n }]);\n\n return Fetch;\n}(_react.Component);\n\nFetch.defaultProps = {\n as: 'json'\n};\nexports.default = Fetch;\nfunction renderChildren(children, fetchProps) {\n if (typeof children === 'function') {\n var childrenResult = children(fetchProps);\n if (typeof childrenResult === 'function') {\n return renderChildren(childrenResult, fetchProps);\n } else {\n return childrenResult;\n }\n } else if (_react2.default.Children.count(children) === 0) {\n return null;\n } else {\n // DOM/Component children\n // TODO: Better to check if children count === 1 and return null otherwise (like react-router)?\n // Currently not possible to support multiple children components/elements (until React fiber)\n return _react2.default.Children.only(children);\n }\n}\n\n/***/ }),\n/* 258 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n/***/ }),\n/* 259 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(24);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? false ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n/***/ }),\n/* 260 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar PooledClass = __webpack_require__(259);\nvar ReactElement = __webpack_require__(18);\n\nvar emptyFunction = __webpack_require__(7);\nvar traverseAllChildren = __webpack_require__(269);\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.func = forEachFunction;\n this.context = forEachContext;\n this.count = 0;\n}\nForEachBookKeeping.prototype.destructor = function () {\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n this.result = mapResult;\n this.keyPrefix = keyPrefix;\n this.func = mapFunction;\n this.context = mapContext;\n this.count = 0;\n}\nMapBookKeeping.prototype.destructor = function () {\n this.result = null;\n this.keyPrefix = null;\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (ReactElement.isValidElement(mappedChild)) {\n mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n count: countChildren,\n toArray: toArray\n};\n\nmodule.exports = ReactChildren;\n\n/***/ }),\n/* 261 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar ReactElement = __webpack_require__(18);\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @private\n */\nvar createDOMFactory = ReactElement.createFactory;\nif (false) {\n var ReactElementValidator = require('./ReactElementValidator');\n createDOMFactory = ReactElementValidator.createFactory;\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n *\n * @public\n */\nvar ReactDOMFactories = {\n a: createDOMFactory('a'),\n abbr: createDOMFactory('abbr'),\n address: createDOMFactory('address'),\n area: createDOMFactory('area'),\n article: createDOMFactory('article'),\n aside: createDOMFactory('aside'),\n audio: createDOMFactory('audio'),\n b: createDOMFactory('b'),\n base: createDOMFactory('base'),\n bdi: createDOMFactory('bdi'),\n bdo: createDOMFactory('bdo'),\n big: createDOMFactory('big'),\n blockquote: createDOMFactory('blockquote'),\n body: createDOMFactory('body'),\n br: createDOMFactory('br'),\n button: createDOMFactory('button'),\n canvas: createDOMFactory('canvas'),\n caption: createDOMFactory('caption'),\n cite: createDOMFactory('cite'),\n code: createDOMFactory('code'),\n col: createDOMFactory('col'),\n colgroup: createDOMFactory('colgroup'),\n data: createDOMFactory('data'),\n datalist: createDOMFactory('datalist'),\n dd: createDOMFactory('dd'),\n del: createDOMFactory('del'),\n details: createDOMFactory('details'),\n dfn: createDOMFactory('dfn'),\n dialog: createDOMFactory('dialog'),\n div: createDOMFactory('div'),\n dl: createDOMFactory('dl'),\n dt: createDOMFactory('dt'),\n em: createDOMFactory('em'),\n embed: createDOMFactory('embed'),\n fieldset: createDOMFactory('fieldset'),\n figcaption: createDOMFactory('figcaption'),\n figure: createDOMFactory('figure'),\n footer: createDOMFactory('footer'),\n form: createDOMFactory('form'),\n h1: createDOMFactory('h1'),\n h2: createDOMFactory('h2'),\n h3: createDOMFactory('h3'),\n h4: createDOMFactory('h4'),\n h5: createDOMFactory('h5'),\n h6: createDOMFactory('h6'),\n head: createDOMFactory('head'),\n header: createDOMFactory('header'),\n hgroup: createDOMFactory('hgroup'),\n hr: createDOMFactory('hr'),\n html: createDOMFactory('html'),\n i: createDOMFactory('i'),\n iframe: createDOMFactory('iframe'),\n img: createDOMFactory('img'),\n input: createDOMFactory('input'),\n ins: createDOMFactory('ins'),\n kbd: createDOMFactory('kbd'),\n keygen: createDOMFactory('keygen'),\n label: createDOMFactory('label'),\n legend: createDOMFactory('legend'),\n li: createDOMFactory('li'),\n link: createDOMFactory('link'),\n main: createDOMFactory('main'),\n map: createDOMFactory('map'),\n mark: createDOMFactory('mark'),\n menu: createDOMFactory('menu'),\n menuitem: createDOMFactory('menuitem'),\n meta: createDOMFactory('meta'),\n meter: createDOMFactory('meter'),\n nav: createDOMFactory('nav'),\n noscript: createDOMFactory('noscript'),\n object: createDOMFactory('object'),\n ol: createDOMFactory('ol'),\n optgroup: createDOMFactory('optgroup'),\n option: createDOMFactory('option'),\n output: createDOMFactory('output'),\n p: createDOMFactory('p'),\n param: createDOMFactory('param'),\n picture: createDOMFactory('picture'),\n pre: createDOMFactory('pre'),\n progress: createDOMFactory('progress'),\n q: createDOMFactory('q'),\n rp: createDOMFactory('rp'),\n rt: createDOMFactory('rt'),\n ruby: createDOMFactory('ruby'),\n s: createDOMFactory('s'),\n samp: createDOMFactory('samp'),\n script: createDOMFactory('script'),\n section: createDOMFactory('section'),\n select: createDOMFactory('select'),\n small: createDOMFactory('small'),\n source: createDOMFactory('source'),\n span: createDOMFactory('span'),\n strong: createDOMFactory('strong'),\n style: createDOMFactory('style'),\n sub: createDOMFactory('sub'),\n summary: createDOMFactory('summary'),\n sup: createDOMFactory('sup'),\n table: createDOMFactory('table'),\n tbody: createDOMFactory('tbody'),\n td: createDOMFactory('td'),\n textarea: createDOMFactory('textarea'),\n tfoot: createDOMFactory('tfoot'),\n th: createDOMFactory('th'),\n thead: createDOMFactory('thead'),\n time: createDOMFactory('time'),\n title: createDOMFactory('title'),\n tr: createDOMFactory('tr'),\n track: createDOMFactory('track'),\n u: createDOMFactory('u'),\n ul: createDOMFactory('ul'),\n 'var': createDOMFactory('var'),\n video: createDOMFactory('video'),\n wbr: createDOMFactory('wbr'),\n\n // SVG\n circle: createDOMFactory('circle'),\n clipPath: createDOMFactory('clipPath'),\n defs: createDOMFactory('defs'),\n ellipse: createDOMFactory('ellipse'),\n g: createDOMFactory('g'),\n image: createDOMFactory('image'),\n line: createDOMFactory('line'),\n linearGradient: createDOMFactory('linearGradient'),\n mask: createDOMFactory('mask'),\n path: createDOMFactory('path'),\n pattern: createDOMFactory('pattern'),\n polygon: createDOMFactory('polygon'),\n polyline: createDOMFactory('polyline'),\n radialGradient: createDOMFactory('radialGradient'),\n rect: createDOMFactory('rect'),\n stop: createDOMFactory('stop'),\n svg: createDOMFactory('svg'),\n text: createDOMFactory('text'),\n tspan: createDOMFactory('tspan')\n};\n\nmodule.exports = ReactDOMFactories;\n\n/***/ }),\n/* 262 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _require = __webpack_require__(18),\n isValidElement = _require.isValidElement;\n\nvar factory = __webpack_require__(74);\n\nmodule.exports = factory(isValidElement);\n\n/***/ }),\n/* 263 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nmodule.exports = '15.6.2';\n\n/***/ }),\n/* 264 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _require = __webpack_require__(96),\n Component = _require.Component;\n\nvar _require2 = __webpack_require__(18),\n isValidElement = _require2.isValidElement;\n\nvar ReactNoopUpdateQueue = __webpack_require__(99);\nvar factory = __webpack_require__(117);\n\nmodule.exports = factory(Component, isValidElement, ReactNoopUpdateQueue);\n\n/***/ }),\n/* 265 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n/***/ }),\n/* 266 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\n\nvar nextDebugID = 1;\n\nfunction getNextDebugID() {\n return nextDebugID++;\n}\n\nmodule.exports = getNextDebugID;\n\n/***/ }),\n/* 267 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\nif (false) {\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = lowPriorityWarning;\n\n/***/ }),\n/* 268 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\nvar _prodInvariant = __webpack_require__(24);\n\nvar ReactElement = __webpack_require__(18);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !ReactElement.isValidElement(children) ? false ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;\n return children;\n}\n\nmodule.exports = onlyChild;\n\n/***/ }),\n/* 269 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(24);\n\nvar ReactCurrentOwner = __webpack_require__(11);\nvar REACT_ELEMENT_TYPE = __webpack_require__(98);\n\nvar getIteratorFn = __webpack_require__(265);\nvar invariant = __webpack_require__(0);\nvar KeyEscapeUtils = __webpack_require__(258);\nvar warning = __webpack_require__(1);\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (false) {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (false) {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = \" It looks like you're using an element created by a different \" + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n true ? false ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n/***/ }),\n/* 270 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(60), __webpack_require__(43)))\n\n/***/ }),\n/* 271 */\n/***/ (function(module, exports) {\n\n\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n\n\n/***/ }),\n/* 272 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(270);\nexports.setImmediate = setImmediate;\nexports.clearImmediate = clearImmediate;\n\n\n/***/ }),\n/* 273 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAAQCAYAAAC1MDndAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTZENUJEQzJCMDQwMTFFN0FGMzJCODlDMDY5NjdGN0MiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTZENUJEQzNCMDQwMTFFN0FGMzJCODlDMDY5NjdGN0MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5NkQ1QkRDMEIwNDAxMUU3QUYzMkI4OUMwNjk2N0Y3QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5NkQ1QkRDMUIwNDAxMUU3QUYzMkI4OUMwNjk2N0Y3QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmwzJe0AAAShSURBVHja5Jd/TJVVGMefF++NH3OXLhj5g3GxK2rkEFfKtKWFLBOVVk60Wj9Xc5auuVqN1mzVzGpmf1TaFLM5i+nEtBGCU5CuOVQCsxFOBaFmw0y9Ny69l+vlvn0ffN6Xl9cLXpq1RWf77JzznOc9P55zzvOclyjKFKpwOf1l7rUrli1Xg3vTV6E+nP4HKSYKw8SDV1E8u70h+6Wyxsy48qaJb6J+BvLl4KahbCBlAMPYkD0N2BijfIE4mr1hKfnUOBqT6KPKpcUUawuxajNYBUpsD7RpQ/4EwTAKWIhiI9jIxmF5cfXUHuNwOudLpK11d+qfuMEXoB7fzRnSBsICc5EdATvBeF3e2pZImbXNZKduQ3fDd9Pp0p8J5s+zQQX6qALThpSBsKApoBLFA2CqVamhNIlGal7KDx03ZB1dsfSR5+5Ifd7HRkZ/pWDCf95AWESh+BCVbWFV+P7YSEr3nu8pPxyqI4emGm0l9VOo5WJypH6PgmFgNfrPH+ykxs5cbwPJ//TiMYYTxETtpLGYp5Bt0esaXG75O6k0uuuSoVOTmUWftMzqPS7jmmlj4U5rvw/BYe+OMCE7+yrAzuyus98+77O0T0S2BiwQA18Gn4M3oNuB9lSUD4HPUH8LdQfKJ9gloP6y9NFqrovsGTkE+ZD/hHomyjy/DPAzeALyGsjZ594fdZivqnD1MU7AlUArFh+h25IvGrLqM2463OqKdtPmgUlgHFhsMU6W+L8HwV6wnuMBWAkqRY0jKw+WZJo/10eYurLWOTlErj9JODKng03SViTyTtAluryJ3n4NFAjYSDmq9jlrKXPDNEzRqGh2dR/ddw/kUlhTojEQn1B+G3SAJy1tawE/PudjNxeAF1Bmo70GXr/Bt4sNHATvgxl84lmIMVeaNu5T1LP7NdC+0jRydvuNemeWg9yjr56me3GtZqS3GW1N51Poqx8nXe++3yInqBx8yRODLEPaOBzmgT2YVLn+DcoaWAOqbrCBPgA8pgfY0b86qJf0hd8TaMSp3qulwHNk5Pn76BTlVVGM0vsuXHdwJqlX7ANN6jG5IltMfk4/RSniD0//G5FJNuE5GdeDDcoZlIE8O0ZRvBYks7P+ZXMM1a1zGPi3BWhWuMnQ+c0/nIprp13venFaBJbJVXtcosgFEBb/NFDq7mf+ob9hpM3I+EEcD3b0F82uEZ4+lUSu9nbL8xohxRu6hiXBWoqlK4baptqcHkNFuF6TkU2W6qNycvg0pfGNxWTZOe7nKAPdQku4fw/kikg/1rdKnir55UGG90KwEOPulr+FNFNfAxuocY8Dwuh+qZxaJxWE6o06X7EPa+6JpKpfJW50Crfz4TSdrBcBh/3tmPxhsI3dG3hFIDHkMcAL3IX8az2YWsYrQPtx4IlgHI5aH/PvEcolfIoBh+VfI03cZq58U+YeHxtQw+32m6PejRylhU4kje0KKle7ajg3hipPTkA4bTOr3cGLwQIPmWReTHArv0X4fYS2k8j5jq4Gc8F0eaO8LW8jPT0iPqwAsGMsMjt2pB8iuVWRq9D9A+PM599LsITtDp6FXL+mquj2XKO/BBgAgi22AONsZVEAAAAASUVORK5CYII=\"\n\n/***/ }),\n/* 274 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAAO0lEQVQ4y2NgGArgPxIY1YChsOE/LtBAmpYG0mxpIOSDBpKUo2lpIDZxNJCkHKqlYZAla3RAHQ1DFgAARRroHyLNTwwAAAAASUVORK5CYII=\"\n\n/***/ }),\n/* 275 */\n/***/ (function(module, exports) {\n\n(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// dist/mlsmediacenter.min.js"," \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// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\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 = 110);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 22cd254c67411fe08778","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/invariant.js\n// module id = 0\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/warning.js\n// module id = 1\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/reactProdInvariant.js\n// module id = 2\n// module chunks = 0","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/object-assign/index.js\n// module id = 3\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\n\nvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n\n/**\n * Check if a given node should be cached.\n */\nfunction shouldPrecacheNode(node, nodeID) {\n return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' ';\n}\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n var rendered;\n while (rendered = component._renderedComponent) {\n component = rendered;\n }\n return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n var hostInst = getRenderedHostOrTextFromComponent(inst);\n hostInst._hostNode = node;\n node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n var node = inst._hostNode;\n if (node) {\n delete node[internalInstanceKey];\n inst._hostNode = null;\n }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n if (inst._flags & Flags.hasCachedChildNodes) {\n return;\n }\n var children = inst._renderedChildren;\n var childNode = node.firstChild;\n outer: for (var name in children) {\n if (!children.hasOwnProperty(name)) {\n continue;\n }\n var childInst = children[name];\n var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n if (childID === 0) {\n // We're currently unmounting this child in ReactMultiChild; skip it.\n continue;\n }\n // We assume the child nodes are in the same order as the child instances.\n for (; childNode !== null; childNode = childNode.nextSibling) {\n if (shouldPrecacheNode(childNode, childID)) {\n precacheNode(childInst, childNode);\n continue outer;\n }\n }\n // We reached the end of the DOM children without finding an ID match.\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;\n }\n inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n if (node[internalInstanceKey]) {\n return node[internalInstanceKey];\n }\n\n // Walk up the tree until we find an ancestor whose instance we have cached.\n var parents = [];\n while (!node[internalInstanceKey]) {\n parents.push(node);\n if (node.parentNode) {\n node = node.parentNode;\n } else {\n // Top of the tree. This node must not be part of a React tree (or is\n // unmounted, potentially).\n return null;\n }\n }\n\n var closest;\n var inst;\n for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n closest = inst;\n if (parents.length) {\n precacheChildNodes(inst, node);\n }\n }\n\n return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n var inst = getClosestInstanceFromNode(node);\n if (inst != null && inst._hostNode === node) {\n return inst;\n } else {\n return null;\n }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n !(inst._hostNode !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n if (inst._hostNode) {\n return inst._hostNode;\n }\n\n // Walk up the tree until we find an ancestor whose DOM node we have cached.\n var parents = [];\n while (!inst._hostNode) {\n parents.push(inst);\n !inst._hostParent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;\n inst = inst._hostParent;\n }\n\n // Now parents contains each ancestor that does *not* have a cached native\n // node, and `inst` is the deepest ancestor that does.\n for (; parents.length; inst = parents.pop()) {\n precacheChildNodes(inst, inst._hostNode);\n }\n\n return inst._hostNode;\n}\n\nvar ReactDOMComponentTree = {\n getClosestInstanceFromNode: getClosestInstanceFromNode,\n getInstanceFromNode: getInstanceFromNode,\n getNodeFromInstance: getNodeFromInstance,\n precacheChildNodes: precacheChildNodes,\n precacheNode: precacheNode,\n uncacheNode: uncacheNode\n};\n\nmodule.exports = ReactDOMComponentTree;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMComponentTree.js\n// module id = 4\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/ExecutionEnvironment.js\n// module id = 5\n// module chunks = 0","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/index.js\n// module id = 6\n// module chunks = 0","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/emptyFunction.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n// Trust the developer to only use ReactInstrumentation with a __DEV__ check\n\nvar debugTool = null;\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactDebugTool = require('./ReactDebugTool');\n debugTool = ReactDebugTool;\n}\n\nmodule.exports = { debugTool: debugTool };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactInstrumentation.js\n// module id = 8\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactReconciler = require('./ReactReconciler');\nvar Transaction = require('./Transaction');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar dirtyComponents = [];\nvar updateBatchNumber = 0;\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;\n}\n\nvar NESTED_UPDATES = {\n initialize: function () {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function () {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function () {\n this.callbackQueue.reset();\n },\n close: function () {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function () {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function (method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n ensureInjected();\n return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n !(len === dirtyComponents.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n // Any updates enqueued while reconciling must be performed after this entire\n // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n // C, B could update twice in a single batch if C's render enqueues an update\n // to B (since B would have already updated, we should skip it, and the only\n // way we can know to do so is by checking the batch counter).\n updateBatchNumber++;\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var namedComponent = component;\n // Duck type TopLevelWrapper. This is probably always true.\n if (component._currentElement.type.isReactTopLevelWrapper) {\n namedComponent = component._renderedComponent;\n }\n markerName = 'React update: ' + namedComponent.getName();\n console.time(markerName);\n }\n\n ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function () {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n if (component._updateBatchNumber == null) {\n component._updateBatchNumber = updateBatchNumber + 1;\n }\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n invariant(batchingStrategy.isBatchingUpdates, \"ReactUpdates.asap: Can't enqueue an asap callback in a context where\" + 'updates are not being batched.');\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function (ReconcileTransaction) {\n !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function (_batchingStrategy) {\n !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;\n !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;\n !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactUpdates.js\n// module id = 9\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === 'function';\n\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: null,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n if (process.env.NODE_ENV !== 'production') {\n // these have a getter/setter for warnings\n delete this.nativeEvent;\n delete this.preventDefault;\n delete this.stopPropagation;\n }\n\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n if (process.env.NODE_ENV !== 'production') {\n delete this[propName]; // this has a getter/setter for warnings\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n if (propName === 'target') {\n this.target = nativeEventTarget;\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n // eslint-disable-next-line valid-typeof\n } else if (typeof event.returnValue !== 'unknown') {\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function () {\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation();\n // eslint-disable-next-line valid-typeof\n } else if (typeof event.cancelBubble !== 'unknown') {\n // The ChangeEventPlugin registers a \"propertychange\" event for\n // IE. This event does not support bubbling or cancelling, and\n // any references to cancelBubble throw \"Member not found\". A\n // typeof check of \"unknown\" circumvents this issue (and is also\n // IE specific).\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function () {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function () {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n } else {\n this[propName] = null;\n }\n }\n for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n this[shouldBeReleasedProperties[i]] = null;\n }\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n }\n }\n});\n\nSyntheticEvent.Interface = EventInterface;\n\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function (Class, Interface) {\n var Super = this;\n\n var E = function () {};\n E.prototype = Super.prototype;\n var prototype = new E();\n\n _assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = _assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n};\n\n/** Proxying after everything set on SyntheticEvent\n * to resolve Proxy issue on some WebKit browsers\n * in which some Event properties are set to undefined (GH#10010)\n */\nif (process.env.NODE_ENV !== 'production') {\n if (isProxySupported) {\n /*eslint-disable no-func-assign */\n SyntheticEvent = new Proxy(SyntheticEvent, {\n construct: function (target, args) {\n return this.apply(target, Object.create(target.prototype), args);\n },\n apply: function (constructor, that, args) {\n return new Proxy(constructor.apply(that, args), {\n set: function (target, prop, value) {\n if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), \"This synthetic event is reused for performance reasons. If you're \" + \"seeing this, you're adding a new property in the synthetic event object. \" + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n didWarnForAddedNewProperty = true;\n }\n target[prop] = value;\n return true;\n }\n });\n }\n });\n /*eslint-enable no-func-assign */\n }\n}\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n\n/**\n * Helper to nullify syntheticEvent instance properties when destructing\n *\n * @param {object} SyntheticEvent\n * @param {String} propName\n * @return {object} defineProperty object\n */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n var isFunction = typeof getVal === 'function';\n return {\n configurable: true,\n set: set,\n get: get\n };\n\n function set(val) {\n var action = isFunction ? 'setting the method' : 'setting the property';\n warn(action, 'This is effectively a no-op');\n return val;\n }\n\n function get() {\n var action = isFunction ? 'accessing the method' : 'accessing the property';\n var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n warn(action, result);\n return getVal;\n }\n\n function warn(action, result) {\n var warningCondition = false;\n process.env.NODE_ENV !== 'production' ? warning(warningCondition, \"This synthetic event is reused for performance reasons. If you're seeing this, \" + \"you're %s `%s` on a released/nullified synthetic event. %s. \" + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticEvent.js\n// module id = 10\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\nmodule.exports = ReactCurrentOwner;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactCurrentOwner.js\n// module id = 11\n// module chunks = 0","'use strict';\n\nmodule.exports = require('./lib/React');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/react.js\n// module id = 12\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/PooledClass.js\n// module id = 13\n// module chunks = 0","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = require('./DOMNamespaces');\nvar setInnerHTML = require('./setInnerHTML');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setTextContent = require('./setTextContent');\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\n/**\n * In IE (8-11) and Edge, appending nodes with no children is dramatically\n * faster than appending a full subtree, so we essentially queue up the\n * .appendChild calls here and apply them so each node is added to its parent\n * before any children are added.\n *\n * In other browsers, doing so is slower or neutral compared to the other order\n * (in Firefox, twice as slow) so we only do this inversion in IE.\n *\n * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.\n */\nvar enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\\bEdge\\/\\d/.test(navigator.userAgent);\n\nfunction insertTreeChildren(tree) {\n if (!enableLazy) {\n return;\n }\n var node = tree.node;\n var children = tree.children;\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n insertTreeBefore(node, children[i], null);\n }\n } else if (tree.html != null) {\n setInnerHTML(node, tree.html);\n } else if (tree.text != null) {\n setTextContent(node, tree.text);\n }\n}\n\nvar insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {\n // DocumentFragments aren't actually part of the DOM after insertion so\n // appending children won't update the DOM. We need to ensure the fragment\n // is properly populated first, breaking out of our lazy approach for just\n // this level. Also, some <object> plugins (like Flash Player) will read\n // <param> nodes immediately upon insertion into the DOM, so <object>\n // must also be populated prior to insertion into the DOM.\n if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {\n insertTreeChildren(tree);\n parentNode.insertBefore(tree.node, referenceNode);\n } else {\n parentNode.insertBefore(tree.node, referenceNode);\n insertTreeChildren(tree);\n }\n});\n\nfunction replaceChildWithTree(oldNode, newTree) {\n oldNode.parentNode.replaceChild(newTree.node, oldNode);\n insertTreeChildren(newTree);\n}\n\nfunction queueChild(parentTree, childTree) {\n if (enableLazy) {\n parentTree.children.push(childTree);\n } else {\n parentTree.node.appendChild(childTree.node);\n }\n}\n\nfunction queueHTML(tree, html) {\n if (enableLazy) {\n tree.html = html;\n } else {\n setInnerHTML(tree.node, html);\n }\n}\n\nfunction queueText(tree, text) {\n if (enableLazy) {\n tree.text = text;\n } else {\n setTextContent(tree.node, text);\n }\n}\n\nfunction toString() {\n return this.node.nodeName;\n}\n\nfunction DOMLazyTree(node) {\n return {\n node: node,\n children: [],\n html: null,\n text: null,\n toString: toString\n };\n}\n\nDOMLazyTree.insertTreeBefore = insertTreeBefore;\nDOMLazyTree.replaceChildWithTree = replaceChildWithTree;\nDOMLazyTree.queueChild = queueChild;\nDOMLazyTree.queueHTML = queueHTML;\nDOMLazyTree.queueText = queueText;\n\nmodule.exports = DOMLazyTree;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/DOMLazyTree.js\n// module id = 14\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_PROPERTY: 0x1,\n HAS_BOOLEAN_VALUE: 0x4,\n HAS_NUMERIC_VALUE: 0x8,\n HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n * attribute namespace URL. (Attribute names not specified use no namespace.)\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function (domPropertyConfig) {\n var Injection = DOMPropertyInjection;\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);\n }\n\n for (var propName in Properties) {\n !!DOMProperty.properties.hasOwnProperty(propName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property \\'%s\\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : _prodInvariant('48', propName) : void 0;\n\n var lowerCased = propName.toLowerCase();\n var propConfig = Properties[propName];\n\n var propertyInfo = {\n attributeName: lowerCased,\n attributeNamespace: null,\n propertyName: propName,\n mutationMethod: null,\n\n mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)\n };\n !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n }\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n propertyInfo.attributeName = attributeName;\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n }\n }\n\n if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n }\n\n if (DOMPropertyNames.hasOwnProperty(propName)) {\n propertyInfo.propertyName = DOMPropertyNames[propName];\n }\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n propertyInfo.mutationMethod = DOMMutationMethods[propName];\n }\n\n DOMProperty.properties[propName] = propertyInfo;\n }\n }\n};\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\n/* eslint-enable max-len */\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n ID_ATTRIBUTE_NAME: 'data-reactid',\n ROOT_ATTRIBUTE_NAME: 'data-reactroot',\n\n ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040',\n\n /**\n * Map from property \"standard name\" to an object with info about how to set\n * the property in the DOM. Each object contains:\n *\n * attributeName:\n * Used when rendering markup or with `*Attribute()`.\n * attributeNamespace\n * propertyName:\n * Used on DOM node instances. (This includes properties that mutate due to\n * external factors.)\n * mutationMethod:\n * If non-null, used instead of the property or `setAttribute()` after\n * initial render.\n * mustUseProperty:\n * Whether the property must be accessed and mutated as an object property.\n * hasBooleanValue:\n * Whether the property should be removed when set to a falsey value.\n * hasNumericValue:\n * Whether the property must be numeric or parse as a numeric and should be\n * removed when set to a falsey value.\n * hasPositiveNumericValue:\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * hasOverloadedBooleanValue:\n * Whether the property can be used as a flag as well as with a value.\n * Removed when strictly equal to false; present without a value when\n * strictly equal to true; present with a value otherwise.\n */\n properties: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties. Available only in __DEV__.\n *\n * autofocus is predefined, because adding it to the property whitelist\n * causes unintended side effects.\n *\n * @type {Object}\n */\n getPossibleStandardName: process.env.NODE_ENV !== 'production' ? { autofocus: 'autoFocus' } : null,\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function (attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/DOMProperty.js\n// module id = 15\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactRef = require('./ReactRef');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} the containing host component instance\n * @param {?object} info about the host container\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID) // 0 in production and for roots\n {\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);\n }\n }\n var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);\n if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);\n }\n }\n return markup;\n },\n\n /**\n * Returns a value that can be passed to\n * ReactComponentEnvironment.replaceNodeWithMarkup.\n */\n getHostNode: function (internalInstance) {\n return internalInstance.getHostNode();\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (internalInstance, safely) {\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);\n }\n }\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent(safely);\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function (internalInstance, nextElement, transaction, context) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && context === internalInstance._context) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n\n // TODO: Bailing out early is just a perf optimization right?\n // TODO: Removing the return statement should affect correctness?\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);\n }\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {\n if (internalInstance._updateBatchNumber !== updateBatchNumber) {\n // The component's enqueued batch number should always be the current\n // batch or the following one.\n process.env.NODE_ENV !== 'production' ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0;\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);\n }\n }\n internalInstance.performUpdateIfNecessary(transaction);\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n }\n};\n\nmodule.exports = ReactReconciler;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactReconciler.js\n// module id = 16\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactBaseClasses = require('./ReactBaseClasses');\nvar ReactChildren = require('./ReactChildren');\nvar ReactDOMFactories = require('./ReactDOMFactories');\nvar ReactElement = require('./ReactElement');\nvar ReactPropTypes = require('./ReactPropTypes');\nvar ReactVersion = require('./ReactVersion');\n\nvar createReactClass = require('./createClass');\nvar onlyChild = require('./onlyChild');\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (process.env.NODE_ENV !== 'production') {\n var lowPriorityWarning = require('./lowPriorityWarning');\n var canDefineProperty = require('./canDefineProperty');\n var ReactElementValidator = require('./ReactElementValidator');\n var didWarnPropTypesDeprecated = false;\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar __spread = _assign;\nvar createMixin = function (mixin) {\n return mixin;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var warnedForSpread = false;\n var warnedForCreateMixin = false;\n __spread = function () {\n lowPriorityWarning(warnedForSpread, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.');\n warnedForSpread = true;\n return _assign.apply(null, arguments);\n };\n\n createMixin = function (mixin) {\n lowPriorityWarning(warnedForCreateMixin, 'React.createMixin is deprecated and should not be used. ' + 'In React v16.0, it will be removed. ' + 'You can use this mixin directly instead. ' + 'See https://fb.me/createmixin-was-never-implemented for more info.');\n warnedForCreateMixin = true;\n return mixin;\n };\n}\n\nvar React = {\n // Modern\n\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n toArray: ReactChildren.toArray,\n only: onlyChild\n },\n\n Component: ReactBaseClasses.Component,\n PureComponent: ReactBaseClasses.PureComponent,\n\n createElement: createElement,\n cloneElement: cloneElement,\n isValidElement: ReactElement.isValidElement,\n\n // Classic\n\n PropTypes: ReactPropTypes,\n createClass: createReactClass,\n createFactory: createFactory,\n createMixin: createMixin,\n\n // This looks DOM specific but these are actually isomorphic helpers\n // since they are just generating DOM strings.\n DOM: ReactDOMFactories,\n\n version: ReactVersion,\n\n // Deprecated hook for JSX spread, don't use this for anything.\n __spread: __spread\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var warnedForCreateClass = false;\n if (canDefineProperty) {\n Object.defineProperty(React, 'PropTypes', {\n get: function () {\n lowPriorityWarning(didWarnPropTypesDeprecated, 'Accessing PropTypes via the main React package is deprecated,' + ' and will be removed in React v16.0.' + ' Use the latest available v15.* prop-types package from npm instead.' + ' For info on usage, compatibility, migration and more, see ' + 'https://fb.me/prop-types-docs');\n didWarnPropTypesDeprecated = true;\n return ReactPropTypes;\n }\n });\n\n Object.defineProperty(React, 'createClass', {\n get: function () {\n lowPriorityWarning(warnedForCreateClass, 'Accessing createClass via the main React package is deprecated,' + ' and will be removed in React v16.0.' + \" Use a plain JavaScript class instead. If you're not yet \" + 'ready to migrate, create-react-class v15.* is available ' + 'on npm as a temporary, drop-in replacement. ' + 'For more info see https://fb.me/react-create-class');\n warnedForCreateClass = true;\n return createReactClass;\n }\n });\n }\n\n // React.DOM factories are deprecated. Wrap these methods so that\n // invocations of the React.DOM namespace and alert users to switch\n // to the `react-dom-factories` package.\n React.DOM = {};\n var warnedForFactories = false;\n Object.keys(ReactDOMFactories).forEach(function (factory) {\n React.DOM[factory] = function () {\n if (!warnedForFactories) {\n lowPriorityWarning(false, 'Accessing factories like React.DOM.%s has been deprecated ' + 'and will be removed in v16.0+. Use the ' + 'react-dom-factories package instead. ' + ' Version 1.0 provides a drop-in replacement.' + ' For more info, see https://fb.me/react-dom-factories', factory);\n warnedForFactories = true;\n }\n return ReactDOMFactories[factory].apply(ReactDOMFactories, arguments);\n };\n });\n}\n\nmodule.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/React.js\n// module id = 17\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar warning = require('fbjs/lib/warning');\nvar canDefineProperty = require('./canDefineProperty');\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\n\nvar specialPropKeyWarningShown, specialPropRefWarningShown;\n\nfunction hasValidRef(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allow us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n if (canDefineProperty) {\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n // self and source are DEV only properties.\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n });\n // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n } else {\n element._store.validated = false;\n element._self = self;\n element._source = source;\n }\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement\n */\nReactElement.createElement = function (type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n if (process.env.NODE_ENV !== 'production') {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (key || ref) {\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n};\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory\n */\nReactElement.createFactory = function (type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. `<Foo />.type === Foo`.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n return newElement;\n};\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement\n */\nReactElement.cloneElement = function (element, config, children) {\n var propName;\n\n // Original props are copied\n var props = _assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n // Self is preserved since the owner is preserved.\n var self = element._self;\n // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n // Remaining properties override existing props\n var defaultProps;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n};\n\n/**\n * Verifies the object is a ReactElement.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function (object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n};\n\nmodule.exports = ReactElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactElement.js\n// module id = 18\n// module chunks = 0","'use strict';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n this._state = 0;\n this._handled = false;\n this._value = undefined;\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = function(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n return constructor.resolve(callback()).then(function() {\n return constructor.reject(reason);\n });\n }\n );\n};\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!arr || typeof arr.length === 'undefined')\n throw new TypeError('Promise.all accepts an array');\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(values) {\n return new Promise(function(resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n (typeof setImmediate === 'function' &&\n function(fn) {\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nmodule.exports = Promise;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/promise-polyfill/lib/index.js\n// module id = 19\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar accumulateInto = require('./accumulateInto');\nvar forEachAccumulated = require('./forEachAccumulated');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Internal store for event listeners\n */\nvar listenerBank = {};\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @private\n */\nvar executeDispatchesAndRelease = function (event, simulated) {\n if (event) {\n EventPluginUtils.executeDispatchesInOrder(event, simulated);\n\n if (!event.isPersistent()) {\n event.constructor.release(event);\n }\n }\n};\nvar executeDispatchesAndReleaseSimulated = function (e) {\n return executeDispatchesAndRelease(e, true);\n};\nvar executeDispatchesAndReleaseTopLevel = function (e) {\n return executeDispatchesAndRelease(e, false);\n};\n\nvar getDictionaryKey = function (inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n};\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n switch (name) {\n case 'onClick':\n case 'onClickCapture':\n case 'onDoubleClick':\n case 'onDoubleClickCapture':\n case 'onMouseDown':\n case 'onMouseDownCapture':\n case 'onMouseMove':\n case 'onMouseMoveCapture':\n case 'onMouseUp':\n case 'onMouseUpCapture':\n return !!(props.disabled && isInteractive(type));\n default:\n return false;\n }\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n * Required. When a top-level event is fired, this method is expected to\n * extract synthetic events that will in turn be queued and dispatched.\n *\n * `eventTypes` {object}\n * Optional, plugins that fire events must publish a mapping of registration\n * names that are used to register listeners. Values of this mapping must\n * be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n * `executeDispatch` {function(object, function, string)}\n * Optional, allows plugins to override how an event gets dispatched. By\n * default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n /**\n * Methods for injecting dependencies.\n */\n injection: {\n /**\n * @param {array} InjectedEventPluginOrder\n * @public\n */\n injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n /**\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n */\n injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n },\n\n /**\n * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {function} listener The callback to store.\n */\n putListener: function (inst, registrationName, listener) {\n !(typeof listener === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0;\n\n var key = getDictionaryKey(inst);\n var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});\n bankForRegistrationName[key] = listener;\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.didPutListener) {\n PluginModule.didPutListener(inst, registrationName, listener);\n }\n },\n\n /**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n getListener: function (inst, registrationName) {\n // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not\n // live here; needs to be moved to a better place soon\n var bankForRegistrationName = listenerBank[registrationName];\n if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {\n return null;\n }\n var key = getDictionaryKey(inst);\n return bankForRegistrationName && bankForRegistrationName[key];\n },\n\n /**\n * Deletes a listener from the registration bank.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n */\n deleteListener: function (inst, registrationName) {\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n var bankForRegistrationName = listenerBank[registrationName];\n // TODO: This should never be null -- when is it?\n if (bankForRegistrationName) {\n var key = getDictionaryKey(inst);\n delete bankForRegistrationName[key];\n }\n },\n\n /**\n * Deletes all listeners for the DOM element with the supplied ID.\n *\n * @param {object} inst The instance, which is the source of events.\n */\n deleteAllListeners: function (inst) {\n var key = getDictionaryKey(inst);\n for (var registrationName in listenerBank) {\n if (!listenerBank.hasOwnProperty(registrationName)) {\n continue;\n }\n\n if (!listenerBank[registrationName][key]) {\n continue;\n }\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n delete listenerBank[registrationName][key];\n }\n },\n\n /**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events;\n var plugins = EventPluginRegistry.plugins;\n for (var i = 0; i < plugins.length; i++) {\n // Not every plugin in the ordering may be loaded at runtime.\n var possiblePlugin = plugins[i];\n if (possiblePlugin) {\n var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n if (extractedEvents) {\n events = accumulateInto(events, extractedEvents);\n }\n }\n }\n return events;\n },\n\n /**\n * Enqueues a synthetic event that should be dispatched when\n * `processEventQueue` is invoked.\n *\n * @param {*} events An accumulation of synthetic events.\n * @internal\n */\n enqueueEvents: function (events) {\n if (events) {\n eventQueue = accumulateInto(eventQueue, events);\n }\n },\n\n /**\n * Dispatches all synthetic events on the event queue.\n *\n * @internal\n */\n processEventQueue: function (simulated) {\n // Set `eventQueue` to null before processing it so that we can tell if more\n // events get enqueued while processing.\n var processingEventQueue = eventQueue;\n eventQueue = null;\n if (simulated) {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);\n } else {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n }\n !!eventQueue ? process.env.NODE_ENV !== 'production' ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0;\n // This would be a good time to rethrow if any of the event handlers threw.\n ReactErrorUtils.rethrowCaughtError();\n },\n\n /**\n * These are needed for tests only. Do not use!\n */\n __purge: function () {\n listenerBank = {};\n },\n\n __getListenerBank: function () {\n return listenerBank;\n }\n};\n\nmodule.exports = EventPluginHub;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/EventPluginHub.js\n// module id = 20\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\n\nvar accumulateInto = require('./accumulateInto');\nvar forEachAccumulated = require('./forEachAccumulated');\nvar warning = require('fbjs/lib/warning');\n\nvar getListener = EventPluginHub.getListener;\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(inst, event, propagationPhase) {\n var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n return getListener(inst, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;\n }\n var listener = listenerAtPhase(inst, event, phase);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory. We must loop through\n * each event and perform the traversal for each one. We cannot perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n var targetInst = event._targetInst;\n var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;\n EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(inst, ignoredDirection, event) {\n if (event && event.dispatchConfig.registrationName) {\n var registrationName = event.dispatchConfig.registrationName;\n var listener = getListener(inst, registrationName);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n accumulateDispatches(event._targetInst, null, event);\n }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n}\n\nfunction accumulateDirectDispatches(events) {\n forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n accumulateDirectDispatches: accumulateDirectDispatches,\n accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nmodule.exports = EventPropagators;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/EventPropagators.js\n// module id = 21\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\n\nvar ReactInstanceMap = {\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function (key) {\n key._reactInternalInstance = undefined;\n },\n\n get: function (key) {\n return key._reactInternalInstance;\n },\n\n has: function (key) {\n return key._reactInternalInstance !== undefined;\n },\n\n set: function (key, value) {\n key._reactInternalInstance = value;\n }\n};\n\nmodule.exports = ReactInstanceMap;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactInstanceMap.js\n// module id = 22\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getEventTarget = require('./getEventTarget');\n\n/**\n * @interface UIEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar UIEventInterface = {\n view: function (event) {\n if (event.view) {\n return event.view;\n }\n\n var target = getEventTarget(event);\n if (target.window === target) {\n // target is a window object\n return target;\n }\n\n var doc = target.ownerDocument;\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n if (doc) {\n return doc.defaultView || doc.parentWindow;\n } else {\n return window;\n }\n },\n detail: function (event) {\n return event.detail || 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);\n\nmodule.exports = SyntheticUIEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticUIEvent.js\n// module id = 23\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/reactProdInvariant.js\n// module id = 24\n// module chunks = 0","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/src/exponent.js\n// module id = 25\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/emptyObject.js\n// module id = 26\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactEventEmitterMixin = require('./ReactEventEmitterMixin');\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getVendorPrefixedEventName = require('./getVendorPrefixedEventName');\nvar isEventSupported = require('./isEventSupported');\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\nvar hasEventPageXY;\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\nvar topEventMapping = {\n topAbort: 'abort',\n topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',\n topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',\n topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',\n topBlur: 'blur',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topScroll: 'scroll',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topSelectionChange: 'selectionchange',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTextInput: 'textInput',\n topTimeUpdate: 'timeupdate',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting',\n topWheel: 'wheel'\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * EventPluginHub.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function (ReactEventListener) {\n ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function (enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function () {\n return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function (registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];\n\n for (var i = 0; i < dependencies.length; i++) {\n var dependency = dependencies[i];\n if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n if (dependency === 'topWheel') {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);\n }\n } else if (dependency === 'topScroll') {\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);\n }\n } else if (dependency === 'topFocus' || dependency === 'topBlur') {\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);\n }\n\n // to make sure blur and focus event listeners are only attached once\n isListening.topBlur = true;\n isListening.topFocus = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);\n }\n\n isListening[dependency] = true;\n }\n }\n },\n\n trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);\n },\n\n trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);\n },\n\n /**\n * Protect against document.createEvent() returning null\n * Some popup blocker extensions appear to do this:\n * https://github.com/facebook/react/issues/6887\n */\n supportsEventPageXY: function () {\n if (!document.createEvent) {\n return false;\n }\n var ev = document.createEvent('MouseEvent');\n return ev != null && 'pageX' in ev;\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when\n * pageX/pageY isn't supported (legacy browsers).\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function () {\n if (hasEventPageXY === undefined) {\n hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();\n }\n if (!hasEventPageXY && !isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n }\n});\n\nmodule.exports = ReactBrowserEventEmitter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactBrowserEventEmitter.js\n// module id = 27\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar MouseEventInterface = {\n screenX: null,\n screenY: null,\n clientX: null,\n clientY: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n getModifierState: getEventModifierState,\n button: function (event) {\n // Webkit, Firefox, IE9+\n // which: 1 2 3\n // button: 0 1 2 (standard)\n var button = event.button;\n if ('which' in event) {\n return button;\n }\n // IE<9\n // which: undefined\n // button: 0 0 0\n // button: 1 4 2 (onmouseup)\n return button === 2 ? 2 : button === 4 ? 1 : 0;\n },\n buttons: null,\n relatedTarget: function (event) {\n return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n },\n // \"Proprietary\" Interface.\n pageX: function (event) {\n return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;\n },\n pageY: function (event) {\n return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);\n\nmodule.exports = SyntheticMouseEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticMouseEvent.js\n// module id = 28\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar OBSERVED_ERROR = {};\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n * <pre>\n * wrappers (injected at creation time)\n * + +\n * | |\n * +-----------------|--------|--------------+\n * | v | |\n * | +---------------+ | |\n * | +--| wrapper1 |---|----+ |\n * | | +---------------+ v | |\n * | | +-------------+ | |\n * | | +----| wrapper2 |--------+ |\n * | | | +-------------+ | | |\n * | | | | | |\n * | v v v v | wrapper\n * | +---+ +---+ +---------+ +---+ +---+ | invariants\n * perform(anyMethod) | | | | | | | | | | | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | +---+ +---+ +---------+ +---+ +---+ |\n * | initialize close |\n * +-----------------------------------------+\n * </pre>\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar TransactionImpl = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function () {\n this.transactionWrappers = this.getTransactionWrappers();\n if (this.wrapperInitData) {\n this.wrapperInitData.length = 0;\n } else {\n this.wrapperInitData = [];\n }\n this._isInTransaction = false;\n },\n\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array<TransactionWrapper>} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n\n isInTransaction: function () {\n return !!this._isInTransaction;\n },\n\n /* eslint-disable space-before-function-paren */\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked. The optional arguments helps prevent the need\n * to bind in many cases.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} a Argument to pass to the method.\n * @param {Object?=} b Argument to pass to the method.\n * @param {Object?=} c Argument to pass to the method.\n * @param {Object?=} d Argument to pass to the method.\n * @param {Object?=} e Argument to pass to the method.\n * @param {Object?=} f Argument to pass to the method.\n *\n * @return {*} Return value from `method`.\n */\n perform: function (method, scope, a, b, c, d, e, f) {\n /* eslint-enable space-before-function-paren */\n !!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0;\n var errorThrown;\n var ret;\n try {\n this._isInTransaction = true;\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {}\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n return ret;\n },\n\n initializeAll: function (startIndex) {\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;\n } finally {\n if (this.wrapperInitData[i] === OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {}\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function (startIndex) {\n !this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n if (initData !== OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {}\n }\n }\n }\n this.wrapperInitData.length = 0;\n }\n};\n\nmodule.exports = TransactionImpl;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/Transaction.js\n// module id = 29\n// module chunks = 0","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * Based on the escape-html library, which is used under the MIT License below:\n *\n * Copyright (c) 2012-2013 TJ Holowaychuk\n * Copyright (c) 2015 Andreas Lubbe\n * Copyright (c) 2015 Tiancheng \"Timothy\" Gu\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n */\n\n'use strict';\n\n// code copied and modified from escape-html\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n // \"\n escape = '"';\n break;\n case 38:\n // &\n escape = '&';\n break;\n case 39:\n // '\n escape = '''; // modified from escape-html; used to be '''\n break;\n case 60:\n // <\n escape = '<';\n break;\n case 62:\n // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n}\n// end code copied and modified from escape-html\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escapeTextContentForBrowser(text) {\n if (typeof text === 'boolean' || typeof text === 'number') {\n // this shortcircuit helps perf for types that we know will never have\n // special characters, especially given that this function is used often\n // for numeric dom ids.\n return '' + text;\n }\n return escapeHtml(text);\n}\n\nmodule.exports = escapeTextContentForBrowser;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/escapeTextContentForBrowser.js\n// module id = 30\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar DOMNamespaces = require('./DOMNamespaces');\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\n\n// SVG temp container for IE lacking innerHTML\nvar reusableSVGContainer;\n\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n // IE does not have innerHTML for SVG nodes, so instead we inject the\n // new markup in a temp node and then move the child nodes across into\n // the target node\n if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {\n reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';\n var svgNode = reusableSVGContainer.firstChild;\n while (svgNode.firstChild) {\n node.appendChild(svgNode.firstChild);\n }\n } else {\n node.innerHTML = html;\n }\n});\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE8: When updating a just created node with innerHTML only leading\n // whitespace is removed. When updating an existing node with innerHTML\n // whitespace in root TextNodes is also collapsed.\n // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\n // Feature detection; only IE8 is known to behave improperly like this.\n var testElement = document.createElement('div');\n testElement.innerHTML = ' ';\n if (testElement.innerHTML === '') {\n setInnerHTML = function (node, html) {\n // Magic theory: IE8 supposedly differentiates between added and updated\n // nodes when processing innerHTML, innerHTML on updated nodes suffers\n // from worse whitespace behavior. Re-adding a node like this triggers\n // the initial and more favorable whitespace behavior.\n // TODO: What to do on a detached node?\n if (node.parentNode) {\n node.parentNode.replaceChild(node, node);\n }\n\n // We also implement a workaround for non-visible tags disappearing into\n // thin air on IE8, this only happens if there is no visible text\n // in-front of the non-visible tags. Piggyback on the whitespace fix\n // and simply check if any non-visible tags appear in the source.\n if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n // Recover leading whitespace by temporarily prepending any character.\n // \\uFEFF has the potential advantage of being zero-width/invisible.\n // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode\n // in hopes that this is preserved even if \"\\uFEFF\" is transformed to\n // the actual Unicode character (by Babel, for example).\n // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216\n node.innerHTML = String.fromCharCode(0xfeff) + html;\n\n // deleteData leaves an empty `TextNode` which offsets the index of all\n // children. Definitely want to avoid this.\n var textNode = node.firstChild;\n if (textNode.data.length === 1) {\n node.removeChild(textNode);\n } else {\n textNode.deleteData(0, 1);\n }\n } else {\n node.innerHTML = html;\n }\n };\n }\n testElement = null;\n}\n\nmodule.exports = setInnerHTML;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/setInnerHTML.js\n// module id = 31\n// module chunks = 0","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/src/formatDecimal.js\n// module id = 32\n// module chunks = 0","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/creator.js\n// module id = 33\n// module chunks = 0","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/namespace.js\n// module id = 34\n// module chunks = 0","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/namespaces.js\n// module id = 35\n// module chunks = 0","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/point.js\n// module id = 36\n// module chunks = 0","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/on.js\n// module id = 37\n// module chunks = 0","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selector.js\n// module id = 38\n// module chunks = 0","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/sourceEvent.js\n// module id = 39\n// module chunks = 0","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/window.js\n// module id = 40\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/shallowEqual.js\n// module id = 41\n// module chunks = 0","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Symbol.js\n// module id = 42\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/node-libs-browser/~/process/browser.js\n// module id = 43\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar Danger = require('./Danger');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setInnerHTML = require('./setInnerHTML');\nvar setTextContent = require('./setTextContent');\n\nfunction getNodeAfter(parentNode, node) {\n // Special case for text components, which return [open, close] comments\n // from getHostNode.\n if (Array.isArray(node)) {\n node = node[1];\n }\n return node ? node.nextSibling : parentNode.firstChild;\n}\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n // We rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n // we are careful to use `null`.)\n parentNode.insertBefore(childNode, referenceNode);\n});\n\nfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n}\n\nfunction moveChild(parentNode, childNode, referenceNode) {\n if (Array.isArray(childNode)) {\n moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n } else {\n insertChildAt(parentNode, childNode, referenceNode);\n }\n}\n\nfunction removeChild(parentNode, childNode) {\n if (Array.isArray(childNode)) {\n var closingComment = childNode[1];\n childNode = childNode[0];\n removeDelimitedText(parentNode, childNode, closingComment);\n parentNode.removeChild(closingComment);\n }\n parentNode.removeChild(childNode);\n}\n\nfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n var node = openingComment;\n while (true) {\n var nextNode = node.nextSibling;\n insertChildAt(parentNode, node, referenceNode);\n if (node === closingComment) {\n break;\n }\n node = nextNode;\n }\n}\n\nfunction removeDelimitedText(parentNode, startNode, closingComment) {\n while (true) {\n var node = startNode.nextSibling;\n if (node === closingComment) {\n // The closing comment is removed by ReactMultiChild.\n break;\n } else {\n parentNode.removeChild(node);\n }\n }\n}\n\nfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n var parentNode = openingComment.parentNode;\n var nodeAfterComment = openingComment.nextSibling;\n if (nodeAfterComment === closingComment) {\n // There are no text nodes between the opening and closing comments; insert\n // a new one if stringText isn't empty.\n if (stringText) {\n insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n }\n } else {\n if (stringText) {\n // Set the text content of the first node after the opening comment, and\n // remove all following nodes up until the closing comment.\n setTextContent(nodeAfterComment, stringText);\n removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n } else {\n removeDelimitedText(parentNode, openingComment, closingComment);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,\n type: 'replace text',\n payload: stringText\n });\n }\n}\n\nvar dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;\nif (process.env.NODE_ENV !== 'production') {\n dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {\n Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);\n if (prevInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: prevInstance._debugID,\n type: 'replace with',\n payload: markup.toString()\n });\n } else {\n var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);\n if (nextInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: nextInstance._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n };\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,\n\n replaceDelimitedText: replaceDelimitedText,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n processUpdates: function (parentNode, updates) {\n if (process.env.NODE_ENV !== 'production') {\n var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;\n }\n\n for (var k = 0; k < updates.length; k++) {\n var update = updates[k];\n switch (update.type) {\n case 'INSERT_MARKUP':\n insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'insert child',\n payload: {\n toIndex: update.toIndex,\n content: update.content.toString()\n }\n });\n }\n break;\n case 'MOVE_EXISTING':\n moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'move child',\n payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }\n });\n }\n break;\n case 'SET_MARKUP':\n setInnerHTML(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace children',\n payload: update.content.toString()\n });\n }\n break;\n case 'TEXT_CONTENT':\n setTextContent(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace text',\n payload: update.content.toString()\n });\n }\n break;\n case 'REMOVE_NODE':\n removeChild(parentNode, update.fromNode);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'remove child',\n payload: { fromIndex: update.fromIndex }\n });\n }\n break;\n }\n }\n }\n};\n\nmodule.exports = DOMChildrenOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/DOMChildrenOperations.js\n// module id = 44\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg'\n};\n\nmodule.exports = DOMNamespaces;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/DOMNamespaces.js\n// module id = 45\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!eventPluginOrder) {\n // Wait until an `eventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var pluginModule = namesToPlugins[pluginName];\n var pluginIndex = eventPluginOrder.indexOf(pluginName);\n !(pluginIndex > -1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n !pluginModule.extractEvents ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;\n EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n var publishedEvents = pluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n !!EventPluginRegistry.registrationNameModules[registrationName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;\n EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n if (process.env.NODE_ENV !== 'production') {\n var lowerCasedName = registrationName.toLowerCase();\n EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\n if (registrationName === 'onDoubleClick') {\n EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n }\n }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in __DEV__.\n * @type {Object}\n */\n possibleRegistrationNames: process.env.NODE_ENV !== 'production' ? {} : null,\n // Trust the developer to only use possibleRegistrationNames in __DEV__\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function (injectedEventPluginOrder) {\n !!eventPluginOrder ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;\n // Clone the ordering so it cannot be dynamically mutated.\n eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function (injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var pluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n !!namesToPlugins[pluginName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;\n namesToPlugins[pluginName] = pluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function (event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n }\n if (dispatchConfig.phasedRegistrationNames !== undefined) {\n // pulling phasedRegistrationNames out of dispatchConfig helps Flow see\n // that it is not undefined.\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\n for (var phase in phasedRegistrationNames) {\n if (!phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];\n if (pluginModule) {\n return pluginModule;\n }\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function () {\n eventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n for (var lowerCasedName in possibleRegistrationNames) {\n if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n delete possibleRegistrationNames[lowerCasedName];\n }\n }\n }\n }\n};\n\nmodule.exports = EventPluginRegistry;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/EventPluginRegistry.js\n// module id = 46\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n * and actual node references.\n */\nvar ComponentTree;\nvar TreeTraversal;\nvar injection = {\n injectComponentTree: function (Injected) {\n ComponentTree = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n }\n },\n injectTreeTraversal: function (Injected) {\n TreeTraversal = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;\n }\n }\n};\n\nfunction isEndish(topLevelType) {\n return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';\n}\nfunction isStartish(topLevelType) {\n return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';\n}\n\nvar validateEventDispatches;\nif (process.env.NODE_ENV !== 'production') {\n validateEventDispatches = function (event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n var instancesIsArr = Array.isArray(dispatchInstances);\n var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;\n };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n var type = event.type || 'unknown-event';\n event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n if (simulated) {\n ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n } else {\n ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n }\n event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n }\n } else if (dispatchListeners) {\n executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n }\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who's listener returns\n * true, or null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchInstances[i])) {\n return dispatchInstances[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchInstances)) {\n return dispatchInstances;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchInstances = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchInstance = event._dispatchInstances;\n !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;\n event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n var res = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n\n getInstanceFromNode: function (node) {\n return ComponentTree.getInstanceFromNode(node);\n },\n getNodeFromInstance: function (node) {\n return ComponentTree.getNodeFromInstance(node);\n },\n isAncestor: function (a, b) {\n return TreeTraversal.isAncestor(a, b);\n },\n getLowestCommonAncestor: function (a, b) {\n return TreeTraversal.getLowestCommonAncestor(a, b);\n },\n getParentInstance: function (inst) {\n return TreeTraversal.getParentInstance(inst);\n },\n traverseTwoPhase: function (target, fn, arg) {\n return TreeTraversal.traverseTwoPhase(target, fn, arg);\n },\n traverseEnterLeave: function (from, to, fn, argFrom, argTo) {\n return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n },\n\n injection: injection\n};\n\nmodule.exports = EventPluginUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/EventPluginUtils.js\n// module id = 47\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/KeyEscapeUtils.js\n// module id = 48\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactPropTypesSecret = require('./ReactPropTypesSecret');\nvar propTypesFactory = require('prop-types/factory');\n\nvar React = require('react/lib/React');\nvar PropTypes = propTypesFactory(React.isValidElement);\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar hasReadOnlyValue = {\n button: true,\n checkbox: true,\n image: true,\n hidden: true,\n radio: true,\n reset: true,\n submit: true\n};\n\nfunction _assertSingleLink(inputProps) {\n !(inputProps.checkedLink == null || inputProps.valueLink == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;\n}\nfunction _assertValueLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.value == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\\'t want to use valueLink.') : _prodInvariant('88') : void 0;\n}\n\nfunction _assertCheckedLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.checked == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\\'t want to use checkedLink') : _prodInvariant('89') : void 0;\n}\n\nvar propTypes = {\n value: function (props, propName, componentName) {\n if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n checked: function (props, propName, componentName) {\n if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n onChange: PropTypes.func\n};\n\nvar loggedTypeFailures = {};\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\nvar LinkedValueUtils = {\n checkPropTypes: function (tagName, props, owner) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(owner);\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;\n }\n }\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current value of the input either from value prop or link.\n */\n getValue: function (inputProps) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.value;\n }\n return inputProps.value;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current checked status of the input either from checked prop\n * or link.\n */\n getChecked: function (inputProps) {\n if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.value;\n }\n return inputProps.checked;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @param {SyntheticEvent} event change event to handle\n */\n executeOnChange: function (inputProps, event) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.requestChange(event.target.value);\n } else if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.requestChange(event.target.checked);\n } else if (inputProps.onChange) {\n return inputProps.onChange.call(undefined, event);\n }\n }\n};\n\nmodule.exports = LinkedValueUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/LinkedValueUtils.js\n// module id = 49\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkup: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function (environment) {\n !!injected ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;\n ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n injected = true;\n }\n }\n};\n\nmodule.exports = ReactComponentEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactComponentEnvironment.js\n// module id = 50\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar caughtError = null;\n\n/**\n * Call a function while guarding against errors that happens within it.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} a First argument\n * @param {*} b Second argument\n */\nfunction invokeGuardedCallback(name, func, a) {\n try {\n func(a);\n } catch (x) {\n if (caughtError === null) {\n caughtError = x;\n }\n }\n}\n\nvar ReactErrorUtils = {\n invokeGuardedCallback: invokeGuardedCallback,\n\n /**\n * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n * handler are sure to be rethrown by rethrowCaughtError.\n */\n invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\n /**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n rethrowCaughtError: function () {\n if (caughtError) {\n var error = caughtError;\n caughtError = null;\n throw error;\n }\n }\n};\n\nif (process.env.NODE_ENV !== 'production') {\n /**\n * To help development we can get better devtools integration by simulating a\n * real browser event.\n */\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n var fakeNode = document.createElement('react');\n ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {\n var boundFunc = function () {\n func(a);\n };\n var evtType = 'react-' + name;\n fakeNode.addEventListener(evtType, boundFunc, false);\n var evt = document.createEvent('Event');\n evt.initEvent(evtType, false, false);\n fakeNode.dispatchEvent(evt);\n fakeNode.removeEventListener(evtType, boundFunc, false);\n };\n }\n}\n\nmodule.exports = ReactErrorUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactErrorUtils.js\n// module id = 51\n// module chunks = 0","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction enqueueUpdate(internalInstance) {\n ReactUpdates.enqueueUpdate(internalInstance);\n}\n\nfunction formatUnexpectedArgument(arg) {\n var type = typeof arg;\n if (type !== 'object') {\n return type;\n }\n var displayName = arg.constructor && arg.constructor.name || type;\n var keys = Object.keys(arg);\n if (keys.length > 0 && keys.length < 20) {\n return displayName + ' (keys: ' + keys.join(', ') + ')';\n }\n return displayName;\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var ctor = publicInstance.constructor;\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n process.env.NODE_ENV !== 'production' ? warning(!callerName, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;\n }\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + \"within `render` or another component's constructor). Render methods \" + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (internalInstance) {\n // During componentWillMount and render this will still be null but after\n // that will always render to something. At least for now. So we can use\n // this hack.\n return !!internalInstance._renderedComponent;\n } else {\n return false;\n }\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @param {string} callerName Name of the calling function in the public API.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback, callerName) {\n ReactUpdateQueue.validateCallback(callback, callerName);\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function (internalInstance, callback) {\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n // Future-proof 15.5\n if (callback !== undefined && callback !== null) {\n ReactUpdateQueue.validateCallback(callback, 'replaceState');\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n }\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetState();\n process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;\n }\n\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');\n\n if (!internalInstance) {\n return;\n }\n\n var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function (internalInstance, nextElement, nextContext) {\n internalInstance._pendingElement = nextElement;\n // TODO: introduce _pendingContext instead of setting it directly.\n internalInstance._context = nextContext;\n enqueueUpdate(internalInstance);\n },\n\n validateCallback: function (callback, callerName) {\n !(!callback || typeof callback === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;\n }\n};\n\nmodule.exports = ReactUpdateQueue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactUpdateQueue.js\n// module id = 52\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* globals MSApp */\n\n'use strict';\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n return function (arg0, arg1, arg2, arg3) {\n MSApp.execUnsafeLocalFunction(function () {\n return func(arg0, arg1, arg2, arg3);\n });\n };\n } else {\n return func;\n }\n};\n\nmodule.exports = createMicrosoftUnsafeLocalFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/createMicrosoftUnsafeLocalFunction.js\n// module id = 53\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode;\n\n // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n }\n\n // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nmodule.exports = getEventCharCode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getEventCharCode.js\n// module id = 54\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n Alt: 'altKey',\n Control: 'ctrlKey',\n Meta: 'metaKey',\n Shift: 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getEventModifierState.js\n// module id = 55\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n\n // Normalize SVG <use> element events #4963\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n }\n\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getEventTarget.js\n// module id = 56\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature = document.implementation && document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/isEventSupported.js\n// module id = 57\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\n\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n var prevEmpty = prevElement === null || prevElement === false;\n var nextEmpty = nextElement === null || nextElement === false;\n if (prevEmpty || nextEmpty) {\n return prevEmpty === nextEmpty;\n }\n\n var prevType = typeof prevElement;\n var nextType = typeof nextElement;\n if (prevType === 'string' || prevType === 'number') {\n return nextType === 'string' || nextType === 'number';\n } else {\n return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n }\n}\n\nmodule.exports = shouldUpdateReactComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/shouldUpdateReactComponent.js\n// module id = 58\n// module chunks = 0","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar validateDOMNesting = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n // This validation code was written based on the HTML5 parsing spec:\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n //\n // Note: this does not catch all invalid nesting, nor does it try to (as it's\n // not clear what practical benefit doing so provides); instead, we warn only\n // for cases where the parser will give a parse tree differing from what React\n // intended. For example, <b><div></div></b> is invalid but we don't warn\n // because it still parses correctly; we do warn for other cases like nested\n // <p> tags where the beginning of the second element implicitly closes the\n // first, causing a confusing mess.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#special\n var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\n // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n // TODO: Distinguish by namespace here -- for <title>, including it here\n // errs on the side of fewer warnings\n 'foreignObject', 'desc', 'title'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n var buttonScopeTags = inScopeTags.concat(['button']);\n\n // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\n var emptyAncestorInfo = {\n current: null,\n\n formTag: null,\n aTagInScope: null,\n buttonTagInScope: null,\n nobrTagInScope: null,\n pTagInButtonScope: null,\n\n listItemTagAutoclosing: null,\n dlItemTagAutoclosing: null\n };\n\n var updatedAncestorInfo = function (oldInfo, tag, instance) {\n var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n var info = { tag: tag, instance: instance };\n\n if (inScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.aTagInScope = null;\n ancestorInfo.buttonTagInScope = null;\n ancestorInfo.nobrTagInScope = null;\n }\n if (buttonScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.pTagInButtonScope = null;\n }\n\n // See rules for 'li', 'dd', 'dt' start tags in\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n ancestorInfo.listItemTagAutoclosing = null;\n ancestorInfo.dlItemTagAutoclosing = null;\n }\n\n ancestorInfo.current = info;\n\n if (tag === 'form') {\n ancestorInfo.formTag = info;\n }\n if (tag === 'a') {\n ancestorInfo.aTagInScope = info;\n }\n if (tag === 'button') {\n ancestorInfo.buttonTagInScope = info;\n }\n if (tag === 'nobr') {\n ancestorInfo.nobrTagInScope = info;\n }\n if (tag === 'p') {\n ancestorInfo.pTagInButtonScope = info;\n }\n if (tag === 'li') {\n ancestorInfo.listItemTagAutoclosing = info;\n }\n if (tag === 'dd' || tag === 'dt') {\n ancestorInfo.dlItemTagAutoclosing = info;\n }\n\n return ancestorInfo;\n };\n\n /**\n * Returns whether\n */\n var isTagValidWithParent = function (tag, parentTag) {\n // First, let's check if we're in an unusual parsing mode...\n switch (parentTag) {\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n case 'select':\n return tag === 'option' || tag === 'optgroup' || tag === '#text';\n case 'optgroup':\n return tag === 'option' || tag === '#text';\n // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n // but\n case 'option':\n return tag === '#text';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n // No special behavior since these rules fall back to \"in body\" mode for\n // all except special table nodes which cause bad parsing behavior anyway.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n case 'tr':\n return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n case 'tbody':\n case 'thead':\n case 'tfoot':\n return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n case 'colgroup':\n return tag === 'col' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n case 'table':\n return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n case 'head':\n return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n case 'html':\n return tag === 'head' || tag === 'body';\n case '#document':\n return tag === 'html';\n }\n\n // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n // where the parsing rules cause implicit opens or closes to be added.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n case 'rp':\n case 'rt':\n return impliedEndTags.indexOf(parentTag) === -1;\n\n case 'body':\n case 'caption':\n case 'col':\n case 'colgroup':\n case 'frame':\n case 'head':\n case 'html':\n case 'tbody':\n case 'td':\n case 'tfoot':\n case 'th':\n case 'thead':\n case 'tr':\n // These tags are only valid with a few parents that have special child\n // parsing rules -- if we're down here, then none of those matched and\n // so we allow it only if we don't know what the parent is, as all other\n // cases are invalid.\n return parentTag == null;\n }\n\n return true;\n };\n\n /**\n * Returns whether\n */\n var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n switch (tag) {\n case 'address':\n case 'article':\n case 'aside':\n case 'blockquote':\n case 'center':\n case 'details':\n case 'dialog':\n case 'dir':\n case 'div':\n case 'dl':\n case 'fieldset':\n case 'figcaption':\n case 'figure':\n case 'footer':\n case 'header':\n case 'hgroup':\n case 'main':\n case 'menu':\n case 'nav':\n case 'ol':\n case 'p':\n case 'section':\n case 'summary':\n case 'ul':\n case 'pre':\n case 'listing':\n case 'table':\n case 'hr':\n case 'xmp':\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return ancestorInfo.pTagInButtonScope;\n\n case 'form':\n return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n case 'li':\n return ancestorInfo.listItemTagAutoclosing;\n\n case 'dd':\n case 'dt':\n return ancestorInfo.dlItemTagAutoclosing;\n\n case 'button':\n return ancestorInfo.buttonTagInScope;\n\n case 'a':\n // Spec says something about storing a list of markers, but it sounds\n // equivalent to this check.\n return ancestorInfo.aTagInScope;\n\n case 'nobr':\n return ancestorInfo.nobrTagInScope;\n }\n\n return null;\n };\n\n /**\n * Given a ReactCompositeComponent instance, return a list of its recursive\n * owners, starting at the root and ending with the instance itself.\n */\n var findOwnerStack = function (instance) {\n if (!instance) {\n return [];\n }\n\n var stack = [];\n do {\n stack.push(instance);\n } while (instance = instance._currentElement._owner);\n stack.reverse();\n return stack;\n };\n\n var didWarn = {};\n\n validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n\n if (childText != null) {\n process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;\n childTag = '#text';\n }\n\n var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n var problematic = invalidParent || invalidAncestor;\n\n if (problematic) {\n var ancestorTag = problematic.tag;\n var ancestorInstance = problematic.instance;\n\n var childOwner = childInstance && childInstance._currentElement._owner;\n var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n\n var childOwners = findOwnerStack(childOwner);\n var ancestorOwners = findOwnerStack(ancestorOwner);\n\n var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n var i;\n\n var deepestCommon = -1;\n for (i = 0; i < minStackLen; i++) {\n if (childOwners[i] === ancestorOwners[i]) {\n deepestCommon = i;\n } else {\n break;\n }\n }\n\n var UNKNOWN = '(unknown)';\n var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ownerInfo = [].concat(\n // If the parent and child instances have a common owner ancestor, start\n // with that -- otherwise we just start with the parent's owners.\n deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n // If we're warning about an invalid (non-parent) ancestry, add '...'\n invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');\n\n var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;\n if (didWarn[warnKey]) {\n return;\n }\n didWarn[warnKey] = true;\n\n var tagDisplayName = childTag;\n var whitespaceInfo = '';\n if (childTag === '#text') {\n if (/\\S/.test(childText)) {\n tagDisplayName = 'Text nodes';\n } else {\n tagDisplayName = 'Whitespace text nodes';\n whitespaceInfo = \" Make sure you don't have any extra whitespace between tags on \" + 'each line of your source code.';\n }\n } else {\n tagDisplayName = '<' + childTag + '>';\n }\n\n if (invalidParent) {\n var info = '';\n if (ancestorTag === 'table' && childTag === 'tr') {\n info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n }\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;\n }\n }\n };\n\n validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;\n\n // For testing\n validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n };\n}\n\nmodule.exports = validateDOMNesting;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/validateDOMNesting.js\n// module id = 59\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 = 60\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader/lib/css-base.js\n// module id = 61\n// module chunks = 0","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/src/formatPrefixAuto.js\n// module id = 62\n// module chunks = 0","import formatTypes from \"./formatTypes\";\n\n// [[fill]align][sign][symbol][0][width][,][.precision][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\n var match,\n fill = match[1] || \" \",\n align = match[2] || \">\",\n sign = match[3] || \"-\",\n symbol = match[4] || \"\",\n zero = !!match[5],\n width = match[6] && +match[6],\n comma = !!match[7],\n precision = match[8] && +match[8].slice(1),\n type = match[9] || \"\";\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // Map invalid types to the default format.\n else if (!formatTypes[type]) type = \"\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n this.fill = fill;\n this.align = align;\n this.sign = sign;\n this.symbol = symbol;\n this.zero = zero;\n this.width = width;\n this.comma = comma;\n this.precision = precision;\n this.type = type;\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + this.type;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/src/formatSpecifier.js\n// module id = 63\n// module chunks = 0","import formatDefault from \"./formatDefault\";\nimport formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"\": formatDefault,\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/src/formatTypes.js\n// module id = 64\n// module chunks = 0","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n type = specifier.type;\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = !type || /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? (type ? 6 : 12)\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = valueSuffix + (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/src/locale.js\n// module id = 65\n// module chunks = 0","var matcher = function(selector) {\n return function() {\n return this.matches(selector);\n };\n};\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!element.matches) {\n var vendorMatches = element.webkitMatchesSelector\n || element.msMatchesSelector\n || element.mozMatchesSelector\n || element.oMatchesSelector;\n matcher = function(selector) {\n return function() {\n return vendorMatches.call(this, selector);\n };\n };\n }\n}\n\nexport default matcher;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/matcher.js\n// module id = 66\n// module chunks = 0","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/enter.js\n// module id = 67\n// module chunks = 0","export default function(update) {\n return new Array(update.length);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/sparse.js\n// module id = 68\n// module chunks = 0","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/style.js\n// module id = 69\n// module chunks = 0","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selectorAll.js\n// module id = 70\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function listen(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function capture(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n } else {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n }\n return {\n remove: emptyFunction\n };\n }\n },\n\n registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/EventListener.js\n// module id = 71\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n // IE8 can throw \"Can't move focus to the control because it is invisible,\n // not enabled, or of a type that does not accept the focus.\" for all kinds of\n // reasons that are too expensive and fragile to test.\n try {\n node.focus();\n } catch (e) {}\n}\n\nmodule.exports = focusNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/focusNode.js\n// module id = 72\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc) /*?DOMElement*/{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/getActiveElement.js\n// module id = 73\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n// React 15.5 references this module, and assumes PropTypes are still callable in production.\n// Therefore we re-export development-only version with all the PropTypes checks here.\n// However if one is migrating to the `prop-types` npm library, they will go through the\n// `index.js` entry point, and it will branch depending on the environment.\nvar factory = require('./factoryWithTypeCheckers');\nmodule.exports = function(isValidElement) {\n // It is still allowed in 15.5.\n var throwOnDirectAccess = false;\n return factory(isValidElement, throwOnDirectAccess);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/factory.js\n// module id = 74\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n columns: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowSpan: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnSpan: true,\n gridColumnStart: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundAttachment: true,\n backgroundColor: true,\n backgroundImage: true,\n backgroundPositionX: true,\n backgroundPositionY: true,\n backgroundRepeat: true\n },\n backgroundPosition: {\n backgroundPositionX: true,\n backgroundPositionY: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n },\n outline: {\n outlineWidth: true,\n outlineStyle: true,\n outlineColor: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/CSSProperty.js\n// module id = 75\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PooledClass = require('./PooledClass');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\n\nvar CallbackQueue = function () {\n function CallbackQueue(arg) {\n _classCallCheck(this, CallbackQueue);\n\n this._callbacks = null;\n this._contexts = null;\n this._arg = arg;\n }\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n\n\n CallbackQueue.prototype.enqueue = function enqueue(callback, context) {\n this._callbacks = this._callbacks || [];\n this._callbacks.push(callback);\n this._contexts = this._contexts || [];\n this._contexts.push(context);\n };\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.notifyAll = function notifyAll() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n var arg = this._arg;\n if (callbacks && contexts) {\n !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].call(contexts[i], arg);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n };\n\n CallbackQueue.prototype.checkpoint = function checkpoint() {\n return this._callbacks ? this._callbacks.length : 0;\n };\n\n CallbackQueue.prototype.rollback = function rollback(len) {\n if (this._callbacks && this._contexts) {\n this._callbacks.length = len;\n this._contexts.length = len;\n }\n };\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.reset = function reset() {\n this._callbacks = null;\n this._contexts = null;\n };\n\n /**\n * `PooledClass` looks for this.\n */\n\n\n CallbackQueue.prototype.destructor = function destructor() {\n this.reset();\n };\n\n return CallbackQueue;\n}();\n\nmodule.exports = PooledClass.addPoolingTo(CallbackQueue);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/CallbackQueue.js\n// module id = 76\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar quoteAttributeValueForBrowser = require('./quoteAttributeValueForBrowser');\nvar warning = require('fbjs/lib/warning');\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n return true;\n }\n if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;\n return false;\n}\n\nfunction shouldIgnoreValue(propertyInfo, value) {\n return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function (id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);\n },\n\n setAttributeForID: function (node, id) {\n node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n },\n\n createMarkupForRoot: function () {\n return DOMProperty.ROOT_ATTRIBUTE_NAME + '=\"\"';\n },\n\n setAttributeForRoot: function (node) {\n node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function (name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n if (shouldIgnoreValue(propertyInfo, value)) {\n return '';\n }\n var attributeName = propertyInfo.attributeName;\n if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n return attributeName + '=\"\"';\n }\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n }\n return null;\n },\n\n /**\n * Creates markup for a custom property.\n *\n * @param {string} name\n * @param {*} value\n * @return {string} Markup string, or empty string if the property was invalid.\n */\n createMarkupForCustomAttribute: function (name, value) {\n if (!isAttributeNameSafe(name) || value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function (node, name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(propertyInfo, value)) {\n this.deleteValueForProperty(node, name);\n return;\n } else if (propertyInfo.mustUseProperty) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propertyInfo.propertyName] = value;\n } else {\n var attributeName = propertyInfo.attributeName;\n var namespace = propertyInfo.attributeNamespace;\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n if (namespace) {\n node.setAttributeNS(namespace, attributeName, '' + value);\n } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n node.setAttribute(attributeName, '');\n } else {\n node.setAttribute(attributeName, '' + value);\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n DOMPropertyOperations.setValueForAttribute(node, name, value);\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n setValueForAttribute: function (node, name, value) {\n if (!isAttributeNameSafe(name)) {\n return;\n }\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n /**\n * Deletes an attributes from a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForAttribute: function (node, name) {\n node.removeAttribute(name);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function (node, name) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (propertyInfo.mustUseProperty) {\n var propName = propertyInfo.propertyName;\n if (propertyInfo.hasBooleanValue) {\n node[propName] = false;\n } else {\n node[propName] = '';\n }\n } else {\n node.removeAttribute(propertyInfo.attributeName);\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n }\n};\n\nmodule.exports = DOMPropertyOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/DOMPropertyOperations.js\n// module id = 77\n// module chunks = 0","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentFlags = {\n hasCachedChildNodes: 1 << 0\n};\n\nmodule.exports = ReactDOMComponentFlags;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMComponentFlags.js\n// module id = 78\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValueDefaultValue = false;\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n if (this._rootNodeID && this._wrapperState.pendingUpdate) {\n this._wrapperState.pendingUpdate = false;\n\n var props = this._currentElement.props;\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n updateOptions(this, Boolean(props.multiple), value);\n }\n }\n}\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\nfunction checkSelectPropTypes(inst, props) {\n var owner = inst._currentElement._owner;\n LinkedValueUtils.checkPropTypes('select', props, owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n for (var i = 0; i < valuePropNames.length; i++) {\n var propName = valuePropNames[i];\n if (props[propName] == null) {\n continue;\n }\n var isArray = Array.isArray(props[propName]);\n if (props.multiple && !isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n } else if (!props.multiple && isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n }\n }\n}\n\n/**\n * @param {ReactDOMComponent} inst\n * @param {boolean} multiple\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\nfunction updateOptions(inst, multiple, propValue) {\n var selectedValue, i;\n var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\n if (multiple) {\n selectedValue = {};\n for (i = 0; i < propValue.length; i++) {\n selectedValue['' + propValue[i]] = true;\n }\n for (i = 0; i < options.length; i++) {\n var selected = selectedValue.hasOwnProperty(options[i].value);\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n selectedValue = '' + propValue;\n for (i = 0; i < options.length; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n return;\n }\n }\n if (options.length) {\n options[0].selected = true;\n }\n }\n}\n\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = {\n getHostProps: function (inst, props) {\n return _assign({}, props, {\n onChange: inst._wrapperState.onChange,\n value: undefined\n });\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n checkSelectPropTypes(inst, props);\n }\n\n var value = LinkedValueUtils.getValue(props);\n inst._wrapperState = {\n pendingUpdate: false,\n initialValue: value != null ? value : props.defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n wasMultiple: Boolean(props.multiple)\n };\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValueDefaultValue = true;\n }\n },\n\n getSelectValueContext: function (inst) {\n // ReactDOMOption looks at this initial value so the initial generated\n // markup has correct `selected` attributes\n return inst._wrapperState.initialValue;\n },\n\n postUpdateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // After the initial mount, we control selected-ness manually so don't pass\n // this value down\n inst._wrapperState.initialValue = undefined;\n\n var wasMultiple = inst._wrapperState.wasMultiple;\n inst._wrapperState.wasMultiple = Boolean(props.multiple);\n\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n inst._wrapperState.pendingUpdate = false;\n updateOptions(inst, Boolean(props.multiple), value);\n } else if (wasMultiple !== Boolean(props.multiple)) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (props.defaultValue != null) {\n updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');\n }\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n if (this._rootNodeID) {\n this._wrapperState.pendingUpdate = true;\n }\n ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMSelect;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMSelect.js\n// module id = 79\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyComponentFactory;\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponentFactory: function (factory) {\n emptyComponentFactory = factory;\n }\n};\n\nvar ReactEmptyComponent = {\n create: function (instantiate) {\n return emptyComponentFactory(instantiate);\n }\n};\n\nReactEmptyComponent.injection = ReactEmptyComponentInjection;\n\nmodule.exports = ReactEmptyComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactEmptyComponent.js\n// module id = 80\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar ReactFeatureFlags = {\n // When true, call console.time() before and .timeEnd() after each top-level\n // render (both initial renders and updates). Useful when looking at prod-mode\n // timeline profiles in Chrome, for example.\n logTopLevelRenders: false\n};\n\nmodule.exports = ReactFeatureFlags;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactFeatureFlags.js\n// module id = 81\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar genericComponentClass = null;\nvar textComponentClass = null;\n\nvar ReactHostComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function (componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function (componentClass) {\n textComponentClass = componentClass;\n }\n};\n\n/**\n * Get a host internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n !genericComponentClass ? process.env.NODE_ENV !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;\n return new genericComponentClass(element);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactHostComponent = {\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactHostComponentInjection\n};\n\nmodule.exports = ReactHostComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactHostComponent.js\n// module id = 82\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMSelection = require('./ReactDOMSelection');\n\nvar containsNode = require('fbjs/lib/containsNode');\nvar focusNode = require('fbjs/lib/focusNode');\nvar getActiveElement = require('fbjs/lib/getActiveElement');\n\nfunction isInDocument(node) {\n return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n hasSelectionCapabilities: function (elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n },\n\n getSelectionInformation: function () {\n var focusedElem = getActiveElement();\n return {\n focusedElem: focusedElem,\n selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n };\n },\n\n /**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n restoreSelection: function (priorSelectionInformation) {\n var curFocusedElem = getActiveElement();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n }\n focusNode(priorFocusedElem);\n }\n },\n\n /**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n getSelection: function (input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n // IE8 input.\n var range = document.selection.createRange();\n // There can only be one selection per document in IE, so it must\n // be in our element.\n if (range.parentElement() === input) {\n selection = {\n start: -range.moveStart('character', -input.value.length),\n end: -range.moveEnd('character', -input.value.length)\n };\n }\n } else {\n // Content editable or old IE textarea.\n selection = ReactDOMSelection.getOffsets(input);\n }\n\n return selection || { start: 0, end: 0 };\n },\n\n /**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n setSelection: function (input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveStart('character', start);\n range.moveEnd('character', end - start);\n range.select();\n } else {\n ReactDOMSelection.setOffsets(input, offsets);\n }\n }\n};\n\nmodule.exports = ReactInputSelection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactInputSelection.js\n// module id = 83\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMProperty = require('./DOMProperty');\nvar React = require('react/lib/React');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMContainerInfo = require('./ReactDOMContainerInfo');\nvar ReactDOMFeatureFlags = require('./ReactDOMFeatureFlags');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMarkupChecksum = require('./ReactMarkupChecksum');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar invariant = require('fbjs/lib/invariant');\nvar setInnerHTML = require('./setInnerHTML');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\nvar instancesByReactRootID = {};\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var wrappedElement = wrapperInstance._currentElement.props.child;\n var type = wrappedElement.type;\n markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);\n console.time(markerName);\n }\n\n var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */\n );\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */\n !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);\n transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\nfunction unmountComponentFromNode(instance, container, safely) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginFlush();\n }\n ReactReconciler.unmountComponent(instance, safely);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onEndFlush();\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n}\n\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\nfunction hasNonRootReactChild(container) {\n var rootEl = getReactRootElementInContainer(container);\n if (rootEl) {\n var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return !!(inst && inst._hostParent);\n }\n}\n\n/**\n * True if the supplied DOM node is a React DOM element and\n * it has been rendered by another copy of React.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM has been rendered by another copy of React\n * @internal\n */\nfunction nodeIsRenderedByOtherInstance(container) {\n var rootEl = getReactRootElementInContainer(container);\n return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));\n}\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n}\n\n/**\n * True if the supplied DOM node is a valid React node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid React DOM node.\n * @internal\n */\nfunction isReactNode(node) {\n return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));\n}\n\nfunction getHostRootInstanceInContainer(container) {\n var rootEl = getReactRootElementInContainer(container);\n var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;\n}\n\nfunction getTopLevelWrapperInContainer(container) {\n var root = getHostRootInstanceInContainer(container);\n return root ? root._hostContainerInfo._topLevelWrapper : null;\n}\n\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\nvar topLevelRootCounter = 1;\nvar TopLevelWrapper = function () {\n this.rootID = topLevelRootCounter++;\n};\nTopLevelWrapper.prototype.isReactComponent = {};\nif (process.env.NODE_ENV !== 'production') {\n TopLevelWrapper.displayName = 'TopLevelWrapper';\n}\nTopLevelWrapper.prototype.render = function () {\n return this.props.child;\n};\nTopLevelWrapper.isReactTopLevelWrapper = true;\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n TopLevelWrapper: TopLevelWrapper,\n\n /**\n * Used by devtools. The keys are not important.\n */\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function (container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {\n ReactMount.scrollMonitor(container, function () {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n return prevComponent;\n },\n\n /**\n * Render a new component into the DOM. Hooked by hooks!\n *\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n var componentInstance = instantiateReactComponent(nextElement, false);\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n\n var wrapperID = componentInstance._instance.rootID;\n instancesByReactRootID[wrapperID] = componentInstance;\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;\n return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n },\n\n _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');\n !React.isValidElement(nextElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? \" Instead of passing a string like 'div', pass \" + \"React.createElement('div') or <div />.\" : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? \" Instead of passing a string like 'div', pass \" + \"React.createElement('div') or <div />.\" : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;\n\n process.env.NODE_ENV !== 'production' ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n\n var nextWrappedElement = React.createElement(TopLevelWrapper, {\n child: nextElement\n });\n\n var nextContext;\n if (parentComponent) {\n var parentInst = ReactInstanceMap.get(parentComponent);\n nextContext = parentInst._processChildContext(parentInst._context);\n } else {\n nextContext = emptyObject;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n\n if (prevComponent) {\n var prevWrappedElement = prevComponent._currentElement;\n var prevElement = prevWrappedElement.props.child;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n var publicInst = prevComponent._renderedComponent.getPublicInstance();\n var updatedCallback = callback && function () {\n callback.call(publicInst);\n };\n ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);\n return publicInst;\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (internalGetID(rootElementSibling)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;\n break;\n }\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function (nextElement, container, callback) {\n return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function (container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), \"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by another copy of React.') : void 0;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n if (!prevComponent) {\n // Check if the node being unmounted was rendered by React, but isn't a\n // root node.\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n // Check if the container itself is a React root node.\n var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, \"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n }\n\n return false;\n }\n delete instancesByReactRootID[prevComponent._instance.rootID];\n ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n return true;\n },\n\n _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n ReactDOMComponentTree.precacheNode(instance, rootElement);\n return;\n } else {\n var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\n var normalizedMarkup = markup;\n if (process.env.NODE_ENV !== 'production') {\n // because rootMarkup is retrieved from the DOM, various normalizations\n // will have occurred which will not be present in `markup`. Here,\n // insert markup into a <div> or <iframe> depending on the container\n // type to perform the same normalizations before comparing.\n var normalizer;\n if (container.nodeType === ELEMENT_NODE_TYPE) {\n normalizer = document.createElement('div');\n normalizer.innerHTML = markup;\n normalizedMarkup = normalizer.innerHTML;\n } else {\n normalizer = document.createElement('iframe');\n document.body.appendChild(normalizer);\n normalizer.contentDocument.write(markup);\n normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n document.body.removeChild(normalizer);\n }\n }\n\n var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\\n%s', difference) : _prodInvariant('42', difference) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\\n%s', difference) : void 0;\n }\n }\n }\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document but you didn\\'t use server rendering. We can\\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;\n\n if (transaction.useCreateElement) {\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n DOMLazyTree.insertTreeBefore(container, markup, null);\n } else {\n setInnerHTML(container, markup);\n ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);\n if (hostNode._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: hostNode._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n }\n};\n\nmodule.exports = ReactMount;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactMount.js\n// module id = 84\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar React = require('react/lib/React');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ReactNodeTypes = {\n HOST: 0,\n COMPOSITE: 1,\n EMPTY: 2,\n\n getType: function (node) {\n if (node === null || node === false) {\n return ReactNodeTypes.EMPTY;\n } else if (React.isValidElement(node)) {\n if (typeof node.type === 'function') {\n return ReactNodeTypes.COMPOSITE;\n } else {\n return ReactNodeTypes.HOST;\n }\n }\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;\n }\n};\n\nmodule.exports = ReactNodeTypes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactNodeTypes.js\n// module id = 85\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ViewportMetrics = {\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function (scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n};\n\nmodule.exports = ViewportMetrics;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ViewportMetrics.js\n// module id = 86\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;\n\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n if (Array.isArray(current)) {\n if (Array.isArray(next)) {\n current.push.apply(current, next);\n return current;\n }\n current.push(next);\n return current;\n }\n\n if (Array.isArray(next)) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/accumulateInto.js\n// module id = 87\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\n\nfunction forEachAccumulated(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n}\n\nmodule.exports = forEachAccumulated;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/forEachAccumulated.js\n// module id = 88\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactNodeTypes = require('./ReactNodeTypes');\n\nfunction getHostComponentFromComposite(inst) {\n var type;\n\n while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n inst = inst._renderedComponent;\n }\n\n if (type === ReactNodeTypes.HOST) {\n return inst._renderedComponent;\n } else if (type === ReactNodeTypes.EMPTY) {\n return null;\n }\n}\n\nmodule.exports = getHostComponentFromComposite;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getHostComponentFromComposite.js\n// module id = 89\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n if (!contentKey && ExecutionEnvironment.canUseDOM) {\n // Prefer textContent to innerText because many browsers support both but\n // SVG <text> elements don't support innerText even when <div> does.\n contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n }\n return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getTextContentAccessor.js\n// module id = 90\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nfunction isCheckable(elem) {\n var type = elem.type;\n var nodeName = elem.nodeName;\n return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio');\n}\n\nfunction getTracker(inst) {\n return inst._wrapperState.valueTracker;\n}\n\nfunction attachTracker(inst, tracker) {\n inst._wrapperState.valueTracker = tracker;\n}\n\nfunction detachTracker(inst) {\n inst._wrapperState.valueTracker = null;\n}\n\nfunction getValueFromNode(node) {\n var value;\n if (node) {\n value = isCheckable(node) ? '' + node.checked : node.value;\n }\n return value;\n}\n\nvar inputValueTracking = {\n // exposed for testing\n _getTrackerFromNode: function (node) {\n return getTracker(ReactDOMComponentTree.getInstanceFromNode(node));\n },\n\n\n track: function (inst) {\n if (getTracker(inst)) {\n return;\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var valueField = isCheckable(node) ? 'checked' : 'value';\n var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);\n\n var currentValue = '' + node[valueField];\n\n // if someone has already defined a value or Safari, then bail\n // and don't track value will cause over reporting of changes,\n // but it's better then a hard failure\n // (needed for certain tests that spyOn input values and Safari)\n if (node.hasOwnProperty(valueField) || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') {\n return;\n }\n\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable,\n configurable: true,\n get: function () {\n return descriptor.get.call(this);\n },\n set: function (value) {\n currentValue = '' + value;\n descriptor.set.call(this, value);\n }\n });\n\n attachTracker(inst, {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = '' + value;\n },\n stopTracking: function () {\n detachTracker(inst);\n delete node[valueField];\n }\n });\n },\n\n updateValueIfChanged: function (inst) {\n if (!inst) {\n return false;\n }\n var tracker = getTracker(inst);\n\n if (!tracker) {\n inputValueTracking.track(inst);\n return true;\n }\n\n var lastValue = tracker.getValue();\n var nextValue = getValueFromNode(ReactDOMComponentTree.getNodeFromInstance(inst));\n\n if (nextValue !== lastValue) {\n tracker.setValue(nextValue);\n return true;\n }\n\n return false;\n },\n stopTracking: function (inst) {\n var tracker = getTracker(inst);\n if (tracker) {\n tracker.stopTracking();\n }\n }\n};\n\nmodule.exports = inputValueTracking;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/inputValueTracking.js\n// module id = 91\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactCompositeComponent = require('./ReactCompositeComponent');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactHostComponent = require('./ReactHostComponent');\n\nvar getNextDebugID = require('react/lib/getNextDebugID');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function (element) {\n this.construct(element);\n};\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {boolean} shouldHaveDebugID\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, shouldHaveDebugID) {\n var instance;\n\n if (node === null || node === false) {\n instance = ReactEmptyComponent.create(instantiateReactComponent);\n } else if (typeof node === 'object') {\n var element = node;\n var type = element.type;\n if (typeof type !== 'function' && typeof type !== 'string') {\n var info = '';\n if (process.env.NODE_ENV !== 'production') {\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in.\";\n }\n }\n info += getDeclarationErrorAddendum(element._owner);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info) : _prodInvariant('130', type == null ? type : typeof type, info) : void 0;\n }\n\n // Special case string values\n if (typeof element.type === 'string') {\n instance = ReactHostComponent.createInternalComponent(element);\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // representations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n\n // We renamed this. Allow the old name for compat. :(\n if (!instance.getHostNode) {\n instance.getHostNode = instance.getNativeNode;\n }\n } else {\n instance = new ReactCompositeComponentWrapper(element);\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactHostComponent.createInstanceForText(node);\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;\n }\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (process.env.NODE_ENV !== 'production') {\n instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (process.env.NODE_ENV !== 'production') {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\n_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {\n _instantiateReactComponent: instantiateReactComponent\n});\n\nmodule.exports = instantiateReactComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/instantiateReactComponent.js\n// module id = 92\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n color: true,\n date: true,\n datetime: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n password: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true\n};\n\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n if (nodeName === 'input') {\n return !!supportedInputTypes[elem.type];\n }\n\n if (nodeName === 'textarea') {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isTextInputElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/isTextInputElement.js\n// module id = 93\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar setInnerHTML = require('./setInnerHTML');\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function (node, text) {\n if (text) {\n var firstChild = node.firstChild;\n\n if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n if (!('textContent' in document.documentElement)) {\n setTextContent = function (node, text) {\n if (node.nodeType === 3) {\n node.nodeValue = text;\n return;\n }\n setInnerHTML(node, escapeTextContentForBrowser(text));\n };\n }\n}\n\nmodule.exports = setTextContent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/setTextContent.js\n// module id = 94\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = \" It looks like you're using an element created by a different \" + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/traverseAllChildren.js\n// module id = 95\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar canDefineProperty = require('./canDefineProperty');\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar lowPriorityWarning = require('./lowPriorityWarning');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nReactComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function (partialState, callback) {\n !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;\n this.updater.enqueueSetState(this, partialState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'setState');\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'forceUpdate');\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (process.env.NODE_ENV !== 'production') {\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function (methodName, info) {\n if (canDefineProperty) {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function () {\n lowPriorityWarning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n return undefined;\n }\n });\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactPureComponent(props, context, updater) {\n // Duplicated from ReactComponent.\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = ReactComponent.prototype;\nReactPureComponent.prototype = new ComponentDummy();\nReactPureComponent.prototype.constructor = ReactPureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(ReactPureComponent.prototype, ReactComponent.prototype);\nReactPureComponent.prototype.isPureReactComponent = true;\n\nmodule.exports = {\n Component: ReactComponent,\n PureComponent: ReactPureComponent\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactBaseClasses.js\n// module id = 96\n// module chunks = 0","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction isNative(fn) {\n // Based on isNative() from Lodash\n var funcToString = Function.prototype.toString;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var reIsNative = RegExp('^' + funcToString\n // Take an example native function source for comparison\n .call(hasOwnProperty\n // Strip regex characters so we can use it for regex\n ).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&'\n // Remove hasOwnProperty from the template to make it generic\n ).replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n try {\n var source = funcToString.call(fn);\n return reIsNative.test(source);\n } catch (err) {\n return false;\n }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === 'function' &&\n// Map\ntypeof Map === 'function' && isNative(Map) &&\n// Map.prototype.keys\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n// Set\ntypeof Set === 'function' && isNative(Set) &&\n// Set.prototype.keys\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n var itemMap = new Map();\n var rootIDSet = new Set();\n\n setItem = function (id, item) {\n itemMap.set(id, item);\n };\n getItem = function (id) {\n return itemMap.get(id);\n };\n removeItem = function (id) {\n itemMap['delete'](id);\n };\n getItemIDs = function () {\n return Array.from(itemMap.keys());\n };\n\n addRoot = function (id) {\n rootIDSet.add(id);\n };\n removeRoot = function (id) {\n rootIDSet['delete'](id);\n };\n getRootIDs = function () {\n return Array.from(rootIDSet.keys());\n };\n} else {\n var itemByKey = {};\n var rootByKey = {};\n\n // Use non-numeric keys to prevent V8 performance issues:\n // https://github.com/facebook/react/pull/7232\n var getKeyFromID = function (id) {\n return '.' + id;\n };\n var getIDFromKey = function (key) {\n return parseInt(key.substr(1), 10);\n };\n\n setItem = function (id, item) {\n var key = getKeyFromID(id);\n itemByKey[key] = item;\n };\n getItem = function (id) {\n var key = getKeyFromID(id);\n return itemByKey[key];\n };\n removeItem = function (id) {\n var key = getKeyFromID(id);\n delete itemByKey[key];\n };\n getItemIDs = function () {\n return Object.keys(itemByKey).map(getIDFromKey);\n };\n\n addRoot = function (id) {\n var key = getKeyFromID(id);\n rootByKey[key] = true;\n };\n removeRoot = function (id) {\n var key = getKeyFromID(id);\n delete rootByKey[key];\n };\n getRootIDs = function () {\n return Object.keys(rootByKey).map(getIDFromKey);\n };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n var item = getItem(id);\n if (item) {\n var childIDs = item.childIDs;\n\n removeItem(id);\n childIDs.forEach(purgeDeep);\n }\n}\n\nfunction describeComponentFrame(name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n}\n\nfunction getDisplayName(element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n}\n\nfunction describeID(id) {\n var name = ReactComponentTreeHook.getDisplayName(id);\n var element = ReactComponentTreeHook.getElement(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName;\n if (ownerID) {\n ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n }\n process.env.NODE_ENV !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\n return describeComponentFrame(name, element && element._source, ownerName);\n}\n\nvar ReactComponentTreeHook = {\n onSetChildren: function (id, nextChildIDs) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.childIDs = nextChildIDs;\n\n for (var i = 0; i < nextChildIDs.length; i++) {\n var nextChildID = nextChildIDs[i];\n var nextChild = getItem(nextChildID);\n !nextChild ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\n !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\n !nextChild.isMounted ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\n if (nextChild.parentID == null) {\n nextChild.parentID = id;\n // TODO: This shouldn't be necessary but mounting a new root during in\n // componentWillMount currently causes not-yet-mounted components to\n // be purged from our tree data so their parent id is missing.\n }\n !(nextChild.parentID === id) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\n }\n },\n onBeforeMountComponent: function (id, element, parentID) {\n var item = {\n element: element,\n parentID: parentID,\n text: null,\n childIDs: [],\n isMounted: false,\n updateCount: 0\n };\n setItem(id, item);\n },\n onBeforeUpdateComponent: function (id, element) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.element = element;\n },\n onMountComponent: function (id) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.isMounted = true;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n addRoot(id);\n }\n },\n onUpdateComponent: function (id) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.updateCount++;\n },\n onUnmountComponent: function (id) {\n var item = getItem(id);\n if (item) {\n // We need to check if it exists.\n // `item` might not exist if it is inside an error boundary, and a sibling\n // error boundary child threw while mounting. Then this instance never\n // got a chance to mount, but it still gets an unmounting event during\n // the error boundary cleanup.\n item.isMounted = false;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n removeRoot(id);\n }\n }\n unmountedIDs.push(id);\n },\n purgeUnmountedComponents: function () {\n if (ReactComponentTreeHook._preventPurging) {\n // Should only be used for testing.\n return;\n }\n\n for (var i = 0; i < unmountedIDs.length; i++) {\n var id = unmountedIDs[i];\n purgeDeep(id);\n }\n unmountedIDs.length = 0;\n },\n isMounted: function (id) {\n var item = getItem(id);\n return item ? item.isMounted : false;\n },\n getCurrentStackAddendum: function (topElement) {\n var info = '';\n if (topElement) {\n var name = getDisplayName(topElement);\n var owner = topElement._owner;\n info += describeComponentFrame(name, topElement._source, owner && owner.getName());\n }\n\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n info += ReactComponentTreeHook.getStackAddendumByID(id);\n return info;\n },\n getStackAddendumByID: function (id) {\n var info = '';\n while (id) {\n info += describeID(id);\n id = ReactComponentTreeHook.getParentID(id);\n }\n return info;\n },\n getChildIDs: function (id) {\n var item = getItem(id);\n return item ? item.childIDs : [];\n },\n getDisplayName: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element) {\n return null;\n }\n return getDisplayName(element);\n },\n getElement: function (id) {\n var item = getItem(id);\n return item ? item.element : null;\n },\n getOwnerID: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element || !element._owner) {\n return null;\n }\n return element._owner._debugID;\n },\n getParentID: function (id) {\n var item = getItem(id);\n return item ? item.parentID : null;\n },\n getSource: function (id) {\n var item = getItem(id);\n var element = item ? item.element : null;\n var source = element != null ? element._source : null;\n return source;\n },\n getText: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (typeof element === 'string') {\n return element;\n } else if (typeof element === 'number') {\n return '' + element;\n } else {\n return null;\n }\n },\n getUpdateCount: function (id) {\n var item = getItem(id);\n return item ? item.updateCount : 0;\n },\n\n\n getRootIDs: getRootIDs,\n getRegisteredIDs: getItemIDs,\n\n pushNonStandardWarningStack: function (isCreatingElement, currentSource) {\n if (typeof console.reactStack !== 'function') {\n return;\n }\n\n var stack = [];\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n try {\n if (isCreatingElement) {\n stack.push({\n name: id ? ReactComponentTreeHook.getDisplayName(id) : null,\n fileName: currentSource ? currentSource.fileName : null,\n lineNumber: currentSource ? currentSource.lineNumber : null\n });\n }\n\n while (id) {\n var element = ReactComponentTreeHook.getElement(id);\n var parentID = ReactComponentTreeHook.getParentID(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName = ownerID ? ReactComponentTreeHook.getDisplayName(ownerID) : null;\n var source = element && element._source;\n stack.push({\n name: ownerName,\n fileName: source ? source.fileName : null,\n lineNumber: source ? source.lineNumber : null\n });\n id = parentID;\n }\n } catch (err) {\n // Internal state is messed up.\n // Stop building the stack (it's just a nice to have).\n }\n\n console.reactStack(stack);\n },\n popNonStandardWarningStack: function () {\n if (typeof console.reactStackEnd !== 'function') {\n return;\n }\n console.reactStackEnd();\n }\n};\n\nmodule.exports = ReactComponentTreeHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactComponentTreeHook.js\n// module id = 97\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactElementSymbol.js\n// module id = 98\n// module chunks = 0","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback) {},\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nmodule.exports = ReactNoopUpdateQueue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactNoopUpdateQueue.js\n// module id = 99\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar canDefineProperty = false;\nif (process.env.NODE_ENV !== 'production') {\n try {\n // $FlowFixMe https://github.com/facebook/flow/issues/285\n Object.defineProperty({}, 'x', { get: function () {} });\n canDefineProperty = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\nmodule.exports = canDefineProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/canDefineProperty.js\n// module id = 100\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../css-loader/index.js!./c3.css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// Prepare cssTransformation\nvar transform;\n\nvar options = {\"hmr\":true}\noptions.transform = transform\n// add the styles to the DOM\nvar update = require(\"!../style-loader/lib/addStyles.js\")(content, options);\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../css-loader/index.js!./c3.css\", function() {\n\t\t\tvar newContent = require(\"!!../css-loader/index.js!./c3.css\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/c3/c3.css\n// module id = 101\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/index.js!./charts.css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// Prepare cssTransformation\nvar transform;\n\nvar options = {\"hmr\":true}\noptions.transform = transform\n// add the styles to the DOM\nvar update = require(\"!../../node_modules/style-loader/lib/addStyles.js\")(content, options);\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js!./charts.css\", function() {\n\t\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js!./charts.css\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/css/charts.css\n// module id = 102\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(selector) {\n\t\tif (typeof memo[selector] === \"undefined\") {\n\t\t\tvar styleTarget = fn.call(this, selector);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[selector] = styleTarget;\n\t\t}\n\t\treturn memo[selector]\n\t};\n})(function (target) {\n\treturn document.querySelector(target)\n});\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton) options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n\tif (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertInto + \" \" + options.insertAt.before);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\toptions.attrs.type = \"text/css\";\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\toptions.attrs.type = \"text/css\";\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = options.transform(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/style-loader/lib/addStyles.js\n// module id = 103\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 = 104\n// module chunks = 0","import React, { Component } from \"react\";\nimport MTWidget from \"./index.js\";\n//import WidgetResidential from \"./widgetresidential.js\";\nimport Promise from 'promise-polyfill';\n\nexport default class WidgetSelection extends Component {\n constructor(props) {\n super(); \n this.state = {\n selectedGeo: \"County:San Mateo\",\n selectedPeriodType:\"Quarter\",\n selectedPeriod:\"65\",\n }; \n this._onGeoSelect = this._onGeoSelect.bind(this); \n this._onPeriodSelect = this._onPeriodSelect.bind(this);\n }\n _onGeoSelect(e) { \n \n this.setState({selectedGeo:e.target.value}); \n \n }\n\n\n _onPeriodSelect(e) {\n var selectedPeriodType = e.target.value; \nvar selectedPeriod=selectedPeriodType=='Month'?'36':'65';\n\n this.setState({\n selectedPeriodType,selectedPeriod\n \n });\n \n }\n\n \n\n render() {\n \n var widgetselections = { \n \n periodtype:this.state.selectedPeriodType,\n period:this.state.selectedPeriod,\n geo: [this.state.selectedGeo],\n classtype:'Residential - Single Family,Residential - Common Interest',\n divid: 'root',\n title:true\n };\n \n return(\n <div>\n <div id=\"trendWidgetHeaderWrap\">\n <h1 className=\"font-weight-bold browser-default\">Interactive Market Snapshots</h1>\n <select\n id=\"geo-select\"\n className=\"custom-select w-25\"\n value={this.state.selectedGeo} \n onChange={_.throttle(this._onGeoSelect, 500, {'trailing': true}).bind(this)}> \n <option key=\"1\" value=\"County:San Mateo\">\n San Mateo County\n </option>\n <option key=\"2\" value=\"County:Santa Clara\">\n Santa Clara County\n </option>\n <option key=\"3\" value=\"County:Santa Cruz\">\n Santa Cruz County\n </option>\n <option key=\"4\" value=\"County:San Benito\">\n San Benito County\n </option>\n <option key=\"5\" value=\"County:Monterey\">\n Monterey County\n </option>\n </select>\n\n\n<div onChange={_.throttle(this._onPeriodSelect, 500, {'trailing': true}).bind(this)}> \n\n<div className=\"periodselect\"><label><input type=\"radio\" value=\"Quarter\" name=\"period\" defaultChecked={true}/> <span>All years by quarter</span></label></div>\n\n<div className=\"periodselect\"><label><input type=\"radio\" value=\"Month\" name=\"period\" defaultChecked={false} /><span> 3 years by month</span></label></div>\n</div>\n</div>\n\n<MTWidget widgetselections={widgetselections} />\n\n</div>\n)\n }\n\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/WidgetSelection.js","'use strict';\n\nmodule.exports = require('./lib/ReactDOM');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/index.js\n// module id = 106\n// module chunks = 0","import React, { Component } from \"react\";\nimport uniqueId from \"lodash/uniqueId\";\nimport Aculistc3 from \"c3/c3.js\";\nimport { selection } from \"d3-selection\";\nimport * as d3format from \"d3-format\";\nimport { labels, legendlabels } from \"./labels.js\";\nimport html2canvas from \"./localHtml2Canvas.js\";\n//import * as Canvas2Image from \"./canvastoimage.js\";\n//import domtoimage from './dom2image.js';\nimport \"c3/c3.css\";\nimport style from \"./css/charts.css\";\nimport Promise from 'promise-polyfill';\n\nwindow.html2canvas = html2canvas;\n//window.Canvas2Image = Canvas2Image;\n//window.jquery=$;\n// import Share from './share.js';\nconst logo = require(\"./images/aculist-edge_logo.png\");\nconst download = require(\"./images/download.png\");\n\nexport default class MarketTrends extends Component {\n constructor(props) {\n super(props);\n \n this.state = {\n btncharttypeactive: \"\",\n chartType: \"\",\n copyInProgress: false\n };\n this.handleImageClick = this.handleImageClick.bind(this);\n this.copyChart = this.copyChart.bind(this);\n }\n componentWillMount() { \n \n var chartType = this.props.widgetselections.measure\n .toLowerCase()\n .indexOf(\"count\")>=0\n ? \"area\"\n : \"line\";\n \n }\n\n componentWillReceiveProps(nextProps) {\n\n var chartType = nextProps.widgetselections.measure\n .toLowerCase()\n .indexOf(\"count\")>=0\n ? \"area\"\n : \"line\";\n\n }\n\n handleImageClick(e) {\n e.preventDefault();\n \n }\n\n copyChart(e) { \n var target=e.target;\n // d3.select(document.getElementById(target.dataset.id)).classed('c3', true);\n document.getElementById(target.dataset.id).classList.add('c3'); \n var doctype = '<?xml version=\"1.0\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">';\n \n window.URL = (window.URL || window.webkitURL);\n \n var body = document.body,\n emptySvg;\n \n var prefix = {\n xmlns: \"http://www.w3.org/2000/xmlns/\",\n xlink: \"http://www.w3.org/1999/xlink\",\n svg: \"http://www.w3.org/2000/svg\"\n };\n var emptySvg = window.document.createElementNS(prefix.svg, 'svg');\n window.document.body.appendChild(emptySvg);\n\n \n var emptySvgDeclarationComputed = getComputedStyle(emptySvg);\n \n function setInlineStyles(svg, emptySvgDeclarationComputed) {\n \n function explicitlySetStyle (element) {\n var cSSStyleDeclarationComputed = getComputedStyle(element);\n var i, len, key, value;\n var computedStyleStr = \"\";\n for (i=0, len=cSSStyleDeclarationComputed.length; i<len; i++) {\n key=cSSStyleDeclarationComputed[i];\n value=cSSStyleDeclarationComputed.getPropertyValue(key);\n if (value!==emptySvgDeclarationComputed.getPropertyValue(key)) {\n computedStyleStr+=key+\":\"+value+\";\";\n }\n }\n element.setAttribute('style', computedStyleStr);\n }\n function traverse(obj){\n var tree = [];\n tree.push(obj);\n visit(obj);\n function visit(node) {\n if (node && node.hasChildNodes()) {\n var child = node.firstChild;\n while (child) {\n if (child.nodeType === 1 && child.nodeName != 'SCRIPT'){\n tree.push(child);\n visit(child);\n }\n child = child.nextSibling;\n }\n }\n }\n return tree;\n }\n // hardcode computed css styles inside svg\n var allElements = traverse(svg);\n var i = allElements.length;\n while (i--){\n explicitlySetStyle(allElements[i]);\n }\n }\n var holder = document.createElement(\"DIV\");\n var canvasHolder = document.createElement(\"CANVAS\");\n canvasHolder.id = \"canvasHolder\";\n holder.id = \"chartCopyHolder\";\n document.getElementById(\"aculistWidgetRoot\").querySelector('.markettrends').appendChild(holder);\n document.getElementById(\"aculistWidgetRoot\").querySelector('.markettrends').appendChild(canvasHolder);\n if (!Element.prototype.matches)\n Element.prototype.matches = Element.prototype.msMatchesSelector || \n Element.prototype.webkitMatchesSelector;\n if (!Element.prototype.closest)\n Element.prototype.closest = function(s) {\n var el = this;\n if (!document.documentElement.contains(el)) return null;\n do {\n if (el.matches(s)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1); \n return null;\n };\n var svg = document.getElementById(target.dataset.id).closest('.titleChartHolder');\n var cln = svg.cloneNode(true);\n document.getElementById(\"chartCopyHolder\").appendChild(cln);\n \n \n setInlineStyles(document.getElementById('chartCopyHolder').getElementsByTagName( 'svg' )[0], emptySvgDeclarationComputed);\n \n html2canvas(document.getElementById('chartCopyHolder'), {\n canvas: document.getElementById('canvasHolder'),\n logging: false, \n width:document.getElementById('chartCopyHolder').clientWidth+10,\n }).then(function(canvas){\n function convertCanvasToImage(canvas) {\n var image = new Image();\n image.src = canvas.toDataURL(\"image/png\");\n image.crossOrigin=\"anonymous\";\n return image;\n }\n\n var image = convertCanvasToImage(document.getElementById('canvasHolder'))\n require(\"./downloadjs.js\")(image.src, target.dataset.ctitle.replace(/\\s/g, ''), \"image/png\");\n\n document.getElementById(\"aculistWidgetRoot\").querySelector('.markettrends').removeChild(holder);\n document.getElementById(\"aculistWidgetRoot\").querySelector('.markettrends').removeChild(canvasHolder);\n \n });\n\n \n }\n\n render() {\n\n let logoStyles = {\n height: '16px',\n width: '72px',\n background: `url(${logo})`\n } \n\n if(!_.isUndefined(this.props.data)){\n\n // Internet Explorer 6-11\n let isIE = /*@cc_on!@*/false || !!document.documentMode; \n let MTitle=this.props.widgetselections.measure.split(\",\")[1]===undefined ?labels[this.props.widgetselections.measure.split(\",\")[0]]:\n labels[this.props.widgetselections.measure.split(\",\")[0]].toLowerCase().indexOf('price')>=0 && labels[this.props.widgetselections.measure.split(\",\")[1]].toLowerCase().indexOf('price')>=1?\n \"Average & Median Pricing Trends\"\n : \" & \"+ labels[this.props.widgetselections.measure.split(\",\")[1]];\n\n\n\n\n let baseTitle= MTitle+' '+' - '+decodeURIComponent(this.props.widgetselections.geo[0].split(\":\")[1]+' '+this.props.widgetselections.geo[0].split(\":\")[0]);\n // let baseTitle=labels[this.props.widgetselections.measure.split(\",\")[0]] +' '+ M2Title \n let periodTitle=this.props.data[this.props.data.length-1].Year+' - '+ this.props.data[0].Year+' (by '+ this.props.widgetselections.periodtype +')';\n\n let areaTitle =typeof this.props.data==='undefined' ?\"\":this.props.data.length==0?'':\n ( this.props.widgetselections.geo[0].split(\":\")[0] == \"Area\" && this.props.data[0].AreaId!=null)\n ? \"(MLS AREA\" + this.props.data[0].AreaId + \")\"\n : \"\";\n return (\n <div className=\"titleChartHolder\">\n {/* <div className=\"chartShare\"><Share divid={this.props.widgetselections.divid}/></div> */}\n <div className={`chartTitle ${this.props.widgetselections.title === 'false' ? \"hidden\" : \"\"}`}>\n \n <h3 className=\"title\"> {baseTitle+ areaTitle}</h3> \n <h3 className=\"subtitle\"> { periodTitle} </h3>\n </div>\n \n\n <div key={uniqueId(\"marketTrendsChart-\")} className=\"section_container\">\n <img src={download} className={`copybtn ${this.state.copyInProgress === true || isIE ? \"hidden\" : \"\" }`} onClick={this.copyChart} data-id={this.props.id} data-ctitle={baseTitle+ areaTitle}/> \n <Chart\n {...this.props}\n id={this.props.id}\n data1={this.props.data}\n widgetselections={this.props.widgetselections}\n chartType={this.state.chartType}\n />\n <div className={`chartOptionsRow`}>\n {/* <span className=\"externalOptions\">{this.props.children}</span> */}\n <span className=\"d-block attribution-holder clearfix pos-relative\">\n <span className=\"d-inline-block attribution-label\">\n Powered by:\n </span>\n <a\n href=\"http://aculist.com/\"\n target=\"_blank\"\n className=\"attribution-img\" >\n <span className=\"d-inline-block logoclass\" style={logoStyles}></span>\n {/* <img src={logo} onClick={this.handleImageClick}/> */}\n </a>\n </span>\n </div>\n </div>\n </div>\n );\n } else {\n return(null);\n }\n }\n}\n\nclass Chart extends React.Component {\n componentDidMount() {\n\n if(this.props.widgetselections.measure.split(\",\").length==1)\n {this._updateSingleAxesChart(\n this.props.data1,\n this.props.widgetselections,\n this.props.assets\n );}\n else\n this._updateChart(\n this.props.data1,\n this.props.widgetselections,\n this.props.assets\n );\n }\n\n componentDidUpdate() {\n\n if(this.props.widgetselections.measure.split(\",\").length==1)\n {this._updateSingleAxesChart(\n this.props.data1,\n this.props.widgetselections,\n this.props.assets\n );}\n else \n this._updateChart(\n this.props.data1,\n this.props.widgetselections,\n this.props.assets\n );\n }\n\n _updateChart(data1, ws, assets) {\n var measurearray = ws.measure.split(\",\");\n var masterarray = [];\n var periodarray = [];\n\n \n var SFarrayM1 = [\"SFHM1\"];\n var CIarrayM1 = [\"C/TM1\"];\n var SFarrayM2 = [\"SFHM2\"];\n var CIarrayM2 = [\"C/TM2\"];\n\n var periodarrayasc = [];\n var periodarrayformatted = [\"Period\"];\n\n data1.forEach(function(record) {\n if (periodarrayasc.indexOf(record.Period) === -1) {\n periodarrayasc.push(record.Period);\n }\n });\n periodarrayasc.reverse().forEach(function(x) {\n periodarray.push(x);\n });\n\n\n\n periodarray.forEach(function(periodrecord) {\n let filtereddata1=data1.filter(rec=>rec.Period===periodrecord)\n \n\n filtereddata1.forEach(function(record) { \n if(filtereddata1.length==2){ \n record.Class.toLowerCase() == \"residential - single family\" \n ? SFarrayM1.push(record[measurearray[0].toString()]) && SFarrayM2.push(record[measurearray[1].toString()])\n : record.Class.toLowerCase() == \"residential - common interest\" \n // ? record[measurearray[0].toString()]==null?CIarrayM1.push('0') : CIarrayM1.push(record[measurearray[0].toString()]) &&\n // record[measurearray[1].toString()]==null?CIarrayM2.push('0') : CIarrayM2.push(record[measurearray[1].toString()])\n ? CIarrayM1.push(record[measurearray[0].toString()]==null?0:record[measurearray[0].toString()]) && CIarrayM2.push(record[measurearray[1].toString()]==null?0:record[measurearray[1].toString()])\n // ? CIarrayM1.push(record[measurearray[0].toString()]) && CIarrayM2.push(record[measurearray[1].toString()])\n : \"\";\n }else\n {\n \n record.Class.toLowerCase() == \"residential - single family\" \n ? SFarrayM1.push(record[measurearray[0].toString()]) && SFarrayM2.push(record[measurearray[1].toString()]) &&\n CIarrayM1.push(null) && CIarrayM2.push(null)\n : record.Class.toLowerCase() == \"residential - common interest\" \n ? CIarrayM1.push(record[measurearray[0].toString()]) && CIarrayM2.push(record[measurearray[1].toString()]) &&\n SFarrayM1.push(null) && SFarrayM2.push(null)\n : \"\";\n \n }\n \n });\n \n \n });\n \n\n if (ws.periodtype.toLowerCase() == \"month\") {\n var monthnames = {\n \"01\": \"Jan\",\n \"02\": \"Feb\",\n \"03\": \"Mar\",\n \"04\": \"Apr\",\n \"05\": \"May\",\n \"06\": \"Jun\",\n \"07\": \"Jul\",\n \"08\": \"Aug\",\n \"09\": \"Sep\",\n \"10\": \"Oct\",\n \"11\": \"Nov\",\n \"12\": \"Dec\"\n };\n periodarray.forEach(function(periodraw) {\n periodarrayformatted.push(\n monthnames[periodraw.substring(5)] + \" \" + periodraw.substring(2, 4)\n );\n });\n } else if (ws.periodtype.toLowerCase() == \"quarter\") {\n periodarray.forEach(function(periodraw) { \n /* periodarrayformatted.push(\n periodraw.substring(4, 6) + \" \" + periodraw.substring(2, 4)\n ); */\n periodarrayformatted.push(periodraw);\n });\n } else {\n periodarray.forEach(function(periodrecord) {\n periodarrayformatted.push(periodrecord);\n });\n }\n\n masterarray.push(periodarrayformatted);\n\n if(this.props.widgetselections.classtype.split(',').length==2 )\n {\n SFarrayM1.length > 1 ? masterarray.push(SFarrayM1) : \"\";\n CIarrayM1.length > 1 ? masterarray.push(CIarrayM1) : \"\";\n SFarrayM2.length > 1 ? masterarray.push(SFarrayM2) : \"\";\n CIarrayM2.length > 1 ? masterarray.push(CIarrayM2) : \"\";\n }\n else if(this.props.widgetselections.classtype.indexOf('Single Family')>=0)\n { \n SFarrayM1.length > 1 ? masterarray.push(SFarrayM1) : \"\";\n SFarrayM2.length > 1 ? masterarray.push(SFarrayM2) : \"\";}\n else if(this.props.widgetselections.classtype.indexOf('Common Interest')>=0)\n {\n CIarrayM1.length > 1 ? masterarray.push(CIarrayM1) : \"\";\n CIarrayM2.length > 1 ? masterarray.push(CIarrayM2) : \"\";\n }\n \n\n let defaultcolors = [\n \"RGB(0,130,202)\",\n \"RGB(246,178,33)\",\n \"RGB(255,102,0)\",\n \"RGB(28,63,148)\",\n ];\n //let defaultcolors=[ 'RGB(126,159,26)', 'RGB(230,145,56)','RGB(0,0,0)', 'RGB(255,217,102)']\n let preferredcolors = [];\n // assets\n // .filter(\n // prefrow =>\n // prefrow.AttributeKey.toLowerCase().includes(\"vprimcolor\") ||\n // prefrow.AttributeKey.toLowerCase().includes(\"vseccolor\")\n // )\n // .forEach(function(pref) {\n // preferredcolors.push(pref.AttributeValue);\n // });\n // defaultcolors.forEach(function(defcol) {\n // if (!preferredcolors.includes(defcol)) {\n // preferredcolors.push(defcol);\n // }\n // });\n Aculistc3.chart.internal.fn.getHorizontalAxisHeight = function (axisId) {\n var $$ = this, config = $$.config, h = 30;\n if (axisId === 'x' && !config.axis_x_show) { return 8; }\n if (axisId === 'x' && config.axis_x_height) { return config.axis_x_height; }\n if (axisId === 'y' && !config.axis_y_show) { \n return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1; \n }\n if (axisId === 'y2' && !config.axis_y2_show) { return $$.rotated_padding_top; }\n // Calculate x axis height when tick rotated\n if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_x_tick_rotate)) / 180);\n }\n // Calculate y axis height when tick rotated\n if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_y_tick_rotate)) / 180);\n }\n return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n };\n\n const chart = Aculistc3.generate({\n // padding: { top: 50, left: 50, bottom: 20 },\n bindto: \"#\" + this.props.id,\n position: \"inset\",\n // padding: {\n // top: 40\n // },\n\n data: {\n types: {\n SFHM2: \"line\",\n \"C/TM2\": \"line\",\n SFHM1: \"line\",\n \"C/TM1\": \"line\"\n },\n x: \"Period\",\n columns: masterarray,\n axes: {\n SFHM2: \"y\",\n \"C/TM2\": \"y\",\n SFHM1: \"y\",\n \"C/TM1\": \"y\"\n },\n labels: \"true\",\n names: {\n SFHM1: \"Single Family Home \" + legendlabels[measurearray[0]],\n \"C/TM1\": \"Condo/Townhome \" + legendlabels[measurearray[0]],\n SFHM2: \"Single Family Home \" + legendlabels[measurearray[1]],\n \"C/TM2\": \"Condo/Townhome \" + legendlabels[measurearray[1]]\n }\n },\n point: {\n r: 0\n },\n color: {\n pattern: [\n \"RGB(28,63,148)\", \n \"RGB(255,102,0)\", \n \"RGB(0,130,202)\", \n \"RGB(246,178,33)\",\n \n \n \n ]\n },\n axis: {\n // y2: {\n // // padding:10,\n // tick: {\n // outer: false,\n // format:\n // measurearray[1].toLowerCase().includes(\"over\") \n // ? d3format.format(\".0%\") :measurearray[1].toLowerCase().includes(\"count\") \n // ? d3format.format(',')\n // :measurearray[1].toLowerCase().includes(\"price\") ?d3format.format(\"$,\")\n // :\"\"\n // },\n // show: true,\n // label: {\n // text: labels[measurearray[1]],\n // position: \"outer-middle\"\n // }\n // },\n y: {\n \n // padding:50,\n tick: {\n outer: false, \n format:\n measurearray[0].toLowerCase().indexOf(\"over\")>=0 \n ? d3format.format(\".0%\")\n :measurearray[0].toLowerCase().indexOf(\"price\")>=0 ?d3format.format(\"$,\")\n :measurearray[0].toLowerCase().indexOf(\"monthstosell\")>=0 ?d3format.format(\".1f\"):\"\"\n },\n // label: {\n // text: labels[measurearray[0]],\n // position: \"outer-middle\"\n // }\n },\n x: {\n tick: {\n // type: 'timeseries',\n multiline: false,\n outer: false,\n // values: [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,64,128], \n culling: {\n max:40\n } ,\n rotate: -45 \n },\n//height:500, \n type: \"category\",\n \n }\n },\n grid: {\n y: {\n show: true\n }\n },\n\n zoom: {\n enabled: false\n },\n bar: {\n space: 0.1,\n width: {\n // ratio: 0.5,// this makes bar width 50% of length between ticks\n }\n //space:.25\n // or\n //width: 100 // this makes bar width 100px\n }\n });\n }\n\n\n\n _updateSingleAxesChart(data1, ws, assets) {\n var measurearray = ws.measure.split(\",\");\n var masterarray = [];\n var periodarray = [];\n\n var SFarrayM1 = [\"SFHM1\"];\n var CIarrayM1 = [\"C/TM1\"];\n\n var periodarrayasc = [];\n var periodarrayformatted = [\"Period\"];\n var percentsp=[];\n data1.forEach(function(record) {\n if(Number(record.AvgSaleOverListPrice)!=0 && Number(record.AvgSaleOverListPrice)<1.3)\n {\n percentsp.push(Number(record.AvgSaleOverListPrice));\n }\n if (periodarrayasc.indexOf(record.Period) === -1) {\n periodarrayasc.push(record.Period);\n }\n });\n periodarrayasc.reverse().forEach(function(x) {\n periodarray.push(x);\n });\n\n\n periodarray.forEach(function(periodrecord) {\n let filtereddata1=data1.filter(rec=>rec.Period===periodrecord)\n \n\n filtereddata1.forEach(function(record) { \n if(filtereddata1.length==2){ \n record.Class.toLowerCase() == \"residential - single family\" \n ? SFarrayM1.push(record[measurearray[0].toString()]) \n : record.Class.toLowerCase() == \"residential - common interest\" \n ? CIarrayM1.push(record[measurearray[0].toString()]==null?0:record[measurearray[0].toString()]) \n : \"\";\n }else\n {\n record.Class.toLowerCase() == \"residential - single family\" \n ? SFarrayM1.push(record[measurearray[0].toString()]) &&\n CIarrayM1.push(null) \n : record.Class.toLowerCase() == \"residential - common interest\" \n ? CIarrayM1.push(record[measurearray[0].toString()]) &&\n SFarrayM1.push(null) \n : \"\";\n \n }\n \n });\n \n \n });\n \nvar ct=\"bar\";\n if (ws.periodtype.toLowerCase() == \"month\") { \n ct=\"line\";\n \n var monthnames = {\n \"01\": \"Jan\",\n \"02\": \"Feb\",\n \"03\": \"Mar\",\n \"04\": \"Apr\",\n \"05\": \"May\",\n \"06\": \"Jun\",\n \"07\": \"Jul\",\n \"08\": \"Aug\",\n \"09\": \"Sep\",\n \"10\": \"Oct\",\n \"11\": \"Nov\",\n \"12\": \"Dec\"\n };\n periodarray.forEach(function(periodraw) {\n periodarrayformatted.push(\n monthnames[periodraw.substring(5)] + \" \" + periodraw.substring(2, 4)\n );\n });\n } else if (ws.periodtype.toLowerCase() == \"quarter\" ) {\n ct=\"area\";\n if (ws.measure.toLowerCase().indexOf(\"monthstosell\") >=0|| ws.measure.toLowerCase().indexOf(\"over\")>=0 || ws.measure.toLowerCase().indexOf(\"dom\")>=0)\n {\n ct=\"line\";\n }\n \n periodarray.forEach(function(periodraw) {\n periodarrayformatted.push(periodraw);\n });\n } else {\n periodarray.forEach(function(periodrecord) {\n periodarrayformatted.push(periodrecord);\n });\n }\n\n masterarray.push(periodarrayformatted);\n\n\n if(this.props.widgetselections.classtype.split(',').length==2 )\n {\n SFarrayM1.length > 1 ? masterarray.push(SFarrayM1) : \"\";\n CIarrayM1.length > 1 ? masterarray.push(CIarrayM1) : \"\";\n }\n else if(this.props.widgetselections.classtype.indexOf('Single Family')>=0)\n { \n SFarrayM1.length > 1 ? masterarray.push(SFarrayM1) : \"\";}\n else if(this.props.widgetselections.classtype.indexOf('Common Interest')>=0)\n {\n CIarrayM1.length > 1 ? masterarray.push(CIarrayM1) : \"\";\n }\n\n\n\n\n\n\n\n let defaultcolors = [\n \"RGB(0,130,202)\",\n \"RGB(246,178,33)\",\n \"RGB(255,102,0)\",\n \"RGB(28,63,148)\",\n ];\n let mpcolors = [\n \"RGB(28,63,148)\",\n \"RGB(255,102,0)\",\n \n \n ];\n //let defaultcolors=[ 'RGB(126,159,26)', 'RGB(230,145,56)','RGB(0,0,0)', 'RGB(255,217,102)']\n let preferredcolors = [];\n \n // assets\n // .filter(\n // prefrow =>\n // prefrow.AttributeKey.toLowerCase().includes(\"vprimcolor\") ||\n // prefrow.AttributeKey.toLowerCase().includes(\"vseccolor\")\n // )\n // .forEach(function(pref) {\n // preferredcolors.push(pref.AttributeValue);\n // });\n // defaultcolors.forEach(function(defcol) {\n // if (!preferredcolors.includes(defcol)) {\n // preferredcolors.push(defcol);\n // }\n // });\n Aculistc3.chart.internal.fn.getHorizontalAxisHeight = function (axisId) {\n var $$ = this, config = $$.config, h = 30;\n if (axisId === 'x' && !config.axis_x_show) { return 8; }\n if (axisId === 'x' && config.axis_x_height) { return config.axis_x_height; }\n if (axisId === 'y' && !config.axis_y_show) { \n return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1; \n }\n if (axisId === 'y2' && !config.axis_y2_show) { return $$.rotated_padding_top; }\n // Calculate x axis height when tick rotated\n if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_x_tick_rotate)) / 180);\n }\n // Calculate y axis height when tick rotated\n if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_y_tick_rotate)) / 180);\n }\n return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n };\n\n const chart = Aculistc3.generate({\n // padding: { top: 50, left: 50, bottom: 20 },\n bindto: \"#\" + this.props.id,\n position: \"inset\",\n // padding: {\n // top: 40\n // },\n\n data: {\n types: {\n SFHM1: ct,\n \"C/TM1\": ct\n },\n x: \"Period\",\n columns: masterarray,\n axes: {\n SFHM1: \"y\",\n \"C/TM1\": \"y\"\n },\n labels: \"true\",\n names: {\n SFHM1: \"Single Family Home \" + legendlabels[measurearray[0]],\n \"C/TM1\": \"Condo/Townhome \" + legendlabels[measurearray[0]]\n \n }\n },\n point: {\n r: 0\n },\n color: {\n pattern:measurearray[0].toLowerCase().indexOf(\"medsaleprice\")>=0?mpcolors:defaultcolors\n },\n axis: {\n y: {\n // padding:50,\n tick: {\n outer: false, \n format:\n measurearray[0].toLowerCase().indexOf(\"over\")>=0 ?d3format.format(\".0%\") :\n measurearray[0].toLowerCase().indexOf(\"price\")>=0 || measurearray[0] == \"SaleVolume\"\n ? d3format.format(\"$,\") :measurearray[0].toLowerCase().indexOf(\"count\") >=0\n ? d3format.format(',') \n :measurearray[0].toLowerCase().indexOf(\"monthstosell\")>=0 ?d3format.format(\".1f\"):\"\",\n \n //values:measurearray[0].toLowerCase().includes(\"over\")?[.95,.96,.96,.97,.98,.99,1.00,1.01,1.02,1.03,1.04,1.05]:'',\n },\n max: measurearray[0].toLowerCase().indexOf(\"over\")>=0?Math.max(...percentsp):'',\n min: measurearray[0].toLowerCase().indexOf(\"over\")>=0?Math.min(...percentsp):'',\n // max: measurearray[0].toLowerCase().includes(\"over\")?1.2:'',\n // min: measurearray[0].toLowerCase().includes(\"over\")?.95:'',\n padding: {top:0, bottom:0},\n label: {\n text: labels[measurearray[0]],\n position: \"outer-middle\"\n }\n },\n x: {\n tick: {\n // type: 'timeseries',\n multiline: false,\n outer: false,\n // values: [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,64,128], \n culling: false,\n rotate: -45 ,\n culling: {\n max:40\n } \n },\n//height:500, \n type: \"category\",\n \n },\n },\n grid: { \n // focus:{show:true},\n y: {\n show: true\n }\n },\n\n zoom: {\n enabled: false\n },\n bar: {\n space: 0.1,\n width: {\n // ratio: 0.5,// this makes bar width 50% of length between ticks\n }\n //space:.25\n // or\n //width: 100 // this makes bar width 100px\n }\n });\n }\n\n render() {\n return (\n <div id={this.props.id} className={this.props.chartclasses} >\n Error\n </div>\n );\n }\n}\n\n//export default MarketTrends;\n\n\n\n// WEBPACK FOOTER //\n// ./src/MarketTrends.js","//download.js v4.2, by dandavis; 2008-2016. [MIT] see http://danml.com/download.html for tests/usage\r\n// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime\r\n// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs\r\n// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling.\r\n// v4 adds AMD/UMD, commonJS, and plain browser support\r\n// v4.1 adds url download capability via solo URL argument (same domain/CORS only)\r\n// v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors\r\n// https://github.com/rndme/download\r\n\r\n(function (root, factory) {\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\t// AMD. Register as an anonymous module.\r\n\t\tdefine([], factory);\r\n\t} else if (typeof exports === 'object') {\r\n\t\t// Node. Does not work with strict CommonJS, but\r\n\t\t// only CommonJS-like environments that support module.exports,\r\n\t\t// like Node.\r\n\t\tmodule.exports = factory();\r\n\t} else {\r\n\t\t// Browser globals (root is window)\r\n\t\troot.download = factory();\r\n }\r\n}(this, function () {\r\n\r\n\treturn function download(data, strFileName, strMimeType) {\r\n\r\n\t\tvar self = window, // this script is only for browsers anyway...\r\n\t\t\tdefaultMime = \"application/octet-stream\", // this default mime also triggers iframe downloads\r\n\t\t\tmimeType = strMimeType || defaultMime,\r\n\t\t\tpayload = data,\r\n\t\t\turl = !strFileName && !strMimeType && payload,\r\n\t\t\tanchor = document.createElement(\"a\"),\r\n\t\t\ttoString = function(a){return String(a);},\r\n\t\t\tmyBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString),\r\n\t\t\tfileName = strFileName || \"download\",\r\n\t\t\tblob,\r\n\t\t\treader;\r\n\t\t\tmyBlob= myBlob.call ? myBlob.bind(self) : Blob ;\r\n\t \r\n\t\tif(String(this)===\"true\"){ //reverse arguments, allowing download.bind(true, \"text/xml\", \"export.xml\") to act as a callback\r\n\t\t\tpayload=[payload, mimeType];\r\n\t\t\tmimeType=payload[0];\r\n\t\t\tpayload=payload[1];\r\n\t\t}\r\n\r\n\r\n\t\tif(url && url.length< 2048){ // if no filename and no mime, assume a url was passed as the only argument\r\n\t\t\tfileName = url.split(\"/\").pop().split(\"?\")[0];\r\n\t\t\tanchor.href = url; // assign href prop to temp anchor\r\n\t\t \tif(anchor.href.indexOf(url) !== -1){ // if the browser determines that it's a potentially valid url path:\r\n \t\tvar ajax=new XMLHttpRequest();\r\n \t\tajax.open( \"GET\", url, true);\r\n \t\tajax.responseType = 'blob';\r\n \t\tajax.onload= function(e){ \r\n\t\t\t\t download(e.target.response, fileName, defaultMime);\r\n\t\t\t\t};\r\n \t\tsetTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return:\r\n\t\t\t return ajax;\r\n\t\t\t} // end if valid url?\r\n\t\t} // end if url?\r\n\r\n\r\n\t\t//go ahead and download dataURLs right away\r\n\t\tif(/^data:([\\w+-]+\\/[\\w+.-]+)?[,;]/.test(payload)){\r\n\t\t\r\n\t\t\tif(payload.length > (1024*1024*1.999) && myBlob !== toString ){\r\n\t\t\t\tpayload=dataUrlToBlob(payload);\r\n\t\t\t\tmimeType=payload.type || defaultMime;\r\n\t\t\t}else{\t\t\t\r\n\t\t\t\treturn navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs:\r\n\t\t\t\t\tnavigator.msSaveBlob(dataUrlToBlob(payload), fileName) :\r\n\t\t\t\t\tsaver(payload) ; // everyone else can save dataURLs un-processed\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}else{//not data url, is it a string with special needs?\r\n\t\t\tif(/([\\x80-\\xff])/.test(payload)){\t\t\t \r\n\t\t\t\tvar i=0, tempUiArr= new Uint8Array(payload.length), mx=tempUiArr.length;\r\n\t\t\t\tfor(i;i<mx;++i) tempUiArr[i]= payload.charCodeAt(i);\r\n\t\t\t \tpayload=new myBlob([tempUiArr], {type: mimeType});\r\n\t\t\t}\t\t \r\n\t\t}\r\n\t\tblob = payload instanceof myBlob ?\r\n\t\t\tpayload :\r\n\t\t\tnew myBlob([payload], {type: mimeType}) ;\r\n\r\n\r\n\t\tfunction dataUrlToBlob(strUrl) {\r\n\t\t\tvar parts= strUrl.split(/[:;,]/),\r\n\t\t\ttype= parts[1],\r\n\t\t\tdecoder= parts[2] == \"base64\" ? atob : decodeURIComponent,\r\n\t\t\tbinData= decoder( parts.pop() ),\r\n\t\t\tmx= binData.length,\r\n\t\t\ti= 0,\r\n\t\t\tuiArr= new Uint8Array(mx);\r\n\r\n\t\t\tfor(i;i<mx;++i) uiArr[i]= binData.charCodeAt(i);\r\n\r\n\t\t\treturn new myBlob([uiArr], {type: type});\r\n\t\t }\r\n\r\n\t\tfunction saver(url, winMode){\r\n\r\n\t\t\tif ('download' in anchor) { //html5 A[download]\r\n\t\t\t\tanchor.href = url;\r\n\t\t\t\tanchor.setAttribute(\"download\", fileName);\r\n\t\t\t\tanchor.className = \"download-js-link\";\r\n\t\t\t\tanchor.innerHTML = \"downloading...\";\r\n\t\t\t\tanchor.style.display = \"none\";\r\n\t\t\t\tdocument.body.appendChild(anchor);\r\n\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\tanchor.click();\r\n\t\t\t\t\tdocument.body.removeChild(anchor);\r\n\t\t\t\t\tif(winMode===true){setTimeout(function(){ self.URL.revokeObjectURL(anchor.href);}, 250 );}\r\n\t\t\t\t}, 66);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\t// handle non-a[download] safari as best we can:\r\n\t\t\tif(/(Version)\\/(\\d+)\\.(\\d+)(?:\\.(\\d+))?.*Safari\\//.test(navigator.userAgent)) {\r\n\t\t\t\tif(/^data:/.test(url))\turl=\"data:\"+url.replace(/^data:([\\w\\/\\-\\+]+)/, defaultMime);\r\n\t\t\t\tif(!window.open(url)){ // popup blocked, offer direct download:\r\n\t\t\t\t\tif(confirm(\"Displaying New Document\\n\\nUse Save As... to download, then click back to return to this page.\")){ location.href=url; }\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\t//do iframe dataURL download (old ch+FF):\r\n\t\t\tvar f = document.createElement(\"iframe\");\r\n\t\t\tdocument.body.appendChild(f);\r\n\r\n\t\t\tif(!winMode && /^data:/.test(url)){ // force a mime that will download:\r\n\t\t\t\turl=\"data:\"+url.replace(/^data:([\\w\\/\\-\\+]+)/, defaultMime);\r\n\t\t\t}\r\n\t\t\tf.src=url;\r\n\t\t\tsetTimeout(function(){ document.body.removeChild(f); }, 333);\r\n\r\n\t\t}//end saver\r\n\r\n\r\n\r\n\r\n\t\tif (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL)\r\n\t\t\treturn navigator.msSaveBlob(blob, fileName);\r\n\t\t}\r\n\r\n\t\tif(self.URL){ // simple fast and modern way using Blob and URL:\r\n\t\t\tsaver(self.URL.createObjectURL(blob), true);\r\n\t\t}else{\r\n\t\t\t// handle non-Blob()+non-URL browsers:\r\n\t\t\tif(typeof blob === \"string\" || blob.constructor===toString ){\r\n\t\t\t\ttry{\r\n\t\t\t\t\treturn saver( \"data:\" + mimeType + \";base64,\" + self.btoa(blob) );\r\n\t\t\t\t}catch(y){\r\n\t\t\t\t\treturn saver( \"data:\" + mimeType + \",\" + encodeURIComponent(blob) );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Blob but not URL support:\r\n\t\t\treader=new FileReader();\r\n\t\t\treader.onload=function(e){\r\n\t\t\t\tsaver(this.result);\r\n\t\t\t};\r\n\t\t\treader.readAsDataURL(blob);\r\n\t\t}\r\n\t\treturn true;\r\n\t}; /* end download() */\r\n}));\n\n\n// WEBPACK FOOTER //\n// ./src/downloadjs.js","import React, { Component } from \"react\";\nimport { MLSStats } from \"./react-mlsdata\";\nimport WidgetResidential from \"./widgetresidential.js\";\n\nimport {uniqueId} from 'lodash';\n import \"c3/c3.css\";\n import \"./css/charts.css\";\n\n\nexport default class MTWidget extends Component {\n constructor(props) {\n super(props);\n }\n\n\n render() { \n\n var filter,orderBy ='';\n const {assets,widgetselections} = {...this.props};\n // const Children = this.props.children;\n const {measure,period,periodtype,geo,classtype}={...widgetselections}; \n var cdate=new Date(); \n \n // window.userpreferStore = assets;\n\n var geofilter=[];\n geo.forEach(function(geo){\n var g1=geo.split(':')[0];\n var g2=geo.split(':')[1];\n \n //Changes to accomodate the AreaID search\n let geoquery=(g1.toLowerCase()=='area' && !isNaN(g2)) ?{ and: [{ GeographyType: `${g1}` }, { AreaId: Number(g2) }] }:{ and: [{ GeographyType: `${g1}` }, { GeographyName: `${encodeURIComponent(g2)}` }] };\n //let geoquery={ and: [{ GeographyType: `${g1}` }, { GeographyName: `${encodeURIComponent(g2)}` }] }\n geofilter.push(geoquery);\n\n })\n\nvar classtypefilter=classtype.split(',');\n\n if(periodtype.toLowerCase()=='year'){ \n let setperiod=(cdate.getFullYear()-period+1); \n filter ={and:[[{Class : {'in':classtypefilter}}],{PeriodType : periodtype},{Period: {ge:`${setperiod}`}}, { or: geofilter } ]} ; \n \n } else\n\n if(periodtype.toLowerCase()=='month'){ \n var months = []; \n var monthnames={0:'01',1:'02',2:'03',3:'04',4:'05',5:'06',6:'07',7:'08',8:'09',9:'10',10:'11',11:'12'};\n for(var i = 0; i < period; i++) {\n months.push(cdate.getFullYear()+'-'+monthnames[cdate.getMonth()] );\n cdate.setMonth(cdate.getMonth() - 1);\n } \n\n\n // const startDate = new Date('2016-04-01') ;\n // const endDate = new Date('2018-02-01') ; \n \n const startDate = new Date(`${months[months.length-1]}-01`) ;\n const endDate = new Date(`${months[0]}-01`); \n // filter ={and:[[{Class : {'in':classtypefilter}}],{PeriodType : periodtype},[{Period: {'in': months}}], { or: geofilter } ]} ; \n filter =cdate.getDay()<15?{and:[[{Class : {'in':classtypefilter}}],{PeriodType : periodtype},[{DateValue: { ge: startDate, lt: endDate}}], { or: geofilter } ]}:\n {and:[[{Class : {'in':classtypefilter}}],{PeriodType : periodtype},[{DateValue: { ge: startDate, le: endDate}}], { or: geofilter } ]}; \n \n } else\n\n if(periodtype.toLowerCase()=='quarter'){\n// var thisYear = cdate.getFullYear();\n// var quarterStart = Math.ceil((cdate.getMonth() + 1) / 3);\n// var quarters = []; \n// for (var i = 0; i < period; i++) {\n// quarters.push(thisYear+'Q' + quarterStart );\n// quarterStart--;\n// if (quarterStart <= 0) {\n// thisYear--;\n// quarterStart = 4;\n// };\n \n // filter ={and:[[{Class : {'in':classtypefilter}}],{PeriodType : periodtype},[{Period: {'in': quarters}}], { or: geofilter } ]} ; \n // filter ={and:[{GeographyType: `${geographytype}`}, { GeographyName:`${geographyvalue}`},{Class : 'Residential'},{PeriodType : periodtype},[{Period: {'in': quarters}}]] } ; \n filter ={and:[[{Class : {'in':classtypefilter}}],{PeriodType : periodtype},[{Year: {gt: 2001}}], { or: geofilter } ]} ; \n \n // }\n }\n\n orderBy=['PeriodValue'+' desc'];\n\n var chart_id='chart_'+_.uniqueId();\n \n var widget = _.isEmpty(period) ? null : (\n\n <MLSStats collection='MarketTrendsYTDExpanded_KPI' filter={filter} orderBy={orderBy} >\n {({ loading, error, data }) => ( \n <div className={`markettrends ${loading ? \"loading\" : \"\"}`}>\n {loading && <div className=\"loader msg pos-absolute\">Loading...</div>}\n {error && <h2>{console.log(`${error}`)}System error in widgets. Please contact system administrator.</h2>}\n {data && <div className={`${loading ? \"hidden\" : \"\"}`}><WidgetResidential {...this.props} widgetselections={widgetselections} data={data.value}/></div>}\n </div>\n )}\n </MLSStats> \n );\n\n return <div> {widget} </div>; \n }\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","import React, { Component } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport WidgetSelection from './WidgetSelection.js';\r\nimport Promise from 'promise-polyfill';\r\nif (!window.Promise) {\r\n window.Promise = Promise;\r\n console.log('ie');\r\n }\r\n\r\nReactDOM.render(<WidgetSelection />, document.getElementById('aculistWidgetRoot'));\n\n\n// WEBPACK FOOTER //\n// ./src/indexmain.js","export const labels = {\r\n MedSalePrice: \"Median Price Trend\",\r\n SoldCount: \"Closed Sales Trend\", \r\n SoldAvgDOM:\"Days on Market Trend\",\r\n SoldMedDOM:\"Median Days on Market Trend\",\r\n AvgSalePricePerSqft:\"Price per Square Foot\",\r\n SaleVolume:\"Sales Volume\",\r\n AvgSaleOverListPrice:\"% Sale Price vs List Price Trend\" ,\r\n ActiveCount:\"ActiveCount\" \r\n ,ContingentCount:\"ContingentCount\"\r\n ,PendingCount:\"PendingCount\"\r\n ,ActiveAvgDOM:\"ActiveAvgDOM\"\r\n ,ActiveMedDOM:\"ActiveMedDOM\"\r\n ,InventoryCount:\"Inventory Trend\"\r\n ,InventoryAvgDOM:\"InventoryAvgDOM\"\r\n ,InventoryAvgListPrice:\"InventoryAvgListPrice\"\r\n ,NewListingsCount:\"NewListingsCount\"\r\n ,NewListingsAvgListPrice:\"NewListingsAvgListPrice\"\r\n ,UnderContractCount:\"UnderContractCount\"\r\n ,UnderContractAvgDOM:\"UnderContractAvgDOM\"\r\n ,UnderContractAvgListPrice:\"UnderContractAvgListPrice\"\r\n ,ActiveAvgListPrice:\"ActiveAvgListPrice\"\r\n ,ActiveAvgListPricePerSqft:\"ActiveAvgListPricePerSqft\"\r\n ,ActiveAvgOriginalPrice:\"ActiveAvgOriginalPrice\"\r\n ,ActiveMedListPrice:\"ActiveMedListPrice\"\r\n ,ActiveMedListPricePerSqft:\"ActiveMedListPricePerSqft\"\r\n ,SoldAvgListPrice:\"SoldAvgListPrice\"\r\n ,SoldMedListPrice:\"SoldMedListPrice\" \r\n ,AvgSalePrice:\"Average Price Trend\" \r\n ,AvgSaleOverOriginalPrice:\"AvgSaleOverOriginalPrice\" \r\n ,MedSalePricePerSqft:\"MedSalePricePerSqft\"\r\n ,AvgMonthsToSell:\"Months to Sell Trend\"\r\n\r\n}\r\n\r\nexport const legendlabels = {\r\n MedSalePrice: \"Median Price\",\r\n SoldCount: \"Closed Sales\", \r\n SoldAvgDOM:\"DOM\",\r\n AvgSalePricePerSqft:\"$/SF\",\r\n SaleVolume:\"Sales Volume\", \r\n AvgSaleOverListPrice:\"% Sale Price vs List Price\",\r\n ActiveCount:\"ActiveCount\"\r\n ,ContingentCount:\"ContingentCount\"\r\n ,PendingCount:\"PendingCount\"\r\n ,ActiveAvgDOM:\"ActiveAvgDOM\"\r\n ,ActiveMedDOM:\"ActiveMedDOM\"\r\n ,InventoryCount:\"Inventory\"\r\n ,InventoryAvgDOM:\"InventoryAvgDOM\"\r\n ,InventoryAvgListPrice:\"InventoryAvgListPrice\"\r\n ,NewListingsCount:\"NewListingsCount\"\r\n ,NewListingsAvgListPrice:\"NewListingsAvgListPrice\"\r\n ,UnderContractCount:\"UnderContractCount\"\r\n ,UnderContractAvgDOM:\"UnderContractAvgDOM\"\r\n ,UnderContractAvgListPrice:\"UnderContractAvgListPrice\"\r\n ,ActiveAvgListPrice:\"ActiveAvgListPrice\"\r\n ,ActiveAvgListPricePerSqft:\"ActiveAvgListPricePerSqft\"\r\n ,ActiveAvgOriginalPrice:\"ActiveAvgOriginalPrice\"\r\n ,ActiveMedListPrice:\"ActiveMedListPrice\"\r\n ,ActiveMedListPricePerSqft:\"ActiveMedListPricePerSqft\"\r\n \r\n ,SoldMedDOM:\"DOM\"\r\n ,SoldAvgListPrice:\"SoldAvgListPrice\"\r\n ,SoldMedListPrice:\"SoldMedListPrice\" \r\n ,AvgSalePrice:\"Average Price\" \r\n ,AvgSaleOverOriginalPrice:\"AvgSaleOverOriginalPrice\"\r\n ,MedSalePricePerSqft:\"MedSalePricePerSqft\"\r\n ,AvgMonthsToSell:\"Months to Sell\"\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/labels.js","/*!\r\n * html2canvas 1.0.0-alpha.10 <https://html2canvas.hertzen.com>\r\n * Copyright (c) 2018 Niklas von Hertzen <https://hertzen.com>\r\n * Released under MIT License\r\n */\r\n(function webpackUniversalModuleDefinition(root, factory) {\r\n\tif(typeof exports === 'object' && typeof module === 'object')\r\n\t\tmodule.exports = factory();\r\n\telse if(typeof define === 'function' && define.amd)\r\n\t\tdefine([], factory);\r\n\telse if(typeof exports === 'object')\r\n\t\texports[\"html2canvas\"] = factory();\r\n\telse\r\n\t\troot[\"html2canvas\"] = factory();\r\n})(this, function() {\r\nreturn /******/ (function(modules) { // webpackBootstrap\r\n/******/ \t// The module cache\r\n/******/ \tvar installedModules = {};\r\n/******/\r\n/******/ \t// The require function\r\n/******/ \tfunction __webpack_require__(moduleId) {\r\n/******/\r\n/******/ \t\t// Check if module is in cache\r\n/******/ \t\tif(installedModules[moduleId]) {\r\n/******/ \t\t\treturn installedModules[moduleId].exports;\r\n/******/ \t\t}\r\n/******/ \t\t// Create a new module (and put it into the cache)\r\n/******/ \t\tvar module = installedModules[moduleId] = {\r\n/******/ \t\t\ti: moduleId,\r\n/******/ \t\t\tl: false,\r\n/******/ \t\t\texports: {}\r\n/******/ \t\t};\r\n/******/\r\n/******/ \t\t// Execute the module function\r\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\r\n/******/\r\n/******/ \t\t// Flag the module as loaded\r\n/******/ \t\tmodule.l = true;\r\n/******/\r\n/******/ \t\t// Return the exports of the module\r\n/******/ \t\treturn module.exports;\r\n/******/ \t}\r\n/******/\r\n/******/\r\n/******/ \t// expose the modules object (__webpack_modules__)\r\n/******/ \t__webpack_require__.m = modules;\r\n/******/\r\n/******/ \t// expose the module cache\r\n/******/ \t__webpack_require__.c = installedModules;\r\n/******/\r\n/******/ \t// define getter function for harmony exports\r\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\r\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\r\n/******/ \t\t\tObject.defineProperty(exports, name, {\r\n/******/ \t\t\t\tconfigurable: false,\r\n/******/ \t\t\t\tenumerable: true,\r\n/******/ \t\t\t\tget: getter\r\n/******/ \t\t\t});\r\n/******/ \t\t}\r\n/******/ \t};\r\n/******/\r\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\r\n/******/ \t__webpack_require__.n = function(module) {\r\n/******/ \t\tvar getter = module && module.__esModule ?\r\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\r\n/******/ \t\t\tfunction getModuleExports() { return module; };\r\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\r\n/******/ \t\treturn getter;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// Object.prototype.hasOwnProperty.call\r\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\r\n/******/\r\n/******/ \t// __webpack_public_path__\r\n/******/ \t__webpack_require__.p = \"\";\r\n/******/\r\n/******/ \t// Load entry module and return exports\r\n/******/ \treturn __webpack_require__(__webpack_require__.s = 27);\r\n/******/ })\r\n/************************************************************************/\r\n/******/ ([\r\n/* 0 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\n// http://dev.w3.org/csswg/css-color/\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar HEX3 = /^#([a-f0-9]{3})$/i;\r\nvar hex3 = function hex3(value) {\r\n var match = value.match(HEX3);\r\n if (match) {\r\n return [parseInt(match[1][0] + match[1][0], 16), parseInt(match[1][1] + match[1][1], 16), parseInt(match[1][2] + match[1][2], 16), null];\r\n }\r\n return false;\r\n};\r\n\r\nvar HEX6 = /^#([a-f0-9]{6})$/i;\r\nvar hex6 = function hex6(value) {\r\n var match = value.match(HEX6);\r\n if (match) {\r\n return [parseInt(match[1].substring(0, 2), 16), parseInt(match[1].substring(2, 4), 16), parseInt(match[1].substring(4, 6), 16), null];\r\n }\r\n return false;\r\n};\r\n\r\nvar RGB = /^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/;\r\nvar rgb = function rgb(value) {\r\n var match = value.match(RGB);\r\n if (match) {\r\n return [Number(match[1]), Number(match[2]), Number(match[3]), null];\r\n }\r\n return false;\r\n};\r\n\r\nvar RGBA = /^rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d?\\.?\\d+)\\s*\\)$/;\r\nvar rgba = function rgba(value) {\r\n var match = value.match(RGBA);\r\n if (match && match.length > 4) {\r\n return [Number(match[1]), Number(match[2]), Number(match[3]), Number(match[4])];\r\n }\r\n return false;\r\n};\r\n\r\nvar fromArray = function fromArray(array) {\r\n return [Math.min(array[0], 255), Math.min(array[1], 255), Math.min(array[2], 255), array.length > 3 ? array[3] : null];\r\n};\r\n\r\nvar namedColor = function namedColor(name) {\r\n var color = NAMED_COLORS[name.toLowerCase()];\r\n return color ? color : false;\r\n};\r\n\r\nvar Color = function () {\r\n function Color(value) {\r\n _classCallCheck(this, Color);\r\n\r\n var _ref = Array.isArray(value) ? fromArray(value) : hex3(value) || rgb(value) || rgba(value) || namedColor(value) || hex6(value) || [0, 0, 0, null],\r\n _ref2 = _slicedToArray(_ref, 4),\r\n r = _ref2[0],\r\n g = _ref2[1],\r\n b = _ref2[2],\r\n a = _ref2[3];\r\n\r\n this.r = r;\r\n this.g = g;\r\n this.b = b;\r\n this.a = a;\r\n }\r\n\r\n _createClass(Color, [{\r\n key: 'isTransparent',\r\n value: function isTransparent() {\r\n return this.a === 0;\r\n }\r\n }, {\r\n key: 'toString',\r\n value: function toString() {\r\n return this.a !== null && this.a !== 1 ? 'rgba(' + this.r + ',' + this.g + ',' + this.b + ',' + this.a + ')' : 'rgb(' + this.r + ',' + this.g + ',' + this.b + ')';\r\n }\r\n }]);\r\n\r\n return Color;\r\n}();\r\n\r\nexports.default = Color;\r\n\r\n\r\nvar NAMED_COLORS = {\r\n transparent: [0, 0, 0, 0],\r\n aliceblue: [240, 248, 255, null],\r\n antiquewhite: [250, 235, 215, null],\r\n aqua: [0, 255, 255, null],\r\n aquamarine: [127, 255, 212, null],\r\n azure: [240, 255, 255, null],\r\n beige: [245, 245, 220, null],\r\n bisque: [255, 228, 196, null],\r\n black: [0, 0, 0, null],\r\n blanchedalmond: [255, 235, 205, null],\r\n blue: [0, 0, 255, null],\r\n blueviolet: [138, 43, 226, null],\r\n brown: [165, 42, 42, null],\r\n burlywood: [222, 184, 135, null],\r\n cadetblue: [95, 158, 160, null],\r\n chartreuse: [127, 255, 0, null],\r\n chocolate: [210, 105, 30, null],\r\n coral: [255, 127, 80, null],\r\n cornflowerblue: [100, 149, 237, null],\r\n cornsilk: [255, 248, 220, null],\r\n crimson: [220, 20, 60, null],\r\n cyan: [0, 255, 255, null],\r\n darkblue: [0, 0, 139, null],\r\n darkcyan: [0, 139, 139, null],\r\n darkgoldenrod: [184, 134, 11, null],\r\n darkgray: [169, 169, 169, null],\r\n darkgreen: [0, 100, 0, null],\r\n darkgrey: [169, 169, 169, null],\r\n darkkhaki: [189, 183, 107, null],\r\n darkmagenta: [139, 0, 139, null],\r\n darkolivegreen: [85, 107, 47, null],\r\n darkorange: [255, 140, 0, null],\r\n darkorchid: [153, 50, 204, null],\r\n darkred: [139, 0, 0, null],\r\n darksalmon: [233, 150, 122, null],\r\n darkseagreen: [143, 188, 143, null],\r\n darkslateblue: [72, 61, 139, null],\r\n darkslategray: [47, 79, 79, null],\r\n darkslategrey: [47, 79, 79, null],\r\n darkturquoise: [0, 206, 209, null],\r\n darkviolet: [148, 0, 211, null],\r\n deeppink: [255, 20, 147, null],\r\n deepskyblue: [0, 191, 255, null],\r\n dimgray: [105, 105, 105, null],\r\n dimgrey: [105, 105, 105, null],\r\n dodgerblue: [30, 144, 255, null],\r\n firebrick: [178, 34, 34, null],\r\n floralwhite: [255, 250, 240, null],\r\n forestgreen: [34, 139, 34, null],\r\n fuchsia: [255, 0, 255, null],\r\n gainsboro: [220, 220, 220, null],\r\n ghostwhite: [248, 248, 255, null],\r\n gold: [255, 215, 0, null],\r\n goldenrod: [218, 165, 32, null],\r\n gray: [128, 128, 128, null],\r\n green: [0, 128, 0, null],\r\n greenyellow: [173, 255, 47, null],\r\n grey: [128, 128, 128, null],\r\n honeydew: [240, 255, 240, null],\r\n hotpink: [255, 105, 180, null],\r\n indianred: [205, 92, 92, null],\r\n indigo: [75, 0, 130, null],\r\n ivory: [255, 255, 240, null],\r\n khaki: [240, 230, 140, null],\r\n lavender: [230, 230, 250, null],\r\n lavenderblush: [255, 240, 245, null],\r\n lawngreen: [124, 252, 0, null],\r\n lemonchiffon: [255, 250, 205, null],\r\n lightblue: [173, 216, 230, null],\r\n lightcoral: [240, 128, 128, null],\r\n lightcyan: [224, 255, 255, null],\r\n lightgoldenrodyellow: [250, 250, 210, null],\r\n lightgray: [211, 211, 211, null],\r\n lightgreen: [144, 238, 144, null],\r\n lightgrey: [211, 211, 211, null],\r\n lightpink: [255, 182, 193, null],\r\n lightsalmon: [255, 160, 122, null],\r\n lightseagreen: [32, 178, 170, null],\r\n lightskyblue: [135, 206, 250, null],\r\n lightslategray: [119, 136, 153, null],\r\n lightslategrey: [119, 136, 153, null],\r\n lightsteelblue: [176, 196, 222, null],\r\n lightyellow: [255, 255, 224, null],\r\n lime: [0, 255, 0, null],\r\n limegreen: [50, 205, 50, null],\r\n linen: [250, 240, 230, null],\r\n magenta: [255, 0, 255, null],\r\n maroon: [128, 0, 0, null],\r\n mediumaquamarine: [102, 205, 170, null],\r\n mediumblue: [0, 0, 205, null],\r\n mediumorchid: [186, 85, 211, null],\r\n mediumpurple: [147, 112, 219, null],\r\n mediumseagreen: [60, 179, 113, null],\r\n mediumslateblue: [123, 104, 238, null],\r\n mediumspringgreen: [0, 250, 154, null],\r\n mediumturquoise: [72, 209, 204, null],\r\n mediumvioletred: [199, 21, 133, null],\r\n midnightblue: [25, 25, 112, null],\r\n mintcream: [245, 255, 250, null],\r\n mistyrose: [255, 228, 225, null],\r\n moccasin: [255, 228, 181, null],\r\n navajowhite: [255, 222, 173, null],\r\n navy: [0, 0, 128, null],\r\n oldlace: [253, 245, 230, null],\r\n olive: [128, 128, 0, null],\r\n olivedrab: [107, 142, 35, null],\r\n orange: [255, 165, 0, null],\r\n orangered: [255, 69, 0, null],\r\n orchid: [218, 112, 214, null],\r\n palegoldenrod: [238, 232, 170, null],\r\n palegreen: [152, 251, 152, null],\r\n paleturquoise: [175, 238, 238, null],\r\n palevioletred: [219, 112, 147, null],\r\n papayawhip: [255, 239, 213, null],\r\n peachpuff: [255, 218, 185, null],\r\n peru: [205, 133, 63, null],\r\n pink: [255, 192, 203, null],\r\n plum: [221, 160, 221, null],\r\n powderblue: [176, 224, 230, null],\r\n purple: [128, 0, 128, null],\r\n rebeccapurple: [102, 51, 153, null],\r\n red: [255, 0, 0, null],\r\n rosybrown: [188, 143, 143, null],\r\n royalblue: [65, 105, 225, null],\r\n saddlebrown: [139, 69, 19, null],\r\n salmon: [250, 128, 114, null],\r\n sandybrown: [244, 164, 96, null],\r\n seagreen: [46, 139, 87, null],\r\n seashell: [255, 245, 238, null],\r\n sienna: [160, 82, 45, null],\r\n silver: [192, 192, 192, null],\r\n skyblue: [135, 206, 235, null],\r\n slateblue: [106, 90, 205, null],\r\n slategray: [112, 128, 144, null],\r\n slategrey: [112, 128, 144, null],\r\n snow: [255, 250, 250, null],\r\n springgreen: [0, 255, 127, null],\r\n steelblue: [70, 130, 180, null],\r\n tan: [210, 180, 140, null],\r\n teal: [0, 128, 128, null],\r\n thistle: [216, 191, 216, null],\r\n tomato: [255, 99, 71, null],\r\n turquoise: [64, 224, 208, null],\r\n violet: [238, 130, 238, null],\r\n wheat: [245, 222, 179, null],\r\n white: [255, 255, 255, null],\r\n whitesmoke: [245, 245, 245, null],\r\n yellow: [255, 255, 0, null],\r\n yellowgreen: [154, 205, 50, null]\r\n};\r\n\r\nvar TRANSPARENT = exports.TRANSPARENT = new Color([0, 0, 0, 0]);\r\n\r\n/***/ }),\r\n/* 1 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.parseBoundCurves = exports.calculatePaddingBoxPath = exports.calculateBorderBoxPath = exports.parsePathForBorder = exports.parseDocumentSize = exports.calculateContentBox = exports.calculatePaddingBox = exports.parseBounds = exports.Bounds = undefined;\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _Vector = __webpack_require__(7);\r\n\r\nvar _Vector2 = _interopRequireDefault(_Vector);\r\n\r\nvar _BezierCurve = __webpack_require__(32);\r\n\r\nvar _BezierCurve2 = _interopRequireDefault(_BezierCurve);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar TOP = 0;\r\nvar RIGHT = 1;\r\nvar BOTTOM = 2;\r\nvar LEFT = 3;\r\n\r\nvar H = 0;\r\nvar V = 1;\r\n\r\nvar Bounds = exports.Bounds = function () {\r\n function Bounds(x, y, w, h) {\r\n _classCallCheck(this, Bounds);\r\n\r\n this.left = x;\r\n this.top = y;\r\n this.width = w;\r\n this.height = h;\r\n }\r\n\r\n _createClass(Bounds, null, [{\r\n key: 'fromClientRect',\r\n value: function fromClientRect(clientRect, scrollX, scrollY) {\r\n return new Bounds(clientRect.left + scrollX, clientRect.top + scrollY, clientRect.width, clientRect.height);\r\n }\r\n }]);\r\n\r\n return Bounds;\r\n}();\r\n\r\nvar parseBounds = exports.parseBounds = function parseBounds(node, scrollX, scrollY) {\r\n return Bounds.fromClientRect(node.getBoundingClientRect(), scrollX, scrollY);\r\n};\r\n\r\nvar calculatePaddingBox = exports.calculatePaddingBox = function calculatePaddingBox(bounds, borders) {\r\n return new Bounds(bounds.left + borders[LEFT].borderWidth, bounds.top + borders[TOP].borderWidth, bounds.width - (borders[RIGHT].borderWidth + borders[LEFT].borderWidth), bounds.height - (borders[TOP].borderWidth + borders[BOTTOM].borderWidth));\r\n};\r\n\r\nvar calculateContentBox = exports.calculateContentBox = function calculateContentBox(bounds, padding, borders) {\r\n // TODO support percentage paddings\r\n var paddingTop = padding[TOP].value;\r\n var paddingRight = padding[RIGHT].value;\r\n var paddingBottom = padding[BOTTOM].value;\r\n var paddingLeft = padding[LEFT].value;\r\n\r\n return new Bounds(bounds.left + paddingLeft + borders[LEFT].borderWidth, bounds.top + paddingTop + borders[TOP].borderWidth, bounds.width - (borders[RIGHT].borderWidth + borders[LEFT].borderWidth + paddingLeft + paddingRight), bounds.height - (borders[TOP].borderWidth + borders[BOTTOM].borderWidth + paddingTop + paddingBottom));\r\n};\r\n\r\nvar parseDocumentSize = exports.parseDocumentSize = function parseDocumentSize(document) {\r\n var body = document.body;\r\n var documentElement = document.documentElement;\r\n\r\n if (!body || !documentElement) {\r\n throw new Error( true ? 'Unable to get document size' : '');\r\n }\r\n var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));\r\n\r\n var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));\r\n\r\n return new Bounds(0, 0, width, height);\r\n};\r\n\r\nvar parsePathForBorder = exports.parsePathForBorder = function parsePathForBorder(curves, borderSide) {\r\n switch (borderSide) {\r\n case TOP:\r\n return createPathFromCurves(curves.topLeftOuter, curves.topLeftInner, curves.topRightOuter, curves.topRightInner);\r\n case RIGHT:\r\n return createPathFromCurves(curves.topRightOuter, curves.topRightInner, curves.bottomRightOuter, curves.bottomRightInner);\r\n case BOTTOM:\r\n return createPathFromCurves(curves.bottomRightOuter, curves.bottomRightInner, curves.bottomLeftOuter, curves.bottomLeftInner);\r\n case LEFT:\r\n default:\r\n return createPathFromCurves(curves.bottomLeftOuter, curves.bottomLeftInner, curves.topLeftOuter, curves.topLeftInner);\r\n }\r\n};\r\n\r\nvar createPathFromCurves = function createPathFromCurves(outer1, inner1, outer2, inner2) {\r\n var path = [];\r\n if (outer1 instanceof _BezierCurve2.default) {\r\n path.push(outer1.subdivide(0.5, false));\r\n } else {\r\n path.push(outer1);\r\n }\r\n\r\n if (outer2 instanceof _BezierCurve2.default) {\r\n path.push(outer2.subdivide(0.5, true));\r\n } else {\r\n path.push(outer2);\r\n }\r\n\r\n if (inner2 instanceof _BezierCurve2.default) {\r\n path.push(inner2.subdivide(0.5, true).reverse());\r\n } else {\r\n path.push(inner2);\r\n }\r\n\r\n if (inner1 instanceof _BezierCurve2.default) {\r\n path.push(inner1.subdivide(0.5, false).reverse());\r\n } else {\r\n path.push(inner1);\r\n }\r\n\r\n return path;\r\n};\r\n\r\nvar calculateBorderBoxPath = exports.calculateBorderBoxPath = function calculateBorderBoxPath(curves) {\r\n return [curves.topLeftOuter, curves.topRightOuter, curves.bottomRightOuter, curves.bottomLeftOuter];\r\n};\r\n\r\nvar calculatePaddingBoxPath = exports.calculatePaddingBoxPath = function calculatePaddingBoxPath(curves) {\r\n return [curves.topLeftInner, curves.topRightInner, curves.bottomRightInner, curves.bottomLeftInner];\r\n};\r\n\r\nvar parseBoundCurves = exports.parseBoundCurves = function parseBoundCurves(bounds, borders, borderRadius) {\r\n var tlh = borderRadius[CORNER.TOP_LEFT][H].getAbsoluteValue(bounds.width);\r\n var tlv = borderRadius[CORNER.TOP_LEFT][V].getAbsoluteValue(bounds.height);\r\n var trh = borderRadius[CORNER.TOP_RIGHT][H].getAbsoluteValue(bounds.width);\r\n var trv = borderRadius[CORNER.TOP_RIGHT][V].getAbsoluteValue(bounds.height);\r\n var brh = borderRadius[CORNER.BOTTOM_RIGHT][H].getAbsoluteValue(bounds.width);\r\n var brv = borderRadius[CORNER.BOTTOM_RIGHT][V].getAbsoluteValue(bounds.height);\r\n var blh = borderRadius[CORNER.BOTTOM_LEFT][H].getAbsoluteValue(bounds.width);\r\n var blv = borderRadius[CORNER.BOTTOM_LEFT][V].getAbsoluteValue(bounds.height);\r\n\r\n var factors = [];\r\n factors.push((tlh + trh) / bounds.width);\r\n factors.push((blh + brh) / bounds.width);\r\n factors.push((tlv + blv) / bounds.height);\r\n factors.push((trv + brv) / bounds.height);\r\n var maxFactor = Math.max.apply(Math, factors);\r\n\r\n if (maxFactor > 1) {\r\n tlh /= maxFactor;\r\n tlv /= maxFactor;\r\n trh /= maxFactor;\r\n trv /= maxFactor;\r\n brh /= maxFactor;\r\n brv /= maxFactor;\r\n blh /= maxFactor;\r\n blv /= maxFactor;\r\n }\r\n\r\n var topWidth = bounds.width - trh;\r\n var rightHeight = bounds.height - brv;\r\n var bottomWidth = bounds.width - brh;\r\n var leftHeight = bounds.height - blv;\r\n\r\n return {\r\n topLeftOuter: tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT) : new _Vector2.default(bounds.left, bounds.top),\r\n topLeftInner: tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borders[LEFT].borderWidth, bounds.top + borders[TOP].borderWidth, Math.max(0, tlh - borders[LEFT].borderWidth), Math.max(0, tlv - borders[TOP].borderWidth), CORNER.TOP_LEFT) : new _Vector2.default(bounds.left + borders[LEFT].borderWidth, bounds.top + borders[TOP].borderWidth),\r\n topRightOuter: trh > 0 || trv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT) : new _Vector2.default(bounds.left + bounds.width, bounds.top),\r\n topRightInner: trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borders[LEFT].borderWidth), bounds.top + borders[TOP].borderWidth, topWidth > bounds.width + borders[LEFT].borderWidth ? 0 : trh - borders[LEFT].borderWidth, trv - borders[TOP].borderWidth, CORNER.TOP_RIGHT) : new _Vector2.default(bounds.left + bounds.width - borders[RIGHT].borderWidth, bounds.top + borders[TOP].borderWidth),\r\n bottomRightOuter: brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT) : new _Vector2.default(bounds.left + bounds.width, bounds.top + bounds.height),\r\n bottomRightInner: brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borders[LEFT].borderWidth), bounds.top + Math.min(rightHeight, bounds.height + borders[TOP].borderWidth), Math.max(0, brh - borders[RIGHT].borderWidth), brv - borders[BOTTOM].borderWidth, CORNER.BOTTOM_RIGHT) : new _Vector2.default(bounds.left + bounds.width - borders[RIGHT].borderWidth, bounds.top + bounds.height - borders[BOTTOM].borderWidth),\r\n bottomLeftOuter: blh > 0 || blv > 0 ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT) : new _Vector2.default(bounds.left, bounds.top + bounds.height),\r\n bottomLeftInner: blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borders[LEFT].borderWidth, bounds.top + leftHeight, Math.max(0, blh - borders[LEFT].borderWidth), blv - borders[BOTTOM].borderWidth, CORNER.BOTTOM_LEFT) : new _Vector2.default(bounds.left + borders[LEFT].borderWidth, bounds.top + bounds.height - borders[BOTTOM].borderWidth)\r\n };\r\n};\r\n\r\nvar CORNER = {\r\n TOP_LEFT: 0,\r\n TOP_RIGHT: 1,\r\n BOTTOM_RIGHT: 2,\r\n BOTTOM_LEFT: 3\r\n};\r\n\r\nvar getCurvePoints = function getCurvePoints(x, y, r1, r2, position) {\r\n var kappa = 4 * ((Math.sqrt(2) - 1) / 3);\r\n var ox = r1 * kappa; // control point offset horizontal\r\n var oy = r2 * kappa; // control point offset vertical\r\n var xm = x + r1; // x-middle\r\n var ym = y + r2; // y-middle\r\n\r\n switch (position) {\r\n case CORNER.TOP_LEFT:\r\n return new _BezierCurve2.default(new _Vector2.default(x, ym), new _Vector2.default(x, ym - oy), new _Vector2.default(xm - ox, y), new _Vector2.default(xm, y));\r\n case CORNER.TOP_RIGHT:\r\n return new _BezierCurve2.default(new _Vector2.default(x, y), new _Vector2.default(x + ox, y), new _Vector2.default(xm, ym - oy), new _Vector2.default(xm, ym));\r\n case CORNER.BOTTOM_RIGHT:\r\n return new _BezierCurve2.default(new _Vector2.default(xm, y), new _Vector2.default(xm, y + oy), new _Vector2.default(x + ox, ym), new _Vector2.default(x, ym));\r\n case CORNER.BOTTOM_LEFT:\r\n default:\r\n return new _BezierCurve2.default(new _Vector2.default(xm, ym), new _Vector2.default(xm - ox, ym), new _Vector2.default(x, y + oy), new _Vector2.default(x, y));\r\n }\r\n};\r\n\r\n/***/ }),\r\n/* 2 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.calculateLengthFromValueWithUnit = exports.LENGTH_TYPE = undefined;\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _NodeContainer = __webpack_require__(3);\r\n\r\nvar _NodeContainer2 = _interopRequireDefault(_NodeContainer);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar LENGTH_WITH_UNIT = /([\\d.]+)(px|r?em|%)/i;\r\n\r\nvar LENGTH_TYPE = exports.LENGTH_TYPE = {\r\n PX: 0,\r\n PERCENTAGE: 1\r\n};\r\n\r\nvar Length = function () {\r\n function Length(value) {\r\n _classCallCheck(this, Length);\r\n\r\n this.type = value.substr(value.length - 1) === '%' ? LENGTH_TYPE.PERCENTAGE : LENGTH_TYPE.PX;\r\n var parsedValue = parseFloat(value);\r\n if (true && isNaN(parsedValue)) {\r\n console.error('Invalid value given for Length: \"' + value + '\"');\r\n }\r\n this.value = isNaN(parsedValue) ? 0 : parsedValue;\r\n }\r\n\r\n _createClass(Length, [{\r\n key: 'isPercentage',\r\n value: function isPercentage() {\r\n return this.type === LENGTH_TYPE.PERCENTAGE;\r\n }\r\n }, {\r\n key: 'getAbsoluteValue',\r\n value: function getAbsoluteValue(parentLength) {\r\n return this.isPercentage() ? parentLength * (this.value / 100) : this.value;\r\n }\r\n }], [{\r\n key: 'create',\r\n value: function create(v) {\r\n return new Length(v);\r\n }\r\n }]);\r\n\r\n return Length;\r\n}();\r\n\r\nexports.default = Length;\r\n\r\n\r\nvar getRootFontSize = function getRootFontSize(container) {\r\n var parent = container.parent;\r\n return parent ? getRootFontSize(parent) : parseFloat(container.style.font.fontSize);\r\n};\r\n\r\nvar calculateLengthFromValueWithUnit = exports.calculateLengthFromValueWithUnit = function calculateLengthFromValueWithUnit(container, value, unit) {\r\n switch (unit) {\r\n case 'px':\r\n case '%':\r\n return new Length(value + unit);\r\n case 'em':\r\n case 'rem':\r\n var length = new Length(value);\r\n length.value *= unit === 'em' ? parseFloat(container.style.font.fontSize) : getRootFontSize(container);\r\n return length;\r\n default:\r\n // TODO: handle correctly if unknown unit is used\r\n return new Length('0');\r\n }\r\n};\r\n\r\n/***/ }),\r\n/* 3 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _Color = __webpack_require__(0);\r\n\r\nvar _Color2 = _interopRequireDefault(_Color);\r\n\r\nvar _Util = __webpack_require__(4);\r\n\r\nvar _background = __webpack_require__(5);\r\n\r\nvar _border = __webpack_require__(12);\r\n\r\nvar _borderRadius = __webpack_require__(33);\r\n\r\nvar _display = __webpack_require__(34);\r\n\r\nvar _float = __webpack_require__(35);\r\n\r\nvar _font = __webpack_require__(36);\r\n\r\nvar _letterSpacing = __webpack_require__(37);\r\n\r\nvar _lineBreak = __webpack_require__(38);\r\n\r\nvar _listStyle = __webpack_require__(8);\r\n\r\nvar _margin = __webpack_require__(39);\r\n\r\nvar _overflow = __webpack_require__(40);\r\n\r\nvar _overflowWrap = __webpack_require__(18);\r\n\r\nvar _padding = __webpack_require__(17);\r\n\r\nvar _position = __webpack_require__(19);\r\n\r\nvar _textDecoration = __webpack_require__(11);\r\n\r\nvar _textShadow = __webpack_require__(41);\r\n\r\nvar _textTransform = __webpack_require__(20);\r\n\r\nvar _transform = __webpack_require__(42);\r\n\r\nvar _visibility = __webpack_require__(43);\r\n\r\nvar _wordBreak = __webpack_require__(44);\r\n\r\nvar _zIndex = __webpack_require__(45);\r\n\r\nvar _Bounds = __webpack_require__(1);\r\n\r\nvar _Input = __webpack_require__(21);\r\n\r\nvar _ListItem = __webpack_require__(14);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\n\r\nvar NodeContainer = function () {\r\n function NodeContainer(node, parent, resourceLoader, index) {\r\n var _this = this;\r\n\r\n _classCallCheck(this, NodeContainer);\r\n\r\n this.parent = parent;\r\n this.tagName = node.tagName;\r\n this.index = index;\r\n this.childNodes = [];\r\n this.listItems = [];\r\n if (typeof node.start === 'number') {\r\n this.listStart = node.start;\r\n }\r\n var defaultView = node.ownerDocument.defaultView;\r\n var scrollX = defaultView.pageXOffset;\r\n var scrollY = defaultView.pageYOffset;\r\n var style = defaultView.getComputedStyle(node, null);\r\n var display = (0, _display.parseDisplay)(style.display);\r\n\r\n var IS_INPUT = node.type === 'radio' || node.type === 'checkbox';\r\n\r\n var position = (0, _position.parsePosition)(style.position);\r\n\r\n this.style = {\r\n background: IS_INPUT ? _Input.INPUT_BACKGROUND : (0, _background.parseBackground)(style, resourceLoader),\r\n border: IS_INPUT ? _Input.INPUT_BORDERS : (0, _border.parseBorder)(style),\r\n borderRadius: (node instanceof defaultView.HTMLInputElement || node instanceof HTMLInputElement) && IS_INPUT ? (0, _Input.getInputBorderRadius)(node) : (0, _borderRadius.parseBorderRadius)(style),\r\n color: IS_INPUT ? _Input.INPUT_COLOR : new _Color2.default(style.color),\r\n display: display,\r\n float: (0, _float.parseCSSFloat)(style.float),\r\n font: (0, _font.parseFont)(style),\r\n letterSpacing: (0, _letterSpacing.parseLetterSpacing)(style.letterSpacing),\r\n listStyle: display === _display.DISPLAY.LIST_ITEM ? (0, _listStyle.parseListStyle)(style) : null,\r\n lineBreak: (0, _lineBreak.parseLineBreak)(style.lineBreak),\r\n margin: (0, _margin.parseMargin)(style),\r\n opacity: parseFloat(style.opacity),\r\n overflow: INPUT_TAGS.indexOf(node.tagName) === -1 ? (0, _overflow.parseOverflow)(style.overflow) : _overflow.OVERFLOW.HIDDEN,\r\n overflowWrap: (0, _overflowWrap.parseOverflowWrap)(style.overflowWrap ? style.overflowWrap : style.wordWrap),\r\n padding: (0, _padding.parsePadding)(style),\r\n position: position,\r\n textDecoration: (0, _textDecoration.parseTextDecoration)(style),\r\n textShadow: (0, _textShadow.parseTextShadow)(style.textShadow),\r\n textTransform: (0, _textTransform.parseTextTransform)(style.textTransform),\r\n transform: (0, _transform.parseTransform)(style),\r\n visibility: (0, _visibility.parseVisibility)(style.visibility),\r\n wordBreak: (0, _wordBreak.parseWordBreak)(style.wordBreak),\r\n zIndex: (0, _zIndex.parseZIndex)(position !== _position.POSITION.STATIC ? style.zIndex : 'auto')\r\n };\r\n\r\n if (this.isTransformed()) {\r\n // getBoundingClientRect provides values post-transform, we want them without the transformation\r\n node.style.transform = 'matrix(1,0,0,1,0,0)';\r\n }\r\n\r\n if (display === _display.DISPLAY.LIST_ITEM) {\r\n var listOwner = (0, _ListItem.getListOwner)(this);\r\n if (listOwner) {\r\n var listIndex = listOwner.listItems.length;\r\n listOwner.listItems.push(this);\r\n this.listIndex = node.hasAttribute('value') && typeof node.value === 'number' ? node.value : listIndex === 0 ? typeof listOwner.listStart === 'number' ? listOwner.listStart : 1 : listOwner.listItems[listIndex - 1].listIndex + 1;\r\n }\r\n }\r\n\r\n // TODO move bound retrieval for all nodes to a later stage?\r\n if (node.tagName === 'IMG') {\r\n node.addEventListener('load', function () {\r\n _this.bounds = (0, _Bounds.parseBounds)(node, scrollX, scrollY);\r\n _this.curvedBounds = (0, _Bounds.parseBoundCurves)(_this.bounds, _this.style.border, _this.style.borderRadius);\r\n });\r\n }\r\n this.image = getImage(node, resourceLoader);\r\n this.bounds = IS_INPUT ? (0, _Input.reformatInputBounds)((0, _Bounds.parseBounds)(node, scrollX, scrollY)) : (0, _Bounds.parseBounds)(node, scrollX, scrollY);\r\n this.curvedBounds = (0, _Bounds.parseBoundCurves)(this.bounds, this.style.border, this.style.borderRadius);\r\n\r\n if (true) {\r\n this.name = '' + node.tagName.toLowerCase() + (node.id ? '#' + node.id : '') + node.className.toString().split(' ').map(function (s) {\r\n return s.length ? '.' + s : '';\r\n }).join('');\r\n }\r\n }\r\n\r\n _createClass(NodeContainer, [{\r\n key: 'getClipPaths',\r\n value: function getClipPaths() {\r\n var parentClips = this.parent ? this.parent.getClipPaths() : [];\r\n var isClipped = this.style.overflow !== _overflow.OVERFLOW.VISIBLE;\r\n\r\n return isClipped ? parentClips.concat([(0, _Bounds.calculatePaddingBoxPath)(this.curvedBounds)]) : parentClips;\r\n }\r\n }, {\r\n key: 'isInFlow',\r\n value: function isInFlow() {\r\n return this.isRootElement() && !this.isFloating() && !this.isAbsolutelyPositioned();\r\n }\r\n }, {\r\n key: 'isVisible',\r\n value: function isVisible() {\r\n return !(0, _Util.contains)(this.style.display, _display.DISPLAY.NONE) && this.style.opacity > 0 && this.style.visibility === _visibility.VISIBILITY.VISIBLE;\r\n }\r\n }, {\r\n key: 'isAbsolutelyPositioned',\r\n value: function isAbsolutelyPositioned() {\r\n return this.style.position !== _position.POSITION.STATIC && this.style.position !== _position.POSITION.RELATIVE;\r\n }\r\n }, {\r\n key: 'isPositioned',\r\n value: function isPositioned() {\r\n return this.style.position !== _position.POSITION.STATIC;\r\n }\r\n }, {\r\n key: 'isFloating',\r\n value: function isFloating() {\r\n return this.style.float !== _float.FLOAT.NONE;\r\n }\r\n }, {\r\n key: 'isRootElement',\r\n value: function isRootElement() {\r\n return this.parent === null;\r\n }\r\n }, {\r\n key: 'isTransformed',\r\n value: function isTransformed() {\r\n return this.style.transform !== null;\r\n }\r\n }, {\r\n key: 'isPositionedWithZIndex',\r\n value: function isPositionedWithZIndex() {\r\n return this.isPositioned() && !this.style.zIndex.auto;\r\n }\r\n }, {\r\n key: 'isInlineLevel',\r\n value: function isInlineLevel() {\r\n return (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE) || (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE_BLOCK) || (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE_FLEX) || (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE_GRID) || (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE_LIST_ITEM) || (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE_TABLE);\r\n }\r\n }, {\r\n key: 'isInlineBlockOrInlineTable',\r\n value: function isInlineBlockOrInlineTable() {\r\n return (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE_BLOCK) || (0, _Util.contains)(this.style.display, _display.DISPLAY.INLINE_TABLE);\r\n }\r\n }]);\r\n\r\n return NodeContainer;\r\n}();\r\n\r\nexports.default = NodeContainer;\r\n\r\n\r\nvar getImage = function getImage(node, resourceLoader) {\r\n if (node instanceof node.ownerDocument.defaultView.SVGSVGElement || node instanceof SVGSVGElement) {\r\n var s = new XMLSerializer();\r\n return resourceLoader.loadImage('data:image/svg+xml,' + encodeURIComponent(s.serializeToString(node)));\r\n }\r\n switch (node.tagName) {\r\n case 'IMG':\r\n // $FlowFixMe\r\n var img = node;\r\n return resourceLoader.loadImage(img.currentSrc || img.src);\r\n case 'CANVAS':\r\n // $FlowFixMe\r\n var canvas = node;\r\n return resourceLoader.loadCanvas(canvas);\r\n case 'IFRAME':\r\n var iframeKey = node.getAttribute('data-html2canvas-internal-iframe-key');\r\n if (iframeKey) {\r\n return iframeKey;\r\n }\r\n break;\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/***/ }),\r\n/* 4 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nvar contains = exports.contains = function contains(bit, value) {\r\n return (bit & value) !== 0;\r\n};\r\n\r\nvar distance = exports.distance = function distance(a, b) {\r\n return Math.sqrt(a * a + b * b);\r\n};\r\n\r\nvar copyCSSStyles = exports.copyCSSStyles = function copyCSSStyles(style, target) {\r\n // Edge does not provide value for cssText\r\n for (var i = style.length - 1; i >= 0; i--) {\r\n var property = style.item(i);\r\n // Safari shows pseudoelements if content is set\r\n if (property !== 'content') {\r\n target.style.setProperty(property, style.getPropertyValue(property));\r\n }\r\n }\r\n return target;\r\n};\r\n\r\nvar SMALL_IMAGE = exports.SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\r\n\r\n/***/ }),\r\n/* 5 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.parseBackgroundImage = exports.parseBackground = exports.calculateBackgroundRepeatPath = exports.calculateBackgroundPosition = exports.calculateBackgroungPositioningArea = exports.calculateBackgroungPaintingArea = exports.calculateGradientBackgroundSize = exports.calculateBackgroundSize = exports.BACKGROUND_ORIGIN = exports.BACKGROUND_CLIP = exports.BACKGROUND_SIZE = exports.BACKGROUND_REPEAT = undefined;\r\n\r\nvar _Color = __webpack_require__(0);\r\n\r\nvar _Color2 = _interopRequireDefault(_Color);\r\n\r\nvar _Length = __webpack_require__(2);\r\n\r\nvar _Length2 = _interopRequireDefault(_Length);\r\n\r\nvar _Size = __webpack_require__(31);\r\n\r\nvar _Size2 = _interopRequireDefault(_Size);\r\n\r\nvar _Vector = __webpack_require__(7);\r\n\r\nvar _Vector2 = _interopRequireDefault(_Vector);\r\n\r\nvar _Bounds = __webpack_require__(1);\r\n\r\nvar _padding = __webpack_require__(17);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar BACKGROUND_REPEAT = exports.BACKGROUND_REPEAT = {\r\n REPEAT: 0,\r\n NO_REPEAT: 1,\r\n REPEAT_X: 2,\r\n REPEAT_Y: 3\r\n};\r\n\r\nvar BACKGROUND_SIZE = exports.BACKGROUND_SIZE = {\r\n AUTO: 0,\r\n CONTAIN: 1,\r\n COVER: 2,\r\n LENGTH: 3\r\n};\r\n\r\nvar BACKGROUND_CLIP = exports.BACKGROUND_CLIP = {\r\n BORDER_BOX: 0,\r\n PADDING_BOX: 1,\r\n CONTENT_BOX: 2\r\n};\r\n\r\nvar BACKGROUND_ORIGIN = exports.BACKGROUND_ORIGIN = BACKGROUND_CLIP;\r\n\r\nvar AUTO = 'auto';\r\n\r\nvar BackgroundSize = function BackgroundSize(size) {\r\n _classCallCheck(this, BackgroundSize);\r\n\r\n switch (size) {\r\n case 'contain':\r\n this.size = BACKGROUND_SIZE.CONTAIN;\r\n break;\r\n case 'cover':\r\n this.size = BACKGROUND_SIZE.COVER;\r\n break;\r\n case 'auto':\r\n this.size = BACKGROUND_SIZE.AUTO;\r\n break;\r\n default:\r\n this.value = new _Length2.default(size);\r\n }\r\n};\r\n\r\nvar calculateBackgroundSize = exports.calculateBackgroundSize = function calculateBackgroundSize(backgroundImage, image, bounds) {\r\n var width = 0;\r\n var height = 0;\r\n var size = backgroundImage.size;\r\n if (size[0].size === BACKGROUND_SIZE.CONTAIN || size[0].size === BACKGROUND_SIZE.COVER) {\r\n var targetRatio = bounds.width / bounds.height;\r\n var currentRatio = image.width / image.height;\r\n return targetRatio < currentRatio !== (size[0].size === BACKGROUND_SIZE.COVER) ? new _Size2.default(bounds.width, bounds.width / currentRatio) : new _Size2.default(bounds.height * currentRatio, bounds.height);\r\n }\r\n\r\n if (size[0].value) {\r\n width = size[0].value.getAbsoluteValue(bounds.width);\r\n }\r\n\r\n if (size[0].size === BACKGROUND_SIZE.AUTO && size[1].size === BACKGROUND_SIZE.AUTO) {\r\n height = image.height;\r\n } else if (size[1].size === BACKGROUND_SIZE.AUTO) {\r\n height = width / image.width * image.height;\r\n } else if (size[1].value) {\r\n height = size[1].value.getAbsoluteValue(bounds.height);\r\n }\r\n\r\n if (size[0].size === BACKGROUND_SIZE.AUTO) {\r\n width = height / image.height * image.width;\r\n }\r\n\r\n return new _Size2.default(width, height);\r\n};\r\n\r\nvar calculateGradientBackgroundSize = exports.calculateGradientBackgroundSize = function calculateGradientBackgroundSize(backgroundImage, bounds) {\r\n var size = backgroundImage.size;\r\n var width = size[0].value ? size[0].value.getAbsoluteValue(bounds.width) : bounds.width;\r\n var height = size[1].value ? size[1].value.getAbsoluteValue(bounds.height) : size[0].value ? width : bounds.height;\r\n\r\n return new _Size2.default(width, height);\r\n};\r\n\r\nvar AUTO_SIZE = new BackgroundSize(AUTO);\r\n\r\nvar calculateBackgroungPaintingArea = exports.calculateBackgroungPaintingArea = function calculateBackgroungPaintingArea(curves, clip) {\r\n switch (clip) {\r\n case BACKGROUND_CLIP.BORDER_BOX:\r\n return (0, _Bounds.calculateBorderBoxPath)(curves);\r\n case BACKGROUND_CLIP.PADDING_BOX:\r\n default:\r\n return (0, _Bounds.calculatePaddingBoxPath)(curves);\r\n }\r\n};\r\n\r\nvar calculateBackgroungPositioningArea = exports.calculateBackgroungPositioningArea = function calculateBackgroungPositioningArea(backgroundOrigin, bounds, padding, border) {\r\n var paddingBox = (0, _Bounds.calculatePaddingBox)(bounds, border);\r\n\r\n switch (backgroundOrigin) {\r\n case BACKGROUND_ORIGIN.BORDER_BOX:\r\n return bounds;\r\n case BACKGROUND_ORIGIN.CONTENT_BOX:\r\n var paddingLeft = padding[_padding.PADDING_SIDES.LEFT].getAbsoluteValue(bounds.width);\r\n var paddingRight = padding[_padding.PADDING_SIDES.RIGHT].getAbsoluteValue(bounds.width);\r\n var paddingTop = padding[_padding.PADDING_SIDES.TOP].getAbsoluteValue(bounds.width);\r\n var paddingBottom = padding[_padding.PADDING_SIDES.BOTTOM].getAbsoluteValue(bounds.width);\r\n return new _Bounds.Bounds(paddingBox.left + paddingLeft, paddingBox.top + paddingTop, paddingBox.width - paddingLeft - paddingRight, paddingBox.height - paddingTop - paddingBottom);\r\n case BACKGROUND_ORIGIN.PADDING_BOX:\r\n default:\r\n return paddingBox;\r\n }\r\n};\r\n\r\nvar calculateBackgroundPosition = exports.calculateBackgroundPosition = function calculateBackgroundPosition(position, size, bounds) {\r\n return new _Vector2.default(position[0].getAbsoluteValue(bounds.width - size.width), position[1].getAbsoluteValue(bounds.height - size.height));\r\n};\r\n\r\nvar calculateBackgroundRepeatPath = exports.calculateBackgroundRepeatPath = function calculateBackgroundRepeatPath(background, position, size, backgroundPositioningArea, bounds) {\r\n var repeat = background.repeat;\r\n switch (repeat) {\r\n case BACKGROUND_REPEAT.REPEAT_X:\r\n return [new _Vector2.default(Math.round(bounds.left), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(size.height + backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(bounds.left), Math.round(size.height + backgroundPositioningArea.top + position.y))];\r\n case BACKGROUND_REPEAT.REPEAT_Y:\r\n return [new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(bounds.top)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(bounds.top)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(bounds.height + bounds.top)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(bounds.height + bounds.top))];\r\n case BACKGROUND_REPEAT.NO_REPEAT:\r\n return [new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(backgroundPositioningArea.top + position.y)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x + size.width), Math.round(backgroundPositioningArea.top + position.y + size.height)), new _Vector2.default(Math.round(backgroundPositioningArea.left + position.x), Math.round(backgroundPositioningArea.top + position.y + size.height))];\r\n default:\r\n return [new _Vector2.default(Math.round(bounds.left), Math.round(bounds.top)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(bounds.top)), new _Vector2.default(Math.round(bounds.left + bounds.width), Math.round(bounds.height + bounds.top)), new _Vector2.default(Math.round(bounds.left), Math.round(bounds.height + bounds.top))];\r\n }\r\n};\r\n\r\nvar parseBackground = exports.parseBackground = function parseBackground(style, resourceLoader) {\r\n return {\r\n backgroundColor: new _Color2.default(style.backgroundColor),\r\n backgroundImage: parseBackgroundImages(style, resourceLoader),\r\n backgroundClip: parseBackgroundClip(style.backgroundClip),\r\n backgroundOrigin: parseBackgroundOrigin(style.backgroundOrigin)\r\n };\r\n};\r\n\r\nvar parseBackgroundClip = function parseBackgroundClip(backgroundClip) {\r\n switch (backgroundClip) {\r\n case 'padding-box':\r\n return BACKGROUND_CLIP.PADDING_BOX;\r\n case 'content-box':\r\n return BACKGROUND_CLIP.CONTENT_BOX;\r\n }\r\n return BACKGROUND_CLIP.BORDER_BOX;\r\n};\r\n\r\nvar parseBackgroundOrigin = function parseBackgroundOrigin(backgroundOrigin) {\r\n switch (backgroundOrigin) {\r\n case 'padding-box':\r\n return BACKGROUND_ORIGIN.PADDING_BOX;\r\n case 'content-box':\r\n return BACKGROUND_ORIGIN.CONTENT_BOX;\r\n }\r\n return BACKGROUND_ORIGIN.BORDER_BOX;\r\n};\r\n\r\nvar parseBackgroundRepeat = function parseBackgroundRepeat(backgroundRepeat) {\r\n switch (backgroundRepeat.trim()) {\r\n case 'no-repeat':\r\n return BACKGROUND_REPEAT.NO_REPEAT;\r\n case 'repeat-x':\r\n case 'repeat no-repeat':\r\n return BACKGROUND_REPEAT.REPEAT_X;\r\n case 'repeat-y':\r\n case 'no-repeat repeat':\r\n return BACKGROUND_REPEAT.REPEAT_Y;\r\n case 'repeat':\r\n return BACKGROUND_REPEAT.REPEAT;\r\n }\r\n\r\n if (true) {\r\n console.error('Invalid background-repeat value \"' + backgroundRepeat + '\"');\r\n }\r\n\r\n return BACKGROUND_REPEAT.REPEAT;\r\n};\r\n\r\nvar parseBackgroundImages = function parseBackgroundImages(style, resourceLoader) {\r\n var sources = parseBackgroundImage(style.backgroundImage).map(function (backgroundImage) {\r\n if (backgroundImage.method === 'url') {\r\n var key = resourceLoader.loadImage(backgroundImage.args[0]);\r\n backgroundImage.args = key ? [key] : [];\r\n }\r\n return backgroundImage;\r\n });\r\n var positions = style.backgroundPosition.split(',');\r\n var repeats = style.backgroundRepeat.split(',');\r\n var sizes = style.backgroundSize.split(',');\r\n\r\n return sources.map(function (source, index) {\r\n var size = (sizes[index] || AUTO).trim().split(' ').map(parseBackgroundSize);\r\n var position = (positions[index] || AUTO).trim().split(' ').map(parseBackgoundPosition);\r\n\r\n return {\r\n source: source,\r\n repeat: parseBackgroundRepeat(typeof repeats[index] === 'string' ? repeats[index] : repeats[0]),\r\n size: size.length < 2 ? [size[0], AUTO_SIZE] : [size[0], size[1]],\r\n position: position.length < 2 ? [position[0], position[0]] : [position[0], position[1]]\r\n };\r\n });\r\n};\r\n\r\nvar parseBackgroundSize = function parseBackgroundSize(size) {\r\n return size === 'auto' ? AUTO_SIZE : new BackgroundSize(size);\r\n};\r\n\r\nvar parseBackgoundPosition = function parseBackgoundPosition(position) {\r\n switch (position) {\r\n case 'bottom':\r\n case 'right':\r\n return new _Length2.default('100%');\r\n case 'left':\r\n case 'top':\r\n return new _Length2.default('0%');\r\n case 'auto':\r\n return new _Length2.default('0');\r\n }\r\n return new _Length2.default(position);\r\n};\r\n\r\nvar parseBackgroundImage = exports.parseBackgroundImage = function parseBackgroundImage(image) {\r\n var whitespace = /^\\s$/;\r\n var results = [];\r\n\r\n var args = [];\r\n var method = '';\r\n var quote = null;\r\n var definition = '';\r\n var mode = 0;\r\n var numParen = 0;\r\n\r\n var appendResult = function appendResult() {\r\n var prefix = '';\r\n if (method) {\r\n if (definition.substr(0, 1) === '\"') {\r\n definition = definition.substr(1, definition.length - 2);\r\n }\r\n\r\n if (definition) {\r\n args.push(definition.trim());\r\n }\r\n\r\n var prefix_i = method.indexOf('-', 1) + 1;\r\n if (method.substr(0, 1) === '-' && prefix_i > 0) {\r\n prefix = method.substr(0, prefix_i).toLowerCase();\r\n method = method.substr(prefix_i);\r\n }\r\n method = method.toLowerCase();\r\n if (method !== 'none') {\r\n results.push({\r\n prefix: prefix,\r\n method: method,\r\n args: args\r\n });\r\n }\r\n }\r\n args = [];\r\n method = definition = '';\r\n };\r\n\r\n image.split('').forEach(function (c) {\r\n if (mode === 0 && whitespace.test(c)) {\r\n return;\r\n }\r\n switch (c) {\r\n case '\"':\r\n if (!quote) {\r\n quote = c;\r\n } else if (quote === c) {\r\n quote = null;\r\n }\r\n break;\r\n case '(':\r\n if (quote) {\r\n break;\r\n } else if (mode === 0) {\r\n mode = 1;\r\n return;\r\n } else {\r\n numParen++;\r\n }\r\n break;\r\n case ')':\r\n if (quote) {\r\n break;\r\n } else if (mode === 1) {\r\n if (numParen === 0) {\r\n mode = 0;\r\n appendResult();\r\n return;\r\n } else {\r\n numParen--;\r\n }\r\n }\r\n break;\r\n\r\n case ',':\r\n if (quote) {\r\n break;\r\n } else if (mode === 0) {\r\n appendResult();\r\n return;\r\n } else if (mode === 1) {\r\n if (numParen === 0 && !method.match(/^url$/i)) {\r\n args.push(definition.trim());\r\n definition = '';\r\n return;\r\n }\r\n }\r\n break;\r\n }\r\n\r\n if (mode === 0) {\r\n method += c;\r\n } else {\r\n definition += c;\r\n }\r\n });\r\n\r\n appendResult();\r\n return results;\r\n};\r\n\r\n/***/ }),\r\n/* 6 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nvar PATH = exports.PATH = {\r\n VECTOR: 0,\r\n BEZIER_CURVE: 1,\r\n CIRCLE: 2\r\n};\r\n\r\n/***/ }),\r\n/* 7 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _Path = __webpack_require__(6);\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar Vector = function Vector(x, y) {\r\n _classCallCheck(this, Vector);\r\n\r\n this.type = _Path.PATH.VECTOR;\r\n this.x = x;\r\n this.y = y;\r\n if (true) {\r\n if (isNaN(x)) {\r\n console.error('Invalid x value given for Vector');\r\n }\r\n if (isNaN(y)) {\r\n console.error('Invalid y value given for Vector');\r\n }\r\n }\r\n};\r\n\r\nexports.default = Vector;\r\n\r\n/***/ }),\r\n/* 8 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.parseListStyle = exports.parseListStyleType = exports.LIST_STYLE_TYPE = exports.LIST_STYLE_POSITION = undefined;\r\n\r\nvar _background = __webpack_require__(5);\r\n\r\nvar LIST_STYLE_POSITION = exports.LIST_STYLE_POSITION = {\r\n INSIDE: 0,\r\n OUTSIDE: 1\r\n};\r\n\r\nvar LIST_STYLE_TYPE = exports.LIST_STYLE_TYPE = {\r\n NONE: -1,\r\n DISC: 0,\r\n CIRCLE: 1,\r\n SQUARE: 2,\r\n DECIMAL: 3,\r\n CJK_DECIMAL: 4,\r\n DECIMAL_LEADING_ZERO: 5,\r\n LOWER_ROMAN: 6,\r\n UPPER_ROMAN: 7,\r\n LOWER_GREEK: 8,\r\n LOWER_ALPHA: 9,\r\n UPPER_ALPHA: 10,\r\n ARABIC_INDIC: 11,\r\n ARMENIAN: 12,\r\n BENGALI: 13,\r\n CAMBODIAN: 14,\r\n CJK_EARTHLY_BRANCH: 15,\r\n CJK_HEAVENLY_STEM: 16,\r\n CJK_IDEOGRAPHIC: 17,\r\n DEVANAGARI: 18,\r\n ETHIOPIC_NUMERIC: 19,\r\n GEORGIAN: 20,\r\n GUJARATI: 21,\r\n GURMUKHI: 22,\r\n HEBREW: 22,\r\n HIRAGANA: 23,\r\n HIRAGANA_IROHA: 24,\r\n JAPANESE_FORMAL: 25,\r\n JAPANESE_INFORMAL: 26,\r\n KANNADA: 27,\r\n KATAKANA: 28,\r\n KATAKANA_IROHA: 29,\r\n KHMER: 30,\r\n KOREAN_HANGUL_FORMAL: 31,\r\n KOREAN_HANJA_FORMAL: 32,\r\n KOREAN_HANJA_INFORMAL: 33,\r\n LAO: 34,\r\n LOWER_ARMENIAN: 35,\r\n MALAYALAM: 36,\r\n MONGOLIAN: 37,\r\n MYANMAR: 38,\r\n ORIYA: 39,\r\n PERSIAN: 40,\r\n SIMP_CHINESE_FORMAL: 41,\r\n SIMP_CHINESE_INFORMAL: 42,\r\n TAMIL: 43,\r\n TELUGU: 44,\r\n THAI: 45,\r\n TIBETAN: 46,\r\n TRAD_CHINESE_FORMAL: 47,\r\n TRAD_CHINESE_INFORMAL: 48,\r\n UPPER_ARMENIAN: 49,\r\n DISCLOSURE_OPEN: 50,\r\n DISCLOSURE_CLOSED: 51\r\n};\r\n\r\nvar parseListStyleType = exports.parseListStyleType = function parseListStyleType(type) {\r\n switch (type) {\r\n case 'disc':\r\n return LIST_STYLE_TYPE.DISC;\r\n case 'circle':\r\n return LIST_STYLE_TYPE.CIRCLE;\r\n case 'square':\r\n return LIST_STYLE_TYPE.SQUARE;\r\n case 'decimal':\r\n return LIST_STYLE_TYPE.DECIMAL;\r\n case 'cjk-decimal':\r\n return LIST_STYLE_TYPE.CJK_DECIMAL;\r\n case 'decimal-leading-zero':\r\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\r\n case 'lower-roman':\r\n return LIST_STYLE_TYPE.LOWER_ROMAN;\r\n case 'upper-roman':\r\n return LIST_STYLE_TYPE.UPPER_ROMAN;\r\n case 'lower-greek':\r\n return LIST_STYLE_TYPE.LOWER_GREEK;\r\n case 'lower-alpha':\r\n return LIST_STYLE_TYPE.LOWER_ALPHA;\r\n case 'upper-alpha':\r\n return LIST_STYLE_TYPE.UPPER_ALPHA;\r\n case 'arabic-indic':\r\n return LIST_STYLE_TYPE.ARABIC_INDIC;\r\n case 'armenian':\r\n return LIST_STYLE_TYPE.ARMENIAN;\r\n case 'bengali':\r\n return LIST_STYLE_TYPE.BENGALI;\r\n case 'cambodian':\r\n return LIST_STYLE_TYPE.CAMBODIAN;\r\n case 'cjk-earthly-branch':\r\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\r\n case 'cjk-heavenly-stem':\r\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\r\n case 'cjk-ideographic':\r\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\r\n case 'devanagari':\r\n return LIST_STYLE_TYPE.DEVANAGARI;\r\n case 'ethiopic-numeric':\r\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\r\n case 'georgian':\r\n return LIST_STYLE_TYPE.GEORGIAN;\r\n case 'gujarati':\r\n return LIST_STYLE_TYPE.GUJARATI;\r\n case 'gurmukhi':\r\n return LIST_STYLE_TYPE.GURMUKHI;\r\n case 'hebrew':\r\n return LIST_STYLE_TYPE.HEBREW;\r\n case 'hiragana':\r\n return LIST_STYLE_TYPE.HIRAGANA;\r\n case 'hiragana-iroha':\r\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\r\n case 'japanese-formal':\r\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\r\n case 'japanese-informal':\r\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\r\n case 'kannada':\r\n return LIST_STYLE_TYPE.KANNADA;\r\n case 'katakana':\r\n return LIST_STYLE_TYPE.KATAKANA;\r\n case 'katakana-iroha':\r\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\r\n case 'khmer':\r\n return LIST_STYLE_TYPE.KHMER;\r\n case 'korean-hangul-formal':\r\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\r\n case 'korean-hanja-formal':\r\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\r\n case 'korean-hanja-informal':\r\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\r\n case 'lao':\r\n return LIST_STYLE_TYPE.LAO;\r\n case 'lower-armenian':\r\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\r\n case 'malayalam':\r\n return LIST_STYLE_TYPE.MALAYALAM;\r\n case 'mongolian':\r\n return LIST_STYLE_TYPE.MONGOLIAN;\r\n case 'myanmar':\r\n return LIST_STYLE_TYPE.MYANMAR;\r\n case 'oriya':\r\n return LIST_STYLE_TYPE.ORIYA;\r\n case 'persian':\r\n return LIST_STYLE_TYPE.PERSIAN;\r\n case 'simp-chinese-formal':\r\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\r\n case 'simp-chinese-informal':\r\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\r\n case 'tamil':\r\n return LIST_STYLE_TYPE.TAMIL;\r\n case 'telugu':\r\n return LIST_STYLE_TYPE.TELUGU;\r\n case 'thai':\r\n return LIST_STYLE_TYPE.THAI;\r\n case 'tibetan':\r\n return LIST_STYLE_TYPE.TIBETAN;\r\n case 'trad-chinese-formal':\r\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\r\n case 'trad-chinese-informal':\r\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\r\n case 'upper-armenian':\r\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\r\n case 'disclosure-open':\r\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\r\n case 'disclosure-closed':\r\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\r\n case 'none':\r\n default:\r\n return LIST_STYLE_TYPE.NONE;\r\n }\r\n};\r\n\r\nvar parseListStyle = exports.parseListStyle = function parseListStyle(style) {\r\n var listStyleImage = (0, _background.parseBackgroundImage)(style.getPropertyValue('list-style-image'));\r\n return {\r\n listStyleType: parseListStyleType(style.getPropertyValue('list-style-type')),\r\n listStyleImage: listStyleImage.length ? listStyleImage[0] : null,\r\n listStylePosition: parseListStylePosition(style.getPropertyValue('list-style-position'))\r\n };\r\n};\r\n\r\nvar parseListStylePosition = function parseListStylePosition(position) {\r\n switch (position) {\r\n case 'inside':\r\n return LIST_STYLE_POSITION.INSIDE;\r\n case 'outside':\r\n default:\r\n return LIST_STYLE_POSITION.OUTSIDE;\r\n }\r\n};\r\n\r\n/***/ }),\r\n/* 9 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _textTransform = __webpack_require__(20);\r\n\r\nvar _TextBounds = __webpack_require__(22);\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar TextContainer = function () {\r\n function TextContainer(text, parent, bounds) {\r\n _classCallCheck(this, TextContainer);\r\n\r\n this.text = text;\r\n this.parent = parent;\r\n this.bounds = bounds;\r\n }\r\n\r\n _createClass(TextContainer, null, [{\r\n key: 'fromTextNode',\r\n value: function fromTextNode(node, parent) {\r\n var text = transform(node.data, parent.style.textTransform);\r\n return new TextContainer(text, parent, (0, _TextBounds.parseTextBounds)(text, parent, node));\r\n }\r\n }]);\r\n\r\n return TextContainer;\r\n}();\r\n\r\nexports.default = TextContainer;\r\n\r\n\r\nvar CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\r\n\r\nvar transform = function transform(text, _transform) {\r\n switch (_transform) {\r\n case _textTransform.TEXT_TRANSFORM.LOWERCASE:\r\n return text.toLowerCase();\r\n case _textTransform.TEXT_TRANSFORM.CAPITALIZE:\r\n return text.replace(CAPITALIZE, capitalize);\r\n case _textTransform.TEXT_TRANSFORM.UPPERCASE:\r\n return text.toUpperCase();\r\n default:\r\n return text;\r\n }\r\n};\r\n\r\nfunction capitalize(m, p1, p2) {\r\n if (m.length > 0) {\r\n return p1 + p2.toUpperCase();\r\n }\r\n\r\n return m;\r\n}\r\n\r\n/***/ }),\r\n/* 10 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _ForeignObjectRenderer = __webpack_require__(23);\r\n\r\nvar testRangeBounds = function testRangeBounds(document) {\r\n var TEST_HEIGHT = 123;\r\n\r\n if (document.createRange) {\r\n var range = document.createRange();\r\n if (range.getBoundingClientRect) {\r\n var testElement = document.createElement('boundtest');\r\n testElement.style.height = TEST_HEIGHT + 'px';\r\n testElement.style.display = 'block';\r\n document.body.appendChild(testElement);\r\n\r\n range.selectNode(testElement);\r\n var rangeBounds = range.getBoundingClientRect();\r\n var rangeHeight = Math.round(rangeBounds.height);\r\n document.body.removeChild(testElement);\r\n if (rangeHeight === TEST_HEIGHT) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\n// iOS 10.3 taints canvas with base64 images unless crossOrigin = 'anonymous'\r\nvar testBase64 = function testBase64(document, src) {\r\n var img = new Image();\r\n var canvas = document.createElement('canvas');\r\n var ctx = canvas.getContext('2d');\r\n\r\n return new Promise(function (resolve) {\r\n // Single pixel base64 image renders fine on iOS 10.3???\r\n img.src = src;\r\n\r\n var onload = function onload() {\r\n try {\r\n ctx.drawImage(img, 0, 0);\r\n canvas.toDataURL();\r\n } catch (e) {\r\n return resolve(false);\r\n }\r\n\r\n return resolve(true);\r\n };\r\n\r\n img.onload = onload;\r\n img.onerror = function () {\r\n return resolve(false);\r\n };\r\n\r\n if (img.complete === true) {\r\n setTimeout(function () {\r\n onload();\r\n }, 500);\r\n }\r\n });\r\n};\r\n\r\nvar testCORS = function testCORS() {\r\n return typeof new Image().crossOrigin !== 'undefined';\r\n};\r\n\r\nvar testResponseType = function testResponseType() {\r\n return typeof new XMLHttpRequest().responseType === 'string';\r\n};\r\n\r\nvar testSVG = function testSVG(document) {\r\n var img = new Image();\r\n var canvas = document.createElement('canvas');\r\n var ctx = canvas.getContext('2d');\r\n img.src = 'data:image/svg+xml,<svg xmlns=\\'http://www.w3.org/2000/svg\\'></svg>';\r\n\r\n try {\r\n ctx.drawImage(img, 0, 0);\r\n canvas.toDataURL();\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nvar isGreenPixel = function isGreenPixel(data) {\r\n return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\r\n};\r\n\r\nvar testForeignObject = function testForeignObject(document) {\r\n var canvas = document.createElement('canvas');\r\n var size = 100;\r\n canvas.width = size;\r\n canvas.height = size;\r\n var ctx = canvas.getContext('2d');\r\n ctx.fillStyle = 'rgb(0, 255, 0)';\r\n ctx.fillRect(0, 0, size, size);\r\n\r\n var img = new Image();\r\n var greenImageSrc = canvas.toDataURL();\r\n img.src = greenImageSrc;\r\n var svg = (0, _ForeignObjectRenderer.createForeignObjectSVG)(size, size, 0, 0, img);\r\n ctx.fillStyle = 'red';\r\n ctx.fillRect(0, 0, size, size);\r\n\r\n return (0, _ForeignObjectRenderer.loadSerializedSVG)(svg).then(function (img) {\r\n ctx.drawImage(img, 0, 0);\r\n var data = ctx.getImageData(0, 0, size, size).data;\r\n ctx.fillStyle = 'red';\r\n ctx.fillRect(0, 0, size, size);\r\n\r\n var node = document.createElement('div');\r\n node.style.backgroundImage = 'url(' + greenImageSrc + ')';\r\n node.style.height = size + 'px';\r\n // Firefox 55 does not render inline <img /> tags\r\n return isGreenPixel(data) ? (0, _ForeignObjectRenderer.loadSerializedSVG)((0, _ForeignObjectRenderer.createForeignObjectSVG)(size, size, 0, 0, node)) : Promise.reject(false);\r\n }).then(function (img) {\r\n ctx.drawImage(img, 0, 0);\r\n // Edge does not render background-images\r\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\r\n }).catch(function (e) {\r\n return false;\r\n });\r\n};\r\n\r\nvar FEATURES = {\r\n // $FlowFixMe - get/set properties not yet supported\r\n get SUPPORT_RANGE_BOUNDS() {\r\n 'use strict';\r\n\r\n var value = testRangeBounds(document);\r\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value });\r\n return value;\r\n },\r\n // $FlowFixMe - get/set properties not yet supported\r\n get SUPPORT_SVG_DRAWING() {\r\n 'use strict';\r\n\r\n var value = testSVG(document);\r\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value });\r\n return value;\r\n },\r\n // $FlowFixMe - get/set properties not yet supported\r\n get SUPPORT_BASE64_DRAWING() {\r\n 'use strict';\r\n\r\n return function (src) {\r\n var _value = testBase64(document, src);\r\n Object.defineProperty(FEATURES, 'SUPPORT_BASE64_DRAWING', { value: function value() {\r\n return _value;\r\n } });\r\n return _value;\r\n };\r\n },\r\n // $FlowFixMe - get/set properties not yet supported\r\n get SUPPORT_FOREIGNOBJECT_DRAWING() {\r\n 'use strict';\r\n\r\n var value = typeof Array.from === 'function' && typeof window.fetch === 'function' ? testForeignObject(document) : Promise.resolve(false);\r\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value });\r\n return value;\r\n },\r\n // $FlowFixMe - get/set properties not yet supported\r\n get SUPPORT_CORS_IMAGES() {\r\n 'use strict';\r\n\r\n var value = testCORS();\r\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value });\r\n return value;\r\n },\r\n // $FlowFixMe - get/set properties not yet supported\r\n get SUPPORT_RESPONSE_TYPE() {\r\n 'use strict';\r\n\r\n var value = testResponseType();\r\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value });\r\n return value;\r\n },\r\n // $FlowFixMe - get/set properties not yet supported\r\n get SUPPORT_CORS_XHR() {\r\n 'use strict';\r\n\r\n var value = 'withCredentials' in new XMLHttpRequest();\r\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value });\r\n return value;\r\n }\r\n};\r\n\r\nexports.default = FEATURES;\r\n\r\n/***/ }),\r\n/* 11 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.parseTextDecoration = exports.TEXT_DECORATION_LINE = exports.TEXT_DECORATION = exports.TEXT_DECORATION_STYLE = undefined;\r\n\r\nvar _Color = __webpack_require__(0);\r\n\r\nvar _Color2 = _interopRequireDefault(_Color);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nvar TEXT_DECORATION_STYLE = exports.TEXT_DECORATION_STYLE = {\r\n SOLID: 0,\r\n DOUBLE: 1,\r\n DOTTED: 2,\r\n DASHED: 3,\r\n WAVY: 4\r\n};\r\n\r\nvar TEXT_DECORATION = exports.TEXT_DECORATION = {\r\n NONE: null\r\n};\r\n\r\nvar TEXT_DECORATION_LINE = exports.TEXT_DECORATION_LINE = {\r\n UNDERLINE: 1,\r\n OVERLINE: 2,\r\n LINE_THROUGH: 3,\r\n BLINK: 4\r\n};\r\n\r\nvar parseLine = function parseLine(line) {\r\n switch (line) {\r\n case 'underline':\r\n return TEXT_DECORATION_LINE.UNDERLINE;\r\n case 'overline':\r\n return TEXT_DECORATION_LINE.OVERLINE;\r\n case 'line-through':\r\n return TEXT_DECORATION_LINE.LINE_THROUGH;\r\n }\r\n return TEXT_DECORATION_LINE.BLINK;\r\n};\r\n\r\nvar parseTextDecorationLine = function parseTextDecorationLine(line) {\r\n if (line === 'none') {\r\n return null;\r\n }\r\n\r\n return line.split(' ').map(parseLine);\r\n};\r\n\r\nvar parseTextDecorationStyle = function parseTextDecorationStyle(style) {\r\n switch (style) {\r\n case 'double':\r\n return TEXT_DECORATION_STYLE.DOUBLE;\r\n case 'dotted':\r\n return TEXT_DECORATION_STYLE.DOTTED;\r\n case 'dashed':\r\n return TEXT_DECORATION_STYLE.DASHED;\r\n case 'wavy':\r\n return TEXT_DECORATION_STYLE.WAVY;\r\n }\r\n return TEXT_DECORATION_STYLE.SOLID;\r\n};\r\n\r\nvar parseTextDecoration = exports.parseTextDecoration = function parseTextDecoration(style) {\r\n var textDecorationLine = parseTextDecorationLine(style.textDecorationLine ? style.textDecorationLine : style.textDecoration);\r\n if (textDecorationLine === null) {\r\n return TEXT_DECORATION.NONE;\r\n }\r\n\r\n var textDecorationColor = style.textDecorationColor ? new _Color2.default(style.textDecorationColor) : null;\r\n var textDecorationStyle = parseTextDecorationStyle(style.textDecorationStyle);\r\n\r\n return {\r\n textDecorationLine: textDecorationLine,\r\n textDecorationColor: textDecorationColor,\r\n textDecorationStyle: textDecorationStyle\r\n };\r\n};\r\n\r\n/***/ }),\r\n/* 12 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.parseBorder = exports.BORDER_SIDES = exports.BORDER_STYLE = undefined;\r\n\r\nvar _Color = __webpack_require__(0);\r\n\r\nvar _Color2 = _interopRequireDefault(_Color);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nvar BORDER_STYLE = exports.BORDER_STYLE = {\r\n NONE: 0,\r\n SOLID: 1\r\n};\r\n\r\nvar BORDER_SIDES = exports.BORDER_SIDES = {\r\n TOP: 0,\r\n RIGHT: 1,\r\n BOTTOM: 2,\r\n LEFT: 3\r\n};\r\n\r\nvar SIDES = Object.keys(BORDER_SIDES).map(function (s) {\r\n return s.toLowerCase();\r\n});\r\n\r\nvar parseBorderStyle = function parseBorderStyle(style) {\r\n switch (style) {\r\n case 'none':\r\n return BORDER_STYLE.NONE;\r\n }\r\n return BORDER_STYLE.SOLID;\r\n};\r\n\r\nvar parseBorder = exports.parseBorder = function parseBorder(style) {\r\n return SIDES.map(function (side) {\r\n var borderColor = new _Color2.default(style.getPropertyValue('border-' + side + '-color'));\r\n var borderStyle = parseBorderStyle(style.getPropertyValue('border-' + side + '-style'));\r\n var borderWidth = parseFloat(style.getPropertyValue('border-' + side + '-width'));\r\n return {\r\n borderColor: borderColor,\r\n borderStyle: borderStyle,\r\n borderWidth: isNaN(borderWidth) ? 0 : borderWidth\r\n };\r\n });\r\n};\r\n\r\n/***/ }),\r\n/* 13 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nvar toCodePoints = exports.toCodePoints = function toCodePoints(str) {\r\n var codePoints = [];\r\n var i = 0;\r\n var length = str.length;\r\n while (i < length) {\r\n var value = str.charCodeAt(i++);\r\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\r\n var extra = str.charCodeAt(i++);\r\n if ((extra & 0xfc00) === 0xdc00) {\r\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\r\n } else {\r\n codePoints.push(value);\r\n i--;\r\n }\r\n } else {\r\n codePoints.push(value);\r\n }\r\n }\r\n return codePoints;\r\n};\r\n\r\nvar fromCodePoint = exports.fromCodePoint = function fromCodePoint() {\r\n if (String.fromCodePoint) {\r\n return String.fromCodePoint.apply(String, arguments);\r\n }\r\n\r\n var length = arguments.length;\r\n if (!length) {\r\n return '';\r\n }\r\n\r\n var codeUnits = [];\r\n\r\n var index = -1;\r\n var result = '';\r\n while (++index < length) {\r\n var codePoint = arguments.length <= index ? undefined : arguments[index];\r\n if (codePoint <= 0xffff) {\r\n codeUnits.push(codePoint);\r\n } else {\r\n codePoint -= 0x10000;\r\n codeUnits.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00);\r\n }\r\n if (index + 1 === length || codeUnits.length > 0x4000) {\r\n result += String.fromCharCode.apply(String, codeUnits);\r\n codeUnits.length = 0;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\r\n\r\n// Use a lookup table to find the index.\r\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\r\nfor (var i = 0; i < chars.length; i++) {\r\n lookup[chars.charCodeAt(i)] = i;\r\n}\r\n\r\nvar decode = exports.decode = function decode(base64) {\r\n var bufferLength = base64.length * 0.75,\r\n len = base64.length,\r\n i = void 0,\r\n p = 0,\r\n encoded1 = void 0,\r\n encoded2 = void 0,\r\n encoded3 = void 0,\r\n encoded4 = void 0;\r\n\r\n if (base64[base64.length - 1] === '=') {\r\n bufferLength--;\r\n if (base64[base64.length - 2] === '=') {\r\n bufferLength--;\r\n }\r\n }\r\n\r\n var buffer = typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined' && typeof Uint8Array.prototype.slice !== 'undefined' ? new ArrayBuffer(bufferLength) : new Array(bufferLength);\r\n var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\r\n\r\n for (i = 0; i < len; i += 4) {\r\n encoded1 = lookup[base64.charCodeAt(i)];\r\n encoded2 = lookup[base64.charCodeAt(i + 1)];\r\n encoded3 = lookup[base64.charCodeAt(i + 2)];\r\n encoded4 = lookup[base64.charCodeAt(i + 3)];\r\n\r\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\r\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\r\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\r\n }\r\n\r\n return buffer;\r\n};\r\n\r\nvar polyUint16Array = exports.polyUint16Array = function polyUint16Array(buffer) {\r\n var length = buffer.length;\r\n var bytes = [];\r\n for (var _i = 0; _i < length; _i += 2) {\r\n bytes.push(buffer[_i + 1] << 8 | buffer[_i]);\r\n }\r\n return bytes;\r\n};\r\n\r\nvar polyUint32Array = exports.polyUint32Array = function polyUint32Array(buffer) {\r\n var length = buffer.length;\r\n var bytes = [];\r\n for (var _i2 = 0; _i2 < length; _i2 += 4) {\r\n bytes.push(buffer[_i2 + 3] << 24 | buffer[_i2 + 2] << 16 | buffer[_i2 + 1] << 8 | buffer[_i2]);\r\n }\r\n return bytes;\r\n};\r\n\r\n/***/ }),\r\n/* 14 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.createCounterText = exports.inlineListItemElement = exports.getListOwner = undefined;\r\n\r\nvar _Util = __webpack_require__(4);\r\n\r\nvar _NodeContainer = __webpack_require__(3);\r\n\r\nvar _NodeContainer2 = _interopRequireDefault(_NodeContainer);\r\n\r\nvar _TextContainer = __webpack_require__(9);\r\n\r\nvar _TextContainer2 = _interopRequireDefault(_TextContainer);\r\n\r\nvar _listStyle = __webpack_require__(8);\r\n\r\nvar _Unicode = __webpack_require__(24);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\n// Margin between the enumeration and the list item content\r\nvar MARGIN_RIGHT = 7;\r\n\r\nvar ancestorTypes = ['OL', 'UL', 'MENU'];\r\n\r\nvar getListOwner = exports.getListOwner = function getListOwner(container) {\r\n var parent = container.parent;\r\n if (!parent) {\r\n return null;\r\n }\r\n\r\n do {\r\n var isAncestor = ancestorTypes.indexOf(parent.tagName) !== -1;\r\n if (isAncestor) {\r\n return parent;\r\n }\r\n parent = parent.parent;\r\n } while (parent);\r\n\r\n return container.parent;\r\n};\r\n\r\nvar inlineListItemElement = exports.inlineListItemElement = function inlineListItemElement(node, container, resourceLoader) {\r\n var listStyle = container.style.listStyle;\r\n\r\n if (!listStyle) {\r\n return;\r\n }\r\n\r\n var style = node.ownerDocument.defaultView.getComputedStyle(node, null);\r\n var wrapper = node.ownerDocument.createElement('html2canvaswrapper');\r\n (0, _Util.copyCSSStyles)(style, wrapper);\r\n\r\n wrapper.style.position = 'absolute';\r\n wrapper.style.bottom = 'auto';\r\n wrapper.style.display = 'block';\r\n wrapper.style.letterSpacing = 'normal';\r\n\r\n switch (listStyle.listStylePosition) {\r\n case _listStyle.LIST_STYLE_POSITION.OUTSIDE:\r\n wrapper.style.left = 'auto';\r\n wrapper.style.right = node.ownerDocument.defaultView.innerWidth - container.bounds.left - container.style.margin[1].getAbsoluteValue(container.bounds.width) + MARGIN_RIGHT + 'px';\r\n wrapper.style.textAlign = 'right';\r\n break;\r\n case _listStyle.LIST_STYLE_POSITION.INSIDE:\r\n wrapper.style.left = container.bounds.left - container.style.margin[3].getAbsoluteValue(container.bounds.width) + 'px';\r\n wrapper.style.right = 'auto';\r\n wrapper.style.textAlign = 'left';\r\n break;\r\n }\r\n\r\n var text = void 0;\r\n var MARGIN_TOP = container.style.margin[0].getAbsoluteValue(container.bounds.width);\r\n var styleImage = listStyle.listStyleImage;\r\n if (styleImage) {\r\n if (styleImage.method === 'url') {\r\n var image = node.ownerDocument.createElement('img');\r\n image.src = styleImage.args[0];\r\n wrapper.style.top = container.bounds.top - MARGIN_TOP + 'px';\r\n wrapper.style.width = 'auto';\r\n wrapper.style.height = 'auto';\r\n wrapper.appendChild(image);\r\n } else {\r\n var size = parseFloat(container.style.font.fontSize) * 0.5;\r\n wrapper.style.top = container.bounds.top - MARGIN_TOP + container.bounds.height - 1.5 * size + 'px';\r\n wrapper.style.width = size + 'px';\r\n wrapper.style.height = size + 'px';\r\n wrapper.style.backgroundImage = style.listStyleImage;\r\n }\r\n } else if (typeof container.listIndex === 'number') {\r\n text = node.ownerDocument.createTextNode(createCounterText(container.listIndex, listStyle.listStyleType, true));\r\n wrapper.appendChild(text);\r\n wrapper.style.top = container.bounds.top - MARGIN_TOP + 'px';\r\n }\r\n\r\n // $FlowFixMe\r\n var body = node.ownerDocument.body;\r\n body.appendChild(wrapper);\r\n\r\n if (text) {\r\n container.childNodes.push(_TextContainer2.default.fromTextNode(text, container));\r\n body.removeChild(wrapper);\r\n } else {\r\n // $FlowFixMe\r\n container.childNodes.push(new _NodeContainer2.default(wrapper, container, resourceLoader, 0));\r\n }\r\n};\r\n\r\nvar ROMAN_UPPER = {\r\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\r\n values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\r\n};\r\n\r\nvar ARMENIAN = {\r\n integers: [9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],\r\n values: ['Ք', 'Փ', 'Ւ', 'Ց', 'Ր', 'Տ', 'Վ', 'Ս', 'Ռ', 'Ջ', 'Պ', 'Չ', 'Ո', 'Շ', 'Ն', 'Յ', 'Մ', 'Ճ', 'Ղ', 'Ձ', 'Հ', 'Կ', 'Ծ', 'Խ', 'Լ', 'Ի', 'Ժ', 'Թ', 'Ը', 'Է', 'Զ', 'Ե', 'Դ', 'Գ', 'Բ', 'Ա']\r\n};\r\n\r\nvar HEBREW = {\r\n integers: [10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],\r\n values: ['י׳', 'ט׳', 'ח׳', 'ז׳', 'ו׳', 'ה׳', 'ד׳', 'ג׳', 'ב׳', 'א׳', 'ת', 'ש', 'ר', 'ק', 'צ', 'פ', 'ע', 'ס', 'נ', 'מ', 'ל', 'כ', 'יט', 'יח', 'יז', 'טז', 'טו', 'י', 'ט', 'ח', 'ז', 'ו', 'ה', 'ד', 'ג', 'ב', 'א']\r\n};\r\n\r\nvar GEORGIAN = {\r\n integers: [10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],\r\n values: ['ჵ', 'ჰ', 'ჯ', 'ჴ', 'ხ', 'ჭ', 'წ', 'ძ', 'ც', 'ჩ', 'შ', 'ყ', 'ღ', 'ქ', 'ფ', 'ჳ', 'ტ', 'ს', 'რ', 'ჟ', 'პ', 'ო', 'ჲ', 'ნ', 'მ', 'ლ', 'კ', 'ი', 'თ', 'ჱ', 'ზ', 'ვ', 'ე', 'დ', 'გ', 'ბ', 'ა']\r\n};\r\n\r\nvar createAdditiveCounter = function createAdditiveCounter(value, min, max, symbols, fallback, suffix) {\r\n if (value < min || value > max) {\r\n return createCounterText(value, fallback, suffix.length > 0);\r\n }\r\n\r\n return symbols.integers.reduce(function (string, integer, index) {\r\n while (value >= integer) {\r\n value -= integer;\r\n string += symbols.values[index];\r\n }\r\n return string;\r\n }, '') + suffix;\r\n};\r\n\r\nvar createCounterStyleWithSymbolResolver = function createCounterStyleWithSymbolResolver(value, codePointRangeLength, isNumeric, resolver) {\r\n var string = '';\r\n\r\n do {\r\n if (!isNumeric) {\r\n value--;\r\n }\r\n string = resolver(value) + string;\r\n value /= codePointRangeLength;\r\n } while (value * codePointRangeLength >= codePointRangeLength);\r\n\r\n return string;\r\n};\r\n\r\nvar createCounterStyleFromRange = function createCounterStyleFromRange(value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {\r\n var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\r\n\r\n return (value < 0 ? '-' : '') + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {\r\n return (0, _Unicode.fromCodePoint)(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);\r\n }) + suffix);\r\n};\r\n\r\nvar createCounterStyleFromSymbols = function createCounterStyleFromSymbols(value, symbols) {\r\n var suffix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '. ';\r\n\r\n var codePointRangeLength = symbols.length;\r\n return createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) {\r\n return symbols[Math.floor(codePoint % codePointRangeLength)];\r\n }) + suffix;\r\n};\r\n\r\nvar CJK_ZEROS = 1 << 0;\r\nvar CJK_TEN_COEFFICIENTS = 1 << 1;\r\nvar CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\r\nvar CJK_HUNDRED_COEFFICIENTS = 1 << 3;\r\n\r\nvar createCJKCounter = function createCJKCounter(value, numbers, multipliers, negativeSign, suffix, flags) {\r\n if (value < -9999 || value > 9999) {\r\n return createCounterText(value, _listStyle.LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\r\n }\r\n var tmp = Math.abs(value);\r\n var string = suffix;\r\n\r\n if (tmp === 0) {\r\n return numbers[0] + string;\r\n }\r\n\r\n for (var digit = 0; tmp > 0 && digit <= 4; digit++) {\r\n var coefficient = tmp % 10;\r\n\r\n if (coefficient === 0 && (0, _Util.contains)(flags, CJK_ZEROS) && string !== '') {\r\n string = numbers[coefficient] + string;\r\n } else if (coefficient > 1 || coefficient === 1 && digit === 0 || coefficient === 1 && digit === 1 && (0, _Util.contains)(flags, CJK_TEN_COEFFICIENTS) || coefficient === 1 && digit === 1 && (0, _Util.contains)(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100 || coefficient === 1 && digit > 1 && (0, _Util.contains)(flags, CJK_HUNDRED_COEFFICIENTS)) {\r\n string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\r\n } else if (coefficient === 1 && digit > 0) {\r\n string = multipliers[digit - 1] + string;\r\n }\r\n tmp = Math.floor(tmp / 10);\r\n }\r\n\r\n return (value < 0 ? negativeSign : '') + string;\r\n};\r\n\r\nvar CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\r\nvar CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\r\nvar JAPANESE_NEGATIVE = 'マイナス';\r\nvar KOREAN_NEGATIVE = '마이너스 ';\r\n\r\nvar createCounterText = exports.createCounterText = function createCounterText(value, type, appendSuffix) {\r\n var defaultSuffix = appendSuffix ? '. ' : '';\r\n var cjkSuffix = appendSuffix ? '、' : '';\r\n var koreanSuffix = appendSuffix ? ', ' : '';\r\n switch (type) {\r\n case _listStyle.LIST_STYLE_TYPE.DISC:\r\n return '•';\r\n case _listStyle.LIST_STYLE_TYPE.CIRCLE:\r\n return '◦';\r\n case _listStyle.LIST_STYLE_TYPE.SQUARE:\r\n return '◾';\r\n case _listStyle.LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:\r\n var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\r\n return string.length < 4 ? '0' + string : string;\r\n case _listStyle.LIST_STYLE_TYPE.CJK_DECIMAL:\r\n return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.LOWER_ROMAN:\r\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, _listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();\r\n case _listStyle.LIST_STYLE_TYPE.UPPER_ROMAN:\r\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, _listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.LOWER_GREEK:\r\n return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.LOWER_ALPHA:\r\n return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.UPPER_ALPHA:\r\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.ARABIC_INDIC:\r\n return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.ARMENIAN:\r\n case _listStyle.LIST_STYLE_TYPE.UPPER_ARMENIAN:\r\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, _listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.LOWER_ARMENIAN:\r\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, _listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();\r\n case _listStyle.LIST_STYLE_TYPE.BENGALI:\r\n return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.CAMBODIAN:\r\n case _listStyle.LIST_STYLE_TYPE.KHMER:\r\n return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:\r\n return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:\r\n return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:\r\n case _listStyle.LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:\r\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\r\n case _listStyle.LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\r\n return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\r\n case _listStyle.LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\r\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\r\n case _listStyle.LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\r\n return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\r\n case _listStyle.LIST_STYLE_TYPE.JAPANESE_INFORMAL:\r\n return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\r\n case _listStyle.LIST_STYLE_TYPE.JAPANESE_FORMAL:\r\n return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\r\n case _listStyle.LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\r\n return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\r\n case _listStyle.LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:\r\n return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\r\n case _listStyle.LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:\r\n return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\r\n case _listStyle.LIST_STYLE_TYPE.DEVANAGARI:\r\n return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.GEORGIAN:\r\n return createAdditiveCounter(value, 1, 19999, GEORGIAN, _listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.GUJARATI:\r\n return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.GURMUKHI:\r\n return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.HEBREW:\r\n return createAdditiveCounter(value, 1, 10999, HEBREW, _listStyle.LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.HIRAGANA:\r\n return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');\r\n case _listStyle.LIST_STYLE_TYPE.HIRAGANA_IROHA:\r\n return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');\r\n case _listStyle.LIST_STYLE_TYPE.KANNADA:\r\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.KATAKANA:\r\n return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.KATAKANA_IROHA:\r\n return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.LAO:\r\n return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.MONGOLIAN:\r\n return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.MYANMAR:\r\n return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.ORIYA:\r\n return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.PERSIAN:\r\n return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.TAMIL:\r\n return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.TELUGU:\r\n return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.THAI:\r\n return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.TIBETAN:\r\n return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\r\n case _listStyle.LIST_STYLE_TYPE.DECIMAL:\r\n default:\r\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\r\n }\r\n};\r\n\r\n/***/ }),\r\n/* 15 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _Path = __webpack_require__(6);\r\n\r\nvar _textDecoration = __webpack_require__(11);\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar addColorStops = function addColorStops(gradient, canvasGradient) {\r\n var maxStop = Math.max.apply(null, gradient.colorStops.map(function (colorStop) {\r\n return colorStop.stop;\r\n }));\r\n var f = 1 / Math.max(1, maxStop);\r\n gradient.colorStops.forEach(function (colorStop) {\r\n canvasGradient.addColorStop(f * colorStop.stop, colorStop.color.toString());\r\n });\r\n};\r\n\r\nvar CanvasRenderer = function () {\r\n function CanvasRenderer(canvas) {\r\n _classCallCheck(this, CanvasRenderer);\r\n\r\n this.canvas = canvas ? canvas : document.createElement('canvas');\r\n }\r\n\r\n _createClass(CanvasRenderer, [{\r\n key: 'render',\r\n value: function render(options) {\r\n this.ctx = this.canvas.getContext('2d');\r\n this.options = options;\r\n this.canvas.width = Math.floor(options.width * options.scale);\r\n this.canvas.height = Math.floor(options.height * options.scale);\r\n this.canvas.style.width = options.width + 'px';\r\n this.canvas.style.height = options.height + 'px';\r\n\r\n this.ctx.scale(this.options.scale, this.options.scale);\r\n this.ctx.translate(-options.x, -options.y);\r\n this.ctx.textBaseline = 'bottom';\r\n options.logger.log('Canvas renderer initialized (' + options.width + 'x' + options.height + ' at ' + options.x + ',' + options.y + ') with scale ' + this.options.scale);\r\n }\r\n }, {\r\n key: 'clip',\r\n value: function clip(clipPaths, callback) {\r\n var _this = this;\r\n\r\n if (clipPaths.length) {\r\n this.ctx.save();\r\n clipPaths.forEach(function (path) {\r\n _this.path(path);\r\n _this.ctx.clip();\r\n });\r\n }\r\n\r\n callback();\r\n\r\n if (clipPaths.length) {\r\n this.ctx.restore();\r\n }\r\n }\r\n }, {\r\n key: 'drawImage',\r\n value: function drawImage(image, source, destination) {\r\n this.ctx.drawImage(image, source.left, source.top, source.width, source.height, destination.left, destination.top, destination.width, destination.height);\r\n }\r\n }, {\r\n key: 'drawShape',\r\n value: function drawShape(path, color) {\r\n this.path(path);\r\n this.ctx.fillStyle = color.toString();\r\n this.ctx.fill();\r\n }\r\n }, {\r\n key: 'fill',\r\n value: function fill(color) {\r\n this.ctx.fillStyle = color.toString();\r\n this.ctx.fill();\r\n }\r\n }, {\r\n key: 'getTarget',\r\n value: function getTarget() {\r\n return Promise.resolve(this.canvas);\r\n }\r\n }, {\r\n key: 'path',\r\n value: function path(_path) {\r\n var _this2 = this;\r\n\r\n this.ctx.beginPath();\r\n if (Array.isArray(_path)) {\r\n _path.forEach(function (point, index) {\r\n var start = point.type === _Path.PATH.VECTOR ? point : point.start;\r\n if (index === 0) {\r\n _this2.ctx.moveTo(start.x, start.y);\r\n } else {\r\n _this2.ctx.lineTo(start.x, start.y);\r\n }\r\n\r\n if (point.type === _Path.PATH.BEZIER_CURVE) {\r\n _this2.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);\r\n }\r\n });\r\n } else {\r\n this.ctx.arc(_path.x + _path.radius, _path.y + _path.radius, _path.radius, 0, Math.PI * 2, true);\r\n }\r\n\r\n this.ctx.closePath();\r\n }\r\n }, {\r\n key: 'rectangle',\r\n value: function rectangle(x, y, width, height, color) {\r\n this.ctx.fillStyle = color.toString();\r\n this.ctx.fillRect(x, y, width, height);\r\n }\r\n }, {\r\n key: 'renderLinearGradient',\r\n value: function renderLinearGradient(bounds, gradient) {\r\n var linearGradient = this.ctx.createLinearGradient(bounds.left + gradient.direction.x1, bounds.top + gradient.direction.y1, bounds.left + gradient.direction.x0, bounds.top + gradient.direction.y0);\r\n\r\n addColorStops(gradient, linearGradient);\r\n this.ctx.fillStyle = linearGradient;\r\n this.ctx.fillRect(bounds.left, bounds.top, bounds.width, bounds.height);\r\n }\r\n }, {\r\n key: 'renderRadialGradient',\r\n value: function renderRadialGradient(bounds, gradient) {\r\n var _this3 = this;\r\n\r\n var x = bounds.left + gradient.center.x;\r\n var y = bounds.top + gradient.center.y;\r\n\r\n var radialGradient = this.ctx.createRadialGradient(x, y, 0, x, y, gradient.radius.x);\r\n if (!radialGradient) {\r\n return;\r\n }\r\n\r\n addColorStops(gradient, radialGradient);\r\n this.ctx.fillStyle = radialGradient;\r\n\r\n if (gradient.radius.x !== gradient.radius.y) {\r\n // transforms for elliptical radial gradient\r\n var midX = bounds.left + 0.5 * bounds.width;\r\n var midY = bounds.top + 0.5 * bounds.height;\r\n var f = gradient.radius.y / gradient.radius.x;\r\n var invF = 1 / f;\r\n\r\n this.transform(midX, midY, [1, 0, 0, f, 0, 0], function () {\r\n return _this3.ctx.fillRect(bounds.left, invF * (bounds.top - midY) + midY, bounds.width, bounds.height * invF);\r\n });\r\n } else {\r\n this.ctx.fillRect(bounds.left, bounds.top, bounds.width, bounds.height);\r\n }\r\n }\r\n }, {\r\n key: 'renderRepeat',\r\n value: function renderRepeat(path, image, imageSize, offsetX, offsetY) {\r\n this.path(path);\r\n this.ctx.fillStyle = this.ctx.createPattern(this.resizeImage(image, imageSize), 'repeat');\r\n this.ctx.translate(offsetX, offsetY);\r\n this.ctx.fill();\r\n this.ctx.translate(-offsetX, -offsetY);\r\n }\r\n }, {\r\n key: 'renderTextNode',\r\n value: function renderTextNode(textBounds, color, font, textDecoration, textShadows) {\r\n var _this4 = this;\r\n\r\n this.ctx.font = [font.fontStyle, font.fontVariant, font.fontWeight, font.fontSize, font.fontFamily].join(' ');\r\n\r\n textBounds.forEach(function (text) {\r\n _this4.ctx.fillStyle = color.toString();\r\n if (textShadows && text.text.trim().length) {\r\n textShadows.slice(0).reverse().forEach(function (textShadow) {\r\n _this4.ctx.shadowColor = textShadow.color.toString();\r\n _this4.ctx.shadowOffsetX = textShadow.offsetX * _this4.options.scale;\r\n _this4.ctx.shadowOffsetY = textShadow.offsetY * _this4.options.scale;\r\n _this4.ctx.shadowBlur = textShadow.blur;\r\n\r\n _this4.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);\r\n });\r\n } else {\r\n _this4.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);\r\n }\r\n\r\n if (textDecoration !== null) {\r\n var textDecorationColor = textDecoration.textDecorationColor || color;\r\n textDecoration.textDecorationLine.forEach(function (textDecorationLine) {\r\n switch (textDecorationLine) {\r\n case _textDecoration.TEXT_DECORATION_LINE.UNDERLINE:\r\n // Draws a line at the baseline of the font\r\n // TODO As some browsers display the line as more than 1px if the font-size is big,\r\n // need to take that into account both in position and size\r\n var _options$fontMetrics$ = _this4.options.fontMetrics.getMetrics(font),\r\n baseline = _options$fontMetrics$.baseline;\r\n\r\n _this4.rectangle(text.bounds.left, Math.round(text.bounds.top + baseline), text.bounds.width, 1, textDecorationColor);\r\n break;\r\n case _textDecoration.TEXT_DECORATION_LINE.OVERLINE:\r\n _this4.rectangle(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1, textDecorationColor);\r\n break;\r\n case _textDecoration.TEXT_DECORATION_LINE.LINE_THROUGH:\r\n // TODO try and find exact position for line-through\r\n var _options$fontMetrics$2 = _this4.options.fontMetrics.getMetrics(font),\r\n middle = _options$fontMetrics$2.middle;\r\n\r\n _this4.rectangle(text.bounds.left, Math.ceil(text.bounds.top + middle), text.bounds.width, 1, textDecorationColor);\r\n break;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }, {\r\n key: 'resizeImage',\r\n value: function resizeImage(image, size) {\r\n if (image.width === size.width && image.height === size.height) {\r\n return image;\r\n }\r\n\r\n var canvas = this.canvas.ownerDocument.createElement('canvas');\r\n canvas.width = size.width;\r\n canvas.height = size.height;\r\n var ctx = canvas.getContext('2d');\r\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, size.width, size.height);\r\n return canvas;\r\n }\r\n }, {\r\n key: 'setOpacity',\r\n value: function setOpacity(opacity) {\r\n this.ctx.globalAlpha = opacity;\r\n }\r\n }, {\r\n key: 'transform',\r\n value: function transform(offsetX, offsetY, matrix, callback) {\r\n this.ctx.save();\r\n this.ctx.translate(offsetX, offsetY);\r\n this.ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\r\n this.ctx.translate(-offsetX, -offsetY);\r\n\r\n callback();\r\n\r\n this.ctx.restore();\r\n }\r\n }]);\r\n\r\n return CanvasRenderer;\r\n}();\r\n\r\nexports.default = CanvasRenderer;\r\n\r\n/***/ }),\r\n/* 16 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar Logger = function () {\r\n function Logger(enabled, id, start) {\r\n _classCallCheck(this, Logger);\r\n\r\n this.enabled = typeof window !== 'undefined' && enabled;\r\n this.start = start ? start : Date.now();\r\n this.id = id;\r\n }\r\n\r\n _createClass(Logger, [{\r\n key: 'child',\r\n value: function child(id) {\r\n return new Logger(this.enabled, id, this.start);\r\n }\r\n\r\n // eslint-disable-next-line flowtype/no-weak-types\r\n\r\n }, {\r\n key: 'log',\r\n value: function log() {\r\n if (this.enabled && window.console && window.console.log) {\r\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key];\r\n }\r\n\r\n Function.prototype.bind.call(window.console.log, window.console).apply(window.console, [Date.now() - this.start + 'ms', this.id ? 'html2canvas (' + this.id + '):' : 'html2canvas:'].concat([].slice.call(args, 0)));\r\n }\r\n }\r\n\r\n // eslint-disable-next-line flowtype/no-weak-types\r\n\r\n }, {\r\n key: 'error',\r\n value: function error() {\r\n if (this.enabled && window.console && window.console.error) {\r\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\r\n args[_key2] = arguments[_key2];\r\n }\r\n\r\n Function.prototype.bind.call(window.console.error, window.console).apply(window.console, [Date.now() - this.start + 'ms', this.id ? 'html2canvas (' + this.id + '):' : 'html2canvas:'].concat([].slice.call(args, 0)));\r\n }\r\n }\r\n }]);\r\n\r\n return Logger;\r\n}();\r\n\r\nexports.default = Logger;\r\n\r\n/***/ }),\r\n/* 17 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.parsePadding = exports.PADDING_SIDES = undefined;\r\n\r\nvar _Length = __webpack_require__(2);\r\n\r\nvar _Length2 = _interopRequireDefault(_Length);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nvar PADDING_SIDES = exports.PADDING_SIDES = {\r\n TOP: 0,\r\n RIGHT: 1,\r\n BOTTOM: 2,\r\n LEFT: 3\r\n};\r\n\r\nvar SIDES = ['top', 'right', 'bottom', 'left'];\r\n\r\nvar parsePadding = exports.parsePadding = function parsePadding(style) {\r\n return SIDES.map(function (side) {\r\n return new _Length2.default(style.getPropertyValue('padding-' + side));\r\n });\r\n};\r\n\r\n/***/ }),\r\n/* 18 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nvar OVERFLOW_WRAP = exports.OVERFLOW_WRAP = {\r\n NORMAL: 0,\r\n BREAK_WORD: 1\r\n};\r\n\r\nvar parseOverflowWrap = exports.parseOverflowWrap = function parseOverflowWrap(overflow) {\r\n switch (overflow) {\r\n case 'break-word':\r\n return OVERFLOW_WRAP.BREAK_WORD;\r\n case 'normal':\r\n default:\r\n return OVERFLOW_WRAP.NORMAL;\r\n }\r\n};\r\n\r\n/***/ }),\r\n/* 19 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nvar POSITION = exports.POSITION = {\r\n STATIC: 0,\r\n RELATIVE: 1,\r\n ABSOLUTE: 2,\r\n FIXED: 3,\r\n STICKY: 4\r\n};\r\n\r\nvar parsePosition = exports.parsePosition = function parsePosition(position) {\r\n switch (position) {\r\n case 'relative':\r\n return POSITION.RELATIVE;\r\n case 'absolute':\r\n return POSITION.ABSOLUTE;\r\n case 'fixed':\r\n return POSITION.FIXED;\r\n case 'sticky':\r\n return POSITION.STICKY;\r\n }\r\n\r\n return POSITION.STATIC;\r\n};\r\n\r\n/***/ }),\r\n/* 20 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nvar TEXT_TRANSFORM = exports.TEXT_TRANSFORM = {\r\n NONE: 0,\r\n LOWERCASE: 1,\r\n UPPERCASE: 2,\r\n CAPITALIZE: 3\r\n};\r\n\r\nvar parseTextTransform = exports.parseTextTransform = function parseTextTransform(textTransform) {\r\n switch (textTransform) {\r\n case 'uppercase':\r\n return TEXT_TRANSFORM.UPPERCASE;\r\n case 'lowercase':\r\n return TEXT_TRANSFORM.LOWERCASE;\r\n case 'capitalize':\r\n return TEXT_TRANSFORM.CAPITALIZE;\r\n }\r\n\r\n return TEXT_TRANSFORM.NONE;\r\n};\r\n\r\n/***/ }),\r\n/* 21 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.reformatInputBounds = exports.inlineSelectElement = exports.inlineTextAreaElement = exports.inlineInputElement = exports.getInputBorderRadius = exports.INPUT_BACKGROUND = exports.INPUT_BORDERS = exports.INPUT_COLOR = undefined;\r\n\r\nvar _TextContainer = __webpack_require__(9);\r\n\r\nvar _TextContainer2 = _interopRequireDefault(_TextContainer);\r\n\r\nvar _background = __webpack_require__(5);\r\n\r\nvar _border = __webpack_require__(12);\r\n\r\nvar _Circle = __webpack_require__(50);\r\n\r\nvar _Circle2 = _interopRequireDefault(_Circle);\r\n\r\nvar _Vector = __webpack_require__(7);\r\n\r\nvar _Vector2 = _interopRequireDefault(_Vector);\r\n\r\nvar _Color = __webpack_require__(0);\r\n\r\nvar _Color2 = _interopRequireDefault(_Color);\r\n\r\nvar _Length = __webpack_require__(2);\r\n\r\nvar _Length2 = _interopRequireDefault(_Length);\r\n\r\nvar _Bounds = __webpack_require__(1);\r\n\r\nvar _TextBounds = __webpack_require__(22);\r\n\r\nvar _Util = __webpack_require__(4);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nvar INPUT_COLOR = exports.INPUT_COLOR = new _Color2.default([42, 42, 42]);\r\nvar INPUT_BORDER_COLOR = new _Color2.default([165, 165, 165]);\r\nvar INPUT_BACKGROUND_COLOR = new _Color2.default([222, 222, 222]);\r\nvar INPUT_BORDER = {\r\n borderWidth: 1,\r\n borderColor: INPUT_BORDER_COLOR,\r\n borderStyle: _border.BORDER_STYLE.SOLID\r\n};\r\nvar INPUT_BORDERS = exports.INPUT_BORDERS = [INPUT_BORDER, INPUT_BORDER, INPUT_BORDER, INPUT_BORDER];\r\nvar INPUT_BACKGROUND = exports.INPUT_BACKGROUND = {\r\n backgroundColor: INPUT_BACKGROUND_COLOR,\r\n backgroundImage: [],\r\n backgroundClip: _background.BACKGROUND_CLIP.PADDING_BOX,\r\n backgroundOrigin: _background.BACKGROUND_ORIGIN.PADDING_BOX\r\n};\r\n\r\nvar RADIO_BORDER_RADIUS = new _Length2.default('50%');\r\nvar RADIO_BORDER_RADIUS_TUPLE = [RADIO_BORDER_RADIUS, RADIO_BORDER_RADIUS];\r\nvar INPUT_RADIO_BORDER_RADIUS = [RADIO_BORDER_RADIUS_TUPLE, RADIO_BORDER_RADIUS_TUPLE, RADIO_BORDER_RADIUS_TUPLE, RADIO_BORDER_RADIUS_TUPLE];\r\n\r\nvar CHECKBOX_BORDER_RADIUS = new _Length2.default('3px');\r\nvar CHECKBOX_BORDER_RADIUS_TUPLE = [CHECKBOX_BORDER_RADIUS, CHECKBOX_BORDER_RADIUS];\r\nvar INPUT_CHECKBOX_BORDER_RADIUS = [CHECKBOX_BORDER_RADIUS_TUPLE, CHECKBOX_BORDER_RADIUS_TUPLE, CHECKBOX_BORDER_RADIUS_TUPLE, CHECKBOX_BORDER_RADIUS_TUPLE];\r\n\r\nvar getInputBorderRadius = exports.getInputBorderRadius = function getInputBorderRadius(node) {\r\n return node.type === 'radio' ? INPUT_RADIO_BORDER_RADIUS : INPUT_CHECKBOX_BORDER_RADIUS;\r\n};\r\n\r\nvar inlineInputElement = exports.inlineInputElement = function inlineInputElement(node, container) {\r\n if (node.type === 'radio' || node.type === 'checkbox') {\r\n if (node.checked) {\r\n var size = Math.min(container.bounds.width, container.bounds.height);\r\n container.childNodes.push(node.type === 'checkbox' ? [new _Vector2.default(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79), new _Vector2.default(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549), new _Vector2.default(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071), new _Vector2.default(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649), new _Vector2.default(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23), new _Vector2.default(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085), new _Vector2.default(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)] : new _Circle2.default(container.bounds.left + size / 4, container.bounds.top + size / 4, size / 4));\r\n }\r\n } else {\r\n inlineFormElement(getInputValue(node), node, container, false);\r\n }\r\n};\r\n\r\nvar inlineTextAreaElement = exports.inlineTextAreaElement = function inlineTextAreaElement(node, container) {\r\n inlineFormElement(node.value, node, container, true);\r\n};\r\n\r\nvar inlineSelectElement = exports.inlineSelectElement = function inlineSelectElement(node, container) {\r\n var option = node.options[node.selectedIndex || 0];\r\n inlineFormElement(option ? option.text || '' : '', node, container, false);\r\n};\r\n\r\nvar reformatInputBounds = exports.reformatInputBounds = function reformatInputBounds(bounds) {\r\n if (bounds.width > bounds.height) {\r\n bounds.left += (bounds.width - bounds.height) / 2;\r\n bounds.width = bounds.height;\r\n } else if (bounds.width < bounds.height) {\r\n bounds.top += (bounds.height - bounds.width) / 2;\r\n bounds.height = bounds.width;\r\n }\r\n return bounds;\r\n};\r\n\r\nvar inlineFormElement = function inlineFormElement(value, node, container, allowLinebreak) {\r\n var body = node.ownerDocument.body;\r\n if (value.length > 0 && body) {\r\n var wrapper = node.ownerDocument.createElement('html2canvaswrapper');\r\n (0, _Util.copyCSSStyles)(node.ownerDocument.defaultView.getComputedStyle(node, null), wrapper);\r\n wrapper.style.position = 'absolute';\r\n wrapper.style.left = container.bounds.left + 'px';\r\n wrapper.style.top = container.bounds.top + 'px';\r\n if (!allowLinebreak) {\r\n wrapper.style.whiteSpace = 'nowrap';\r\n }\r\n var text = node.ownerDocument.createTextNode(value);\r\n wrapper.appendChild(text);\r\n body.appendChild(wrapper);\r\n container.childNodes.push(_TextContainer2.default.fromTextNode(text, container));\r\n body.removeChild(wrapper);\r\n }\r\n};\r\n\r\nvar getInputValue = function getInputValue(node) {\r\n var value = node.type === 'password' ? new Array(node.value.length + 1).join('\\u2022') : node.value;\r\n\r\n return value.length === 0 ? node.placeholder || '' : value;\r\n};\r\n\r\n/***/ }),\r\n/* 22 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.parseTextBounds = exports.TextBounds = undefined;\r\n\r\nvar _Bounds = __webpack_require__(1);\r\n\r\nvar _textDecoration = __webpack_require__(11);\r\n\r\nvar _Feature = __webpack_require__(10);\r\n\r\nvar _Feature2 = _interopRequireDefault(_Feature);\r\n\r\nvar _Unicode = __webpack_require__(24);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar TextBounds = exports.TextBounds = function TextBounds(text, bounds) {\r\n _classCallCheck(this, TextBounds);\r\n\r\n this.text = text;\r\n this.bounds = bounds;\r\n};\r\n\r\nvar parseTextBounds = exports.parseTextBounds = function parseTextBounds(value, parent, node) {\r\n var letterRendering = parent.style.letterSpacing !== 0;\r\n var textList = letterRendering ? (0, _Unicode.toCodePoints)(value).map(function (i) {\r\n return (0, _Unicode.fromCodePoint)(i);\r\n }) : (0, _Unicode.breakWords)(value, parent);\r\n var length = textList.length;\r\n var defaultView = node.parentNode ? node.parentNode.ownerDocument.defaultView : null;\r\n var scrollX = defaultView ? defaultView.pageXOffset : 0;\r\n var scrollY = defaultView ? defaultView.pageYOffset : 0;\r\n var textBounds = [];\r\n var offset = 0;\r\n for (var i = 0; i < length; i++) {\r\n var text = textList[i];\r\n if (parent.style.textDecoration !== _textDecoration.TEXT_DECORATION.NONE || text.trim().length > 0) {\r\n if (_Feature2.default.SUPPORT_RANGE_BOUNDS) {\r\n textBounds.push(new TextBounds(text, getRangeBounds(node, offset, text.length, scrollX, scrollY)));\r\n } else {\r\n var replacementNode = node.splitText(text.length);\r\n textBounds.push(new TextBounds(text, getWrapperBounds(node, scrollX, scrollY)));\r\n node = replacementNode;\r\n }\r\n } else if (!_Feature2.default.SUPPORT_RANGE_BOUNDS) {\r\n node = node.splitText(text.length);\r\n }\r\n offset += text.length;\r\n }\r\n return textBounds;\r\n};\r\n\r\nvar getWrapperBounds = function getWrapperBounds(node, scrollX, scrollY) {\r\n var wrapper = node.ownerDocument.createElement('html2canvaswrapper');\r\n wrapper.appendChild(node.cloneNode(true));\r\n var parentNode = node.parentNode;\r\n if (parentNode) {\r\n parentNode.replaceChild(wrapper, node);\r\n var bounds = (0, _Bounds.parseBounds)(wrapper, scrollX, scrollY);\r\n if (wrapper.firstChild) {\r\n parentNode.replaceChild(wrapper.firstChild, wrapper);\r\n }\r\n return bounds;\r\n }\r\n return new _Bounds.Bounds(0, 0, 0, 0);\r\n};\r\n\r\nvar getRangeBounds = function getRangeBounds(node, offset, length, scrollX, scrollY) {\r\n var range = node.ownerDocument.createRange();\r\n range.setStart(node, offset);\r\n range.setEnd(node, offset + length);\r\n return _Bounds.Bounds.fromClientRect(range.getBoundingClientRect(), scrollX, scrollY);\r\n};\r\n\r\n/***/ }),\r\n/* 23 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar ForeignObjectRenderer = function () {\r\n function ForeignObjectRenderer(element) {\r\n _classCallCheck(this, ForeignObjectRenderer);\r\n\r\n this.element = element;\r\n }\r\n\r\n _createClass(ForeignObjectRenderer, [{\r\n key: 'render',\r\n value: function render(options) {\r\n var _this = this;\r\n\r\n this.options = options;\r\n this.canvas = document.createElement('canvas');\r\n this.ctx = this.canvas.getContext('2d');\r\n this.canvas.width = Math.floor(options.width) * options.scale;\r\n this.canvas.height = Math.floor(options.height) * options.scale;\r\n this.canvas.style.width = options.width + 'px';\r\n this.canvas.style.height = options.height + 'px';\r\n\r\n options.logger.log('ForeignObject renderer initialized (' + options.width + 'x' + options.height + ' at ' + options.x + ',' + options.y + ') with scale ' + options.scale);\r\n var svg = createForeignObjectSVG(Math.max(options.windowWidth, options.width) * options.scale, Math.max(options.windowHeight, options.height) * options.scale, options.scrollX * options.scale, options.scrollY * options.scale, this.element);\r\n\r\n return loadSerializedSVG(svg).then(function (img) {\r\n if (options.backgroundColor) {\r\n _this.ctx.fillStyle = options.backgroundColor.toString();\r\n _this.ctx.fillRect(0, 0, options.width * options.scale, options.height * options.scale);\r\n }\r\n\r\n _this.ctx.drawImage(img, -options.x * options.scale, -options.y * options.scale);\r\n return _this.canvas;\r\n });\r\n }\r\n }]);\r\n\r\n return ForeignObjectRenderer;\r\n}();\r\n\r\nexports.default = ForeignObjectRenderer;\r\nvar createForeignObjectSVG = exports.createForeignObjectSVG = function createForeignObjectSVG(width, height, x, y, node) {\r\n var xmlns = 'http://www.w3.org/2000/svg';\r\n var svg = document.createElementNS(xmlns, 'svg');\r\n var foreignObject = document.createElementNS(xmlns, 'foreignObject');\r\n svg.setAttributeNS(null, 'width', width);\r\n svg.setAttributeNS(null, 'height', height);\r\n\r\n foreignObject.setAttributeNS(null, 'width', '100%');\r\n foreignObject.setAttributeNS(null, 'height', '100%');\r\n foreignObject.setAttributeNS(null, 'x', x);\r\n foreignObject.setAttributeNS(null, 'y', y);\r\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\r\n svg.appendChild(foreignObject);\r\n\r\n foreignObject.appendChild(node);\r\n\r\n return svg;\r\n};\r\n\r\nvar loadSerializedSVG = exports.loadSerializedSVG = function loadSerializedSVG(svg) {\r\n return new Promise(function (resolve, reject) {\r\n var img = new Image();\r\n img.onload = function () {\r\n return resolve(img);\r\n };\r\n img.onerror = reject;\r\n\r\n img.src = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(new XMLSerializer().serializeToString(svg));\r\n });\r\n};\r\n\r\n/***/ }),\r\n/* 24 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.breakWords = exports.fromCodePoint = exports.toCodePoints = undefined;\r\n\r\nvar _cssLineBreak = __webpack_require__(46);\r\n\r\nObject.defineProperty(exports, 'toCodePoints', {\r\n enumerable: true,\r\n get: function get() {\r\n return _cssLineBreak.toCodePoints;\r\n }\r\n});\r\nObject.defineProperty(exports, 'fromCodePoint', {\r\n enumerable: true,\r\n get: function get() {\r\n return _cssLineBreak.fromCodePoint;\r\n }\r\n});\r\n\r\nvar _NodeContainer = __webpack_require__(3);\r\n\r\nvar _NodeContainer2 = _interopRequireDefault(_NodeContainer);\r\n\r\nvar _overflowWrap = __webpack_require__(18);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nvar breakWords = exports.breakWords = function breakWords(str, parent) {\r\n var breaker = (0, _cssLineBreak.LineBreaker)(str, {\r\n lineBreak: parent.style.lineBreak,\r\n wordBreak: parent.style.overflowWrap === _overflowWrap.OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : parent.style.wordBreak\r\n });\r\n\r\n var words = [];\r\n var bk = void 0;\r\n\r\n while (!(bk = breaker.next()).done) {\r\n words.push(bk.value.slice());\r\n }\r\n\r\n return words;\r\n};\r\n\r\n/***/ }),\r\n/* 25 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.FontMetrics = undefined;\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _Util = __webpack_require__(4);\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar SAMPLE_TEXT = 'Hidden Text';\r\n\r\nvar FontMetrics = exports.FontMetrics = function () {\r\n function FontMetrics(document) {\r\n _classCallCheck(this, FontMetrics);\r\n\r\n this._data = {};\r\n this._document = document;\r\n }\r\n\r\n _createClass(FontMetrics, [{\r\n key: '_parseMetrics',\r\n value: function _parseMetrics(font) {\r\n var container = this._document.createElement('div');\r\n var img = this._document.createElement('img');\r\n var span = this._document.createElement('span');\r\n\r\n var body = this._document.body;\r\n if (!body) {\r\n throw new Error( true ? 'No document found for font metrics' : '');\r\n }\r\n\r\n container.style.visibility = 'hidden';\r\n container.style.fontFamily = font.fontFamily;\r\n container.style.fontSize = font.fontSize;\r\n container.style.margin = '0';\r\n container.style.padding = '0';\r\n\r\n body.appendChild(container);\r\n\r\n img.src = _Util.SMALL_IMAGE;\r\n img.width = 1;\r\n img.height = 1;\r\n\r\n img.style.margin = '0';\r\n img.style.padding = '0';\r\n img.style.verticalAlign = 'baseline';\r\n\r\n span.style.fontFamily = font.fontFamily;\r\n span.style.fontSize = font.fontSize;\r\n span.style.margin = '0';\r\n span.style.padding = '0';\r\n\r\n span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\r\n container.appendChild(span);\r\n container.appendChild(img);\r\n var baseline = img.offsetTop - span.offsetTop + 2;\r\n\r\n container.removeChild(span);\r\n container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\r\n\r\n container.style.lineHeight = 'normal';\r\n img.style.verticalAlign = 'super';\r\n\r\n var middle = img.offsetTop - container.offsetTop + 2;\r\n\r\n body.removeChild(container);\r\n\r\n return { baseline: baseline, middle: middle };\r\n }\r\n }, {\r\n key: 'getMetrics',\r\n value: function getMetrics(font) {\r\n var key = font.fontFamily + ' ' + font.fontSize;\r\n if (this._data[key] === undefined) {\r\n this._data[key] = this._parseMetrics(font);\r\n }\r\n\r\n return this._data[key];\r\n }\r\n }]);\r\n\r\n return FontMetrics;\r\n}();\r\n\r\n/***/ }),\r\n/* 26 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.Proxy = undefined;\r\n\r\nvar _Feature = __webpack_require__(10);\r\n\r\nvar _Feature2 = _interopRequireDefault(_Feature);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nvar Proxy = exports.Proxy = function Proxy(src, options) {\r\n if (!options.proxy) {\r\n return Promise.reject( true ? 'No proxy defined' : null);\r\n }\r\n var proxy = options.proxy;\r\n\r\n return new Promise(function (resolve, reject) {\r\n var responseType = _Feature2.default.SUPPORT_CORS_XHR && _Feature2.default.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\r\n var xhr = _Feature2.default.SUPPORT_CORS_XHR ? new XMLHttpRequest() : new XDomainRequest();\r\n xhr.onload = function () {\r\n if (xhr instanceof XMLHttpRequest) {\r\n if (xhr.status === 200) {\r\n if (responseType === 'text') {\r\n resolve(xhr.response);\r\n } else {\r\n var reader = new FileReader();\r\n // $FlowFixMe\r\n reader.addEventListener('load', function () {\r\n return resolve(reader.result);\r\n }, false);\r\n // $FlowFixMe\r\n reader.addEventListener('error', function (e) {\r\n return reject(e);\r\n }, false);\r\n reader.readAsDataURL(xhr.response);\r\n }\r\n } else {\r\n reject( true ? 'Failed to proxy resource ' + src.substring(0, 256) + ' with status code ' + xhr.status : '');\r\n }\r\n } else {\r\n resolve(xhr.responseText);\r\n }\r\n };\r\n\r\n xhr.onerror = reject;\r\n xhr.open('GET', proxy + '?url=' + encodeURIComponent(src) + '&responseType=' + responseType);\r\n\r\n if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\r\n xhr.responseType = responseType;\r\n }\r\n\r\n if (options.imageTimeout) {\r\n var timeout = options.imageTimeout;\r\n xhr.timeout = timeout;\r\n xhr.ontimeout = function () {\r\n return reject( true ? 'Timed out (' + timeout + 'ms) proxying ' + src.substring(0, 256) : '');\r\n };\r\n }\r\n\r\n xhr.send();\r\n });\r\n};\r\n\r\n/***/ }),\r\n/* 27 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\r\n\r\nvar _CanvasRenderer = __webpack_require__(15);\r\n\r\nvar _CanvasRenderer2 = _interopRequireDefault(_CanvasRenderer);\r\n\r\nvar _Logger = __webpack_require__(16);\r\n\r\nvar _Logger2 = _interopRequireDefault(_Logger);\r\n\r\nvar _Window = __webpack_require__(28);\r\n\r\nvar _Bounds = __webpack_require__(1);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nvar html2canvas = function html2canvas(element, conf) {\r\n var config = conf || {};\r\n var logger = new _Logger2.default(typeof config.logging === 'boolean' ? config.logging : true);\r\n logger.log('html2canvas ' + \"1.0.0-alpha.10\");\r\n\r\n if (true && typeof config.onrendered === 'function') {\r\n logger.error('onrendered option is deprecated, html2canvas returns a Promise with the canvas as the value');\r\n }\r\n\r\n var ownerDocument = element.ownerDocument;\r\n if (!ownerDocument) {\r\n return Promise.reject('Provided element is not within a Document');\r\n }\r\n var defaultView = ownerDocument.defaultView;\r\n\r\n var scrollX = defaultView.pageXOffset;\r\n var scrollY = defaultView.pageYOffset;\r\n\r\n var isDocument = element.tagName === 'HTML' || element.tagName === 'BODY';\r\n\r\n var _ref = isDocument ? (0, _Bounds.parseDocumentSize)(ownerDocument) : (0, _Bounds.parseBounds)(element, scrollX, scrollY),\r\n width = _ref.width,\r\n height = _ref.height,\r\n left = _ref.left,\r\n top = _ref.top;\r\n\r\n var defaultOptions = {\r\n async: true,\r\n allowTaint: false,\r\n backgroundColor: '#ffffff',\r\n imageTimeout: 15000,\r\n logging: true,\r\n proxy: null,\r\n removeContainer: true,\r\n foreignObjectRendering: false,\r\n scale: defaultView.devicePixelRatio || 1,\r\n target: new _CanvasRenderer2.default(config.canvas),\r\n useCORS: false,\r\n x: left,\r\n y: top,\r\n width: Math.ceil(width),\r\n height: Math.ceil(height),\r\n windowWidth: defaultView.innerWidth,\r\n windowHeight: defaultView.innerHeight,\r\n scrollX: defaultView.pageXOffset,\r\n scrollY: defaultView.pageYOffset\r\n };\r\n\r\n var result = (0, _Window.renderElement)(element, _extends({}, defaultOptions, config), logger);\r\n\r\n if (true) {\r\n return result.catch(function (e) {\r\n logger.error(e);\r\n throw e;\r\n });\r\n }\r\n return result;\r\n};\r\n\r\nhtml2canvas.CanvasRenderer = _CanvasRenderer2.default;\r\n\r\nmodule.exports = html2canvas;\r\n\r\n/***/ }),\r\n/* 28 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.renderElement = undefined;\r\n\r\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\r\n\r\nvar _Logger = __webpack_require__(16);\r\n\r\nvar _Logger2 = _interopRequireDefault(_Logger);\r\n\r\nvar _NodeParser = __webpack_require__(29);\r\n\r\nvar _Renderer = __webpack_require__(51);\r\n\r\nvar _Renderer2 = _interopRequireDefault(_Renderer);\r\n\r\nvar _ForeignObjectRenderer = __webpack_require__(23);\r\n\r\nvar _ForeignObjectRenderer2 = _interopRequireDefault(_ForeignObjectRenderer);\r\n\r\nvar _Feature = __webpack_require__(10);\r\n\r\nvar _Feature2 = _interopRequireDefault(_Feature);\r\n\r\nvar _Bounds = __webpack_require__(1);\r\n\r\nvar _Clone = __webpack_require__(54);\r\n\r\nvar _Font = __webpack_require__(25);\r\n\r\nvar _Color = __webpack_require__(0);\r\n\r\nvar _Color2 = _interopRequireDefault(_Color);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nvar renderElement = exports.renderElement = function renderElement(element, options, logger) {\r\n var ownerDocument = element.ownerDocument;\r\n\r\n var windowBounds = new _Bounds.Bounds(options.scrollX, options.scrollY, options.windowWidth, options.windowHeight);\r\n\r\n // http://www.w3.org/TR/css3-background/#special-backgrounds\r\n var documentBackgroundColor = ownerDocument.documentElement ? new _Color2.default(getComputedStyle(ownerDocument.documentElement).backgroundColor) : _Color.TRANSPARENT;\r\n var bodyBackgroundColor = ownerDocument.body ? new _Color2.default(getComputedStyle(ownerDocument.body).backgroundColor) : _Color.TRANSPARENT;\r\n\r\n var backgroundColor = element === ownerDocument.documentElement ? documentBackgroundColor.isTransparent() ? bodyBackgroundColor.isTransparent() ? options.backgroundColor ? new _Color2.default(options.backgroundColor) : null : bodyBackgroundColor : documentBackgroundColor : options.backgroundColor ? new _Color2.default(options.backgroundColor) : null;\r\n\r\n return (options.foreignObjectRendering ? // $FlowFixMe\r\n _Feature2.default.SUPPORT_FOREIGNOBJECT_DRAWING : Promise.resolve(false)).then(function (supportForeignObject) {\r\n return supportForeignObject ? function (cloner) {\r\n if (true) {\r\n logger.log('Document cloned, using foreignObject rendering');\r\n }\r\n\r\n return cloner.inlineFonts(ownerDocument).then(function () {\r\n return cloner.resourceLoader.ready();\r\n }).then(function () {\r\n var renderer = new _ForeignObjectRenderer2.default(cloner.documentElement);\r\n return renderer.render({\r\n backgroundColor: backgroundColor,\r\n logger: logger,\r\n scale: options.scale,\r\n x: options.x,\r\n y: options.y,\r\n width: options.width,\r\n height: options.height,\r\n windowWidth: options.windowWidth,\r\n windowHeight: options.windowHeight,\r\n scrollX: options.scrollX,\r\n scrollY: options.scrollY\r\n });\r\n });\r\n }(new _Clone.DocumentCloner(element, options, logger, true, renderElement)) : (0, _Clone.cloneWindow)(ownerDocument, windowBounds, element, options, logger, renderElement).then(function (_ref) {\r\n var _ref2 = _slicedToArray(_ref, 3),\r\n container = _ref2[0],\r\n clonedElement = _ref2[1],\r\n resourceLoader = _ref2[2];\r\n\r\n if (true) {\r\n logger.log('Document cloned, using computed rendering');\r\n }\r\n\r\n var stack = (0, _NodeParser.NodeParser)(clonedElement, resourceLoader, logger);\r\n var clonedDocument = clonedElement.ownerDocument;\r\n\r\n if (backgroundColor === stack.container.style.background.backgroundColor) {\r\n stack.container.style.background.backgroundColor = _Color.TRANSPARENT;\r\n }\r\n\r\n return resourceLoader.ready().then(function (imageStore) {\r\n var fontMetrics = new _Font.FontMetrics(clonedDocument);\r\n if (true) {\r\n logger.log('Starting renderer');\r\n }\r\n\r\n var renderOptions = {\r\n backgroundColor: backgroundColor,\r\n fontMetrics: fontMetrics,\r\n imageStore: imageStore,\r\n logger: logger,\r\n scale: options.scale,\r\n x: options.x,\r\n y: options.y,\r\n width: options.width,\r\n height: options.height\r\n };\r\n\r\n if (Array.isArray(options.target)) {\r\n return Promise.all(options.target.map(function (target) {\r\n var renderer = new _Renderer2.default(target, renderOptions);\r\n return renderer.render(stack);\r\n }));\r\n } else {\r\n var renderer = new _Renderer2.default(options.target, renderOptions);\r\n var canvas = renderer.render(stack);\r\n if (options.removeContainer === true) {\r\n if (container.parentNode) {\r\n container.parentNode.removeChild(container);\r\n } else if (true) {\r\n logger.log('Cannot detach cloned iframe as it is not in the DOM anymore');\r\n }\r\n }\r\n\r\n return canvas;\r\n }\r\n });\r\n });\r\n });\r\n};\r\n\r\n/***/ }),\r\n/* 29 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.NodeParser = undefined;\r\n\r\nvar _StackingContext = __webpack_require__(30);\r\n\r\nvar _StackingContext2 = _interopRequireDefault(_StackingContext);\r\n\r\nvar _NodeContainer = __webpack_require__(3);\r\n\r\nvar _NodeContainer2 = _interopRequireDefault(_NodeContainer);\r\n\r\nvar _TextContainer = __webpack_require__(9);\r\n\r\nvar _TextContainer2 = _interopRequireDefault(_TextContainer);\r\n\r\nvar _Input = __webpack_require__(21);\r\n\r\nvar _ListItem = __webpack_require__(14);\r\n\r\nvar _listStyle = __webpack_require__(8);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nvar NodeParser = exports.NodeParser = function NodeParser(node, resourceLoader, logger) {\r\n if (true) {\r\n logger.log('Starting node parsing');\r\n }\r\n\r\n var index = 0;\r\n\r\n var container = new _NodeContainer2.default(node, null, resourceLoader, index++);\r\n var stack = new _StackingContext2.default(container, null, true);\r\n\r\n parseNodeTree(node, container, stack, resourceLoader, index);\r\n\r\n if (true) {\r\n logger.log('Finished parsing node tree');\r\n }\r\n\r\n return stack;\r\n};\r\n\r\nvar IGNORED_NODE_NAMES = ['SCRIPT', 'HEAD', 'TITLE', 'OBJECT', 'BR', 'OPTION'];\r\n\r\nvar parseNodeTree = function parseNodeTree(node, parent, stack, resourceLoader, index) {\r\n if (true && index > 50000) {\r\n throw new Error('Recursion error while parsing node tree');\r\n }\r\n\r\n for (var childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {\r\n nextNode = childNode.nextSibling;\r\n var defaultView = childNode.ownerDocument.defaultView;\r\n if (childNode instanceof defaultView.Text || childNode instanceof Text || defaultView.parent && childNode instanceof defaultView.parent.Text) {\r\n if (childNode.data.trim().length > 0) {\r\n parent.childNodes.push(_TextContainer2.default.fromTextNode(childNode, parent));\r\n }\r\n } else if (childNode instanceof defaultView.HTMLElement || childNode instanceof HTMLElement || defaultView.parent && childNode instanceof defaultView.parent.HTMLElement) {\r\n if (IGNORED_NODE_NAMES.indexOf(childNode.nodeName) === -1) {\r\n var container = new _NodeContainer2.default(childNode, parent, resourceLoader, index++);\r\n if (container.isVisible()) {\r\n if (childNode.tagName === 'INPUT') {\r\n // $FlowFixMe\r\n (0, _Input.inlineInputElement)(childNode, container);\r\n } else if (childNode.tagName === 'TEXTAREA') {\r\n // $FlowFixMe\r\n (0, _Input.inlineTextAreaElement)(childNode, container);\r\n } else if (childNode.tagName === 'SELECT') {\r\n // $FlowFixMe\r\n (0, _Input.inlineSelectElement)(childNode, container);\r\n } else if (container.style.listStyle && container.style.listStyle.listStyleType !== _listStyle.LIST_STYLE_TYPE.NONE) {\r\n (0, _ListItem.inlineListItemElement)(childNode, container, resourceLoader);\r\n }\r\n\r\n var SHOULD_TRAVERSE_CHILDREN = childNode.tagName !== 'TEXTAREA';\r\n var treatAsRealStackingContext = createsRealStackingContext(container, childNode);\r\n if (treatAsRealStackingContext || createsStackingContext(container)) {\r\n // for treatAsRealStackingContext:false, any positioned descendants and descendants\r\n // which actually create a new stacking context should be considered part of the parent stacking context\r\n var parentStack = treatAsRealStackingContext || container.isPositioned() ? stack.getRealParentStackingContext() : stack;\r\n var childStack = new _StackingContext2.default(container, parentStack, treatAsRealStackingContext);\r\n parentStack.contexts.push(childStack);\r\n if (SHOULD_TRAVERSE_CHILDREN) {\r\n parseNodeTree(childNode, container, childStack, resourceLoader, index);\r\n }\r\n } else {\r\n stack.children.push(container);\r\n if (SHOULD_TRAVERSE_CHILDREN) {\r\n parseNodeTree(childNode, container, stack, resourceLoader, index);\r\n }\r\n }\r\n }\r\n }\r\n } else if (childNode instanceof defaultView.SVGSVGElement || childNode instanceof SVGSVGElement || defaultView.parent && childNode instanceof defaultView.parent.SVGSVGElement) {\r\n var _container = new _NodeContainer2.default(childNode, parent, resourceLoader, index++);\r\n var _treatAsRealStackingContext = createsRealStackingContext(_container, childNode);\r\n if (_treatAsRealStackingContext || createsStackingContext(_container)) {\r\n // for treatAsRealStackingContext:false, any positioned descendants and descendants\r\n // which actually create a new stacking context should be considered part of the parent stacking context\r\n var _parentStack = _treatAsRealStackingContext || _container.isPositioned() ? stack.getRealParentStackingContext() : stack;\r\n var _childStack = new _StackingContext2.default(_container, _parentStack, _treatAsRealStackingContext);\r\n _parentStack.contexts.push(_childStack);\r\n } else {\r\n stack.children.push(_container);\r\n }\r\n }\r\n }\r\n};\r\n\r\nvar createsRealStackingContext = function createsRealStackingContext(container, node) {\r\n return container.isRootElement() || container.isPositionedWithZIndex() || container.style.opacity < 1 || container.isTransformed() || isBodyWithTransparentRoot(container, node);\r\n};\r\n\r\nvar createsStackingContext = function createsStackingContext(container) {\r\n return container.isPositioned() || container.isFloating();\r\n};\r\n\r\nvar isBodyWithTransparentRoot = function isBodyWithTransparentRoot(container, node) {\r\n return node.nodeName === 'BODY' && container.parent instanceof _NodeContainer2.default && container.parent.style.background.backgroundColor.isTransparent();\r\n};\r\n\r\n/***/ }),\r\n/* 30 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _NodeContainer = __webpack_require__(3);\r\n\r\nvar _NodeContainer2 = _interopRequireDefault(_NodeContainer);\r\n\r\nvar _position = __webpack_require__(19);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar StackingContext = function () {\r\n function StackingContext(container, parent, treatAsRealStackingContext) {\r\n _classCallCheck(this, StackingContext);\r\n\r\n this.container = container;\r\n this.parent = parent;\r\n this.contexts = [];\r\n this.children = [];\r\n this.treatAsRealStackingContext = treatAsRealStackingContext;\r\n }\r\n\r\n _createClass(StackingContext, [{\r\n key: 'getOpacity',\r\n value: function getOpacity() {\r\n return this.parent ? this.container.style.opacity * this.parent.getOpacity() : this.container.style.opacity;\r\n }\r\n }, {\r\n key: 'getRealParentStackingContext',\r\n value: function getRealParentStackingContext() {\r\n return !this.parent || this.treatAsRealStackingContext ? this : this.parent.getRealParentStackingContext();\r\n }\r\n }]);\r\n\r\n return StackingContext;\r\n}();\r\n\r\nexports.default = StackingContext;\r\n\r\n/***/ }),\r\n/* 31 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar Size = function Size(width, height) {\r\n _classCallCheck(this, Size);\r\n\r\n this.width = width;\r\n this.height = height;\r\n};\r\n\r\nexports.default = Size;\r\n\r\n/***/ }),\r\n/* 32 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _Path = __webpack_require__(6);\r\n\r\nvar _Vector = __webpack_require__(7);\r\n\r\nvar _Vector2 = _interopRequireDefault(_Vector);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar lerp = function lerp(a, b, t) {\r\n return new _Vector2.default(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\r\n};\r\n\r\nvar BezierCurve = function () {\r\n function BezierCurve(start, startControl, endControl, end) {\r\n _classCallCheck(this, BezierCurve);\r\n\r\n this.type = _Path.PATH.BEZIER_CURVE;\r\n this.start = start;\r\n this.startControl = startControl;\r\n this.endControl = endControl;\r\n this.end = end;\r\n }\r\n\r\n _createClass(BezierCurve, [{\r\n key: 'subdivide',\r\n value: function subdivide(t, firstHalf) {\r\n var ab = lerp(this.start, this.startControl, t);\r\n var bc = lerp(this.startControl, this.endControl, t);\r\n var cd = lerp(this.endControl, this.end, t);\r\n var abbc = lerp(ab, bc, t);\r\n var bccd = lerp(bc, cd, t);\r\n var dest = lerp(abbc, bccd, t);\r\n return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\r\n }\r\n }, {\r\n key: 'reverse',\r\n value: function reverse() {\r\n return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\r\n }\r\n }]);\r\n\r\n return BezierCurve;\r\n}();\r\n\r\nexports.default = BezierCurve;\r\n\r\n/***/ }),\r\n/* 33 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.parseBorderRadius = undefined;\r\n\r\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\r\n\r\nvar _Length = __webpack_require__(2);\r\n\r\nvar _Length2 = _interopRequireDefault(_Length);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nvar SIDES = ['top-left', 'top-right', 'bottom-right', 'bottom-left'];\r\n\r\nvar parseBorderRadius = exports.parseBorderRadius = function parseBorderRadius(style) {\r\n return SIDES.map(function (side) {\r\n var value = style.getPropertyValue('border-' + side + '-radius');\r\n\r\n var _value$split$map = value.split(' ').map(_Length2.default.create),\r\n _value$split$map2 = _slicedToArray(_value$split$map, 2),\r\n horizontal = _value$split$map2[0],\r\n vertical = _value$split$map2[1];\r\n\r\n return typeof vertical === 'undefined' ? [horizontal, horizontal] : [horizontal, vertical];\r\n });\r\n};\r\n\r\n/***/ }),\r\n/* 34 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nvar DISPLAY = exports.DISPLAY = {\r\n NONE: 1 << 0,\r\n BLOCK: 1 << 1,\r\n INLINE: 1 << 2,\r\n RUN_IN: 1 << 3,\r\n FLOW: 1 << 4,\r\n FLOW_ROOT: 1 << 5,\r\n TABLE: 1 << 6,\r\n FLEX: 1 << 7,\r\n GRID: 1 << 8,\r\n RUBY: 1 << 9,\r\n SUBGRID: 1 << 10,\r\n LIST_ITEM: 1 << 11,\r\n TABLE_ROW_GROUP: 1 << 12,\r\n TABLE_HEADER_GROUP: 1 << 13,\r\n TABLE_FOOTER_GROUP: 1 << 14,\r\n TABLE_ROW: 1 << 15,\r\n TABLE_CELL: 1 << 16,\r\n TABLE_COLUMN_GROUP: 1 << 17,\r\n TABLE_COLUMN: 1 << 18,\r\n TABLE_CAPTION: 1 << 19,\r\n RUBY_BASE: 1 << 20,\r\n RUBY_TEXT: 1 << 21,\r\n RUBY_BASE_CONTAINER: 1 << 22,\r\n RUBY_TEXT_CONTAINER: 1 << 23,\r\n CONTENTS: 1 << 24,\r\n INLINE_BLOCK: 1 << 25,\r\n INLINE_LIST_ITEM: 1 << 26,\r\n INLINE_TABLE: 1 << 27,\r\n INLINE_FLEX: 1 << 28,\r\n INLINE_GRID: 1 << 29\r\n};\r\n\r\nvar parseDisplayValue = function parseDisplayValue(display) {\r\n switch (display) {\r\n case 'block':\r\n return DISPLAY.BLOCK;\r\n case 'inline':\r\n return DISPLAY.INLINE;\r\n case 'run-in':\r\n return DISPLAY.RUN_IN;\r\n case 'flow':\r\n return DISPLAY.FLOW;\r\n case 'flow-root':\r\n return DISPLAY.FLOW_ROOT;\r\n case 'table':\r\n return DISPLAY.TABLE;\r\n case 'flex':\r\n return DISPLAY.FLEX;\r\n case 'grid':\r\n return DISPLAY.GRID;\r\n case 'ruby':\r\n return DISPLAY.RUBY;\r\n case 'subgrid':\r\n return DISPLAY.SUBGRID;\r\n case 'list-item':\r\n return DISPLAY.LIST_ITEM;\r\n case 'table-row-group':\r\n return DISPLAY.TABLE_ROW_GROUP;\r\n case 'table-header-group':\r\n return DISPLAY.TABLE_HEADER_GROUP;\r\n case 'table-footer-group':\r\n return DISPLAY.TABLE_FOOTER_GROUP;\r\n case 'table-row':\r\n return DISPLAY.TABLE_ROW;\r\n case 'table-cell':\r\n return DISPLAY.TABLE_CELL;\r\n case 'table-column-group':\r\n return DISPLAY.TABLE_COLUMN_GROUP;\r\n case 'table-column':\r\n return DISPLAY.TABLE_COLUMN;\r\n case 'table-caption':\r\n return DISPLAY.TABLE_CAPTION;\r\n case 'ruby-base':\r\n return DISPLAY.RUBY_BASE;\r\n case 'ruby-text':\r\n return DISPLAY.RUBY_TEXT;\r\n case 'ruby-base-container':\r\n return DISPLAY.RUBY_BASE_CONTAINER;\r\n case 'ruby-text-container':\r\n return DISPLAY.RUBY_TEXT_CONTAINER;\r\n case 'contents':\r\n return DISPLAY.CONTENTS;\r\n case 'inline-block':\r\n return DISPLAY.INLINE_BLOCK;\r\n case 'inline-list-item':\r\n return DISPLAY.INLINE_LIST_ITEM;\r\n case 'inline-table':\r\n return DISPLAY.INLINE_TABLE;\r\n case 'inline-flex':\r\n return DISPLAY.INLINE_FLEX;\r\n case 'inline-grid':\r\n return DISPLAY.INLINE_GRID;\r\n }\r\n\r\n return DISPLAY.NONE;\r\n};\r\n\r\nvar setDisplayBit = function setDisplayBit(bit, display) {\r\n return bit | parseDisplayValue(display);\r\n};\r\n\r\nvar parseDisplay = exports.parseDisplay = function parseDisplay(display) {\r\n return display.split(' ').reduce(setDisplayBit, 0);\r\n};\r\n\r\n/***/ }),\r\n/* 35 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nvar FLOAT = exports.FLOAT = {\r\n NONE: 0,\r\n LEFT: 1,\r\n RIGHT: 2,\r\n INLINE_START: 3,\r\n INLINE_END: 4\r\n};\r\n\r\nvar parseCSSFloat = exports.parseCSSFloat = function parseCSSFloat(float) {\r\n switch (float) {\r\n case 'left':\r\n return FLOAT.LEFT;\r\n case 'right':\r\n return FLOAT.RIGHT;\r\n case 'inline-start':\r\n return FLOAT.INLINE_START;\r\n case 'inline-end':\r\n return FLOAT.INLINE_END;\r\n }\r\n return FLOAT.NONE;\r\n};\r\n\r\n/***/ }),\r\n/* 36 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\n\r\nvar parseFontWeight = function parseFontWeight(weight) {\r\n switch (weight) {\r\n case 'normal':\r\n return 400;\r\n case 'bold':\r\n return 700;\r\n }\r\n\r\n var value = parseInt(weight, 10);\r\n return isNaN(value) ? 400 : value;\r\n};\r\n\r\nvar parseFont = exports.parseFont = function parseFont(style) {\r\n var fontFamily = style.fontFamily;\r\n var fontSize = style.fontSize;\r\n var fontStyle = style.fontStyle;\r\n var fontVariant = style.fontVariant;\r\n var fontWeight = parseFontWeight(style.fontWeight);\r\n\r\n return {\r\n fontFamily: fontFamily,\r\n fontSize: fontSize,\r\n fontStyle: fontStyle,\r\n fontVariant: fontVariant,\r\n fontWeight: fontWeight\r\n };\r\n};\r\n\r\n/***/ }),\r\n/* 37 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nvar parseLetterSpacing = exports.parseLetterSpacing = function parseLetterSpacing(letterSpacing) {\r\n if (letterSpacing === 'normal') {\r\n return 0;\r\n }\r\n var value = parseFloat(letterSpacing);\r\n return isNaN(value) ? 0 : value;\r\n};\r\n\r\n/***/ }),\r\n/* 38 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nvar LINE_BREAK = exports.LINE_BREAK = {\r\n NORMAL: 'normal',\r\n STRICT: 'strict'\r\n};\r\n\r\nvar parseLineBreak = exports.parseLineBreak = function parseLineBreak(wordBreak) {\r\n switch (wordBreak) {\r\n case 'strict':\r\n return LINE_BREAK.STRICT;\r\n case 'normal':\r\n default:\r\n return LINE_BREAK.NORMAL;\r\n }\r\n};\r\n\r\n/***/ }),\r\n/* 39 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.parseMargin = undefined;\r\n\r\nvar _Length = __webpack_require__(2);\r\n\r\nvar _Length2 = _interopRequireDefault(_Length);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nvar SIDES = ['top', 'right', 'bottom', 'left'];\r\n\r\nvar parseMargin = exports.parseMargin = function parseMargin(style) {\r\n return SIDES.map(function (side) {\r\n return new _Length2.default(style.getPropertyValue('margin-' + side));\r\n });\r\n};\r\n\r\n/***/ }),\r\n/* 40 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nvar OVERFLOW = exports.OVERFLOW = {\r\n VISIBLE: 0,\r\n HIDDEN: 1,\r\n SCROLL: 2,\r\n AUTO: 3\r\n};\r\n\r\nvar parseOverflow = exports.parseOverflow = function parseOverflow(overflow) {\r\n switch (overflow) {\r\n case 'hidden':\r\n return OVERFLOW.HIDDEN;\r\n case 'scroll':\r\n return OVERFLOW.SCROLL;\r\n case 'auto':\r\n return OVERFLOW.AUTO;\r\n case 'visible':\r\n default:\r\n return OVERFLOW.VISIBLE;\r\n }\r\n};\r\n\r\n/***/ }),\r\n/* 41 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.parseTextShadow = undefined;\r\n\r\nvar _Color = __webpack_require__(0);\r\n\r\nvar _Color2 = _interopRequireDefault(_Color);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nvar NUMBER = /^([+-]|\\d|\\.)$/i;\r\n\r\nvar parseTextShadow = exports.parseTextShadow = function parseTextShadow(textShadow) {\r\n if (textShadow === 'none' || typeof textShadow !== 'string') {\r\n return null;\r\n }\r\n\r\n var currentValue = '';\r\n var isLength = false;\r\n var values = [];\r\n var shadows = [];\r\n var numParens = 0;\r\n var color = null;\r\n\r\n var appendValue = function appendValue() {\r\n if (currentValue.length) {\r\n if (isLength) {\r\n values.push(parseFloat(currentValue));\r\n } else {\r\n color = new _Color2.default(currentValue);\r\n }\r\n }\r\n isLength = false;\r\n currentValue = '';\r\n };\r\n\r\n var appendShadow = function appendShadow() {\r\n if (values.length && color !== null) {\r\n shadows.push({\r\n color: color,\r\n offsetX: values[0] || 0,\r\n offsetY: values[1] || 0,\r\n blur: values[2] || 0\r\n });\r\n }\r\n values.splice(0, values.length);\r\n color = null;\r\n };\r\n\r\n for (var i = 0; i < textShadow.length; i++) {\r\n var c = textShadow[i];\r\n switch (c) {\r\n case '(':\r\n currentValue += c;\r\n numParens++;\r\n break;\r\n case ')':\r\n currentValue += c;\r\n numParens--;\r\n break;\r\n case ',':\r\n if (numParens === 0) {\r\n appendValue();\r\n appendShadow();\r\n } else {\r\n currentValue += c;\r\n }\r\n break;\r\n case ' ':\r\n if (numParens === 0) {\r\n appendValue();\r\n } else {\r\n currentValue += c;\r\n }\r\n break;\r\n default:\r\n if (currentValue.length === 0 && NUMBER.test(c)) {\r\n isLength = true;\r\n }\r\n currentValue += c;\r\n }\r\n }\r\n\r\n appendValue();\r\n appendShadow();\r\n\r\n if (shadows.length === 0) {\r\n return null;\r\n }\r\n\r\n return shadows;\r\n};\r\n\r\n/***/ }),\r\n/* 42 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.parseTransform = undefined;\r\n\r\nvar _Length = __webpack_require__(2);\r\n\r\nvar _Length2 = _interopRequireDefault(_Length);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nvar toFloat = function toFloat(s) {\r\n return parseFloat(s.trim());\r\n};\r\n\r\nvar MATRIX = /(matrix|matrix3d)\\((.+)\\)/;\r\n\r\nvar parseTransform = exports.parseTransform = function parseTransform(style) {\r\n var transform = parseTransformMatrix(style.transform || style.webkitTransform || style.mozTransform ||\r\n // $FlowFixMe\r\n style.msTransform ||\r\n // $FlowFixMe\r\n style.oTransform);\r\n if (transform === null) {\r\n return null;\r\n }\r\n\r\n return {\r\n transform: transform,\r\n transformOrigin: parseTransformOrigin(style.transformOrigin || style.webkitTransformOrigin || style.mozTransformOrigin ||\r\n // $FlowFixMe\r\n style.msTransformOrigin ||\r\n // $FlowFixMe\r\n style.oTransformOrigin)\r\n };\r\n};\r\n\r\n// $FlowFixMe\r\nvar parseTransformOrigin = function parseTransformOrigin(origin) {\r\n if (typeof origin !== 'string') {\r\n var v = new _Length2.default('0');\r\n return [v, v];\r\n }\r\n var values = origin.split(' ').map(_Length2.default.create);\r\n return [values[0], values[1]];\r\n};\r\n\r\n// $FlowFixMe\r\nvar parseTransformMatrix = function parseTransformMatrix(transform) {\r\n if (transform === 'none' || typeof transform !== 'string') {\r\n return null;\r\n }\r\n\r\n var match = transform.match(MATRIX);\r\n if (match) {\r\n if (match[1] === 'matrix') {\r\n var matrix = match[2].split(',').map(toFloat);\r\n return [matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]];\r\n } else {\r\n var matrix3d = match[2].split(',').map(toFloat);\r\n return [matrix3d[0], matrix3d[1], matrix3d[4], matrix3d[5], matrix3d[12], matrix3d[13]];\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n/***/ }),\r\n/* 43 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nvar VISIBILITY = exports.VISIBILITY = {\r\n VISIBLE: 0,\r\n HIDDEN: 1,\r\n COLLAPSE: 2\r\n};\r\n\r\nvar parseVisibility = exports.parseVisibility = function parseVisibility(visibility) {\r\n switch (visibility) {\r\n case 'hidden':\r\n return VISIBILITY.HIDDEN;\r\n case 'collapse':\r\n return VISIBILITY.COLLAPSE;\r\n case 'visible':\r\n default:\r\n return VISIBILITY.VISIBLE;\r\n }\r\n};\r\n\r\n/***/ }),\r\n/* 44 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nvar WORD_BREAK = exports.WORD_BREAK = {\r\n NORMAL: 'normal',\r\n BREAK_ALL: 'break-all',\r\n KEEP_ALL: 'keep-all'\r\n};\r\n\r\nvar parseWordBreak = exports.parseWordBreak = function parseWordBreak(wordBreak) {\r\n switch (wordBreak) {\r\n case 'break-all':\r\n return WORD_BREAK.BREAK_ALL;\r\n case 'keep-all':\r\n return WORD_BREAK.KEEP_ALL;\r\n case 'normal':\r\n default:\r\n return WORD_BREAK.NORMAL;\r\n }\r\n};\r\n\r\n/***/ }),\r\n/* 45 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nvar parseZIndex = exports.parseZIndex = function parseZIndex(zIndex) {\r\n var auto = zIndex === 'auto';\r\n return {\r\n auto: auto,\r\n order: auto ? 0 : parseInt(zIndex, 10)\r\n };\r\n};\r\n\r\n/***/ }),\r\n/* 46 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _Util = __webpack_require__(13);\r\n\r\nObject.defineProperty(exports, 'toCodePoints', {\r\n enumerable: true,\r\n get: function get() {\r\n return _Util.toCodePoints;\r\n }\r\n});\r\nObject.defineProperty(exports, 'fromCodePoint', {\r\n enumerable: true,\r\n get: function get() {\r\n return _Util.fromCodePoint;\r\n }\r\n});\r\n\r\nvar _LineBreak = __webpack_require__(47);\r\n\r\nObject.defineProperty(exports, 'LineBreaker', {\r\n enumerable: true,\r\n get: function get() {\r\n return _LineBreak.LineBreaker;\r\n }\r\n});\r\n\r\n/***/ }),\r\n/* 47 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.LineBreaker = exports.inlineBreakOpportunities = exports.lineBreakAtIndex = exports.codePointsToCharacterClasses = exports.UnicodeTrie = exports.BREAK_ALLOWED = exports.BREAK_NOT_ALLOWED = exports.BREAK_MANDATORY = exports.classes = exports.LETTER_NUMBER_MODIFIER = undefined;\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\r\n\r\nvar _Trie = __webpack_require__(48);\r\n\r\nvar _linebreakTrie = __webpack_require__(49);\r\n\r\nvar _linebreakTrie2 = _interopRequireDefault(_linebreakTrie);\r\n\r\nvar _Util = __webpack_require__(13);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar LETTER_NUMBER_MODIFIER = exports.LETTER_NUMBER_MODIFIER = 50;\r\n\r\n// Non-tailorable Line Breaking Classes\r\nvar BK = 1; // Cause a line break (after)\r\nvar CR = 2; // Cause a line break (after), except between CR and LF\r\nvar LF = 3; // Cause a line break (after)\r\nvar CM = 4; // Prohibit a line break between the character and the preceding character\r\nvar NL = 5; // Cause a line break (after)\r\nvar SG = 6; // Do not occur in well-formed text\r\nvar WJ = 7; // Prohibit line breaks before and after\r\nvar ZW = 8; // Provide a break opportunity\r\nvar GL = 9; // Prohibit line breaks before and after\r\nvar SP = 10; // Enable indirect line breaks\r\nvar ZWJ = 11; // Prohibit line breaks within joiner sequences\r\n// Break Opportunities\r\nvar B2 = 12; // Provide a line break opportunity before and after the character\r\nvar BA = 13; // Generally provide a line break opportunity after the character\r\nvar BB = 14; // Generally provide a line break opportunity before the character\r\nvar HY = 15; // Provide a line break opportunity after the character, except in numeric context\r\nvar CB = 16; // Provide a line break opportunity contingent on additional information\r\n// Characters Prohibiting Certain Breaks\r\nvar CL = 17; // Prohibit line breaks before\r\nvar CP = 18; // Prohibit line breaks before\r\nvar EX = 19; // Prohibit line breaks before\r\nvar IN = 20; // Allow only indirect line breaks between pairs\r\nvar NS = 21; // Allow only indirect line breaks before\r\nvar OP = 22; // Prohibit line breaks after\r\nvar QU = 23; // Act like they are both opening and closing\r\n// Numeric Context\r\nvar IS = 24; // Prevent breaks after any and before numeric\r\nvar NU = 25; // Form numeric expressions for line breaking purposes\r\nvar PO = 26; // Do not break following a numeric expression\r\nvar PR = 27; // Do not break in front of a numeric expression\r\nvar SY = 28; // Prevent a break before; and allow a break after\r\n// Other Characters\r\nvar AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\r\nvar AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\r\nvar CJ = 31; // Treat as NS or ID for strict or normal breaking.\r\nvar EB = 32; // Do not break from following Emoji Modifier\r\nvar EM = 33; // Do not break from preceding Emoji Base\r\nvar H2 = 34; // Form Korean syllable blocks\r\nvar H3 = 35; // Form Korean syllable blocks\r\nvar HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\r\nvar ID = 37; // Break before or after; except in some numeric context\r\nvar JL = 38; // Form Korean syllable blocks\r\nvar JV = 39; // Form Korean syllable blocks\r\nvar JT = 40; // Form Korean syllable blocks\r\nvar RI = 41; // Keep pairs together. For pairs; break before and after other classes\r\nvar SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\r\nvar XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\r\n\r\nvar classes = exports.classes = {\r\n BK: BK,\r\n CR: CR,\r\n LF: LF,\r\n CM: CM,\r\n NL: NL,\r\n SG: SG,\r\n WJ: WJ,\r\n ZW: ZW,\r\n GL: GL,\r\n SP: SP,\r\n ZWJ: ZWJ,\r\n B2: B2,\r\n BA: BA,\r\n BB: BB,\r\n HY: HY,\r\n CB: CB,\r\n CL: CL,\r\n CP: CP,\r\n EX: EX,\r\n IN: IN,\r\n NS: NS,\r\n OP: OP,\r\n QU: QU,\r\n IS: IS,\r\n NU: NU,\r\n PO: PO,\r\n PR: PR,\r\n SY: SY,\r\n AI: AI,\r\n AL: AL,\r\n CJ: CJ,\r\n EB: EB,\r\n EM: EM,\r\n H2: H2,\r\n H3: H3,\r\n HL: HL,\r\n ID: ID,\r\n JL: JL,\r\n JV: JV,\r\n JT: JT,\r\n RI: RI,\r\n SA: SA,\r\n XX: XX\r\n};\r\n\r\nvar BREAK_MANDATORY = exports.BREAK_MANDATORY = '!';\r\nvar BREAK_NOT_ALLOWED = exports.BREAK_NOT_ALLOWED = '×';\r\nvar BREAK_ALLOWED = exports.BREAK_ALLOWED = '÷';\r\nvar UnicodeTrie = exports.UnicodeTrie = (0, _Trie.createTrieFromBase64)(_linebreakTrie2.default);\r\n\r\nvar ALPHABETICS = [AL, HL];\r\nvar HARD_LINE_BREAKS = [BK, CR, LF, NL];\r\nvar SPACE = [SP, ZW];\r\nvar PREFIX_POSTFIX = [PR, PO];\r\nvar LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\r\nvar KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\r\nvar HYPHEN = [HY, BA];\r\n\r\nvar codePointsToCharacterClasses = exports.codePointsToCharacterClasses = function codePointsToCharacterClasses(codePoints) {\r\n var lineBreak = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'strict';\r\n\r\n var types = [];\r\n var indicies = [];\r\n var categories = [];\r\n codePoints.forEach(function (codePoint, index) {\r\n var classType = UnicodeTrie.get(codePoint);\r\n if (classType > LETTER_NUMBER_MODIFIER) {\r\n categories.push(true);\r\n classType -= LETTER_NUMBER_MODIFIER;\r\n } else {\r\n categories.push(false);\r\n }\r\n\r\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\r\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\r\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\r\n indicies.push(index);\r\n return types.push(CB);\r\n }\r\n }\r\n\r\n if (classType === CM || classType === ZWJ) {\r\n // LB10 Treat any remaining combining mark or ZWJ as AL.\r\n if (index === 0) {\r\n indicies.push(index);\r\n return types.push(AL);\r\n }\r\n\r\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\r\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\r\n var prev = types[index - 1];\r\n if (LINE_BREAKS.indexOf(prev) === -1) {\r\n indicies.push(indicies[index - 1]);\r\n return types.push(prev);\r\n }\r\n indicies.push(index);\r\n return types.push(AL);\r\n }\r\n\r\n indicies.push(index);\r\n\r\n if (classType === CJ) {\r\n return types.push(lineBreak === 'strict' ? NS : ID);\r\n }\r\n\r\n if (classType === SA) {\r\n return types.push(AL);\r\n }\r\n\r\n if (classType === AI) {\r\n return types.push(AL);\r\n }\r\n\r\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\r\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\r\n // to take into account the actual line breaking properties for these characters.\r\n if (classType === XX) {\r\n if (codePoint >= 0x20000 && codePoint <= 0x2fffd || codePoint >= 0x30000 && codePoint <= 0x3fffd) {\r\n return types.push(ID);\r\n } else {\r\n return types.push(AL);\r\n }\r\n }\r\n\r\n types.push(classType);\r\n });\r\n\r\n return [indicies, types, categories];\r\n};\r\n\r\nvar isAdjacentWithSpaceIgnored = function isAdjacentWithSpaceIgnored(a, b, currentIndex, classTypes) {\r\n var current = classTypes[currentIndex];\r\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\r\n var i = currentIndex;\r\n while (i <= classTypes.length) {\r\n i++;\r\n var next = classTypes[i];\r\n\r\n if (next === b) {\r\n return true;\r\n }\r\n\r\n if (next !== SP) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (current === SP) {\r\n var _i = currentIndex;\r\n\r\n while (_i > 0) {\r\n _i--;\r\n var prev = classTypes[_i];\r\n\r\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\r\n var n = currentIndex;\r\n while (n <= classTypes.length) {\r\n n++;\r\n var _next = classTypes[n];\r\n\r\n if (_next === b) {\r\n return true;\r\n }\r\n\r\n if (_next !== SP) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (prev !== SP) {\r\n break;\r\n }\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nvar previousNonSpaceClassType = function previousNonSpaceClassType(currentIndex, classTypes) {\r\n var i = currentIndex;\r\n while (i >= 0) {\r\n var type = classTypes[i];\r\n if (type === SP) {\r\n i--;\r\n } else {\r\n return type;\r\n }\r\n }\r\n return 0;\r\n};\r\n\r\nvar _lineBreakAtIndex = function _lineBreakAtIndex(codePoints, classTypes, indicies, index, forbiddenBreaks) {\r\n if (indicies[index] === 0) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n var currentIndex = index - 1;\r\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n var beforeIndex = currentIndex - 1;\r\n var afterIndex = currentIndex + 1;\r\n var current = classTypes[currentIndex];\r\n\r\n // LB4 Always break after hard line breaks.\r\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\r\n var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\r\n var next = classTypes[afterIndex];\r\n\r\n if (current === CR && next === LF) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\r\n return BREAK_MANDATORY;\r\n }\r\n\r\n // LB6 Do not break before hard line breaks.\r\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB7 Do not break before spaces or zero width space.\r\n if (SPACE.indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\r\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\r\n return BREAK_ALLOWED;\r\n }\r\n\r\n // LB8a Do not break between a zero width joiner and an ideograph, emoji base or emoji modifier.\r\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ && (next === ID || next === EB || next === EM)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB11 Do not break before or after Word joiner and related characters.\r\n if (current === WJ || next === WJ) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB12 Do not break after NBSP and related characters.\r\n if (current === GL) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\r\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\r\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB14 Do not break after ‘[’, even after spaces.\r\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB15 Do not break within ‘”[’, even with intervening spaces.\r\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\r\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB17 Do not break within ‘——’, even with intervening spaces.\r\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB18 Break after spaces.\r\n if (current === SP) {\r\n return BREAK_ALLOWED;\r\n }\r\n\r\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\r\n if (current === QU || next === QU) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB20 Break before and after unresolved CB.\r\n if (next === CB || current === CB) {\r\n return BREAK_ALLOWED;\r\n }\r\n\r\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\r\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB21a Don't break after Hebrew + Hyphen.\r\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB21b Don’t break between Solidus and Hebrew letters.\r\n if (current === SY && next === HL) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB22 Do not break between two ellipses, or between letters, numbers or exclamations and ellipsis.\r\n if (next === IN && ALPHABETICS.concat(IN, EX, NU, ID, EB, EM).indexOf(current) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB23 Do not break between digits and letters.\r\n if (ALPHABETICS.indexOf(next) !== -1 && current === NU || ALPHABETICS.indexOf(current) !== -1 && next === NU) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\r\n if (current === PR && [ID, EB, EM].indexOf(next) !== -1 || [ID, EB, EM].indexOf(current) !== -1 && next === PO) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\r\n if (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1 || PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB25 Do not break between the following pairs of classes relevant to numbers:\r\n if (\r\n // (PR | PO) × ( OP | HY )? NU\r\n [PR, PO].indexOf(current) !== -1 && (next === NU || [OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU) ||\r\n // ( OP | HY ) × NU\r\n [OP, HY].indexOf(current) !== -1 && next === NU ||\r\n // NU ×\t(NU | SY | IS)\r\n current === NU && [NU, SY, IS].indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\r\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\r\n var prevIndex = currentIndex;\r\n while (prevIndex >= 0) {\r\n var type = classTypes[prevIndex];\r\n if (type === NU) {\r\n return BREAK_NOT_ALLOWED;\r\n } else if ([SY, IS].indexOf(type) !== -1) {\r\n prevIndex--;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\r\n if ([PR, PO].indexOf(next) !== -1) {\r\n var _prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\r\n while (_prevIndex >= 0) {\r\n var _type = classTypes[_prevIndex];\r\n if (_type === NU) {\r\n return BREAK_NOT_ALLOWED;\r\n } else if ([SY, IS].indexOf(_type) !== -1) {\r\n _prevIndex--;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // LB26 Do not break a Korean syllable.\r\n if (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1 || [JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1 || [JT, H3].indexOf(current) !== -1 && next === JT) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB27 Treat a Korean Syllable Block the same as ID.\r\n if (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1 || KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB28 Do not break between alphabetics (“at”).\r\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\r\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\r\n if (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP || ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\r\n // indicators preceding the position of the break.\r\n if (current === RI && next === RI) {\r\n var i = indicies[currentIndex];\r\n var count = 1;\r\n while (i > 0) {\r\n i--;\r\n if (classTypes[i] === RI) {\r\n count++;\r\n } else {\r\n break;\r\n }\r\n }\r\n if (count % 2 !== 0) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n }\r\n\r\n // LB30b Do not break between an emoji base and an emoji modifier.\r\n if (current === EB && next === EM) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n return BREAK_ALLOWED;\r\n};\r\n\r\nvar lineBreakAtIndex = exports.lineBreakAtIndex = function lineBreakAtIndex(codePoints, index) {\r\n // LB2 Never break at the start of text.\r\n if (index === 0) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n\r\n // LB3 Always break at the end of text.\r\n if (index >= codePoints.length) {\r\n return BREAK_MANDATORY;\r\n }\r\n\r\n var _codePointsToCharacte = codePointsToCharacterClasses(codePoints),\r\n _codePointsToCharacte2 = _slicedToArray(_codePointsToCharacte, 2),\r\n indicies = _codePointsToCharacte2[0],\r\n classTypes = _codePointsToCharacte2[1];\r\n\r\n return _lineBreakAtIndex(codePoints, classTypes, indicies, index);\r\n};\r\n\r\nvar cssFormattedClasses = function cssFormattedClasses(codePoints, options) {\r\n if (!options) {\r\n options = { lineBreak: 'normal', wordBreak: 'normal' };\r\n }\r\n\r\n var _codePointsToCharacte3 = codePointsToCharacterClasses(codePoints, options.lineBreak),\r\n _codePointsToCharacte4 = _slicedToArray(_codePointsToCharacte3, 3),\r\n indicies = _codePointsToCharacte4[0],\r\n classTypes = _codePointsToCharacte4[1],\r\n isLetterNumber = _codePointsToCharacte4[2];\r\n\r\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\r\n classTypes = classTypes.map(function (type) {\r\n return [NU, AL, SA].indexOf(type) !== -1 ? ID : type;\r\n });\r\n }\r\n\r\n var forbiddenBreakpoints = options.wordBreak === 'keep-all' ? isLetterNumber.map(function (isLetterNumber, i) {\r\n return isLetterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\r\n }) : null;\r\n\r\n return [indicies, classTypes, forbiddenBreakpoints];\r\n};\r\n\r\nvar inlineBreakOpportunities = exports.inlineBreakOpportunities = function inlineBreakOpportunities(str, options) {\r\n var codePoints = (0, _Util.toCodePoints)(str);\r\n var output = BREAK_NOT_ALLOWED;\r\n\r\n var _cssFormattedClasses = cssFormattedClasses(codePoints, options),\r\n _cssFormattedClasses2 = _slicedToArray(_cssFormattedClasses, 3),\r\n indicies = _cssFormattedClasses2[0],\r\n classTypes = _cssFormattedClasses2[1],\r\n forbiddenBreakpoints = _cssFormattedClasses2[2];\r\n\r\n codePoints.forEach(function (codePoint, i) {\r\n output += (0, _Util.fromCodePoint)(codePoint) + (i >= codePoints.length - 1 ? BREAK_MANDATORY : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\r\n });\r\n\r\n return output;\r\n};\r\n\r\nvar Break = function () {\r\n function Break(codePoints, lineBreak, start, end) {\r\n _classCallCheck(this, Break);\r\n\r\n this._codePoints = codePoints;\r\n this.required = lineBreak === BREAK_MANDATORY;\r\n this.start = start;\r\n this.end = end;\r\n }\r\n\r\n _createClass(Break, [{\r\n key: 'slice',\r\n value: function slice() {\r\n return _Util.fromCodePoint.apply(undefined, _toConsumableArray(this._codePoints.slice(this.start, this.end)));\r\n }\r\n }]);\r\n\r\n return Break;\r\n}();\r\n\r\nvar LineBreaker = exports.LineBreaker = function LineBreaker(str, options) {\r\n var codePoints = (0, _Util.toCodePoints)(str);\r\n\r\n var _cssFormattedClasses3 = cssFormattedClasses(codePoints, options),\r\n _cssFormattedClasses4 = _slicedToArray(_cssFormattedClasses3, 3),\r\n indicies = _cssFormattedClasses4[0],\r\n classTypes = _cssFormattedClasses4[1],\r\n forbiddenBreakpoints = _cssFormattedClasses4[2];\r\n\r\n var length = codePoints.length;\r\n var lastEnd = 0;\r\n var nextIndex = 0;\r\n\r\n return {\r\n next: function next() {\r\n if (nextIndex >= length) {\r\n return { done: true };\r\n }\r\n var lineBreak = BREAK_NOT_ALLOWED;\r\n while (nextIndex < length && (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === BREAK_NOT_ALLOWED) {}\r\n\r\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\r\n var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\r\n lastEnd = nextIndex;\r\n return { value: value, done: false };\r\n }\r\n\r\n return { done: true };\r\n }\r\n };\r\n};\r\n\r\n/***/ }),\r\n/* 48 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.Trie = exports.createTrieFromBase64 = exports.UTRIE2_INDEX_2_MASK = exports.UTRIE2_INDEX_2_BLOCK_LENGTH = exports.UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = exports.UTRIE2_INDEX_1_OFFSET = exports.UTRIE2_UTF8_2B_INDEX_2_LENGTH = exports.UTRIE2_UTF8_2B_INDEX_2_OFFSET = exports.UTRIE2_INDEX_2_BMP_LENGTH = exports.UTRIE2_LSCP_INDEX_2_LENGTH = exports.UTRIE2_DATA_MASK = exports.UTRIE2_DATA_BLOCK_LENGTH = exports.UTRIE2_LSCP_INDEX_2_OFFSET = exports.UTRIE2_SHIFT_1_2 = exports.UTRIE2_INDEX_SHIFT = exports.UTRIE2_SHIFT_1 = exports.UTRIE2_SHIFT_2 = undefined;\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _Util = __webpack_require__(13);\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\n/** Shift size for getting the index-2 table offset. */\r\nvar UTRIE2_SHIFT_2 = exports.UTRIE2_SHIFT_2 = 5;\r\n\r\n/** Shift size for getting the index-1 table offset. */\r\nvar UTRIE2_SHIFT_1 = exports.UTRIE2_SHIFT_1 = 6 + 5;\r\n\r\n/**\r\n * Shift size for shifting left the index array values.\r\n * Increases possible data size with 16-bit index values at the cost\r\n * of compactability.\r\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\r\n */\r\nvar UTRIE2_INDEX_SHIFT = exports.UTRIE2_INDEX_SHIFT = 2;\r\n\r\n/**\r\n * Difference between the two shift sizes,\r\n * for getting an index-1 offset from an index-2 offset. 6=11-5\r\n */\r\nvar UTRIE2_SHIFT_1_2 = exports.UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\r\n\r\n/**\r\n * The part of the index-2 table for U+D800..U+DBFF stores values for\r\n * lead surrogate code _units_ not code _points_.\r\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\r\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\r\n */\r\nvar UTRIE2_LSCP_INDEX_2_OFFSET = exports.UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\r\n\r\n/** Number of entries in a data block. 32=0x20 */\r\nvar UTRIE2_DATA_BLOCK_LENGTH = exports.UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\r\n/** Mask for getting the lower bits for the in-data-block offset. */\r\nvar UTRIE2_DATA_MASK = exports.UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\r\n\r\nvar UTRIE2_LSCP_INDEX_2_LENGTH = exports.UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\r\n/** Count the lengths of both BMP pieces. 2080=0x820 */\r\nvar UTRIE2_INDEX_2_BMP_LENGTH = exports.UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\r\n/**\r\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\r\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\r\n */\r\nvar UTRIE2_UTF8_2B_INDEX_2_OFFSET = exports.UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\r\nvar UTRIE2_UTF8_2B_INDEX_2_LENGTH = exports.UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\r\n/**\r\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\r\n * Variable length, for code points up to highStart, where the last single-value range starts.\r\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\r\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\r\n *\r\n * The part of the index-2 table for supplementary code points starts\r\n * after this index-1 table.\r\n *\r\n * Both the index-1 table and the following part of the index-2 table\r\n * are omitted completely if there is only BMP data.\r\n */\r\nvar UTRIE2_INDEX_1_OFFSET = exports.UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\r\n\r\n/**\r\n * Number of index-1 entries for the BMP. 32=0x20\r\n * This part of the index-1 table is omitted from the serialized form.\r\n */\r\nvar UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = exports.UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\r\n\r\n/** Number of entries in an index-2 block. 64=0x40 */\r\nvar UTRIE2_INDEX_2_BLOCK_LENGTH = exports.UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\r\n/** Mask for getting the lower bits for the in-index-2-block offset. */\r\nvar UTRIE2_INDEX_2_MASK = exports.UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\r\n\r\nvar createTrieFromBase64 = exports.createTrieFromBase64 = function createTrieFromBase64(base64) {\r\n var buffer = (0, _Util.decode)(base64);\r\n var view32 = Array.isArray(buffer) ? (0, _Util.polyUint32Array)(buffer) : new Uint32Array(buffer);\r\n var view16 = Array.isArray(buffer) ? (0, _Util.polyUint16Array)(buffer) : new Uint16Array(buffer);\r\n var headerLength = 24;\r\n\r\n var index = view16.slice(headerLength / 2, view32[4] / 2);\r\n var data = view32[5] === 2 ? view16.slice((headerLength + view32[4]) / 2) : view32.slice(Math.ceil((headerLength + view32[4]) / 4));\r\n\r\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\r\n};\r\n\r\nvar Trie = exports.Trie = function () {\r\n function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\r\n _classCallCheck(this, Trie);\r\n\r\n this.initialValue = initialValue;\r\n this.errorValue = errorValue;\r\n this.highStart = highStart;\r\n this.highValueIndex = highValueIndex;\r\n this.index = index;\r\n this.data = data;\r\n }\r\n\r\n /**\r\n * Get the value for a code point as stored in the Trie.\r\n *\r\n * @param codePoint the code point\r\n * @return the value\r\n */\r\n\r\n\r\n _createClass(Trie, [{\r\n key: 'get',\r\n value: function get(codePoint) {\r\n var ix = void 0;\r\n if (codePoint >= 0) {\r\n if (codePoint < 0x0d800 || codePoint > 0x0dbff && codePoint <= 0x0ffff) {\r\n // Ordinary BMP code point, excluding leading surrogates.\r\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\r\n // 16 bit data is stored in the index array itself.\r\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\r\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\r\n return this.data[ix];\r\n }\r\n\r\n if (codePoint <= 0xffff) {\r\n // Lead Surrogate Code Point. A Separate index section is stored for\r\n // lead surrogate code units and code points.\r\n // The main index has the code unit data.\r\n // For this function, we need the code point data.\r\n // Note: this expression could be refactored for slightly improved efficiency, but\r\n // surrogate code points will be so rare in practice that it's not worth it.\r\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + (codePoint - 0xd800 >> UTRIE2_SHIFT_2)];\r\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\r\n return this.data[ix];\r\n }\r\n\r\n if (codePoint < this.highStart) {\r\n // Supplemental code point, use two-level lookup.\r\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\r\n ix = this.index[ix];\r\n ix += codePoint >> UTRIE2_SHIFT_2 & UTRIE2_INDEX_2_MASK;\r\n ix = this.index[ix];\r\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\r\n return this.data[ix];\r\n }\r\n if (codePoint <= 0x10ffff) {\r\n return this.data[this.highValueIndex];\r\n }\r\n }\r\n\r\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\r\n return this.errorValue;\r\n }\r\n }]);\r\n\r\n return Trie;\r\n}();\r\n\r\n/***/ }),\r\n/* 49 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nmodule.exports = 'KwAAAAAAAAAACA4AIDoAAPAfAAACAAAAAAAIABAAGABAAEgAUABYAF4AZgBeAGYAYABoAHAAeABeAGYAfACEAIAAiACQAJgAoACoAK0AtQC9AMUAXgBmAF4AZgBeAGYAzQDVAF4AZgDRANkA3gDmAOwA9AD8AAQBDAEUARoBIgGAAIgAJwEvATcBPwFFAU0BTAFUAVwBZAFsAXMBewGDATAAiwGTAZsBogGkAawBtAG8AcIBygHSAdoB4AHoAfAB+AH+AQYCDgIWAv4BHgImAi4CNgI+AkUCTQJTAlsCYwJrAnECeQKBAk0CiQKRApkCoQKoArACuALAAsQCzAIwANQC3ALkAjAA7AL0AvwCAQMJAxADGAMwACADJgMuAzYDPgOAAEYDSgNSA1IDUgNaA1oDYANiA2IDgACAAGoDgAByA3YDfgOAAIQDgACKA5IDmgOAAIAAogOqA4AAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAK8DtwOAAIAAvwPHA88D1wPfAyAD5wPsA/QD/AOAAIAABAQMBBIEgAAWBB4EJgQuBDMEIAM7BEEEXgBJBCADUQRZBGEEaQQwADAAcQQ+AXkEgQSJBJEEgACYBIAAoASoBK8EtwQwAL8ExQSAAIAAgACAAIAAgACgAM0EXgBeAF4AXgBeAF4AXgBeANUEXgDZBOEEXgDpBPEE+QQBBQkFEQUZBSEFKQUxBTUFPQVFBUwFVAVcBV4AYwVeAGsFcwV7BYMFiwWSBV4AmgWgBacFXgBeAF4AXgBeAKsFXgCyBbEFugW7BcIFwgXIBcIFwgXQBdQF3AXkBesF8wX7BQMGCwYTBhsGIwYrBjMGOwZeAD8GRwZNBl4AVAZbBl4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAGMGXgBqBnEGXgBeAF4AXgBeAF4AXgBeAF4AXgB5BoAG4wSGBo4GkwaAAIADHgR5AF4AXgBeAJsGgABGA4AAowarBrMGswagALsGwwbLBjAA0wbaBtoG3QbaBtoG2gbaBtoG2gblBusG8wb7BgMHCwcTBxsHCwcjBysHMAc1BzUHOgdCB9oGSgdSB1oHYAfaBloHaAfaBlIH2gbaBtoG2gbaBtoG2gbaBjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHbQdeAF4ANQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQd1B30HNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B4MH2gaKB68EgACAAIAAgACAAIAAgACAAI8HlwdeAJ8HpweAAIAArwe3B14AXgC/B8UHygcwANAH2AfgB4AA6AfwBz4B+AcACFwBCAgPCBcIogEYAR8IJwiAAC8INwg/CCADRwhPCFcIXwhnCEoDGgSAAIAAgABvCHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIhAiLCI4IMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQc1BzUHNQc1BzUHNQc1BzUHNQc1B54INQc1B6II2gaqCLIIugiAAIAAvgjGCIAAgACAAIAAgACAAIAAgACAAIAAywiHAYAA0wiAANkI3QjlCO0I9Aj8CIAAgACAAAIJCgkSCRoJIgknCTYHLwk3CZYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiAAIAAAAFAAXgBeAGAAcABeAHwAQACQAKAArQC9AJ4AXgBeAE0A3gBRAN4A7AD8AMwBGgEAAKcBNwEFAUwBXAF4QkhCmEKnArcCgAHHAsABz4LAAcABwAHAAd+C6ABoAG+C/4LAAcABwAHAAc+DF4MAAcAB54M3gweDV4Nng3eDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEeDqABVg6WDqABoQ6gAaABoAHXDvcONw/3DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DncPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB7cPPwlGCU4JMACAAIAAgABWCV4JYQmAAGkJcAl4CXwJgAkwADAAMAAwAIgJgACLCZMJgACZCZ8JowmrCYAAswkwAF4AXgB8AIAAuwkABMMJyQmAAM4JgADVCTAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAqwYWBNkIMAAwADAAMADdCeAJ6AnuCR4E9gkwAP4JBQoNCjAAMACAABUK0wiAAB0KJAosCjQKgAAwADwKQwqAAEsKvQmdCVMKWwowADAAgACAALcEMACAAGMKgABrCjAAMAAwADAAMAAwADAAMAAwADAAMAAeBDAAMAAwADAAMAAwADAAMAAwADAAMAAwAIkEPQFzCnoKiQSCCooKkAqJBJgKoAqkCokEGAGsCrQKvArBCjAAMADJCtEKFQHZCuEK/gHpCvEKMAAwADAAMACAAIwE+QowAIAAPwEBCzAAMAAwADAAMACAAAkLEQswAIAAPwEZCyELgAAOCCkLMAAxCzkLMAAwADAAMAAwADAAXgBeAEELMAAwADAAMAAwADAAMAAwAEkLTQtVC4AAXAtkC4AAiQkwADAAMAAwADAAMAAwADAAbAtxC3kLgAuFC4sLMAAwAJMLlwufCzAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAApwswADAAMACAAIAAgACvC4AAgACAAIAAgACAALcLMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAvwuAAMcLgACAAIAAgACAAIAAyguAAIAAgACAAIAA0QswADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAANkLgACAAIAA4AswADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACJCR4E6AswADAAhwHwC4AA+AsADAgMEAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACAAIAAGAwdDCUMMAAwAC0MNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQw1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHPQwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADUHNQc1BzUHNQc1BzUHNQc2BzAAMAA5DDUHNQc1BzUHNQc1BzUHNQc1BzUHNQdFDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAATQxSDFoMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAF4AXgBeAF4AXgBeAF4AYgxeAGoMXgBxDHkMfwxeAIUMXgBeAI0MMAAwADAAMAAwAF4AXgCVDJ0MMAAwADAAMABeAF4ApQxeAKsMswy7DF4Awgy9DMoMXgBeAF4AXgBeAF4AXgBeAF4AXgDRDNkMeQBqCeAM3Ax8AOYM7Az0DPgMXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgCgAAANoAAHDQ4NFg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAeDSYNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAC4NMABeAF4ANg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAD4NRg1ODVYNXg1mDTAAbQ0wADAAMAAwADAAMAAwADAA2gbaBtoG2gbaBtoG2gbaBnUNeg3CBYANwgWFDdoGjA3aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gaUDZwNpA2oDdoG2gawDbcNvw3HDdoG2gbPDdYN3A3fDeYN2gbsDfMN2gbaBvoN/g3aBgYODg7aBl4AXgBeABYOXgBeACUG2gYeDl4AJA5eACwO2w3aBtoGMQ45DtoG2gbaBtoGQQ7aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B1EO2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQdZDjUHNQc1BzUHNQc1B2EONQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHaA41BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B3AO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B2EO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBkkOeA6gAKAAoAAwADAAMAAwAKAAoACgAKAAoACgAKAAgA4wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAD//wQABAAEAAQABAAEAAQABAAEAA0AAwABAAEAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAKABMAFwAeABsAGgAeABcAFgASAB4AGwAYAA8AGAAcAEsASwBLAEsASwBLAEsASwBLAEsAGAAYAB4AHgAeABMAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAFgAbABIAHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYADQARAB4ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkAFgAaABsAGwAbAB4AHQAdAB4ATwAXAB4ADQAeAB4AGgAbAE8ATwAOAFAAHQAdAB0ATwBPABcATwBPAE8AFgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwArAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAAQABAANAA0ASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAUAArACsAKwArACsAKwArACsABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAGgAaAFAAUABQAFAAUABMAB4AGwBQAB4AKwArACsABAAEAAQAKwBQAFAAUABQAFAAUAArACsAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUAArAFAAUAArACsABAArAAQABAAEAAQABAArACsAKwArAAQABAArACsABAAEAAQAKwArACsABAArACsAKwArACsAKwArAFAAUABQAFAAKwBQACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwAEAAQAUABQAFAABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQAKwArAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeABsAKwArACsAKwArACsAKwBQAAQABAAEAAQABAAEACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAKwArACsAKwArACsAKwArAAQABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwAEAFAAKwBQAFAAUABQAFAAUAArACsAKwBQAFAAUAArAFAAUABQAFAAKwArACsAUABQACsAUAArAFAAUAArACsAKwBQAFAAKwArACsAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQAKwArACsABAAEAAQAKwAEAAQABAAEACsAKwBQACsAKwArACsAKwArAAQAKwArACsAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAB4AHgAeAB4AHgAeABsAHgArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArAFAAUABQACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAB4AUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArACsAKwArACsAKwArAFAAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwArAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAKwBcAFwAKwBcACsAKwBcACsAKwArACsAKwArAFwAXABcAFwAKwBcAFwAXABcAFwAXABcACsAXABcAFwAKwBcACsAXAArACsAXABcACsAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgArACoAKgBcACsAKwBcAFwAXABcAFwAKwBcACsAKgAqACoAKgAqACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAFwAXABcAFwAUAAOAA4ADgAOAB4ADgAOAAkADgAOAA0ACQATABMAEwATABMACQAeABMAHgAeAB4ABAAEAB4AHgAeAB4AHgAeAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUAANAAQAHgAEAB4ABAAWABEAFgARAAQABABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAAQABAAEAAQABAANAAQABABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsADQANAB4AHgAeAB4AHgAeAAQAHgAeAB4AHgAeAB4AKwAeAB4ADgAOAA0ADgAeAB4AHgAeAB4ACQAJACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgAeAB4AHgBcAFwAXABcAFwAXAAqACoAKgAqAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAKgAqACoAKgAqACoAKgBcAFwAXAAqACoAKgAqAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAXAAqAEsASwBLAEsASwBLAEsASwBLAEsAKgAqACoAKgAqACoAUABQAFAAUABQAFAAKwBQACsAKwArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQACsAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwAEAAQABAAeAA0AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAEQArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAADQANAA0AUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAA0ADQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoADQANABUAXAANAB4ADQAbAFwAKgArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAB4AHgATABMADQANAA4AHgATABMAHgAEAAQABAAJACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAUABQAFAAUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwAeACsAKwArABMAEwBLAEsASwBLAEsASwBLAEsASwBLAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwBcAFwAXABcAFwAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcACsAKwArACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwAeAB4AXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsABABLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKgAqACoAKgAqACoAKgBcACoAKgAqACoAKgAqACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAUABQAFAAUABQAFAAUAArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4ADQANAA0ADQAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAHgAeAB4AHgBQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwANAA0ADQANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwBQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsABAAEAAQAHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAABABQAFAAUABQAAQABAAEAFAAUAAEAAQABAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAKwBQACsAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAKwArAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAKwAeAB4AHgAeAB4AHgAeAA4AHgArAA0ADQANAA0ADQANAA0ACQANAA0ADQAIAAQACwAEAAQADQAJAA0ADQAMAB0AHQAeABcAFwAWABcAFwAXABYAFwAdAB0AHgAeABQAFAAUAA0AAQABAAQABAAEAAQABAAJABoAGgAaABoAGgAaABoAGgAeABcAFwAdABUAFQAeAB4AHgAeAB4AHgAYABYAEQAVABUAFQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgANAB4ADQANAA0ADQAeAA0ADQANAAcAHgAeAB4AHgArAAQABAAEAAQABAAEAAQABAAEAAQAUABQACsAKwBPAFAAUABQAFAAUAAeAB4AHgAWABEATwBQAE8ATwBPAE8AUABQAFAAUABQAB4AHgAeABYAEQArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGgAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgBQABoAHgAdAB4AUAAeABoAHgAeAB4AHgAeAB4AHgAeAB4ATwAeAFAAGwAeAB4AUABQAFAAUABQAB4AHgAeAB0AHQAeAFAAHgBQAB4AUAAeAFAATwBQAFAAHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AUABQAFAAUABPAE8AUABQAFAAUABQAE8AUABQAE8AUABPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAE8ATwBPAE8ATwBPAE8ATwBPAE8AUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAATwAeAB4AKwArACsAKwAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB0AHQAeAB4AHgAdAB0AHgAeAB0AHgAeAB4AHQAeAB0AGwAbAB4AHQAeAB4AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB0AHgAdAB4AHQAdAB0AHQAdAB0AHgAdAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAdAB0AHQAdAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAlACUAHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB0AHQAeAB4AHgAeAB0AHQAdAB4AHgAdAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB0AHQAeAB4AHQAeAB4AHgAeAB0AHQAeAB4AHgAeACUAJQAdAB0AJQAeACUAJQAlACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHQAdAB0AHgAdACUAHQAdAB4AHQAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHQAdAB0AHQAlAB4AJQAlACUAHQAlACUAHQAdAB0AJQAlAB0AHQAlAB0AHQAlACUAJQAeAB0AHgAeAB4AHgAdAB0AJQAdAB0AHQAdAB0AHQAlACUAJQAlACUAHQAlACUAIAAlAB0AHQAlACUAJQAlACUAJQAlACUAHgAeAB4AJQAlACAAIAAgACAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeABcAFwAXABcAFwAXAB4AEwATACUAHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACUAJQBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwArACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAE8ATwBPAE8ATwBPAE8ATwAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeACsAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUAArACsAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQBQAFAAUABQACsAKwArACsAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAABAAEAAQAKwAEAAQAKwArACsAKwArAAQABAAEAAQAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsABAAEAAQAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsADQANAA0ADQANAA0ADQANAB4AKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAUABQAFAAUABQAA0ADQANAA0ADQANABQAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwANAA0ADQANAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAeAAQABAAEAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLACsADQArAB4AKwArAAQABAAEAAQAUABQAB4AUAArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwAEAAQABAAEAAQABAAEAAQABAAOAA0ADQATABMAHgAeAB4ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0AUABQAFAAUAAEAAQAKwArAAQADQANAB4AUAArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXABcAA0ADQANACoASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUAArACsAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANACsADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEcARwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwAeAAQABAANAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAEAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUAArACsAUAArACsAUABQACsAKwBQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAeAB4ADQANAA0ADQAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAArAAQABAArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAEAAQABAAEAAQABAAEACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAFgAWAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAKwBQACsAKwArACsAKwArAFAAKwArACsAKwBQACsAUAArAFAAKwBQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQACsAUAArAFAAKwBQACsAUABQACsAUAArACsAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAUABQAFAAUAArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUAArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAlACUAJQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeACUAJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeACUAJQAlACUAJQAeACUAJQAlACUAJQAgACAAIAAlACUAIAAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIQAhACEAIQAhACUAJQAgACAAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAIAAlACUAJQAlACAAJQAgACAAIAAgACAAIAAgACAAIAAlACUAJQAgACUAJQAlACUAIAAgACAAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeACUAHgAlAB4AJQAlACUAJQAlACAAJQAlACUAJQAeACUAHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAIAAgACAAIAAgAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFwAXABcAFQAVABUAHgAeAB4AHgAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAlACAAIAAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsA';\r\n\r\n/***/ }),\r\n/* 50 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _Path = __webpack_require__(6);\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar Circle = function Circle(x, y, radius) {\r\n _classCallCheck(this, Circle);\r\n\r\n this.type = _Path.PATH.CIRCLE;\r\n this.x = x;\r\n this.y = y;\r\n this.radius = radius;\r\n if (true) {\r\n if (isNaN(x)) {\r\n console.error('Invalid x value given for Circle');\r\n }\r\n if (isNaN(y)) {\r\n console.error('Invalid y value given for Circle');\r\n }\r\n if (isNaN(radius)) {\r\n console.error('Invalid radius value given for Circle');\r\n }\r\n }\r\n};\r\n\r\nexports.default = Circle;\r\n\r\n/***/ }),\r\n/* 51 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _Bounds = __webpack_require__(1);\r\n\r\nvar _Font = __webpack_require__(25);\r\n\r\nvar _Gradient = __webpack_require__(52);\r\n\r\nvar _TextContainer = __webpack_require__(9);\r\n\r\nvar _TextContainer2 = _interopRequireDefault(_TextContainer);\r\n\r\nvar _background = __webpack_require__(5);\r\n\r\nvar _border = __webpack_require__(12);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar Renderer = function () {\r\n function Renderer(target, options) {\r\n _classCallCheck(this, Renderer);\r\n\r\n this.target = target;\r\n this.options = options;\r\n target.render(options);\r\n }\r\n\r\n _createClass(Renderer, [{\r\n key: 'renderNode',\r\n value: function renderNode(container) {\r\n if (container.isVisible()) {\r\n this.renderNodeBackgroundAndBorders(container);\r\n this.renderNodeContent(container);\r\n }\r\n }\r\n }, {\r\n key: 'renderNodeContent',\r\n value: function renderNodeContent(container) {\r\n var _this = this;\r\n\r\n var callback = function callback() {\r\n if (container.childNodes.length) {\r\n container.childNodes.forEach(function (child) {\r\n if (child instanceof _TextContainer2.default) {\r\n var style = child.parent.style;\r\n _this.target.renderTextNode(child.bounds, style.color, style.font, style.textDecoration, style.textShadow);\r\n } else {\r\n _this.target.drawShape(child, container.style.color);\r\n }\r\n });\r\n }\r\n\r\n if (container.image) {\r\n var _image = _this.options.imageStore.get(container.image);\r\n if (_image) {\r\n var contentBox = (0, _Bounds.calculateContentBox)(container.bounds, container.style.padding, container.style.border);\r\n var _width = typeof _image.width === 'number' && _image.width > 0 ? _image.width : contentBox.width;\r\n var _height = typeof _image.height === 'number' && _image.height > 0 ? _image.height : contentBox.height;\r\n if (_width > 0 && _height > 0) {\r\n _this.target.clip([(0, _Bounds.calculatePaddingBoxPath)(container.curvedBounds)], function () {\r\n _this.target.drawImage(_image, new _Bounds.Bounds(0, 0, _width, _height), contentBox);\r\n });\r\n }\r\n }\r\n }\r\n };\r\n var paths = container.getClipPaths();\r\n if (paths.length) {\r\n this.target.clip(paths, callback);\r\n } else {\r\n callback();\r\n }\r\n }\r\n }, {\r\n key: 'renderNodeBackgroundAndBorders',\r\n value: function renderNodeBackgroundAndBorders(container) {\r\n var _this2 = this;\r\n\r\n var HAS_BACKGROUND = !container.style.background.backgroundColor.isTransparent() || container.style.background.backgroundImage.length;\r\n\r\n var hasRenderableBorders = container.style.border.some(function (border) {\r\n return border.borderStyle !== _border.BORDER_STYLE.NONE && !border.borderColor.isTransparent();\r\n });\r\n\r\n var callback = function callback() {\r\n var backgroundPaintingArea = (0, _background.calculateBackgroungPaintingArea)(container.curvedBounds, container.style.background.backgroundClip);\r\n\r\n if (HAS_BACKGROUND) {\r\n _this2.target.clip([backgroundPaintingArea], function () {\r\n if (!container.style.background.backgroundColor.isTransparent()) {\r\n _this2.target.fill(container.style.background.backgroundColor);\r\n }\r\n\r\n _this2.renderBackgroundImage(container);\r\n });\r\n }\r\n\r\n container.style.border.forEach(function (border, side) {\r\n if (border.borderStyle !== _border.BORDER_STYLE.NONE && !border.borderColor.isTransparent()) {\r\n _this2.renderBorder(border, side, container.curvedBounds);\r\n }\r\n });\r\n };\r\n\r\n if (HAS_BACKGROUND || hasRenderableBorders) {\r\n var paths = container.parent ? container.parent.getClipPaths() : [];\r\n if (paths.length) {\r\n this.target.clip(paths, callback);\r\n } else {\r\n callback();\r\n }\r\n }\r\n }\r\n }, {\r\n key: 'renderBackgroundImage',\r\n value: function renderBackgroundImage(container) {\r\n var _this3 = this;\r\n\r\n container.style.background.backgroundImage.slice(0).reverse().forEach(function (backgroundImage) {\r\n if (backgroundImage.source.method === 'url' && backgroundImage.source.args.length) {\r\n _this3.renderBackgroundRepeat(container, backgroundImage);\r\n } else if (/gradient/i.test(backgroundImage.source.method)) {\r\n _this3.renderBackgroundGradient(container, backgroundImage);\r\n }\r\n });\r\n }\r\n }, {\r\n key: 'renderBackgroundRepeat',\r\n value: function renderBackgroundRepeat(container, background) {\r\n var image = this.options.imageStore.get(background.source.args[0]);\r\n if (image) {\r\n var backgroundPositioningArea = (0, _background.calculateBackgroungPositioningArea)(container.style.background.backgroundOrigin, container.bounds, container.style.padding, container.style.border);\r\n var backgroundImageSize = (0, _background.calculateBackgroundSize)(background, image, backgroundPositioningArea);\r\n var position = (0, _background.calculateBackgroundPosition)(background.position, backgroundImageSize, backgroundPositioningArea);\r\n var _path = (0, _background.calculateBackgroundRepeatPath)(background, position, backgroundImageSize, backgroundPositioningArea, container.bounds);\r\n\r\n var _offsetX = Math.round(backgroundPositioningArea.left + position.x);\r\n var _offsetY = Math.round(backgroundPositioningArea.top + position.y);\r\n this.target.renderRepeat(_path, image, backgroundImageSize, _offsetX, _offsetY);\r\n }\r\n }\r\n }, {\r\n key: 'renderBackgroundGradient',\r\n value: function renderBackgroundGradient(container, background) {\r\n var backgroundPositioningArea = (0, _background.calculateBackgroungPositioningArea)(container.style.background.backgroundOrigin, container.bounds, container.style.padding, container.style.border);\r\n var backgroundImageSize = (0, _background.calculateGradientBackgroundSize)(background, backgroundPositioningArea);\r\n var position = (0, _background.calculateBackgroundPosition)(background.position, backgroundImageSize, backgroundPositioningArea);\r\n var gradientBounds = new _Bounds.Bounds(Math.round(backgroundPositioningArea.left + position.x), Math.round(backgroundPositioningArea.top + position.y), backgroundImageSize.width, backgroundImageSize.height);\r\n\r\n var gradient = (0, _Gradient.parseGradient)(container, background.source, gradientBounds);\r\n if (gradient) {\r\n switch (gradient.type) {\r\n case _Gradient.GRADIENT_TYPE.LINEAR_GRADIENT:\r\n // $FlowFixMe\r\n this.target.renderLinearGradient(gradientBounds, gradient);\r\n break;\r\n case _Gradient.GRADIENT_TYPE.RADIAL_GRADIENT:\r\n // $FlowFixMe\r\n this.target.renderRadialGradient(gradientBounds, gradient);\r\n break;\r\n }\r\n }\r\n }\r\n }, {\r\n key: 'renderBorder',\r\n value: function renderBorder(border, side, curvePoints) {\r\n this.target.drawShape((0, _Bounds.parsePathForBorder)(curvePoints, side), border.borderColor);\r\n }\r\n }, {\r\n key: 'renderStack',\r\n value: function renderStack(stack) {\r\n var _this4 = this;\r\n\r\n if (stack.container.isVisible()) {\r\n var _opacity = stack.getOpacity();\r\n if (_opacity !== this._opacity) {\r\n this.target.setOpacity(stack.getOpacity());\r\n this._opacity = _opacity;\r\n }\r\n\r\n var _transform = stack.container.style.transform;\r\n if (_transform !== null) {\r\n this.target.transform(stack.container.bounds.left + _transform.transformOrigin[0].value, stack.container.bounds.top + _transform.transformOrigin[1].value, _transform.transform, function () {\r\n return _this4.renderStackContent(stack);\r\n });\r\n } else {\r\n this.renderStackContent(stack);\r\n }\r\n }\r\n }\r\n }, {\r\n key: 'renderStackContent',\r\n value: function renderStackContent(stack) {\r\n var _splitStackingContext = splitStackingContexts(stack),\r\n _splitStackingContext2 = _slicedToArray(_splitStackingContext, 5),\r\n negativeZIndex = _splitStackingContext2[0],\r\n zeroOrAutoZIndexOrTransformedOrOpacity = _splitStackingContext2[1],\r\n positiveZIndex = _splitStackingContext2[2],\r\n nonPositionedFloats = _splitStackingContext2[3],\r\n nonPositionedInlineLevel = _splitStackingContext2[4];\r\n\r\n var _splitDescendants = splitDescendants(stack),\r\n _splitDescendants2 = _slicedToArray(_splitDescendants, 2),\r\n inlineLevel = _splitDescendants2[0],\r\n nonInlineLevel = _splitDescendants2[1];\r\n\r\n // https://www.w3.org/TR/css-position-3/#painting-order\r\n // 1. the background and borders of the element forming the stacking context.\r\n\r\n\r\n this.renderNodeBackgroundAndBorders(stack.container);\r\n // 2. the child stacking contexts with negative stack levels (most negative first).\r\n negativeZIndex.sort(sortByZIndex).forEach(this.renderStack, this);\r\n // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\r\n this.renderNodeContent(stack.container);\r\n nonInlineLevel.forEach(this.renderNode, this);\r\n // 4. All non-positioned floating descendants, in tree order. For each one of these,\r\n // treat the element as if it created a new stacking context, but any positioned descendants and descendants\r\n // which actually create a new stacking context should be considered part of the parent stacking context,\r\n // not this new one.\r\n nonPositionedFloats.forEach(this.renderStack, this);\r\n // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.\r\n nonPositionedInlineLevel.forEach(this.renderStack, this);\r\n inlineLevel.forEach(this.renderNode, this);\r\n // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories:\r\n // All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order.\r\n // For those with 'z-index: auto', treat the element as if it created a new stacking context,\r\n // but any positioned descendants and descendants which actually create a new stacking context should be\r\n // considered part of the parent stacking context, not this new one. For those with 'z-index: 0',\r\n // treat the stacking context generated atomically.\r\n //\r\n // All opacity descendants with opacity less than 1\r\n //\r\n // All transform descendants with transform other than none\r\n zeroOrAutoZIndexOrTransformedOrOpacity.forEach(this.renderStack, this);\r\n // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index\r\n // order (smallest first) then tree order.\r\n positiveZIndex.sort(sortByZIndex).forEach(this.renderStack, this);\r\n }\r\n }, {\r\n key: 'render',\r\n value: function render(stack) {\r\n var _this5 = this;\r\n\r\n if (this.options.backgroundColor) {\r\n this.target.rectangle(this.options.x, this.options.y, this.options.width, this.options.height, this.options.backgroundColor);\r\n }\r\n this.renderStack(stack);\r\n var target = this.target.getTarget();\r\n if (true) {\r\n return target.then(function (output) {\r\n _this5.options.logger.log('Render completed');\r\n return output;\r\n });\r\n }\r\n return target;\r\n }\r\n }]);\r\n\r\n return Renderer;\r\n}();\r\n\r\nexports.default = Renderer;\r\n\r\n\r\nvar splitDescendants = function splitDescendants(stack) {\r\n var inlineLevel = [];\r\n var nonInlineLevel = [];\r\n\r\n var length = stack.children.length;\r\n for (var i = 0; i < length; i++) {\r\n var child = stack.children[i];\r\n if (child.isInlineLevel()) {\r\n inlineLevel.push(child);\r\n } else {\r\n nonInlineLevel.push(child);\r\n }\r\n }\r\n return [inlineLevel, nonInlineLevel];\r\n};\r\n\r\nvar splitStackingContexts = function splitStackingContexts(stack) {\r\n var negativeZIndex = [];\r\n var zeroOrAutoZIndexOrTransformedOrOpacity = [];\r\n var positiveZIndex = [];\r\n var nonPositionedFloats = [];\r\n var nonPositionedInlineLevel = [];\r\n var length = stack.contexts.length;\r\n for (var i = 0; i < length; i++) {\r\n var child = stack.contexts[i];\r\n if (child.container.isPositioned() || child.container.style.opacity < 1 || child.container.isTransformed()) {\r\n if (child.container.style.zIndex.order < 0) {\r\n negativeZIndex.push(child);\r\n } else if (child.container.style.zIndex.order > 0) {\r\n positiveZIndex.push(child);\r\n } else {\r\n zeroOrAutoZIndexOrTransformedOrOpacity.push(child);\r\n }\r\n } else {\r\n if (child.container.isFloating()) {\r\n nonPositionedFloats.push(child);\r\n } else {\r\n nonPositionedInlineLevel.push(child);\r\n }\r\n }\r\n }\r\n return [negativeZIndex, zeroOrAutoZIndexOrTransformedOrOpacity, positiveZIndex, nonPositionedFloats, nonPositionedInlineLevel];\r\n};\r\n\r\nvar sortByZIndex = function sortByZIndex(a, b) {\r\n if (a.container.style.zIndex.order > b.container.style.zIndex.order) {\r\n return 1;\r\n } else if (a.container.style.zIndex.order < b.container.style.zIndex.order) {\r\n return -1;\r\n }\r\n\r\n return a.container.index > b.container.index ? 1 : -1;\r\n};\r\n\r\n/***/ }),\r\n/* 52 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.transformWebkitRadialGradientArgs = exports.parseGradient = exports.RadialGradient = exports.LinearGradient = exports.RADIAL_GRADIENT_SHAPE = exports.GRADIENT_TYPE = undefined;\r\n\r\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\r\n\r\nvar _NodeContainer = __webpack_require__(3);\r\n\r\nvar _NodeContainer2 = _interopRequireDefault(_NodeContainer);\r\n\r\nvar _Angle = __webpack_require__(53);\r\n\r\nvar _Color = __webpack_require__(0);\r\n\r\nvar _Color2 = _interopRequireDefault(_Color);\r\n\r\nvar _Length = __webpack_require__(2);\r\n\r\nvar _Length2 = _interopRequireDefault(_Length);\r\n\r\nvar _Util = __webpack_require__(4);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar SIDE_OR_CORNER = /^(to )?(left|top|right|bottom)( (left|top|right|bottom))?$/i;\r\nvar PERCENTAGE_ANGLES = /^([+-]?\\d*\\.?\\d+)% ([+-]?\\d*\\.?\\d+)%$/i;\r\nvar ENDS_WITH_LENGTH = /(px)|%|( 0)$/i;\r\nvar FROM_TO_COLORSTOP = /^(from|to|color-stop)\\((?:([\\d.]+)(%)?,\\s*)?(.+?)\\)$/i;\r\nvar RADIAL_SHAPE_DEFINITION = /^\\s*(circle|ellipse)?\\s*((?:([\\d.]+)(px|r?em|%)\\s*(?:([\\d.]+)(px|r?em|%))?)|closest-side|closest-corner|farthest-side|farthest-corner)?\\s*(?:at\\s*(?:(left|center|right)|([\\d.]+)(px|r?em|%))\\s+(?:(top|center|bottom)|([\\d.]+)(px|r?em|%)))?(?:\\s|$)/i;\r\n\r\nvar GRADIENT_TYPE = exports.GRADIENT_TYPE = {\r\n LINEAR_GRADIENT: 0,\r\n RADIAL_GRADIENT: 1\r\n};\r\n\r\nvar RADIAL_GRADIENT_SHAPE = exports.RADIAL_GRADIENT_SHAPE = {\r\n CIRCLE: 0,\r\n ELLIPSE: 1\r\n};\r\n\r\nvar LENGTH_FOR_POSITION = {\r\n left: new _Length2.default('0%'),\r\n top: new _Length2.default('0%'),\r\n center: new _Length2.default('50%'),\r\n right: new _Length2.default('100%'),\r\n bottom: new _Length2.default('100%')\r\n};\r\n\r\nvar LinearGradient = exports.LinearGradient = function LinearGradient(colorStops, direction) {\r\n _classCallCheck(this, LinearGradient);\r\n\r\n this.type = GRADIENT_TYPE.LINEAR_GRADIENT;\r\n this.colorStops = colorStops;\r\n this.direction = direction;\r\n};\r\n\r\nvar RadialGradient = exports.RadialGradient = function RadialGradient(colorStops, shape, center, radius) {\r\n _classCallCheck(this, RadialGradient);\r\n\r\n this.type = GRADIENT_TYPE.RADIAL_GRADIENT;\r\n this.colorStops = colorStops;\r\n this.shape = shape;\r\n this.center = center;\r\n this.radius = radius;\r\n};\r\n\r\nvar parseGradient = exports.parseGradient = function parseGradient(container, _ref, bounds) {\r\n var args = _ref.args,\r\n method = _ref.method,\r\n prefix = _ref.prefix;\r\n\r\n if (method === 'linear-gradient') {\r\n return parseLinearGradient(args, bounds, !!prefix);\r\n } else if (method === 'gradient' && args[0] === 'linear') {\r\n // TODO handle correct angle\r\n return parseLinearGradient(['to bottom'].concat(transformObsoleteColorStops(args.slice(3))), bounds, !!prefix);\r\n } else if (method === 'radial-gradient') {\r\n return parseRadialGradient(container, prefix === '-webkit-' ? transformWebkitRadialGradientArgs(args) : args, bounds);\r\n } else if (method === 'gradient' && args[0] === 'radial') {\r\n return parseRadialGradient(container, transformObsoleteColorStops(transformWebkitRadialGradientArgs(args.slice(1))), bounds);\r\n }\r\n};\r\n\r\nvar parseColorStops = function parseColorStops(args, firstColorStopIndex, lineLength) {\r\n var colorStops = [];\r\n\r\n for (var i = firstColorStopIndex; i < args.length; i++) {\r\n var value = args[i];\r\n var HAS_LENGTH = ENDS_WITH_LENGTH.test(value);\r\n var lastSpaceIndex = value.lastIndexOf(' ');\r\n var _color = new _Color2.default(HAS_LENGTH ? value.substring(0, lastSpaceIndex) : value);\r\n var _stop = HAS_LENGTH ? new _Length2.default(value.substring(lastSpaceIndex + 1)) : i === firstColorStopIndex ? new _Length2.default('0%') : i === args.length - 1 ? new _Length2.default('100%') : null;\r\n colorStops.push({ color: _color, stop: _stop });\r\n }\r\n\r\n var absoluteValuedColorStops = colorStops.map(function (_ref2) {\r\n var color = _ref2.color,\r\n stop = _ref2.stop;\r\n\r\n var absoluteStop = lineLength === 0 ? 0 : stop ? stop.getAbsoluteValue(lineLength) / lineLength : null;\r\n\r\n return {\r\n color: color,\r\n // $FlowFixMe\r\n stop: absoluteStop\r\n };\r\n });\r\n\r\n var previousColorStop = absoluteValuedColorStops[0].stop;\r\n for (var _i = 0; _i < absoluteValuedColorStops.length; _i++) {\r\n if (previousColorStop !== null) {\r\n var _stop2 = absoluteValuedColorStops[_i].stop;\r\n if (_stop2 === null) {\r\n var n = _i;\r\n while (absoluteValuedColorStops[n].stop === null) {\r\n n++;\r\n }\r\n var steps = n - _i + 1;\r\n var nextColorStep = absoluteValuedColorStops[n].stop;\r\n var stepSize = (nextColorStep - previousColorStop) / steps;\r\n for (; _i < n; _i++) {\r\n previousColorStop = absoluteValuedColorStops[_i].stop = previousColorStop + stepSize;\r\n }\r\n } else {\r\n previousColorStop = _stop2;\r\n }\r\n }\r\n }\r\n\r\n return absoluteValuedColorStops;\r\n};\r\n\r\nvar parseLinearGradient = function parseLinearGradient(args, bounds, hasPrefix) {\r\n var angle = (0, _Angle.parseAngle)(args[0]);\r\n var HAS_SIDE_OR_CORNER = SIDE_OR_CORNER.test(args[0]);\r\n var HAS_DIRECTION = HAS_SIDE_OR_CORNER || angle !== null || PERCENTAGE_ANGLES.test(args[0]);\r\n var direction = HAS_DIRECTION ? angle !== null ? calculateGradientDirection(\r\n // if there is a prefix, the 0° angle points due East (instead of North per W3C)\r\n hasPrefix ? angle - Math.PI * 0.5 : angle, bounds) : HAS_SIDE_OR_CORNER ? parseSideOrCorner(args[0], bounds) : parsePercentageAngle(args[0], bounds) : calculateGradientDirection(Math.PI, bounds);\r\n var firstColorStopIndex = HAS_DIRECTION ? 1 : 0;\r\n\r\n // TODO: Fix some inaccuracy with color stops with px values\r\n var lineLength = Math.min((0, _Util.distance)(Math.abs(direction.x0) + Math.abs(direction.x1), Math.abs(direction.y0) + Math.abs(direction.y1)), bounds.width * 2, bounds.height * 2);\r\n\r\n return new LinearGradient(parseColorStops(args, firstColorStopIndex, lineLength), direction);\r\n};\r\n\r\nvar parseRadialGradient = function parseRadialGradient(container, args, bounds) {\r\n var m = args[0].match(RADIAL_SHAPE_DEFINITION);\r\n var shape = m && (m[1] === 'circle' || // explicit shape specification\r\n m[3] !== undefined && m[5] === undefined) // only one radius coordinate\r\n ? RADIAL_GRADIENT_SHAPE.CIRCLE : RADIAL_GRADIENT_SHAPE.ELLIPSE;\r\n var radius = {};\r\n var center = {};\r\n\r\n if (m) {\r\n // Radius\r\n if (m[3] !== undefined) {\r\n radius.x = (0, _Length.calculateLengthFromValueWithUnit)(container, m[3], m[4]).getAbsoluteValue(bounds.width);\r\n }\r\n\r\n if (m[5] !== undefined) {\r\n radius.y = (0, _Length.calculateLengthFromValueWithUnit)(container, m[5], m[6]).getAbsoluteValue(bounds.height);\r\n }\r\n\r\n // Position\r\n if (m[7]) {\r\n center.x = LENGTH_FOR_POSITION[m[7].toLowerCase()];\r\n } else if (m[8] !== undefined) {\r\n center.x = (0, _Length.calculateLengthFromValueWithUnit)(container, m[8], m[9]);\r\n }\r\n\r\n if (m[10]) {\r\n center.y = LENGTH_FOR_POSITION[m[10].toLowerCase()];\r\n } else if (m[11] !== undefined) {\r\n center.y = (0, _Length.calculateLengthFromValueWithUnit)(container, m[11], m[12]);\r\n }\r\n }\r\n\r\n var gradientCenter = {\r\n x: center.x === undefined ? bounds.width / 2 : center.x.getAbsoluteValue(bounds.width),\r\n y: center.y === undefined ? bounds.height / 2 : center.y.getAbsoluteValue(bounds.height)\r\n };\r\n var gradientRadius = calculateRadius(m && m[2] || 'farthest-corner', shape, gradientCenter, radius, bounds);\r\n\r\n return new RadialGradient(parseColorStops(args, m ? 1 : 0, Math.min(gradientRadius.x, gradientRadius.y)), shape, gradientCenter, gradientRadius);\r\n};\r\n\r\nvar calculateGradientDirection = function calculateGradientDirection(radian, bounds) {\r\n var width = bounds.width;\r\n var height = bounds.height;\r\n var HALF_WIDTH = width * 0.5;\r\n var HALF_HEIGHT = height * 0.5;\r\n var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\r\n var HALF_LINE_LENGTH = lineLength / 2;\r\n\r\n var x0 = HALF_WIDTH + Math.sin(radian) * HALF_LINE_LENGTH;\r\n var y0 = HALF_HEIGHT - Math.cos(radian) * HALF_LINE_LENGTH;\r\n var x1 = width - x0;\r\n var y1 = height - y0;\r\n\r\n return { x0: x0, x1: x1, y0: y0, y1: y1 };\r\n};\r\n\r\nvar parseTopRight = function parseTopRight(bounds) {\r\n return Math.acos(bounds.width / 2 / ((0, _Util.distance)(bounds.width, bounds.height) / 2));\r\n};\r\n\r\nvar parseSideOrCorner = function parseSideOrCorner(side, bounds) {\r\n switch (side) {\r\n case 'bottom':\r\n case 'to top':\r\n return calculateGradientDirection(0, bounds);\r\n case 'left':\r\n case 'to right':\r\n return calculateGradientDirection(Math.PI / 2, bounds);\r\n case 'right':\r\n case 'to left':\r\n return calculateGradientDirection(3 * Math.PI / 2, bounds);\r\n case 'top right':\r\n case 'right top':\r\n case 'to bottom left':\r\n case 'to left bottom':\r\n return calculateGradientDirection(Math.PI + parseTopRight(bounds), bounds);\r\n case 'top left':\r\n case 'left top':\r\n case 'to bottom right':\r\n case 'to right bottom':\r\n return calculateGradientDirection(Math.PI - parseTopRight(bounds), bounds);\r\n case 'bottom left':\r\n case 'left bottom':\r\n case 'to top right':\r\n case 'to right top':\r\n return calculateGradientDirection(parseTopRight(bounds), bounds);\r\n case 'bottom right':\r\n case 'right bottom':\r\n case 'to top left':\r\n case 'to left top':\r\n return calculateGradientDirection(2 * Math.PI - parseTopRight(bounds), bounds);\r\n case 'top':\r\n case 'to bottom':\r\n default:\r\n return calculateGradientDirection(Math.PI, bounds);\r\n }\r\n};\r\n\r\nvar parsePercentageAngle = function parsePercentageAngle(angle, bounds) {\r\n var _angle$split$map = angle.split(' ').map(parseFloat),\r\n _angle$split$map2 = _slicedToArray(_angle$split$map, 2),\r\n left = _angle$split$map2[0],\r\n top = _angle$split$map2[1];\r\n\r\n var ratio = left / 100 * bounds.width / (top / 100 * bounds.height);\r\n\r\n return calculateGradientDirection(Math.atan(isNaN(ratio) ? 1 : ratio) + Math.PI / 2, bounds);\r\n};\r\n\r\nvar findCorner = function findCorner(bounds, x, y, closest) {\r\n var corners = [{ x: 0, y: 0 }, { x: 0, y: bounds.height }, { x: bounds.width, y: 0 }, { x: bounds.width, y: bounds.height }];\r\n\r\n // $FlowFixMe\r\n return corners.reduce(function (stat, corner) {\r\n var d = (0, _Util.distance)(x - corner.x, y - corner.y);\r\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\r\n return {\r\n optimumCorner: corner,\r\n optimumDistance: d\r\n };\r\n }\r\n\r\n return stat;\r\n }, {\r\n optimumDistance: closest ? Infinity : -Infinity,\r\n optimumCorner: null\r\n }).optimumCorner;\r\n};\r\n\r\nvar calculateRadius = function calculateRadius(extent, shape, center, radius, bounds) {\r\n var x = center.x;\r\n var y = center.y;\r\n var rx = 0;\r\n var ry = 0;\r\n\r\n switch (extent) {\r\n case 'closest-side':\r\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\r\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\r\n if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {\r\n rx = ry = Math.min(Math.abs(x), Math.abs(x - bounds.width), Math.abs(y), Math.abs(y - bounds.height));\r\n } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {\r\n rx = Math.min(Math.abs(x), Math.abs(x - bounds.width));\r\n ry = Math.min(Math.abs(y), Math.abs(y - bounds.height));\r\n }\r\n break;\r\n\r\n case 'closest-corner':\r\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\r\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\r\n if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {\r\n rx = ry = Math.min((0, _Util.distance)(x, y), (0, _Util.distance)(x, y - bounds.height), (0, _Util.distance)(x - bounds.width, y), (0, _Util.distance)(x - bounds.width, y - bounds.height));\r\n } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {\r\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\r\n var c = Math.min(Math.abs(y), Math.abs(y - bounds.height)) / Math.min(Math.abs(x), Math.abs(x - bounds.width));\r\n var corner = findCorner(bounds, x, y, true);\r\n rx = (0, _Util.distance)(corner.x - x, (corner.y - y) / c);\r\n ry = c * rx;\r\n }\r\n break;\r\n\r\n case 'farthest-side':\r\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\r\n if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {\r\n rx = ry = Math.max(Math.abs(x), Math.abs(x - bounds.width), Math.abs(y), Math.abs(y - bounds.height));\r\n } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {\r\n rx = Math.max(Math.abs(x), Math.abs(x - bounds.width));\r\n ry = Math.max(Math.abs(y), Math.abs(y - bounds.height));\r\n }\r\n break;\r\n\r\n case 'farthest-corner':\r\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\r\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\r\n if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {\r\n rx = ry = Math.max((0, _Util.distance)(x, y), (0, _Util.distance)(x, y - bounds.height), (0, _Util.distance)(x - bounds.width, y), (0, _Util.distance)(x - bounds.width, y - bounds.height));\r\n } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {\r\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\r\n var _c = Math.max(Math.abs(y), Math.abs(y - bounds.height)) / Math.max(Math.abs(x), Math.abs(x - bounds.width));\r\n var _corner = findCorner(bounds, x, y, false);\r\n rx = (0, _Util.distance)(_corner.x - x, (_corner.y - y) / _c);\r\n ry = _c * rx;\r\n }\r\n break;\r\n\r\n default:\r\n // pixel or percentage values\r\n rx = radius.x || 0;\r\n ry = radius.y !== undefined ? radius.y : rx;\r\n break;\r\n }\r\n\r\n return {\r\n x: rx,\r\n y: ry\r\n };\r\n};\r\n\r\nvar transformWebkitRadialGradientArgs = exports.transformWebkitRadialGradientArgs = function transformWebkitRadialGradientArgs(args) {\r\n var shape = '';\r\n var radius = '';\r\n var extent = '';\r\n var position = '';\r\n var idx = 0;\r\n\r\n var POSITION = /^(left|center|right|\\d+(?:px|r?em|%)?)(?:\\s+(top|center|bottom|\\d+(?:px|r?em|%)?))?$/i;\r\n var SHAPE_AND_EXTENT = /^(circle|ellipse)?\\s*(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)?$/i;\r\n var RADIUS = /^\\d+(px|r?em|%)?(?:\\s+\\d+(px|r?em|%)?)?$/i;\r\n\r\n var matchStartPosition = args[idx].match(POSITION);\r\n if (matchStartPosition) {\r\n idx++;\r\n }\r\n\r\n var matchShapeExtent = args[idx].match(SHAPE_AND_EXTENT);\r\n if (matchShapeExtent) {\r\n shape = matchShapeExtent[1] || '';\r\n extent = matchShapeExtent[2] || '';\r\n if (extent === 'contain') {\r\n extent = 'closest-side';\r\n } else if (extent === 'cover') {\r\n extent = 'farthest-corner';\r\n }\r\n idx++;\r\n }\r\n\r\n var matchStartRadius = args[idx].match(RADIUS);\r\n if (matchStartRadius) {\r\n idx++;\r\n }\r\n\r\n var matchEndPosition = args[idx].match(POSITION);\r\n if (matchEndPosition) {\r\n idx++;\r\n }\r\n\r\n var matchEndRadius = args[idx].match(RADIUS);\r\n if (matchEndRadius) {\r\n idx++;\r\n }\r\n\r\n var matchPosition = matchEndPosition || matchStartPosition;\r\n if (matchPosition && matchPosition[1]) {\r\n position = matchPosition[1] + (/^\\d+$/.test(matchPosition[1]) ? 'px' : '');\r\n if (matchPosition[2]) {\r\n position += ' ' + matchPosition[2] + (/^\\d+$/.test(matchPosition[2]) ? 'px' : '');\r\n }\r\n }\r\n\r\n var matchRadius = matchEndRadius || matchStartRadius;\r\n if (matchRadius) {\r\n radius = matchRadius[0];\r\n if (!matchRadius[1]) {\r\n radius += 'px';\r\n }\r\n }\r\n\r\n if (position && !shape && !radius && !extent) {\r\n radius = position;\r\n position = '';\r\n }\r\n\r\n if (position) {\r\n position = 'at ' + position;\r\n }\r\n\r\n return [[shape, extent, radius, position].filter(function (s) {\r\n return !!s;\r\n }).join(' ')].concat(args.slice(idx));\r\n};\r\n\r\nvar transformObsoleteColorStops = function transformObsoleteColorStops(args) {\r\n return args.map(function (color) {\r\n return color.match(FROM_TO_COLORSTOP);\r\n })\r\n // $FlowFixMe\r\n .map(function (v, index) {\r\n if (!v) {\r\n return args[index];\r\n }\r\n\r\n switch (v[1]) {\r\n case 'from':\r\n return v[4] + ' 0%';\r\n case 'to':\r\n return v[4] + ' 100%';\r\n case 'color-stop':\r\n if (v[3] === '%') {\r\n return v[4] + ' ' + v[2];\r\n }\r\n return v[4] + ' ' + parseFloat(v[2]) * 100 + '%';\r\n }\r\n });\r\n};\r\n\r\n/***/ }),\r\n/* 53 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nvar ANGLE = /([+-]?\\d*\\.?\\d+)(deg|grad|rad|turn)/i;\r\n\r\nvar parseAngle = exports.parseAngle = function parseAngle(angle) {\r\n var match = angle.match(ANGLE);\r\n\r\n if (match) {\r\n var value = parseFloat(match[1]);\r\n switch (match[2].toLowerCase()) {\r\n case 'deg':\r\n return Math.PI * value / 180;\r\n case 'grad':\r\n return Math.PI / 200 * value;\r\n case 'rad':\r\n return value;\r\n case 'turn':\r\n return Math.PI * 2 * value;\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/***/ }),\r\n/* 54 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.cloneWindow = exports.DocumentCloner = undefined;\r\n\r\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _Bounds = __webpack_require__(1);\r\n\r\nvar _Proxy = __webpack_require__(26);\r\n\r\nvar _ResourceLoader = __webpack_require__(55);\r\n\r\nvar _ResourceLoader2 = _interopRequireDefault(_ResourceLoader);\r\n\r\nvar _Util = __webpack_require__(4);\r\n\r\nvar _background = __webpack_require__(5);\r\n\r\nvar _CanvasRenderer = __webpack_require__(15);\r\n\r\nvar _CanvasRenderer2 = _interopRequireDefault(_CanvasRenderer);\r\n\r\nvar _PseudoNodeContent = __webpack_require__(56);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\r\n\r\nvar DocumentCloner = exports.DocumentCloner = function () {\r\n function DocumentCloner(element, options, logger, copyInline, renderer) {\r\n _classCallCheck(this, DocumentCloner);\r\n\r\n this.referenceElement = element;\r\n this.scrolledElements = [];\r\n this.copyStyles = copyInline;\r\n this.inlineImages = copyInline;\r\n this.logger = logger;\r\n this.options = options;\r\n this.renderer = renderer;\r\n this.resourceLoader = new _ResourceLoader2.default(options, logger, window);\r\n this.pseudoContentData = {\r\n counters: {},\r\n quoteDepth: 0\r\n };\r\n // $FlowFixMe\r\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement);\r\n }\r\n\r\n _createClass(DocumentCloner, [{\r\n key: 'inlineAllImages',\r\n value: function inlineAllImages(node) {\r\n var _this = this;\r\n\r\n if (this.inlineImages && node) {\r\n var style = node.style;\r\n Promise.all((0, _background.parseBackgroundImage)(style.backgroundImage).map(function (backgroundImage) {\r\n if (backgroundImage.method === 'url') {\r\n return _this.resourceLoader.inlineImage(backgroundImage.args[0]).then(function (img) {\r\n return img && typeof img.src === 'string' ? 'url(\"' + img.src + '\")' : 'none';\r\n }).catch(function (e) {\r\n if (true) {\r\n _this.logger.log('Unable to load image', e);\r\n }\r\n });\r\n }\r\n return Promise.resolve('' + backgroundImage.prefix + backgroundImage.method + '(' + backgroundImage.args.join(',') + ')');\r\n })).then(function (backgroundImages) {\r\n if (backgroundImages.length > 1) {\r\n // TODO Multiple backgrounds somehow broken in Chrome\r\n style.backgroundColor = '';\r\n }\r\n style.backgroundImage = backgroundImages.join(',');\r\n });\r\n\r\n if (node instanceof HTMLImageElement) {\r\n this.resourceLoader.inlineImage(node.src).then(function (img) {\r\n if (img && node instanceof HTMLImageElement && node.parentNode) {\r\n var parentNode = node.parentNode;\r\n var clonedChild = (0, _Util.copyCSSStyles)(node.style, img.cloneNode(false));\r\n parentNode.replaceChild(clonedChild, node);\r\n }\r\n }).catch(function (e) {\r\n if (true) {\r\n _this.logger.log('Unable to load image', e);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }, {\r\n key: 'inlineFonts',\r\n value: function inlineFonts(document) {\r\n var _this2 = this;\r\n\r\n return Promise.all(Array.from(document.styleSheets).map(function (sheet) {\r\n if (sheet.href) {\r\n return fetch(sheet.href).then(function (res) {\r\n return res.text();\r\n }).then(function (text) {\r\n return createStyleSheetFontsFromText(text, sheet.href);\r\n }).catch(function (e) {\r\n if (true) {\r\n _this2.logger.log('Unable to load stylesheet', e);\r\n }\r\n return [];\r\n });\r\n }\r\n return getSheetFonts(sheet, document);\r\n })).then(function (fonts) {\r\n return fonts.reduce(function (acc, font) {\r\n return acc.concat(font);\r\n }, []);\r\n }).then(function (fonts) {\r\n return Promise.all(fonts.map(function (font) {\r\n return fetch(font.formats[0].src).then(function (response) {\r\n return response.blob();\r\n }).then(function (blob) {\r\n return new Promise(function (resolve, reject) {\r\n var reader = new FileReader();\r\n reader.onerror = reject;\r\n reader.onload = function () {\r\n // $FlowFixMe\r\n var result = reader.result;\r\n resolve(result);\r\n };\r\n reader.readAsDataURL(blob);\r\n });\r\n }).then(function (dataUri) {\r\n font.fontFace.setProperty('src', 'url(\"' + dataUri + '\")');\r\n return '@font-face {' + font.fontFace.cssText + ' ';\r\n });\r\n }));\r\n }).then(function (fontCss) {\r\n var style = document.createElement('style');\r\n style.textContent = fontCss.join('\\n');\r\n _this2.documentElement.appendChild(style);\r\n });\r\n }\r\n }, {\r\n key: 'createElementClone',\r\n value: function createElementClone(node) {\r\n var _this3 = this;\r\n\r\n if (this.copyStyles && node instanceof HTMLCanvasElement) {\r\n var img = node.ownerDocument.createElement('img');\r\n try {\r\n img.src = node.toDataURL();\r\n image3.crossOrigin=\"anonymous\";\r\n return img;\r\n } catch (e) {\r\n if (true) {\r\n this.logger.log('Unable to clone canvas contents, canvas is tainted');\r\n }\r\n }\r\n }\r\n\r\n if (node instanceof HTMLIFrameElement) {\r\n var tempIframe = node.cloneNode(false);\r\n var iframeKey = generateIframeKey();\r\n tempIframe.setAttribute('data-html2canvas-internal-iframe-key', iframeKey);\r\n\r\n var _parseBounds = (0, _Bounds.parseBounds)(node, 0, 0),\r\n width = _parseBounds.width,\r\n height = _parseBounds.height;\r\n\r\n this.resourceLoader.cache[iframeKey] = getIframeDocumentElement(node, this.options).then(function (documentElement) {\r\n return _this3.renderer(documentElement, {\r\n async: _this3.options.async,\r\n allowTaint: _this3.options.allowTaint,\r\n backgroundColor: '#ffffff',\r\n canvas: null,\r\n imageTimeout: _this3.options.imageTimeout,\r\n logging: _this3.options.logging,\r\n proxy: _this3.options.proxy,\r\n removeContainer: _this3.options.removeContainer,\r\n scale: _this3.options.scale,\r\n foreignObjectRendering: _this3.options.foreignObjectRendering,\r\n useCORS: _this3.options.useCORS,\r\n target: new _CanvasRenderer2.default(),\r\n width: width,\r\n height: height,\r\n x: 0,\r\n y: 0,\r\n windowWidth: documentElement.ownerDocument.defaultView.innerWidth,\r\n windowHeight: documentElement.ownerDocument.defaultView.innerHeight,\r\n scrollX: documentElement.ownerDocument.defaultView.pageXOffset,\r\n scrollY: documentElement.ownerDocument.defaultView.pageYOffset\r\n }, _this3.logger.child(iframeKey));\r\n }).then(function (canvas) {\r\n return new Promise(function (resolve, reject) {\r\n var iframeCanvas = document.createElement('img');\r\n iframeCanvas.onload = function () {\r\n return resolve(canvas);\r\n };\r\n iframeCanvas.onerror = reject;\r\n iframeCanvas.src = canvas.toDataURL();\r\n if (tempIframe.parentNode) {\r\n tempIframe.parentNode.replaceChild((0, _Util.copyCSSStyles)(node.ownerDocument.defaultView.getComputedStyle(node), iframeCanvas), tempIframe);\r\n }\r\n });\r\n });\r\n return tempIframe;\r\n }\r\n\r\n if (node instanceof HTMLStyleElement && node.sheet && node.sheet.cssRules) {\r\n var css = [].slice.call(node.sheet.cssRules, 0).reduce(function (css, rule) {\r\n try {\r\n if (rule && rule.cssText) {\r\n return css + rule.cssText;\r\n }\r\n return css;\r\n } catch (err) {\r\n _this3.logger.log('Unable to access cssText property', rule.name);\r\n return css;\r\n }\r\n },'');\r\n var style = node.cloneNode(false);\r\n style.textContent = css;\r\n return style;\r\n }\r\n\r\n return node.cloneNode(false);\r\n }\r\n }, {\r\n key: 'cloneNode',\r\n value: function cloneNode(node) {\r\n var clone = node.nodeType === Node.TEXT_NODE ? document.createTextNode(node.nodeValue) : this.createElementClone(node);\r\n\r\n var window = node.ownerDocument.defaultView;\r\n var style = node instanceof window.HTMLElement ? window.getComputedStyle(node) : null;\r\n var styleBefore = node instanceof window.HTMLElement ? window.getComputedStyle(node, ':before') : null;\r\n var styleAfter = node instanceof window.HTMLElement ? window.getComputedStyle(node, ':after') : null;\r\n\r\n if (this.referenceElement === node && clone instanceof window.HTMLElement) {\r\n this.clonedReferenceElement = clone;\r\n }\r\n\r\n if (clone instanceof window.HTMLBodyElement) {\r\n createPseudoHideStyles(clone);\r\n }\r\n\r\n var counters = (0, _PseudoNodeContent.parseCounterReset)(style, this.pseudoContentData);\r\n var contentBefore = (0, _PseudoNodeContent.resolvePseudoContent)(node, styleBefore, this.pseudoContentData);\r\n\r\n for (var child = node.firstChild; child; child = child.nextSibling) {\r\n if (child.nodeType !== Node.ELEMENT_NODE || child.nodeName !== 'SCRIPT' &&\r\n // $FlowFixMe\r\n !child.hasAttribute(IGNORE_ATTRIBUTE) && (typeof this.options.ignoreElements !== 'function' ||\r\n // $FlowFixMe\r\n !this.options.ignoreElements(child))) {\r\n if (!this.copyStyles || child.nodeName !== 'STYLE') {\r\n clone.appendChild(this.cloneNode(child));\r\n }\r\n }\r\n }\r\n\r\n var contentAfter = (0, _PseudoNodeContent.resolvePseudoContent)(node, styleAfter, this.pseudoContentData);\r\n (0, _PseudoNodeContent.popCounters)(counters, this.pseudoContentData);\r\n\r\n if (node instanceof window.HTMLElement && clone instanceof window.HTMLElement) {\r\n if (styleBefore) {\r\n this.inlineAllImages(inlinePseudoElement(node, clone, styleBefore, contentBefore, PSEUDO_BEFORE));\r\n }\r\n if (styleAfter) {\r\n this.inlineAllImages(inlinePseudoElement(node, clone, styleAfter, contentAfter, PSEUDO_AFTER));\r\n }\r\n if (style && this.copyStyles && !(node instanceof HTMLIFrameElement)) {\r\n (0, _Util.copyCSSStyles)(style, clone);\r\n }\r\n this.inlineAllImages(clone);\r\n if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\r\n this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\r\n }\r\n switch (node.nodeName) {\r\n case 'CANVAS':\r\n if (!this.copyStyles) {\r\n cloneCanvasContents(node, clone);\r\n }\r\n break;\r\n case 'TEXTAREA':\r\n case 'SELECT':\r\n clone.value = node.value;\r\n break;\r\n }\r\n }\r\n return clone;\r\n }\r\n }]);\r\n\r\n return DocumentCloner;\r\n}();\r\n\r\nvar getSheetFonts = function getSheetFonts(sheet, document) {\r\n // $FlowFixMe\r\n return (sheet.cssRules ? Array.from(sheet.cssRules) : []).filter(function (rule) {\r\n return rule.type === CSSRule.FONT_FACE_RULE;\r\n }).map(function (rule) {\r\n var src = (0, _background.parseBackgroundImage)(rule.style.getPropertyValue('src'));\r\n var formats = [];\r\n for (var i = 0; i < src.length; i++) {\r\n if (src[i].method === 'url' && src[i + 1] && src[i + 1].method === 'format') {\r\n var a = document.createElement('a');\r\n a.href = src[i].args[0];\r\n if (document.body) {\r\n document.body.appendChild(a);\r\n }\r\n\r\n var font = {\r\n src: a.href,\r\n format: src[i + 1].args[0]\r\n };\r\n formats.push(font);\r\n }\r\n }\r\n\r\n return {\r\n // TODO select correct format for browser),\r\n\r\n formats: formats.filter(function (font) {\r\n return (/^woff/i.test(font.format)\r\n );\r\n }),\r\n fontFace: rule.style\r\n };\r\n }).filter(function (font) {\r\n return font.formats.length;\r\n });\r\n};\r\n\r\nvar createStyleSheetFontsFromText = function createStyleSheetFontsFromText(text, baseHref) {\r\n var doc = document.implementation.createHTMLDocument('');\r\n var base = document.createElement('base');\r\n // $FlowFixMe\r\n base.href = baseHref;\r\n var style = document.createElement('style');\r\n\r\n style.textContent = text;\r\n if (doc.head) {\r\n doc.head.appendChild(base);\r\n }\r\n if (doc.body) {\r\n doc.body.appendChild(style);\r\n }\r\n\r\n return style.sheet ? getSheetFonts(style.sheet, doc) : [];\r\n};\r\n\r\nvar restoreOwnerScroll = function restoreOwnerScroll(ownerDocument, x, y) {\r\n if (ownerDocument.defaultView && (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {\r\n ownerDocument.defaultView.scrollTo(x, y);\r\n }\r\n};\r\n\r\nvar cloneCanvasContents = function cloneCanvasContents(canvas, clonedCanvas) {\r\n try {\r\n if (clonedCanvas) {\r\n clonedCanvas.width = canvas.width;\r\n clonedCanvas.height = canvas.height;\r\n var ctx = canvas.getContext('2d');\r\n var clonedCtx = clonedCanvas.getContext('2d');\r\n if (ctx) {\r\n clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\r\n } else {\r\n clonedCtx.drawImage(canvas, 0, 0);\r\n }\r\n }\r\n } catch (e) {}\r\n};\r\n\r\nvar inlinePseudoElement = function inlinePseudoElement(node, clone, style, contentItems, pseudoElt) {\r\n if (!style || !style.content || style.content === 'none' || style.content === '-moz-alt-content' || style.display === 'none') {\r\n return;\r\n }\r\n\r\n var anonymousReplacedElement = clone.ownerDocument.createElement('html2canvaspseudoelement');\r\n (0, _Util.copyCSSStyles)(style, anonymousReplacedElement);\r\n\r\n if (contentItems) {\r\n var len = contentItems.length;\r\n for (var i = 0; i < len; i++) {\r\n var item = contentItems[i];\r\n switch (item.type) {\r\n case _PseudoNodeContent.PSEUDO_CONTENT_ITEM_TYPE.IMAGE:\r\n var img = clone.ownerDocument.createElement('img');\r\n img.src = (0, _background.parseBackgroundImage)('url(' + item.value + ')')[0].args[0];\r\n img.style.opacity = '1';\r\n anonymousReplacedElement.appendChild(img);\r\n break;\r\n case _PseudoNodeContent.PSEUDO_CONTENT_ITEM_TYPE.TEXT:\r\n anonymousReplacedElement.appendChild(clone.ownerDocument.createTextNode(item.value));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + ' ' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\r\n clone.className += pseudoElt === PSEUDO_BEFORE ? ' ' + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE : ' ' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\r\n if (pseudoElt === PSEUDO_BEFORE) {\r\n clone.insertBefore(anonymousReplacedElement, clone.firstChild);\r\n } else {\r\n clone.appendChild(anonymousReplacedElement);\r\n }\r\n\r\n return anonymousReplacedElement;\r\n};\r\n\r\nvar URL_REGEXP = /^url\\((.+)\\)$/i;\r\nvar PSEUDO_BEFORE = ':before';\r\nvar PSEUDO_AFTER = ':after';\r\nvar PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\r\nvar PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\r\n\r\nvar PSEUDO_HIDE_ELEMENT_STYLE = '{\\n content: \"\" !important;\\n display: none !important;\\n}';\r\n\r\nvar createPseudoHideStyles = function createPseudoHideStyles(body) {\r\n createStyles(body, '.' + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + '\\n .' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE);\r\n};\r\n\r\nvar createStyles = function createStyles(body, styles) {\r\n var style = body.ownerDocument.createElement('style');\r\n style.innerHTML = styles;\r\n body.appendChild(style);\r\n};\r\n\r\nvar initNode = function initNode(_ref) {\r\n var _ref2 = _slicedToArray(_ref, 3),\r\n element = _ref2[0],\r\n x = _ref2[1],\r\n y = _ref2[2];\r\n\r\n element.scrollLeft = x;\r\n element.scrollTop = y;\r\n};\r\n\r\nvar generateIframeKey = function generateIframeKey() {\r\n return Math.ceil(Date.now() + Math.random() * 10000000).toString(16);\r\n};\r\n\r\nvar DATA_URI_REGEXP = /^data:text\\/(.+);(base64)?,(.*)$/i;\r\n\r\nvar getIframeDocumentElement = function getIframeDocumentElement(node, options) {\r\n try {\r\n return Promise.resolve(node.contentWindow.document.documentElement);\r\n } catch (e) {\r\n return options.proxy ? (0, _Proxy.Proxy)(node.src, options).then(function (html) {\r\n var match = html.match(DATA_URI_REGEXP);\r\n if (!match) {\r\n return Promise.reject();\r\n }\r\n\r\n return match[2] === 'base64' ? window.atob(decodeURIComponent(match[3])) : decodeURIComponent(match[3]);\r\n }).then(function (html) {\r\n return createIframeContainer(node.ownerDocument, (0, _Bounds.parseBounds)(node, 0, 0)).then(function (cloneIframeContainer) {\r\n var cloneWindow = cloneIframeContainer.contentWindow;\r\n var documentClone = cloneWindow.document;\r\n\r\n documentClone.open();\r\n documentClone.write(html);\r\n var iframeLoad = iframeLoader(cloneIframeContainer).then(function () {\r\n return documentClone.documentElement;\r\n });\r\n\r\n documentClone.close();\r\n return iframeLoad;\r\n });\r\n }) : Promise.reject();\r\n }\r\n};\r\n\r\nvar createIframeContainer = function createIframeContainer(ownerDocument, bounds) {\r\n var cloneIframeContainer = ownerDocument.createElement('iframe');\r\n\r\n cloneIframeContainer.className = 'html2canvas-container';\r\n cloneIframeContainer.style.visibility = 'hidden';\r\n cloneIframeContainer.style.position = 'fixed';\r\n cloneIframeContainer.style.left = '-10000px';\r\n cloneIframeContainer.style.top = '0px';\r\n cloneIframeContainer.style.border = '0';\r\n cloneIframeContainer.width = bounds.width.toString();\r\n cloneIframeContainer.height = bounds.height.toString();\r\n cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\r\n cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\r\n if (!ownerDocument.body) {\r\n return Promise.reject( true ? 'Body element not found in Document that is getting rendered' : '');\r\n }\r\n\r\n ownerDocument.body.appendChild(cloneIframeContainer);\r\n\r\n return Promise.resolve(cloneIframeContainer);\r\n};\r\n\r\nvar iframeLoader = function iframeLoader(cloneIframeContainer) {\r\n var cloneWindow = cloneIframeContainer.contentWindow;\r\n var documentClone = cloneWindow.document;\r\n\r\n return new Promise(function (resolve, reject) {\r\n cloneWindow.onload = cloneIframeContainer.onload = documentClone.onreadystatechange = function () {\r\n var interval = setInterval(function () {\r\n if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\r\n clearInterval(interval);\r\n resolve(cloneIframeContainer);\r\n }\r\n }, 50);\r\n };\r\n });\r\n};\r\n\r\nvar cloneWindow = exports.cloneWindow = function cloneWindow(ownerDocument, bounds, referenceElement, options, logger, renderer) {\r\n var cloner = new DocumentCloner(referenceElement, options, logger, false, renderer);\r\n var scrollX = ownerDocument.defaultView.pageXOffset;\r\n var scrollY = ownerDocument.defaultView.pageYOffset;\r\n\r\n return createIframeContainer(ownerDocument, bounds).then(function (cloneIframeContainer) {\r\n var cloneWindow = cloneIframeContainer.contentWindow;\r\n var documentClone = cloneWindow.document;\r\n\r\n /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle\r\n if window url is about:blank, we can assign the url to current by writing onto the document\r\n */\r\n\r\n var iframeLoad = iframeLoader(cloneIframeContainer).then(function () {\r\n cloner.scrolledElements.forEach(initNode);\r\n cloneWindow.scrollTo(bounds.left, bounds.top);\r\n if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) && (cloneWindow.scrollY !== bounds.top || cloneWindow.scrollX !== bounds.left)) {\r\n documentClone.documentElement.style.top = -bounds.top + 'px';\r\n documentClone.documentElement.style.left = -bounds.left + 'px';\r\n documentClone.documentElement.style.position = 'absolute';\r\n }\r\n\r\n var result = Promise.resolve([cloneIframeContainer, cloner.clonedReferenceElement, cloner.resourceLoader]);\r\n\r\n var onclone = options.onclone;\r\n\r\n return cloner.clonedReferenceElement instanceof cloneWindow.HTMLElement || cloner.clonedReferenceElement instanceof ownerDocument.defaultView.HTMLElement || cloner.clonedReferenceElement instanceof HTMLElement ? typeof onclone === 'function' ? Promise.resolve().then(function () {\r\n return onclone(documentClone);\r\n }).then(function () {\r\n return result;\r\n }) : result : Promise.reject( true ? 'Error finding the ' + referenceElement.nodeName + ' in the cloned document' : '');\r\n });\r\n\r\n documentClone.open();\r\n documentClone.write(serializeDoctype(document.doctype) + '<html></html>');\r\n // Chrome scrolls the parent document for some reason after the write to the cloned window???\r\n restoreOwnerScroll(referenceElement.ownerDocument, scrollX, scrollY);\r\n documentClone.replaceChild(documentClone.adoptNode(cloner.documentElement), documentClone.documentElement);\r\n documentClone.close();\r\n\r\n return iframeLoad;\r\n });\r\n};\r\n\r\nvar serializeDoctype = function serializeDoctype(doctype) {\r\n var str = '';\r\n if (doctype) {\r\n str += '<!DOCTYPE ';\r\n if (doctype.name) {\r\n str += doctype.name;\r\n }\r\n\r\n if (doctype.internalSubset) {\r\n str += doctype.internalSubset;\r\n }\r\n\r\n if (doctype.publicId) {\r\n str += '\"' + doctype.publicId + '\"';\r\n }\r\n\r\n if (doctype.systemId) {\r\n str += '\"' + doctype.systemId + '\"';\r\n }\r\n\r\n str += '>';\r\n }\r\n\r\n return str;\r\n};\r\n\r\n/***/ }),\r\n/* 55 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.ResourceStore = undefined;\r\n\r\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _Feature = __webpack_require__(10);\r\n\r\nvar _Feature2 = _interopRequireDefault(_Feature);\r\n\r\nvar _Proxy = __webpack_require__(26);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar ResourceLoader = function () {\r\n function ResourceLoader(options, logger, window) {\r\n _classCallCheck(this, ResourceLoader);\r\n\r\n this.options = options;\r\n this._window = window;\r\n this.origin = this.getOrigin(window.location.href);\r\n this.cache = {};\r\n this.logger = logger;\r\n this._index = 0;\r\n }\r\n\r\n _createClass(ResourceLoader, [{\r\n key: 'loadImage',\r\n value: function loadImage(src) {\r\n var _this = this;\r\n\r\n if (this.hasResourceInCache(src)) {\r\n return src;\r\n }\r\n\r\n if (!isSVG(src) || _Feature2.default.SUPPORT_SVG_DRAWING) {\r\n if (this.options.allowTaint === true || isInlineImage(src) || this.isSameOrigin(src)) {\r\n return this.addImage(src, src, true);\r\n } else if (!this.isSameOrigin(src)) {\r\n if (typeof this.options.proxy === 'string') {\r\n this.cache[src] = (0, _Proxy.Proxy)(src, this.options).then(function (src) {\r\n return _loadImage(src, _this.options.imageTimeout || 0);\r\n });\r\n return src;\r\n } else if (this.options.useCORS === true && _Feature2.default.SUPPORT_CORS_IMAGES) {\r\n return this.addImage(src, src, true);\r\n }\r\n }\r\n }\r\n }\r\n }, {\r\n key: 'inlineImage',\r\n value: function inlineImage(src) {\r\n var _this2 = this;\r\n\r\n if (isInlineImage(src)) {\r\n return _loadImage(src, this.options.imageTimeout || 0);\r\n }\r\n if (this.hasResourceInCache(src)) {\r\n return this.cache[src];\r\n }\r\n if (!this.isSameOrigin(src) && typeof this.options.proxy === 'string') {\r\n return this.cache[src] = (0, _Proxy.Proxy)(src, this.options).then(function (src) {\r\n return _loadImage(src, _this2.options.imageTimeout || 0);\r\n });\r\n }\r\n\r\n return this.xhrImage(src);\r\n }\r\n }, {\r\n key: 'xhrImage',\r\n value: function xhrImage(src) {\r\n var _this3 = this;\r\n\r\n this.cache[src] = new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status !== 200) {\r\n reject('Failed to fetch image ' + src.substring(0, 256) + ' with status code ' + xhr.status);\r\n } else {\r\n var reader = new FileReader();\r\n reader.addEventListener('load', function () {\r\n // $FlowFixMe\r\n var result = reader.result;\r\n resolve(result);\r\n }, false);\r\n reader.addEventListener('error', function (e) {\r\n return reject(e);\r\n }, false);\r\n reader.readAsDataURL(xhr.response);\r\n }\r\n }\r\n };\r\n xhr.responseType = 'blob';\r\n if (_this3.options.imageTimeout) {\r\n var timeout = _this3.options.imageTimeout;\r\n xhr.timeout = timeout;\r\n xhr.ontimeout = function () {\r\n return reject( true ? 'Timed out (' + timeout + 'ms) fetching ' + src.substring(0, 256) : '');\r\n };\r\n }\r\n xhr.open('GET', src, true);\r\n xhr.send();\r\n }).then(function (src) {\r\n return _loadImage(src, _this3.options.imageTimeout || 0);\r\n });\r\n\r\n return this.cache[src];\r\n }\r\n }, {\r\n key: 'loadCanvas',\r\n value: function loadCanvas(node) {\r\n var key = String(this._index++);\r\n this.cache[key] = Promise.resolve(node);\r\n return key;\r\n }\r\n }, {\r\n key: 'hasResourceInCache',\r\n value: function hasResourceInCache(key) {\r\n return typeof this.cache[key] !== 'undefined';\r\n }\r\n }, {\r\n key: 'addImage',\r\n value: function addImage(key, src, useCORS) {\r\n var _this4 = this;\r\n\r\n if (true) {\r\n this.logger.log('Added image ' + key.substring(0, 256));\r\n }\r\n\r\n var imageLoadHandler = function imageLoadHandler(supportsDataImages) {\r\n return new Promise(function (resolve, reject) {\r\n var img = new Image();\r\n img.onload = function () {\r\n return resolve(img);\r\n };\r\n //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\r\n if (!supportsDataImages || useCORS) {\r\n img.crossOrigin = 'anonymous';\r\n }\r\n\r\n img.onerror = reject;\r\n img.src = src;\r\n if (img.complete === true) {\r\n // Inline XML images may fail to parse, throwing an Error later on\r\n setTimeout(function () {\r\n resolve(img);\r\n }, 500);\r\n }\r\n if (_this4.options.imageTimeout) {\r\n var timeout = _this4.options.imageTimeout;\r\n setTimeout(function () {\r\n return reject( true ? 'Timed out (' + timeout + 'ms) fetching ' + src.substring(0, 256) : '');\r\n }, timeout);\r\n }\r\n });\r\n };\r\n\r\n this.cache[key] = isInlineBase64Image(src) && !isSVG(src) ? // $FlowFixMe\r\n _Feature2.default.SUPPORT_BASE64_DRAWING(src).then(imageLoadHandler) : imageLoadHandler(true);\r\n return key;\r\n }\r\n }, {\r\n key: 'isSameOrigin',\r\n value: function isSameOrigin(url) {\r\n return this.getOrigin(url) === this.origin;\r\n }\r\n }, {\r\n key: 'getOrigin',\r\n value: function getOrigin(url) {\r\n var link = this._link || (this._link = this._window.document.createElement('a'));\r\n link.href = url;\r\n link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\r\n return link.protocol + link.hostname + link.port;\r\n }\r\n }, {\r\n key: 'ready',\r\n value: function ready() {\r\n var _this5 = this;\r\n\r\n var keys = Object.keys(this.cache);\r\n var values = keys.map(function (str) {\r\n return _this5.cache[str].catch(function (e) {\r\n if (true) {\r\n _this5.logger.log('Unable to load image', e);\r\n }\r\n return null;\r\n });\r\n });\r\n return Promise.all(values).then(function (images) {\r\n if (true) {\r\n _this5.logger.log('Finished loading ' + images.length + ' images', images);\r\n }\r\n return new ResourceStore(keys, images);\r\n });\r\n }\r\n }]);\r\n\r\n return ResourceLoader;\r\n}();\r\n\r\nexports.default = ResourceLoader;\r\n\r\nvar ResourceStore = exports.ResourceStore = function () {\r\n function ResourceStore(keys, resources) {\r\n _classCallCheck(this, ResourceStore);\r\n\r\n this._keys = keys;\r\n this._resources = resources;\r\n }\r\n\r\n _createClass(ResourceStore, [{\r\n key: 'get',\r\n value: function get(key) {\r\n var index = this._keys.indexOf(key);\r\n return index === -1 ? null : this._resources[index];\r\n }\r\n }]);\r\n\r\n return ResourceStore;\r\n}();\r\n\r\nvar INLINE_SVG = /^data:image\\/svg\\+xml/i;\r\nvar INLINE_BASE64 = /^data:image\\/.*;base64,/i;\r\nvar INLINE_IMG = /^data:image\\/.*/i;\r\n\r\nvar isInlineImage = function isInlineImage(src) {\r\n return INLINE_IMG.test(src);\r\n};\r\nvar isInlineBase64Image = function isInlineBase64Image(src) {\r\n return INLINE_BASE64.test(src);\r\n};\r\n\r\nvar isSVG = function isSVG(src) {\r\n return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);\r\n};\r\n\r\nvar _loadImage = function _loadImage(src, timeout) {\r\n return new Promise(function (resolve, reject) {\r\n var img = new Image();\r\n img.onload = function () {\r\n return resolve(img);\r\n };\r\n img.onerror = reject;\r\n img.src = src;\r\n if (img.complete === true) {\r\n // Inline XML images may fail to parse, throwing an Error later on\r\n setTimeout(function () {\r\n resolve(img);\r\n }, 500);\r\n }\r\n if (timeout) {\r\n setTimeout(function () {\r\n return reject( true ? 'Timed out (' + timeout + 'ms) loading image' : '');\r\n }, timeout);\r\n }\r\n });\r\n};\r\n\r\n/***/ }),\r\n/* 56 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.parseContent = exports.resolvePseudoContent = exports.popCounters = exports.parseCounterReset = exports.TOKEN_TYPE = exports.PSEUDO_CONTENT_ITEM_TYPE = undefined;\r\n\r\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\r\n\r\nvar _ListItem = __webpack_require__(14);\r\n\r\nvar _listStyle = __webpack_require__(8);\r\n\r\nvar PSEUDO_CONTENT_ITEM_TYPE = exports.PSEUDO_CONTENT_ITEM_TYPE = {\r\n TEXT: 0,\r\n IMAGE: 1\r\n};\r\n\r\nvar TOKEN_TYPE = exports.TOKEN_TYPE = {\r\n STRING: 0,\r\n ATTRIBUTE: 1,\r\n URL: 2,\r\n COUNTER: 3,\r\n COUNTERS: 4,\r\n OPENQUOTE: 5,\r\n CLOSEQUOTE: 6\r\n};\r\n\r\nvar parseCounterReset = exports.parseCounterReset = function parseCounterReset(style, data) {\r\n if (!style || !style.counterReset || style.counterReset === 'none') {\r\n return [];\r\n }\r\n\r\n var counterNames = [];\r\n var counterResets = style.counterReset.split(/\\s*,\\s*/);\r\n var lenCounterResets = counterResets.length;\r\n\r\n for (var i = 0; i < lenCounterResets; i++) {\r\n var _counterResets$i$spli = counterResets[i].split(/\\s+/),\r\n _counterResets$i$spli2 = _slicedToArray(_counterResets$i$spli, 2),\r\n counterName = _counterResets$i$spli2[0],\r\n initialValue = _counterResets$i$spli2[1];\r\n\r\n counterNames.push(counterName);\r\n var counter = data.counters[counterName];\r\n if (!counter) {\r\n counter = data.counters[counterName] = [];\r\n }\r\n counter.push(parseInt(initialValue || 0, 10));\r\n }\r\n\r\n return counterNames;\r\n};\r\n\r\nvar popCounters = exports.popCounters = function popCounters(counterNames, data) {\r\n var lenCounters = counterNames.length;\r\n for (var i = 0; i < lenCounters; i++) {\r\n data.counters[counterNames[i]].pop();\r\n }\r\n};\r\n\r\nvar resolvePseudoContent = exports.resolvePseudoContent = function resolvePseudoContent(node, style, data) {\r\n if (!style || !style.content || style.content === 'none' || style.content === '-moz-alt-content' || style.display === 'none') {\r\n return null;\r\n }\r\n\r\n var tokens = parseContent(style.content);\r\n\r\n var len = tokens.length;\r\n var contentItems = [];\r\n var s = '';\r\n\r\n // increment the counter (if there is a \"counter-increment\" declaration)\r\n var counterIncrement = style.counterIncrement;\r\n if (counterIncrement && counterIncrement !== 'none') {\r\n var _counterIncrement$spl = counterIncrement.split(/\\s+/),\r\n _counterIncrement$spl2 = _slicedToArray(_counterIncrement$spl, 2),\r\n counterName = _counterIncrement$spl2[0],\r\n incrementValue = _counterIncrement$spl2[1];\r\n\r\n var counter = data.counters[counterName];\r\n if (counter) {\r\n counter[counter.length - 1] += incrementValue === undefined ? 1 : parseInt(incrementValue, 10);\r\n }\r\n }\r\n\r\n // build the content string\r\n for (var i = 0; i < len; i++) {\r\n var token = tokens[i];\r\n switch (token.type) {\r\n case TOKEN_TYPE.STRING:\r\n s += token.value || '';\r\n break;\r\n\r\n case TOKEN_TYPE.ATTRIBUTE:\r\n if (node instanceof HTMLElement && token.value) {\r\n s += node.getAttribute(token.value) || '';\r\n }\r\n break;\r\n\r\n case TOKEN_TYPE.COUNTER:\r\n var _counter = data.counters[token.name || ''];\r\n if (_counter) {\r\n s += formatCounterValue([_counter[_counter.length - 1]], '', token.format);\r\n }\r\n break;\r\n\r\n case TOKEN_TYPE.COUNTERS:\r\n var _counters = data.counters[token.name || ''];\r\n if (_counters) {\r\n s += formatCounterValue(_counters, token.glue, token.format);\r\n }\r\n break;\r\n\r\n case TOKEN_TYPE.OPENQUOTE:\r\n s += getQuote(style, true, data.quoteDepth);\r\n data.quoteDepth++;\r\n break;\r\n\r\n case TOKEN_TYPE.CLOSEQUOTE:\r\n data.quoteDepth--;\r\n s += getQuote(style, false, data.quoteDepth);\r\n break;\r\n\r\n case TOKEN_TYPE.URL:\r\n if (s) {\r\n contentItems.push({ type: PSEUDO_CONTENT_ITEM_TYPE.TEXT, value: s });\r\n s = '';\r\n }\r\n contentItems.push({ type: PSEUDO_CONTENT_ITEM_TYPE.IMAGE, value: token.value || '' });\r\n break;\r\n }\r\n }\r\n\r\n if (s) {\r\n contentItems.push({ type: PSEUDO_CONTENT_ITEM_TYPE.TEXT, value: s });\r\n }\r\n\r\n return contentItems;\r\n};\r\n\r\nvar parseContent = exports.parseContent = function parseContent(content, cache) {\r\n if (cache && cache[content]) {\r\n return cache[content];\r\n }\r\n\r\n var tokens = [];\r\n var len = content.length;\r\n\r\n var isString = false;\r\n var isEscaped = false;\r\n var isFunction = false;\r\n var str = '';\r\n var functionName = '';\r\n var args = [];\r\n\r\n for (var i = 0; i < len; i++) {\r\n var c = content.charAt(i);\r\n\r\n switch (c) {\r\n case \"'\":\r\n case '\"':\r\n if (isEscaped) {\r\n str += c;\r\n } else {\r\n isString = !isString;\r\n if (!isFunction && !isString) {\r\n tokens.push({ type: TOKEN_TYPE.STRING, value: str });\r\n str = '';\r\n }\r\n }\r\n break;\r\n\r\n case '\\\\':\r\n if (isEscaped) {\r\n str += c;\r\n isEscaped = false;\r\n } else {\r\n isEscaped = true;\r\n }\r\n break;\r\n\r\n case '(':\r\n if (isString) {\r\n str += c;\r\n } else {\r\n isFunction = true;\r\n functionName = str;\r\n str = '';\r\n args = [];\r\n }\r\n break;\r\n\r\n case ')':\r\n if (isString) {\r\n str += c;\r\n } else if (isFunction) {\r\n if (str) {\r\n args.push(str);\r\n }\r\n\r\n switch (functionName) {\r\n case 'attr':\r\n if (args.length > 0) {\r\n tokens.push({ type: TOKEN_TYPE.ATTRIBUTE, value: args[0] });\r\n }\r\n break;\r\n\r\n case 'counter':\r\n if (args.length > 0) {\r\n var counter = {\r\n type: TOKEN_TYPE.COUNTER,\r\n name: args[0]\r\n };\r\n if (args.length > 1) {\r\n counter.format = args[1];\r\n }\r\n tokens.push(counter);\r\n }\r\n break;\r\n\r\n case 'counters':\r\n if (args.length > 0) {\r\n var _counters2 = {\r\n type: TOKEN_TYPE.COUNTERS,\r\n name: args[0]\r\n };\r\n if (args.length > 1) {\r\n _counters2.glue = args[1];\r\n }\r\n if (args.length > 2) {\r\n _counters2.format = args[2];\r\n }\r\n tokens.push(_counters2);\r\n }\r\n break;\r\n\r\n case 'url':\r\n if (args.length > 0) {\r\n tokens.push({ type: TOKEN_TYPE.URL, value: args[0] });\r\n }\r\n break;\r\n }\r\n\r\n isFunction = false;\r\n str = '';\r\n }\r\n break;\r\n\r\n case ',':\r\n if (isString) {\r\n str += c;\r\n } else if (isFunction) {\r\n args.push(str);\r\n str = '';\r\n }\r\n break;\r\n\r\n case ' ':\r\n case '\\t':\r\n if (isString) {\r\n str += c;\r\n } else if (str) {\r\n addOtherToken(tokens, str);\r\n str = '';\r\n }\r\n break;\r\n\r\n default:\r\n str += c;\r\n }\r\n\r\n if (c !== '\\\\') {\r\n isEscaped = false;\r\n }\r\n }\r\n\r\n if (str) {\r\n addOtherToken(tokens, str);\r\n }\r\n\r\n if (cache) {\r\n cache[content] = tokens;\r\n }\r\n\r\n return tokens;\r\n};\r\n\r\nvar addOtherToken = function addOtherToken(tokens, identifier) {\r\n switch (identifier) {\r\n case 'open-quote':\r\n tokens.push({ type: TOKEN_TYPE.OPENQUOTE });\r\n break;\r\n case 'close-quote':\r\n tokens.push({ type: TOKEN_TYPE.CLOSEQUOTE });\r\n break;\r\n }\r\n};\r\n\r\nvar getQuote = function getQuote(style, isOpening, quoteDepth) {\r\n var quotes = style.quotes ? style.quotes.split(/\\s+/) : [\"'\\\"'\", \"'\\\"'\"];\r\n var idx = quoteDepth * 2;\r\n if (idx >= quotes.length) {\r\n idx = quotes.length - 2;\r\n }\r\n if (!isOpening) {\r\n ++idx;\r\n }\r\n return quotes[idx].replace(/^[\"']|[\"']$/g, '');\r\n};\r\n\r\nvar formatCounterValue = function formatCounterValue(counter, glue, format) {\r\n var len = counter.length;\r\n var result = '';\r\n\r\n for (var i = 0; i < len; i++) {\r\n if (i > 0) {\r\n result += glue || '';\r\n }\r\n result += (0, _ListItem.createCounterText)(counter[i], (0, _listStyle.parseListStyleType)(format || 'decimal'), false);\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/***/ })\r\n/******/ ]);\r\n});\n\n\n// WEBPACK FOOTER //\n// ./src/localHtml2Canvas.js","import React, { Component } from 'react';\nimport OData, { buildQuery } from 'react-odata';\nimport 'whatwg-fetch';\nimport Promise from 'promise-polyfill';\nconst dbase = 'http://api1.mlslistings.com/resodata';\n//enable for QA environment\n//const statsbase = 'http://RETSAPI.qa.mlslistings.com';\nconst statsbase = 'https://aculist-widget-api.azureedge.net';\n\n\n\nclass MLSCount extends Component {\n render () {\n const { query } = this.props;\n const countQuery = {\n top: 0,\n count: true,\n ...query\n }\n return <MLSData {...this.props} query={countQuery}/>\n }\n}\n\nclass MLSMedia extends Component {\n render() {\n const { resource = \"public\", collection = \"Media\", ListingKeyNumeric = false , MemberKeyNumeric = false, MediaType = 'Photo' } = this.props;\n const ResourceRecordKeyNumeric = ListingKeyNumeric ? ListingKeyNumeric : MemberKeyNumeric;\n const mediaQuery = {\n filter: { \n and: [\n { ResourceRecordKeyNumeric },\n \"MediaStatus eq ResourceEnums.MediaStatus'Valid'\",\n `MediaCategory eq ResourceEnums.MediaCategory'${MediaType}'`\n ]\n },\n top: 1\n };\n return <MLSData {...this.props} resource={resource} collection={collection} query={mediaQuery} processed={true} />\n }\n}\n\n//Adding classes to accommodate stats,geographies, and UserPreferences\nclass MLSGeography extends Component {\n render() {\n const { resource = \"BiEntity\", collection = \"vGeographyByGeographyTypes\", filter=\"\",select=\"\", ...rest } = this.props; \n return <MLSData base={statsbase} resource={resource} collection={collection} query={{ select, filter}} {...rest} /> \n }\n}\n\nclass MLSStats extends Component {\n render() {\n const { resource = \"Growth\", collection, filter, select,orderBy } = this.props; \n var actualcollection= (collection.toLowerCase() === 'markettrends' || collection.toLowerCase() === 'year-to-year')?'MarketTrends': \n collection.toLowerCase() === 'kpi' ? 'MarketTrendsLast90': \n (collection.toLowerCase() === 'member' || collection.toLowerCase() === 'office') ? 'AgentProduction':collection; \n return <MLSData {...this.props} base={statsbase} resource={resource} collection={actualcollection} query={{ select, filter,orderBy}}/> \n }\n}\n\nclass MLSUserPreference extends Component {\n render() {\n const { resource = \"BiEntity\", collection = \"vWidgetAssets\", filter=\"\",select=\"\", ...rest } = this.props; \n return <MLSData base={statsbase} resource={resource} collection={collection} query={{ select, filter}} {...rest} /> \n }\n}\n//end\n\nclass MLSData extends Component {\n render() {\n const { base = dbase, token, collection, authMethod = { method: 'POST'}, authHeader = { headers: { ...typeof this.props.token !== \"undefined\" && { Authorization: `Bearer ${this.props.token}` }, 'Accept': 'application/json' } }, link, resource = 'www', limit, processed = false } = this.props;\n\n if (link) {\n return <OData {...this.props} baseUrl={link} options={authHeader} />\n }\n\n if (collection.toLowerCase() === 'media' && !processed ) {\n return <MLSMedia {...this.props} collection={collection} resource={resource} options={authHeader} />\n }\n\n return <OData {...this.props} baseUrl={`${base}/${resource}/${collection}`} options={authHeader} />\n }\n}\n\nexport { MLSMedia, MLSCount,MLSGeography,MLSStats,MLSUserPreference};\nexport default MLSData;\n\n\n// WEBPACK FOOTER //\n// ./src/react-mlsdata.js","import React, { Component } from \"react\";\nimport MarketTrends from \"./MarketTrends\";\n\nimport Promise from 'promise-polyfill';\n\n\nexport default class WidgetResidential extends Component{\n\nconstructor(props)\n{\nsuper(props);\nthis.state={\n data: null,\n widgetselections: [{ \n measure: \"InventoryCount\", \n periodtype: \"Quarter\",\n period: \"65\",\n geo: [\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest', \n },\n { \n measure: \"AvgMonthsToSell\", \n periodtype: \"Quarter\",\n period: \"65\",\n geo: [\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest',\n },\n { \n measure: \"SoldCount\", \n periodtype: \"Quarter\",\n period: \"65\",\n geo:[\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest',\n },\n { \n measure: \"MedSalePrice\", \n periodtype: \"Quarter\",\n period: \"65\",\n geo: [\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest',\n },\n { \n measure: \"AvgSalePrice\", \n periodtype: \"Quarter\",\n period: \"65\",\n geo: [\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest',\n },\n { \n measure: \"AvgSaleOverListPrice\", \n periodtype: \"Quarter\",\n period: \"65\",\n geo: [\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest',\n },\n { \n measure: \"SoldMedDOM\", \n periodtype: \"Quarter\",\n period: \"65\",\n geo: [\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest',\n },\n { \n measure: \"MedSalePrice,AvgSalePrice\", \n periodtype: \"Quarter\",\n period: \"65\",\n geo: [\"County:San Mateo\"],\n classtype: 'Residential - Single Family,Residential - Common Interest',\n }\n \n ]\n\n}\n\n}\n\n shouldComponentUpdate(nextProps, nextState) { \n if(_.isEqual(nextProps.widgetselections, this.props.widgetselections) && !_.isEqual(nextProps.data, this.props.data)){\n return true;\n } else {\n return false;\n }\n }\n\n componentWillReceiveProps(nextProps) { \n let widgetselections = this.state.widgetselections;\n let widgetselection = nextProps.widgetselections;\n let newWidgetSelections;\n \n newWidgetSelections = widgetselections.map(function(widgetinstance,index){ \n \n var _widgetSelection = widgetinstance;\n \n _widgetSelection.geo = widgetselection.geo,\n _widgetSelection.period = widgetselection.period,\n _widgetSelection.periodtype = widgetselection.periodtype\n\n return _widgetSelection;\n \n }) \n\n this.setState({ widgetselections: newWidgetSelections, data: nextProps.data });\n }\n\nrender(){\n \n let widgets = this.state.widgetselections.map((widget, index) => \n <MarketTrends id={\"chart_\"+index} key={_.uniqueId(\"chart\")} widgetselections={widget} data={this.props.data}/>\n );\n\nreturn(\n<div>\n{widgets}\n</div>\n\n);\n\n}\n}\n\n\n// WEBPACK FOOTER //\n// ./src/widgetresidential.js","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.c3 = factory());\n}(this, (function () { 'use strict';\n\nvar CLASS = {\n target: 'c3-target',\n chart: 'c3-chart',\n chartLine: 'c3-chart-line',\n chartLines: 'c3-chart-lines',\n chartBar: 'c3-chart-bar',\n chartBars: 'c3-chart-bars',\n chartText: 'c3-chart-text',\n chartTexts: 'c3-chart-texts',\n chartArc: 'c3-chart-arc',\n chartArcs: 'c3-chart-arcs',\n chartArcsTitle: 'c3-chart-arcs-title',\n chartArcsBackground: 'c3-chart-arcs-background',\n chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit',\n chartArcsGaugeMax: 'c3-chart-arcs-gauge-max',\n chartArcsGaugeMin: 'c3-chart-arcs-gauge-min',\n selectedCircle: 'c3-selected-circle',\n selectedCircles: 'c3-selected-circles',\n eventRect: 'c3-event-rect',\n eventRects: 'c3-event-rects',\n eventRectsSingle: 'c3-event-rects-single',\n eventRectsMultiple: 'c3-event-rects-multiple',\n zoomRect: 'c3-zoom-rect',\n brush: 'c3-brush',\n focused: 'c3-focused',\n defocused: 'c3-defocused',\n region: 'c3-region',\n regions: 'c3-regions',\n title: 'c3-title',\n tooltipContainer: 'c3-tooltip-container',\n tooltip: 'c3-tooltip',\n tooltipName: 'c3-tooltip-name',\n shape: 'c3-shape',\n shapes: 'c3-shapes',\n line: 'c3-line',\n lines: 'c3-lines',\n bar: 'c3-bar',\n bars: 'c3-bars',\n circle: 'c3-circle',\n circles: 'c3-circles',\n arc: 'c3-arc',\n arcs: 'c3-arcs',\n area: 'c3-area',\n areas: 'c3-areas',\n empty: 'c3-empty',\n text: 'c3-text',\n texts: 'c3-texts',\n gaugeValue: 'c3-gauge-value',\n grid: 'c3-grid',\n gridLines: 'c3-grid-lines',\n xgrid: 'c3-xgrid',\n xgrids: 'c3-xgrids',\n xgridLine: 'c3-xgrid-line',\n xgridLines: 'c3-xgrid-lines',\n xgridFocus: 'c3-xgrid-focus',\n ygrid: 'c3-ygrid',\n ygrids: 'c3-ygrids',\n ygridLine: 'c3-ygrid-line',\n ygridLines: 'c3-ygrid-lines',\n axis: 'c3-axis',\n axisX: 'c3-axis-x',\n axisXLabel: 'c3-axis-x-label',\n axisY: 'c3-axis-y',\n axisYLabel: 'c3-axis-y-label',\n axisY2: 'c3-axis-y2',\n axisY2Label: 'c3-axis-y2-label',\n legendBackground: 'c3-legend-background',\n legendItem: 'c3-legend-item',\n legendItemEvent: 'c3-legend-item-event',\n legendItemTile: 'c3-legend-item-tile',\n legendItemHidden: 'c3-legend-item-hidden',\n legendItemFocused: 'c3-legend-item-focused',\n dragarea: 'c3-dragarea',\n EXPANDED: '_expanded_',\n SELECTED: '_selected_',\n INCLUDED: '_included_'\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n\n\n\n\n\n\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar isValue = function isValue(v) {\n return v || v === 0;\n};\nvar isFunction = function isFunction(o) {\n return typeof o === 'function';\n};\nvar isArray = function isArray(o) {\n return Array.isArray(o);\n};\nvar isString = function isString(o) {\n return typeof o === 'string';\n};\nvar isUndefined = function isUndefined(v) {\n return typeof v === 'undefined';\n};\nvar isDefined = function isDefined(v) {\n return typeof v !== 'undefined';\n};\nvar ceil10 = function ceil10(v) {\n return Math.ceil(v / 10) * 10;\n};\nvar asHalfPixel = function asHalfPixel(n) {\n return Math.ceil(n) + 0.5;\n};\nvar diffDomain = function diffDomain(d) {\n return d[1] - d[0];\n};\nvar isEmpty = function isEmpty(o) {\n return typeof o === 'undefined' || o === null || isString(o) && o.length === 0 || (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === 'object' && Object.keys(o).length === 0;\n};\nvar notEmpty = function notEmpty(o) {\n return !c3_chart_internal_fn.isEmpty(o);\n};\nvar getOption = function getOption(options, key, defaultValue) {\n return isDefined(options[key]) ? options[key] : defaultValue;\n};\nvar hasValue = function hasValue(dict, value) {\n var found = false;\n Object.keys(dict).forEach(function (key) {\n if (dict[key] === value) {\n found = true;\n }\n });\n return found;\n};\nvar sanitise = function sanitise(str) {\n return typeof str === 'string' ? str.replace(/</g, '<').replace(/>/g, '>') : str;\n};\nvar getPathBox = function getPathBox(path) {\n var box = path.getBoundingClientRect(),\n items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)],\n minX = items[0].x,\n minY = Math.min(items[0].y, items[1].y);\n return { x: minX, y: minY, width: box.width, height: box.height };\n};\n\nvar c3_axis_fn;\nvar c3_axis_internal_fn;\n\nfunction AxisInternal(component, params) {\n var internal = this;\n internal.component = component;\n internal.params = params || {};\n\n internal.d3 = component.d3;\n internal.scale = internal.d3.scale.linear();\n internal.range;\n internal.orient = \"bottom\";\n internal.innerTickSize = 6;\n internal.outerTickSize = this.params.withOuterTick ? 6 : 0;\n internal.tickPadding = 3;\n internal.tickValues = null;\n internal.tickFormat;\n internal.tickArguments;\n\n internal.tickOffset = 0;\n internal.tickCulling = true;\n internal.tickCentered;\n internal.tickTextCharSize;\n internal.tickTextRotate = internal.params.tickTextRotate;\n internal.tickLength;\n\n internal.axis = internal.generateAxis();\n}\nc3_axis_internal_fn = AxisInternal.prototype;\n\nc3_axis_internal_fn.axisX = function (selection, x, tickOffset) {\n selection.attr(\"transform\", function (d) {\n return \"translate(\" + Math.ceil(x(d) + tickOffset) + \", 0)\";\n });\n};\nc3_axis_internal_fn.axisY = function (selection, y) {\n selection.attr(\"transform\", function (d) {\n return \"translate(0,\" + Math.ceil(y(d)) + \")\";\n });\n};\nc3_axis_internal_fn.scaleExtent = function (domain) {\n var start = domain[0],\n stop = domain[domain.length - 1];\n return start < stop ? [start, stop] : [stop, start];\n};\nc3_axis_internal_fn.generateTicks = function (scale) {\n var internal = this;\n var i,\n domain,\n ticks = [];\n if (scale.ticks) {\n return scale.ticks.apply(scale, internal.tickArguments);\n }\n domain = scale.domain();\n for (i = Math.ceil(domain[0]); i < domain[1]; i++) {\n ticks.push(i);\n }\n if (ticks.length > 0 && ticks[0] > 0) {\n ticks.unshift(ticks[0] - (ticks[1] - ticks[0]));\n }\n return ticks;\n};\nc3_axis_internal_fn.copyScale = function () {\n var internal = this;\n var newScale = internal.scale.copy(),\n domain;\n if (internal.params.isCategory) {\n domain = internal.scale.domain();\n newScale.domain([domain[0], domain[1] - 1]);\n }\n return newScale;\n};\nc3_axis_internal_fn.textFormatted = function (v) {\n var internal = this,\n formatted = internal.tickFormat ? internal.tickFormat(v) : v;\n return typeof formatted !== 'undefined' ? formatted : '';\n};\nc3_axis_internal_fn.updateRange = function () {\n var internal = this;\n internal.range = internal.scale.rangeExtent ? internal.scale.rangeExtent() : internal.scaleExtent(internal.scale.range());\n return internal.range;\n};\nc3_axis_internal_fn.updateTickTextCharSize = function (tick) {\n var internal = this;\n if (internal.tickTextCharSize) {\n return internal.tickTextCharSize;\n }\n var size = {\n h: 11.5,\n w: 5.5\n };\n tick.select('text').text(function (d) {\n return internal.textFormatted(d);\n }).each(function (d) {\n var box = this.getBoundingClientRect(),\n text = internal.textFormatted(d),\n h = box.height,\n w = text ? box.width / text.length : undefined;\n if (h && w) {\n size.h = h;\n size.w = w;\n }\n }).text('');\n internal.tickTextCharSize = size;\n return size;\n};\nc3_axis_internal_fn.transitionise = function (selection) {\n return this.params.withoutTransition ? selection : this.d3.transition(selection);\n};\nc3_axis_internal_fn.isVertical = function () {\n return this.orient === 'left' || this.orient === 'right';\n};\nc3_axis_internal_fn.tspanData = function (d, i, ticks, scale) {\n var internal = this;\n var splitted = internal.params.tickMultiline ? internal.splitTickText(d, ticks, scale) : [].concat(internal.textFormatted(d));\n return splitted.map(function (s) {\n return { index: i, splitted: s, length: splitted.length };\n });\n};\nc3_axis_internal_fn.splitTickText = function (d, ticks, scale) {\n var internal = this,\n tickText = internal.textFormatted(d),\n maxWidth = internal.params.tickWidth,\n subtext,\n spaceIndex,\n textWidth,\n splitted = [];\n\n if (Object.prototype.toString.call(tickText) === \"[object Array]\") {\n return tickText;\n }\n\n if (!maxWidth || maxWidth <= 0) {\n maxWidth = internal.isVertical() ? 95 : internal.params.isCategory ? Math.ceil(scale(ticks[1]) - scale(ticks[0])) - 12 : 110;\n }\n\n function split(splitted, text) {\n spaceIndex = undefined;\n for (var i = 1; i < text.length; i++) {\n if (text.charAt(i) === ' ') {\n spaceIndex = i;\n }\n subtext = text.substr(0, i + 1);\n textWidth = internal.tickTextCharSize.w * subtext.length;\n // if text width gets over tick width, split by space index or crrent index\n if (maxWidth < textWidth) {\n return split(splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)), text.slice(spaceIndex ? spaceIndex + 1 : i));\n }\n }\n return splitted.concat(text);\n }\n\n return split(splitted, tickText + \"\");\n};\nc3_axis_internal_fn.updateTickLength = function () {\n var internal = this;\n internal.tickLength = Math.max(internal.innerTickSize, 0) + internal.tickPadding;\n};\nc3_axis_internal_fn.lineY2 = function (d) {\n var internal = this,\n tickPosition = internal.scale(d) + (internal.tickCentered ? 0 : internal.tickOffset);\n return internal.range[0] < tickPosition && tickPosition < internal.range[1] ? internal.innerTickSize : 0;\n};\nc3_axis_internal_fn.textY = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1) : internal.tickLength;\n};\nc3_axis_internal_fn.textTransform = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? \"rotate(\" + rotate + \")\" : \"\";\n};\nc3_axis_internal_fn.textTextAnchor = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? rotate > 0 ? \"start\" : \"end\" : \"middle\";\n};\nc3_axis_internal_fn.tspanDx = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 8 * Math.sin(Math.PI * (rotate / 180)) : 0;\n};\nc3_axis_internal_fn.tspanDy = function (d, i) {\n var internal = this,\n dy = internal.tickTextCharSize.h;\n if (i === 0) {\n if (internal.isVertical()) {\n dy = -((d.length - 1) * (internal.tickTextCharSize.h / 2) - 3);\n } else {\n dy = \".71em\";\n }\n }\n return dy;\n};\n\nc3_axis_internal_fn.generateAxis = function () {\n var internal = this,\n d3 = internal.d3,\n params = internal.params;\n function axis(g) {\n g.each(function () {\n var g = axis.g = d3.select(this);\n\n var scale0 = this.__chart__ || internal.scale,\n scale1 = this.__chart__ = internal.copyScale();\n\n var ticks = internal.tickValues ? internal.tickValues : internal.generateTicks(scale1),\n tick = g.selectAll(\".tick\").data(ticks, scale1),\n tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", 1e-6),\n\n // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks.\n tickExit = tick.exit().remove(),\n tickUpdate = internal.transitionise(tick).style(\"opacity\", 1),\n tickTransform,\n tickX,\n tickY;\n\n if (params.isCategory) {\n internal.tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2);\n tickX = internal.tickCentered ? 0 : internal.tickOffset;\n tickY = internal.tickCentered ? internal.tickOffset : 0;\n } else {\n internal.tickOffset = tickX = 0;\n }\n\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n\n internal.updateRange();\n internal.updateTickLength();\n internal.updateTickTextCharSize(g.select('.tick'));\n\n var lineUpdate = tickUpdate.select(\"line\"),\n textUpdate = tickUpdate.select(\"text\"),\n tspanUpdate = tick.select(\"text\").selectAll('tspan').data(function (d, i) {\n return internal.tspanData(d, i, ticks, scale1);\n });\n\n tspanUpdate.enter().append('tspan');\n tspanUpdate.exit().remove();\n tspanUpdate.text(function (d) {\n return d.splitted;\n });\n\n var path = g.selectAll(\".domain\").data([0]),\n pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), internal.transitionise(path));\n\n // TODO: each attr should be one function and change its behavior by internal.orient, probably\n switch (internal.orient) {\n case \"bottom\":\n {\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n return internal.lineY2(d, i);\n });\n textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n return internal.textY(d, i);\n }).attr(\"transform\", function (d, i) {\n return internal.textTransform(d, i);\n }).style(\"text-anchor\", function (d, i) {\n return internal.textTextAnchor(d, i);\n });\n tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n }).attr('dx', function (d, i) {\n return internal.tspanDx(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + internal.outerTickSize);\n break;\n }\n case \"top\":\n {\n // TODO: rotated tick text\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x2\", 0).attr(\"y2\", -internal.innerTickSize);\n textUpdate.attr(\"x\", 0).attr(\"y\", -internal.tickLength).style(\"text-anchor\", \"middle\");\n tspanUpdate.attr('x', 0).attr(\"dy\", \"0em\");\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + -internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + -internal.outerTickSize);\n break;\n }\n case \"left\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", -internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n textUpdate.attr(\"x\", -internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"end\");\n tspanUpdate.attr('x', -internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + -internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + -internal.outerTickSize);\n break;\n }\n case \"right\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", internal.innerTickSize).attr(\"y2\", 0);\n textUpdate.attr(\"x\", internal.tickLength).attr(\"y\", 0).style(\"text-anchor\", \"start\");\n tspanUpdate.attr('x', internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + internal.outerTickSize);\n break;\n }\n }\n if (scale1.rangeBand) {\n var x = scale1,\n dx = x.rangeBand() / 2;\n scale0 = scale1 = function scale1(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, internal.tickOffset);\n }\n tickEnter.call(tickTransform, scale0, internal.tickOffset);\n tickUpdate.call(tickTransform, scale1, internal.tickOffset);\n });\n }\n axis.scale = function (x) {\n if (!arguments.length) {\n return internal.scale;\n }\n internal.scale = x;\n return axis;\n };\n axis.orient = function (x) {\n if (!arguments.length) {\n return internal.orient;\n }\n internal.orient = x in { top: 1, right: 1, bottom: 1, left: 1 } ? x + \"\" : \"bottom\";\n return axis;\n };\n axis.tickFormat = function (format) {\n if (!arguments.length) {\n return internal.tickFormat;\n }\n internal.tickFormat = format;\n return axis;\n };\n axis.tickCentered = function (isCentered) {\n if (!arguments.length) {\n return internal.tickCentered;\n }\n internal.tickCentered = isCentered;\n return axis;\n };\n axis.tickOffset = function () {\n return internal.tickOffset;\n };\n axis.tickInterval = function () {\n var interval, length;\n if (params.isCategory) {\n interval = internal.tickOffset * 2;\n } else {\n length = axis.g.select('path.domain').node().getTotalLength() - internal.outerTickSize * 2;\n interval = length / axis.g.selectAll('line').size();\n }\n return interval === Infinity ? 0 : interval;\n };\n axis.ticks = function () {\n if (!arguments.length) {\n return internal.tickArguments;\n }\n internal.tickArguments = arguments;\n return axis;\n };\n axis.tickCulling = function (culling) {\n if (!arguments.length) {\n return internal.tickCulling;\n }\n internal.tickCulling = culling;\n return axis;\n };\n axis.tickValues = function (x) {\n if (typeof x === 'function') {\n internal.tickValues = function () {\n return x(internal.scale.domain());\n };\n } else {\n if (!arguments.length) {\n return internal.tickValues;\n }\n internal.tickValues = x;\n }\n return axis;\n };\n return axis;\n};\n\nvar Axis = function (_Component) {\n inherits(Axis, _Component);\n\n function Axis(owner) {\n classCallCheck(this, Axis);\n\n var fn = {\n fn: c3_axis_fn,\n internal: {\n fn: c3_axis_internal_fn\n }\n };\n\n var _this = possibleConstructorReturn(this, (Axis.__proto__ || Object.getPrototypeOf(Axis)).call(this, owner, 'axis', fn));\n\n _this.d3 = owner.d3;\n _this.internal = AxisInternal;\n return _this;\n }\n\n return Axis;\n}(Component);\n\nc3_axis_fn = Axis.prototype;\n\nc3_axis_fn.init = function init() {\n var $$ = this.owner,\n config = $$.config,\n main = $$.main;\n $$.axes.x = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisX).attr(\"clip-path\", $$.clipPathForXAxis).attr(\"transform\", $$.getTranslate('x')).style(\"visibility\", config.axis_x_show ? 'visible' : 'hidden');\n $$.axes.x.append(\"text\").attr(\"class\", CLASS.axisXLabel).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").style(\"text-anchor\", this.textAnchorForXAxisLabel.bind(this));\n $$.axes.y = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY).attr(\"clip-path\", config.axis_y_inner ? \"\" : $$.clipPathForYAxis).attr(\"transform\", $$.getTranslate('y')).style(\"visibility\", config.axis_y_show ? 'visible' : 'hidden');\n $$.axes.y.append(\"text\").attr(\"class\", CLASS.axisYLabel).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForYAxisLabel.bind(this));\n\n $$.axes.y2 = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY2\n // clip-path?\n ).attr(\"transform\", $$.getTranslate('y2')).style(\"visibility\", config.axis_y2_show ? 'visible' : 'hidden');\n $$.axes.y2.append(\"text\").attr(\"class\", CLASS.axisY2Label).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForY2AxisLabel.bind(this));\n};\nc3_axis_fn.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n isCategory: $$.isCategorized(),\n withOuterTick: withOuterTick,\n tickMultiline: config.axis_x_tick_multiline,\n tickWidth: config.axis_x_tick_width,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate,\n withoutTransition: withoutTransition\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient);\n\n if ($$.isTimeSeries() && tickValues && typeof tickValues !== \"function\") {\n tickValues = tickValues.map(function (v) {\n return $$.parseDate(v);\n });\n }\n\n // Set tick\n axis.tickFormat(tickFormat).tickValues(tickValues);\n if ($$.isCategorized()) {\n axis.tickCentered(config.axis_x_tick_centered);\n if (isEmpty(config.axis_x_tick_culling)) {\n config.axis_x_tick_culling = false;\n }\n }\n\n return axis;\n};\nc3_axis_fn.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) {\n var $$ = this.owner,\n config = $$.config,\n tickValues;\n if (config.axis_x_tick_fit || config.axis_x_tick_count) {\n tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());\n }\n if (axis) {\n axis.tickValues(tickValues);\n } else {\n $$.xAxis.tickValues(tickValues);\n $$.subXAxis.tickValues(tickValues);\n }\n return tickValues;\n};\nc3_axis_fn.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n withOuterTick: withOuterTick,\n withoutTransition: withoutTransition,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_y_tick_rotate\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient).tickFormat(tickFormat);\n if ($$.isTimeSeriesY()) {\n axis.ticks($$.d3.time[config.axis_y_tick_time_value], config.axis_y_tick_time_interval);\n } else {\n axis.tickValues(tickValues);\n }\n return axis;\n};\nc3_axis_fn.getId = function getId(id) {\n var config = this.owner.config;\n return id in config.data_axes ? config.data_axes[id] : 'y';\n};\nc3_axis_fn.getXAxisTickFormat = function getXAxisTickFormat() {\n var $$ = this.owner,\n config = $$.config,\n format = $$.isTimeSeries() ? $$.defaultAxisTimeFormat : $$.isCategorized() ? $$.categoryName : function (v) {\n return v < 0 ? v.toFixed(0) : v;\n };\n if (config.axis_x_tick_format) {\n if (isFunction(config.axis_x_tick_format)) {\n format = config.axis_x_tick_format;\n } else if ($$.isTimeSeries()) {\n format = function format(date) {\n return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : \"\";\n };\n }\n }\n return isFunction(format) ? function (v) {\n return format.call($$, v);\n } : format;\n};\nc3_axis_fn.getTickValues = function getTickValues(tickValues, axis) {\n return tickValues ? tickValues : axis ? axis.tickValues() : undefined;\n};\nc3_axis_fn.getXAxisTickValues = function getXAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis);\n};\nc3_axis_fn.getYAxisTickValues = function getYAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis);\n};\nc3_axis_fn.getY2AxisTickValues = function getY2AxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis);\n};\nc3_axis_fn.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) {\n var $$ = this.owner,\n config = $$.config,\n option;\n if (axisId === 'y') {\n option = config.axis_y_label;\n } else if (axisId === 'y2') {\n option = config.axis_y2_label;\n } else if (axisId === 'x') {\n option = config.axis_x_label;\n }\n return option;\n};\nc3_axis_fn.getLabelText = function getLabelText(axisId) {\n var option = this.getLabelOptionByAxisId(axisId);\n return isString(option) ? option : option ? option.text : null;\n};\nc3_axis_fn.setLabelText = function setLabelText(axisId, text) {\n var $$ = this.owner,\n config = $$.config,\n option = this.getLabelOptionByAxisId(axisId);\n if (isString(option)) {\n if (axisId === 'y') {\n config.axis_y_label = text;\n } else if (axisId === 'y2') {\n config.axis_y2_label = text;\n } else if (axisId === 'x') {\n config.axis_x_label = text;\n }\n } else if (option) {\n option.text = text;\n }\n};\nc3_axis_fn.getLabelPosition = function getLabelPosition(axisId, defaultPosition) {\n var option = this.getLabelOptionByAxisId(axisId),\n position = option && (typeof option === 'undefined' ? 'undefined' : _typeof(option)) === 'object' && option.position ? option.position : defaultPosition;\n return {\n isInner: position.indexOf('inner') >= 0,\n isOuter: position.indexOf('outer') >= 0,\n isLeft: position.indexOf('left') >= 0,\n isCenter: position.indexOf('center') >= 0,\n isRight: position.indexOf('right') >= 0,\n isTop: position.indexOf('top') >= 0,\n isMiddle: position.indexOf('middle') >= 0,\n isBottom: position.indexOf('bottom') >= 0\n };\n};\nc3_axis_fn.getXAxisLabelPosition = function getXAxisLabelPosition() {\n return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right');\n};\nc3_axis_fn.getYAxisLabelPosition = function getYAxisLabelPosition() {\n return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n};\nc3_axis_fn.getY2AxisLabelPosition = function getY2AxisLabelPosition() {\n return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n};\nc3_axis_fn.getLabelPositionById = function getLabelPositionById(id) {\n return id === 'y2' ? this.getY2AxisLabelPosition() : id === 'y' ? this.getYAxisLabelPosition() : this.getXAxisLabelPosition();\n};\nc3_axis_fn.textForXAxisLabel = function textForXAxisLabel() {\n return this.getLabelText('x');\n};\nc3_axis_fn.textForYAxisLabel = function textForYAxisLabel() {\n return this.getLabelText('y');\n};\nc3_axis_fn.textForY2AxisLabel = function textForY2AxisLabel() {\n return this.getLabelText('y2');\n};\nc3_axis_fn.xForAxisLabel = function xForAxisLabel(forHorizontal, position) {\n var $$ = this.owner;\n if (forHorizontal) {\n return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width;\n } else {\n return position.isBottom ? -$$.height : position.isMiddle ? -$$.height / 2 : 0;\n }\n};\nc3_axis_fn.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? \"0.5em\" : position.isRight ? \"-0.5em\" : \"0\";\n } else {\n return position.isTop ? \"-0.5em\" : position.isBottom ? \"0.5em\" : \"0\";\n }\n};\nc3_axis_fn.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end';\n } else {\n return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end';\n }\n};\nc3_axis_fn.xForXAxisLabel = function xForXAxisLabel() {\n return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n};\nc3_axis_fn.xForYAxisLabel = function xForYAxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n};\nc3_axis_fn.xForY2AxisLabel = function xForY2AxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n};\nc3_axis_fn.dxForXAxisLabel = function dxForXAxisLabel() {\n return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n};\nc3_axis_fn.dxForYAxisLabel = function dxForYAxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n};\nc3_axis_fn.dxForY2AxisLabel = function dxForY2AxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n};\nc3_axis_fn.dyForXAxisLabel = function dyForXAxisLabel() {\n var $$ = this.owner,\n config = $$.config,\n position = this.getXAxisLabelPosition();\n if (config.axis_rotated) {\n return position.isInner ? \"1.2em\" : -25 - this.getMaxTickWidth('x');\n } else {\n return position.isInner ? \"-0.5em\" : config.axis_x_height ? config.axis_x_height - 10 : \"3em\";\n }\n};\nc3_axis_fn.dyForYAxisLabel = function dyForYAxisLabel() {\n var $$ = this.owner,\n position = this.getYAxisLabelPosition();\n if ($$.config.axis_rotated) {\n return position.isInner ? \"-0.5em\" : \"3em\";\n } else {\n return position.isInner ? \"1.2em\" : -10 - ($$.config.axis_y_inner ? 0 : this.getMaxTickWidth('y') + 10);\n }\n};\nc3_axis_fn.dyForY2AxisLabel = function dyForY2AxisLabel() {\n var $$ = this.owner,\n position = this.getY2AxisLabelPosition();\n if ($$.config.axis_rotated) {\n return position.isInner ? \"1.2em\" : \"-2.2em\";\n } else {\n return position.isInner ? \"-0.5em\" : 15 + ($$.config.axis_y2_inner ? 0 : this.getMaxTickWidth('y2') + 15);\n }\n};\nc3_axis_fn.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition());\n};\nc3_axis_fn.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition());\n};\nc3_axis_fn.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition());\n};\nc3_axis_fn.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) {\n var $$ = this.owner,\n config = $$.config,\n maxWidth = 0,\n targetsToShow,\n scale,\n axis,\n dummy,\n svg;\n if (withoutRecompute && $$.currentMaxTickWidths[id]) {\n return $$.currentMaxTickWidths[id];\n }\n if ($$.svg) {\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n if (id === 'y') {\n scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y'));\n axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true, true);\n } else if (id === 'y2') {\n scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2'));\n axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true, true);\n } else {\n scale = $$.x.copy().domain($$.getXDomain(targetsToShow));\n axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true);\n this.updateXAxisTickValues(targetsToShow, axis);\n }\n dummy = $$.d3.select('body').append('div').classed('c3', true);\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0), svg.append('g').call(axis).each(function () {\n $$.d3.select(this).selectAll('text').each(function () {\n var box = this.getBoundingClientRect();\n if (maxWidth < box.width) {\n maxWidth = box.width;\n }\n });\n dummy.remove();\n });\n }\n $$.currentMaxTickWidths[id] = maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth;\n return $$.currentMaxTickWidths[id];\n};\n\nc3_axis_fn.updateLabels = function updateLabels(withTransition) {\n var $$ = this.owner;\n var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel),\n axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel),\n axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label);\n (withTransition ? axisXLabel.transition() : axisXLabel).attr(\"x\", this.xForXAxisLabel.bind(this)).attr(\"dx\", this.dxForXAxisLabel.bind(this)).attr(\"dy\", this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this));\n (withTransition ? axisYLabel.transition() : axisYLabel).attr(\"x\", this.xForYAxisLabel.bind(this)).attr(\"dx\", this.dxForYAxisLabel.bind(this)).attr(\"dy\", this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this));\n (withTransition ? axisY2Label.transition() : axisY2Label).attr(\"x\", this.xForY2AxisLabel.bind(this)).attr(\"dx\", this.dxForY2AxisLabel.bind(this)).attr(\"dy\", this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this));\n};\nc3_axis_fn.getPadding = function getPadding(padding, key, defaultValue, domainLength) {\n var p = typeof padding === 'number' ? padding : padding[key];\n if (!isValue(p)) {\n return defaultValue;\n }\n if (padding.unit === 'ratio') {\n return padding[key] * domainLength;\n }\n // assume padding is pixels if unit is not specified\n return this.convertPixelsToAxisPadding(p, domainLength);\n};\nc3_axis_fn.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) {\n var $$ = this.owner,\n length = $$.config.axis_rotated ? $$.width : $$.height;\n return domainLength * (pixels / length);\n};\nc3_axis_fn.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) {\n var tickValues = values,\n targetCount,\n start,\n end,\n count,\n interval,\n i,\n tickValue;\n if (tickCount) {\n targetCount = isFunction(tickCount) ? tickCount() : tickCount;\n // compute ticks according to tickCount\n if (targetCount === 1) {\n tickValues = [values[0]];\n } else if (targetCount === 2) {\n tickValues = [values[0], values[values.length - 1]];\n } else if (targetCount > 2) {\n count = targetCount - 2;\n start = values[0];\n end = values[values.length - 1];\n interval = (end - start) / (count + 1);\n // re-construct unique values\n tickValues = [start];\n for (i = 0; i < count; i++) {\n tickValue = +start + interval * (i + 1);\n tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue);\n }\n tickValues.push(end);\n }\n }\n if (!forTimeSeries) {\n tickValues = tickValues.sort(function (a, b) {\n return a - b;\n });\n }\n return tickValues;\n};\nc3_axis_fn.generateTransitions = function generateTransitions(duration) {\n var $$ = this.owner,\n axes = $$.axes;\n return {\n axisX: duration ? axes.x.transition().duration(duration) : axes.x,\n axisY: duration ? axes.y.transition().duration(duration) : axes.y,\n axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2,\n axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx\n };\n};\nc3_axis_fn.redraw = function redraw(transitions, isHidden) {\n var $$ = this.owner;\n $$.axes.x.style(\"opacity\", isHidden ? 0 : 1);\n $$.axes.y.style(\"opacity\", isHidden ? 0 : 1);\n $$.axes.y2.style(\"opacity\", isHidden ? 0 : 1);\n $$.axes.subx.style(\"opacity\", isHidden ? 0 : 1);\n transitions.axisX.call($$.xAxis);\n transitions.axisY.call($$.yAxis);\n transitions.axisY2.call($$.y2Axis);\n transitions.axisSubX.call($$.subXAxis);\n};\n\nvar c3$1 = { version: \"0.4.18\" };\n\nvar c3_chart_fn;\nvar c3_chart_internal_fn;\n\nfunction Component(owner, componentKey, fn) {\n this.owner = owner;\n c3$1.chart.internal[componentKey] = fn;\n}\n\nfunction Chart(config) {\n var $$ = this.internal = new ChartInternal(this);\n $$.loadConfig(config);\n\n $$.beforeInit(config);\n $$.init();\n $$.afterInit(config);\n\n // bind \"this\" to nested API\n (function bindThis(fn, target, argThis) {\n Object.keys(fn).forEach(function (key) {\n target[key] = fn[key].bind(argThis);\n if (Object.keys(fn[key]).length > 0) {\n bindThis(fn[key], target[key], argThis);\n }\n });\n })(c3_chart_fn, this, this);\n}\n\nfunction ChartInternal(api) {\n var $$ = this;\n $$.d3 = window.d3 ? window.d3 : typeof require !== 'undefined' ? require(\"d3\") : undefined;\n $$.api = api;\n $$.config = $$.getDefaultConfig();\n $$.data = {};\n $$.cache = {};\n $$.axes = {};\n}\n\nc3$1.generate = function (config) {\n return new Chart(config);\n};\n\nc3$1.chart = {\n fn: Chart.prototype,\n internal: {\n fn: ChartInternal.prototype\n }\n};\nc3_chart_fn = c3$1.chart.fn;\nc3_chart_internal_fn = c3$1.chart.internal.fn;\n\nc3_chart_internal_fn.beforeInit = function () {\n // can do something\n};\nc3_chart_internal_fn.afterInit = function () {\n // can do something\n};\nc3_chart_internal_fn.init = function () {\n var $$ = this,\n config = $$.config;\n\n $$.initParams();\n\n if (config.data_url) {\n $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_headers, config.data_keys, $$.initWithData);\n } else if (config.data_json) {\n $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys));\n } else if (config.data_rows) {\n $$.initWithData($$.convertRowsToData(config.data_rows));\n } else if (config.data_columns) {\n $$.initWithData($$.convertColumnsToData(config.data_columns));\n } else {\n throw Error('url or json or rows or columns is required.');\n }\n};\n\nc3_chart_internal_fn.initParams = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n\n // MEMO: clipId needs to be unique because it conflicts when multiple charts exist\n $$.clipId = \"c3-\" + +new Date() + '-clip', $$.clipIdForXAxis = $$.clipId + '-xaxis', $$.clipIdForYAxis = $$.clipId + '-yaxis', $$.clipIdForGrid = $$.clipId + '-grid', $$.clipIdForSubchart = $$.clipId + '-subchart', $$.clipPath = $$.getClipPath($$.clipId), $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis), $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);\n $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid), $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart), $$.dragStart = null;\n $$.dragging = false;\n $$.flowing = false;\n $$.cancelClick = false;\n $$.mouseover = false;\n $$.transiting = false;\n\n $$.color = $$.generateColor();\n $$.levelColor = $$.generateLevelColor();\n\n $$.dataTimeFormat = config.data_xLocaltime ? d3.time.format : d3.time.format.utc;\n $$.axisTimeFormat = config.axis_x_localtime ? d3.time.format : d3.time.format.utc;\n $$.defaultAxisTimeFormat = $$.axisTimeFormat.multi([[\".%L\", function (d) {\n return d.getMilliseconds();\n }], [\":%S\", function (d) {\n return d.getSeconds();\n }], [\"%I:%M\", function (d) {\n return d.getMinutes();\n }], [\"%I %p\", function (d) {\n return d.getHours();\n }], [\"%-m/%-d\", function (d) {\n return d.getDay() && d.getDate() !== 1;\n }], [\"%-m/%-d\", function (d) {\n return d.getDate() !== 1;\n }], [\"%-m/%-d\", function (d) {\n return d.getMonth();\n }], [\"%Y/%-m/%-d\", function () {\n return true;\n }]]);\n\n $$.hiddenTargetIds = [];\n $$.hiddenLegendIds = [];\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n\n $$.xOrient = config.axis_rotated ? \"left\" : \"bottom\";\n $$.yOrient = config.axis_rotated ? config.axis_y_inner ? \"top\" : \"bottom\" : config.axis_y_inner ? \"right\" : \"left\";\n $$.y2Orient = config.axis_rotated ? config.axis_y2_inner ? \"bottom\" : \"top\" : config.axis_y2_inner ? \"left\" : \"right\";\n $$.subXOrient = config.axis_rotated ? \"left\" : \"bottom\";\n\n $$.isLegendRight = config.legend_position === 'right';\n $$.isLegendInset = config.legend_position === 'inset';\n $$.isLegendTop = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'top-right';\n $$.isLegendLeft = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'bottom-left';\n $$.legendStep = 0;\n $$.legendItemWidth = 0;\n $$.legendItemHeight = 0;\n\n $$.currentMaxTickWidths = {\n x: 0,\n y: 0,\n y2: 0\n };\n\n $$.rotated_padding_left = 30;\n $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30;\n $$.rotated_padding_top = 5;\n\n $$.withoutFadeIn = {};\n\n $$.intervalForObserveInserted = undefined;\n\n $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js\n};\n\nc3_chart_internal_fn.initChartElements = function () {\n if (this.initBar) {\n this.initBar();\n }\n if (this.initLine) {\n this.initLine();\n }\n if (this.initArc) {\n this.initArc();\n }\n if (this.initGauge) {\n this.initGauge();\n }\n if (this.initText) {\n this.initText();\n }\n};\n\nc3_chart_internal_fn.initWithData = function (data) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n var defs,\n main,\n binding = true;\n\n $$.axis = new Axis($$);\n\n if ($$.initPie) {\n $$.initPie();\n }\n if ($$.initBrush) {\n $$.initBrush();\n }\n if ($$.initZoom) {\n $$.initZoom();\n }\n\n if (!config.bindto) {\n $$.selectChart = d3.selectAll([]);\n } else if (typeof config.bindto.node === 'function') {\n $$.selectChart = config.bindto;\n } else {\n $$.selectChart = d3.select(config.bindto);\n }\n if ($$.selectChart.empty()) {\n $$.selectChart = d3.select(document.createElement('div')).style('opacity', 0);\n $$.observeInserted($$.selectChart);\n binding = false;\n }\n $$.selectChart.html(\"\").classed(\"c3\", true);\n\n // Init data as targets\n $$.data.xs = {};\n $$.data.targets = $$.convertDataToTargets(data);\n\n if (config.data_filter) {\n $$.data.targets = $$.data.targets.filter(config.data_filter);\n }\n\n // Set targets to hide if needed\n if (config.data_hide) {\n $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide);\n }\n if (config.legend_hide) {\n $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide);\n }\n\n // when gauge, hide legend // TODO: fix\n if ($$.hasType('gauge')) {\n config.legend_show = false;\n }\n\n // Init sizes and scales\n $$.updateSizes();\n $$.updateScales();\n\n // Set domains for each scale\n $$.x.domain(d3.extent($$.getXDomain($$.data.targets)));\n $$.y.domain($$.getYDomain($$.data.targets, 'y'));\n $$.y2.domain($$.getYDomain($$.data.targets, 'y2'));\n $$.subX.domain($$.x.domain());\n $$.subY.domain($$.y.domain());\n $$.subY2.domain($$.y2.domain());\n\n // Save original x domain for zoom update\n $$.orgXDomain = $$.x.domain();\n\n // Set initialized scales to brush and zoom\n if ($$.brush) {\n $$.brush.scale($$.subX);\n }\n if (config.zoom_enabled) {\n $$.zoom.scale($$.x);\n }\n\n /*-- Basic Elements --*/\n\n // Define svgs\n $$.svg = $$.selectChart.append(\"svg\").style(\"overflow\", \"hidden\").on('mouseenter', function () {\n return config.onmouseover.call($$);\n }).on('mouseleave', function () {\n return config.onmouseout.call($$);\n });\n\n if ($$.config.svg_classname) {\n $$.svg.attr('class', $$.config.svg_classname);\n }\n\n // Define defs\n defs = $$.svg.append(\"defs\");\n $$.clipChart = $$.appendClip(defs, $$.clipId);\n $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);\n $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);\n $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);\n $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart);\n $$.updateSvgSize();\n\n // Define regions\n main = $$.main = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('main'));\n\n if ($$.initSubchart) {\n $$.initSubchart();\n }\n if ($$.initTooltip) {\n $$.initTooltip();\n }\n if ($$.initLegend) {\n $$.initLegend();\n }\n if ($$.initTitle) {\n $$.initTitle();\n }\n\n /*-- Main Region --*/\n\n // text when empty\n main.append(\"text\").attr(\"class\", CLASS.text + ' ' + CLASS.empty).attr(\"text-anchor\", \"middle\" // horizontal centering of text at x position in all browsers.\n ).attr(\"dominant-baseline\", \"middle\"); // vertical centering of text at y position in all browsers, except IE.\n\n // Regions\n $$.initRegion();\n\n // Grids\n $$.initGrid();\n\n // Define g for chart area\n main.append('g').attr(\"clip-path\", $$.clipPath).attr('class', CLASS.chart);\n\n // Grid lines\n if (config.grid_lines_front) {\n $$.initGridLines();\n }\n\n // Cover whole with rects for events\n $$.initEventRect();\n\n // Define g for chart\n $$.initChartElements();\n\n // if zoom privileged, insert rect to forefront\n // TODO: is this needed?\n main.insert('rect', config.zoom_privileged ? null : 'g.' + CLASS.regions).attr('class', CLASS.zoomRect).attr('width', $$.width).attr('height', $$.height).style('opacity', 0).on(\"dblclick.zoom\", null);\n\n // Set default extent if defined\n if (config.axis_x_extent) {\n $$.brush.extent($$.getDefaultExtent());\n }\n\n // Add Axis\n $$.axis.init();\n\n // Set targets\n $$.updateTargets($$.data.targets);\n\n // Draw with targets\n if (binding) {\n $$.updateDimension();\n $$.config.oninit.call($$);\n $$.redraw({\n withTransition: false,\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransitionForAxis: false\n });\n }\n\n // Bind resize event\n $$.bindResize();\n\n // export element of the chart\n $$.api.element = $$.selectChart.node();\n};\n\nc3_chart_internal_fn.smoothLines = function (el, type) {\n var $$ = this;\n if (type === 'grid') {\n el.each(function () {\n var g = $$.d3.select(this),\n x1 = g.attr('x1'),\n x2 = g.attr('x2'),\n y1 = g.attr('y1'),\n y2 = g.attr('y2');\n g.attr({\n 'x1': Math.ceil(x1),\n 'x2': Math.ceil(x2),\n 'y1': Math.ceil(y1),\n 'y2': Math.ceil(y2)\n });\n });\n }\n};\n\nc3_chart_internal_fn.updateSizes = function () {\n var $$ = this,\n config = $$.config;\n var legendHeight = $$.legend ? $$.getLegendHeight() : 0,\n legendWidth = $$.legend ? $$.getLegendWidth() : 0,\n legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight,\n hasArc = $$.hasArcType(),\n xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'),\n subchartHeight = config.subchart_show && !hasArc ? config.subchart_size_height + xAxisHeight : 0;\n\n $$.currentWidth = $$.getCurrentWidth();\n $$.currentHeight = $$.getCurrentHeight();\n\n // for main\n $$.margin = config.axis_rotated ? {\n top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(),\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: $$.getHorizontalAxisHeight('y') + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft())\n } : {\n top: 4 + $$.getCurrentPaddingTop(), // for top tick text\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: xAxisHeight + subchartHeight + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: hasArc ? 0 : $$.getCurrentPaddingLeft()\n };\n\n // for subchart\n $$.margin2 = config.axis_rotated ? {\n top: $$.margin.top,\n right: NaN,\n bottom: 20 + legendHeightForBottom,\n left: $$.rotated_padding_left\n } : {\n top: $$.currentHeight - subchartHeight - legendHeightForBottom,\n right: NaN,\n bottom: xAxisHeight + legendHeightForBottom,\n left: $$.margin.left\n };\n\n // for legend\n $$.margin3 = {\n top: 0,\n right: NaN,\n bottom: 0,\n left: 0\n };\n if ($$.updateSizeForLegend) {\n $$.updateSizeForLegend(legendHeight, legendWidth);\n }\n\n $$.width = $$.currentWidth - $$.margin.left - $$.margin.right;\n $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom;\n if ($$.width < 0) {\n $$.width = 0;\n }\n if ($$.height < 0) {\n $$.height = 0;\n }\n\n $$.width2 = config.axis_rotated ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right : $$.width;\n $$.height2 = config.axis_rotated ? $$.height : $$.currentHeight - $$.margin2.top - $$.margin2.bottom;\n if ($$.width2 < 0) {\n $$.width2 = 0;\n }\n if ($$.height2 < 0) {\n $$.height2 = 0;\n }\n\n // for arc\n $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0);\n $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10);\n if ($$.hasType('gauge') && !config.gauge_fullCircle) {\n $$.arcHeight += $$.height - $$.getGaugeLabelHeight();\n }\n if ($$.updateRadius) {\n $$.updateRadius();\n }\n\n if ($$.isLegendRight && hasArc) {\n $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1;\n }\n};\n\nc3_chart_internal_fn.updateTargets = function (targets) {\n var $$ = this;\n\n /*-- Main --*/\n\n //-- Text --//\n $$.updateTargetsForText(targets);\n\n //-- Bar --//\n $$.updateTargetsForBar(targets);\n\n //-- Line --//\n $$.updateTargetsForLine(targets);\n\n //-- Arc --//\n if ($$.hasArcType() && $$.updateTargetsForArc) {\n $$.updateTargetsForArc(targets);\n }\n\n /*-- Sub --*/\n\n if ($$.updateTargetsForSubchart) {\n $$.updateTargetsForSubchart(targets);\n }\n\n // Fade-in each chart\n $$.showTargets();\n};\nc3_chart_internal_fn.showTargets = function () {\n var $$ = this;\n $$.svg.selectAll('.' + CLASS.target).filter(function (d) {\n return $$.isTargetToShow(d.id);\n }).transition().duration($$.config.transition_duration).style(\"opacity\", 1);\n};\n\nc3_chart_internal_fn.redraw = function (options, transitions) {\n var $$ = this,\n main = $$.main,\n d3 = $$.d3,\n config = $$.config;\n var areaIndices = $$.getShapeIndices($$.isAreaType),\n barIndices = $$.getShapeIndices($$.isBarType),\n lineIndices = $$.getShapeIndices($$.isLineType);\n var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis, withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend, withEventRect, withDimension, withUpdateXAxis;\n var hideAxis = $$.hasArcType();\n var drawArea, drawBar, drawLine, xForText, yForText;\n var duration, durationForExit, durationForAxis;\n var waitForDraw, flow;\n var targetsToShow = $$.filterTargetsToShow($$.data.targets),\n tickValues,\n i,\n intervalForCulling,\n xDomainForZoom;\n var xv = $$.xv.bind($$),\n cx,\n cy;\n\n options = options || {};\n withY = getOption(options, \"withY\", true);\n withSubchart = getOption(options, \"withSubchart\", true);\n withTransition = getOption(options, \"withTransition\", true);\n withTransform = getOption(options, \"withTransform\", false);\n withUpdateXDomain = getOption(options, \"withUpdateXDomain\", false);\n withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", false);\n withTrimXDomain = getOption(options, \"withTrimXDomain\", true);\n withUpdateXAxis = getOption(options, \"withUpdateXAxis\", withUpdateXDomain);\n withLegend = getOption(options, \"withLegend\", false);\n withEventRect = getOption(options, \"withEventRect\", true);\n withDimension = getOption(options, \"withDimension\", true);\n withTransitionForExit = getOption(options, \"withTransitionForExit\", withTransition);\n withTransitionForAxis = getOption(options, \"withTransitionForAxis\", withTransition);\n\n duration = withTransition ? config.transition_duration : 0;\n durationForExit = withTransitionForExit ? duration : 0;\n durationForAxis = withTransitionForAxis ? duration : 0;\n\n transitions = transitions || $$.axis.generateTransitions(durationForAxis);\n\n // update legend and transform each g\n if (withLegend && config.legend_show) {\n $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);\n } else if (withDimension) {\n // need to update dimension (e.g. axis.y.tick.values) because y tick values should change\n // no need to update axis in it because they will be updated in redraw()\n $$.updateDimension(true);\n }\n\n // MEMO: needed for grids calculation\n if ($$.isCategorized() && targetsToShow.length === 0) {\n $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]);\n }\n\n if (targetsToShow.length) {\n $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain);\n if (!config.axis_x_tick_values) {\n tickValues = $$.axis.updateXAxisTickValues(targetsToShow);\n }\n } else {\n $$.xAxis.tickValues([]);\n $$.subXAxis.tickValues([]);\n }\n\n if (config.zoom_rescale && !options.flow) {\n xDomainForZoom = $$.x.orgDomain();\n }\n\n $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom));\n $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom));\n\n if (!config.axis_y_tick_values && config.axis_y_tick_count) {\n $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count));\n }\n if (!config.axis_y2_tick_values && config.axis_y2_tick_count) {\n $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count));\n }\n\n // axes\n $$.axis.redraw(transitions, hideAxis);\n\n // Update axis label\n $$.axis.updateLabels(withTransition);\n\n // show/hide if manual culling needed\n if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) {\n if (config.axis_x_tick_culling && tickValues) {\n for (i = 1; i < tickValues.length; i++) {\n if (tickValues.length / i < config.axis_x_tick_culling_max) {\n intervalForCulling = i;\n break;\n }\n }\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) {\n var index = tickValues.indexOf(e);\n if (index >= 0) {\n d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block');\n }\n });\n } else {\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block');\n }\n }\n\n // setup drawer - MEMO: these must be called after axis updated\n drawArea = $$.generateDrawArea ? $$.generateDrawArea(areaIndices, false) : undefined;\n drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined;\n drawLine = $$.generateDrawLine ? $$.generateDrawLine(lineIndices, false) : undefined;\n xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true);\n yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false);\n\n // Update sub domain\n if (withY) {\n $$.subY.domain($$.getYDomain(targetsToShow, 'y'));\n $$.subY2.domain($$.getYDomain(targetsToShow, 'y2'));\n }\n\n // xgrid focus\n $$.updateXgridFocus();\n\n // Data empty label positioning and text.\n main.select(\"text.\" + CLASS.text + '.' + CLASS.empty).attr(\"x\", $$.width / 2).attr(\"y\", $$.height / 2).text(config.data_empty_label_text).transition().style('opacity', targetsToShow.length ? 0 : 1);\n\n // grid\n $$.updateGrid(duration);\n\n // rect for regions\n $$.updateRegion(duration);\n\n // bars\n $$.updateBar(durationForExit);\n\n // lines, areas and cricles\n $$.updateLine(durationForExit);\n $$.updateArea(durationForExit);\n $$.updateCircle();\n\n // text\n if ($$.hasDataLabel()) {\n $$.updateText(durationForExit);\n }\n\n // title\n if ($$.redrawTitle) {\n $$.redrawTitle();\n }\n\n // arc\n if ($$.redrawArc) {\n $$.redrawArc(duration, durationForExit, withTransform);\n }\n\n // subchart\n if ($$.redrawSubchart) {\n $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices);\n }\n\n // circles for select\n main.selectAll('.' + CLASS.selectedCircles).filter($$.isBarType.bind($$)).selectAll('circle').remove();\n\n // event rects will redrawn when flow called\n if (config.interaction_enabled && !options.flow && withEventRect) {\n $$.redrawEventRect();\n if ($$.updateZoom) {\n $$.updateZoom();\n }\n }\n\n // update circleY based on updated parameters\n $$.updateCircleY();\n\n // generate circle x/y functions depending on updated params\n cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$);\n cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$);\n\n if (options.flow) {\n flow = $$.generateFlow({\n targets: targetsToShow,\n flow: options.flow,\n duration: options.flow.duration,\n drawBar: drawBar,\n drawLine: drawLine,\n drawArea: drawArea,\n cx: cx,\n cy: cy,\n xv: xv,\n xForText: xForText,\n yForText: yForText\n });\n }\n\n if ((duration || flow) && $$.isTabVisible()) {\n // Only use transition if tab visible. See #938.\n // transition should be derived from one transition\n d3.transition().duration(duration).each(function () {\n var transitionsToWait = [];\n\n // redraw and gather transitions\n [$$.redrawBar(drawBar, true), $$.redrawLine(drawLine, true), $$.redrawArea(drawArea, true), $$.redrawCircle(cx, cy, true), $$.redrawText(xForText, yForText, options.flow, true), $$.redrawRegion(true), $$.redrawGrid(true)].forEach(function (transitions) {\n transitions.forEach(function (transition) {\n transitionsToWait.push(transition);\n });\n });\n\n // Wait for end of transitions to call flow and onrendered callback\n waitForDraw = $$.generateWait();\n transitionsToWait.forEach(function (t) {\n waitForDraw.add(t);\n });\n }).call(waitForDraw, function () {\n if (flow) {\n flow();\n }\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n });\n } else {\n $$.redrawBar(drawBar);\n $$.redrawLine(drawLine);\n $$.redrawArea(drawArea);\n $$.redrawCircle(cx, cy);\n $$.redrawText(xForText, yForText, options.flow);\n $$.redrawRegion();\n $$.redrawGrid();\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n }\n\n // update fadein condition\n $$.mapToIds($$.data.targets).forEach(function (id) {\n $$.withoutFadeIn[id] = true;\n });\n};\n\nc3_chart_internal_fn.updateAndRedraw = function (options) {\n var $$ = this,\n config = $$.config,\n transitions;\n options = options || {};\n // same with redraw\n options.withTransition = getOption(options, \"withTransition\", true);\n options.withTransform = getOption(options, \"withTransform\", false);\n options.withLegend = getOption(options, \"withLegend\", false);\n // NOT same with redraw\n options.withUpdateXDomain = true;\n options.withUpdateOrgXDomain = true;\n options.withTransitionForExit = false;\n options.withTransitionForTransform = getOption(options, \"withTransitionForTransform\", options.withTransition);\n // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called)\n $$.updateSizes();\n // MEMO: called in updateLegend in redraw if withLegend\n if (!(options.withLegend && config.legend_show)) {\n transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0);\n // Update scales\n $$.updateScales();\n $$.updateSvgSize();\n // Update g positions\n $$.transformAll(options.withTransitionForTransform, transitions);\n }\n // Draw with new sizes & scales\n $$.redraw(options, transitions);\n};\nc3_chart_internal_fn.redrawWithoutRescale = function () {\n this.redraw({\n withY: false,\n withSubchart: false,\n withEventRect: false,\n withTransitionForAxis: false\n });\n};\n\nc3_chart_internal_fn.isTimeSeries = function () {\n return this.config.axis_x_type === 'timeseries';\n};\nc3_chart_internal_fn.isCategorized = function () {\n return this.config.axis_x_type.indexOf('categor') >= 0;\n};\nc3_chart_internal_fn.isCustomX = function () {\n var $$ = this,\n config = $$.config;\n return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs));\n};\n\nc3_chart_internal_fn.isTimeSeriesY = function () {\n return this.config.axis_y_type === 'timeseries';\n};\n\nc3_chart_internal_fn.getTranslate = function (target) {\n var $$ = this,\n config = $$.config,\n x,\n y;\n if (target === 'main') {\n x = asHalfPixel($$.margin.left);\n y = asHalfPixel($$.margin.top);\n } else if (target === 'context') {\n x = asHalfPixel($$.margin2.left);\n y = asHalfPixel($$.margin2.top);\n } else if (target === 'legend') {\n x = $$.margin3.left;\n y = $$.margin3.top;\n } else if (target === 'x') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height;\n } else if (target === 'y') {\n x = 0;\n y = config.axis_rotated ? $$.height : 0;\n } else if (target === 'y2') {\n x = config.axis_rotated ? 0 : $$.width;\n y = config.axis_rotated ? 1 : 0;\n } else if (target === 'subx') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height2;\n } else if (target === 'arc') {\n x = $$.arcWidth / 2;\n y = $$.arcHeight / 2;\n }\n return \"translate(\" + x + \",\" + y + \")\";\n};\nc3_chart_internal_fn.initialOpacity = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0;\n};\nc3_chart_internal_fn.initialOpacityForCircle = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0;\n};\nc3_chart_internal_fn.opacityForCircle = function (d) {\n var isPointShouldBeShown = isFunction(this.config.point_show) ? this.config.point_show(d) : this.config.point_show;\n var opacity = isPointShouldBeShown ? 1 : 0;\n return isValue(d.value) ? this.isScatterType(d) ? 0.5 : opacity : 0;\n};\nc3_chart_internal_fn.opacityForText = function () {\n return this.hasDataLabel() ? 1 : 0;\n};\nc3_chart_internal_fn.xx = function (d) {\n return d ? this.x(d.x) : null;\n};\nc3_chart_internal_fn.xv = function (d) {\n var $$ = this,\n value = d.value;\n if ($$.isTimeSeries()) {\n value = $$.parseDate(d.value);\n } else if ($$.isCategorized() && typeof d.value === 'string') {\n value = $$.config.axis_x_categories.indexOf(d.value);\n }\n return Math.ceil($$.x(value));\n};\nc3_chart_internal_fn.yv = function (d) {\n var $$ = this,\n yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y;\n return Math.ceil(yScale(d.value));\n};\nc3_chart_internal_fn.subxx = function (d) {\n return d ? this.subX(d.x) : null;\n};\n\nc3_chart_internal_fn.transformMain = function (withTransition, transitions) {\n var $$ = this,\n xAxis,\n yAxis,\n y2Axis;\n if (transitions && transitions.axisX) {\n xAxis = transitions.axisX;\n } else {\n xAxis = $$.main.select('.' + CLASS.axisX);\n if (withTransition) {\n xAxis = xAxis.transition();\n }\n }\n if (transitions && transitions.axisY) {\n yAxis = transitions.axisY;\n } else {\n yAxis = $$.main.select('.' + CLASS.axisY);\n if (withTransition) {\n yAxis = yAxis.transition();\n }\n }\n if (transitions && transitions.axisY2) {\n y2Axis = transitions.axisY2;\n } else {\n y2Axis = $$.main.select('.' + CLASS.axisY2);\n if (withTransition) {\n y2Axis = y2Axis.transition();\n }\n }\n (withTransition ? $$.main.transition() : $$.main).attr(\"transform\", $$.getTranslate('main'));\n xAxis.attr(\"transform\", $$.getTranslate('x'));\n yAxis.attr(\"transform\", $$.getTranslate('y'));\n y2Axis.attr(\"transform\", $$.getTranslate('y2'));\n $$.main.select('.' + CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n};\nc3_chart_internal_fn.transformAll = function (withTransition, transitions) {\n var $$ = this;\n $$.transformMain(withTransition, transitions);\n if ($$.config.subchart_show) {\n $$.transformContext(withTransition, transitions);\n }\n if ($$.legend) {\n $$.transformLegend(withTransition);\n }\n};\n\nc3_chart_internal_fn.updateSvgSize = function () {\n var $$ = this,\n brush = $$.svg.select(\".c3-brush .background\");\n $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);\n $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect').attr('width', $$.width).attr('height', $$.height);\n $$.svg.select('#' + $$.clipIdForXAxis).select('rect').attr('x', $$.getXAxisClipX.bind($$)).attr('y', $$.getXAxisClipY.bind($$)).attr('width', $$.getXAxisClipWidth.bind($$)).attr('height', $$.getXAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForYAxis).select('rect').attr('x', $$.getYAxisClipX.bind($$)).attr('y', $$.getYAxisClipY.bind($$)).attr('width', $$.getYAxisClipWidth.bind($$)).attr('height', $$.getYAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForSubchart).select('rect').attr('width', $$.width).attr('height', brush.size() ? brush.attr('height') : 0);\n $$.svg.select('.' + CLASS.zoomRect).attr('width', $$.width).attr('height', $$.height);\n // MEMO: parent div's height will be bigger than svg when <!DOCTYPE html>\n $$.selectChart.style('max-height', $$.currentHeight + \"px\");\n};\n\nc3_chart_internal_fn.updateDimension = function (withoutAxis) {\n var $$ = this;\n if (!withoutAxis) {\n if ($$.config.axis_rotated) {\n $$.axes.x.call($$.xAxis);\n $$.axes.subx.call($$.subXAxis);\n } else {\n $$.axes.y.call($$.yAxis);\n $$.axes.y2.call($$.y2Axis);\n }\n }\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize();\n $$.transformAll(false);\n};\n\nc3_chart_internal_fn.observeInserted = function (selection) {\n var $$ = this,\n observer;\n if (typeof MutationObserver === 'undefined') {\n window.console.error(\"MutationObserver not defined.\");\n return;\n }\n observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.type === 'childList' && mutation.previousSibling) {\n observer.disconnect();\n // need to wait for completion of load because size calculation requires the actual sizes determined after that completion\n $$.intervalForObserveInserted = window.setInterval(function () {\n // parentNode will NOT be null when completed\n if (selection.node().parentNode) {\n window.clearInterval($$.intervalForObserveInserted);\n $$.updateDimension();\n if ($$.brush) {\n $$.brush.update();\n }\n $$.config.oninit.call($$);\n $$.redraw({\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransition: false,\n withTransitionForTransform: false,\n withLegend: true\n });\n selection.transition().style('opacity', 1);\n }\n }, 10);\n }\n });\n });\n observer.observe(selection.node(), { attributes: true, childList: true, characterData: true });\n};\n\nc3_chart_internal_fn.bindResize = function () {\n var $$ = this,\n config = $$.config;\n\n $$.resizeFunction = $$.generateResize();\n\n $$.resizeFunction.add(function () {\n config.onresize.call($$);\n });\n if (config.resize_auto) {\n $$.resizeFunction.add(function () {\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n $$.resizeTimeout = window.setTimeout(function () {\n delete $$.resizeTimeout;\n $$.api.flush();\n }, 100);\n });\n }\n $$.resizeFunction.add(function () {\n config.onresized.call($$);\n });\n\n if (window.attachEvent) {\n window.attachEvent('onresize', $$.resizeFunction);\n } else if (window.addEventListener) {\n window.addEventListener('resize', $$.resizeFunction, false);\n } else {\n // fallback to this, if this is a very old browser\n var wrapper = window.onresize;\n if (!wrapper) {\n // create a wrapper that will call all charts\n wrapper = $$.generateResize();\n } else if (!wrapper.add || !wrapper.remove) {\n // there is already a handler registered, make sure we call it too\n wrapper = $$.generateResize();\n wrapper.add(window.onresize);\n }\n // add this graph to the wrapper, we will be removed if the user calls destroy\n wrapper.add($$.resizeFunction);\n window.onresize = wrapper;\n }\n};\n\nc3_chart_internal_fn.generateResize = function () {\n var resizeFunctions = [];\n function callResizeFunctions() {\n resizeFunctions.forEach(function (f) {\n f();\n });\n }\n callResizeFunctions.add = function (f) {\n resizeFunctions.push(f);\n };\n callResizeFunctions.remove = function (f) {\n for (var i = 0; i < resizeFunctions.length; i++) {\n if (resizeFunctions[i] === f) {\n resizeFunctions.splice(i, 1);\n break;\n }\n }\n };\n return callResizeFunctions;\n};\n\nc3_chart_internal_fn.endall = function (transition, callback) {\n var n = 0;\n transition.each(function () {\n ++n;\n }).each(\"end\", function () {\n if (! --n) {\n callback.apply(this, arguments);\n }\n });\n};\nc3_chart_internal_fn.generateWait = function () {\n var transitionsToWait = [],\n f = function f(transition, callback) {\n var timer = setInterval(function () {\n var done = 0;\n transitionsToWait.forEach(function (t) {\n if (t.empty()) {\n done += 1;\n return;\n }\n try {\n t.transition();\n } catch (e) {\n done += 1;\n }\n });\n if (done === transitionsToWait.length) {\n clearInterval(timer);\n if (callback) {\n callback();\n }\n }\n }, 10);\n };\n f.add = function (transition) {\n transitionsToWait.push(transition);\n };\n return f;\n};\n\nc3_chart_internal_fn.parseDate = function (date) {\n var $$ = this,\n parsedDate;\n if (date instanceof Date) {\n parsedDate = date;\n } else if (typeof date === 'string') {\n parsedDate = $$.dataTimeFormat($$.config.data_xFormat).parse(date);\n } else if ((typeof date === 'undefined' ? 'undefined' : _typeof(date)) === 'object') {\n parsedDate = new Date(+date);\n } else if (typeof date === 'number' && !isNaN(date)) {\n parsedDate = new Date(+date);\n }\n if (!parsedDate || isNaN(+parsedDate)) {\n window.console.error(\"Failed to parse x '\" + date + \"' to Date object\");\n }\n return parsedDate;\n};\n\nc3_chart_internal_fn.isTabVisible = function () {\n var hidden;\n if (typeof document.hidden !== \"undefined\") {\n // Opera 12.10 and Firefox 18 and later support\n hidden = \"hidden\";\n } else if (typeof document.mozHidden !== \"undefined\") {\n hidden = \"mozHidden\";\n } else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n }\n\n return document[hidden] ? false : true;\n};\n\nc3_chart_internal_fn.isValue = isValue;\nc3_chart_internal_fn.isFunction = isFunction;\nc3_chart_internal_fn.isString = isString;\nc3_chart_internal_fn.isUndefined = isUndefined;\nc3_chart_internal_fn.isDefined = isDefined;\nc3_chart_internal_fn.ceil10 = ceil10;\nc3_chart_internal_fn.asHalfPixel = asHalfPixel;\nc3_chart_internal_fn.diffDomain = diffDomain;\nc3_chart_internal_fn.isEmpty = isEmpty;\nc3_chart_internal_fn.notEmpty = notEmpty;\nc3_chart_internal_fn.notEmpty = notEmpty;\nc3_chart_internal_fn.getOption = getOption;\nc3_chart_internal_fn.hasValue = hasValue;\nc3_chart_internal_fn.sanitise = sanitise;\nc3_chart_internal_fn.getPathBox = getPathBox;\nc3_chart_internal_fn.CLASS = CLASS;\n\n/* jshint ignore:start */\n\n// PhantomJS doesn't have support for Function.prototype.bind, which has caused confusion. Use\n// this polyfill to avoid the confusion.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill\n\nif (!Function.prototype.bind) {\n Function.prototype.bind = function (oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function fNOP() {},\n fBound = function fBound() {\n return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n fNOP.prototype = this.prototype;\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n}\n\n// SVGPathSeg API polyfill\n// https://github.com/progers/pathseg\n//\n// This is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from\n// SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec\n// changes which were implemented in Firefox 43 and Chrome 46.\n\n(function () {\n \"use strict\";\n\n if (!(\"SVGPathSeg\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg\n window.SVGPathSeg = function (type, typeAsLetter, owningPathSegList) {\n this.pathSegType = type;\n this.pathSegTypeAsLetter = typeAsLetter;\n this._owningPathSegList = owningPathSegList;\n };\n\n window.SVGPathSeg.prototype.classname = \"SVGPathSeg\";\n\n window.SVGPathSeg.PATHSEG_UNKNOWN = 0;\n window.SVGPathSeg.PATHSEG_CLOSEPATH = 1;\n window.SVGPathSeg.PATHSEG_MOVETO_ABS = 2;\n window.SVGPathSeg.PATHSEG_MOVETO_REL = 3;\n window.SVGPathSeg.PATHSEG_LINETO_ABS = 4;\n window.SVGPathSeg.PATHSEG_LINETO_REL = 5;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;\n window.SVGPathSeg.PATHSEG_ARC_ABS = 10;\n window.SVGPathSeg.PATHSEG_ARC_REL = 11;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;\n\n // Notify owning PathSegList on any changes so they can be synchronized back to the path element.\n window.SVGPathSeg.prototype._segmentChanged = function () {\n if (this._owningPathSegList) this._owningPathSegList.segmentChanged(this);\n };\n\n window.SVGPathSegClosePath = function (owningPathSegList) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CLOSEPATH, \"z\", owningPathSegList);\n };\n window.SVGPathSegClosePath.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegClosePath.prototype.toString = function () {\n return \"[object SVGPathSegClosePath]\";\n };\n window.SVGPathSegClosePath.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter;\n };\n window.SVGPathSegClosePath.prototype.clone = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n\n window.SVGPathSegMovetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_ABS, \"M\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegMovetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegMovetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegMovetoAbs]\";\n };\n window.SVGPathSegMovetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegMovetoAbs.prototype.clone = function () {\n return new window.SVGPathSegMovetoAbs(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegMovetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_REL, \"m\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegMovetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegMovetoRel.prototype.toString = function () {\n return \"[object SVGPathSegMovetoRel]\";\n };\n window.SVGPathSegMovetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegMovetoRel.prototype.clone = function () {\n return new window.SVGPathSegMovetoRel(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_ABS, \"L\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegLinetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoAbs]\";\n };\n window.SVGPathSegLinetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegLinetoAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoAbs(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_REL, \"l\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegLinetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoRel]\";\n };\n window.SVGPathSegLinetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegLinetoRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoRel(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoCubicAbs = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, \"C\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicAbs]\";\n };\n window.SVGPathSegCurvetoCubicAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoCubicAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x1\", { get: function get() {\n return this._x1;\n }, set: function set(x1) {\n this._x1 = x1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y1\", { get: function get() {\n return this._y1;\n }, set: function set(y1) {\n this._y1 = y1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x2\", { get: function get() {\n return this._x2;\n }, set: function set(x2) {\n this._x2 = x2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y2\", { get: function get() {\n return this._y2;\n }, set: function set(y2) {\n this._y2 = y2;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoCubicRel = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, \"c\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicRel]\";\n };\n window.SVGPathSegCurvetoCubicRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoCubicRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x1\", { get: function get() {\n return this._x1;\n }, set: function set(x1) {\n this._x1 = x1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y1\", { get: function get() {\n return this._y1;\n }, set: function set(y1) {\n this._y1 = y1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x2\", { get: function get() {\n return this._x2;\n }, set: function set(x2) {\n this._x2 = x2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y2\", { get: function get() {\n return this._y2;\n }, set: function set(y2) {\n this._y2 = y2;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoQuadraticAbs = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, \"Q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n window.SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticAbs]\";\n };\n window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x1\", { get: function get() {\n return this._x1;\n }, set: function set(x1) {\n this._x1 = x1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y1\", { get: function get() {\n return this._y1;\n }, set: function set(y1) {\n this._y1 = y1;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoQuadraticRel = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, \"q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n window.SVGPathSegCurvetoQuadraticRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticRel]\";\n };\n window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x1\", { get: function get() {\n return this._x1;\n }, set: function set(x1) {\n this._x1 = x1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y1\", { get: function get() {\n return this._y1;\n }, set: function set(y1) {\n this._y1 = y1;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegArcAbs = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_ABS, \"A\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n window.SVGPathSegArcAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegArcAbs.prototype.toString = function () {\n return \"[object SVGPathSegArcAbs]\";\n };\n window.SVGPathSegArcAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegArcAbs.prototype.clone = function () {\n return new window.SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r1\", { get: function get() {\n return this._r1;\n }, set: function set(r1) {\n this._r1 = r1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r2\", { get: function get() {\n return this._r2;\n }, set: function set(r2) {\n this._r2 = r2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"angle\", { get: function get() {\n return this._angle;\n }, set: function set(angle) {\n this._angle = angle;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"largeArcFlag\", { get: function get() {\n return this._largeArcFlag;\n }, set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"sweepFlag\", { get: function get() {\n return this._sweepFlag;\n }, set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegArcRel = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_REL, \"a\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n window.SVGPathSegArcRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegArcRel.prototype.toString = function () {\n return \"[object SVGPathSegArcRel]\";\n };\n window.SVGPathSegArcRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegArcRel.prototype.clone = function () {\n return new window.SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r1\", { get: function get() {\n return this._r1;\n }, set: function set(r1) {\n this._r1 = r1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r2\", { get: function get() {\n return this._r2;\n }, set: function set(r2) {\n this._r2 = r2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"angle\", { get: function get() {\n return this._angle;\n }, set: function set(angle) {\n this._angle = angle;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"largeArcFlag\", { get: function get() {\n return this._largeArcFlag;\n }, set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"sweepFlag\", { get: function get() {\n return this._sweepFlag;\n }, set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoHorizontalAbs = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, \"H\", owningPathSegList);\n this._x = x;\n };\n window.SVGPathSegLinetoHorizontalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoHorizontalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalAbs]\";\n };\n window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n window.SVGPathSegLinetoHorizontalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, this._x);\n };\n Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoHorizontalRel = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, \"h\", owningPathSegList);\n this._x = x;\n };\n window.SVGPathSegLinetoHorizontalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoHorizontalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalRel]\";\n };\n window.SVGPathSegLinetoHorizontalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n window.SVGPathSegLinetoHorizontalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, this._x);\n };\n Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoVerticalAbs = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, \"V\", owningPathSegList);\n this._y = y;\n };\n window.SVGPathSegLinetoVerticalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoVerticalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalAbs]\";\n };\n window.SVGPathSegLinetoVerticalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n window.SVGPathSegLinetoVerticalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoVerticalRel = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, \"v\", owningPathSegList);\n this._y = y;\n };\n window.SVGPathSegLinetoVerticalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoVerticalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalRel]\";\n };\n window.SVGPathSegLinetoVerticalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n window.SVGPathSegLinetoVerticalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalRel(undefined, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoCubicSmoothAbs = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, \"S\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothAbs]\";\n };\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x2\", { get: function get() {\n return this._x2;\n }, set: function set(x2) {\n this._x2 = x2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y2\", { get: function get() {\n return this._y2;\n }, set: function set(y2) {\n this._y2 = y2;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoCubicSmoothRel = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, \"s\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothRel]\";\n };\n window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x2\", { get: function get() {\n return this._x2;\n }, set: function set(x2) {\n this._x2 = x2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y2\", { get: function get() {\n return this._y2;\n }, set: function set(y2) {\n this._y2 = y2;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, \"T\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothAbs]\";\n };\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoQuadraticSmoothRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, \"t\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothRel]\";\n };\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n // Add createSVGPathSeg* functions to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-Interfacewindow.SVGPathElement.\n window.SVGPathElement.prototype.createSVGPathSegClosePath = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n window.SVGPathElement.prototype.createSVGPathSegMovetoAbs = function (x, y) {\n return new window.SVGPathSegMovetoAbs(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegMovetoRel = function (x, y) {\n return new window.SVGPathSegMovetoRel(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoAbs = function (x, y) {\n return new window.SVGPathSegLinetoAbs(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoRel = function (x, y) {\n return new window.SVGPathSegLinetoRel(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1);\n };\n window.SVGPathElement.prototype.createSVGPathSegArcAbs = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n window.SVGPathElement.prototype.createSVGPathSegArcRel = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function (x) {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, x);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function (x) {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, x);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function (y) {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function (y) {\n return new window.SVGPathSegLinetoVerticalRel(undefined, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y);\n };\n\n if (!(\"getPathSegAtLength\" in window.SVGPathElement.prototype)) {\n // Add getPathSegAtLength to SVGPathElement.\n // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-__svg__SVGPathElement__getPathSegAtLength\n // This polyfill requires SVGPathElement.getTotalLength to implement the distance-along-a-path algorithm.\n window.SVGPathElement.prototype.getPathSegAtLength = function (distance) {\n if (distance === undefined || !isFinite(distance)) throw \"Invalid arguments.\";\n\n var measurementElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n measurementElement.setAttribute(\"d\", this.getAttribute(\"d\"));\n var lastPathSegment = measurementElement.pathSegList.numberOfItems - 1;\n\n // If the path is empty, return 0.\n if (lastPathSegment <= 0) return 0;\n\n do {\n measurementElement.pathSegList.removeItem(lastPathSegment);\n if (distance > measurementElement.getTotalLength()) break;\n lastPathSegment--;\n } while (lastPathSegment > 0);\n return lastPathSegment;\n };\n }\n }\n\n if (!(\"SVGPathSegList\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList\n window.SVGPathSegList = function (pathElement) {\n this._pathElement = pathElement;\n this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n\n // Use a MutationObserver to catch changes to the path's \"d\" attribute.\n this._mutationObserverConfig = { \"attributes\": true, \"attributeFilter\": [\"d\"] };\n this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n };\n\n window.SVGPathSegList.prototype.classname = \"SVGPathSegList\";\n\n Object.defineProperty(window.SVGPathSegList.prototype, \"numberOfItems\", {\n get: function get() {\n this._checkPathSynchronizedToList();\n return this._list.length;\n },\n enumerable: true\n });\n\n // Add the pathSegList accessors to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData\n Object.defineProperty(window.SVGPathElement.prototype, \"pathSegList\", {\n get: function get() {\n if (!this._pathSegList) this._pathSegList = new window.SVGPathSegList(this);\n return this._pathSegList;\n },\n enumerable: true\n });\n // FIXME: The following are not implemented and simply return window.SVGPathElement.pathSegList.\n Object.defineProperty(window.SVGPathElement.prototype, \"normalizedPathSegList\", { get: function get() {\n return this.pathSegList;\n }, enumerable: true });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedPathSegList\", { get: function get() {\n return this.pathSegList;\n }, enumerable: true });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedNormalizedPathSegList\", { get: function get() {\n return this.pathSegList;\n }, enumerable: true });\n\n // Process any pending mutations to the path element and update the list as needed.\n // This should be the first call of all public functions and is needed because\n // MutationObservers are not synchronous so we can have pending asynchronous mutations.\n window.SVGPathSegList.prototype._checkPathSynchronizedToList = function () {\n this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());\n };\n\n window.SVGPathSegList.prototype._updateListFromPathMutations = function (mutationRecords) {\n if (!this._pathElement) return;\n var hasPathMutations = false;\n mutationRecords.forEach(function (record) {\n if (record.attributeName == \"d\") hasPathMutations = true;\n });\n if (hasPathMutations) this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n };\n\n // Serialize the list and update the path's 'd' attribute.\n window.SVGPathSegList.prototype._writeListToPath = function () {\n this._pathElementMutationObserver.disconnect();\n this._pathElement.setAttribute(\"d\", window.SVGPathSegList._pathSegArrayAsString(this._list));\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n };\n\n // When a path segment changes the list needs to be synchronized back to the path element.\n window.SVGPathSegList.prototype.segmentChanged = function (pathSeg) {\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.clear = function () {\n this._checkPathSynchronizedToList();\n\n this._list.forEach(function (pathSeg) {\n pathSeg._owningPathSegList = null;\n });\n this._list = [];\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.initialize = function (newItem) {\n this._checkPathSynchronizedToList();\n\n this._list = [newItem];\n newItem._owningPathSegList = this;\n this._writeListToPath();\n return newItem;\n };\n\n window.SVGPathSegList.prototype._checkValidIndex = function (index) {\n if (isNaN(index) || index < 0 || index >= this.numberOfItems) throw \"INDEX_SIZE_ERR\";\n };\n\n window.SVGPathSegList.prototype.getItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n return this._list[index];\n };\n\n window.SVGPathSegList.prototype.insertItemBefore = function (newItem, index) {\n this._checkPathSynchronizedToList();\n\n // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list.\n if (index > this.numberOfItems) index = this.numberOfItems;\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n this._list.splice(index, 0, newItem);\n newItem._owningPathSegList = this;\n this._writeListToPath();\n return newItem;\n };\n\n window.SVGPathSegList.prototype.replaceItem = function (newItem, index) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n this._checkValidIndex(index);\n this._list[index] = newItem;\n newItem._owningPathSegList = this;\n this._writeListToPath();\n return newItem;\n };\n\n window.SVGPathSegList.prototype.removeItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n var item = this._list[index];\n this._list.splice(index, 1);\n this._writeListToPath();\n return item;\n };\n\n window.SVGPathSegList.prototype.appendItem = function (newItem) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n this._list.push(newItem);\n newItem._owningPathSegList = this;\n // TODO: Optimize this to just append to the existing attribute.\n this._writeListToPath();\n return newItem;\n };\n\n window.SVGPathSegList._pathSegArrayAsString = function (pathSegArray) {\n var string = \"\";\n var first = true;\n pathSegArray.forEach(function (pathSeg) {\n if (first) {\n first = false;\n string += pathSeg._asPathString();\n } else {\n string += \" \" + pathSeg._asPathString();\n }\n });\n return string;\n };\n\n // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp.\n window.SVGPathSegList.prototype._parsePath = function (string) {\n if (!string || string.length == 0) return [];\n\n var owningPathSegList = this;\n\n var Builder = function Builder() {\n this.pathSegList = [];\n };\n\n Builder.prototype.appendSegment = function (pathSeg) {\n this.pathSegList.push(pathSeg);\n };\n\n var Source = function Source(string) {\n this._string = string;\n this._currentIndex = 0;\n this._endIndex = this._string.length;\n this._previousCommand = window.SVGPathSeg.PATHSEG_UNKNOWN;\n\n this._skipOptionalSpaces();\n };\n\n Source.prototype._isCurrentSpace = function () {\n var character = this._string[this._currentIndex];\n return character <= \" \" && (character == \" \" || character == \"\\n\" || character == \"\\t\" || character == \"\\r\" || character == \"\\f\");\n };\n\n Source.prototype._skipOptionalSpaces = function () {\n while (this._currentIndex < this._endIndex && this._isCurrentSpace()) {\n this._currentIndex++;\n }return this._currentIndex < this._endIndex;\n };\n\n Source.prototype._skipOptionalSpacesOrDelimiter = function () {\n if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != \",\") return false;\n if (this._skipOptionalSpaces()) {\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \",\") {\n this._currentIndex++;\n this._skipOptionalSpaces();\n }\n }\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.hasMoreData = function () {\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.peekSegmentType = function () {\n var lookahead = this._string[this._currentIndex];\n return this._pathSegTypeFromChar(lookahead);\n };\n\n Source.prototype._pathSegTypeFromChar = function (lookahead) {\n switch (lookahead) {\n case \"Z\":\n case \"z\":\n return window.SVGPathSeg.PATHSEG_CLOSEPATH;\n case \"M\":\n return window.SVGPathSeg.PATHSEG_MOVETO_ABS;\n case \"m\":\n return window.SVGPathSeg.PATHSEG_MOVETO_REL;\n case \"L\":\n return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n case \"l\":\n return window.SVGPathSeg.PATHSEG_LINETO_REL;\n case \"C\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;\n case \"c\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;\n case \"Q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;\n case \"q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;\n case \"A\":\n return window.SVGPathSeg.PATHSEG_ARC_ABS;\n case \"a\":\n return window.SVGPathSeg.PATHSEG_ARC_REL;\n case \"H\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;\n case \"h\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;\n case \"V\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;\n case \"v\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;\n case \"S\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\n case \"s\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\n case \"T\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\n case \"t\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\n default:\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n }\n };\n\n Source.prototype._nextCommandHelper = function (lookahead, previousCommand) {\n // Check for remaining coordinates in the current command.\n if ((lookahead == \"+\" || lookahead == \"-\" || lookahead == \".\" || lookahead >= \"0\" && lookahead <= \"9\") && previousCommand != window.SVGPathSeg.PATHSEG_CLOSEPATH) {\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_ABS) return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_REL) return window.SVGPathSeg.PATHSEG_LINETO_REL;\n return previousCommand;\n }\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n };\n\n Source.prototype.initialCommandIsMoveTo = function () {\n // If the path is empty it is still valid, so return true.\n if (!this.hasMoreData()) return true;\n var command = this.peekSegmentType();\n // Path must start with moveTo.\n return command == window.SVGPathSeg.PATHSEG_MOVETO_ABS || command == window.SVGPathSeg.PATHSEG_MOVETO_REL;\n };\n\n // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF\n Source.prototype._parseNumber = function () {\n var exponent = 0;\n var integer = 0;\n var frac = 1;\n var decimal = 0;\n var sign = 1;\n var expsign = 1;\n\n var startIndex = this._currentIndex;\n\n this._skipOptionalSpaces();\n\n // Read the sign.\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"+\") this._currentIndex++;else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n sign = -1;\n }\n\n if (this._currentIndex == this._endIndex || (this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") && this._string.charAt(this._currentIndex) != \".\")\n // The first character of a number must be one of [0-9+-.].\n return undefined;\n\n // Read the integer part, build right-to-left.\n var startIntPartIndex = this._currentIndex;\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n this._currentIndex++;\n } // Advance to first non-digit.\n\n if (this._currentIndex != startIntPartIndex) {\n var scanIntPartIndex = this._currentIndex - 1;\n var multiplier = 1;\n while (scanIntPartIndex >= startIntPartIndex) {\n integer += multiplier * (this._string.charAt(scanIntPartIndex--) - \"0\");\n multiplier *= 10;\n }\n }\n\n // Read the decimals.\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \".\") {\n this._currentIndex++;\n\n // There must be a least one digit following the .\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n frac *= 10;\n decimal += (this._string.charAt(this._currentIndex) - \"0\") / frac;\n this._currentIndex += 1;\n }\n }\n\n // Read the exponent part.\n if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == \"e\" || this._string.charAt(this._currentIndex) == \"E\") && this._string.charAt(this._currentIndex + 1) != \"x\" && this._string.charAt(this._currentIndex + 1) != \"m\") {\n this._currentIndex++;\n\n // Read the sign of the exponent.\n if (this._string.charAt(this._currentIndex) == \"+\") {\n this._currentIndex++;\n } else if (this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n expsign = -1;\n }\n\n // There must be an exponent.\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n exponent *= 10;\n exponent += this._string.charAt(this._currentIndex) - \"0\";\n this._currentIndex++;\n }\n }\n\n var number = integer + decimal;\n number *= sign;\n\n if (exponent) number *= Math.pow(10, expsign * exponent);\n\n if (startIndex == this._currentIndex) return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n\n return number;\n };\n\n Source.prototype._parseArcFlag = function () {\n if (this._currentIndex >= this._endIndex) return undefined;\n var flag = false;\n var flagChar = this._string.charAt(this._currentIndex++);\n if (flagChar == \"0\") flag = false;else if (flagChar == \"1\") flag = true;else return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n return flag;\n };\n\n Source.prototype.parseSegment = function () {\n var lookahead = this._string[this._currentIndex];\n var command = this._pathSegTypeFromChar(lookahead);\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) {\n // Possibly an implicit command. Not allowed if this is the first command.\n if (this._previousCommand == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n command = this._nextCommandHelper(lookahead, this._previousCommand);\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n } else {\n this._currentIndex++;\n }\n\n this._previousCommand = command;\n\n switch (command) {\n case window.SVGPathSeg.PATHSEG_MOVETO_REL:\n return new window.SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_MOVETO_ABS:\n return new window.SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_REL:\n return new window.SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_ABS:\n return new window.SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n return new window.SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n return new window.SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n return new window.SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n return new window.SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_CLOSEPATH:\n this._skipOptionalSpaces();\n return new window.SVGPathSegClosePath(owningPathSegList);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n var points = { x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n var points = { x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_ARC_REL:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n case window.SVGPathSeg.PATHSEG_ARC_ABS:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n default:\n throw \"Unknown path seg type.\";\n }\n };\n\n var builder = new Builder();\n var source = new Source(string);\n\n if (!source.initialCommandIsMoveTo()) return [];\n while (source.hasMoreData()) {\n var pathSeg = source.parseSegment();\n if (!pathSeg) return [];\n builder.appendSegment(pathSeg);\n }\n\n return builder.pathSegList;\n };\n }\n})();\n\n/* jshint ignore:end */\n\nc3_chart_fn.axis = function () {};\nc3_chart_fn.axis.labels = function (labels) {\n var $$ = this.internal;\n if (arguments.length) {\n Object.keys(labels).forEach(function (axisId) {\n $$.axis.setLabelText(axisId, labels[axisId]);\n });\n $$.axis.updateLabels();\n }\n // TODO: return some values?\n};\nc3_chart_fn.axis.max = function (max) {\n var $$ = this.internal,\n config = $$.config;\n if (arguments.length) {\n if ((typeof max === 'undefined' ? 'undefined' : _typeof(max)) === 'object') {\n if (isValue(max.x)) {\n config.axis_x_max = max.x;\n }\n if (isValue(max.y)) {\n config.axis_y_max = max.y;\n }\n if (isValue(max.y2)) {\n config.axis_y2_max = max.y2;\n }\n } else {\n config.axis_y_max = config.axis_y2_max = max;\n }\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n } else {\n return {\n x: config.axis_x_max,\n y: config.axis_y_max,\n y2: config.axis_y2_max\n };\n }\n};\nc3_chart_fn.axis.min = function (min) {\n var $$ = this.internal,\n config = $$.config;\n if (arguments.length) {\n if ((typeof min === 'undefined' ? 'undefined' : _typeof(min)) === 'object') {\n if (isValue(min.x)) {\n config.axis_x_min = min.x;\n }\n if (isValue(min.y)) {\n config.axis_y_min = min.y;\n }\n if (isValue(min.y2)) {\n config.axis_y2_min = min.y2;\n }\n } else {\n config.axis_y_min = config.axis_y2_min = min;\n }\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n } else {\n return {\n x: config.axis_x_min,\n y: config.axis_y_min,\n y2: config.axis_y2_min\n };\n }\n};\nc3_chart_fn.axis.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.axis.max(range.max);\n }\n if (isDefined(range.min)) {\n this.axis.min(range.min);\n }\n } else {\n return {\n max: this.axis.max(),\n min: this.axis.min()\n };\n }\n};\n\nc3_chart_fn.category = function (i, category) {\n var $$ = this.internal,\n config = $$.config;\n if (arguments.length > 1) {\n config.axis_x_categories[i] = category;\n $$.redraw();\n }\n return config.axis_x_categories[i];\n};\nc3_chart_fn.categories = function (categories) {\n var $$ = this.internal,\n config = $$.config;\n if (!arguments.length) {\n return config.axis_x_categories;\n }\n config.axis_x_categories = categories;\n $$.redraw();\n return config.axis_x_categories;\n};\n\nc3_chart_fn.resize = function (size) {\n var $$ = this.internal,\n config = $$.config;\n config.size_width = size ? size.width : null;\n config.size_height = size ? size.height : null;\n this.flush();\n};\n\nc3_chart_fn.flush = function () {\n var $$ = this.internal;\n $$.updateAndRedraw({ withLegend: true, withTransition: false, withTransitionForTransform: false });\n};\n\nc3_chart_fn.destroy = function () {\n var $$ = this.internal;\n\n window.clearInterval($$.intervalForObserveInserted);\n\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n\n if (window.detachEvent) {\n window.detachEvent('onresize', $$.resizeFunction);\n } else if (window.removeEventListener) {\n window.removeEventListener('resize', $$.resizeFunction);\n } else {\n var wrapper = window.onresize;\n // check if no one else removed our wrapper and remove our resizeFunction from it\n if (wrapper && wrapper.add && wrapper.remove) {\n wrapper.remove($$.resizeFunction);\n }\n }\n\n $$.selectChart.classed('c3', false).html(\"\");\n\n // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen.\n Object.keys($$).forEach(function (key) {\n $$[key] = null;\n });\n\n return null;\n};\n\n// TODO: fix\nc3_chart_fn.color = function (id) {\n var $$ = this.internal;\n return $$.color(id); // more patterns\n};\n\nc3_chart_fn.data = function (targetIds) {\n var targets = this.internal.data.targets;\n return typeof targetIds === 'undefined' ? targets : targets.filter(function (t) {\n return [].concat(targetIds).indexOf(t.id) >= 0;\n });\n};\nc3_chart_fn.data.shown = function (targetIds) {\n return this.internal.filterTargetsToShow(this.data(targetIds));\n};\nc3_chart_fn.data.values = function (targetId) {\n var targets,\n values = null;\n if (targetId) {\n targets = this.data(targetId);\n values = targets[0] ? targets[0].values.map(function (d) {\n return d.value;\n }) : null;\n }\n return values;\n};\nc3_chart_fn.data.names = function (names) {\n this.internal.clearLegendItemTextBoxCache();\n return this.internal.updateDataAttributes('names', names);\n};\nc3_chart_fn.data.colors = function (colors) {\n return this.internal.updateDataAttributes('colors', colors);\n};\nc3_chart_fn.data.axes = function (axes) {\n return this.internal.updateDataAttributes('axes', axes);\n};\n\nc3_chart_fn.flow = function (args) {\n var $$ = this.internal,\n targets,\n data,\n notfoundIds = [],\n orgDataCount = $$.getMaxDataCount(),\n dataCount,\n domain,\n baseTarget,\n baseValue,\n length = 0,\n tail = 0,\n diff,\n to;\n\n if (args.json) {\n data = $$.convertJsonToData(args.json, args.keys);\n } else if (args.rows) {\n data = $$.convertRowsToData(args.rows);\n } else if (args.columns) {\n data = $$.convertColumnsToData(args.columns);\n } else {\n return;\n }\n targets = $$.convertDataToTargets(data, true);\n\n // Update/Add data\n $$.data.targets.forEach(function (t) {\n var found = false,\n i,\n j;\n for (i = 0; i < targets.length; i++) {\n if (t.id === targets[i].id) {\n found = true;\n\n if (t.values[t.values.length - 1]) {\n tail = t.values[t.values.length - 1].index + 1;\n }\n length = targets[i].values.length;\n\n for (j = 0; j < length; j++) {\n targets[i].values[j].index = tail + j;\n if (!$$.isTimeSeries()) {\n targets[i].values[j].x = tail + j;\n }\n }\n t.values = t.values.concat(targets[i].values);\n\n targets.splice(i, 1);\n break;\n }\n }\n if (!found) {\n notfoundIds.push(t.id);\n }\n });\n\n // Append null for not found targets\n $$.data.targets.forEach(function (t) {\n var i, j;\n for (i = 0; i < notfoundIds.length; i++) {\n if (t.id === notfoundIds[i]) {\n tail = t.values[t.values.length - 1].index + 1;\n for (j = 0; j < length; j++) {\n t.values.push({\n id: t.id,\n index: tail + j,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j,\n value: null\n });\n }\n }\n }\n });\n\n // Generate null values for new target\n if ($$.data.targets.length) {\n targets.forEach(function (t) {\n var i,\n missing = [];\n for (i = $$.data.targets[0].values[0].index; i < tail; i++) {\n missing.push({\n id: t.id,\n index: i,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i,\n value: null\n });\n }\n t.values.forEach(function (v) {\n v.index += tail;\n if (!$$.isTimeSeries()) {\n v.x += tail;\n }\n });\n t.values = missing.concat(t.values);\n });\n }\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n\n // check data count because behavior needs to change when it's only one\n dataCount = $$.getMaxDataCount();\n baseTarget = $$.data.targets[0];\n baseValue = baseTarget.values[0];\n\n // Update length to flow if needed\n if (isDefined(args.to)) {\n length = 0;\n to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to;\n baseTarget.values.forEach(function (v) {\n if (v.x < to) {\n length++;\n }\n });\n } else if (isDefined(args.length)) {\n length = args.length;\n }\n\n // If only one data, update the domain to flow from left edge of the chart\n if (!orgDataCount) {\n if ($$.isTimeSeries()) {\n if (baseTarget.values.length > 1) {\n diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x;\n } else {\n diff = baseValue.x - $$.getXDomain($$.data.targets)[0];\n }\n } else {\n diff = 1;\n }\n domain = [baseValue.x - diff, baseValue.x];\n $$.updateXDomain(null, true, true, false, domain);\n } else if (orgDataCount === 1) {\n if ($$.isTimeSeries()) {\n diff = (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2;\n domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)];\n $$.updateXDomain(null, true, true, false, domain);\n }\n }\n\n // Set targets\n $$.updateTargets($$.data.targets);\n\n // Redraw with new targets\n $$.redraw({\n flow: {\n index: baseValue.index,\n length: length,\n duration: isValue(args.duration) ? args.duration : $$.config.transition_duration,\n done: args.done,\n orgDataCount: orgDataCount\n },\n withLegend: true,\n withTransition: orgDataCount > 1,\n withTrimXDomain: false,\n withUpdateXAxis: true\n });\n};\n\nc3_chart_internal_fn.generateFlow = function (args) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n\n return function () {\n var targets = args.targets,\n flow = args.flow,\n drawBar = args.drawBar,\n drawLine = args.drawLine,\n drawArea = args.drawArea,\n cx = args.cx,\n cy = args.cy,\n xv = args.xv,\n xForText = args.xForText,\n yForText = args.yForText,\n duration = args.duration;\n\n var translateX,\n scaleX = 1,\n transform,\n flowIndex = flow.index,\n flowLength = flow.length,\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex),\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength),\n orgDomain = $$.x.domain(),\n domain,\n durationForFlow = flow.duration || duration,\n done = flow.done || function () {},\n wait = $$.generateWait();\n\n var xgrid = $$.xgrid || d3.selectAll([]),\n xgridLines = $$.xgridLines || d3.selectAll([]),\n mainRegion = $$.mainRegion || d3.selectAll([]),\n mainText = $$.mainText || d3.selectAll([]),\n mainBar = $$.mainBar || d3.selectAll([]),\n mainLine = $$.mainLine || d3.selectAll([]),\n mainArea = $$.mainArea || d3.selectAll([]),\n mainCircle = $$.mainCircle || d3.selectAll([]);\n\n // set flag\n $$.flowing = true;\n\n // remove head data after rendered\n $$.data.targets.forEach(function (d) {\n d.values.splice(0, flowLength);\n });\n\n // update x domain to generate axis elements for flow\n domain = $$.updateXDomain(targets, true, true);\n // update elements related to x scale\n if ($$.updateXGrid) {\n $$.updateXGrid(true);\n }\n\n // generate transform to flow\n if (!flow.orgDataCount) {\n // if empty\n if ($$.data.targets[0].values.length !== 1) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0);\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1);\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n } else {\n translateX = diffDomain(domain) / 2;\n }\n }\n } else if (flow.orgDataCount === 1 || (flowStart && flowStart.x) === (flowEnd && flowEnd.x)) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n }\n }\n scaleX = diffDomain(orgDomain) / diffDomain(domain);\n transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)';\n\n $$.hideXGridFocus();\n\n d3.transition().ease('linear').duration(durationForFlow).each(function () {\n wait.add($$.axes.x.transition().call($$.xAxis));\n wait.add(mainBar.transition().attr('transform', transform));\n wait.add(mainLine.transition().attr('transform', transform));\n wait.add(mainArea.transition().attr('transform', transform));\n wait.add(mainCircle.transition().attr('transform', transform));\n wait.add(mainText.transition().attr('transform', transform));\n wait.add(mainRegion.filter($$.isRegionOnX).transition().attr('transform', transform));\n wait.add(xgrid.transition().attr('transform', transform));\n wait.add(xgridLines.transition().attr('transform', transform));\n }).call(wait, function () {\n var i,\n shapes = [],\n texts = [],\n eventRects = [];\n\n // remove flowed elements\n if (flowLength) {\n for (i = 0; i < flowLength; i++) {\n shapes.push('.' + CLASS.shape + '-' + (flowIndex + i));\n texts.push('.' + CLASS.text + '-' + (flowIndex + i));\n eventRects.push('.' + CLASS.eventRect + '-' + (flowIndex + i));\n }\n $$.svg.selectAll('.' + CLASS.shapes).selectAll(shapes).remove();\n $$.svg.selectAll('.' + CLASS.texts).selectAll(texts).remove();\n $$.svg.selectAll('.' + CLASS.eventRects).selectAll(eventRects).remove();\n $$.svg.select('.' + CLASS.xgrid).remove();\n }\n\n // draw again for removing flowed elements and reverting attr\n xgrid.attr('transform', null).attr($$.xgridAttr);\n xgridLines.attr('transform', null);\n xgridLines.select('line').attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv);\n xgridLines.select('text').attr(\"x\", config.axis_rotated ? $$.width : 0).attr(\"y\", xv);\n mainBar.attr('transform', null).attr(\"d\", drawBar);\n mainLine.attr('transform', null).attr(\"d\", drawLine);\n mainArea.attr('transform', null).attr(\"d\", drawArea);\n mainCircle.attr('transform', null).attr(\"cx\", cx).attr(\"cy\", cy);\n mainText.attr('transform', null).attr('x', xForText).attr('y', yForText).style('fill-opacity', $$.opacityForText.bind($$));\n mainRegion.attr('transform', null);\n mainRegion.select('rect').filter($$.isRegionOnX).attr(\"x\", $$.regionX.bind($$)).attr(\"width\", $$.regionWidth.bind($$));\n\n if (config.interaction_enabled) {\n $$.redrawEventRect();\n }\n\n // callback for end of flow\n done();\n\n $$.flowing = false;\n });\n };\n};\n\nc3_chart_fn.focus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), this.revert();\n this.defocus();\n candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);\n if ($$.hasArcType()) {\n $$.expandArc(targetIds);\n }\n $$.toggleFocusLegend(targetIds, true);\n\n $$.focusedTargetIds = targetIds;\n $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n};\n\nc3_chart_fn.defocus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n $$.toggleFocusLegend(targetIds, false);\n\n $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n $$.defocusedTargetIds = targetIds;\n};\n\nc3_chart_fn.revert = function (targetIds) {\n var $$ = this.internal,\n candidates;\n\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets\n\n candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n if ($$.config.legend_show) {\n $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));\n $$.legend.selectAll($$.selectorLegends(targetIds)).filter(function () {\n return $$.d3.select(this).classed(CLASS.legendItemFocused);\n }).classed(CLASS.legendItemFocused, false);\n }\n\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n};\n\nc3_chart_fn.xgrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n if (!grids) {\n return config.grid_x_lines;\n }\n config.grid_x_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_x_lines;\n};\nc3_chart_fn.xgrids.add = function (grids) {\n var $$ = this.internal;\n return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : []));\n};\nc3_chart_fn.xgrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, true);\n};\n\nc3_chart_fn.ygrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n if (!grids) {\n return config.grid_y_lines;\n }\n config.grid_y_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_y_lines;\n};\nc3_chart_fn.ygrids.add = function (grids) {\n var $$ = this.internal;\n return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : []));\n};\nc3_chart_fn.ygrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, false);\n};\n\nc3_chart_fn.groups = function (groups) {\n var $$ = this.internal,\n config = $$.config;\n if (isUndefined(groups)) {\n return config.data_groups;\n }\n config.data_groups = groups;\n $$.redraw();\n return config.data_groups;\n};\n\nc3_chart_fn.legend = function () {};\nc3_chart_fn.legend.show = function (targetIds) {\n var $$ = this.internal;\n $$.showLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({ withLegend: true });\n};\nc3_chart_fn.legend.hide = function (targetIds) {\n var $$ = this.internal;\n $$.hideLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({ withLegend: true });\n};\n\nc3_chart_fn.load = function (args) {\n var $$ = this.internal,\n config = $$.config;\n // update xs if specified\n if (args.xs) {\n $$.addXs(args.xs);\n }\n // update names if exists\n if ('names' in args) {\n c3_chart_fn.data.names.bind(this)(args.names);\n }\n // update classes if exists\n if ('classes' in args) {\n Object.keys(args.classes).forEach(function (id) {\n config.data_classes[id] = args.classes[id];\n });\n }\n // update categories if exists\n if ('categories' in args && $$.isCategorized()) {\n config.axis_x_categories = args.categories;\n }\n // update axes if exists\n if ('axes' in args) {\n Object.keys(args.axes).forEach(function (id) {\n config.data_axes[id] = args.axes[id];\n });\n }\n // update colors if exists\n if ('colors' in args) {\n Object.keys(args.colors).forEach(function (id) {\n config.data_colors[id] = args.colors[id];\n });\n }\n // use cache if exists\n if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {\n $$.load($$.getCaches(args.cacheIds), args.done);\n return;\n }\n // unload if needed\n if ('unload' in args) {\n // TODO: do not unload if target will load (included in url/rows/columns)\n $$.unload($$.mapToTargetIds(typeof args.unload === 'boolean' && args.unload ? null : args.unload), function () {\n $$.loadFromArgs(args);\n });\n } else {\n $$.loadFromArgs(args);\n }\n};\n\nc3_chart_fn.unload = function (args) {\n var $$ = this.internal;\n args = args || {};\n if (args instanceof Array) {\n args = { ids: args };\n } else if (typeof args === 'string') {\n args = { ids: [args] };\n }\n $$.unload($$.mapToTargetIds(args.ids), function () {\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n if (args.done) {\n args.done();\n }\n });\n};\n\nc3_chart_fn.regions = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n if (!regions) {\n return config.regions;\n }\n config.regions = regions;\n $$.redrawWithoutRescale();\n return config.regions;\n};\nc3_chart_fn.regions.add = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n if (!regions) {\n return config.regions;\n }\n config.regions = config.regions.concat(regions);\n $$.redrawWithoutRescale();\n return config.regions;\n};\nc3_chart_fn.regions.remove = function (options) {\n var $$ = this.internal,\n config = $$.config,\n duration,\n classes,\n regions;\n\n options = options || {};\n duration = $$.getOption(options, \"duration\", config.transition_duration);\n classes = $$.getOption(options, \"classes\", [CLASS.region]);\n\n regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) {\n return '.' + c;\n }));\n (duration ? regions.transition().duration(duration) : regions).style('opacity', 0).remove();\n\n config.regions = config.regions.filter(function (region) {\n var found = false;\n if (!region['class']) {\n return true;\n }\n region['class'].split(' ').forEach(function (c) {\n if (classes.indexOf(c) >= 0) {\n found = true;\n }\n });\n return !found;\n });\n\n return config.regions;\n};\n\nc3_chart_fn.selected = function (targetId) {\n var $$ = this.internal,\n d3 = $$.d3;\n return d3.merge($$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape).filter(function () {\n return d3.select(this).classed(CLASS.SELECTED);\n }).map(function (d) {\n return d.map(function (d) {\n var data = d.__data__;return data.data ? data.data : data;\n });\n }));\n};\nc3_chart_fn.select = function (ids, indices, resetOther) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n if (!config.data_selection_enabled) {\n return;\n }\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED);\n // line/area selection not supported yet\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d) && !isSelected) {\n toggle(true, shape.classed(CLASS.SELECTED, true), d, i);\n }\n } else if (isDefined(resetOther) && resetOther) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n });\n};\nc3_chart_fn.unselect = function (ids, indices) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n if (!config.data_selection_enabled) {\n return;\n }\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED);\n // line/area selection not supported yet\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d)) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n }\n });\n};\n\nc3_chart_fn.show = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n\n $$.removeHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n targets.transition().style('opacity', 1, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 1);\n });\n\n if (options.withLegend) {\n $$.showLegend(targetIds);\n }\n\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n};\n\nc3_chart_fn.hide = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n\n $$.addHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n targets.transition().style('opacity', 0, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 0);\n });\n\n if (options.withLegend) {\n $$.hideLegend(targetIds);\n }\n\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n};\n\nc3_chart_fn.toggle = function (targetIds, options) {\n var that = this,\n $$ = this.internal;\n $$.mapToTargetIds(targetIds).forEach(function (targetId) {\n $$.isTargetToShow(targetId) ? that.hide(targetId, options) : that.show(targetId, options);\n });\n};\n\nc3_chart_fn.tooltip = function () {};\nc3_chart_fn.tooltip.show = function (args) {\n var $$ = this.internal,\n index,\n mouse;\n\n // determine mouse position on the chart\n if (args.mouse) {\n mouse = args.mouse;\n }\n\n // determine focus data\n if (args.data) {\n if ($$.isMultipleX()) {\n // if multiple xs, target point will be determined by mouse\n mouse = [$$.x(args.data.x), $$.getYScale(args.data.id)(args.data.value)];\n index = null;\n } else {\n // TODO: when tooltip_grouped = false\n index = isValue(args.data.index) ? args.data.index : $$.getIndexByX(args.data.x);\n }\n } else if (typeof args.x !== 'undefined') {\n index = $$.getIndexByX(args.x);\n } else if (typeof args.index !== 'undefined') {\n index = args.index;\n }\n\n // emulate mouse events to show\n $$.dispatchEvent('mouseover', index, mouse);\n $$.dispatchEvent('mousemove', index, mouse);\n\n $$.config.tooltip_onshow.call($$, args.data);\n};\nc3_chart_fn.tooltip.hide = function () {\n // TODO: get target data by checking the state of focus\n this.internal.dispatchEvent('mouseout', 0);\n\n this.internal.config.tooltip_onhide.call(this);\n};\n\nc3_chart_fn.transform = function (type, targetIds) {\n var $$ = this.internal,\n options = ['pie', 'donut'].indexOf(type) >= 0 ? { withTransform: true } : null;\n $$.transformTo(targetIds, type, options);\n};\n\nc3_chart_internal_fn.transformTo = function (targetIds, type, optionsForRedraw) {\n var $$ = this,\n withTransitionForAxis = !$$.hasArcType(),\n options = optionsForRedraw || { withTransitionForAxis: withTransitionForAxis };\n options.withTransitionForTransform = false;\n $$.transiting = false;\n $$.setTargetType(targetIds, type);\n $$.updateTargets($$.data.targets); // this is needed when transforming to arc\n $$.updateAndRedraw(options);\n};\n\nc3_chart_fn.x = function (x) {\n var $$ = this.internal;\n if (arguments.length) {\n $$.updateTargetX($$.data.targets, x);\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n }\n return $$.data.xs;\n};\nc3_chart_fn.xs = function (xs) {\n var $$ = this.internal;\n if (arguments.length) {\n $$.updateTargetXs($$.data.targets, xs);\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n }\n return $$.data.xs;\n};\n\nc3_chart_fn.zoom = function (domain) {\n var $$ = this.internal;\n if (domain) {\n if ($$.isTimeSeries()) {\n domain = domain.map(function (x) {\n return $$.parseDate(x);\n });\n }\n $$.brush.extent(domain);\n $$.redraw({ withUpdateXDomain: true, withY: $$.config.zoom_rescale });\n $$.config.zoom_onzoom.call(this, $$.x.orgDomain());\n }\n return $$.brush.extent();\n};\nc3_chart_fn.zoom.enable = function (enabled) {\n var $$ = this.internal;\n $$.config.zoom_enabled = enabled;\n $$.updateAndRedraw();\n};\nc3_chart_fn.unzoom = function () {\n var $$ = this.internal;\n $$.brush.clear().update();\n $$.redraw({ withUpdateXDomain: true });\n};\n\nc3_chart_fn.zoom.max = function (max) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n if (max === 0 || max) {\n config.zoom_x_max = d3.max([$$.orgXDomain[1], max]);\n } else {\n return config.zoom_x_max;\n }\n};\n\nc3_chart_fn.zoom.min = function (min) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n if (min === 0 || min) {\n config.zoom_x_min = d3.min([$$.orgXDomain[0], min]);\n } else {\n return config.zoom_x_min;\n }\n};\n\nc3_chart_fn.zoom.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.domain.max(range.max);\n }\n if (isDefined(range.min)) {\n this.domain.min(range.min);\n }\n } else {\n return {\n max: this.domain.max(),\n min: this.domain.min()\n };\n }\n};\n\nc3_chart_internal_fn.initPie = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.pie = d3.layout.pie().value(function (d) {\n return d.values.reduce(function (a, b) {\n return a + b.value;\n }, 0);\n });\n $$.pie.sort($$.getOrderFunction() || null);\n};\n\nc3_chart_internal_fn.updateRadius = function () {\n var $$ = this,\n config = $$.config,\n w = config.gauge_width || config.donut_width;\n $$.radiusExpanded = Math.min($$.arcWidth, $$.arcHeight) / 2;\n $$.radius = $$.radiusExpanded * 0.95;\n $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6;\n $$.innerRadius = $$.hasType('donut') || $$.hasType('gauge') ? $$.radius * $$.innerRadiusRatio : 0;\n};\n\nc3_chart_internal_fn.updateArc = function () {\n var $$ = this;\n $$.svgArc = $$.getSvgArc();\n $$.svgArcExpanded = $$.getSvgArcExpanded();\n $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98);\n};\n\nc3_chart_internal_fn.updateAngle = function (d) {\n var $$ = this,\n config = $$.config,\n found = false,\n index = 0,\n gMin,\n gMax,\n gTic,\n gValue;\n\n if (!config) {\n return null;\n }\n\n $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) {\n if (!found && t.data.id === d.data.id) {\n found = true;\n d = t;\n d.index = index;\n }\n index++;\n });\n if (isNaN(d.startAngle)) {\n d.startAngle = 0;\n }\n if (isNaN(d.endAngle)) {\n d.endAngle = d.startAngle;\n }\n if ($$.isGaugeType(d.data)) {\n gMin = config.gauge_min;\n gMax = config.gauge_max;\n gTic = Math.PI * (config.gauge_fullCircle ? 2 : 1) / (gMax - gMin);\n gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : gMax - gMin;\n d.startAngle = config.gauge_startingAngle;\n d.endAngle = d.startAngle + gTic * gValue;\n }\n return found ? d : null;\n};\n\nc3_chart_internal_fn.getSvgArc = function () {\n var $$ = this,\n arc = $$.d3.svg.arc().outerRadius($$.radius).innerRadius($$.innerRadius),\n newArc = function newArc(d, withoutUpdate) {\n var updated;\n if (withoutUpdate) {\n return arc(d);\n } // for interpolate\n updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n };\n // TODO: extends all function\n newArc.centroid = arc.centroid;\n return newArc;\n};\n\nc3_chart_internal_fn.getSvgArcExpanded = function (rate) {\n var $$ = this,\n arc = $$.d3.svg.arc().outerRadius($$.radiusExpanded * (rate ? rate : 1)).innerRadius($$.innerRadius);\n return function (d) {\n var updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n };\n};\n\nc3_chart_internal_fn.getArc = function (d, withoutUpdate, force) {\n return force || this.isArcType(d.data) ? this.svgArc(d, withoutUpdate) : \"M 0 0\";\n};\n\nc3_chart_internal_fn.transformForArcLabel = function (d) {\n var $$ = this,\n config = $$.config,\n updated = $$.updateAngle(d),\n c,\n x,\n y,\n h,\n ratio,\n translate = \"\";\n if (updated && !$$.hasType('gauge')) {\n c = this.svgArc.centroid(updated);\n x = isNaN(c[0]) ? 0 : c[0];\n y = isNaN(c[1]) ? 0 : c[1];\n h = Math.sqrt(x * x + y * y);\n if ($$.hasType('donut') && config.donut_label_ratio) {\n ratio = isFunction(config.donut_label_ratio) ? config.donut_label_ratio(d, $$.radius, h) : config.donut_label_ratio;\n } else if ($$.hasType('pie') && config.pie_label_ratio) {\n ratio = isFunction(config.pie_label_ratio) ? config.pie_label_ratio(d, $$.radius, h) : config.pie_label_ratio;\n } else {\n ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0;\n }\n translate = \"translate(\" + x * ratio + ',' + y * ratio + \")\";\n }\n return translate;\n};\n\nc3_chart_internal_fn.getArcRatio = function (d) {\n var $$ = this,\n config = $$.config,\n whole = Math.PI * ($$.hasType('gauge') && !config.gauge_fullCircle ? 1 : 2);\n return d ? (d.endAngle - d.startAngle) / whole : null;\n};\n\nc3_chart_internal_fn.convertToArcData = function (d) {\n return this.addName({\n id: d.data.id,\n value: d.value,\n ratio: this.getArcRatio(d),\n index: d.index\n });\n};\n\nc3_chart_internal_fn.textForArcLabel = function (d) {\n var $$ = this,\n updated,\n value,\n ratio,\n id,\n format;\n if (!$$.shouldShowArcLabel()) {\n return \"\";\n }\n updated = $$.updateAngle(d);\n value = updated ? updated.value : null;\n ratio = $$.getArcRatio(updated);\n id = d.data.id;\n if (!$$.hasType('gauge') && !$$.meetsArcLabelThreshold(ratio)) {\n return \"\";\n }\n format = $$.getArcLabelFormat();\n return format ? format(value, ratio, id) : $$.defaultArcValueFormat(value, ratio);\n};\n\nc3_chart_internal_fn.textForGaugeMinMax = function (value, isMax) {\n var $$ = this,\n format = $$.getGaugeLabelExtents();\n\n return format ? format(value, isMax) : value;\n};\n\nc3_chart_internal_fn.expandArc = function (targetIds) {\n var $$ = this,\n interval;\n\n // MEMO: avoid to cancel transition\n if ($$.transiting) {\n interval = window.setInterval(function () {\n if (!$$.transiting) {\n window.clearInterval(interval);\n if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) {\n $$.expandArc(targetIds);\n }\n }\n }, 10);\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) {\n if (!$$.shouldExpand(d.data.id)) {\n return;\n }\n $$.d3.select(this).selectAll('path').transition().duration($$.expandDuration(d.data.id)).attr(\"d\", $$.svgArcExpanded).transition().duration($$.expandDuration(d.data.id) * 2).attr(\"d\", $$.svgArcExpandedSub).each(function (d) {\n if ($$.isDonutType(d.data)) {\n // callback here\n }\n });\n });\n};\n\nc3_chart_internal_fn.unexpandArc = function (targetIds) {\n var $$ = this;\n\n if ($$.transiting) {\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path').transition().duration(function (d) {\n return $$.expandDuration(d.data.id);\n }).attr(\"d\", $$.svgArc);\n $$.svg.selectAll('.' + CLASS.arc);\n};\n\nc3_chart_internal_fn.expandDuration = function (id) {\n var $$ = this,\n config = $$.config;\n\n if ($$.isDonutType(id)) {\n return config.donut_expand_duration;\n } else if ($$.isGaugeType(id)) {\n return config.gauge_expand_duration;\n } else if ($$.isPieType(id)) {\n return config.pie_expand_duration;\n } else {\n return 50;\n }\n};\n\nc3_chart_internal_fn.shouldExpand = function (id) {\n var $$ = this,\n config = $$.config;\n return $$.isDonutType(id) && config.donut_expand || $$.isGaugeType(id) && config.gauge_expand || $$.isPieType(id) && config.pie_expand;\n};\n\nc3_chart_internal_fn.shouldShowArcLabel = function () {\n var $$ = this,\n config = $$.config,\n shouldShow = true;\n if ($$.hasType('donut')) {\n shouldShow = config.donut_label_show;\n } else if ($$.hasType('pie')) {\n shouldShow = config.pie_label_show;\n }\n // when gauge, always true\n return shouldShow;\n};\n\nc3_chart_internal_fn.meetsArcLabelThreshold = function (ratio) {\n var $$ = this,\n config = $$.config,\n threshold = $$.hasType('donut') ? config.donut_label_threshold : config.pie_label_threshold;\n return ratio >= threshold;\n};\n\nc3_chart_internal_fn.getArcLabelFormat = function () {\n var $$ = this,\n config = $$.config,\n format = config.pie_label_format;\n if ($$.hasType('gauge')) {\n format = config.gauge_label_format;\n } else if ($$.hasType('donut')) {\n format = config.donut_label_format;\n }\n return format;\n};\n\nc3_chart_internal_fn.getGaugeLabelExtents = function () {\n var $$ = this,\n config = $$.config;\n return config.gauge_label_extents;\n};\n\nc3_chart_internal_fn.getArcTitle = function () {\n var $$ = this;\n return $$.hasType('donut') ? $$.config.donut_title : \"\";\n};\n\nc3_chart_internal_fn.updateTargetsForArc = function (targets) {\n var $$ = this,\n main = $$.main,\n mainPieUpdate,\n mainPieEnter,\n classChartArc = $$.classChartArc.bind($$),\n classArcs = $$.classArcs.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainPieUpdate = main.select('.' + CLASS.chartArcs).selectAll('.' + CLASS.chartArc).data($$.pie(targets)).attr(\"class\", function (d) {\n return classChartArc(d) + classFocus(d.data);\n });\n mainPieEnter = mainPieUpdate.enter().append(\"g\").attr(\"class\", classChartArc);\n mainPieEnter.append('g').attr('class', classArcs);\n mainPieEnter.append(\"text\").attr(\"dy\", $$.hasType('gauge') ? \"-.1em\" : \".35em\").style(\"opacity\", 0).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n // MEMO: can not keep same color..., but not bad to update color in redraw\n //mainPieUpdate.exit().remove();\n};\n\nc3_chart_internal_fn.initArc = function () {\n var $$ = this;\n $$.arcs = $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n $$.arcs.append('text').attr('class', CLASS.chartArcsTitle).style(\"text-anchor\", \"middle\").text($$.getArcTitle());\n};\n\nc3_chart_internal_fn.redrawArc = function (duration, durationForExit, withTransform) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n main = $$.main,\n mainArc;\n mainArc = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc).data($$.arcData.bind($$));\n mainArc.enter().append('path').attr(\"class\", $$.classArc.bind($$)).style(\"fill\", function (d) {\n return $$.color(d.data);\n }).style(\"cursor\", function (d) {\n return config.interaction_enabled && config.data_selection_isselectable(d) ? \"pointer\" : null;\n }).each(function (d) {\n if ($$.isGaugeType(d.data)) {\n d.startAngle = d.endAngle = config.gauge_startingAngle;\n }\n this._current = d;\n });\n mainArc.attr(\"transform\", function (d) {\n return !$$.isGaugeType(d.data) && withTransform ? \"scale(0)\" : \"\";\n }).on('mouseover', config.interaction_enabled ? function (d) {\n var updated, arcData;\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n updated = $$.updateAngle(d);\n if (updated) {\n arcData = $$.convertToArcData(updated);\n // transitions\n $$.expandArc(updated.data.id);\n $$.api.focus(updated.data.id);\n $$.toggleFocusLegend(updated.data.id, true);\n $$.config.data_onmouseover(arcData, this);\n }\n } : null).on('mousemove', config.interaction_enabled ? function (d) {\n var updated = $$.updateAngle(d),\n arcData,\n selectedData;\n if (updated) {\n arcData = $$.convertToArcData(updated), selectedData = [arcData];\n $$.showTooltip(selectedData, this);\n }\n } : null).on('mouseout', config.interaction_enabled ? function (d) {\n var updated, arcData;\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n updated = $$.updateAngle(d);\n if (updated) {\n arcData = $$.convertToArcData(updated);\n // transitions\n $$.unexpandArc(updated.data.id);\n $$.api.revert();\n $$.revertLegend();\n $$.hideTooltip();\n $$.config.data_onmouseout(arcData, this);\n }\n } : null).on('click', config.interaction_enabled ? function (d, i) {\n var updated = $$.updateAngle(d),\n arcData;\n if (updated) {\n arcData = $$.convertToArcData(updated);\n if ($$.toggleShape) {\n $$.toggleShape(this, arcData, i);\n }\n $$.config.data_onclick.call($$.api, arcData, this);\n }\n } : null).each(function () {\n $$.transiting = true;\n }).transition().duration(duration).attrTween(\"d\", function (d) {\n var updated = $$.updateAngle(d),\n interpolate;\n if (!updated) {\n return function () {\n return \"M 0 0\";\n };\n }\n // if (this._current === d) {\n // this._current = {\n // startAngle: Math.PI*2,\n // endAngle: Math.PI*2,\n // };\n // }\n if (isNaN(this._current.startAngle)) {\n this._current.startAngle = 0;\n }\n if (isNaN(this._current.endAngle)) {\n this._current.endAngle = this._current.startAngle;\n }\n interpolate = d3.interpolate(this._current, updated);\n this._current = interpolate(0);\n return function (t) {\n var interpolated = interpolate(t);\n interpolated.data = d.data; // data.id will be updated by interporator\n return $$.getArc(interpolated, true);\n };\n }).attr(\"transform\", withTransform ? \"scale(1)\" : \"\").style(\"fill\", function (d) {\n return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data.id);\n } // Where gauge reading color would receive customization.\n ).call($$.endall, function () {\n $$.transiting = false;\n });\n mainArc.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n main.selectAll('.' + CLASS.chartArc).select('text').style(\"opacity\", 0).attr('class', function (d) {\n return $$.isGaugeType(d.data) ? CLASS.gaugeValue : '';\n }).text($$.textForArcLabel.bind($$)).attr(\"transform\", $$.transformForArcLabel.bind($$)).style('font-size', function (d) {\n return $$.isGaugeType(d.data) ? Math.round($$.radius / 5) + 'px' : '';\n }).transition().duration(duration).style(\"opacity\", function (d) {\n return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0;\n });\n main.select('.' + CLASS.chartArcsTitle).style(\"opacity\", $$.hasType('donut') || $$.hasType('gauge') ? 1 : 0);\n\n if ($$.hasType('gauge')) {\n $$.arcs.select('.' + CLASS.chartArcsBackground).attr(\"d\", function () {\n var d = {\n data: [{ value: config.gauge_max }],\n startAngle: config.gauge_startingAngle,\n endAngle: -1 * config.gauge_startingAngle\n };\n return $$.getArc(d, true, true);\n });\n $$.arcs.select('.' + CLASS.chartArcsGaugeUnit).attr(\"dy\", \".75em\").text(config.gauge_label_show ? config.gauge_units : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMin).attr(\"dx\", -1 * ($$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2)) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_min, false) : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMax).attr(\"dx\", $$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_max, true) : '');\n }\n};\nc3_chart_internal_fn.initGauge = function () {\n var arcs = this.arcs;\n if (this.hasType('gauge')) {\n arcs.append('path').attr(\"class\", CLASS.chartArcsBackground);\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeUnit).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMin).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMax).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n }\n};\nc3_chart_internal_fn.getGaugeLabelHeight = function () {\n return this.config.gauge_label_show ? 20 : 0;\n};\n\nc3_chart_internal_fn.hasCaches = function (ids) {\n for (var i = 0; i < ids.length; i++) {\n if (!(ids[i] in this.cache)) {\n return false;\n }\n }\n return true;\n};\nc3_chart_internal_fn.addCache = function (id, target) {\n this.cache[id] = this.cloneTarget(target);\n};\nc3_chart_internal_fn.getCaches = function (ids) {\n var targets = [],\n i;\n for (i = 0; i < ids.length; i++) {\n if (ids[i] in this.cache) {\n targets.push(this.cloneTarget(this.cache[ids[i]]));\n }\n }\n return targets;\n};\n\nc3_chart_internal_fn.categoryName = function (i) {\n var config = this.config;\n return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i;\n};\n\nc3_chart_internal_fn.generateClass = function (prefix, targetId) {\n return \" \" + prefix + \" \" + prefix + this.getTargetSelectorSuffix(targetId);\n};\nc3_chart_internal_fn.classText = function (d) {\n return this.generateClass(CLASS.text, d.index);\n};\nc3_chart_internal_fn.classTexts = function (d) {\n return this.generateClass(CLASS.texts, d.id);\n};\nc3_chart_internal_fn.classShape = function (d) {\n return this.generateClass(CLASS.shape, d.index);\n};\nc3_chart_internal_fn.classShapes = function (d) {\n return this.generateClass(CLASS.shapes, d.id);\n};\nc3_chart_internal_fn.classLine = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.line, d.id);\n};\nc3_chart_internal_fn.classLines = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.lines, d.id);\n};\nc3_chart_internal_fn.classCircle = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.circle, d.index);\n};\nc3_chart_internal_fn.classCircles = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.circles, d.id);\n};\nc3_chart_internal_fn.classBar = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.bar, d.index);\n};\nc3_chart_internal_fn.classBars = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.bars, d.id);\n};\nc3_chart_internal_fn.classArc = function (d) {\n return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id);\n};\nc3_chart_internal_fn.classArcs = function (d) {\n return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id);\n};\nc3_chart_internal_fn.classArea = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.area, d.id);\n};\nc3_chart_internal_fn.classAreas = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.areas, d.id);\n};\nc3_chart_internal_fn.classRegion = function (d, i) {\n return this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : '');\n};\nc3_chart_internal_fn.classEvent = function (d) {\n return this.generateClass(CLASS.eventRect, d.index);\n};\nc3_chart_internal_fn.classTarget = function (id) {\n var $$ = this;\n var additionalClassSuffix = $$.config.data_classes[id],\n additionalClass = '';\n if (additionalClassSuffix) {\n additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix;\n }\n return $$.generateClass(CLASS.target, id) + additionalClass;\n};\nc3_chart_internal_fn.classFocus = function (d) {\n return this.classFocused(d) + this.classDefocused(d);\n};\nc3_chart_internal_fn.classFocused = function (d) {\n return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : '');\n};\nc3_chart_internal_fn.classDefocused = function (d) {\n return ' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : '');\n};\nc3_chart_internal_fn.classChartText = function (d) {\n return CLASS.chartText + this.classTarget(d.id);\n};\nc3_chart_internal_fn.classChartLine = function (d) {\n return CLASS.chartLine + this.classTarget(d.id);\n};\nc3_chart_internal_fn.classChartBar = function (d) {\n return CLASS.chartBar + this.classTarget(d.id);\n};\nc3_chart_internal_fn.classChartArc = function (d) {\n return CLASS.chartArc + this.classTarget(d.data.id);\n};\nc3_chart_internal_fn.getTargetSelectorSuffix = function (targetId) {\n return targetId || targetId === 0 ? ('-' + targetId).replace(/[\\s?!@#$%^&*()_=+,.<>'\":;\\[\\]\\/|~`{}\\\\]/g, '-') : '';\n};\nc3_chart_internal_fn.selectorTarget = function (id, prefix) {\n return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);\n};\nc3_chart_internal_fn.selectorTargets = function (ids, prefix) {\n var $$ = this;\n ids = ids || [];\n return ids.length ? ids.map(function (id) {\n return $$.selectorTarget(id, prefix);\n }) : null;\n};\nc3_chart_internal_fn.selectorLegend = function (id) {\n return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id);\n};\nc3_chart_internal_fn.selectorLegends = function (ids) {\n var $$ = this;\n return ids && ids.length ? ids.map(function (id) {\n return $$.selectorLegend(id);\n }) : null;\n};\n\nc3_chart_internal_fn.getClipPath = function (id) {\n var isIE9 = window.navigator.appVersion.toLowerCase().indexOf(\"msie 9.\") >= 0;\n return \"url(\" + (isIE9 ? \"\" : document.URL.split('#')[0]) + \"#\" + id + \")\";\n};\nc3_chart_internal_fn.appendClip = function (parent, id) {\n return parent.append(\"clipPath\").attr(\"id\", id).append(\"rect\");\n};\nc3_chart_internal_fn.getAxisClipX = function (forHorizontal) {\n // axis line width + padding for left\n var left = Math.max(30, this.margin.left);\n return forHorizontal ? -(1 + left) : -(left - 1);\n};\nc3_chart_internal_fn.getAxisClipY = function (forHorizontal) {\n return forHorizontal ? -20 : -this.margin.top;\n};\nc3_chart_internal_fn.getXAxisClipX = function () {\n var $$ = this;\n return $$.getAxisClipX(!$$.config.axis_rotated);\n};\nc3_chart_internal_fn.getXAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY(!$$.config.axis_rotated);\n};\nc3_chart_internal_fn.getYAxisClipX = function () {\n var $$ = this;\n return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);\n};\nc3_chart_internal_fn.getYAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY($$.config.axis_rotated);\n};\nc3_chart_internal_fn.getAxisClipWidth = function (forHorizontal) {\n var $$ = this,\n left = Math.max(30, $$.margin.left),\n right = Math.max(30, $$.margin.right);\n // width + axis line width + padding for left/right\n return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20;\n};\nc3_chart_internal_fn.getAxisClipHeight = function (forHorizontal) {\n // less than 20 is not enough to show the axis label 'outer' without legend\n return (forHorizontal ? this.margin.bottom : this.margin.top + this.height) + 20;\n};\nc3_chart_internal_fn.getXAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth(!$$.config.axis_rotated);\n};\nc3_chart_internal_fn.getXAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight(!$$.config.axis_rotated);\n};\nc3_chart_internal_fn.getYAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0);\n};\nc3_chart_internal_fn.getYAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight($$.config.axis_rotated);\n};\n\nc3_chart_internal_fn.generateColor = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n colors = config.data_colors,\n pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.scale.category10().range(),\n callback = config.data_color,\n ids = [];\n\n return function (d) {\n var id = d.id || d.data && d.data.id || d,\n color;\n\n // if callback function is provided\n if (colors[id] instanceof Function) {\n color = colors[id](d);\n }\n // if specified, choose that color\n else if (colors[id]) {\n color = colors[id];\n }\n // if not specified, choose from pattern\n else {\n if (ids.indexOf(id) < 0) {\n ids.push(id);\n }\n color = pattern[ids.indexOf(id) % pattern.length];\n colors[id] = color;\n }\n return callback instanceof Function ? callback(color, d) : color;\n };\n};\nc3_chart_internal_fn.generateLevelColor = function () {\n var $$ = this,\n config = $$.config,\n colors = config.color_pattern,\n threshold = config.color_threshold,\n asValue = threshold.unit === 'value',\n values = threshold.values && threshold.values.length ? threshold.values : [],\n max = threshold.max || 100;\n return notEmpty(config.color_threshold) ? function (value) {\n var i,\n v,\n color = colors[colors.length - 1];\n for (i = 0; i < values.length; i++) {\n v = asValue ? value : value * 100 / max;\n if (v < values[i]) {\n color = colors[i];\n break;\n }\n }\n return color;\n } : null;\n};\n\nc3_chart_internal_fn.getDefaultConfig = function () {\n var config = {\n bindto: '#chart',\n svg_classname: undefined,\n size_width: undefined,\n size_height: undefined,\n padding_left: undefined,\n padding_right: undefined,\n padding_top: undefined,\n padding_bottom: undefined,\n resize_auto: true,\n zoom_enabled: false,\n zoom_extent: undefined,\n zoom_privileged: false,\n zoom_rescale: false,\n zoom_onzoom: function zoom_onzoom() {},\n zoom_onzoomstart: function zoom_onzoomstart() {},\n zoom_onzoomend: function zoom_onzoomend() {},\n zoom_x_min: undefined,\n zoom_x_max: undefined,\n interaction_brighten: true,\n interaction_enabled: true,\n onmouseover: function onmouseover() {},\n onmouseout: function onmouseout() {},\n onresize: function onresize() {},\n onresized: function onresized() {},\n oninit: function oninit() {},\n onrendered: function onrendered() {},\n transition_duration: 350,\n data_x: undefined,\n data_xs: {},\n data_xFormat: '%Y-%m-%d',\n data_xLocaltime: true,\n data_xSort: true,\n data_idConverter: function data_idConverter(id) {\n return id;\n },\n data_names: {},\n data_classes: {},\n data_groups: [],\n data_axes: {},\n data_type: undefined,\n data_types: {},\n data_labels: {},\n data_order: 'desc',\n data_regions: {},\n data_color: undefined,\n data_colors: {},\n data_hide: false,\n data_filter: undefined,\n data_selection_enabled: false,\n data_selection_grouped: false,\n data_selection_isselectable: function data_selection_isselectable() {\n return true;\n },\n data_selection_multiple: true,\n data_selection_draggable: false,\n data_onclick: function data_onclick() {},\n data_onmouseover: function data_onmouseover() {},\n data_onmouseout: function data_onmouseout() {},\n data_onselected: function data_onselected() {},\n data_onunselected: function data_onunselected() {},\n data_url: undefined,\n data_headers: undefined,\n data_json: undefined,\n data_rows: undefined,\n data_columns: undefined,\n data_mimeType: undefined,\n data_keys: undefined,\n // configuration for no plot-able data supplied.\n data_empty_label_text: \"\",\n // subchart\n subchart_show: false,\n subchart_size_height: 60,\n subchart_axis_x_show: true,\n subchart_onbrush: function subchart_onbrush() {},\n // color\n color_pattern: [],\n color_threshold: {},\n // legend\n legend_show: true,\n legend_hide: false,\n legend_position: 'bottom',\n legend_inset_anchor: 'top-left',\n legend_inset_x: 10,\n legend_inset_y: 0,\n legend_inset_step: undefined,\n legend_item_onclick: undefined,\n legend_item_onmouseover: undefined,\n legend_item_onmouseout: undefined,\n legend_equally: false,\n legend_padding: 0,\n legend_item_tile_width: 10,\n legend_item_tile_height: 10,\n // axis\n axis_rotated: false,\n axis_x_show: true,\n axis_x_type: 'indexed',\n axis_x_localtime: true,\n axis_x_categories: [],\n axis_x_tick_centered: false,\n axis_x_tick_format: undefined,\n axis_x_tick_culling: {},\n axis_x_tick_culling_max: 10,\n axis_x_tick_count: undefined,\n axis_x_tick_fit: true,\n axis_x_tick_values: null,\n axis_x_tick_rotate: 0,\n axis_x_tick_outer: true,\n axis_x_tick_multiline: true,\n axis_x_tick_width: null,\n axis_x_max: undefined,\n axis_x_min: undefined,\n axis_x_padding: {},\n axis_x_height: undefined,\n axis_x_extent: undefined,\n axis_x_label: {},\n axis_y_show: true,\n axis_y_type: undefined,\n axis_y_max: undefined,\n axis_y_min: undefined,\n axis_y_inverted: false,\n axis_y_center: undefined,\n axis_y_inner: undefined,\n axis_y_label: {},\n axis_y_tick_format: undefined,\n axis_y_tick_outer: true,\n axis_y_tick_values: null,\n axis_y_tick_rotate: 0,\n axis_y_tick_count: undefined,\n axis_y_tick_time_value: undefined,\n axis_y_tick_time_interval: undefined,\n axis_y_padding: {},\n axis_y_default: undefined,\n axis_y2_show: false,\n axis_y2_max: undefined,\n axis_y2_min: undefined,\n axis_y2_inverted: false,\n axis_y2_center: undefined,\n axis_y2_inner: undefined,\n axis_y2_label: {},\n axis_y2_tick_format: undefined,\n axis_y2_tick_outer: true,\n axis_y2_tick_values: null,\n axis_y2_tick_count: undefined,\n axis_y2_padding: {},\n axis_y2_default: undefined,\n // grid\n grid_x_show: false,\n grid_x_type: 'tick',\n grid_x_lines: [],\n grid_y_show: false,\n // not used\n // grid_y_type: 'tick',\n grid_y_lines: [],\n grid_y_ticks: 10,\n grid_focus_show: true,\n grid_lines_front: true,\n // point - point of each data\n point_show: true,\n point_r: 2.5,\n point_sensitivity: 10,\n point_focus_expand_enabled: true,\n point_focus_expand_r: undefined,\n point_select_r: undefined,\n // line\n line_connectNull: false,\n line_step_type: 'step',\n // bar\n bar_width: undefined,\n bar_width_ratio: 0.6,\n bar_width_max: undefined,\n bar_zerobased: true,\n bar_space: 0,\n // area\n area_zerobased: true,\n area_above: false,\n // pie\n pie_label_show: true,\n pie_label_format: undefined,\n pie_label_threshold: 0.05,\n pie_label_ratio: undefined,\n pie_expand: {},\n pie_expand_duration: 50,\n // gauge\n gauge_fullCircle: false,\n gauge_label_show: true,\n gauge_label_format: undefined,\n gauge_min: 0,\n gauge_max: 100,\n gauge_startingAngle: -1 * Math.PI / 2,\n gauge_label_extents: undefined,\n gauge_units: undefined,\n gauge_width: undefined,\n gauge_expand: {},\n gauge_expand_duration: 50,\n // donut\n donut_label_show: true,\n donut_label_format: undefined,\n donut_label_threshold: 0.05,\n donut_label_ratio: undefined,\n donut_width: undefined,\n donut_title: \"\",\n donut_expand: {},\n donut_expand_duration: 50,\n // spline\n spline_interpolation_type: 'cardinal',\n // region - region to change style\n regions: [],\n // tooltip - show when mouseover on each data\n tooltip_show: true,\n tooltip_grouped: true,\n tooltip_order: undefined,\n tooltip_format_title: undefined,\n tooltip_format_name: undefined,\n tooltip_format_value: undefined,\n tooltip_position: undefined,\n tooltip_contents: function tooltip_contents(d, defaultTitleFormat, defaultValueFormat, color) {\n return this.getTooltipContent ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color) : '';\n },\n tooltip_init_show: false,\n tooltip_init_x: 0,\n tooltip_init_position: { top: '0px', left: '50px' },\n tooltip_onshow: function tooltip_onshow() {},\n tooltip_onhide: function tooltip_onhide() {},\n // title\n title_text: undefined,\n title_padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n title_position: 'top-center'\n };\n\n Object.keys(this.additionalConfig).forEach(function (key) {\n config[key] = this.additionalConfig[key];\n }, this);\n\n return config;\n};\nc3_chart_internal_fn.additionalConfig = {};\n\nc3_chart_internal_fn.loadConfig = function (config) {\n var this_config = this.config,\n target,\n keys,\n read;\n function find() {\n var key = keys.shift();\n // console.log(\"key =>\", key, \", target =>\", target);\n if (key && target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && key in target) {\n target = target[key];\n return find();\n } else if (!key) {\n return target;\n } else {\n return undefined;\n }\n }\n Object.keys(this_config).forEach(function (key) {\n target = config;\n keys = key.split('_');\n read = find();\n // console.log(\"CONFIG : \", key, read);\n if (isDefined(read)) {\n this_config[key] = read;\n }\n });\n};\n\nc3_chart_internal_fn.convertUrlToData = function (url, mimeType, headers, keys, done) {\n var $$ = this,\n type = mimeType ? mimeType : 'csv';\n var req = $$.d3.xhr(url);\n if (headers) {\n Object.keys(headers).forEach(function (header) {\n req.header(header, headers[header]);\n });\n }\n req.get(function (error, data) {\n var d;\n var dataResponse = data.response || data.responseText; // Fixes IE9 XHR issue; see #1345\n if (!data) {\n throw new Error(error.responseURL + ' ' + error.status + ' (' + error.statusText + ')');\n }\n if (type === 'json') {\n d = $$.convertJsonToData(JSON.parse(dataResponse), keys);\n } else if (type === 'tsv') {\n d = $$.convertTsvToData(dataResponse);\n } else {\n d = $$.convertCsvToData(dataResponse);\n }\n done.call($$, d);\n });\n};\nc3_chart_internal_fn.convertXsvToData = function (xsv, parser) {\n var rows = parser.parseRows(xsv),\n d;\n if (rows.length === 1) {\n d = [{}];\n rows[0].forEach(function (id) {\n d[0][id] = null;\n });\n } else {\n d = parser.parse(xsv);\n }\n return d;\n};\nc3_chart_internal_fn.convertCsvToData = function (csv) {\n return this.convertXsvToData(csv, this.d3.csv);\n};\nc3_chart_internal_fn.convertTsvToData = function (tsv) {\n return this.convertXsvToData(tsv, this.d3.tsv);\n};\nc3_chart_internal_fn.convertJsonToData = function (json, keys) {\n var $$ = this,\n new_rows = [],\n targetKeys,\n data;\n if (keys) {\n // when keys specified, json would be an array that includes objects\n if (keys.x) {\n targetKeys = keys.value.concat(keys.x);\n $$.config.data_x = keys.x;\n } else {\n targetKeys = keys.value;\n }\n new_rows.push(targetKeys);\n json.forEach(function (o) {\n var new_row = [];\n targetKeys.forEach(function (key) {\n // convert undefined to null because undefined data will be removed in convertDataToTargets()\n var v = $$.findValueInJson(o, key);\n if (isUndefined(v)) {\n v = null;\n }\n new_row.push(v);\n });\n new_rows.push(new_row);\n });\n data = $$.convertRowsToData(new_rows);\n } else {\n Object.keys(json).forEach(function (key) {\n new_rows.push([key].concat(json[key]));\n });\n data = $$.convertColumnsToData(new_rows);\n }\n return data;\n};\nc3_chart_internal_fn.findValueInJson = function (object, path) {\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties (replace [] with .)\n path = path.replace(/^\\./, ''); // strip a leading dot\n var pathArray = path.split('.');\n for (var i = 0; i < pathArray.length; ++i) {\n var k = pathArray[i];\n if (k in object) {\n object = object[k];\n } else {\n return;\n }\n }\n return object;\n};\n\n/**\n * Converts the rows to normalized data.\n * @param {any[][]} rows The row data\n * @return {Object[]}\n */\nc3_chart_internal_fn.convertRowsToData = function (rows) {\n var newRows = [];\n var keys = rows[0];\n\n for (var i = 1; i < rows.length; i++) {\n var newRow = {};\n for (var j = 0; j < rows[i].length; j++) {\n if (isUndefined(rows[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n newRow[keys[j]] = rows[i][j];\n }\n newRows.push(newRow);\n }\n return newRows;\n};\n\n/**\n * Converts the columns to normalized data.\n * @param {any[][]} columns The column data\n * @return {Object[]}\n */\nc3_chart_internal_fn.convertColumnsToData = function (columns) {\n var newRows = [];\n\n for (var i = 0; i < columns.length; i++) {\n var key = columns[i][0];\n for (var j = 1; j < columns[i].length; j++) {\n if (isUndefined(newRows[j - 1])) {\n newRows[j - 1] = {};\n }\n if (isUndefined(columns[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n newRows[j - 1][key] = columns[i][j];\n }\n }\n\n return newRows;\n};\n\nc3_chart_internal_fn.convertDataToTargets = function (data, appendXs) {\n var $$ = this,\n config = $$.config,\n ids = $$.d3.keys(data[0]).filter($$.isNotX, $$),\n xs = $$.d3.keys(data[0]).filter($$.isX, $$),\n targets;\n\n // save x for update data by load when custom x and c3.x API\n ids.forEach(function (id) {\n var xKey = $$.getXKey(id);\n\n if ($$.isCustomX() || $$.isTimeSeries()) {\n // if included in input data\n if (xs.indexOf(xKey) >= 0) {\n $$.data.xs[id] = (appendXs && $$.data.xs[id] ? $$.data.xs[id] : []).concat(data.map(function (d) {\n return d[xKey];\n }).filter(isValue).map(function (rawX, i) {\n return $$.generateTargetX(rawX, id, i);\n }));\n }\n // if not included in input data, find from preloaded data of other id's x\n else if (config.data_x) {\n $$.data.xs[id] = $$.getOtherTargetXs();\n }\n // if not included in input data, find from preloaded data\n else if (notEmpty(config.data_xs)) {\n $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets);\n }\n // MEMO: if no x included, use same x of current will be used\n } else {\n $$.data.xs[id] = data.map(function (d, i) {\n return i;\n });\n }\n });\n\n // check x is defined\n ids.forEach(function (id) {\n if (!$$.data.xs[id]) {\n throw new Error('x is not defined for id = \"' + id + '\".');\n }\n });\n\n // convert to target\n targets = ids.map(function (id, index) {\n var convertedId = config.data_idConverter(id);\n return {\n id: convertedId,\n id_org: id,\n values: data.map(function (d, i) {\n var xKey = $$.getXKey(id),\n rawX = d[xKey],\n value = d[id] !== null && !isNaN(d[id]) ? +d[id] : null,\n x;\n // use x as categories if custom x and categorized\n if ($$.isCustomX() && $$.isCategorized() && !isUndefined(rawX)) {\n if (index === 0 && i === 0) {\n config.axis_x_categories = [];\n }\n x = config.axis_x_categories.indexOf(rawX);\n if (x === -1) {\n x = config.axis_x_categories.length;\n config.axis_x_categories.push(rawX);\n }\n } else {\n x = $$.generateTargetX(rawX, id, i);\n }\n // mark as x = undefined if value is undefined and filter to remove after mapped\n if (isUndefined(d[id]) || $$.data.xs[id].length <= i) {\n x = undefined;\n }\n return { x: x, value: value, id: convertedId };\n }).filter(function (v) {\n return isDefined(v.x);\n })\n };\n });\n\n // finish targets\n targets.forEach(function (t) {\n var i;\n // sort values by its x\n if (config.data_xSort) {\n t.values = t.values.sort(function (v1, v2) {\n var x1 = v1.x || v1.x === 0 ? v1.x : Infinity,\n x2 = v2.x || v2.x === 0 ? v2.x : Infinity;\n return x1 - x2;\n });\n }\n // indexing each value\n i = 0;\n t.values.forEach(function (v) {\n v.index = i++;\n });\n // this needs to be sorted because its index and value.index is identical\n $$.data.xs[t.id].sort(function (v1, v2) {\n return v1 - v2;\n });\n });\n\n // cache information about values\n $$.hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n $$.hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n\n // set target types\n if (config.data_type) {\n $$.setTargetType($$.mapToIds(targets).filter(function (id) {\n return !(id in config.data_types);\n }), config.data_type);\n }\n\n // cache as original id keyed\n targets.forEach(function (d) {\n $$.addCache(d.id_org, d);\n });\n\n return targets;\n};\n\nc3_chart_internal_fn.isX = function (key) {\n var $$ = this,\n config = $$.config;\n return config.data_x && key === config.data_x || notEmpty(config.data_xs) && hasValue(config.data_xs, key);\n};\nc3_chart_internal_fn.isNotX = function (key) {\n return !this.isX(key);\n};\nc3_chart_internal_fn.getXKey = function (id) {\n var $$ = this,\n config = $$.config;\n return config.data_x ? config.data_x : notEmpty(config.data_xs) ? config.data_xs[id] : null;\n};\nc3_chart_internal_fn.getXValuesOfXKey = function (key, targets) {\n var $$ = this,\n xValues,\n ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : [];\n ids.forEach(function (id) {\n if ($$.getXKey(id) === key) {\n xValues = $$.data.xs[id];\n }\n });\n return xValues;\n};\nc3_chart_internal_fn.getIndexByX = function (x) {\n var $$ = this,\n data = $$.filterByX($$.data.targets, x);\n return data.length ? data[0].index : null;\n};\nc3_chart_internal_fn.getXValue = function (id, i) {\n var $$ = this;\n return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i]) ? $$.data.xs[id][i] : i;\n};\nc3_chart_internal_fn.getOtherTargetXs = function () {\n var $$ = this,\n idsForX = Object.keys($$.data.xs);\n return idsForX.length ? $$.data.xs[idsForX[0]] : null;\n};\nc3_chart_internal_fn.getOtherTargetX = function (index) {\n var xs = this.getOtherTargetXs();\n return xs && index < xs.length ? xs[index] : null;\n};\nc3_chart_internal_fn.addXs = function (xs) {\n var $$ = this;\n Object.keys(xs).forEach(function (id) {\n $$.config.data_xs[id] = xs[id];\n });\n};\nc3_chart_internal_fn.hasMultipleX = function (xs) {\n return this.d3.set(Object.keys(xs).map(function (id) {\n return xs[id];\n })).size() > 1;\n};\nc3_chart_internal_fn.isMultipleX = function () {\n return notEmpty(this.config.data_xs) || !this.config.data_xSort || this.hasType('scatter');\n};\nc3_chart_internal_fn.addName = function (data) {\n var $$ = this,\n name;\n if (data) {\n name = $$.config.data_names[data.id];\n data.name = name !== undefined ? name : data.id;\n }\n return data;\n};\nc3_chart_internal_fn.getValueOnIndex = function (values, index) {\n var valueOnIndex = values.filter(function (v) {\n return v.index === index;\n });\n return valueOnIndex.length ? valueOnIndex[0] : null;\n};\nc3_chart_internal_fn.updateTargetX = function (targets, x) {\n var $$ = this;\n targets.forEach(function (t) {\n t.values.forEach(function (v, i) {\n v.x = $$.generateTargetX(x[i], t.id, i);\n });\n $$.data.xs[t.id] = x;\n });\n};\nc3_chart_internal_fn.updateTargetXs = function (targets, xs) {\n var $$ = this;\n targets.forEach(function (t) {\n if (xs[t.id]) {\n $$.updateTargetX([t], xs[t.id]);\n }\n });\n};\nc3_chart_internal_fn.generateTargetX = function (rawX, id, index) {\n var $$ = this,\n x;\n if ($$.isTimeSeries()) {\n x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index));\n } else if ($$.isCustomX() && !$$.isCategorized()) {\n x = isValue(rawX) ? +rawX : $$.getXValue(id, index);\n } else {\n x = index;\n }\n return x;\n};\nc3_chart_internal_fn.cloneTarget = function (target) {\n return {\n id: target.id,\n id_org: target.id_org,\n values: target.values.map(function (d) {\n return { x: d.x, value: d.value, id: d.id };\n })\n };\n};\nc3_chart_internal_fn.updateXs = function () {\n var $$ = this;\n if ($$.data.targets.length) {\n $$.xs = [];\n $$.data.targets[0].values.forEach(function (v) {\n $$.xs[v.index] = v.x;\n });\n }\n};\nc3_chart_internal_fn.getPrevX = function (i) {\n var x = this.xs[i - 1];\n return typeof x !== 'undefined' ? x : null;\n};\nc3_chart_internal_fn.getNextX = function (i) {\n var x = this.xs[i + 1];\n return typeof x !== 'undefined' ? x : null;\n};\nc3_chart_internal_fn.getMaxDataCount = function () {\n var $$ = this;\n return $$.d3.max($$.data.targets, function (t) {\n return t.values.length;\n });\n};\nc3_chart_internal_fn.getMaxDataCountTarget = function (targets) {\n var length = targets.length,\n max = 0,\n maxTarget;\n if (length > 1) {\n targets.forEach(function (t) {\n if (t.values.length > max) {\n maxTarget = t;\n max = t.values.length;\n }\n });\n } else {\n maxTarget = length ? targets[0] : null;\n }\n return maxTarget;\n};\nc3_chart_internal_fn.getEdgeX = function (targets) {\n var $$ = this;\n return !targets.length ? [0, 0] : [$$.d3.min(targets, function (t) {\n return t.values[0].x;\n }), $$.d3.max(targets, function (t) {\n return t.values[t.values.length - 1].x;\n })];\n};\nc3_chart_internal_fn.mapToIds = function (targets) {\n return targets.map(function (d) {\n return d.id;\n });\n};\nc3_chart_internal_fn.mapToTargetIds = function (ids) {\n var $$ = this;\n return ids ? [].concat(ids) : $$.mapToIds($$.data.targets);\n};\nc3_chart_internal_fn.hasTarget = function (targets, id) {\n var ids = this.mapToIds(targets),\n i;\n for (i = 0; i < ids.length; i++) {\n if (ids[i] === id) {\n return true;\n }\n }\n return false;\n};\nc3_chart_internal_fn.isTargetToShow = function (targetId) {\n return this.hiddenTargetIds.indexOf(targetId) < 0;\n};\nc3_chart_internal_fn.isLegendToShow = function (targetId) {\n return this.hiddenLegendIds.indexOf(targetId) < 0;\n};\nc3_chart_internal_fn.filterTargetsToShow = function (targets) {\n var $$ = this;\n return targets.filter(function (t) {\n return $$.isTargetToShow(t.id);\n });\n};\nc3_chart_internal_fn.mapTargetsToUniqueXs = function (targets) {\n var $$ = this;\n var xs = $$.d3.set($$.d3.merge(targets.map(function (t) {\n return t.values.map(function (v) {\n return +v.x;\n });\n }))).values();\n xs = $$.isTimeSeries() ? xs.map(function (x) {\n return new Date(+x);\n }) : xs.map(function (x) {\n return +x;\n });\n return xs.sort(function (a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n });\n};\nc3_chart_internal_fn.addHiddenTargetIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenTargetIds.indexOf(targetIds[i]) < 0) {\n this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds[i]);\n }\n }\n};\nc3_chart_internal_fn.removeHiddenTargetIds = function (targetIds) {\n this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n};\nc3_chart_internal_fn.addHiddenLegendIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenLegendIds.indexOf(targetIds[i]) < 0) {\n this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds[i]);\n }\n }\n};\nc3_chart_internal_fn.removeHiddenLegendIds = function (targetIds) {\n this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n};\nc3_chart_internal_fn.getValuesAsIdKeyed = function (targets) {\n var ys = {};\n targets.forEach(function (t) {\n ys[t.id] = [];\n t.values.forEach(function (v) {\n ys[t.id].push(v.value);\n });\n });\n return ys;\n};\nc3_chart_internal_fn.checkValueInTargets = function (targets, checker) {\n var ids = Object.keys(targets),\n i,\n j,\n values;\n for (i = 0; i < ids.length; i++) {\n values = targets[ids[i]].values;\n for (j = 0; j < values.length; j++) {\n if (checker(values[j].value)) {\n return true;\n }\n }\n }\n return false;\n};\nc3_chart_internal_fn.hasNegativeValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v < 0;\n });\n};\nc3_chart_internal_fn.hasPositiveValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v > 0;\n });\n};\nc3_chart_internal_fn.isOrderDesc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'desc';\n};\nc3_chart_internal_fn.isOrderAsc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'asc';\n};\nc3_chart_internal_fn.getOrderFunction = function () {\n var $$ = this,\n config = $$.config,\n orderAsc = $$.isOrderAsc(),\n orderDesc = $$.isOrderDesc();\n if (orderAsc || orderDesc) {\n return function (t1, t2) {\n var reducer = function reducer(p, c) {\n return p + Math.abs(c.value);\n };\n var t1Sum = t1.values.reduce(reducer, 0),\n t2Sum = t2.values.reduce(reducer, 0);\n return orderDesc ? t2Sum - t1Sum : t1Sum - t2Sum;\n };\n } else if (isFunction(config.data_order)) {\n return config.data_order;\n } else if (isArray(config.data_order)) {\n var order = config.data_order;\n return function (t1, t2) {\n return order.indexOf(t1.id) - order.indexOf(t2.id);\n };\n }\n};\nc3_chart_internal_fn.orderTargets = function (targets) {\n var fct = this.getOrderFunction();\n if (fct) {\n targets.sort(fct);\n if (this.isOrderAsc() || this.isOrderDesc()) {\n targets.reverse();\n }\n }\n return targets;\n};\nc3_chart_internal_fn.filterByX = function (targets, x) {\n return this.d3.merge(targets.map(function (t) {\n return t.values;\n })).filter(function (v) {\n return v.x - x === 0;\n });\n};\nc3_chart_internal_fn.filterRemoveNull = function (data) {\n return data.filter(function (d) {\n return isValue(d.value);\n });\n};\nc3_chart_internal_fn.filterByXDomain = function (targets, xDomain) {\n return targets.map(function (t) {\n return {\n id: t.id,\n id_org: t.id_org,\n values: t.values.filter(function (v) {\n return xDomain[0] <= v.x && v.x <= xDomain[1];\n })\n };\n });\n};\nc3_chart_internal_fn.hasDataLabel = function () {\n var config = this.config;\n if (typeof config.data_labels === 'boolean' && config.data_labels) {\n return true;\n } else if (_typeof(config.data_labels) === 'object' && notEmpty(config.data_labels)) {\n return true;\n }\n return false;\n};\nc3_chart_internal_fn.getDataLabelLength = function (min, max, key) {\n var $$ = this,\n lengths = [0, 0],\n paddingCoef = 1.3;\n $$.selectChart.select('svg').selectAll('.dummy').data([min, max]).enter().append('text').text(function (d) {\n return $$.dataLabelFormat(d.id)(d);\n }).each(function (d, i) {\n lengths[i] = this.getBoundingClientRect()[key] * paddingCoef;\n }).remove();\n return lengths;\n};\nc3_chart_internal_fn.isNoneArc = function (d) {\n return this.hasTarget(this.data.targets, d.id);\n}, c3_chart_internal_fn.isArc = function (d) {\n return 'data' in d && this.hasTarget(this.data.targets, d.data.id);\n};\nc3_chart_internal_fn.findSameXOfValues = function (values, index) {\n var i,\n targetX = values[index].x,\n sames = [];\n for (i = index - 1; i >= 0; i--) {\n if (targetX !== values[i].x) {\n break;\n }\n sames.push(values[i]);\n }\n for (i = index; i < values.length; i++) {\n if (targetX !== values[i].x) {\n break;\n }\n sames.push(values[i]);\n }\n return sames;\n};\n\nc3_chart_internal_fn.findClosestFromTargets = function (targets, pos) {\n var $$ = this,\n candidates;\n\n // map to array of closest points of each target\n candidates = targets.map(function (target) {\n return $$.findClosest(target.values, pos);\n });\n\n // decide closest point and return\n return $$.findClosest(candidates, pos);\n};\nc3_chart_internal_fn.findClosest = function (values, pos) {\n var $$ = this,\n minDist = $$.config.point_sensitivity,\n closest;\n\n // find mouseovering bar\n values.filter(function (v) {\n return v && $$.isBarType(v.id);\n }).forEach(function (v) {\n var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node();\n if (!closest && $$.isWithinBar(shape)) {\n closest = v;\n }\n });\n\n // find closest point from non-bar\n values.filter(function (v) {\n return v && !$$.isBarType(v.id);\n }).forEach(function (v) {\n var d = $$.dist(v, pos);\n if (d < minDist) {\n minDist = d;\n closest = v;\n }\n });\n\n return closest;\n};\nc3_chart_internal_fn.dist = function (data, pos) {\n var $$ = this,\n config = $$.config,\n xIndex = config.axis_rotated ? 1 : 0,\n yIndex = config.axis_rotated ? 0 : 1,\n y = $$.circleY(data, data.index),\n x = $$.x(data.x);\n return Math.sqrt(Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2));\n};\nc3_chart_internal_fn.convertValuesToStep = function (values) {\n var converted = [].concat(values),\n i;\n\n if (!this.isCategorized()) {\n return values;\n }\n\n for (i = values.length + 1; 0 < i; i--) {\n converted[i] = converted[i - 1];\n }\n\n converted[0] = {\n x: converted[0].x - 1,\n value: converted[0].value,\n id: converted[0].id\n };\n converted[values.length + 1] = {\n x: converted[values.length].x + 1,\n value: converted[values.length].value,\n id: converted[values.length].id\n };\n\n return converted;\n};\nc3_chart_internal_fn.updateDataAttributes = function (name, attrs) {\n var $$ = this,\n config = $$.config,\n current = config['data_' + name];\n if (typeof attrs === 'undefined') {\n return current;\n }\n Object.keys(attrs).forEach(function (id) {\n current[id] = attrs[id];\n });\n $$.redraw({ withLegend: true });\n return current;\n};\n\nc3_chart_internal_fn.load = function (targets, args) {\n var $$ = this;\n if (targets) {\n // filter loading targets if needed\n if (args.filter) {\n targets = targets.filter(args.filter);\n }\n // set type if args.types || args.type specified\n if (args.type || args.types) {\n targets.forEach(function (t) {\n var type = args.types && args.types[t.id] ? args.types[t.id] : args.type;\n $$.setTargetType(t.id, type);\n });\n }\n // Update/Add data\n $$.data.targets.forEach(function (d) {\n for (var i = 0; i < targets.length; i++) {\n if (d.id === targets[i].id) {\n d.values = targets[i].values;\n targets.splice(i, 1);\n break;\n }\n }\n });\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n }\n\n // Set targets\n $$.updateTargets($$.data.targets);\n\n // Redraw with new targets\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n\n if (args.done) {\n args.done();\n }\n};\nc3_chart_internal_fn.loadFromArgs = function (args) {\n var $$ = this;\n if (args.data) {\n $$.load($$.convertDataToTargets(args.data), args);\n } else if (args.url) {\n $$.convertUrlToData(args.url, args.mimeType, args.headers, args.keys, function (data) {\n $$.load($$.convertDataToTargets(data), args);\n });\n } else if (args.json) {\n $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args);\n } else if (args.rows) {\n $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args);\n } else if (args.columns) {\n $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args);\n } else {\n $$.load(null, args);\n }\n};\nc3_chart_internal_fn.unload = function (targetIds, done) {\n var $$ = this;\n if (!done) {\n done = function done() {};\n }\n // filter existing target\n targetIds = targetIds.filter(function (id) {\n return $$.hasTarget($$.data.targets, id);\n });\n // If no target, call done and return\n if (!targetIds || targetIds.length === 0) {\n done();\n return;\n }\n $$.svg.selectAll(targetIds.map(function (id) {\n return $$.selectorTarget(id);\n })).transition().style('opacity', 0).remove().call($$.endall, done);\n targetIds.forEach(function (id) {\n // Reset fadein for future load\n $$.withoutFadeIn[id] = false;\n // Remove target's elements\n if ($$.legend) {\n $$.legend.selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id)).remove();\n }\n // Remove target\n $$.data.targets = $$.data.targets.filter(function (t) {\n return t.id !== id;\n });\n });\n};\n\nc3_chart_internal_fn.getYDomainMin = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasNegativeValue;\n if (config.data_groups.length > 0) {\n hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n if (idsInGroup.length === 0) {\n continue;\n }\n baseId = idsInGroup[0];\n // Consider negative values\n if (hasNegativeValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v < 0 ? v : 0;\n });\n }\n // Compute min\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n if (!ys[id]) {\n continue;\n }\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasNegativeValue && +v > 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n return $$.d3.min(Object.keys(ys).map(function (key) {\n return $$.d3.min(ys[key]);\n }));\n};\nc3_chart_internal_fn.getYDomainMax = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasPositiveValue;\n if (config.data_groups.length > 0) {\n hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n if (idsInGroup.length === 0) {\n continue;\n }\n baseId = idsInGroup[0];\n // Consider positive values\n if (hasPositiveValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v > 0 ? v : 0;\n });\n }\n // Compute max\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n if (!ys[id]) {\n continue;\n }\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasPositiveValue && +v < 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n return $$.d3.max(Object.keys(ys).map(function (key) {\n return $$.d3.max(ys[key]);\n }));\n};\nc3_chart_internal_fn.getYDomain = function (targets, axisId, xDomain) {\n var $$ = this,\n config = $$.config,\n targetsByAxisId = targets.filter(function (t) {\n return $$.axis.getId(t.id) === axisId;\n }),\n yTargets = xDomain ? $$.filterByXDomain(targetsByAxisId, xDomain) : targetsByAxisId,\n yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min,\n yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max,\n yDomainMin = $$.getYDomainMin(yTargets),\n yDomainMax = $$.getYDomainMax(yTargets),\n domain,\n domainLength,\n padding,\n padding_top,\n padding_bottom,\n center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center,\n yDomainAbs,\n lengths,\n diff,\n ratio,\n isAllPositive,\n isAllNegative,\n isZeroBased = $$.hasType('bar', yTargets) && config.bar_zerobased || $$.hasType('area', yTargets) && config.area_zerobased,\n isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted,\n showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated,\n showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated;\n\n // MEMO: avoid inverting domain unexpectedly\n yDomainMin = isValue(yMin) ? yMin : isValue(yMax) ? yDomainMin < yMax ? yDomainMin : yMax - 10 : yDomainMin;\n yDomainMax = isValue(yMax) ? yMax : isValue(yMin) ? yMin < yDomainMax ? yDomainMax : yMin + 10 : yDomainMax;\n\n if (yTargets.length === 0) {\n // use current domain if target of axisId is none\n return axisId === 'y2' ? $$.y2.domain() : $$.y.domain();\n }\n if (isNaN(yDomainMin)) {\n // set minimum to zero when not number\n yDomainMin = 0;\n }\n if (isNaN(yDomainMax)) {\n // set maximum to have same value as yDomainMin\n yDomainMax = yDomainMin;\n }\n if (yDomainMin === yDomainMax) {\n yDomainMin < 0 ? yDomainMax = 0 : yDomainMin = 0;\n }\n isAllPositive = yDomainMin >= 0 && yDomainMax >= 0;\n isAllNegative = yDomainMin <= 0 && yDomainMax <= 0;\n\n // Cancel zerobased if axis_*_min / axis_*_max specified\n if (isValue(yMin) && isAllPositive || isValue(yMax) && isAllNegative) {\n isZeroBased = false;\n }\n\n // Bar/Area chart should be 0-based if all positive|negative\n if (isZeroBased) {\n if (isAllPositive) {\n yDomainMin = 0;\n }\n if (isAllNegative) {\n yDomainMax = 0;\n }\n }\n\n domainLength = Math.abs(yDomainMax - yDomainMin);\n padding = padding_top = padding_bottom = domainLength * 0.1;\n\n if (typeof center !== 'undefined') {\n yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax));\n yDomainMax = center + yDomainAbs;\n yDomainMin = center - yDomainAbs;\n }\n // add padding for data label\n if (showHorizontalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width');\n diff = diffDomain($$.y.range());\n ratio = [lengths[0] / diff, lengths[1] / diff];\n padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1]));\n padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1]));\n } else if (showVerticalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height');\n padding_top += $$.axis.convertPixelsToAxisPadding(lengths[1], domainLength);\n padding_bottom += $$.axis.convertPixelsToAxisPadding(lengths[0], domainLength);\n }\n if (axisId === 'y' && notEmpty(config.axis_y_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength);\n }\n if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength);\n }\n // Bar/Area chart should be 0-based if all positive|negative\n if (isZeroBased) {\n if (isAllPositive) {\n padding_bottom = yDomainMin;\n }\n if (isAllNegative) {\n padding_top = -yDomainMax;\n }\n }\n domain = [yDomainMin - padding_bottom, yDomainMax + padding_top];\n return isInverted ? domain.reverse() : domain;\n};\nc3_chart_internal_fn.getXDomainMin = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_min) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_min) : config.axis_x_min : $$.d3.min(targets, function (t) {\n return $$.d3.min(t.values, function (v) {\n return v.x;\n });\n });\n};\nc3_chart_internal_fn.getXDomainMax = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_max) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_max) : config.axis_x_max : $$.d3.max(targets, function (t) {\n return $$.d3.max(t.values, function (v) {\n return v.x;\n });\n });\n};\nc3_chart_internal_fn.getXDomainPadding = function (domain) {\n var $$ = this,\n config = $$.config,\n diff = domain[1] - domain[0],\n maxDataCount,\n padding,\n paddingLeft,\n paddingRight;\n if ($$.isCategorized()) {\n padding = 0;\n } else if ($$.hasType('bar')) {\n maxDataCount = $$.getMaxDataCount();\n padding = maxDataCount > 1 ? diff / (maxDataCount - 1) / 2 : 0.5;\n } else {\n padding = diff * 0.01;\n }\n if (_typeof(config.axis_x_padding) === 'object' && notEmpty(config.axis_x_padding)) {\n paddingLeft = isValue(config.axis_x_padding.left) ? config.axis_x_padding.left : padding;\n paddingRight = isValue(config.axis_x_padding.right) ? config.axis_x_padding.right : padding;\n } else if (typeof config.axis_x_padding === 'number') {\n paddingLeft = paddingRight = config.axis_x_padding;\n } else {\n paddingLeft = paddingRight = padding;\n }\n return { left: paddingLeft, right: paddingRight };\n};\nc3_chart_internal_fn.getXDomain = function (targets) {\n var $$ = this,\n xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)],\n firstX = xDomain[0],\n lastX = xDomain[1],\n padding = $$.getXDomainPadding(xDomain),\n min = 0,\n max = 0;\n // show center of x domain if min and max are the same\n if (firstX - lastX === 0 && !$$.isCategorized()) {\n if ($$.isTimeSeries()) {\n firstX = new Date(firstX.getTime() * 0.5);\n lastX = new Date(lastX.getTime() * 1.5);\n } else {\n firstX = firstX === 0 ? 1 : firstX * 0.5;\n lastX = lastX === 0 ? -1 : lastX * 1.5;\n }\n }\n if (firstX || firstX === 0) {\n min = $$.isTimeSeries() ? new Date(firstX.getTime() - padding.left) : firstX - padding.left;\n }\n if (lastX || lastX === 0) {\n max = $$.isTimeSeries() ? new Date(lastX.getTime() + padding.right) : lastX + padding.right;\n }\n return [min, max];\n};\nc3_chart_internal_fn.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) {\n var $$ = this,\n config = $$.config;\n\n if (withUpdateOrgXDomain) {\n $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets)));\n $$.orgXDomain = $$.x.domain();\n if (config.zoom_enabled) {\n $$.zoom.scale($$.x).updateScaleExtent();\n }\n $$.subX.domain($$.x.domain());\n if ($$.brush) {\n $$.brush.scale($$.subX);\n }\n }\n if (withUpdateXDomain) {\n $$.x.domain(domain ? domain : !$$.brush || $$.brush.empty() ? $$.orgXDomain : $$.brush.extent());\n if (config.zoom_enabled) {\n $$.zoom.scale($$.x).updateScaleExtent();\n }\n }\n\n // Trim domain when too big by zoom mousemove event\n if (withTrim) {\n $$.x.domain($$.trimXDomain($$.x.orgDomain()));\n }\n\n return $$.x.domain();\n};\nc3_chart_internal_fn.trimXDomain = function (domain) {\n var zoomDomain = this.getZoomDomain(),\n min = zoomDomain[0],\n max = zoomDomain[1];\n if (domain[0] <= min) {\n domain[1] = +domain[1] + (min - domain[0]);\n domain[0] = min;\n }\n if (max <= domain[1]) {\n domain[0] = +domain[0] - (domain[1] - max);\n domain[1] = max;\n }\n return domain;\n};\n\nc3_chart_internal_fn.drag = function (mouse) {\n var $$ = this,\n config = $$.config,\n main = $$.main,\n d3 = $$.d3;\n var sx, sy, mx, my, minX, maxX, minY, maxY;\n\n if ($$.hasArcType()) {\n return;\n }\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n if (config.zoom_enabled && !$$.zoom.altDomain) {\n return;\n } // skip if zoomable because of conflict drag dehavior\n if (!config.data_selection_multiple) {\n return;\n } // skip when single selection because drag is used for multiple selection\n\n sx = $$.dragStart[0];\n sy = $$.dragStart[1];\n mx = mouse[0];\n my = mouse[1];\n minX = Math.min(sx, mx);\n maxX = Math.max(sx, mx);\n minY = config.data_selection_grouped ? $$.margin.top : Math.min(sy, my);\n maxY = config.data_selection_grouped ? $$.height : Math.max(sy, my);\n\n main.select('.' + CLASS.dragarea).attr('x', minX).attr('y', minY).attr('width', maxX - minX).attr('height', maxY - minY);\n // TODO: binary search when multiple xs\n main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).filter(function (d) {\n return config.data_selection_isselectable(d);\n }).each(function (d, i) {\n var shape = d3.select(this),\n isSelected = shape.classed(CLASS.SELECTED),\n isIncluded = shape.classed(CLASS.INCLUDED),\n _x,\n _y,\n _w,\n _h,\n toggle,\n isWithin = false,\n box;\n if (shape.classed(CLASS.circle)) {\n _x = shape.attr(\"cx\") * 1;\n _y = shape.attr(\"cy\") * 1;\n toggle = $$.togglePoint;\n isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY;\n } else if (shape.classed(CLASS.bar)) {\n box = getPathBox(this);\n _x = box.x;\n _y = box.y;\n _w = box.width;\n _h = box.height;\n toggle = $$.togglePath;\n isWithin = !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY);\n } else {\n // line/area selection not supported yet\n return;\n }\n if (isWithin ^ isIncluded) {\n shape.classed(CLASS.INCLUDED, !isIncluded);\n // TODO: included/unincluded callback here\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle.call($$, !isSelected, shape, d, i);\n }\n });\n};\n\nc3_chart_internal_fn.dragstart = function (mouse) {\n var $$ = this,\n config = $$.config;\n if ($$.hasArcType()) {\n return;\n }\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n $$.dragStart = mouse;\n $$.main.select('.' + CLASS.chart).append('rect').attr('class', CLASS.dragarea).style('opacity', 0.1);\n $$.dragging = true;\n};\n\nc3_chart_internal_fn.dragend = function () {\n var $$ = this,\n config = $$.config;\n if ($$.hasArcType()) {\n return;\n }\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n $$.main.select('.' + CLASS.dragarea).transition().duration(100).style('opacity', 0).remove();\n $$.main.selectAll('.' + CLASS.shape).classed(CLASS.INCLUDED, false);\n $$.dragging = false;\n};\n\nc3_chart_internal_fn.getYFormat = function (forArc) {\n var $$ = this,\n formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat,\n formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format;\n return function (v, ratio, id) {\n var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY;\n return format.call($$, v, ratio);\n };\n};\nc3_chart_internal_fn.yFormat = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y_tick_format ? config.axis_y_tick_format : $$.defaultValueFormat;\n return format(v);\n};\nc3_chart_internal_fn.y2Format = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y2_tick_format ? config.axis_y2_tick_format : $$.defaultValueFormat;\n return format(v);\n};\nc3_chart_internal_fn.defaultValueFormat = function (v) {\n return isValue(v) ? +v : \"\";\n};\nc3_chart_internal_fn.defaultArcValueFormat = function (v, ratio) {\n return (ratio * 100).toFixed(1) + '%';\n};\nc3_chart_internal_fn.dataLabelFormat = function (targetId) {\n var $$ = this,\n data_labels = $$.config.data_labels,\n format,\n defaultFormat = function defaultFormat(v) {\n return isValue(v) ? +v : \"\";\n };\n // find format according to axis id\n if (typeof data_labels.format === 'function') {\n format = data_labels.format;\n } else if (_typeof(data_labels.format) === 'object') {\n if (data_labels.format[targetId]) {\n format = data_labels.format[targetId] === true ? defaultFormat : data_labels.format[targetId];\n } else {\n format = function format() {\n return '';\n };\n }\n } else {\n format = defaultFormat;\n }\n return format;\n};\n\nc3_chart_internal_fn.initGrid = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n $$.grid = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid);\n if (config.grid_x_show) {\n $$.grid.append(\"g\").attr(\"class\", CLASS.xgrids);\n }\n if (config.grid_y_show) {\n $$.grid.append('g').attr('class', CLASS.ygrids);\n }\n if (config.grid_focus_show) {\n $$.grid.append('g').attr(\"class\", CLASS.xgridFocus).append('line').attr('class', CLASS.xgridFocus);\n }\n $$.xgrid = d3.selectAll([]);\n if (!config.grid_lines_front) {\n $$.initGridLines();\n }\n};\nc3_chart_internal_fn.initGridLines = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.gridLines = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid + ' ' + CLASS.gridLines);\n $$.gridLines.append('g').attr(\"class\", CLASS.xgridLines);\n $$.gridLines.append('g').attr('class', CLASS.ygridLines);\n $$.xgridLines = d3.selectAll([]);\n};\nc3_chart_internal_fn.updateXGrid = function (withoutUpdate) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n xgridData = $$.generateGridData(config.grid_x_type, $$.x),\n tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0;\n\n $$.xgridAttr = config.axis_rotated ? {\n 'x1': 0,\n 'x2': $$.width,\n 'y1': function y1(d) {\n return $$.x(d) - tickOffset;\n },\n 'y2': function y2(d) {\n return $$.x(d) - tickOffset;\n }\n } : {\n 'x1': function x1(d) {\n return $$.x(d) + tickOffset;\n },\n 'x2': function x2(d) {\n return $$.x(d) + tickOffset;\n },\n 'y1': 0,\n 'y2': $$.height\n };\n\n $$.xgrid = $$.main.select('.' + CLASS.xgrids).selectAll('.' + CLASS.xgrid).data(xgridData);\n $$.xgrid.enter().append('line').attr(\"class\", CLASS.xgrid);\n if (!withoutUpdate) {\n $$.xgrid.attr($$.xgridAttr).style(\"opacity\", function () {\n return +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1') === (config.axis_rotated ? $$.height : 0) ? 0 : 1;\n });\n }\n $$.xgrid.exit().remove();\n};\n\nc3_chart_internal_fn.updateYGrid = function () {\n var $$ = this,\n config = $$.config,\n gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks);\n $$.ygrid = $$.main.select('.' + CLASS.ygrids).selectAll('.' + CLASS.ygrid).data(gridValues);\n $$.ygrid.enter().append('line').attr('class', CLASS.ygrid);\n $$.ygrid.attr(\"x1\", config.axis_rotated ? $$.y : 0).attr(\"x2\", config.axis_rotated ? $$.y : $$.width).attr(\"y1\", config.axis_rotated ? 0 : $$.y).attr(\"y2\", config.axis_rotated ? $$.height : $$.y);\n $$.ygrid.exit().remove();\n $$.smoothLines($$.ygrid, 'grid');\n};\n\nc3_chart_internal_fn.gridTextAnchor = function (d) {\n return d.position ? d.position : \"end\";\n};\nc3_chart_internal_fn.gridTextDx = function (d) {\n return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4;\n};\nc3_chart_internal_fn.xGridTextX = function (d) {\n return d.position === 'start' ? -this.height : d.position === 'middle' ? -this.height / 2 : 0;\n};\nc3_chart_internal_fn.yGridTextX = function (d) {\n return d.position === 'start' ? 0 : d.position === 'middle' ? this.width / 2 : this.width;\n};\nc3_chart_internal_fn.updateGrid = function (duration) {\n var $$ = this,\n main = $$.main,\n config = $$.config,\n xgridLine,\n ygridLine,\n yv;\n\n // hide if arc type\n $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n if (config.grid_x_show) {\n $$.updateXGrid();\n }\n $$.xgridLines = main.select('.' + CLASS.xgridLines).selectAll('.' + CLASS.xgridLine).data(config.grid_x_lines);\n // enter\n xgridLine = $$.xgridLines.enter().append('g').attr(\"class\", function (d) {\n return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n xgridLine.append('line').style(\"opacity\", 0);\n xgridLine.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0);\n // udpate\n // done in d3.transition() of the end of this function\n // exit\n $$.xgridLines.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n\n // Y-Grid\n if (config.grid_y_show) {\n $$.updateYGrid();\n }\n $$.ygridLines = main.select('.' + CLASS.ygridLines).selectAll('.' + CLASS.ygridLine).data(config.grid_y_lines);\n // enter\n ygridLine = $$.ygridLines.enter().append('g').attr(\"class\", function (d) {\n return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n ygridLine.append('line').style(\"opacity\", 0);\n ygridLine.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0);\n // update\n yv = $$.yv.bind($$);\n $$.ygridLines.select('line').transition().duration(duration).attr(\"x1\", config.axis_rotated ? yv : 0).attr(\"x2\", config.axis_rotated ? yv : $$.width).attr(\"y1\", config.axis_rotated ? 0 : yv).attr(\"y2\", config.axis_rotated ? $$.height : yv).style(\"opacity\", 1);\n $$.ygridLines.select('text').transition().duration(duration).attr(\"x\", config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$)).attr(\"y\", yv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1);\n // exit\n $$.ygridLines.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n};\nc3_chart_internal_fn.redrawGrid = function (withTransition) {\n var $$ = this,\n config = $$.config,\n xv = $$.xv.bind($$),\n lines = $$.xgridLines.select('line'),\n texts = $$.xgridLines.select('text');\n return [(withTransition ? lines.transition() : lines).attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv).attr(\"y1\", config.axis_rotated ? xv : 0).attr(\"y2\", config.axis_rotated ? xv : $$.height).style(\"opacity\", 1), (withTransition ? texts.transition() : texts).attr(\"x\", config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$)).attr(\"y\", xv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1)];\n};\nc3_chart_internal_fn.showXGridFocus = function (selectedData) {\n var $$ = this,\n config = $$.config,\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus),\n xx = $$.xx.bind($$);\n if (!config.tooltip_show) {\n return;\n }\n // Hide when scatter plot exists\n if ($$.hasType('scatter') || $$.hasArcType()) {\n return;\n }\n focusEl.style(\"visibility\", \"visible\").data([dataToShow[0]]).attr(config.axis_rotated ? 'y1' : 'x1', xx).attr(config.axis_rotated ? 'y2' : 'x2', xx);\n $$.smoothLines(focusEl, 'grid');\n};\nc3_chart_internal_fn.hideXGridFocus = function () {\n this.main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n};\nc3_chart_internal_fn.updateXgridFocus = function () {\n var $$ = this,\n config = $$.config;\n $$.main.select('line.' + CLASS.xgridFocus).attr(\"x1\", config.axis_rotated ? 0 : -10).attr(\"x2\", config.axis_rotated ? $$.width : -10).attr(\"y1\", config.axis_rotated ? -10 : 0).attr(\"y2\", config.axis_rotated ? -10 : $$.height);\n};\nc3_chart_internal_fn.generateGridData = function (type, scale) {\n var $$ = this,\n gridData = [],\n xDomain,\n firstYear,\n lastYear,\n i,\n tickNum = $$.main.select(\".\" + CLASS.axisX).selectAll('.tick').size();\n if (type === 'year') {\n xDomain = $$.getXDomain();\n firstYear = xDomain[0].getFullYear();\n lastYear = xDomain[1].getFullYear();\n for (i = firstYear; i <= lastYear; i++) {\n gridData.push(new Date(i + '-01-01 00:00:00'));\n }\n } else {\n gridData = scale.ticks(10);\n if (gridData.length > tickNum) {\n // use only int\n gridData = gridData.filter(function (d) {\n return (\"\" + d).indexOf('.') < 0;\n });\n }\n }\n return gridData;\n};\nc3_chart_internal_fn.getGridFilterToRemove = function (params) {\n return params ? function (line) {\n var found = false;\n [].concat(params).forEach(function (param) {\n if ('value' in param && line.value === param.value || 'class' in param && line['class'] === param['class']) {\n found = true;\n }\n });\n return found;\n } : function () {\n return true;\n };\n};\nc3_chart_internal_fn.removeGridLines = function (params, forX) {\n var $$ = this,\n config = $$.config,\n toRemove = $$.getGridFilterToRemove(params),\n toShow = function toShow(line) {\n return !toRemove(line);\n },\n classLines = forX ? CLASS.xgridLines : CLASS.ygridLines,\n classLine = forX ? CLASS.xgridLine : CLASS.ygridLine;\n $$.main.select('.' + classLines).selectAll('.' + classLine).filter(toRemove).transition().duration(config.transition_duration).style('opacity', 0).remove();\n if (forX) {\n config.grid_x_lines = config.grid_x_lines.filter(toShow);\n } else {\n config.grid_y_lines = config.grid_y_lines.filter(toShow);\n }\n};\n\nc3_chart_internal_fn.initEventRect = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.eventRects).style('fill-opacity', 0);\n};\nc3_chart_internal_fn.redrawEventRect = function () {\n var $$ = this,\n config = $$.config,\n eventRectUpdate,\n maxDataCountTarget,\n isMultipleX = $$.isMultipleX();\n\n // rects for mouseover\n var eventRects = $$.main.select('.' + CLASS.eventRects).style('cursor', config.zoom_enabled ? config.axis_rotated ? 'ns-resize' : 'ew-resize' : null).classed(CLASS.eventRectsMultiple, isMultipleX).classed(CLASS.eventRectsSingle, !isMultipleX);\n\n // clear old rects\n eventRects.selectAll('.' + CLASS.eventRect).remove();\n\n // open as public variable\n $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);\n\n if (isMultipleX) {\n eventRectUpdate = $$.eventRect.data([0]);\n // enter : only one rect will be added\n $$.generateEventRectsForMultipleXs(eventRectUpdate.enter());\n // update\n $$.updateEventRect(eventRectUpdate);\n // exit : not needed because always only one rect exists\n } else {\n // Set data and update $$.eventRect\n maxDataCountTarget = $$.getMaxDataCountTarget($$.data.targets);\n eventRects.datum(maxDataCountTarget ? maxDataCountTarget.values : []);\n $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);\n eventRectUpdate = $$.eventRect.data(function (d) {\n return d;\n });\n // enter\n $$.generateEventRectsForSingleX(eventRectUpdate.enter());\n // update\n $$.updateEventRect(eventRectUpdate);\n // exit\n eventRectUpdate.exit().remove();\n }\n};\nc3_chart_internal_fn.updateEventRect = function (eventRectUpdate) {\n var $$ = this,\n config = $$.config,\n x,\n y,\n w,\n h,\n rectW,\n rectX;\n\n // set update selection if null\n eventRectUpdate = eventRectUpdate || $$.eventRect.data(function (d) {\n return d;\n });\n\n if ($$.isMultipleX()) {\n // TODO: rotated not supported yet\n x = 0;\n y = 0;\n w = $$.width;\n h = $$.height;\n } else {\n if (($$.isCustomX() || $$.isTimeSeries()) && !$$.isCategorized()) {\n\n // update index for x that is used by prevX and nextX\n $$.updateXs();\n\n rectW = function rectW(d) {\n var prevX = $$.getPrevX(d.index),\n nextX = $$.getNextX(d.index);\n\n // if there this is a single data point make the eventRect full width (or height)\n if (prevX === null && nextX === null) {\n return config.axis_rotated ? $$.height : $$.width;\n }\n\n if (prevX === null) {\n prevX = $$.x.domain()[0];\n }\n if (nextX === null) {\n nextX = $$.x.domain()[1];\n }\n\n return Math.max(0, ($$.x(nextX) - $$.x(prevX)) / 2);\n };\n rectX = function rectX(d) {\n var prevX = $$.getPrevX(d.index),\n nextX = $$.getNextX(d.index),\n thisX = $$.data.xs[d.id][d.index];\n\n // if there this is a single data point position the eventRect at 0\n if (prevX === null && nextX === null) {\n return 0;\n }\n\n if (prevX === null) {\n prevX = $$.x.domain()[0];\n }\n\n return ($$.x(thisX) + $$.x(prevX)) / 2;\n };\n } else {\n rectW = $$.getEventRectWidth();\n rectX = function rectX(d) {\n return $$.x(d.x) - rectW / 2;\n };\n }\n x = config.axis_rotated ? 0 : rectX;\n y = config.axis_rotated ? rectX : 0;\n w = config.axis_rotated ? $$.width : rectW;\n h = config.axis_rotated ? rectW : $$.height;\n }\n\n eventRectUpdate.attr('class', $$.classEvent.bind($$)).attr(\"x\", x).attr(\"y\", y).attr(\"width\", w).attr(\"height\", h);\n};\nc3_chart_internal_fn.generateEventRectsForSingleX = function (eventRectEnter) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n eventRectEnter.append(\"rect\").attr(\"class\", $$.classEvent.bind($$)).style(\"cursor\", config.data_selection_enabled && config.data_selection_grouped ? \"pointer\" : null).on('mouseover', function (d) {\n var index = d.index;\n\n if ($$.dragging || $$.flowing) {\n return;\n } // do nothing while dragging/flowing\n if ($$.hasArcType()) {\n return;\n }\n\n // Expand shapes for selection\n if (config.point_focus_expand_enabled) {\n $$.expandCircles(index, null, true);\n }\n $$.expandBars(index, null, true);\n\n // Call event handler\n $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n config.data_onmouseover.call($$.api, d);\n });\n }).on('mouseout', function (d) {\n var index = d.index;\n if (!$$.config) {\n return;\n } // chart is destroyed\n if ($$.hasArcType()) {\n return;\n }\n $$.hideXGridFocus();\n $$.hideTooltip();\n // Undo expanded shapes\n $$.unexpandCircles();\n $$.unexpandBars();\n // Call event handler\n $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n config.data_onmouseout.call($$.api, d);\n });\n }).on('mousemove', function (d) {\n var selectedData,\n index = d.index,\n eventRect = $$.svg.select('.' + CLASS.eventRect + '-' + index);\n\n if ($$.dragging || $$.flowing) {\n return;\n } // do nothing while dragging/flowing\n if ($$.hasArcType()) {\n return;\n }\n\n if ($$.isStepType(d) && $$.config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {\n index -= 1;\n }\n\n // Show tooltip\n selectedData = $$.filterTargetsToShow($$.data.targets).map(function (t) {\n return $$.addName($$.getValueOnIndex(t.values, index));\n });\n\n if (config.tooltip_grouped) {\n $$.showTooltip(selectedData, this);\n $$.showXGridFocus(selectedData);\n }\n\n if (config.tooltip_grouped && (!config.data_selection_enabled || config.data_selection_grouped)) {\n return;\n }\n\n $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function () {\n d3.select(this).classed(CLASS.EXPANDED, true);\n if (config.data_selection_enabled) {\n eventRect.style('cursor', config.data_selection_grouped ? 'pointer' : null);\n }\n if (!config.tooltip_grouped) {\n $$.hideXGridFocus();\n $$.hideTooltip();\n if (!config.data_selection_grouped) {\n $$.unexpandCircles(index);\n $$.unexpandBars(index);\n }\n }\n }).filter(function (d) {\n return $$.isWithinShape(this, d);\n }).each(function (d) {\n if (config.data_selection_enabled && (config.data_selection_grouped || config.data_selection_isselectable(d))) {\n eventRect.style('cursor', 'pointer');\n }\n if (!config.tooltip_grouped) {\n $$.showTooltip([d], this);\n $$.showXGridFocus([d]);\n if (config.point_focus_expand_enabled) {\n $$.expandCircles(index, d.id, true);\n }\n $$.expandBars(index, d.id, true);\n }\n });\n }).on('click', function (d) {\n var index = d.index;\n if ($$.hasArcType() || !$$.toggleShape) {\n return;\n }\n if ($$.cancelClick) {\n $$.cancelClick = false;\n return;\n }\n if ($$.isStepType(d) && config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {\n index -= 1;\n }\n $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n if (config.data_selection_grouped || $$.isWithinShape(this, d)) {\n $$.toggleShape(this, d, index);\n $$.config.data_onclick.call($$.api, d, this);\n }\n });\n }).call(config.data_selection_draggable && $$.drag ? d3.behavior.drag().origin(Object).on('drag', function () {\n $$.drag(d3.mouse(this));\n }).on('dragstart', function () {\n $$.dragstart(d3.mouse(this));\n }).on('dragend', function () {\n $$.dragend();\n }) : function () {});\n};\n\nc3_chart_internal_fn.generateEventRectsForMultipleXs = function (eventRectEnter) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n\n function mouseout() {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', null);\n $$.hideXGridFocus();\n $$.hideTooltip();\n $$.unexpandCircles();\n $$.unexpandBars();\n }\n\n eventRectEnter.append('rect').attr('x', 0).attr('y', 0).attr('width', $$.width).attr('height', $$.height).attr('class', CLASS.eventRect).on('mouseout', function () {\n if (!$$.config) {\n return;\n } // chart is destroyed\n if ($$.hasArcType()) {\n return;\n }\n mouseout();\n }).on('mousemove', function () {\n var targetsToShow = $$.filterTargetsToShow($$.data.targets);\n var mouse, closest, sameXData, selectedData;\n\n if ($$.dragging) {\n return;\n } // do nothing when dragging\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n if ($$.mouseover && (!closest || closest.id !== $$.mouseover.id)) {\n config.data_onmouseout.call($$.api, $$.mouseover);\n $$.mouseover = undefined;\n }\n\n if (!closest) {\n mouseout();\n return;\n }\n\n if ($$.isScatterType(closest) || !config.tooltip_grouped) {\n sameXData = [closest];\n } else {\n sameXData = $$.filterByX(targetsToShow, closest.x);\n }\n\n // show tooltip when cursor is close to some point\n selectedData = sameXData.map(function (d) {\n return $$.addName(d);\n });\n $$.showTooltip(selectedData, this);\n\n // expand points\n if (config.point_focus_expand_enabled) {\n $$.expandCircles(closest.index, closest.id, true);\n }\n $$.expandBars(closest.index, closest.id, true);\n\n // Show xgrid focus line\n $$.showXGridFocus(selectedData);\n\n // Show cursor as pointer if point is close to mouse position\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer');\n if (!$$.mouseover) {\n config.data_onmouseover.call($$.api, closest);\n $$.mouseover = closest;\n }\n }\n }).on('click', function () {\n var targetsToShow = $$.filterTargetsToShow($$.data.targets);\n var mouse, closest;\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n if (!closest) {\n return;\n }\n // select if selection enabled\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(closest.id)).selectAll('.' + CLASS.shape + '-' + closest.index).each(function () {\n if (config.data_selection_grouped || $$.isWithinShape(this, closest)) {\n $$.toggleShape(this, closest, closest.index);\n $$.config.data_onclick.call($$.api, closest, this);\n }\n });\n }\n }).call(config.data_selection_draggable && $$.drag ? d3.behavior.drag().origin(Object).on('drag', function () {\n $$.drag(d3.mouse(this));\n }).on('dragstart', function () {\n $$.dragstart(d3.mouse(this));\n }).on('dragend', function () {\n $$.dragend();\n }) : function () {});\n};\nc3_chart_internal_fn.dispatchEvent = function (type, index, mouse) {\n var $$ = this,\n selector = '.' + CLASS.eventRect + (!$$.isMultipleX() ? '-' + index : ''),\n eventRect = $$.main.select(selector).node(),\n box = eventRect.getBoundingClientRect(),\n x = box.left + (mouse ? mouse[0] : 0),\n y = box.top + (mouse ? mouse[1] : 0),\n event = document.createEvent(\"MouseEvents\");\n\n event.initMouseEvent(type, true, true, window, 0, x, y, x, y, false, false, false, false, 0, null);\n eventRect.dispatchEvent(event);\n};\n\nc3_chart_internal_fn.initLegend = function () {\n var $$ = this;\n $$.legendItemTextBox = {};\n $$.legendHasRendered = false;\n $$.legend = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('legend'));\n if (!$$.config.legend_show) {\n $$.legend.style('visibility', 'hidden');\n $$.hiddenLegendIds = $$.mapToIds($$.data.targets);\n return;\n }\n // MEMO: call here to update legend box and tranlate for all\n // MEMO: translate will be upated by this, so transform not needed in updateLegend()\n $$.updateLegendWithDefaults();\n};\nc3_chart_internal_fn.updateLegendWithDefaults = function () {\n var $$ = this;\n $$.updateLegend($$.mapToIds($$.data.targets), { withTransform: false, withTransitionForTransform: false, withTransition: false });\n};\nc3_chart_internal_fn.updateSizeForLegend = function (legendHeight, legendWidth) {\n var $$ = this,\n config = $$.config,\n insetLegendPosition = {\n top: $$.isLegendTop ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5 : $$.currentHeight - legendHeight - $$.getCurrentPaddingBottom() - config.legend_inset_y,\n left: $$.isLegendLeft ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5 : $$.currentWidth - legendWidth - $$.getCurrentPaddingRight() - config.legend_inset_x + 0.5\n };\n\n $$.margin3 = {\n top: $$.isLegendRight ? 0 : $$.isLegendInset ? insetLegendPosition.top : $$.currentHeight - legendHeight,\n right: NaN,\n bottom: 0,\n left: $$.isLegendRight ? $$.currentWidth - legendWidth : $$.isLegendInset ? insetLegendPosition.left : 0\n };\n};\nc3_chart_internal_fn.transformLegend = function (withTransition) {\n var $$ = this;\n (withTransition ? $$.legend.transition() : $$.legend).attr(\"transform\", $$.getTranslate('legend'));\n};\nc3_chart_internal_fn.updateLegendStep = function (step) {\n this.legendStep = step;\n};\nc3_chart_internal_fn.updateLegendItemWidth = function (w) {\n this.legendItemWidth = w;\n};\nc3_chart_internal_fn.updateLegendItemHeight = function (h) {\n this.legendItemHeight = h;\n};\nc3_chart_internal_fn.getLegendWidth = function () {\n var $$ = this;\n return $$.config.legend_show ? $$.isLegendRight || $$.isLegendInset ? $$.legendItemWidth * ($$.legendStep + 1) : $$.currentWidth : 0;\n};\nc3_chart_internal_fn.getLegendHeight = function () {\n var $$ = this,\n h = 0;\n if ($$.config.legend_show) {\n if ($$.isLegendRight) {\n h = $$.currentHeight;\n } else {\n h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1);\n }\n }\n return h;\n};\nc3_chart_internal_fn.opacityForLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 1;\n};\nc3_chart_internal_fn.opacityForUnfocusedLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3;\n};\nc3_chart_internal_fn.toggleFocusLegend = function (targetIds, focus) {\n var $$ = this;\n targetIds = $$.mapToTargetIds(targetIds);\n $$.legend.selectAll('.' + CLASS.legendItem).filter(function (id) {\n return targetIds.indexOf(id) >= 0;\n }).classed(CLASS.legendItemFocused, focus).transition().duration(100).style('opacity', function () {\n var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend;\n return opacity.call($$, $$.d3.select(this));\n });\n};\nc3_chart_internal_fn.revertLegend = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemFocused, false).transition().duration(100).style('opacity', function () {\n return $$.opacityForLegend(d3.select(this));\n });\n};\nc3_chart_internal_fn.showLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n if (!config.legend_show) {\n config.legend_show = true;\n $$.legend.style('visibility', 'visible');\n if (!$$.legendHasRendered) {\n $$.updateLegendWithDefaults();\n }\n }\n $$.removeHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('visibility', 'visible').transition().style('opacity', function () {\n return $$.opacityForLegend($$.d3.select(this));\n });\n};\nc3_chart_internal_fn.hideLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n if (config.legend_show && isEmpty(targetIds)) {\n config.legend_show = false;\n $$.legend.style('visibility', 'hidden');\n }\n $$.addHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('opacity', 0).style('visibility', 'hidden');\n};\nc3_chart_internal_fn.clearLegendItemTextBoxCache = function () {\n this.legendItemTextBox = {};\n};\nc3_chart_internal_fn.updateLegend = function (targetIds, options, transitions) {\n var $$ = this,\n config = $$.config;\n var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect, x1ForLegendTile, x2ForLegendTile, yForLegendTile;\n var paddingTop = 4,\n paddingRight = 10,\n maxWidth = 0,\n maxHeight = 0,\n posMin = 10,\n tileWidth = config.legend_item_tile_width + 5;\n var l,\n totalLength = 0,\n offsets = {},\n widths = {},\n heights = {},\n margins = [0],\n steps = {},\n step = 0;\n var withTransition, withTransitionForTransform;\n var texts, rects, tiles, background;\n\n // Skip elements when their name is set to null\n targetIds = targetIds.filter(function (id) {\n return !isDefined(config.data_names[id]) || config.data_names[id] !== null;\n });\n\n options = options || {};\n withTransition = getOption(options, \"withTransition\", true);\n withTransitionForTransform = getOption(options, \"withTransitionForTransform\", true);\n\n function getTextBox(textElement, id) {\n if (!$$.legendItemTextBox[id]) {\n $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem, textElement);\n }\n return $$.legendItemTextBox[id];\n }\n\n function updatePositions(textElement, id, index) {\n var reset = index === 0,\n isLast = index === targetIds.length - 1,\n box = getTextBox(textElement, id),\n itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight) + config.legend_padding,\n itemHeight = box.height + paddingTop,\n itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth,\n areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(),\n margin,\n maxLength;\n\n // MEMO: care about condifion of step, totalLength\n function updateValues(id, withoutStep) {\n if (!withoutStep) {\n margin = (areaLength - totalLength - itemLength) / 2;\n if (margin < posMin) {\n margin = (areaLength - itemLength) / 2;\n totalLength = 0;\n step++;\n }\n }\n steps[id] = step;\n margins[step] = $$.isLegendInset ? 10 : margin;\n offsets[id] = totalLength;\n totalLength += itemLength;\n }\n\n if (reset) {\n totalLength = 0;\n step = 0;\n maxWidth = 0;\n maxHeight = 0;\n }\n\n if (config.legend_show && !$$.isLegendToShow(id)) {\n widths[id] = heights[id] = steps[id] = offsets[id] = 0;\n return;\n }\n\n widths[id] = itemWidth;\n heights[id] = itemHeight;\n\n if (!maxWidth || itemWidth >= maxWidth) {\n maxWidth = itemWidth;\n }\n if (!maxHeight || itemHeight >= maxHeight) {\n maxHeight = itemHeight;\n }\n maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth;\n\n if (config.legend_equally) {\n Object.keys(widths).forEach(function (id) {\n widths[id] = maxWidth;\n });\n Object.keys(heights).forEach(function (id) {\n heights[id] = maxHeight;\n });\n margin = (areaLength - maxLength * targetIds.length) / 2;\n if (margin < posMin) {\n totalLength = 0;\n step = 0;\n targetIds.forEach(function (id) {\n updateValues(id);\n });\n } else {\n updateValues(id, true);\n }\n } else {\n updateValues(id);\n }\n }\n\n if ($$.isLegendInset) {\n step = config.legend_inset_step ? config.legend_inset_step : targetIds.length;\n $$.updateLegendStep(step);\n }\n\n if ($$.isLegendRight) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id];\n };\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else if ($$.isLegendInset) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id] + 10;\n };\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else {\n xForLegend = function xForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n yForLegend = function yForLegend(id) {\n return maxHeight * steps[id];\n };\n }\n xForLegendText = function xForLegendText(id, i) {\n return xForLegend(id, i) + 4 + config.legend_item_tile_width;\n };\n yForLegendText = function yForLegendText(id, i) {\n return yForLegend(id, i) + 9;\n };\n xForLegendRect = function xForLegendRect(id, i) {\n return xForLegend(id, i);\n };\n yForLegendRect = function yForLegendRect(id, i) {\n return yForLegend(id, i) - 5;\n };\n x1ForLegendTile = function x1ForLegendTile(id, i) {\n return xForLegend(id, i) - 2;\n };\n x2ForLegendTile = function x2ForLegendTile(id, i) {\n return xForLegend(id, i) - 2 + config.legend_item_tile_width;\n };\n yForLegendTile = function yForLegendTile(id, i) {\n return yForLegend(id, i) + 4;\n };\n\n // Define g for legend area\n l = $$.legend.selectAll('.' + CLASS.legendItem).data(targetIds).enter().append('g').attr('class', function (id) {\n return $$.generateClass(CLASS.legendItem, id);\n }).style('visibility', function (id) {\n return $$.isLegendToShow(id) ? 'visible' : 'hidden';\n }).style('cursor', 'pointer').on('click', function (id) {\n if (config.legend_item_onclick) {\n config.legend_item_onclick.call($$, id);\n } else {\n if ($$.d3.event.altKey) {\n $$.api.hide();\n $$.api.show(id);\n } else {\n $$.api.toggle(id);\n $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert();\n }\n }\n }).on('mouseover', function (id) {\n if (config.legend_item_onmouseover) {\n config.legend_item_onmouseover.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, true);\n if (!$$.transiting && $$.isTargetToShow(id)) {\n $$.api.focus(id);\n }\n }\n }).on('mouseout', function (id) {\n if (config.legend_item_onmouseout) {\n config.legend_item_onmouseout.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, false);\n $$.api.revert();\n }\n });\n l.append('text').text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n }).each(function (id, i) {\n updatePositions(this, id, i);\n }).style(\"pointer-events\", \"none\").attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText);\n l.append('rect').attr(\"class\", CLASS.legendItemEvent).style('fill-opacity', 0).attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect);\n l.append('line').attr('class', CLASS.legendItemTile).style('stroke', $$.color).style(\"pointer-events\", \"none\").attr('x1', $$.isLegendRight || $$.isLegendInset ? x1ForLegendTile : -200).attr('y1', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('x2', $$.isLegendRight || $$.isLegendInset ? x2ForLegendTile : -200).attr('y2', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('stroke-width', config.legend_item_tile_height);\n\n // Set background for inset legend\n background = $$.legend.select('.' + CLASS.legendBackground + ' rect');\n if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) {\n background = $$.legend.insert('g', '.' + CLASS.legendItem).attr(\"class\", CLASS.legendBackground).append('rect');\n }\n\n texts = $$.legend.selectAll('text').data(targetIds).text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n } // MEMO: needed for update\n ).each(function (id, i) {\n updatePositions(this, id, i);\n });\n (withTransition ? texts.transition() : texts).attr('x', xForLegendText).attr('y', yForLegendText);\n\n rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent).data(targetIds);\n (withTransition ? rects.transition() : rects).attr('width', function (id) {\n return widths[id];\n }).attr('height', function (id) {\n return heights[id];\n }).attr('x', xForLegendRect).attr('y', yForLegendRect);\n\n tiles = $$.legend.selectAll('line.' + CLASS.legendItemTile).data(targetIds);\n (withTransition ? tiles.transition() : tiles).style('stroke', $$.color).attr('x1', x1ForLegendTile).attr('y1', yForLegendTile).attr('x2', x2ForLegendTile).attr('y2', yForLegendTile);\n\n if (background) {\n (withTransition ? background.transition() : background).attr('height', $$.getLegendHeight() - 12).attr('width', maxWidth * (step + 1) + 10);\n }\n\n // toggle legend state\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemHidden, function (id) {\n return !$$.isTargetToShow(id);\n });\n\n // Update all to reflect change of legend\n $$.updateLegendItemWidth(maxWidth);\n $$.updateLegendItemHeight(maxHeight);\n $$.updateLegendStep(step);\n // Update size and scale\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize();\n // Update g positions\n $$.transformAll(withTransitionForTransform, transitions);\n $$.legendHasRendered = true;\n};\n\nc3_chart_internal_fn.initRegion = function () {\n var $$ = this;\n $$.region = $$.main.append('g').attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.regions);\n};\nc3_chart_internal_fn.updateRegion = function (duration) {\n var $$ = this,\n config = $$.config;\n\n // hide if arc type\n $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n $$.mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region).data(config.regions);\n $$.mainRegion.enter().append('g').append('rect').style(\"fill-opacity\", 0);\n $$.mainRegion.attr('class', $$.classRegion.bind($$));\n $$.mainRegion.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n};\nc3_chart_internal_fn.redrawRegion = function (withTransition) {\n var $$ = this,\n regions = $$.mainRegion.selectAll('rect').each(function () {\n // data is binded to g and it's not transferred to rect (child node) automatically,\n // then data of each rect has to be updated manually.\n // TODO: there should be more efficient way to solve this?\n var parentData = $$.d3.select(this.parentNode).datum();\n $$.d3.select(this).datum(parentData);\n }),\n x = $$.regionX.bind($$),\n y = $$.regionY.bind($$),\n w = $$.regionWidth.bind($$),\n h = $$.regionHeight.bind($$);\n return [(withTransition ? regions.transition() : regions).attr(\"x\", x).attr(\"y\", y).attr(\"width\", w).attr(\"height\", h).style(\"fill-opacity\", function (d) {\n return isValue(d.opacity) ? d.opacity : 0.1;\n })];\n};\nc3_chart_internal_fn.regionX = function (d) {\n var $$ = this,\n config = $$.config,\n xPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n xPos = config.axis_rotated ? 'start' in d ? yScale(d.start) : 0 : 0;\n } else {\n xPos = config.axis_rotated ? 0 : 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0;\n }\n return xPos;\n};\nc3_chart_internal_fn.regionY = function (d) {\n var $$ = this,\n config = $$.config,\n yPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n yPos = config.axis_rotated ? 0 : 'end' in d ? yScale(d.end) : 0;\n } else {\n yPos = config.axis_rotated ? 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0 : 0;\n }\n return yPos;\n};\nc3_chart_internal_fn.regionWidth = function (d) {\n var $$ = this,\n config = $$.config,\n start = $$.regionX(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? 'end' in d ? yScale(d.end) : $$.width : $$.width;\n } else {\n end = config.axis_rotated ? $$.width : 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.width;\n }\n return end < start ? 0 : end - start;\n};\nc3_chart_internal_fn.regionHeight = function (d) {\n var $$ = this,\n config = $$.config,\n start = this.regionY(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? $$.height : 'start' in d ? yScale(d.start) : $$.height;\n } else {\n end = config.axis_rotated ? 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.height : $$.height;\n }\n return end < start ? 0 : end - start;\n};\nc3_chart_internal_fn.isRegionOnX = function (d) {\n return !d.axis || d.axis === 'x';\n};\n\nc3_chart_internal_fn.getScale = function (min, max, forTimeseries) {\n return (forTimeseries ? this.d3.time.scale() : this.d3.scale.linear()).range([min, max]);\n};\nc3_chart_internal_fn.getX = function (min, max, domain, offset) {\n var $$ = this,\n scale = $$.getScale(min, max, $$.isTimeSeries()),\n _scale = domain ? scale.domain(domain) : scale,\n key;\n // Define customized scale if categorized axis\n if ($$.isCategorized()) {\n offset = offset || function () {\n return 0;\n };\n scale = function scale(d, raw) {\n var v = _scale(d) + offset(d);\n return raw ? v : Math.ceil(v);\n };\n } else {\n scale = function scale(d, raw) {\n var v = _scale(d);\n return raw ? v : Math.ceil(v);\n };\n }\n // define functions\n for (key in _scale) {\n scale[key] = _scale[key];\n }\n scale.orgDomain = function () {\n return _scale.domain();\n };\n // define custom domain() for categorized axis\n if ($$.isCategorized()) {\n scale.domain = function (domain) {\n if (!arguments.length) {\n domain = this.orgDomain();\n return [domain[0], domain[1] + 1];\n }\n _scale.domain(domain);\n return scale;\n };\n }\n return scale;\n};\nc3_chart_internal_fn.getY = function (min, max, domain) {\n var scale = this.getScale(min, max, this.isTimeSeriesY());\n if (domain) {\n scale.domain(domain);\n }\n return scale;\n};\nc3_chart_internal_fn.getYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.y2 : this.y;\n};\nc3_chart_internal_fn.getSubYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY;\n};\nc3_chart_internal_fn.updateScales = function () {\n var $$ = this,\n config = $$.config,\n forInit = !$$.x;\n // update edges\n $$.xMin = config.axis_rotated ? 1 : 0;\n $$.xMax = config.axis_rotated ? $$.height : $$.width;\n $$.yMin = config.axis_rotated ? 0 : $$.height;\n $$.yMax = config.axis_rotated ? $$.width : 1;\n $$.subXMin = $$.xMin;\n $$.subXMax = $$.xMax;\n $$.subYMin = config.axis_rotated ? 0 : $$.height2;\n $$.subYMax = config.axis_rotated ? $$.width2 : 1;\n // update scales\n $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () {\n return $$.xAxis.tickOffset();\n });\n $$.y = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y_default : $$.y.domain());\n $$.y2 = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y2_default : $$.y2.domain());\n $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) {\n return d % 1 ? 0 : $$.subXAxis.tickOffset();\n });\n $$.subY = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y_default : $$.subY.domain());\n $$.subY2 = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y2_default : $$.subY2.domain());\n // update axes\n $$.xAxisTickFormat = $$.axis.getXAxisTickFormat();\n $$.xAxisTickValues = $$.axis.getXAxisTickValues();\n $$.yAxisTickValues = $$.axis.getYAxisTickValues();\n $$.y2AxisTickValues = $$.axis.getY2AxisTickValues();\n\n $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.yAxis = $$.axis.getYAxis($$.y, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, config.axis_y_tick_outer);\n $$.y2Axis = $$.axis.getYAxis($$.y2, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, config.axis_y2_tick_outer);\n\n // Set initialized scales to brush and zoom\n if (!forInit) {\n if ($$.brush) {\n $$.brush.scale($$.subX);\n }\n if (config.zoom_enabled) {\n $$.zoom.scale($$.x);\n }\n }\n // update for arc\n if ($$.updateArc) {\n $$.updateArc();\n }\n};\n\nc3_chart_internal_fn.selectPoint = function (target, d, i) {\n var $$ = this,\n config = $$.config,\n cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$),\n cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$),\n r = $$.pointSelectR.bind($$);\n config.data_onselected.call($$.api, d, target.node());\n // add selected-circle on low layer g\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).data([d]).enter().append('circle').attr(\"class\", function () {\n return $$.generateClass(CLASS.selectedCircle, i);\n }).attr(\"cx\", cx).attr(\"cy\", cy).attr(\"stroke\", function () {\n return $$.color(d);\n }).attr(\"r\", function (d) {\n return $$.pointSelectR(d) * 1.4;\n }).transition().duration(100).attr(\"r\", r);\n};\nc3_chart_internal_fn.unselectPoint = function (target, d, i) {\n var $$ = this;\n $$.config.data_onunselected.call($$.api, d, target.node());\n // remove selected-circle from low layer g\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).transition().duration(100).attr('r', 0).remove();\n};\nc3_chart_internal_fn.togglePoint = function (selected, target, d, i) {\n selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i);\n};\nc3_chart_internal_fn.selectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onselected.call($$, d, target.node());\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.d3.rgb($$.color(d)).brighter(0.75);\n });\n }\n};\nc3_chart_internal_fn.unselectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onunselected.call($$, d, target.node());\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.color(d);\n });\n }\n};\nc3_chart_internal_fn.togglePath = function (selected, target, d, i) {\n selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i);\n};\nc3_chart_internal_fn.getToggle = function (that, d) {\n var $$ = this,\n toggle;\n if (that.nodeName === 'circle') {\n if ($$.isStepType(d)) {\n // circle is hidden in step chart, so treat as within the click area\n toggle = function toggle() {}; // TODO: how to select step chart?\n } else {\n toggle = $$.togglePoint;\n }\n } else if (that.nodeName === 'path') {\n toggle = $$.togglePath;\n }\n return toggle;\n};\nc3_chart_internal_fn.toggleShape = function (that, d, i) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n shape = d3.select(that),\n isSelected = shape.classed(CLASS.SELECTED),\n toggle = $$.getToggle(that, d).bind($$);\n\n if (config.data_selection_enabled && config.data_selection_isselectable(d)) {\n if (!config.data_selection_multiple) {\n $$.main.selectAll('.' + CLASS.shapes + (config.data_selection_grouped ? $$.getTargetSelectorSuffix(d.id) : \"\")).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this);\n if (shape.classed(CLASS.SELECTED)) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n });\n }\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle(!isSelected, shape, d, i);\n }\n};\n\nc3_chart_internal_fn.initBar = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars);\n};\nc3_chart_internal_fn.updateTargetsForBar = function (targets) {\n var $$ = this,\n config = $$.config,\n mainBarUpdate,\n mainBarEnter,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainBarUpdate = $$.main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets).attr('class', function (d) {\n return classChartBar(d) + classFocus(d);\n });\n mainBarEnter = mainBarUpdate.enter().append('g').attr('class', classChartBar).style(\"pointer-events\", \"none\");\n // Bars for each data\n mainBarEnter.append('g').attr(\"class\", classBars).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n });\n};\nc3_chart_internal_fn.updateBar = function (durationForExit) {\n var $$ = this,\n barData = $$.barData.bind($$),\n classBar = $$.classBar.bind($$),\n initialOpacity = $$.initialOpacity.bind($$),\n color = function color(d) {\n return $$.color(d.id);\n };\n $$.mainBar = $$.main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data(barData);\n $$.mainBar.enter().append('path').attr(\"class\", classBar).style(\"stroke\", color).style(\"fill\", color);\n $$.mainBar.style(\"opacity\", initialOpacity);\n $$.mainBar.exit().transition().duration(durationForExit).remove();\n};\nc3_chart_internal_fn.redrawBar = function (drawBar, withTransition) {\n return [(withTransition ? this.mainBar.transition(Math.random().toString()) : this.mainBar).attr('d', drawBar).style(\"stroke\", this.color).style(\"fill\", this.color).style(\"opacity\", 1)];\n};\nc3_chart_internal_fn.getBarW = function (axis, barTargetsNum) {\n var $$ = this,\n config = $$.config,\n w = typeof config.bar_width === 'number' ? config.bar_width : barTargetsNum ? axis.tickInterval() * config.bar_width_ratio / barTargetsNum : 0;\n return config.bar_width_max && w > config.bar_width_max ? config.bar_width_max : w;\n};\nc3_chart_internal_fn.getBars = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : ''));\n};\nc3_chart_internal_fn.expandBars = function (i, id, reset) {\n var $$ = this;\n if (reset) {\n $$.unexpandBars();\n }\n $$.getBars(i, id).classed(CLASS.EXPANDED, true);\n};\nc3_chart_internal_fn.unexpandBars = function (i) {\n var $$ = this;\n $$.getBars(i).classed(CLASS.EXPANDED, false);\n};\nc3_chart_internal_fn.generateDrawBar = function (barIndices, isSub) {\n var $$ = this,\n config = $$.config,\n getPoints = $$.generateGetBarPoints(barIndices, isSub);\n return function (d, i) {\n // 4 points that make a bar\n var points = getPoints(d, i);\n\n // switch points if axis is rotated, not applicable for sub chart\n var indexX = config.axis_rotated ? 1 : 0;\n var indexY = config.axis_rotated ? 0 : 1;\n\n var path = 'M ' + points[0][indexX] + ',' + points[0][indexY] + ' ' + 'L' + points[1][indexX] + ',' + points[1][indexY] + ' ' + 'L' + points[2][indexX] + ',' + points[2][indexY] + ' ' + 'L' + points[3][indexX] + ',' + points[3][indexY] + ' ' + 'z';\n\n return path;\n };\n};\nc3_chart_internal_fn.generateGetBarPoints = function (barIndices, isSub) {\n var $$ = this,\n axis = isSub ? $$.subXAxis : $$.xAxis,\n barTargetsNum = barIndices.__max__ + 1,\n barW = $$.getBarW(axis, barTargetsNum),\n barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub),\n barY = $$.getShapeY(!!isSub),\n barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub),\n barSpaceOffset = barW * ($$.config.bar_space / 2),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = barOffset(d, i) || y0,\n // offset is for stacked bar chart\n posX = barX(d),\n posY = barY(d);\n // fix posY not to overflow opposite quadrant\n if ($$.config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n }\n // 4 points that make a bar\n return [[posX + barSpaceOffset, offset], [posX + barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, offset]];\n };\n};\nc3_chart_internal_fn.isWithinBar = function (that) {\n var mouse = this.d3.mouse(that),\n box = that.getBoundingClientRect(),\n seg0 = that.pathSegList.getItem(0),\n seg1 = that.pathSegList.getItem(1),\n x = Math.min(seg0.x, seg1.x),\n y = Math.min(seg0.y, seg1.y),\n w = box.width,\n h = box.height,\n offset = 2,\n sx = x - offset,\n ex = x + w + offset,\n sy = y + h + offset,\n ey = y - offset;\n return sx < mouse[0] && mouse[0] < ex && ey < mouse[1] && mouse[1] < sy;\n};\n\nc3_chart_internal_fn.getShapeIndices = function (typeFilter) {\n var $$ = this,\n config = $$.config,\n indices = {},\n i = 0,\n j,\n k;\n $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) {\n for (j = 0; j < config.data_groups.length; j++) {\n if (config.data_groups[j].indexOf(d.id) < 0) {\n continue;\n }\n for (k = 0; k < config.data_groups[j].length; k++) {\n if (config.data_groups[j][k] in indices) {\n indices[d.id] = indices[config.data_groups[j][k]];\n break;\n }\n }\n }\n if (isUndefined(indices[d.id])) {\n indices[d.id] = i++;\n }\n });\n indices.__max__ = i - 1;\n return indices;\n};\nc3_chart_internal_fn.getShapeX = function (offset, targetsNum, indices, isSub) {\n var $$ = this,\n scale = isSub ? $$.subX : $$.x;\n return function (d) {\n var index = d.id in indices ? indices[d.id] : 0;\n return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0;\n };\n};\nc3_chart_internal_fn.getShapeY = function (isSub) {\n var $$ = this;\n return function (d) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id);\n return scale(d.value);\n };\n};\nc3_chart_internal_fn.getShapeOffset = function (typeFilter, indices, isSub) {\n var $$ = this,\n targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))),\n targetIds = targets.map(function (t) {\n return t.id;\n });\n return function (d, i) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id),\n y0 = scale(0),\n offset = y0;\n targets.forEach(function (t) {\n var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values;\n if (t.id === d.id || indices[t.id] !== indices[d.id]) {\n return;\n }\n if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) {\n // check if the x values line up\n if (typeof values[i] === 'undefined' || +values[i].x !== +d.x) {\n // \"+\" for timeseries\n // if not, try to find the value that does line up\n i = -1;\n values.forEach(function (v, j) {\n if (v.x === d.x) {\n i = j;\n }\n });\n }\n if (i in values && values[i].value * d.value >= 0) {\n offset += scale(values[i].value) - y0;\n }\n }\n });\n return offset;\n };\n};\nc3_chart_internal_fn.isWithinShape = function (that, d) {\n var $$ = this,\n shape = $$.d3.select(that),\n isWithin;\n if (!$$.isTargetToShow(d.id)) {\n isWithin = false;\n } else if (that.nodeName === 'circle') {\n isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);\n } else if (that.nodeName === 'path') {\n isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar(that) : true;\n }\n return isWithin;\n};\n\nc3_chart_internal_fn.getInterpolate = function (d) {\n var $$ = this,\n interpolation = $$.isInterpolationType($$.config.spline_interpolation_type) ? $$.config.spline_interpolation_type : 'cardinal';\n return $$.isSplineType(d) ? interpolation : $$.isStepType(d) ? $$.config.line_step_type : \"linear\";\n};\n\nc3_chart_internal_fn.initLine = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines);\n};\nc3_chart_internal_fn.updateTargetsForLine = function (targets) {\n var $$ = this,\n config = $$.config,\n mainLineUpdate,\n mainLineEnter,\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$),\n classCircles = $$.classCircles.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainLineUpdate = $$.main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets).attr('class', function (d) {\n return classChartLine(d) + classFocus(d);\n });\n mainLineEnter = mainLineUpdate.enter().append('g').attr('class', classChartLine).style('opacity', 0).style(\"pointer-events\", \"none\");\n // Lines for each data\n mainLineEnter.append('g').attr(\"class\", classLines);\n // Areas\n mainLineEnter.append('g').attr('class', classAreas);\n // Circles for each data point on lines\n mainLineEnter.append('g').attr(\"class\", function (d) {\n return $$.generateClass(CLASS.selectedCircles, d.id);\n });\n mainLineEnter.append('g').attr(\"class\", classCircles).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n });\n // Update date for selected circles\n targets.forEach(function (t) {\n $$.main.selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id)).selectAll('.' + CLASS.selectedCircle).each(function (d) {\n d.value = t.values[d.index].value;\n });\n });\n // MEMO: can not keep same color...\n //mainLineUpdate.exit().remove();\n};\nc3_chart_internal_fn.updateLine = function (durationForExit) {\n var $$ = this;\n $$.mainLine = $$.main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n $$.mainLine.enter().append('path').attr('class', $$.classLine.bind($$)).style(\"stroke\", $$.color);\n $$.mainLine.style(\"opacity\", $$.initialOpacity.bind($$)).style('shape-rendering', function (d) {\n return $$.isStepType(d) ? 'crispEdges' : '';\n }).attr('transform', null);\n $$.mainLine.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n};\nc3_chart_internal_fn.redrawLine = function (drawLine, withTransition) {\n return [(withTransition ? this.mainLine.transition(Math.random().toString()) : this.mainLine).attr(\"d\", drawLine).style(\"stroke\", this.color).style(\"opacity\", 1)];\n};\nc3_chart_internal_fn.generateDrawLine = function (lineIndices, isSub) {\n var $$ = this,\n config = $$.config,\n line = $$.d3.svg.line(),\n getPoints = $$.generateGetLinePoints(lineIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n yValue = function yValue(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n line = config.axis_rotated ? line.x(yValue).y(xValue) : line.x(xValue).y(yValue);\n if (!config.line_connectNull) {\n line = line.defined(function (d) {\n return d.value != null;\n });\n }\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x = isSub ? $$.x : $$.subX,\n y = yScaleGetter.call($$, d.id),\n x0 = 0,\n y0 = 0,\n path;\n if ($$.isLineType(d)) {\n if (config.data_regions[d.id]) {\n path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]);\n } else {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n path = line.interpolate($$.getInterpolate(d))(values);\n }\n } else {\n if (values[0]) {\n x0 = x(values[0].x);\n y0 = y(values[0].value);\n }\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n return path ? path : \"M 0 0\";\n };\n};\nc3_chart_internal_fn.generateGetLinePoints = function (lineIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n lineTargetsNum = lineIndices.__max__ + 1,\n x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = lineOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d);\n // fix posY not to overflow opposite quadrant\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n }\n // 1 point that marks the line position\n return [[posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)] // needed for compatibility\n ];\n };\n};\n\nc3_chart_internal_fn.lineWithRegions = function (d, x, y, _regions) {\n var $$ = this,\n config = $$.config,\n prev = -1,\n i,\n j,\n s = \"M\",\n sWithRegion,\n xp,\n yp,\n dx,\n dy,\n dd,\n diff,\n diffx2,\n xOffset = $$.isCategorized() ? 0.5 : 0,\n xValue,\n yValue,\n regions = [];\n\n function isWithinRegions(x, regions) {\n var i;\n for (i = 0; i < regions.length; i++) {\n if (regions[i].start < x && x <= regions[i].end) {\n return true;\n }\n }\n return false;\n }\n\n // Check start/end of regions\n if (isDefined(_regions)) {\n for (i = 0; i < _regions.length; i++) {\n regions[i] = {};\n if (isUndefined(_regions[i].start)) {\n regions[i].start = d[0].x;\n } else {\n regions[i].start = $$.isTimeSeries() ? $$.parseDate(_regions[i].start) : _regions[i].start;\n }\n if (isUndefined(_regions[i].end)) {\n regions[i].end = d[d.length - 1].x;\n } else {\n regions[i].end = $$.isTimeSeries() ? $$.parseDate(_regions[i].end) : _regions[i].end;\n }\n }\n }\n\n // Set scales\n xValue = config.axis_rotated ? function (d) {\n return y(d.value);\n } : function (d) {\n return x(d.x);\n };\n yValue = config.axis_rotated ? function (d) {\n return x(d.x);\n } : function (d) {\n return y(d.value);\n };\n\n // Define svg generator function for region\n function generateM(points) {\n return 'M' + points[0][0] + ' ' + points[0][1] + ' ' + points[1][0] + ' ' + points[1][1];\n }\n if ($$.isTimeSeries()) {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var x0 = d0.x.getTime(),\n x_diff = d1.x - d0.x,\n xv0 = new Date(x0 + x_diff * j),\n xv1 = new Date(x0 + x_diff * (j + diff)),\n points;\n if (config.axis_rotated) {\n points = [[y(yp(j)), x(xv0)], [y(yp(j + diff)), x(xv1)]];\n } else {\n points = [[x(xv0), y(yp(j))], [x(xv1), y(yp(j + diff))]];\n }\n return generateM(points);\n };\n } else {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var points;\n if (config.axis_rotated) {\n points = [[y(yp(j), true), x(xp(j))], [y(yp(j + diff), true), x(xp(j + diff))]];\n } else {\n points = [[x(xp(j), true), y(yp(j))], [x(xp(j + diff), true), y(yp(j + diff))]];\n }\n return generateM(points);\n };\n }\n\n // Generate\n for (i = 0; i < d.length; i++) {\n\n // Draw as normal\n if (isUndefined(regions) || !isWithinRegions(d[i].x, regions)) {\n s += \" \" + xValue(d[i]) + \" \" + yValue(d[i]);\n }\n // Draw with region // TODO: Fix for horizotal charts\n else {\n xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries());\n yp = $$.getScale(d[i - 1].value, d[i].value);\n\n dx = x(d[i].x) - x(d[i - 1].x);\n dy = y(d[i].value) - y(d[i - 1].value);\n dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n diff = 2 / dd;\n diffx2 = diff * 2;\n\n for (j = diff; j <= 1; j += diffx2) {\n s += sWithRegion(d[i - 1], d[i], j, diff);\n }\n }\n prev = d[i].x;\n }\n\n return s;\n};\n\nc3_chart_internal_fn.updateArea = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n $$.mainArea = $$.main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n $$.mainArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');return 0;\n });\n $$.mainArea.style(\"opacity\", $$.orgAreaOpacity);\n $$.mainArea.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n};\nc3_chart_internal_fn.redrawArea = function (drawArea, withTransition) {\n return [(withTransition ? this.mainArea.transition(Math.random().toString()) : this.mainArea).attr(\"d\", drawArea).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity)];\n};\nc3_chart_internal_fn.generateDrawArea = function (areaIndices, isSub) {\n var $$ = this,\n config = $$.config,\n area = $$.d3.svg.area(),\n getPoints = $$.generateGetAreaPoints(areaIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n value0 = function value0(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id));\n },\n value1 = function value1(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(config.area_above ? 0 : value0).y1(value1);\n if (!config.line_connectNull) {\n area = area.defined(function (d) {\n return d.value !== null;\n });\n }\n\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x0 = 0,\n y0 = 0,\n path;\n if ($$.isAreaType(d)) {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n path = area.interpolate($$.getInterpolate(d))(values);\n } else {\n if (values[0]) {\n x0 = $$.x(values[0].x);\n y0 = $$.getYScale(d.id)(values[0].value);\n }\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n return path ? path : \"M 0 0\";\n };\n};\nc3_chart_internal_fn.getAreaBaseValue = function () {\n return 0;\n};\nc3_chart_internal_fn.generateGetAreaPoints = function (areaIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n areaTargetsNum = areaIndices.__max__ + 1,\n x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = areaOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d);\n // fix posY not to overflow opposite quadrant\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n }\n // 1 point that marks the area position\n return [[posX, offset], [posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, offset] // needed for compatibility\n ];\n };\n};\n\nc3_chart_internal_fn.updateCircle = function () {\n var $$ = this;\n $$.mainCircle = $$.main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle).data($$.lineOrScatterData.bind($$));\n $$.mainCircle.enter().append(\"circle\").attr(\"class\", $$.classCircle.bind($$)).attr(\"r\", $$.pointR.bind($$)).style(\"fill\", $$.color);\n $$.mainCircle.style(\"opacity\", $$.initialOpacityForCircle.bind($$));\n $$.mainCircle.exit().remove();\n};\nc3_chart_internal_fn.redrawCircle = function (cx, cy, withTransition) {\n var selectedCircles = this.main.selectAll('.' + CLASS.selectedCircle);\n return [(withTransition ? this.mainCircle.transition(Math.random().toString()) : this.mainCircle).style('opacity', this.opacityForCircle.bind(this)).style(\"fill\", this.color).attr(\"cx\", cx).attr(\"cy\", cy), (withTransition ? selectedCircles.transition(Math.random().toString()) : selectedCircles).attr(\"cx\", cx).attr(\"cy\", cy)];\n};\nc3_chart_internal_fn.circleX = function (d) {\n return d.x || d.x === 0 ? this.x(d.x) : null;\n};\nc3_chart_internal_fn.updateCircleY = function () {\n var $$ = this,\n lineIndices,\n getPoints;\n if ($$.config.data_groups.length > 0) {\n lineIndices = $$.getShapeIndices($$.isLineType), getPoints = $$.generateGetLinePoints(lineIndices);\n $$.circleY = function (d, i) {\n return getPoints(d, i)[0][1];\n };\n } else {\n $$.circleY = function (d) {\n return $$.getYScale(d.id)(d.value);\n };\n }\n};\nc3_chart_internal_fn.getCircles = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : ''));\n};\nc3_chart_internal_fn.expandCircles = function (i, id, reset) {\n var $$ = this,\n r = $$.pointExpandedR.bind($$);\n if (reset) {\n $$.unexpandCircles();\n }\n $$.getCircles(i, id).classed(CLASS.EXPANDED, true).attr('r', r);\n};\nc3_chart_internal_fn.unexpandCircles = function (i) {\n var $$ = this,\n r = $$.pointR.bind($$);\n $$.getCircles(i).filter(function () {\n return $$.d3.select(this).classed(CLASS.EXPANDED);\n }).classed(CLASS.EXPANDED, false).attr('r', r);\n};\nc3_chart_internal_fn.pointR = function (d) {\n var $$ = this,\n config = $$.config;\n return $$.isStepType(d) ? 0 : isFunction(config.point_r) ? config.point_r(d) : config.point_r;\n};\nc3_chart_internal_fn.pointExpandedR = function (d) {\n var $$ = this,\n config = $$.config;\n if (config.point_focus_expand_enabled) {\n return isFunction(config.point_focus_expand_r) ? config.point_focus_expand_r(d) : config.point_focus_expand_r ? config.point_focus_expand_r : $$.pointR(d) * 1.75;\n } else {\n return $$.pointR(d);\n }\n};\nc3_chart_internal_fn.pointSelectR = function (d) {\n var $$ = this,\n config = $$.config;\n return isFunction(config.point_select_r) ? config.point_select_r(d) : config.point_select_r ? config.point_select_r : $$.pointR(d) * 4;\n};\nc3_chart_internal_fn.isWithinCircle = function (that, r) {\n var d3 = this.d3,\n mouse = d3.mouse(that),\n d3_this = d3.select(that),\n cx = +d3_this.attr(\"cx\"),\n cy = +d3_this.attr(\"cy\");\n return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r;\n};\nc3_chart_internal_fn.isWithinStep = function (that, y) {\n return Math.abs(y - this.d3.mouse(that)[1]) < 30;\n};\n\nc3_chart_internal_fn.getCurrentWidth = function () {\n var $$ = this,\n config = $$.config;\n return config.size_width ? config.size_width : $$.getParentWidth();\n};\nc3_chart_internal_fn.getCurrentHeight = function () {\n var $$ = this,\n config = $$.config,\n h = config.size_height ? config.size_height : $$.getParentHeight();\n return h > 0 ? h : 320 / ($$.hasType('gauge') && !config.gauge_fullCircle ? 2 : 1);\n};\nc3_chart_internal_fn.getCurrentPaddingTop = function () {\n var $$ = this,\n config = $$.config,\n padding = isValue(config.padding_top) ? config.padding_top : 0;\n if ($$.title && $$.title.node()) {\n padding += $$.getTitlePadding();\n }\n return padding;\n};\nc3_chart_internal_fn.getCurrentPaddingBottom = function () {\n var config = this.config;\n return isValue(config.padding_bottom) ? config.padding_bottom : 0;\n};\nc3_chart_internal_fn.getCurrentPaddingLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config;\n if (isValue(config.padding_left)) {\n return config.padding_left;\n } else if (config.axis_rotated) {\n return !config.axis_x_show ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);\n } else if (!config.axis_y_show || config.axis_y_inner) {\n // && !config.axis_rotated\n return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1;\n } else {\n return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));\n }\n};\nc3_chart_internal_fn.getCurrentPaddingRight = function () {\n var $$ = this,\n config = $$.config,\n defaultPadding = 10,\n legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0;\n if (isValue(config.padding_right)) {\n return config.padding_right + 1; // 1 is needed not to hide tick line\n } else if (config.axis_rotated) {\n return defaultPadding + legendWidthOnRight;\n } else if (!config.axis_y2_show || config.axis_y2_inner) {\n // && !config.axis_rotated\n return 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0);\n } else {\n return ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;\n }\n};\n\nc3_chart_internal_fn.getParentRectValue = function (key) {\n var parent = this.selectChart.node(),\n v;\n while (parent && parent.tagName !== 'BODY') {\n try {\n v = parent.getBoundingClientRect()[key];\n } catch (e) {\n if (key === 'width') {\n // In IE in certain cases getBoundingClientRect\n // will cause an \"unspecified error\"\n v = parent.offsetWidth;\n }\n }\n if (v) {\n break;\n }\n parent = parent.parentNode;\n }\n return v;\n};\nc3_chart_internal_fn.getParentWidth = function () {\n return this.getParentRectValue('width');\n};\nc3_chart_internal_fn.getParentHeight = function () {\n var h = this.selectChart.style('height');\n return h.indexOf('px') > 0 ? +h.replace('px', '') : 0;\n};\n\nc3_chart_internal_fn.getSvgLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config,\n hasLeftAxisRect = config.axis_rotated || !config.axis_rotated && !config.axis_y_inner,\n leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY,\n leftAxis = $$.main.select('.' + leftAxisClass).node(),\n svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : { right: 0 },\n chartRect = $$.selectChart.node().getBoundingClientRect(),\n hasArc = $$.hasArcType(),\n svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute));\n return svgLeft > 0 ? svgLeft : 0;\n};\n\nc3_chart_internal_fn.getAxisWidthByAxisId = function (id, withoutRecompute) {\n var $$ = this,\n position = $$.axis.getLabelPositionById(id);\n return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40);\n};\nc3_chart_internal_fn.getHorizontalAxisHeight = function (axisId) {\n var $$ = this,\n config = $$.config,\n h = 30;\n if (axisId === 'x' && !config.axis_x_show) {\n return 8;\n }\n if (axisId === 'x' && config.axis_x_height) {\n return config.axis_x_height;\n }\n if (axisId === 'y' && !config.axis_y_show) {\n return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1;\n }\n if (axisId === 'y2' && !config.axis_y2_show) {\n return $$.rotated_padding_top;\n }\n // Calculate x axis height when tick rotated\n if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_x_tick_rotate) / 180);\n }\n // Calculate y axis height when tick rotated\n if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_y_tick_rotate) / 180);\n }\n return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n};\n\nc3_chart_internal_fn.getEventRectWidth = function () {\n return Math.max(0, this.xAxis.tickInterval());\n};\n\nc3_chart_internal_fn.initBrush = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.brush = d3.svg.brush().on(\"brush\", function () {\n $$.redrawForBrush();\n });\n $$.brush.update = function () {\n if ($$.context) {\n $$.context.select('.' + CLASS.brush).call(this);\n }\n return this;\n };\n $$.brush.scale = function (scale) {\n return $$.config.axis_rotated ? this.y(scale) : this.x(scale);\n };\n};\nc3_chart_internal_fn.initSubchart = function () {\n var $$ = this,\n config = $$.config,\n context = $$.context = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('context')),\n visibility = config.subchart_show ? 'visible' : 'hidden';\n\n context.style('visibility', visibility);\n\n // Define g for chart area\n context.append('g').attr(\"clip-path\", $$.clipPathForSubchart).attr('class', CLASS.chart);\n\n // Define g for bar chart area\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars);\n\n // Define g for line chart area\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines);\n\n // Add extent rect for Brush\n context.append(\"g\").attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.brush).call($$.brush);\n\n // ATTENTION: This must be called AFTER chart added\n // Add Axis\n $$.axes.subx = context.append(\"g\").attr(\"class\", CLASS.axisX).attr(\"transform\", $$.getTranslate('subx')).attr(\"clip-path\", config.axis_rotated ? \"\" : $$.clipPathForXAxis).style(\"visibility\", config.subchart_axis_x_show ? visibility : 'hidden');\n};\nc3_chart_internal_fn.updateTargetsForSubchart = function (targets) {\n var $$ = this,\n context = $$.context,\n config = $$.config,\n contextLineEnter,\n contextLineUpdate,\n contextBarEnter,\n contextBarUpdate,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$);\n\n if (config.subchart_show) {\n //-- Bar --//\n contextBarUpdate = context.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets).attr('class', classChartBar);\n contextBarEnter = contextBarUpdate.enter().append('g').style('opacity', 0).attr('class', classChartBar);\n // Bars for each data\n contextBarEnter.append('g').attr(\"class\", classBars);\n\n //-- Line --//\n contextLineUpdate = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets).attr('class', classChartLine);\n contextLineEnter = contextLineUpdate.enter().append('g').style('opacity', 0).attr('class', classChartLine);\n // Lines for each data\n contextLineEnter.append(\"g\").attr(\"class\", classLines);\n // Area\n contextLineEnter.append(\"g\").attr(\"class\", classAreas);\n\n //-- Brush --//\n context.selectAll('.' + CLASS.brush + ' rect').attr(config.axis_rotated ? \"width\" : \"height\", config.axis_rotated ? $$.width2 : $$.height2);\n }\n};\nc3_chart_internal_fn.updateBarForSubchart = function (durationForExit) {\n var $$ = this;\n $$.contextBar = $$.context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data($$.barData.bind($$));\n $$.contextBar.enter().append('path').attr(\"class\", $$.classBar.bind($$)).style(\"stroke\", 'none').style(\"fill\", $$.color);\n $$.contextBar.style(\"opacity\", $$.initialOpacity.bind($$));\n $$.contextBar.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n};\nc3_chart_internal_fn.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) {\n (withTransition ? this.contextBar.transition(Math.random().toString()).duration(duration) : this.contextBar).attr('d', drawBarOnSub).style('opacity', 1);\n};\nc3_chart_internal_fn.updateLineForSubchart = function (durationForExit) {\n var $$ = this;\n $$.contextLine = $$.context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n $$.contextLine.enter().append('path').attr('class', $$.classLine.bind($$)).style('stroke', $$.color);\n $$.contextLine.style(\"opacity\", $$.initialOpacity.bind($$));\n $$.contextLine.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n};\nc3_chart_internal_fn.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) {\n (withTransition ? this.contextLine.transition(Math.random().toString()).duration(duration) : this.contextLine).attr(\"d\", drawLineOnSub).style('opacity', 1);\n};\nc3_chart_internal_fn.updateAreaForSubchart = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n $$.contextArea = $$.context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n $$.contextArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');return 0;\n });\n $$.contextArea.style(\"opacity\", 0);\n $$.contextArea.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n};\nc3_chart_internal_fn.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) {\n (withTransition ? this.contextArea.transition(Math.random().toString()).duration(duration) : this.contextArea).attr(\"d\", drawAreaOnSub).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity);\n};\nc3_chart_internal_fn.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n drawAreaOnSub,\n drawBarOnSub,\n drawLineOnSub;\n\n $$.context.style('visibility', config.subchart_show ? 'visible' : 'hidden');\n\n // subchart\n if (config.subchart_show) {\n // reflect main chart to extent on subchart if zoomed\n if (d3.event && d3.event.type === 'zoom') {\n $$.brush.extent($$.x.orgDomain()).update();\n }\n // update subchart elements if needed\n if (withSubchart) {\n\n // extent rect\n if (!$$.brush.empty()) {\n $$.brush.extent($$.x.orgDomain()).update();\n }\n // setup drawer - MEMO: this must be called after axis updated\n drawAreaOnSub = $$.generateDrawArea(areaIndices, true);\n drawBarOnSub = $$.generateDrawBar(barIndices, true);\n drawLineOnSub = $$.generateDrawLine(lineIndices, true);\n\n $$.updateBarForSubchart(duration);\n $$.updateLineForSubchart(duration);\n $$.updateAreaForSubchart(duration);\n\n $$.redrawBarForSubchart(drawBarOnSub, duration, duration);\n $$.redrawLineForSubchart(drawLineOnSub, duration, duration);\n $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration);\n }\n }\n};\nc3_chart_internal_fn.redrawForBrush = function () {\n var $$ = this,\n x = $$.x;\n $$.redraw({\n withTransition: false,\n withY: $$.config.zoom_rescale,\n withSubchart: false,\n withUpdateXDomain: true,\n withDimension: false\n });\n $$.config.subchart_onbrush.call($$.api, x.orgDomain());\n};\nc3_chart_internal_fn.transformContext = function (withTransition, transitions) {\n var $$ = this,\n subXAxis;\n if (transitions && transitions.axisSubX) {\n subXAxis = transitions.axisSubX;\n } else {\n subXAxis = $$.context.select('.' + CLASS.axisX);\n if (withTransition) {\n subXAxis = subXAxis.transition();\n }\n }\n $$.context.attr(\"transform\", $$.getTranslate('context'));\n subXAxis.attr(\"transform\", $$.getTranslate('subx'));\n};\nc3_chart_internal_fn.getDefaultExtent = function () {\n var $$ = this,\n config = $$.config,\n extent = isFunction(config.axis_x_extent) ? config.axis_x_extent($$.getXDomain($$.data.targets)) : config.axis_x_extent;\n if ($$.isTimeSeries()) {\n extent = [$$.parseDate(extent[0]), $$.parseDate(extent[1])];\n }\n return extent;\n};\n\nc3_chart_internal_fn.initText = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartTexts);\n $$.mainText = $$.d3.selectAll([]);\n};\nc3_chart_internal_fn.updateTargetsForText = function (targets) {\n var $$ = this,\n mainTextUpdate,\n mainTextEnter,\n classChartText = $$.classChartText.bind($$),\n classTexts = $$.classTexts.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainTextUpdate = $$.main.select('.' + CLASS.chartTexts).selectAll('.' + CLASS.chartText).data(targets).attr('class', function (d) {\n return classChartText(d) + classFocus(d);\n });\n mainTextEnter = mainTextUpdate.enter().append('g').attr('class', classChartText).style('opacity', 0).style(\"pointer-events\", \"none\");\n mainTextEnter.append('g').attr('class', classTexts);\n};\nc3_chart_internal_fn.updateText = function (durationForExit) {\n var $$ = this,\n config = $$.config,\n barOrLineData = $$.barOrLineData.bind($$),\n classText = $$.classText.bind($$);\n $$.mainText = $$.main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text).data(barOrLineData);\n $$.mainText.enter().append('text').attr(\"class\", classText).attr('text-anchor', function (d) {\n return config.axis_rotated ? d.value < 0 ? 'end' : 'start' : 'middle';\n }).style(\"stroke\", 'none').style(\"fill\", function (d) {\n return $$.color(d);\n }).style(\"fill-opacity\", 0);\n $$.mainText.text(function (d, i, j) {\n return $$.dataLabelFormat(d.id)(d.value, d.id, i, j);\n });\n $$.mainText.exit().transition().duration(durationForExit).style('fill-opacity', 0).remove();\n};\nc3_chart_internal_fn.redrawText = function (xForText, yForText, forFlow, withTransition) {\n return [(withTransition ? this.mainText.transition() : this.mainText).attr('x', xForText).attr('y', yForText).style(\"fill\", this.color).style(\"fill-opacity\", forFlow ? 0 : this.opacityForText.bind(this))];\n};\nc3_chart_internal_fn.getTextRect = function (text, cls, element) {\n var dummy = this.d3.select('body').append('div').classed('c3', true),\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n font = this.d3.select(element).style('font'),\n rect;\n svg.selectAll('.dummy').data([text]).enter().append('text').classed(cls ? cls : \"\", true).style('font', font).text(text).each(function () {\n rect = this.getBoundingClientRect();\n });\n dummy.remove();\n return rect;\n};\nc3_chart_internal_fn.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) {\n var $$ = this,\n getAreaPoints = $$.generateGetAreaPoints(areaIndices, false),\n getBarPoints = $$.generateGetBarPoints(barIndices, false),\n getLinePoints = $$.generateGetLinePoints(lineIndices, false),\n getter = forX ? $$.getXForText : $$.getYForText;\n return function (d, i) {\n var getPoints = $$.isAreaType(d) ? getAreaPoints : $$.isBarType(d) ? getBarPoints : getLinePoints;\n return getter.call($$, getPoints(d, i), d, this);\n };\n};\nc3_chart_internal_fn.getXForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n xPos,\n padding;\n if ($$.config.axis_rotated) {\n padding = $$.isBarType(d) ? 4 : 6;\n xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1);\n } else {\n xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0];\n }\n // show labels regardless of the domain if value is null\n if (d.value === null) {\n if (xPos > $$.width) {\n xPos = $$.width - box.width;\n } else if (xPos < 0) {\n xPos = 4;\n }\n }\n return xPos;\n};\nc3_chart_internal_fn.getYForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n yPos;\n if ($$.config.axis_rotated) {\n yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2;\n } else {\n yPos = points[2][1];\n if (d.value < 0 || d.value === 0 && !$$.hasPositiveValue) {\n yPos += box.height;\n if ($$.isBarType(d) && $$.isSafari()) {\n yPos -= 3;\n } else if (!$$.isBarType(d) && $$.isChrome()) {\n yPos += 3;\n }\n } else {\n yPos += $$.isBarType(d) ? -3 : -6;\n }\n }\n // show labels regardless of the domain if value is null\n if (d.value === null && !$$.config.axis_rotated) {\n if (yPos < box.height) {\n yPos = box.height;\n } else if (yPos > this.height) {\n yPos = this.height - 4;\n }\n }\n return yPos;\n};\n\nc3_chart_internal_fn.initTitle = function () {\n var $$ = this;\n $$.title = $$.svg.append(\"text\").text($$.config.title_text).attr(\"class\", $$.CLASS.title);\n};\nc3_chart_internal_fn.redrawTitle = function () {\n var $$ = this;\n $$.title.attr(\"x\", $$.xForTitle.bind($$)).attr(\"y\", $$.yForTitle.bind($$));\n};\nc3_chart_internal_fn.xForTitle = function () {\n var $$ = this,\n config = $$.config,\n position = config.title_position || 'left',\n x;\n if (position.indexOf('right') >= 0) {\n x = $$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width - config.title_padding.right;\n } else if (position.indexOf('center') >= 0) {\n x = ($$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width) / 2;\n } else {\n // left\n x = config.title_padding.left;\n }\n return x;\n};\nc3_chart_internal_fn.yForTitle = function () {\n var $$ = this;\n return $$.config.title_padding.top + $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).height;\n};\nc3_chart_internal_fn.getTitlePadding = function () {\n var $$ = this;\n return $$.yForTitle() + $$.config.title_padding.bottom;\n};\n\nc3_chart_internal_fn.initTooltip = function () {\n var $$ = this,\n config = $$.config,\n i;\n $$.tooltip = $$.selectChart.style(\"position\", \"relative\").append(\"div\").attr('class', CLASS.tooltipContainer).style(\"position\", \"absolute\").style(\"pointer-events\", \"none\").style(\"display\", \"none\");\n // Show tooltip if needed\n if (config.tooltip_init_show) {\n if ($$.isTimeSeries() && isString(config.tooltip_init_x)) {\n config.tooltip_init_x = $$.parseDate(config.tooltip_init_x);\n for (i = 0; i < $$.data.targets[0].values.length; i++) {\n if ($$.data.targets[0].values[i].x - config.tooltip_init_x === 0) {\n break;\n }\n }\n config.tooltip_init_x = i;\n }\n $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) {\n return $$.addName(d.values[config.tooltip_init_x]);\n }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color));\n $$.tooltip.style(\"top\", config.tooltip_init_position.top).style(\"left\", config.tooltip_init_position.left).style(\"display\", \"block\");\n }\n};\nc3_chart_internal_fn.getTooltipSortFunction = function () {\n var $$ = this,\n config = $$.config;\n\n if (config.data_groups.length === 0 || config.tooltip_order !== undefined) {\n // if data are not grouped or if an order is specified\n // for the tooltip values we sort them by their values\n\n var order = config.tooltip_order;\n if (order === undefined) {\n order = config.data_order;\n }\n\n var valueOf = function valueOf(obj) {\n return obj ? obj.value : null;\n };\n\n // if data are not grouped, we sort them by their value\n if (isString(order) && order.toLowerCase() === 'asc') {\n return function (a, b) {\n return valueOf(a) - valueOf(b);\n };\n } else if (isString(order) && order.toLowerCase() === 'desc') {\n return function (a, b) {\n return valueOf(b) - valueOf(a);\n };\n } else if (isFunction(order)) {\n\n // if the function is from data_order we need\n // to wrap the returned function in order to format\n // the sorted value to the expected format\n\n var sortFunction = order;\n\n if (config.tooltip_order === undefined) {\n sortFunction = function sortFunction(a, b) {\n return order(a ? {\n id: a.id,\n values: [a]\n } : null, b ? {\n id: b.id,\n values: [b]\n } : null);\n };\n }\n\n return sortFunction;\n } else if (isArray(order)) {\n return function (a, b) {\n return order.indexOf(a.id) - order.indexOf(b.id);\n };\n }\n } else {\n // if data are grouped, we follow the order of grouped targets\n var ids = $$.orderTargets($$.data.targets).map(function (i) {\n return i.id;\n });\n\n // if it was either asc or desc we need to invert the order\n // returned by orderTargets\n if ($$.isOrderAsc() || $$.isOrderDesc()) {\n ids = ids.reverse();\n }\n\n return function (a, b) {\n return ids.indexOf(a.id) - ids.indexOf(b.id);\n };\n }\n};\nc3_chart_internal_fn.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) {\n var $$ = this,\n config = $$.config,\n titleFormat = config.tooltip_format_title || defaultTitleFormat,\n nameFormat = config.tooltip_format_name || function (name) {\n return name;\n },\n valueFormat = config.tooltip_format_value || defaultValueFormat,\n text,\n i,\n title,\n value,\n name,\n bgcolor;\n\n var tooltipSortFunction = this.getTooltipSortFunction();\n if (tooltipSortFunction) {\n d.sort(tooltipSortFunction);\n }\n\n for (i = 0; i < d.length; i++) {\n if (!(d[i] && (d[i].value || d[i].value === 0))) {\n continue;\n }\n\n if (!text) {\n title = sanitise(titleFormat ? titleFormat(d[i].x) : d[i].x);\n text = \"<table class='\" + $$.CLASS.tooltip + \"'>\" + (title || title === 0 ? \"<tr><th colspan='2'>\" + title + \"</th></tr>\" : \"\");\n }\n\n value = sanitise(valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index, d));\n if (value !== undefined) {\n // Skip elements when their name is set to null\n if (d[i].name === null) {\n continue;\n }\n name = sanitise(nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index));\n bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);\n\n text += \"<tr class='\" + $$.CLASS.tooltipName + \"-\" + $$.getTargetSelectorSuffix(d[i].id) + \"'>\";\n text += \"<td class='name'><span style='background-color:\" + bgcolor + \"'></span>\" + name + \"</td>\";\n text += \"<td class='value'>\" + value + \"</td>\";\n text += \"</tr>\";\n }\n }\n return text + \"</table>\";\n};\nc3_chart_internal_fn.tooltipPosition = function (dataToShow, tWidth, tHeight, element) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight;\n var forArc = $$.hasArcType(),\n mouse = d3.mouse(element);\n // Determin tooltip position\n if (forArc) {\n tooltipLeft = ($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2 + mouse[0];\n tooltipTop = $$.height / 2 + mouse[1] + 20;\n } else {\n svgLeft = $$.getSvgLeft(true);\n if (config.axis_rotated) {\n tooltipLeft = svgLeft + mouse[0] + 100;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = $$.x(dataToShow[0].x) + 20;\n } else {\n tooltipLeft = svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = mouse[1] + 15;\n }\n\n if (tooltipRight > chartRight) {\n // 20 is needed for Firefox to keep tooltip width\n tooltipLeft -= tooltipRight - chartRight + 20;\n }\n if (tooltipTop + tHeight > $$.currentHeight) {\n tooltipTop -= tHeight + 30;\n }\n }\n if (tooltipTop < 0) {\n tooltipTop = 0;\n }\n return { top: tooltipTop, left: tooltipLeft };\n};\nc3_chart_internal_fn.showTooltip = function (selectedData, element) {\n var $$ = this,\n config = $$.config;\n var tWidth, tHeight, position;\n var forArc = $$.hasArcType(),\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n positionFunction = config.tooltip_position || c3_chart_internal_fn.tooltipPosition;\n if (dataToShow.length === 0 || !config.tooltip_show) {\n return;\n }\n $$.tooltip.html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color)).style(\"display\", \"block\");\n\n // Get tooltip dimensions\n tWidth = $$.tooltip.property('offsetWidth');\n tHeight = $$.tooltip.property('offsetHeight');\n\n position = positionFunction.call(this, dataToShow, tWidth, tHeight, element);\n // Set tooltip\n $$.tooltip.style(\"top\", position.top + \"px\").style(\"left\", position.left + 'px');\n};\nc3_chart_internal_fn.hideTooltip = function () {\n this.tooltip.style(\"display\", \"none\");\n};\n\nc3_chart_internal_fn.setTargetType = function (targetIds, type) {\n var $$ = this,\n config = $$.config;\n $$.mapToTargetIds(targetIds).forEach(function (id) {\n $$.withoutFadeIn[id] = type === config.data_types[id];\n config.data_types[id] = type;\n });\n if (!targetIds) {\n config.data_type = type;\n }\n};\nc3_chart_internal_fn.hasType = function (type, targets) {\n var $$ = this,\n types = $$.config.data_types,\n has = false;\n targets = targets || $$.data.targets;\n if (targets && targets.length) {\n targets.forEach(function (target) {\n var t = types[target.id];\n if (t && t.indexOf(type) >= 0 || !t && type === 'line') {\n has = true;\n }\n });\n } else if (Object.keys(types).length) {\n Object.keys(types).forEach(function (id) {\n if (types[id] === type) {\n has = true;\n }\n });\n } else {\n has = $$.config.data_type === type;\n }\n return has;\n};\nc3_chart_internal_fn.hasArcType = function (targets) {\n return this.hasType('pie', targets) || this.hasType('donut', targets) || this.hasType('gauge', targets);\n};\nc3_chart_internal_fn.isLineType = function (d) {\n var config = this.config,\n id = isString(d) ? d : d.id;\n return !config.data_types[id] || ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0;\n};\nc3_chart_internal_fn.isStepType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n};\nc3_chart_internal_fn.isSplineType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0;\n};\nc3_chart_internal_fn.isAreaType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n};\nc3_chart_internal_fn.isBarType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'bar';\n};\nc3_chart_internal_fn.isScatterType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'scatter';\n};\nc3_chart_internal_fn.isPieType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'pie';\n};\nc3_chart_internal_fn.isGaugeType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'gauge';\n};\nc3_chart_internal_fn.isDonutType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'donut';\n};\nc3_chart_internal_fn.isArcType = function (d) {\n return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d);\n};\nc3_chart_internal_fn.lineData = function (d) {\n return this.isLineType(d) ? [d] : [];\n};\nc3_chart_internal_fn.arcData = function (d) {\n return this.isArcType(d.data) ? [d] : [];\n};\n/* not used\n function scatterData(d) {\n return isScatterType(d) ? d.values : [];\n }\n */\nc3_chart_internal_fn.barData = function (d) {\n return this.isBarType(d) ? d.values : [];\n};\nc3_chart_internal_fn.lineOrScatterData = function (d) {\n return this.isLineType(d) || this.isScatterType(d) ? d.values : [];\n};\nc3_chart_internal_fn.barOrLineData = function (d) {\n return this.isBarType(d) || this.isLineType(d) ? d.values : [];\n};\nc3_chart_internal_fn.isInterpolationType = function (type) {\n return ['linear', 'linear-closed', 'basis', 'basis-open', 'basis-closed', 'bundle', 'cardinal', 'cardinal-open', 'cardinal-closed', 'monotone'].indexOf(type) >= 0;\n};\n\nc3_chart_internal_fn.isSafari = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0;\n};\nc3_chart_internal_fn.isChrome = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Chrome') >= 0;\n};\n\nc3_chart_internal_fn.initZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n startEvent;\n\n $$.zoom = d3.behavior.zoom().on(\"zoomstart\", function () {\n startEvent = d3.event.sourceEvent;\n $$.zoom.altDomain = d3.event.sourceEvent.altKey ? $$.x.orgDomain() : null;\n config.zoom_onzoomstart.call($$.api, d3.event.sourceEvent);\n }).on(\"zoom\", function () {\n $$.redrawForZoom.call($$);\n }).on('zoomend', function () {\n var event = d3.event.sourceEvent;\n // if click, do nothing. otherwise, click interaction will be canceled.\n if (event && startEvent.clientX === event.clientX && startEvent.clientY === event.clientY) {\n return;\n }\n $$.redrawEventRect();\n $$.updateZoom();\n config.zoom_onzoomend.call($$.api, $$.x.orgDomain());\n });\n $$.zoom.scale = function (scale) {\n return config.axis_rotated ? this.y(scale) : this.x(scale);\n };\n $$.zoom.orgScaleExtent = function () {\n var extent = config.zoom_extent ? config.zoom_extent : [1, 10];\n return [extent[0], Math.max($$.getMaxDataCount() / extent[1], extent[1])];\n };\n $$.zoom.updateScaleExtent = function () {\n var ratio = diffDomain($$.x.orgDomain()) / diffDomain($$.getZoomDomain()),\n extent = this.orgScaleExtent();\n this.scaleExtent([extent[0] * ratio, extent[1] * ratio]);\n return this;\n };\n};\nc3_chart_internal_fn.getZoomDomain = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n min = d3.min([$$.orgXDomain[0], config.zoom_x_min]),\n max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);\n return [min, max];\n};\nc3_chart_internal_fn.updateZoom = function () {\n var $$ = this,\n z = $$.config.zoom_enabled ? $$.zoom : function () {};\n $$.main.select('.' + CLASS.zoomRect).call(z).on(\"dblclick.zoom\", null);\n $$.main.selectAll('.' + CLASS.eventRect).call(z).on(\"dblclick.zoom\", null);\n};\nc3_chart_internal_fn.redrawForZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n zoom = $$.zoom,\n x = $$.x;\n if (!config.zoom_enabled) {\n return;\n }\n if ($$.filterTargetsToShow($$.data.targets).length === 0) {\n return;\n }\n if (d3.event.sourceEvent.type === 'mousemove' && zoom.altDomain) {\n x.domain(zoom.altDomain);\n zoom.scale(x).updateScaleExtent();\n return;\n }\n if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) {\n x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]);\n }\n $$.redraw({\n withTransition: false,\n withY: config.zoom_rescale,\n withSubchart: false,\n withEventRect: false,\n withDimension: false\n });\n if (d3.event.sourceEvent.type === 'mousemove') {\n $$.cancelClick = true;\n }\n config.zoom_onzoom.call($$.api, x.orgDomain());\n};\n\nreturn c3$1;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/c3/c3.js\n// module id = 115\n// module chunks = 0","!function() {\n var d3 = {\n version: \"3.5.17\"\n };\n var d3_arraySlice = [].slice, d3_array = function(list) {\n return d3_arraySlice.call(list);\n };\n var d3_document = this.document;\n function d3_documentElement(node) {\n return node && (node.ownerDocument || node.document || node).documentElement;\n }\n function d3_window(node) {\n return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n }\n if (d3_document) {\n try {\n d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n } catch (e) {\n d3_array = function(list) {\n var i = list.length, array = new Array(i);\n while (i--) array[i] = list[i];\n return array;\n };\n }\n }\n if (!Date.now) Date.now = function() {\n return +new Date();\n };\n if (d3_document) {\n try {\n d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n } catch (error) {\n var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n d3_element_prototype.setAttribute = function(name, value) {\n d3_element_setAttribute.call(this, name, value + \"\");\n };\n d3_element_prototype.setAttributeNS = function(space, local, value) {\n d3_element_setAttributeNS.call(this, space, local, value + \"\");\n };\n d3_style_prototype.setProperty = function(name, value, priority) {\n d3_style_setProperty.call(this, name, value + \"\", priority);\n };\n }\n }\n d3.ascending = d3_ascending;\n function d3_ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n }\n d3.descending = function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n };\n d3.min = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n }\n return a;\n };\n d3.max = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n }\n return a;\n };\n d3.extent = function(array, f) {\n var i = -1, n = array.length, a, b, c;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n }\n return [ a, c ];\n };\n function d3_number(x) {\n return x === null ? NaN : +x;\n }\n function d3_numeric(x) {\n return !isNaN(x);\n }\n d3.sum = function(array, f) {\n var s = 0, n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n } else {\n while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n }\n return s;\n };\n d3.mean = function(array, f) {\n var s = 0, n = array.length, a, i = -1, j = n;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n }\n if (j) return s / j;\n };\n d3.quantile = function(values, p) {\n var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n return e ? v + e * (values[h] - v) : v;\n };\n d3.median = function(array, f) {\n var numbers = [], n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n }\n if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n };\n d3.variance = function(array, f) {\n var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n if (arguments.length === 1) {\n while (++i < n) {\n if (d3_numeric(a = d3_number(array[i]))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n } else {\n while (++i < n) {\n if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n }\n if (j > 1) return s / (j - 1);\n };\n d3.deviation = function() {\n var v = d3.variance.apply(this, arguments);\n return v ? Math.sqrt(v) : v;\n };\n function d3_bisector(compare) {\n return {\n left: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n }\n return lo;\n }\n };\n }\n var d3_bisect = d3_bisector(d3_ascending);\n d3.bisectLeft = d3_bisect.left;\n d3.bisect = d3.bisectRight = d3_bisect.right;\n d3.bisector = function(f) {\n return d3_bisector(f.length === 1 ? function(d, x) {\n return d3_ascending(f(d), x);\n } : f);\n };\n d3.shuffle = function(array, i0, i1) {\n if ((m = arguments.length) < 3) {\n i1 = array.length;\n if (m < 2) i0 = 0;\n }\n var m = i1 - i0, t, i;\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n }\n return array;\n };\n d3.permute = function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n };\n d3.pairs = function(array) {\n var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n return pairs;\n };\n d3.transpose = function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n };\n function d3_transposeLength(d) {\n return d.length;\n }\n d3.zip = function() {\n return d3.transpose(arguments);\n };\n d3.keys = function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n };\n d3.values = function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n };\n d3.entries = function(map) {\n var entries = [];\n for (var key in map) entries.push({\n key: key,\n value: map[key]\n });\n return entries;\n };\n d3.merge = function(arrays) {\n var n = arrays.length, m, i = -1, j = 0, merged, array;\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n return merged;\n };\n var abs = Math.abs;\n d3.range = function(start, stop, step) {\n if (arguments.length < 3) {\n step = 1;\n if (arguments.length < 2) {\n stop = start;\n start = 0;\n }\n }\n if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n start *= k, stop *= k, step *= k;\n if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n return range;\n };\n function d3_range_integerScale(x) {\n var k = 1;\n while (x * k % 1) k *= 10;\n return k;\n }\n function d3_class(ctor, properties) {\n for (var key in properties) {\n Object.defineProperty(ctor.prototype, key, {\n value: properties[key],\n enumerable: false\n });\n }\n }\n d3.map = function(object, f) {\n var map = new d3_Map();\n if (object instanceof d3_Map) {\n object.forEach(function(key, value) {\n map.set(key, value);\n });\n } else if (Array.isArray(object)) {\n var i = -1, n = object.length, o;\n if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n } else {\n for (var key in object) map.set(key, object[key]);\n }\n return map;\n };\n function d3_Map() {\n this._ = Object.create(null);\n }\n var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n d3_class(d3_Map, {\n has: d3_map_has,\n get: function(key) {\n return this._[d3_map_escape(key)];\n },\n set: function(key, value) {\n return this._[d3_map_escape(key)] = value;\n },\n remove: d3_map_remove,\n keys: d3_map_keys,\n values: function() {\n var values = [];\n for (var key in this._) values.push(this._[key]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var key in this._) entries.push({\n key: d3_map_unescape(key),\n value: this._[key]\n });\n return entries;\n },\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n }\n });\n function d3_map_escape(key) {\n return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n }\n function d3_map_unescape(key) {\n return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n }\n function d3_map_has(key) {\n return d3_map_escape(key) in this._;\n }\n function d3_map_remove(key) {\n return (key = d3_map_escape(key)) in this._ && delete this._[key];\n }\n function d3_map_keys() {\n var keys = [];\n for (var key in this._) keys.push(d3_map_unescape(key));\n return keys;\n }\n function d3_map_size() {\n var size = 0;\n for (var key in this._) ++size;\n return size;\n }\n function d3_map_empty() {\n for (var key in this._) return false;\n return true;\n }\n d3.nest = function() {\n var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n function map(mapType, array, depth) {\n if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n values.push(object);\n } else {\n valuesByKey.set(keyValue, [ object ]);\n }\n }\n if (mapType) {\n object = mapType();\n setter = function(keyValue, values) {\n object.set(keyValue, map(mapType, values, depth));\n };\n } else {\n object = {};\n setter = function(keyValue, values) {\n object[keyValue] = map(mapType, values, depth);\n };\n }\n valuesByKey.forEach(setter);\n return object;\n }\n function entries(map, depth) {\n if (depth >= keys.length) return map;\n var array = [], sortKey = sortKeys[depth++];\n map.forEach(function(key, keyMap) {\n array.push({\n key: key,\n values: entries(keyMap, depth)\n });\n });\n return sortKey ? array.sort(function(a, b) {\n return sortKey(a.key, b.key);\n }) : array;\n }\n nest.map = function(array, mapType) {\n return map(mapType, array, 0);\n };\n nest.entries = function(array) {\n return entries(map(d3.map, array, 0), 0);\n };\n nest.key = function(d) {\n keys.push(d);\n return nest;\n };\n nest.sortKeys = function(order) {\n sortKeys[keys.length - 1] = order;\n return nest;\n };\n nest.sortValues = function(order) {\n sortValues = order;\n return nest;\n };\n nest.rollup = function(f) {\n rollup = f;\n return nest;\n };\n return nest;\n };\n d3.set = function(array) {\n var set = new d3_Set();\n if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n return set;\n };\n function d3_Set() {\n this._ = Object.create(null);\n }\n d3_class(d3_Set, {\n has: d3_map_has,\n add: function(key) {\n this._[d3_map_escape(key += \"\")] = true;\n return key;\n },\n remove: d3_map_remove,\n values: d3_map_keys,\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key));\n }\n });\n d3.behavior = {};\n function d3_identity(d) {\n return d;\n }\n d3.rebind = function(target, source) {\n var i = 1, n = arguments.length, method;\n while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n return target;\n };\n function d3_rebind(target, source, method) {\n return function() {\n var value = method.apply(source, arguments);\n return value === source ? target : value;\n };\n }\n function d3_vendorSymbol(object, name) {\n if (name in object) return name;\n name = name.charAt(0).toUpperCase() + name.slice(1);\n for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n var prefixName = d3_vendorPrefixes[i] + name;\n if (prefixName in object) return prefixName;\n }\n }\n var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n function d3_noop() {}\n d3.dispatch = function() {\n var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n return dispatch;\n };\n function d3_dispatch() {}\n d3_dispatch.prototype.on = function(type, listener) {\n var i = type.indexOf(\".\"), name = \"\";\n if (i >= 0) {\n name = type.slice(i + 1);\n type = type.slice(0, i);\n }\n if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n if (arguments.length === 2) {\n if (listener == null) for (type in this) {\n if (this.hasOwnProperty(type)) this[type].on(name, null);\n }\n return this;\n }\n };\n function d3_dispatch_event(dispatch) {\n var listeners = [], listenerByName = new d3_Map();\n function event() {\n var z = listeners, i = -1, n = z.length, l;\n while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n return dispatch;\n }\n event.on = function(name, listener) {\n var l = listenerByName.get(name), i;\n if (arguments.length < 2) return l && l.on;\n if (l) {\n l.on = null;\n listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n listenerByName.remove(name);\n }\n if (listener) listeners.push(listenerByName.set(name, {\n on: listener\n }));\n return dispatch;\n };\n return event;\n }\n d3.event = null;\n function d3_eventPreventDefault() {\n d3.event.preventDefault();\n }\n function d3_eventSource() {\n var e = d3.event, s;\n while (s = e.sourceEvent) e = s;\n return e;\n }\n function d3_eventDispatch(target) {\n var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n dispatch.of = function(thiz, argumentz) {\n return function(e1) {\n try {\n var e0 = e1.sourceEvent = d3.event;\n e1.target = target;\n d3.event = e1;\n dispatch[e1.type].apply(thiz, argumentz);\n } finally {\n d3.event = e0;\n }\n };\n };\n return dispatch;\n }\n d3.requote = function(s) {\n return s.replace(d3_requote_re, \"\\\\$&\");\n };\n var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n var d3_subclass = {}.__proto__ ? function(object, prototype) {\n object.__proto__ = prototype;\n } : function(object, prototype) {\n for (var property in prototype) object[property] = prototype[property];\n };\n function d3_selection(groups) {\n d3_subclass(groups, d3_selectionPrototype);\n return groups;\n }\n var d3_select = function(s, n) {\n return n.querySelector(s);\n }, d3_selectAll = function(s, n) {\n return n.querySelectorAll(s);\n }, d3_selectMatches = function(n, s) {\n var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n d3_selectMatches = function(n, s) {\n return d3_selectMatcher.call(n, s);\n };\n return d3_selectMatches(n, s);\n };\n if (typeof Sizzle === \"function\") {\n d3_select = function(s, n) {\n return Sizzle(s, n)[0] || null;\n };\n d3_selectAll = Sizzle;\n d3_selectMatches = Sizzle.matchesSelector;\n }\n d3.selection = function() {\n return d3.select(d3_document.documentElement);\n };\n var d3_selectionPrototype = d3.selection.prototype = [];\n d3_selectionPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, group, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selector(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_select(selector, this);\n };\n }\n d3_selectionPrototype.selectAll = function(selector) {\n var subgroups = [], subgroup, node;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n subgroup.parentNode = node;\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selectorAll(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_selectAll(selector, this);\n };\n }\n var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n var d3_nsPrefix = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: d3_nsXhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n };\n d3.ns = {\n prefix: d3_nsPrefix,\n qualify: function(name) {\n var i = name.indexOf(\":\"), prefix = name;\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return d3_nsPrefix.hasOwnProperty(prefix) ? {\n space: d3_nsPrefix[prefix],\n local: name\n } : name;\n }\n };\n d3_selectionPrototype.attr = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node();\n name = d3.ns.qualify(name);\n return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n }\n for (value in name) this.each(d3_selection_attr(value, name[value]));\n return this;\n }\n return this.each(d3_selection_attr(name, value));\n };\n function d3_selection_attr(name, value) {\n name = d3.ns.qualify(name);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrConstant() {\n this.setAttribute(name, value);\n }\n function attrConstantNS() {\n this.setAttributeNS(name.space, name.local, value);\n }\n function attrFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n }\n function attrFunctionNS() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n }\n return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n }\n function d3_collapse(s) {\n return s.trim().replace(/\\s+/g, \" \");\n }\n d3_selectionPrototype.classed = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n if (value = node.classList) {\n while (++i < n) if (!value.contains(name[i])) return false;\n } else {\n value = node.getAttribute(\"class\");\n while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n }\n return true;\n }\n for (value in name) this.each(d3_selection_classed(value, name[value]));\n return this;\n }\n return this.each(d3_selection_classed(name, value));\n };\n function d3_selection_classedRe(name) {\n return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n }\n function d3_selection_classes(name) {\n return (name + \"\").trim().split(/^|\\s+/);\n }\n function d3_selection_classed(name, value) {\n name = d3_selection_classes(name).map(d3_selection_classedName);\n var n = name.length;\n function classedConstant() {\n var i = -1;\n while (++i < n) name[i](this, value);\n }\n function classedFunction() {\n var i = -1, x = value.apply(this, arguments);\n while (++i < n) name[i](this, x);\n }\n return typeof value === \"function\" ? classedFunction : classedConstant;\n }\n function d3_selection_classedName(name) {\n var re = d3_selection_classedRe(name);\n return function(node, value) {\n if (c = node.classList) return value ? c.add(name) : c.remove(name);\n var c = node.getAttribute(\"class\") || \"\";\n if (value) {\n re.lastIndex = 0;\n if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n } else {\n node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n }\n };\n }\n d3_selectionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n return this;\n }\n if (n < 2) {\n var node = this.node();\n return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n }\n priority = \"\";\n }\n return this.each(d3_selection_style(name, value, priority));\n };\n function d3_selection_style(name, value, priority) {\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleConstant() {\n this.style.setProperty(name, value, priority);\n }\n function styleFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n }\n return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n }\n d3_selectionPrototype.property = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") return this.node()[name];\n for (value in name) this.each(d3_selection_property(value, name[value]));\n return this;\n }\n return this.each(d3_selection_property(name, value));\n };\n function d3_selection_property(name, value) {\n function propertyNull() {\n delete this[name];\n }\n function propertyConstant() {\n this[name] = value;\n }\n function propertyFunction() {\n var x = value.apply(this, arguments);\n if (x == null) delete this[name]; else this[name] = x;\n }\n return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n }\n d3_selectionPrototype.text = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n } : value == null ? function() {\n this.textContent = \"\";\n } : function() {\n this.textContent = value;\n }) : this.node().textContent;\n };\n d3_selectionPrototype.html = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n } : value == null ? function() {\n this.innerHTML = \"\";\n } : function() {\n this.innerHTML = value;\n }) : this.node().innerHTML;\n };\n d3_selectionPrototype.append = function(name) {\n name = d3_selection_creator(name);\n return this.select(function() {\n return this.appendChild(name.apply(this, arguments));\n });\n };\n function d3_selection_creator(name) {\n function create() {\n var document = this.ownerDocument, namespace = this.namespaceURI;\n return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n }\n function createNS() {\n return this.ownerDocument.createElementNS(name.space, name.local);\n }\n return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n }\n d3_selectionPrototype.insert = function(name, before) {\n name = d3_selection_creator(name);\n before = d3_selection_selector(before);\n return this.select(function() {\n return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n });\n };\n d3_selectionPrototype.remove = function() {\n return this.each(d3_selectionRemove);\n };\n function d3_selectionRemove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n }\n d3_selectionPrototype.data = function(value, key) {\n var i = -1, n = this.length, group, node;\n if (!arguments.length) {\n value = new Array(n = (group = this[0]).length);\n while (++i < n) {\n if (node = group[i]) {\n value[i] = node.__data__;\n }\n }\n return value;\n }\n function bind(group, groupData) {\n var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n if (key) {\n var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n for (i = -1; ++i < n; ) {\n if (node = group[i]) {\n if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n exitNodes[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n keyValues[i] = keyValue;\n }\n }\n for (i = -1; ++i < m; ) {\n if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n } else if (node !== true) {\n updateNodes[i] = node;\n node.__data__ = nodeData;\n }\n nodeByKeyValue.set(keyValue, true);\n }\n for (i = -1; ++i < n; ) {\n if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n exitNodes[i] = group[i];\n }\n }\n } else {\n for (i = -1; ++i < n0; ) {\n node = group[i];\n nodeData = groupData[i];\n if (node) {\n node.__data__ = nodeData;\n updateNodes[i] = node;\n } else {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n }\n }\n for (;i < m; ++i) {\n enterNodes[i] = d3_selection_dataNode(groupData[i]);\n }\n for (;i < n; ++i) {\n exitNodes[i] = group[i];\n }\n }\n enterNodes.update = updateNodes;\n enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n enter.push(enterNodes);\n update.push(updateNodes);\n exit.push(exitNodes);\n }\n var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n if (typeof value === \"function\") {\n while (++i < n) {\n bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n }\n } else {\n while (++i < n) {\n bind(group = this[i], value);\n }\n }\n update.enter = function() {\n return enter;\n };\n update.exit = function() {\n return exit;\n };\n return update;\n };\n function d3_selection_dataNode(data) {\n return {\n __data__: data\n };\n }\n d3_selectionPrototype.datum = function(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n };\n d3_selectionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_filter(selector) {\n return function() {\n return d3_selectMatches(this, selector);\n };\n }\n d3_selectionPrototype.order = function() {\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n return this;\n };\n d3_selectionPrototype.sort = function(comparator) {\n comparator = d3_selection_sortComparator.apply(this, arguments);\n for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n return this.order();\n };\n function d3_selection_sortComparator(comparator) {\n if (!arguments.length) comparator = d3_ascending;\n return function(a, b) {\n return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n };\n }\n d3_selectionPrototype.each = function(callback) {\n return d3_selection_each(this, function(node, i, j) {\n callback.call(node, node.__data__, i, j);\n });\n };\n function d3_selection_each(groups, callback) {\n for (var j = 0, m = groups.length; j < m; j++) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n if (node = group[i]) callback(node, i, j);\n }\n }\n return groups;\n }\n d3_selectionPrototype.call = function(callback) {\n var args = d3_array(arguments);\n callback.apply(args[0] = this, args);\n return this;\n };\n d3_selectionPrototype.empty = function() {\n return !this.node();\n };\n d3_selectionPrototype.node = function() {\n for (var j = 0, m = this.length; j < m; j++) {\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n var node = group[i];\n if (node) return node;\n }\n }\n return null;\n };\n d3_selectionPrototype.size = function() {\n var n = 0;\n d3_selection_each(this, function() {\n ++n;\n });\n return n;\n };\n function d3_selection_enter(selection) {\n d3_subclass(selection, d3_selection_enterPrototype);\n return selection;\n }\n var d3_selection_enterPrototype = [];\n d3.selection.enter = d3_selection_enter;\n d3.selection.enter.prototype = d3_selection_enterPrototype;\n d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n d3_selection_enterPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, upgroup, group, node;\n for (var j = -1, m = this.length; ++j < m; ) {\n upgroup = (group = this[j]).update;\n subgroups.push(subgroup = []);\n subgroup.parentNode = group.parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n d3_selection_enterPrototype.insert = function(name, before) {\n if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n return d3_selectionPrototype.insert.call(this, name, before);\n };\n function d3_selection_enterInsertBefore(enter) {\n var i0, j0;\n return function(d, i, j) {\n var group = enter[j].update, n = group.length, node;\n if (j != j0) j0 = j, i0 = 0;\n if (i >= i0) i0 = i + 1;\n while (!(node = group[i0]) && ++i0 < n) ;\n return node;\n };\n }\n d3.select = function(node) {\n var group;\n if (typeof node === \"string\") {\n group = [ d3_select(node, d3_document) ];\n group.parentNode = d3_document.documentElement;\n } else {\n group = [ node ];\n group.parentNode = d3_documentElement(node);\n }\n return d3_selection([ group ]);\n };\n d3.selectAll = function(nodes) {\n var group;\n if (typeof nodes === \"string\") {\n group = d3_array(d3_selectAll(nodes, d3_document));\n group.parentNode = d3_document.documentElement;\n } else {\n group = d3_array(nodes);\n group.parentNode = null;\n }\n return d3_selection([ group ]);\n };\n d3_selectionPrototype.on = function(type, listener, capture) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof type !== \"string\") {\n if (n < 2) listener = false;\n for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n return this;\n }\n if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n capture = false;\n }\n return this.each(d3_selection_on(type, listener, capture));\n };\n function d3_selection_on(type, listener, capture) {\n var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n if (i > 0) type = type.slice(0, i);\n var filter = d3_selection_onFilters.get(type);\n if (filter) type = filter, wrap = d3_selection_onFilter;\n function onRemove() {\n var l = this[name];\n if (l) {\n this.removeEventListener(type, l, l.$);\n delete this[name];\n }\n }\n function onAdd() {\n var l = wrap(listener, d3_array(arguments));\n onRemove.call(this);\n this.addEventListener(type, this[name] = l, l.$ = capture);\n l._ = listener;\n }\n function removeAll() {\n var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n for (var name in this) {\n if (match = name.match(re)) {\n var l = this[name];\n this.removeEventListener(match[1], l, l.$);\n delete this[name];\n }\n }\n }\n return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n }\n var d3_selection_onFilters = d3.map({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n });\n if (d3_document) {\n d3_selection_onFilters.forEach(function(k) {\n if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n });\n }\n function d3_selection_onListener(listener, argumentz) {\n return function(e) {\n var o = d3.event;\n d3.event = e;\n argumentz[0] = this.__data__;\n try {\n listener.apply(this, argumentz);\n } finally {\n d3.event = o;\n }\n };\n }\n function d3_selection_onFilter(listener, argumentz) {\n var l = d3_selection_onListener(listener, argumentz);\n return function(e) {\n var target = this, related = e.relatedTarget;\n if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n l.call(target, e);\n }\n };\n }\n var d3_event_dragSelect, d3_event_dragId = 0;\n function d3_event_dragSuppress(node) {\n var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n if (d3_event_dragSelect == null) {\n d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n }\n if (d3_event_dragSelect) {\n var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n style[d3_event_dragSelect] = \"none\";\n }\n return function(suppressClick) {\n w.on(name, null);\n if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n if (suppressClick) {\n var off = function() {\n w.on(click, null);\n };\n w.on(click, function() {\n d3_eventPreventDefault();\n off();\n }, true);\n setTimeout(off, 0);\n }\n };\n }\n d3.mouse = function(container) {\n return d3_mousePoint(container, d3_eventSource());\n };\n var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n function d3_mousePoint(container, e) {\n if (e.changedTouches) e = e.changedTouches[0];\n var svg = container.ownerSVGElement || container;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n if (d3_mouse_bug44083 < 0) {\n var window = d3_window(container);\n if (window.scrollX || window.scrollY) {\n svg = d3.select(\"body\").append(\"svg\").style({\n position: \"absolute\",\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n border: \"none\"\n }, \"important\");\n var ctm = svg[0][0].getScreenCTM();\n d3_mouse_bug44083 = !(ctm.f || ctm.e);\n svg.remove();\n }\n }\n if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n point.y = e.clientY;\n point = point.matrixTransform(container.getScreenCTM().inverse());\n return [ point.x, point.y ];\n }\n var rect = container.getBoundingClientRect();\n return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n }\n d3.touch = function(container, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return d3_mousePoint(container, touch);\n }\n }\n };\n d3.behavior.drag = function() {\n var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n function drag() {\n this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n }\n function dragstart(id, position, subject, move, end) {\n return function() {\n var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n if (origin) {\n dragOffset = origin.apply(that, arguments);\n dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n } else {\n dragOffset = [ 0, 0 ];\n }\n dispatch({\n type: \"dragstart\"\n });\n function moved() {\n var position1 = position(parent, dragId), dx, dy;\n if (!position1) return;\n dx = position1[0] - position0[0];\n dy = position1[1] - position0[1];\n dragged |= dx | dy;\n position0 = position1;\n dispatch({\n type: \"drag\",\n x: position1[0] + dragOffset[0],\n y: position1[1] + dragOffset[1],\n dx: dx,\n dy: dy\n });\n }\n function ended() {\n if (!position(parent, dragId)) return;\n dragSubject.on(move + dragName, null).on(end + dragName, null);\n dragRestore(dragged);\n dispatch({\n type: \"dragend\"\n });\n }\n };\n }\n drag.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return drag;\n };\n return d3.rebind(drag, event, \"on\");\n };\n function d3_behavior_dragTouchId() {\n return d3.event.changedTouches[0].identifier;\n }\n d3.touches = function(container, touches) {\n if (arguments.length < 2) touches = d3_eventSource().touches;\n return touches ? d3_array(touches).map(function(touch) {\n var point = d3_mousePoint(container, touch);\n point.identifier = touch.identifier;\n return point;\n }) : [];\n };\n var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n function d3_sgn(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n }\n function d3_cross2d(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n }\n function d3_acos(x) {\n return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n }\n function d3_asin(x) {\n return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n }\n function d3_sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n }\n function d3_cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n }\n function d3_tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n }\n function d3_haversin(x) {\n return (x = Math.sin(x / 2)) * x;\n }\n var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n d3.interpolateZoom = function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n if (d2 < ε2) {\n S = Math.log(w1 / w0) / ρ;\n i = function(t) {\n return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n };\n } else {\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / ρ;\n i = function(t) {\n var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n };\n }\n i.duration = S * 1e3;\n return i;\n };\n d3.behavior.zoom = function() {\n var view = {\n x: 0,\n y: 0,\n k: 1\n }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n if (!d3_behavior_zoomWheel) {\n d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return d3.event.wheelDelta;\n }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n return -d3.event.detail;\n }, \"MozMousePixelScroll\");\n }\n function zoom(g) {\n g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n }\n zoom.event = function(g) {\n g.each(function() {\n var dispatch = event.of(this, arguments), view1 = view;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.zoom\", function() {\n view = this.__chart__ || {\n x: 0,\n y: 0,\n k: 1\n };\n zoomstarted(dispatch);\n }).tween(\"zoom:zoom\", function() {\n var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n return function(t) {\n var l = i(t), k = dx / l[2];\n this.__chart__ = view = {\n x: cx - l[0] * k,\n y: cy - l[1] * k,\n k: k\n };\n zoomed(dispatch);\n };\n }).each(\"interrupt.zoom\", function() {\n zoomended(dispatch);\n }).each(\"end.zoom\", function() {\n zoomended(dispatch);\n });\n } else {\n this.__chart__ = view;\n zoomstarted(dispatch);\n zoomed(dispatch);\n zoomended(dispatch);\n }\n });\n };\n zoom.translate = function(_) {\n if (!arguments.length) return [ view.x, view.y ];\n view = {\n x: +_[0],\n y: +_[1],\n k: view.k\n };\n rescale();\n return zoom;\n };\n zoom.scale = function(_) {\n if (!arguments.length) return view.k;\n view = {\n x: view.x,\n y: view.y,\n k: null\n };\n scaleTo(+_);\n rescale();\n return zoom;\n };\n zoom.scaleExtent = function(_) {\n if (!arguments.length) return scaleExtent;\n scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.center = function(_) {\n if (!arguments.length) return center;\n center = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.size = function(_) {\n if (!arguments.length) return size;\n size = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.duration = function(_) {\n if (!arguments.length) return duration;\n duration = +_;\n return zoom;\n };\n zoom.x = function(z) {\n if (!arguments.length) return x1;\n x1 = z;\n x0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n zoom.y = function(z) {\n if (!arguments.length) return y1;\n y1 = z;\n y0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n function location(p) {\n return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n }\n function point(l) {\n return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n }\n function scaleTo(s) {\n view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n }\n function translateTo(p, l) {\n l = point(l);\n view.x += p[0] - l[0];\n view.y += p[1] - l[1];\n }\n function zoomTo(that, p, l, k) {\n that.__chart__ = {\n x: view.x,\n y: view.y,\n k: view.k\n };\n scaleTo(Math.pow(2, k));\n translateTo(center0 = p, l);\n that = d3.select(that);\n if (duration > 0) that = that.transition().duration(duration);\n that.call(zoom.event);\n }\n function rescale() {\n if (x1) x1.domain(x0.range().map(function(x) {\n return (x - view.x) / view.k;\n }).map(x0.invert));\n if (y1) y1.domain(y0.range().map(function(y) {\n return (y - view.y) / view.k;\n }).map(y0.invert));\n }\n function zoomstarted(dispatch) {\n if (!zooming++) dispatch({\n type: \"zoomstart\"\n });\n }\n function zoomed(dispatch) {\n rescale();\n dispatch({\n type: \"zoom\",\n scale: view.k,\n translate: [ view.x, view.y ]\n });\n }\n function zoomended(dispatch) {\n if (!--zooming) dispatch({\n type: \"zoomend\"\n }), center0 = null;\n }\n function mousedowned() {\n var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n d3_selection_interrupt.call(that);\n zoomstarted(dispatch);\n function moved() {\n dragged = 1;\n translateTo(d3.mouse(that), location0);\n zoomed(dispatch);\n }\n function ended() {\n subject.on(mousemove, null).on(mouseup, null);\n dragRestore(dragged);\n zoomended(dispatch);\n }\n }\n function touchstarted() {\n var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n started();\n zoomstarted(dispatch);\n subject.on(mousedown, null).on(touchstart, started);\n function relocate() {\n var touches = d3.touches(that);\n scale0 = view.k;\n touches.forEach(function(t) {\n if (t.identifier in locations0) locations0[t.identifier] = location(t);\n });\n return touches;\n }\n function started() {\n var target = d3.event.target;\n d3.select(target).on(touchmove, moved).on(touchend, ended);\n targets.push(target);\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n locations0[changed[i].identifier] = null;\n }\n var touches = relocate(), now = Date.now();\n if (touches.length === 1) {\n if (now - touchtime < 500) {\n var p = touches[0];\n zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n d3_eventPreventDefault();\n }\n touchtime = now;\n } else if (touches.length > 1) {\n var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n distance0 = dx * dx + dy * dy;\n }\n }\n function moved() {\n var touches = d3.touches(that), p0, l0, p1, l1;\n d3_selection_interrupt.call(that);\n for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n p1 = touches[i];\n if (l1 = locations0[p1.identifier]) {\n if (l0) break;\n p0 = p1, l0 = l1;\n }\n }\n if (l1) {\n var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n scaleTo(scale1 * scale0);\n }\n touchtime = null;\n translateTo(p0, l0);\n zoomed(dispatch);\n }\n function ended() {\n if (d3.event.touches.length) {\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n delete locations0[changed[i].identifier];\n }\n for (var identifier in locations0) {\n return void relocate();\n }\n }\n d3.selectAll(targets).on(zoomName, null);\n subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n dragRestore();\n zoomended(dispatch);\n }\n }\n function mousewheeled() {\n var dispatch = event.of(this, arguments);\n if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n mousewheelTimer = setTimeout(function() {\n mousewheelTimer = null;\n zoomended(dispatch);\n }, 50);\n d3_eventPreventDefault();\n scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n translateTo(center0, translate0);\n zoomed(dispatch);\n }\n function dblclicked() {\n var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n }\n return d3.rebind(zoom, event, \"on\");\n };\n var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n d3.color = d3_color;\n function d3_color() {}\n d3_color.prototype.toString = function() {\n return this.rgb() + \"\";\n };\n d3.hsl = d3_hsl;\n function d3_hsl(h, s, l) {\n return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n }\n var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n d3_hslPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, this.l / k);\n };\n d3_hslPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, k * this.l);\n };\n d3_hslPrototype.rgb = function() {\n return d3_hsl_rgb(this.h, this.s, this.l);\n };\n function d3_hsl_rgb(h, s, l) {\n var m1, m2;\n h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n m1 = 2 * l - m2;\n function v(h) {\n if (h > 360) h -= 360; else if (h < 0) h += 360;\n if (h < 60) return m1 + (m2 - m1) * h / 60;\n if (h < 180) return m2;\n if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n return m1;\n }\n function vv(h) {\n return Math.round(v(h) * 255);\n }\n return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n }\n d3.hcl = d3_hcl;\n function d3_hcl(h, c, l) {\n return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n }\n var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n d3_hclPrototype.brighter = function(k) {\n return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.darker = function(k) {\n return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.rgb = function() {\n return d3_hcl_lab(this.h, this.c, this.l).rgb();\n };\n function d3_hcl_lab(h, c, l) {\n if (isNaN(h)) h = 0;\n if (isNaN(c)) c = 0;\n return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n }\n d3.lab = d3_lab;\n function d3_lab(l, a, b) {\n return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n }\n var d3_lab_K = 18;\n var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n var d3_labPrototype = d3_lab.prototype = new d3_color();\n d3_labPrototype.brighter = function(k) {\n return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.darker = function(k) {\n return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.rgb = function() {\n return d3_lab_rgb(this.l, this.a, this.b);\n };\n function d3_lab_rgb(l, a, b) {\n var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n x = d3_lab_xyz(x) * d3_lab_X;\n y = d3_lab_xyz(y) * d3_lab_Y;\n z = d3_lab_xyz(z) * d3_lab_Z;\n return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n }\n function d3_lab_hcl(l, a, b) {\n return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n }\n function d3_lab_xyz(x) {\n return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n }\n function d3_xyz_lab(x) {\n return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n }\n function d3_xyz_rgb(r) {\n return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n }\n d3.rgb = d3_rgb;\n function d3_rgb(r, g, b) {\n return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n }\n function d3_rgbNumber(value) {\n return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n }\n function d3_rgbString(value) {\n return d3_rgbNumber(value) + \"\";\n }\n var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n d3_rgbPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n var r = this.r, g = this.g, b = this.b, i = 30;\n if (!r && !g && !b) return new d3_rgb(i, i, i);\n if (r && r < i) r = i;\n if (g && g < i) g = i;\n if (b && b < i) b = i;\n return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n };\n d3_rgbPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_rgb(k * this.r, k * this.g, k * this.b);\n };\n d3_rgbPrototype.hsl = function() {\n return d3_rgb_hsl(this.r, this.g, this.b);\n };\n d3_rgbPrototype.toString = function() {\n return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n };\n function d3_rgb_hex(v) {\n return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n }\n function d3_rgb_parse(format, rgb, hsl) {\n var r = 0, g = 0, b = 0, m1, m2, color;\n m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n if (m1) {\n m2 = m1[2].split(\",\");\n switch (m1[1]) {\n case \"hsl\":\n {\n return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n }\n\n case \"rgb\":\n {\n return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n }\n }\n }\n if (color = d3_rgb_names.get(format)) {\n return rgb(color.r, color.g, color.b);\n }\n if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n if (format.length === 4) {\n r = (color & 3840) >> 4;\n r = r >> 4 | r;\n g = color & 240;\n g = g >> 4 | g;\n b = color & 15;\n b = b << 4 | b;\n } else if (format.length === 7) {\n r = (color & 16711680) >> 16;\n g = (color & 65280) >> 8;\n b = color & 255;\n }\n }\n return rgb(r, g, b);\n }\n function d3_rgb_hsl(r, g, b) {\n var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n if (d) {\n s = l < .5 ? d / (max + min) : d / (2 - max - min);\n if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n h *= 60;\n } else {\n h = NaN;\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new d3_hsl(h, s, l);\n }\n function d3_rgb_lab(r, g, b) {\n r = d3_rgb_xyz(r);\n g = d3_rgb_xyz(g);\n b = d3_rgb_xyz(b);\n var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n }\n function d3_rgb_xyz(r) {\n return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n }\n function d3_rgb_parseNumber(c) {\n var f = parseFloat(c);\n return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n }\n var d3_rgb_names = d3.map({\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n });\n d3_rgb_names.forEach(function(key, value) {\n d3_rgb_names.set(key, d3_rgbNumber(value));\n });\n function d3_functor(v) {\n return typeof v === \"function\" ? v : function() {\n return v;\n };\n }\n d3.functor = d3_functor;\n d3.xhr = d3_xhrType(d3_identity);\n function d3_xhrType(response) {\n return function(url, mimeType, callback) {\n if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n mimeType = null;\n return d3_xhr(url, mimeType, response, callback);\n };\n }\n function d3_xhr(url, mimeType, response, callback) {\n var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n request.readyState > 3 && respond();\n };\n function respond() {\n var status = request.status, result;\n if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n try {\n result = response.call(xhr, request);\n } catch (e) {\n dispatch.error.call(xhr, e);\n return;\n }\n dispatch.load.call(xhr, result);\n } else {\n dispatch.error.call(xhr, request);\n }\n }\n request.onprogress = function(event) {\n var o = d3.event;\n d3.event = event;\n try {\n dispatch.progress.call(xhr, request);\n } finally {\n d3.event = o;\n }\n };\n xhr.header = function(name, value) {\n name = (name + \"\").toLowerCase();\n if (arguments.length < 2) return headers[name];\n if (value == null) delete headers[name]; else headers[name] = value + \"\";\n return xhr;\n };\n xhr.mimeType = function(value) {\n if (!arguments.length) return mimeType;\n mimeType = value == null ? null : value + \"\";\n return xhr;\n };\n xhr.responseType = function(value) {\n if (!arguments.length) return responseType;\n responseType = value;\n return xhr;\n };\n xhr.response = function(value) {\n response = value;\n return xhr;\n };\n [ \"get\", \"post\" ].forEach(function(method) {\n xhr[method] = function() {\n return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n };\n });\n xhr.send = function(method, data, callback) {\n if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n request.open(method, url, true);\n if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n if (responseType != null) request.responseType = responseType;\n if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n callback(null, request);\n });\n dispatch.beforesend.call(xhr, request);\n request.send(data == null ? null : data);\n return xhr;\n };\n xhr.abort = function() {\n request.abort();\n return xhr;\n };\n d3.rebind(xhr, dispatch, \"on\");\n return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n }\n function d3_xhr_fixCallback(callback) {\n return callback.length === 1 ? function(error, request) {\n callback(error == null ? request : null);\n } : callback;\n }\n function d3_xhrHasResponse(request) {\n var type = request.responseType;\n return type && type !== \"text\" ? request.response : request.responseText;\n }\n d3.dsv = function(delimiter, mimeType) {\n var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n function dsv(url, row, callback) {\n if (arguments.length < 3) callback = row, row = null;\n var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n xhr.row = function(_) {\n return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n };\n return xhr;\n }\n function response(request) {\n return dsv.parse(request.responseText);\n }\n function typedResponse(f) {\n return function(request) {\n return dsv.parse(request.responseText, f);\n };\n }\n dsv.parse = function(text, f) {\n var o;\n return dsv.parseRows(text, function(row, i) {\n if (o) return o(row, i - 1);\n var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n o = f ? function(row, i) {\n return f(a(row), i);\n } : a;\n });\n };\n dsv.parseRows = function(text, f) {\n var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n function token() {\n if (I >= N) return EOF;\n if (eol) return eol = false, EOL;\n var j = I;\n if (text.charCodeAt(j) === 34) {\n var i = j;\n while (i++ < N) {\n if (text.charCodeAt(i) === 34) {\n if (text.charCodeAt(i + 1) !== 34) break;\n ++i;\n }\n }\n I = i + 2;\n var c = text.charCodeAt(i + 1);\n if (c === 13) {\n eol = true;\n if (text.charCodeAt(i + 2) === 10) ++I;\n } else if (c === 10) {\n eol = true;\n }\n return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n }\n while (I < N) {\n var c = text.charCodeAt(I++), k = 1;\n if (c === 10) eol = true; else if (c === 13) {\n eol = true;\n if (text.charCodeAt(I) === 10) ++I, ++k;\n } else if (c !== delimiterCode) continue;\n return text.slice(j, I - k);\n }\n return text.slice(j);\n }\n while ((t = token()) !== EOF) {\n var a = [];\n while (t !== EOL && t !== EOF) {\n a.push(t);\n t = token();\n }\n if (f && (a = f(a, n++)) == null) continue;\n rows.push(a);\n }\n return rows;\n };\n dsv.format = function(rows) {\n if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n var fieldSet = new d3_Set(), fields = [];\n rows.forEach(function(row) {\n for (var field in row) {\n if (!fieldSet.has(field)) {\n fields.push(fieldSet.add(field));\n }\n }\n });\n return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n return fields.map(function(field) {\n return formatValue(row[field]);\n }).join(delimiter);\n })).join(\"\\n\");\n };\n dsv.formatRows = function(rows) {\n return rows.map(formatRow).join(\"\\n\");\n };\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n function formatValue(text) {\n return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n }\n return dsv;\n };\n d3.csv = d3.dsv(\",\", \"text/csv\");\n d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n setTimeout(callback, 17);\n };\n d3.timer = function() {\n d3_timer.apply(this, arguments);\n };\n function d3_timer(callback, delay, then) {\n var n = arguments.length;\n if (n < 2) delay = 0;\n if (n < 3) then = Date.now();\n var time = then + delay, timer = {\n c: callback,\n t: time,\n n: null\n };\n if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n d3_timer_queueTail = timer;\n if (!d3_timer_interval) {\n d3_timer_timeout = clearTimeout(d3_timer_timeout);\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n return timer;\n }\n function d3_timer_step() {\n var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n if (delay > 24) {\n if (isFinite(delay)) {\n clearTimeout(d3_timer_timeout);\n d3_timer_timeout = setTimeout(d3_timer_step, delay);\n }\n d3_timer_interval = 0;\n } else {\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n }\n d3.timer.flush = function() {\n d3_timer_mark();\n d3_timer_sweep();\n };\n function d3_timer_mark() {\n var now = Date.now(), timer = d3_timer_queueHead;\n while (timer) {\n if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n timer = timer.n;\n }\n return now;\n }\n function d3_timer_sweep() {\n var t0, t1 = d3_timer_queueHead, time = Infinity;\n while (t1) {\n if (t1.c) {\n if (t1.t < time) time = t1.t;\n t1 = (t0 = t1).n;\n } else {\n t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n }\n }\n d3_timer_queueTail = t0;\n return time;\n }\n function d3_format_precision(x, p) {\n return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n }\n d3.round = function(x, n) {\n return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n };\n var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n d3.formatPrefix = function(value, precision) {\n var i = 0;\n if (value = +value) {\n if (value < 0) value *= -1;\n if (precision) value = d3.round(value, d3_format_precision(value, precision));\n i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n }\n return d3_formatPrefixes[8 + i / 3];\n };\n function d3_formatPrefix(d, i) {\n var k = Math.pow(10, abs(8 - i) * 3);\n return {\n scale: i > 8 ? function(d) {\n return d / k;\n } : function(d) {\n return d * k;\n },\n symbol: d\n };\n }\n function d3_locale_numberFormat(locale) {\n var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = locale_grouping[j = (j + 1) % locale_grouping.length];\n }\n return t.reverse().join(locale_thousands);\n } : d3_identity;\n return function(specifier) {\n var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n if (precision) precision = +precision.substring(1);\n if (zfill || fill === \"0\" && align === \"=\") {\n zfill = fill = \"0\";\n align = \"=\";\n }\n switch (type) {\n case \"n\":\n comma = true;\n type = \"g\";\n break;\n\n case \"%\":\n scale = 100;\n suffix = \"%\";\n type = \"f\";\n break;\n\n case \"p\":\n scale = 100;\n suffix = \"%\";\n type = \"r\";\n break;\n\n case \"b\":\n case \"o\":\n case \"x\":\n case \"X\":\n if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n case \"c\":\n exponent = false;\n\n case \"d\":\n integer = true;\n precision = 0;\n break;\n\n case \"s\":\n scale = -1;\n type = \"r\";\n break;\n }\n if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n if (type == \"r\" && !precision) type = \"g\";\n if (precision != null) {\n if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n }\n type = d3_format_types.get(type) || d3_format_typeDefault;\n var zcomma = zfill && comma;\n return function(value) {\n var fullSuffix = suffix;\n if (integer && value % 1) return \"\";\n var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n if (scale < 0) {\n var unit = d3.formatPrefix(value, precision);\n value = unit.scale(value);\n fullSuffix = unit.symbol + suffix;\n } else {\n value *= scale;\n }\n value = type(value, precision);\n var i = value.lastIndexOf(\".\"), before, after;\n if (i < 0) {\n var j = exponent ? value.lastIndexOf(\"e\") : -1;\n if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n } else {\n before = value.substring(0, i);\n after = locale_decimal + value.substring(i + 1);\n }\n if (!zfill && comma) before = formatGroup(before, Infinity);\n var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n negative += prefix;\n value = before + after;\n return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n };\n };\n }\n var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n var d3_format_types = d3.map({\n b: function(x) {\n return x.toString(2);\n },\n c: function(x) {\n return String.fromCharCode(x);\n },\n o: function(x) {\n return x.toString(8);\n },\n x: function(x) {\n return x.toString(16);\n },\n X: function(x) {\n return x.toString(16).toUpperCase();\n },\n g: function(x, p) {\n return x.toPrecision(p);\n },\n e: function(x, p) {\n return x.toExponential(p);\n },\n f: function(x, p) {\n return x.toFixed(p);\n },\n r: function(x, p) {\n return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n }\n });\n function d3_format_typeDefault(x) {\n return x + \"\";\n }\n var d3_time = d3.time = {}, d3_date = Date;\n function d3_date_utc() {\n this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n }\n d3_date_utc.prototype = {\n getDate: function() {\n return this._.getUTCDate();\n },\n getDay: function() {\n return this._.getUTCDay();\n },\n getFullYear: function() {\n return this._.getUTCFullYear();\n },\n getHours: function() {\n return this._.getUTCHours();\n },\n getMilliseconds: function() {\n return this._.getUTCMilliseconds();\n },\n getMinutes: function() {\n return this._.getUTCMinutes();\n },\n getMonth: function() {\n return this._.getUTCMonth();\n },\n getSeconds: function() {\n return this._.getUTCSeconds();\n },\n getTime: function() {\n return this._.getTime();\n },\n getTimezoneOffset: function() {\n return 0;\n },\n valueOf: function() {\n return this._.valueOf();\n },\n setDate: function() {\n d3_time_prototype.setUTCDate.apply(this._, arguments);\n },\n setDay: function() {\n d3_time_prototype.setUTCDay.apply(this._, arguments);\n },\n setFullYear: function() {\n d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n },\n setHours: function() {\n d3_time_prototype.setUTCHours.apply(this._, arguments);\n },\n setMilliseconds: function() {\n d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n },\n setMinutes: function() {\n d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n },\n setMonth: function() {\n d3_time_prototype.setUTCMonth.apply(this._, arguments);\n },\n setSeconds: function() {\n d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n },\n setTime: function() {\n d3_time_prototype.setTime.apply(this._, arguments);\n }\n };\n var d3_time_prototype = Date.prototype;\n function d3_time_interval(local, step, number) {\n function round(date) {\n var d0 = local(date), d1 = offset(d0, 1);\n return date - d0 < d1 - date ? d0 : d1;\n }\n function ceil(date) {\n step(date = local(new d3_date(date - 1)), 1);\n return date;\n }\n function offset(date, k) {\n step(date = new d3_date(+date), k);\n return date;\n }\n function range(t0, t1, dt) {\n var time = ceil(t0), times = [];\n if (dt > 1) {\n while (time < t1) {\n if (!(number(time) % dt)) times.push(new Date(+time));\n step(time, 1);\n }\n } else {\n while (time < t1) times.push(new Date(+time)), step(time, 1);\n }\n return times;\n }\n function range_utc(t0, t1, dt) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = t0;\n return range(utc, t1, dt);\n } finally {\n d3_date = Date;\n }\n }\n local.floor = local;\n local.round = round;\n local.ceil = ceil;\n local.offset = offset;\n local.range = range;\n var utc = local.utc = d3_time_interval_utc(local);\n utc.floor = utc;\n utc.round = d3_time_interval_utc(round);\n utc.ceil = d3_time_interval_utc(ceil);\n utc.offset = d3_time_interval_utc(offset);\n utc.range = range_utc;\n return local;\n }\n function d3_time_interval_utc(method) {\n return function(date, k) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = date;\n return method(utc, k)._;\n } finally {\n d3_date = Date;\n }\n };\n }\n d3_time.year = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setMonth(0, 1);\n return date;\n }, function(date, offset) {\n date.setFullYear(date.getFullYear() + offset);\n }, function(date) {\n return date.getFullYear();\n });\n d3_time.years = d3_time.year.range;\n d3_time.years.utc = d3_time.year.utc.range;\n d3_time.day = d3_time_interval(function(date) {\n var day = new d3_date(2e3, 0);\n day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n return day;\n }, function(date, offset) {\n date.setDate(date.getDate() + offset);\n }, function(date) {\n return date.getDate() - 1;\n });\n d3_time.days = d3_time.day.range;\n d3_time.days.utc = d3_time.day.utc.range;\n d3_time.dayOfYear = function(date) {\n var year = d3_time.year(date);\n return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n };\n [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n i = 7 - i;\n var interval = d3_time[day] = d3_time_interval(function(date) {\n (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n return date;\n }, function(date, offset) {\n date.setDate(date.getDate() + Math.floor(offset) * 7);\n }, function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n });\n d3_time[day + \"s\"] = interval.range;\n d3_time[day + \"s\"].utc = interval.utc.range;\n d3_time[day + \"OfYear\"] = function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n };\n });\n d3_time.week = d3_time.sunday;\n d3_time.weeks = d3_time.sunday.range;\n d3_time.weeks.utc = d3_time.sunday.utc.range;\n d3_time.weekOfYear = d3_time.sundayOfYear;\n function d3_locale_timeFormat(locale) {\n var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n function d3_time_format(template) {\n var n = template.length;\n function format(date) {\n var string = [], i = -1, j = 0, c, p, f;\n while (++i < n) {\n if (template.charCodeAt(i) === 37) {\n string.push(template.slice(j, i));\n if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(template.slice(j, i));\n return string.join(\"\");\n }\n format.parse = function(string) {\n var d = {\n y: 1900,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0,\n Z: null\n }, i = d3_time_parse(d, template, string, 0);\n if (i != string.length) return null;\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n date.setFullYear(d.y, 0, 1);\n date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n } else date.setFullYear(d.y, d.m, d.d);\n date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n return localZ ? date._ : date;\n };\n format.toString = function() {\n return template;\n };\n return format;\n }\n function d3_time_parse(date, template, string, j) {\n var c, p, t, i = 0, n = template.length, m = string.length;\n while (i < n) {\n if (j >= m) return -1;\n c = template.charCodeAt(i++);\n if (c === 37) {\n t = template.charAt(i++);\n p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n if (!p || (j = p(date, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n d3_time_format.utc = function(template) {\n var local = d3_time_format(template);\n function format(date) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date();\n utc._ = date;\n return local(utc);\n } finally {\n d3_date = Date;\n }\n }\n format.parse = function(string) {\n try {\n d3_date = d3_date_utc;\n var date = local.parse(string);\n return date && date._;\n } finally {\n d3_date = Date;\n }\n };\n format.toString = local.toString;\n return format;\n };\n d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n locale_periods.forEach(function(p, i) {\n d3_time_periodLookup.set(p.toLowerCase(), i);\n });\n var d3_time_formats = {\n a: function(d) {\n return locale_shortDays[d.getDay()];\n },\n A: function(d) {\n return locale_days[d.getDay()];\n },\n b: function(d) {\n return locale_shortMonths[d.getMonth()];\n },\n B: function(d) {\n return locale_months[d.getMonth()];\n },\n c: d3_time_format(locale_dateTime),\n d: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n e: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n H: function(d, p) {\n return d3_time_formatPad(d.getHours(), p, 2);\n },\n I: function(d, p) {\n return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n },\n j: function(d, p) {\n return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n },\n L: function(d, p) {\n return d3_time_formatPad(d.getMilliseconds(), p, 3);\n },\n m: function(d, p) {\n return d3_time_formatPad(d.getMonth() + 1, p, 2);\n },\n M: function(d, p) {\n return d3_time_formatPad(d.getMinutes(), p, 2);\n },\n p: function(d) {\n return locale_periods[+(d.getHours() >= 12)];\n },\n S: function(d, p) {\n return d3_time_formatPad(d.getSeconds(), p, 2);\n },\n U: function(d, p) {\n return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n },\n w: function(d) {\n return d.getDay();\n },\n W: function(d, p) {\n return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n },\n x: d3_time_format(locale_date),\n X: d3_time_format(locale_time),\n y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n },\n Y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n },\n Z: d3_time_zone,\n \"%\": function() {\n return \"%\";\n }\n };\n var d3_time_parsers = {\n a: d3_time_parseWeekdayAbbrev,\n A: d3_time_parseWeekday,\n b: d3_time_parseMonthAbbrev,\n B: d3_time_parseMonth,\n c: d3_time_parseLocaleFull,\n d: d3_time_parseDay,\n e: d3_time_parseDay,\n H: d3_time_parseHour24,\n I: d3_time_parseHour24,\n j: d3_time_parseDayOfYear,\n L: d3_time_parseMilliseconds,\n m: d3_time_parseMonthNumber,\n M: d3_time_parseMinutes,\n p: d3_time_parseAmPm,\n S: d3_time_parseSeconds,\n U: d3_time_parseWeekNumberSunday,\n w: d3_time_parseWeekdayNumber,\n W: d3_time_parseWeekNumberMonday,\n x: d3_time_parseLocaleDate,\n X: d3_time_parseLocaleTime,\n y: d3_time_parseYear,\n Y: d3_time_parseFullYear,\n Z: d3_time_parseZone,\n \"%\": d3_time_parseLiteralPercent\n };\n function d3_time_parseWeekdayAbbrev(date, string, i) {\n d3_time_dayAbbrevRe.lastIndex = 0;\n var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseWeekday(date, string, i) {\n d3_time_dayRe.lastIndex = 0;\n var n = d3_time_dayRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonthAbbrev(date, string, i) {\n d3_time_monthAbbrevRe.lastIndex = 0;\n var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonth(date, string, i) {\n d3_time_monthRe.lastIndex = 0;\n var n = d3_time_monthRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseLocaleFull(date, string, i) {\n return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n }\n function d3_time_parseLocaleDate(date, string, i) {\n return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n }\n function d3_time_parseLocaleTime(date, string, i) {\n return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n }\n function d3_time_parseAmPm(date, string, i) {\n var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n return n == null ? -1 : (date.p = n, i);\n }\n return d3_time_format;\n }\n var d3_time_formatPads = {\n \"-\": \"\",\n _: \" \",\n \"0\": \"0\"\n }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n function d3_time_formatPad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n function d3_time_formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n }\n function d3_time_formatLookup(names) {\n var map = new d3_Map(), i = -1, n = names.length;\n while (++i < n) map.set(names[i].toLowerCase(), i);\n return map;\n }\n function d3_time_parseWeekdayNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n return n ? (date.w = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberSunday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.U = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberMonday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.W = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseFullYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n return n ? (date.y = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n }\n function d3_time_parseZone(date, string, i) {\n return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n i + 5) : -1;\n }\n function d3_time_expandYear(d) {\n return d + (d > 68 ? 1900 : 2e3);\n }\n function d3_time_parseMonthNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n }\n function d3_time_parseDay(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.d = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseDayOfYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.j = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseHour24(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.H = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMinutes(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.M = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseSeconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.S = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMilliseconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.L = +n[0], i + n[0].length) : -1;\n }\n function d3_time_zone(d) {\n var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n }\n function d3_time_parseLiteralPercent(date, string, i) {\n d3_time_percentRe.lastIndex = 0;\n var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n function d3_time_formatMulti(formats) {\n var n = formats.length, i = -1;\n while (++i < n) formats[i][0] = this(formats[i][0]);\n return function(date) {\n var i = 0, f = formats[i];\n while (!f[1](date)) f = formats[++i];\n return f[0](date);\n };\n }\n d3.locale = function(locale) {\n return {\n numberFormat: d3_locale_numberFormat(locale),\n timeFormat: d3_locale_timeFormat(locale)\n };\n };\n var d3_locale_enUS = d3.locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [ 3 ],\n currency: [ \"$\", \"\" ],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%m/%d/%Y\",\n time: \"%H:%M:%S\",\n periods: [ \"AM\", \"PM\" ],\n days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n });\n d3.format = d3_locale_enUS.numberFormat;\n d3.geo = {};\n function d3_adder() {}\n d3_adder.prototype = {\n s: 0,\n t: 0,\n add: function(y) {\n d3_adderSum(y, this.t, d3_adderTemp);\n d3_adderSum(d3_adderTemp.s, this.s, this);\n if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n },\n reset: function() {\n this.s = this.t = 0;\n },\n valueOf: function() {\n return this.s;\n }\n };\n var d3_adderTemp = new d3_adder();\n function d3_adderSum(a, b, o) {\n var x = o.s = a + b, bv = x - a, av = x - bv;\n o.t = a - av + (b - bv);\n }\n d3.geo.stream = function(object, listener) {\n if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n d3_geo_streamObjectType[object.type](object, listener);\n } else {\n d3_geo_streamGeometry(object, listener);\n }\n };\n function d3_geo_streamGeometry(geometry, listener) {\n if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n d3_geo_streamGeometryType[geometry.type](geometry, listener);\n }\n }\n var d3_geo_streamObjectType = {\n Feature: function(feature, listener) {\n d3_geo_streamGeometry(feature.geometry, listener);\n },\n FeatureCollection: function(object, listener) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n }\n };\n var d3_geo_streamGeometryType = {\n Sphere: function(object, listener) {\n listener.sphere();\n },\n Point: function(object, listener) {\n object = object.coordinates;\n listener.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n },\n LineString: function(object, listener) {\n d3_geo_streamLine(object.coordinates, listener, 0);\n },\n MultiLineString: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n },\n Polygon: function(object, listener) {\n d3_geo_streamPolygon(object.coordinates, listener);\n },\n MultiPolygon: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n },\n GeometryCollection: function(object, listener) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n }\n };\n function d3_geo_streamLine(coordinates, listener, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n listener.lineStart();\n while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n listener.lineEnd();\n }\n function d3_geo_streamPolygon(coordinates, listener) {\n var i = -1, n = coordinates.length;\n listener.polygonStart();\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n listener.polygonEnd();\n }\n d3.geo.area = function(object) {\n d3_geo_areaSum = 0;\n d3.geo.stream(object, d3_geo_area);\n return d3_geo_areaSum;\n };\n var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n var d3_geo_area = {\n sphere: function() {\n d3_geo_areaSum += 4 * π;\n },\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_areaRingSum.reset();\n d3_geo_area.lineStart = d3_geo_areaRingStart;\n },\n polygonEnd: function() {\n var area = 2 * d3_geo_areaRingSum;\n d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n }\n };\n function d3_geo_areaRingStart() {\n var λ00, φ00, λ0, cosφ0, sinφ0;\n d3_geo_area.point = function(λ, φ) {\n d3_geo_area.point = nextPoint;\n λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n sinφ0 = Math.sin(φ);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n φ = φ * d3_radians / 2 + π / 4;\n var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n d3_geo_areaRingSum.add(Math.atan2(v, u));\n λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n }\n d3_geo_area.lineEnd = function() {\n nextPoint(λ00, φ00);\n };\n }\n function d3_geo_cartesian(spherical) {\n var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n }\n function d3_geo_cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n }\n function d3_geo_cartesianCross(a, b) {\n return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n }\n function d3_geo_cartesianAdd(a, b) {\n a[0] += b[0];\n a[1] += b[1];\n a[2] += b[2];\n }\n function d3_geo_cartesianScale(vector, k) {\n return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n }\n function d3_geo_cartesianNormalize(d) {\n var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l;\n d[1] /= l;\n d[2] /= l;\n }\n function d3_geo_spherical(cartesian) {\n return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n }\n function d3_geo_sphericalEqual(a, b) {\n return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n }\n d3.geo.bounds = function() {\n var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n var bound = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n bound.point = ringPoint;\n bound.lineStart = ringStart;\n bound.lineEnd = ringEnd;\n dλSum = 0;\n d3_geo_area.polygonStart();\n },\n polygonEnd: function() {\n d3_geo_area.polygonEnd();\n bound.point = point;\n bound.lineStart = lineStart;\n bound.lineEnd = lineEnd;\n if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n range[0] = λ0, range[1] = λ1;\n }\n };\n function point(λ, φ) {\n ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n function linePoint(λ, φ) {\n var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n if (p0) {\n var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n d3_geo_cartesianNormalize(inflection);\n inflection = d3_geo_spherical(inflection);\n var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = inflection[1] * d3_degrees;\n if (φi > φ1) φ1 = φi;\n } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = -inflection[1] * d3_degrees;\n if (φi < φ0) φ0 = φi;\n } else {\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n if (antimeridian) {\n if (λ < λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n } else {\n if (λ1 >= λ0) {\n if (λ < λ0) λ0 = λ;\n if (λ > λ1) λ1 = λ;\n } else {\n if (λ > λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n }\n }\n } else {\n point(λ, φ);\n }\n p0 = p, λ_ = λ;\n }\n function lineStart() {\n bound.point = linePoint;\n }\n function lineEnd() {\n range[0] = λ0, range[1] = λ1;\n bound.point = point;\n p0 = null;\n }\n function ringPoint(λ, φ) {\n if (p0) {\n var dλ = λ - λ_;\n dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n } else λ__ = λ, φ__ = φ;\n d3_geo_area.point(λ, φ);\n linePoint(λ, φ);\n }\n function ringStart() {\n d3_geo_area.lineStart();\n }\n function ringEnd() {\n ringPoint(λ__, φ__);\n d3_geo_area.lineEnd();\n if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n range[0] = λ0, range[1] = λ1;\n p0 = null;\n }\n function angle(λ0, λ1) {\n return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n }\n function compareRanges(a, b) {\n return a[0] - b[0];\n }\n function withinRange(x, range) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n }\n return function(feature) {\n φ1 = λ1 = -(λ0 = φ0 = Infinity);\n ranges = [];\n d3.geo.stream(feature, bound);\n var n = ranges.length;\n if (n) {\n ranges.sort(compareRanges);\n for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n b = ranges[i];\n if (withinRange(b[0], a) || withinRange(b[1], a)) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n var best = -Infinity, dλ;\n for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n b = merged[i];\n if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n }\n }\n ranges = range = null;\n return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n };\n }();\n d3.geo.centroid = function(object) {\n d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, d3_geo_centroid);\n var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n if (m < ε2) {\n x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n m = x * x + y * y + z * z;\n if (m < ε2) return [ NaN, NaN ];\n }\n return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n };\n var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n var d3_geo_centroid = {\n sphere: d3_noop,\n point: d3_geo_centroidPoint,\n lineStart: d3_geo_centroidLineStart,\n lineEnd: d3_geo_centroidLineEnd,\n polygonStart: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n }\n };\n function d3_geo_centroidPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n }\n function d3_geo_centroidPointXYZ(x, y, z) {\n ++d3_geo_centroidW0;\n d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n }\n function d3_geo_centroidLineStart() {\n var x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroid.point = nextPoint;\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_centroidLineEnd() {\n d3_geo_centroid.point = d3_geo_centroidPoint;\n }\n function d3_geo_centroidRingStart() {\n var λ00, φ00, x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ00 = λ, φ00 = φ;\n d3_geo_centroid.point = nextPoint;\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n d3_geo_centroid.lineEnd = function() {\n nextPoint(λ00, φ00);\n d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n d3_geo_centroid.point = d3_geo_centroidPoint;\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n d3_geo_centroidX2 += v * cx;\n d3_geo_centroidY2 += v * cy;\n d3_geo_centroidZ2 += v * cz;\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_compose(a, b) {\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n return compose;\n }\n function d3_true() {\n return true;\n }\n function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n var subject = [], clip = [];\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n];\n if (d3_geo_sphericalEqual(p0, p1)) {\n listener.lineStart();\n for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n listener.lineEnd();\n return;\n }\n var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n a.o = b;\n subject.push(a);\n clip.push(b);\n a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n a.o = b;\n subject.push(a);\n clip.push(b);\n });\n clip.sort(compare);\n d3_geo_clipPolygonLinkCircular(subject);\n d3_geo_clipPolygonLinkCircular(clip);\n if (!subject.length) return;\n for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n clip[i].e = entry = !entry;\n }\n var start = subject[0], points, point;\n while (1) {\n var current = start, isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n listener.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, listener);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, listener);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n listener.lineEnd();\n }\n }\n function d3_geo_clipPolygonLinkCircular(array) {\n if (!(n = array.length)) return;\n var n, i = 0, a = array[0], b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n }\n function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other;\n this.e = entry;\n this.v = false;\n this.n = this.p = null;\n }\n function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n return function(rotate, listener) {\n var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = d3.merge(segments);\n var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n if (segments.length) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n } else if (clipStartInside) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n listener.polygonStart();\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n listener.polygonEnd();\n }\n };\n function point(λ, φ) {\n var point = rotate(λ, φ);\n if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n }\n function pointLine(λ, φ) {\n var point = rotate(λ, φ);\n line.point(point[0], point[1]);\n }\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n var segments;\n var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n function pointRing(λ, φ) {\n ring.push([ λ, φ ]);\n var point = rotate(λ, φ);\n ringListener.point(point[0], point[1]);\n }\n function ringStart() {\n ringListener.lineStart();\n ring = [];\n }\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringListener.lineEnd();\n var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n ring.pop();\n polygon.push(ring);\n ring = null;\n if (!n) return;\n if (clean & 1) {\n segment = ringSegments[0];\n var n = segment.length - 1, i = -1, point;\n if (n > 0) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n while (++i < n) listener.point((point = segment[i])[0], point[1]);\n listener.lineEnd();\n }\n return;\n }\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n }\n return clip;\n };\n }\n function d3_geo_clipSegmentLength1(segment) {\n return segment.length > 1;\n }\n function d3_geo_clipBufferListener() {\n var lines = [], line;\n return {\n lineStart: function() {\n lines.push(line = []);\n },\n point: function(λ, φ) {\n line.push([ λ, φ ]);\n },\n lineEnd: d3_noop,\n buffer: function() {\n var buffer = lines;\n lines = [];\n line = null;\n return buffer;\n },\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n }\n };\n }\n function d3_geo_clipSort(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n }\n var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n function d3_geo_clipAntimeridianLine(listener) {\n var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n return {\n lineStart: function() {\n listener.lineStart();\n clean = 1;\n },\n point: function(λ1, φ1) {\n var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n if (abs(dλ - π) < ε) {\n listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n listener.point(λ1, φ0);\n clean = 0;\n } else if (sλ0 !== sλ1 && dλ >= π) {\n if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n clean = 0;\n }\n listener.point(λ0 = λ1, φ0 = φ1);\n sλ0 = sλ1;\n },\n lineEnd: function() {\n listener.lineEnd();\n λ0 = φ0 = NaN;\n },\n clean: function() {\n return 2 - clean;\n }\n };\n }\n function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n }\n function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n var φ;\n if (from == null) {\n φ = direction * halfπ;\n listener.point(-π, φ);\n listener.point(0, φ);\n listener.point(π, φ);\n listener.point(π, 0);\n listener.point(π, -φ);\n listener.point(0, -φ);\n listener.point(-π, -φ);\n listener.point(-π, 0);\n listener.point(-π, φ);\n } else if (abs(from[0] - to[0]) > ε) {\n var s = from[0] < to[0] ? π : -π;\n φ = direction * s / 2;\n listener.point(-s, φ);\n listener.point(0, φ);\n listener.point(s, φ);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function d3_geo_pointInPolygon(point, polygon) {\n var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n d3_geo_areaRingSum.reset();\n for (var i = 0, n = polygon.length; i < n; ++i) {\n var ring = polygon[i], m = ring.length;\n if (!m) continue;\n var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n while (true) {\n if (j === m) j = 0;\n point = ring[j];\n var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n d3_geo_cartesianNormalize(arc);\n var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n d3_geo_cartesianNormalize(intersection);\n var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n }\n }\n if (!j++) break;\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n }\n }\n return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n }\n function d3_geo_clipCircle(radius) {\n var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n function visible(λ, φ) {\n return Math.cos(λ) * Math.cos(φ) > cr;\n }\n function clipLine(listener) {\n var point0, c0, v0, v00, clean;\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(λ, φ) {\n var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n if (!point0 && (v00 = v0 = v)) listener.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n point1[0] += ε;\n point1[1] += ε;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n listener.lineStart();\n point2 = intersect(point1, point0);\n listener.point(point2[0], point2[1]);\n } else {\n point2 = intersect(point0, point1);\n listener.point(point2[0], point2[1]);\n listener.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n } else {\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n listener.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) listener.lineEnd();\n point0 = null;\n },\n clean: function() {\n return clean | (v00 && v0) << 1;\n }\n };\n }\n function intersect(a, b, two) {\n var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n if (!determinant) return !two && a;\n var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n d3_geo_cartesianAdd(A, B);\n var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n if (t2 < 0) return;\n var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n d3_geo_cartesianAdd(q, A);\n q = d3_geo_spherical(q);\n if (!two) return q;\n var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n d3_geo_cartesianAdd(q1, A);\n return [ q, d3_geo_spherical(q1) ];\n }\n }\n function code(λ, φ) {\n var r = smallRadius ? radius : π - radius, code = 0;\n if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n return code;\n }\n }\n function d3_geom_clipLine(x0, y0, x1, y1) {\n return function(line) {\n var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n if (t0 > 0) line.a = {\n x: ax + t0 * dx,\n y: ay + t0 * dy\n };\n if (t1 < 1) line.b = {\n x: ax + t1 * dx,\n y: ay + t1 * dy\n };\n return line;\n };\n }\n var d3_geo_clipExtentMAX = 1e9;\n d3.geo.clipExtent = function() {\n var x0, y0, x1, y1, stream, clip, clipExtent = {\n stream: function(output) {\n if (stream) stream.valid = false;\n stream = clip(output);\n stream.valid = true;\n return stream;\n },\n extent: function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n if (stream) stream.valid = false, stream = null;\n return clipExtent;\n }\n };\n return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n };\n function d3_geo_clipExtent(x0, y0, x1, y1) {\n return function(listener) {\n var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n listener = bufferListener;\n segments = [];\n polygon = [];\n clean = true;\n },\n polygonEnd: function() {\n listener = listener_;\n segments = d3.merge(segments);\n var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n if (inside || visible) {\n listener.polygonStart();\n if (inside) {\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (visible) {\n d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n }\n listener.polygonEnd();\n }\n segments = polygon = ring = null;\n }\n };\n function insidePolygon(p) {\n var wn = 0, n = polygon.length, y = p[1];\n for (var i = 0; i < n; ++i) {\n for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n b = v[j];\n if (a[1] <= y) {\n if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n } else {\n if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n }\n a = b;\n }\n }\n return wn !== 0;\n }\n function interpolate(from, to, direction, listener) {\n var a = 0, a1 = 0;\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n do {\n listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n } while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function pointVisible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n function point(x, y) {\n if (pointVisible(x, y)) listener.point(x, y);\n }\n var x__, y__, v__, x_, y_, v_, first, clean;\n function lineStart() {\n clip.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferListener.rejoin();\n segments.push(bufferListener.buffer());\n }\n clip.point = point;\n if (v_) listener.lineEnd();\n }\n function linePoint(x, y) {\n x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n var v = pointVisible(x, y);\n if (polygon) ring.push([ x, y ]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n listener.lineStart();\n listener.point(x, y);\n }\n } else {\n if (v && v_) listener.point(x, y); else {\n var l = {\n a: {\n x: x_,\n y: y_\n },\n b: {\n x: x,\n y: y\n }\n };\n if (clipLine(l)) {\n if (!v_) {\n listener.lineStart();\n listener.point(l.a.x, l.a.y);\n }\n listener.point(l.b.x, l.b.y);\n if (!v) listener.lineEnd();\n clean = false;\n } else if (v) {\n listener.lineStart();\n listener.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n return clip;\n };\n function corner(p, direction) {\n return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n }\n function compare(a, b) {\n return comparePoints(a.x, b.x);\n }\n function comparePoints(a, b) {\n var ca = corner(a, 1), cb = corner(b, 1);\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n }\n }\n function d3_geo_conic(projectAt) {\n var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n p.parallels = function(_) {\n if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n };\n return p;\n }\n function d3_geo_conicEqualArea(φ0, φ1) {\n var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n function forward(λ, φ) {\n var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = ρ0 - y;\n return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n };\n return forward;\n }\n (d3.geo.conicEqualArea = function() {\n return d3_geo_conic(d3_geo_conicEqualArea);\n }).raw = d3_geo_conicEqualArea;\n d3.geo.albers = function() {\n return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n };\n d3.geo.albersUsa = function() {\n var lower48 = d3.geo.albers();\n var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n var point, pointStream = {\n point: function(x, y) {\n point = [ x, y ];\n }\n }, lower48Point, alaskaPoint, hawaiiPoint;\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n point = null;\n (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n return point;\n }\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n };\n albersUsa.stream = function(stream) {\n var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n return {\n point: function(x, y) {\n lower48Stream.point(x, y);\n alaskaStream.point(x, y);\n hawaiiStream.point(x, y);\n },\n sphere: function() {\n lower48Stream.sphere();\n alaskaStream.sphere();\n hawaiiStream.sphere();\n },\n lineStart: function() {\n lower48Stream.lineStart();\n alaskaStream.lineStart();\n hawaiiStream.lineStart();\n },\n lineEnd: function() {\n lower48Stream.lineEnd();\n alaskaStream.lineEnd();\n hawaiiStream.lineEnd();\n },\n polygonStart: function() {\n lower48Stream.polygonStart();\n alaskaStream.polygonStart();\n hawaiiStream.polygonStart();\n },\n polygonEnd: function() {\n lower48Stream.polygonEnd();\n alaskaStream.polygonEnd();\n hawaiiStream.polygonEnd();\n }\n };\n };\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_);\n alaska.precision(_);\n hawaii.precision(_);\n return albersUsa;\n };\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_);\n alaska.scale(_ * .35);\n hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n return albersUsa;\n };\n return albersUsa.scale(1070);\n };\n var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_pathAreaPolygon = 0;\n d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n }\n };\n function d3_geo_pathAreaRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathArea.point = function(x, y) {\n d3_geo_pathArea.point = nextPoint;\n x00 = x0 = x, y00 = y0 = y;\n };\n function nextPoint(x, y) {\n d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n x0 = x, y0 = y;\n }\n d3_geo_pathArea.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n var d3_geo_pathBounds = {\n point: d3_geo_pathBoundsPoint,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_pathBoundsPoint(x, y) {\n if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n }\n function d3_geo_pathBuffer() {\n var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointCircle = d3_geo_pathBufferCircle(_);\n return stream;\n },\n result: function() {\n if (buffer.length) {\n var result = buffer.join(\"\");\n buffer = [];\n return result;\n }\n }\n };\n function point(x, y) {\n buffer.push(\"M\", x, \",\", y, pointCircle);\n }\n function pointLineStart(x, y) {\n buffer.push(\"M\", x, \",\", y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n buffer.push(\"L\", x, \",\", y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n buffer.push(\"Z\");\n }\n return stream;\n }\n function d3_geo_pathBufferCircle(radius) {\n return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n }\n var d3_geo_pathCentroid = {\n point: d3_geo_pathCentroidPoint,\n lineStart: d3_geo_pathCentroidLineStart,\n lineEnd: d3_geo_pathCentroidLineEnd,\n polygonStart: function() {\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n }\n };\n function d3_geo_pathCentroidPoint(x, y) {\n d3_geo_centroidX0 += x;\n d3_geo_centroidY0 += y;\n ++d3_geo_centroidZ0;\n }\n function d3_geo_pathCentroidLineStart() {\n var x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n }\n function d3_geo_pathCentroidLineEnd() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n }\n function d3_geo_pathCentroidRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n z = y0 * x - x0 * y;\n d3_geo_centroidX2 += z * (x0 + x);\n d3_geo_centroidY2 += z * (y0 + y);\n d3_geo_centroidZ2 += z * 3;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n d3_geo_pathCentroid.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n function d3_geo_pathContext(context) {\n var pointRadius = 4.5;\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointRadius = _;\n return stream;\n },\n result: d3_noop\n };\n function point(x, y) {\n context.moveTo(x + pointRadius, y);\n context.arc(x, y, pointRadius, 0, τ);\n }\n function pointLineStart(x, y) {\n context.moveTo(x, y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n context.lineTo(x, y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n context.closePath();\n }\n return stream;\n }\n function d3_geo_resample(project) {\n var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n function resample(stream) {\n return (maxDepth ? resampleRecursive : resampleNone)(stream);\n }\n function resampleNone(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n });\n }\n function resampleRecursive(stream) {\n var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n var resample = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.polygonStart();\n resample.lineStart = ringStart;\n },\n polygonEnd: function() {\n stream.polygonEnd();\n resample.lineStart = lineStart;\n }\n };\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n function lineStart() {\n x0 = NaN;\n resample.point = linePoint;\n stream.lineStart();\n }\n function linePoint(λ, φ) {\n var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n function lineEnd() {\n resample.point = point;\n stream.lineEnd();\n }\n function ringStart() {\n lineStart();\n resample.point = ringPoint;\n resample.lineEnd = ringEnd;\n }\n function ringPoint(λ, φ) {\n linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resample.point = linePoint;\n }\n function ringEnd() {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n resample.lineEnd = lineEnd;\n lineEnd();\n }\n return resample;\n }\n function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n if (d2 > 4 * δ2 && depth--) {\n var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n }\n }\n }\n resample.precision = function(_) {\n if (!arguments.length) return Math.sqrt(δ2);\n maxDepth = (δ2 = _ * _) > 0 && 16;\n return resample;\n };\n return resample;\n }\n d3.geo.path = function() {\n var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n d3.geo.stream(object, cacheStream);\n }\n return contextStream.result();\n }\n path.area = function(object) {\n d3_geo_pathAreaSum = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathArea));\n return d3_geo_pathAreaSum;\n };\n path.centroid = function(object) {\n d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n };\n path.bounds = function(object) {\n d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n };\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n return reset();\n };\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return reset();\n };\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n function reset() {\n cacheStream = null;\n return path;\n }\n return path.projection(d3.geo.albersUsa()).context(null);\n };\n function d3_geo_pathProjectStream(project) {\n var resample = d3_geo_resample(function(x, y) {\n return project([ x * d3_degrees, y * d3_degrees ]);\n });\n return function(stream) {\n return d3_geo_projectionRadians(resample(stream));\n };\n }\n d3.geo.transform = function(methods) {\n return {\n stream: function(stream) {\n var transform = new d3_geo_transform(stream);\n for (var k in methods) transform[k] = methods[k];\n return transform;\n }\n };\n };\n function d3_geo_transform(stream) {\n this.stream = stream;\n }\n d3_geo_transform.prototype = {\n point: function(x, y) {\n this.stream.point(x, y);\n },\n sphere: function() {\n this.stream.sphere();\n },\n lineStart: function() {\n this.stream.lineStart();\n },\n lineEnd: function() {\n this.stream.lineEnd();\n },\n polygonStart: function() {\n this.stream.polygonStart();\n },\n polygonEnd: function() {\n this.stream.polygonEnd();\n }\n };\n function d3_geo_transformPoint(stream, point) {\n return {\n point: point,\n sphere: function() {\n stream.sphere();\n },\n lineStart: function() {\n stream.lineStart();\n },\n lineEnd: function() {\n stream.lineEnd();\n },\n polygonStart: function() {\n stream.polygonStart();\n },\n polygonEnd: function() {\n stream.polygonEnd();\n }\n };\n }\n d3.geo.projection = d3_geo_projection;\n d3.geo.projectionMutator = d3_geo_projectionMutator;\n function d3_geo_projection(project) {\n return d3_geo_projectionMutator(function() {\n return project;\n })();\n }\n function d3_geo_projectionMutator(projectAt) {\n var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n x = project(x, y);\n return [ x[0] * k + δx, δy - x[1] * k ];\n }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n function projection(point) {\n point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n return [ point[0] * k + δx, δy - point[1] * k ];\n }\n function invert(point) {\n point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n }\n projection.stream = function(output) {\n if (stream) stream.valid = false;\n stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n stream.valid = true;\n return stream;\n };\n projection.clipAngle = function(_) {\n if (!arguments.length) return clipAngle;\n preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n return invalidate();\n };\n projection.clipExtent = function(_) {\n if (!arguments.length) return clipExtent;\n clipExtent = _;\n postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n return invalidate();\n };\n projection.scale = function(_) {\n if (!arguments.length) return k;\n k = +_;\n return reset();\n };\n projection.translate = function(_) {\n if (!arguments.length) return [ x, y ];\n x = +_[0];\n y = +_[1];\n return reset();\n };\n projection.center = function(_) {\n if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n λ = _[0] % 360 * d3_radians;\n φ = _[1] % 360 * d3_radians;\n return reset();\n };\n projection.rotate = function(_) {\n if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n δλ = _[0] % 360 * d3_radians;\n δφ = _[1] % 360 * d3_radians;\n δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n return reset();\n };\n d3.rebind(projection, projectResample, \"precision\");\n function reset() {\n projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n var center = project(λ, φ);\n δx = x - center[0] * k;\n δy = y + center[1] * k;\n return invalidate();\n }\n function invalidate() {\n if (stream) stream.valid = false, stream = null;\n return projection;\n }\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return reset();\n };\n }\n function d3_geo_projectionRadians(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n stream.point(x * d3_radians, y * d3_radians);\n });\n }\n function d3_geo_equirectangular(λ, φ) {\n return [ λ, φ ];\n }\n (d3.geo.equirectangular = function() {\n return d3_geo_projection(d3_geo_equirectangular);\n }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n d3.geo.rotation = function(rotate) {\n rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n }\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n };\n return forward;\n };\n function d3_geo_identityRotation(λ, φ) {\n return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n }\n d3_geo_identityRotation.invert = d3_geo_equirectangular;\n function d3_geo_rotation(δλ, δφ, δγ) {\n return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n }\n function d3_geo_forwardRotationλ(δλ) {\n return function(λ, φ) {\n return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n };\n }\n function d3_geo_rotationλ(δλ) {\n var rotation = d3_geo_forwardRotationλ(δλ);\n rotation.invert = d3_geo_forwardRotationλ(-δλ);\n return rotation;\n }\n function d3_geo_rotationφγ(δφ, δγ) {\n var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n function rotation(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n }\n rotation.invert = function(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n };\n return rotation;\n }\n d3.geo.circle = function() {\n var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n function circle() {\n var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n interpolate(null, null, 1, {\n point: function(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= d3_degrees, x[1] *= d3_degrees;\n }\n });\n return {\n type: \"Polygon\",\n coordinates: [ ring ]\n };\n }\n circle.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return circle;\n };\n circle.angle = function(x) {\n if (!arguments.length) return angle;\n interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n return circle;\n };\n circle.precision = function(_) {\n if (!arguments.length) return precision;\n interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n return circle;\n };\n return circle.angle(90);\n };\n function d3_geo_circleInterpolate(radius, precision) {\n var cr = Math.cos(radius), sr = Math.sin(radius);\n return function(from, to, direction, listener) {\n var step = direction * precision;\n if (from != null) {\n from = d3_geo_circleAngle(cr, from);\n to = d3_geo_circleAngle(cr, to);\n if (direction > 0 ? from < to : from > to) from += direction * τ;\n } else {\n from = radius + direction * τ;\n to = radius - .5 * step;\n }\n for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n }\n };\n }\n function d3_geo_circleAngle(cr, point) {\n var a = d3_geo_cartesian(point);\n a[0] -= cr;\n d3_geo_cartesianNormalize(a);\n var angle = d3_acos(-a[1]);\n return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n }\n d3.geo.distance = function(a, b) {\n var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n };\n d3.geo.graticule = function() {\n var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n function graticule() {\n return {\n type: \"MultiLineString\",\n coordinates: lines()\n };\n }\n function lines() {\n return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n return abs(x % DX) > ε;\n }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n return abs(y % DY) > ε;\n }).map(y));\n }\n graticule.lines = function() {\n return lines().map(function(coordinates) {\n return {\n type: \"LineString\",\n coordinates: coordinates\n };\n });\n };\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n };\n };\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.minorExtent();\n return graticule.majorExtent(_).minorExtent(_);\n };\n graticule.majorExtent = function(_) {\n if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n graticule.minorExtent = function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n graticule.step = function(_) {\n if (!arguments.length) return graticule.minorStep();\n return graticule.majorStep(_).minorStep(_);\n };\n graticule.majorStep = function(_) {\n if (!arguments.length) return [ DX, DY ];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n graticule.minorStep = function(_) {\n if (!arguments.length) return [ dx, dy ];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = d3_geo_graticuleX(y0, y1, 90);\n y = d3_geo_graticuleY(x0, x1, precision);\n X = d3_geo_graticuleX(Y0, Y1, 90);\n Y = d3_geo_graticuleY(X0, X1, precision);\n return graticule;\n };\n return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n };\n function d3_geo_graticuleX(y0, y1, dy) {\n var y = d3.range(y0, y1 - ε, dy).concat(y1);\n return function(x) {\n return y.map(function(y) {\n return [ x, y ];\n });\n };\n }\n function d3_geo_graticuleY(x0, x1, dx) {\n var x = d3.range(x0, x1 - ε, dx).concat(x1);\n return function(y) {\n return x.map(function(x) {\n return [ x, y ];\n });\n };\n }\n function d3_source(d) {\n return d.source;\n }\n function d3_target(d) {\n return d.target;\n }\n d3.geo.greatArc = function() {\n var source = d3_source, source_, target = d3_target, target_;\n function greatArc() {\n return {\n type: \"LineString\",\n coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n };\n }\n greatArc.distance = function() {\n return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n };\n greatArc.source = function(_) {\n if (!arguments.length) return source;\n source = _, source_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.target = function(_) {\n if (!arguments.length) return target;\n target = _, target_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.precision = function() {\n return arguments.length ? greatArc : 0;\n };\n return greatArc;\n };\n d3.geo.interpolate = function(source, target) {\n return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n };\n function d3_geo_interpolate(x0, y0, x1, y1) {\n var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n var interpolate = d ? function(t) {\n var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n } : function() {\n return [ x0 * d3_degrees, y0 * d3_degrees ];\n };\n interpolate.distance = d;\n return interpolate;\n }\n d3.geo.length = function(object) {\n d3_geo_lengthSum = 0;\n d3.geo.stream(object, d3_geo_length);\n return d3_geo_lengthSum;\n };\n var d3_geo_lengthSum;\n var d3_geo_length = {\n sphere: d3_noop,\n point: d3_noop,\n lineStart: d3_geo_lengthLineStart,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_lengthLineStart() {\n var λ0, sinφ0, cosφ0;\n d3_geo_length.point = function(λ, φ) {\n λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n d3_geo_length.point = nextPoint;\n };\n d3_geo_length.lineEnd = function() {\n d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n };\n function nextPoint(λ, φ) {\n var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n }\n }\n function d3_geo_azimuthal(scale, angle) {\n function azimuthal(λ, φ) {\n var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n }\n azimuthal.invert = function(x, y) {\n var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n };\n return azimuthal;\n }\n var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n return Math.sqrt(2 / (1 + cosλcosφ));\n }, function(ρ) {\n return 2 * Math.asin(ρ / 2);\n });\n (d3.geo.azimuthalEqualArea = function() {\n return d3_geo_projection(d3_geo_azimuthalEqualArea);\n }).raw = d3_geo_azimuthalEqualArea;\n var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n var c = Math.acos(cosλcosφ);\n return c && c / Math.sin(c);\n }, d3_identity);\n (d3.geo.azimuthalEquidistant = function() {\n return d3_geo_projection(d3_geo_azimuthalEquidistant);\n }).raw = d3_geo_azimuthalEquidistant;\n function d3_geo_conicConformal(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), t = function(φ) {\n return Math.tan(π / 4 + φ / 2);\n }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n if (!n) return d3_geo_mercator;\n function forward(λ, φ) {\n if (F > 0) {\n if (φ < -halfπ + ε) φ = -halfπ + ε;\n } else {\n if (φ > halfπ - ε) φ = halfπ - ε;\n }\n var ρ = F / Math.pow(t(φ), n);\n return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n };\n return forward;\n }\n (d3.geo.conicConformal = function() {\n return d3_geo_conic(d3_geo_conicConformal);\n }).raw = d3_geo_conicConformal;\n function d3_geo_conicEquidistant(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n if (abs(n) < ε) return d3_geo_equirectangular;\n function forward(λ, φ) {\n var ρ = G - φ;\n return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = G - y;\n return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n };\n return forward;\n }\n (d3.geo.conicEquidistant = function() {\n return d3_geo_conic(d3_geo_conicEquidistant);\n }).raw = d3_geo_conicEquidistant;\n var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / cosλcosφ;\n }, Math.atan);\n (d3.geo.gnomonic = function() {\n return d3_geo_projection(d3_geo_gnomonic);\n }).raw = d3_geo_gnomonic;\n function d3_geo_mercator(λ, φ) {\n return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n }\n d3_geo_mercator.invert = function(x, y) {\n return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n };\n function d3_geo_mercatorProjection(project) {\n var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n m.scale = function() {\n var v = scale.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.translate = function() {\n var v = translate.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.clipExtent = function(_) {\n var v = clipExtent.apply(m, arguments);\n if (v === m) {\n if (clipAuto = _ == null) {\n var k = π * scale(), t = translate();\n clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n }\n } else if (clipAuto) {\n v = null;\n }\n return v;\n };\n return m.clipExtent(null);\n }\n (d3.geo.mercator = function() {\n return d3_geo_mercatorProjection(d3_geo_mercator);\n }).raw = d3_geo_mercator;\n var d3_geo_orthographic = d3_geo_azimuthal(function() {\n return 1;\n }, Math.asin);\n (d3.geo.orthographic = function() {\n return d3_geo_projection(d3_geo_orthographic);\n }).raw = d3_geo_orthographic;\n var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / (1 + cosλcosφ);\n }, function(ρ) {\n return 2 * Math.atan(ρ);\n });\n (d3.geo.stereographic = function() {\n return d3_geo_projection(d3_geo_stereographic);\n }).raw = d3_geo_stereographic;\n function d3_geo_transverseMercator(λ, φ) {\n return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n }\n d3_geo_transverseMercator.invert = function(x, y) {\n return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n };\n (d3.geo.transverseMercator = function() {\n var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n projection.center = function(_) {\n return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n };\n projection.rotate = function(_) {\n return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n [ _[0], _[1], _[2] - 90 ]);\n };\n return rotate([ 0, 0, 90 ]);\n }).raw = d3_geo_transverseMercator;\n d3.geom = {};\n function d3_geom_pointX(d) {\n return d[0];\n }\n function d3_geom_pointY(d) {\n return d[1];\n }\n d3.geom.hull = function(vertices) {\n var x = d3_geom_pointX, y = d3_geom_pointY;\n if (arguments.length) return hull(vertices);\n function hull(data) {\n if (data.length < 3) return [];\n var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n for (i = 0; i < n; i++) {\n points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n }\n points.sort(d3_geom_hullOrder);\n for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n return polygon;\n }\n hull.x = function(_) {\n return arguments.length ? (x = _, hull) : x;\n };\n hull.y = function(_) {\n return arguments.length ? (y = _, hull) : y;\n };\n return hull;\n };\n function d3_geom_hullUpper(points) {\n var n = points.length, hull = [ 0, 1 ], hs = 2;\n for (var i = 2; i < n; i++) {\n while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n hull[hs++] = i;\n }\n return hull.slice(0, hs);\n }\n function d3_geom_hullOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n }\n d3.geom.polygon = function(coordinates) {\n d3_subclass(coordinates, d3_geom_polygonPrototype);\n return coordinates;\n };\n var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n d3_geom_polygonPrototype.area = function() {\n var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n while (++i < n) {\n a = b;\n b = this[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n return area * .5;\n };\n d3_geom_polygonPrototype.centroid = function(k) {\n var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n if (!arguments.length) k = -1 / (6 * this.area());\n while (++i < n) {\n a = b;\n b = this[i];\n c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n return [ x * k, y * k ];\n };\n d3_geom_polygonPrototype.clip = function(subject) {\n var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n while (++i < n) {\n input = subject.slice();\n subject.length = 0;\n b = this[i];\n c = input[(m = input.length - closed) - 1];\n j = -1;\n while (++j < m) {\n d = input[j];\n if (d3_geom_polygonInside(d, a, b)) {\n if (!d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n subject.push(d);\n } else if (d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n c = d;\n }\n if (closed) subject.push(subject[0]);\n a = b;\n }\n return subject;\n };\n function d3_geom_polygonInside(p, a, b) {\n return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n }\n function d3_geom_polygonIntersect(c, d, a, b) {\n var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n return [ x1 + ua * x21, y1 + ua * y21 ];\n }\n function d3_geom_polygonClosed(coordinates) {\n var a = coordinates[0], b = coordinates[coordinates.length - 1];\n return !(a[0] - b[0] || a[1] - b[1]);\n }\n var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n function d3_geom_voronoiBeach() {\n d3_geom_voronoiRedBlackNode(this);\n this.edge = this.site = this.circle = null;\n }\n function d3_geom_voronoiCreateBeach(site) {\n var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n beach.site = site;\n return beach;\n }\n function d3_geom_voronoiDetachBeach(beach) {\n d3_geom_voronoiDetachCircle(beach);\n d3_geom_voronoiBeaches.remove(beach);\n d3_geom_voronoiBeachPool.push(beach);\n d3_geom_voronoiRedBlackNode(beach);\n }\n function d3_geom_voronoiRemoveBeach(beach) {\n var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n x: x,\n y: y\n }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n d3_geom_voronoiDetachBeach(beach);\n var lArc = previous;\n while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachBeach(lArc);\n lArc = previous;\n }\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachCircle(lArc);\n var rArc = next;\n while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n next = rArc.N;\n disappearing.push(rArc);\n d3_geom_voronoiDetachBeach(rArc);\n rArc = next;\n }\n disappearing.push(rArc);\n d3_geom_voronoiDetachCircle(rArc);\n var nArcs = disappearing.length, iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiAddBeach(site) {\n var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n while (node) {\n dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n if (dxl > ε) node = node.L; else {\n dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n if (dxr > ε) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -ε) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -ε) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n var newArc = d3_geom_voronoiCreateBeach(site);\n d3_geom_voronoiBeaches.insert(lArc, newArc);\n if (!lArc && !rArc) return;\n if (lArc === rArc) {\n d3_geom_voronoiDetachCircle(lArc);\n rArc = d3_geom_voronoiCreateBeach(lArc.site);\n d3_geom_voronoiBeaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n return;\n }\n if (!rArc) {\n newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n return;\n }\n d3_geom_voronoiDetachCircle(lArc);\n d3_geom_voronoiDetachCircle(rArc);\n var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n x: (cy * hb - by * hc) / d + ax,\n y: (bx * hc - cx * hb) / d + ay\n };\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n if (!pby2) return rfocx;\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n site = lArc.site;\n var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n if (!plby2) return lfocx;\n var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n return (rfocx + lfocx) / 2;\n }\n function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site.y === directrix ? site.x : Infinity;\n }\n function d3_geom_voronoiCell(site) {\n this.site = site;\n this.edges = [];\n }\n d3_geom_voronoiCell.prototype.prepare = function() {\n var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n while (iHalfEdge--) {\n edge = halfEdges[iHalfEdge].edge;\n if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n }\n halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n return halfEdges.length;\n };\n function d3_geom_voronoiCloseCells(extent) {\n var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n while (iCell--) {\n cell = cells[iCell];\n if (!cell || !cell.prepare()) continue;\n halfEdges = cell.edges;\n nHalfEdges = halfEdges.length;\n iHalfEdge = 0;\n while (iHalfEdge < nHalfEdges) {\n end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n x: x0,\n y: abs(x2 - x0) < ε ? y2 : y1\n } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n x: abs(y2 - y1) < ε ? x2 : x1,\n y: y1\n } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n x: x1,\n y: abs(x2 - x1) < ε ? y2 : y0\n } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n x: abs(y2 - y0) < ε ? x2 : x0,\n y: y0\n } : null), cell.site, null));\n ++nHalfEdges;\n }\n }\n }\n }\n function d3_geom_voronoiHalfEdgeOrder(a, b) {\n return b.angle - a.angle;\n }\n function d3_geom_voronoiCircle() {\n d3_geom_voronoiRedBlackNode(this);\n this.x = this.y = this.arc = this.site = this.cy = null;\n }\n function d3_geom_voronoiAttachCircle(arc) {\n var lArc = arc.P, rArc = arc.N;\n if (!lArc || !rArc) return;\n var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n if (lSite === rSite) return;\n var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -ε2) return;\n var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = cy + Math.sqrt(x * x + y * y);\n circle.cy = cy;\n arc.circle = circle;\n var before = null, node = d3_geom_voronoiCircles._;\n while (node) {\n if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n if (node.L) node = node.L; else {\n before = node.P;\n break;\n }\n } else {\n if (node.R) node = node.R; else {\n before = node;\n break;\n }\n }\n }\n d3_geom_voronoiCircles.insert(before, circle);\n if (!before) d3_geom_voronoiFirstCircle = circle;\n }\n function d3_geom_voronoiDetachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n d3_geom_voronoiCircles.remove(circle);\n d3_geom_voronoiCirclePool.push(circle);\n d3_geom_voronoiRedBlackNode(circle);\n arc.circle = null;\n }\n }\n function d3_geom_voronoiClipEdges(extent) {\n var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n while (i--) {\n e = edges[i];\n if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n e.a = e.b = null;\n edges.splice(i, 1);\n }\n }\n }\n function d3_geom_voronoiConnectEdge(edge, extent) {\n var vb = edge.b;\n if (vb) return true;\n var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!va) va = {\n x: fx,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: fx,\n y: y1\n };\n } else {\n if (!va) va = {\n x: fx,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: fx,\n y: y0\n };\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!va) va = {\n x: (y0 - fb) / fm,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: (y1 - fb) / fm,\n y: y1\n };\n } else {\n if (!va) va = {\n x: (y1 - fb) / fm,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: (y0 - fb) / fm,\n y: y0\n };\n }\n } else {\n if (ly < ry) {\n if (!va) va = {\n x: x0,\n y: fm * x0 + fb\n }; else if (va.x >= x1) return;\n vb = {\n x: x1,\n y: fm * x1 + fb\n };\n } else {\n if (!va) va = {\n x: x1,\n y: fm * x1 + fb\n }; else if (va.x < x0) return;\n vb = {\n x: x0,\n y: fm * x0 + fb\n };\n }\n }\n }\n edge.a = va;\n edge.b = vb;\n return true;\n }\n function d3_geom_voronoiEdge(lSite, rSite) {\n this.l = lSite;\n this.r = rSite;\n this.a = this.b = null;\n }\n function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, rSite);\n d3_geom_voronoiEdges.push(edge);\n if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n return edge;\n }\n function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, null);\n edge.a = va;\n edge.b = vb;\n d3_geom_voronoiEdges.push(edge);\n return edge;\n }\n function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n if (!edge.a && !edge.b) {\n edge.a = vertex;\n edge.l = lSite;\n edge.r = rSite;\n } else if (edge.l === rSite) {\n edge.b = vertex;\n } else {\n edge.a = vertex;\n }\n }\n function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n var va = edge.a, vb = edge.b;\n this.edge = edge;\n this.site = lSite;\n this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n }\n d3_geom_voronoiHalfEdge.prototype = {\n start: function() {\n return this.edge.l === this.site ? this.edge.a : this.edge.b;\n },\n end: function() {\n return this.edge.l === this.site ? this.edge.b : this.edge.a;\n }\n };\n function d3_geom_voronoiRedBlackTree() {\n this._ = null;\n }\n function d3_geom_voronoiRedBlackNode(node) {\n node.U = node.C = node.L = node.R = node.P = node.N = null;\n }\n d3_geom_voronoiRedBlackTree.prototype = {\n insert: function(after, node) {\n var parent, grandpa, uncle;\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = d3_geom_voronoiRedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n if (parent) {\n if (parent.L === node) parent.L = next; else parent.R = next;\n } else {\n this._ = next;\n }\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) {\n node.C = false;\n return;\n }\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n if (node) node.C = false;\n }\n };\n function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n var p = node, q = node.R, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n }\n function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n var p = node, q = node.L, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n }\n function d3_geom_voronoiRedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n }\n function d3_geom_voronoi(sites, bbox) {\n var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n d3_geom_voronoiEdges = [];\n d3_geom_voronoiCells = new Array(sites.length);\n d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n while (true) {\n circle = d3_geom_voronoiFirstCircle;\n if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n if (site.x !== x0 || site.y !== y0) {\n d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n d3_geom_voronoiAddBeach(site);\n x0 = site.x, y0 = site.y;\n }\n site = sites.pop();\n } else if (circle) {\n d3_geom_voronoiRemoveBeach(circle.arc);\n } else {\n break;\n }\n }\n if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n var diagram = {\n cells: d3_geom_voronoiCells,\n edges: d3_geom_voronoiEdges\n };\n d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n return diagram;\n }\n function d3_geom_voronoiVertexOrder(a, b) {\n return b.y - a.y || b.x - a.x;\n }\n d3.geom.voronoi = function(points) {\n var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n if (points) return voronoi(points);\n function voronoi(data) {\n var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n var s = e.start();\n return [ s.x, s.y ];\n }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n polygon.point = data[i];\n });\n return polygons;\n }\n function sites(data) {\n return data.map(function(d, i) {\n return {\n x: Math.round(fx(d, i) / ε) * ε,\n y: Math.round(fy(d, i) / ε) * ε,\n i: i\n };\n });\n }\n voronoi.links = function(data) {\n return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n return edge.l && edge.r;\n }).map(function(edge) {\n return {\n source: data[edge.l.i],\n target: data[edge.r.i]\n };\n });\n };\n voronoi.triangles = function(data) {\n var triangles = [];\n d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n while (++j < m) {\n e0 = e1;\n s0 = s1;\n e1 = edges[j].edge;\n s1 = e1.l === site ? e1.r : e1.l;\n if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n }\n }\n });\n return triangles;\n };\n voronoi.x = function(_) {\n return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n };\n voronoi.y = function(_) {\n return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n };\n voronoi.clipExtent = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n return voronoi;\n };\n voronoi.size = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n };\n return voronoi;\n };\n var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n function d3_geom_voronoiTriangleArea(a, b, c) {\n return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n }\n d3.geom.delaunay = function(vertices) {\n return d3.geom.voronoi().triangles(vertices);\n };\n d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n if (compat = arguments.length) {\n x = d3_geom_quadtreeCompatX;\n y = d3_geom_quadtreeCompatY;\n if (compat === 3) {\n y2 = y1;\n x2 = x1;\n y1 = x1 = 0;\n }\n return quadtree(points);\n }\n function quadtree(data) {\n var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n if (x1 != null) {\n x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n } else {\n x2_ = y2_ = -(x1_ = y1_ = Infinity);\n xs = [], ys = [];\n n = data.length;\n if (compat) for (i = 0; i < n; ++i) {\n d = data[i];\n if (d.x < x1_) x1_ = d.x;\n if (d.y < y1_) y1_ = d.y;\n if (d.x > x2_) x2_ = d.x;\n if (d.y > y2_) y2_ = d.y;\n xs.push(d.x);\n ys.push(d.y);\n } else for (i = 0; i < n; ++i) {\n var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n if (x_ < x1_) x1_ = x_;\n if (y_ < y1_) y1_ = y_;\n if (x_ > x2_) x2_ = x_;\n if (y_ > y2_) y2_ = y_;\n xs.push(x_);\n ys.push(y_);\n }\n }\n var dx = x2_ - x1_, dy = y2_ - y1_;\n if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n function insert(n, d, x, y, x1, y1, x2, y2) {\n if (isNaN(x) || isNaN(y)) return;\n if (n.leaf) {\n var nx = n.x, ny = n.y;\n if (nx != null) {\n if (abs(nx - x) + abs(ny - y) < .01) {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n } else {\n var nPoint = n.point;\n n.x = n.y = n.point = null;\n insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n } else {\n n.x = x, n.y = y, n.point = d;\n }\n } else {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n }\n function insertChild(n, d, x, y, x1, y1, x2, y2) {\n var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n n.leaf = false;\n n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n if (right) x1 = xm; else x2 = xm;\n if (below) y1 = ym; else y2 = ym;\n insert(n, d, x, y, x1, y1, x2, y2);\n }\n var root = d3_geom_quadtreeNode();\n root.add = function(d) {\n insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n };\n root.visit = function(f) {\n d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n };\n root.find = function(point) {\n return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n };\n i = -1;\n if (x1 == null) {\n while (++i < n) {\n insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n }\n --i;\n } else data.forEach(root.add);\n xs = ys = data = d = null;\n return root;\n }\n quadtree.x = function(_) {\n return arguments.length ? (x = _, quadtree) : x;\n };\n quadtree.y = function(_) {\n return arguments.length ? (y = _, quadtree) : y;\n };\n quadtree.extent = function(_) {\n if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n y2 = +_[1][1];\n return quadtree;\n };\n quadtree.size = function(_) {\n if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n return quadtree;\n };\n return quadtree;\n };\n function d3_geom_quadtreeCompatX(d) {\n return d.x;\n }\n function d3_geom_quadtreeCompatY(d) {\n return d.y;\n }\n function d3_geom_quadtreeNode() {\n return {\n leaf: true,\n nodes: [],\n point: null,\n x: null,\n y: null\n };\n }\n function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n if (!f(node, x1, y1, x2, y2)) {\n var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n }\n }\n function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n var minDistance2 = Infinity, closestPoint;\n (function find(node, x1, y1, x2, y2) {\n if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n if (point = node.point) {\n var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n if (distance2 < minDistance2) {\n var distance = Math.sqrt(minDistance2 = distance2);\n x0 = x - distance, y0 = y - distance;\n x3 = x + distance, y3 = y + distance;\n closestPoint = point;\n }\n }\n var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n if (node = children[i & 3]) switch (i & 3) {\n case 0:\n find(node, x1, y1, xm, ym);\n break;\n\n case 1:\n find(node, xm, y1, x2, ym);\n break;\n\n case 2:\n find(node, x1, ym, xm, y2);\n break;\n\n case 3:\n find(node, xm, ym, x2, y2);\n break;\n }\n }\n })(root, x0, y0, x3, y3);\n return closestPoint;\n }\n d3.interpolateRgb = d3_interpolateRgb;\n function d3_interpolateRgb(a, b) {\n a = d3.rgb(a);\n b = d3.rgb(b);\n var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n return function(t) {\n return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n };\n }\n d3.interpolateObject = d3_interpolateObject;\n function d3_interpolateObject(a, b) {\n var i = {}, c = {}, k;\n for (k in a) {\n if (k in b) {\n i[k] = d3_interpolate(a[k], b[k]);\n } else {\n c[k] = a[k];\n }\n }\n for (k in b) {\n if (!(k in a)) {\n c[k] = b[k];\n }\n }\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n }\n d3.interpolateNumber = d3_interpolateNumber;\n function d3_interpolateNumber(a, b) {\n a = +a, b = +b;\n return function(t) {\n return a * (1 - t) + b * t;\n };\n }\n d3.interpolateString = d3_interpolateString;\n function d3_interpolateString(a, b) {\n var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n a = a + \"\", b = b + \"\";\n while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i]) s[i] += bm; else s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({\n i: i,\n x: d3_interpolateNumber(am, bm)\n });\n }\n bi = d3_interpolate_numberB.lastIndex;\n }\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n return b(t) + \"\";\n }) : function() {\n return b;\n } : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n }\n var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n d3.interpolate = d3_interpolate;\n function d3_interpolate(a, b) {\n var i = d3.interpolators.length, f;\n while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n return f;\n }\n d3.interpolators = [ function(a, b) {\n var t = typeof b;\n return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n } ];\n d3.interpolateArray = d3_interpolateArray;\n function d3_interpolateArray(a, b) {\n var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n for (;i < na; ++i) c[i] = a[i];\n for (;i < nb; ++i) c[i] = b[i];\n return function(t) {\n for (i = 0; i < n0; ++i) c[i] = x[i](t);\n return c;\n };\n }\n var d3_ease_default = function() {\n return d3_identity;\n };\n var d3_ease = d3.map({\n linear: d3_ease_default,\n poly: d3_ease_poly,\n quad: function() {\n return d3_ease_quad;\n },\n cubic: function() {\n return d3_ease_cubic;\n },\n sin: function() {\n return d3_ease_sin;\n },\n exp: function() {\n return d3_ease_exp;\n },\n circle: function() {\n return d3_ease_circle;\n },\n elastic: d3_ease_elastic,\n back: d3_ease_back,\n bounce: function() {\n return d3_ease_bounce;\n }\n });\n var d3_ease_mode = d3.map({\n \"in\": d3_identity,\n out: d3_ease_reverse,\n \"in-out\": d3_ease_reflect,\n \"out-in\": function(f) {\n return d3_ease_reflect(d3_ease_reverse(f));\n }\n });\n d3.ease = function(name) {\n var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n t = d3_ease.get(t) || d3_ease_default;\n m = d3_ease_mode.get(m) || d3_identity;\n return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n };\n function d3_ease_clamp(f) {\n return function(t) {\n return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n };\n }\n function d3_ease_reverse(f) {\n return function(t) {\n return 1 - f(1 - t);\n };\n }\n function d3_ease_reflect(f) {\n return function(t) {\n return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n };\n }\n function d3_ease_quad(t) {\n return t * t;\n }\n function d3_ease_cubic(t) {\n return t * t * t;\n }\n function d3_ease_cubicInOut(t) {\n if (t <= 0) return 0;\n if (t >= 1) return 1;\n var t2 = t * t, t3 = t2 * t;\n return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n }\n function d3_ease_poly(e) {\n return function(t) {\n return Math.pow(t, e);\n };\n }\n function d3_ease_sin(t) {\n return 1 - Math.cos(t * halfπ);\n }\n function d3_ease_exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n function d3_ease_circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n function d3_ease_elastic(a, p) {\n var s;\n if (arguments.length < 2) p = .45;\n if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n return function(t) {\n return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n };\n }\n function d3_ease_back(s) {\n if (!s) s = 1.70158;\n return function(t) {\n return t * t * ((s + 1) * t - s);\n };\n }\n function d3_ease_bounce(t) {\n return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n }\n d3.interpolateHcl = d3_interpolateHcl;\n function d3_interpolateHcl(a, b) {\n a = d3.hcl(a);\n b = d3.hcl(b);\n var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateHsl = d3_interpolateHsl;\n function d3_interpolateHsl(a, b) {\n a = d3.hsl(a);\n b = d3.hsl(b);\n var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateLab = d3_interpolateLab;\n function d3_interpolateLab(a, b) {\n a = d3.lab(a);\n b = d3.lab(b);\n var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n return function(t) {\n return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n };\n }\n d3.interpolateRound = d3_interpolateRound;\n function d3_interpolateRound(a, b) {\n b -= a;\n return function(t) {\n return Math.round(a + b * t);\n };\n }\n d3.transform = function(string) {\n var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n return (d3.transform = function(string) {\n if (string != null) {\n g.setAttribute(\"transform\", string);\n var t = g.transform.baseVal.consolidate();\n }\n return new d3_transform(t ? t.matrix : d3_transformIdentity);\n })(string);\n };\n function d3_transform(m) {\n var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n if (r0[0] * r1[1] < r1[0] * r0[1]) {\n r0[0] *= -1;\n r0[1] *= -1;\n kx *= -1;\n kz *= -1;\n }\n this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n this.translate = [ m.e, m.f ];\n this.scale = [ kx, ky ];\n this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n }\n d3_transform.prototype.toString = function() {\n return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n };\n function d3_transformDot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n }\n function d3_transformNormalize(a) {\n var k = Math.sqrt(d3_transformDot(a, a));\n if (k) {\n a[0] /= k;\n a[1] /= k;\n }\n return k;\n }\n function d3_transformCombine(a, b, k) {\n a[0] += k * b[0];\n a[1] += k * b[1];\n return a;\n }\n var d3_transformIdentity = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n };\n d3.interpolateTransform = d3_interpolateTransform;\n function d3_interpolateTransformPop(s) {\n return s.length ? s.pop() + \",\" : \"\";\n }\n function d3_interpolateTranslate(ta, tb, s, q) {\n if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n var i = s.push(\"translate(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ta[0], tb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ta[1], tb[1])\n });\n } else if (tb[0] || tb[1]) {\n s.push(\"translate(\" + tb + \")\");\n }\n }\n function d3_interpolateRotate(ra, rb, s, q) {\n if (ra !== rb) {\n if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n x: d3_interpolateNumber(ra, rb)\n });\n } else if (rb) {\n s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n }\n }\n function d3_interpolateSkew(wa, wb, s, q) {\n if (wa !== wb) {\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n x: d3_interpolateNumber(wa, wb)\n });\n } else if (wb) {\n s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n }\n }\n function d3_interpolateScale(ka, kb, s, q) {\n if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ka[0], kb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ka[1], kb[1])\n });\n } else if (kb[0] !== 1 || kb[1] !== 1) {\n s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n }\n }\n function d3_interpolateTransform(a, b) {\n var s = [], q = [];\n a = d3.transform(a), b = d3.transform(b);\n d3_interpolateTranslate(a.translate, b.translate, s, q);\n d3_interpolateRotate(a.rotate, b.rotate, s, q);\n d3_interpolateSkew(a.skew, b.skew, s, q);\n d3_interpolateScale(a.scale, b.scale, s, q);\n a = b = null;\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n }\n function d3_uninterpolateNumber(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return (x - a) / b;\n };\n }\n function d3_uninterpolateClamp(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return Math.max(0, Math.min(1, (x - a) / b));\n };\n }\n d3.layout = {};\n d3.layout.bundle = function() {\n return function(links) {\n var paths = [], i = -1, n = links.length;\n while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n return paths;\n };\n };\n function d3_layout_bundlePath(link) {\n var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n while (start !== lca) {\n start = start.parent;\n points.push(start);\n }\n var k = points.length;\n while (end !== lca) {\n points.splice(k, 0, end);\n end = end.parent;\n }\n return points;\n }\n function d3_layout_bundleAncestors(node) {\n var ancestors = [], parent = node.parent;\n while (parent != null) {\n ancestors.push(node);\n node = parent;\n parent = parent.parent;\n }\n ancestors.push(node);\n return ancestors;\n }\n function d3_layout_bundleLeastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n while (aNode === bNode) {\n sharedNode = aNode;\n aNode = aNodes.pop();\n bNode = bNodes.pop();\n }\n return sharedNode;\n }\n d3.layout.chord = function() {\n var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n function relayout() {\n var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n chords = [];\n groups = [];\n k = 0, i = -1;\n while (++i < n) {\n x = 0, j = -1;\n while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(d3.range(n));\n k += x;\n }\n if (sortGroups) {\n groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n }\n if (sortSubgroups) {\n subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n }\n k = (τ - padding * n) / k;\n x = 0, i = -1;\n while (++i < n) {\n x0 = x, j = -1;\n while (++j < n) {\n var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n subgroups[di + \"-\" + dj] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += padding;\n }\n i = -1;\n while (++i < n) {\n j = i - 1;\n while (++j < n) {\n var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n if (source.value || target.value) {\n chords.push(source.value < target.value ? {\n source: target,\n target: source\n } : {\n source: source,\n target: target\n });\n }\n }\n }\n if (sortChords) resort();\n }\n function resort() {\n chords.sort(function(a, b) {\n return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n });\n }\n chord.matrix = function(x) {\n if (!arguments.length) return matrix;\n n = (matrix = x) && matrix.length;\n chords = groups = null;\n return chord;\n };\n chord.padding = function(x) {\n if (!arguments.length) return padding;\n padding = x;\n chords = groups = null;\n return chord;\n };\n chord.sortGroups = function(x) {\n if (!arguments.length) return sortGroups;\n sortGroups = x;\n chords = groups = null;\n return chord;\n };\n chord.sortSubgroups = function(x) {\n if (!arguments.length) return sortSubgroups;\n sortSubgroups = x;\n chords = null;\n return chord;\n };\n chord.sortChords = function(x) {\n if (!arguments.length) return sortChords;\n sortChords = x;\n if (chords) resort();\n return chord;\n };\n chord.chords = function() {\n if (!chords) relayout();\n return chords;\n };\n chord.groups = function() {\n if (!groups) relayout();\n return groups;\n };\n return chord;\n };\n d3.layout.force = function() {\n var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n function repulse(node) {\n return function(quad, x1, _, x2) {\n if (quad.point !== node) {\n var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n if (dw * dw / theta2 < dn) {\n if (dn < chargeDistance2) {\n var k = quad.charge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n return true;\n }\n if (quad.point && dn && dn < chargeDistance2) {\n var k = quad.pointCharge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n }\n return !quad.charge;\n };\n }\n force.tick = function() {\n if ((alpha *= .99) < .005) {\n timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n return true;\n }\n var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n for (i = 0; i < m; ++i) {\n o = links[i];\n s = o.source;\n t = o.target;\n x = t.x - s.x;\n y = t.y - s.y;\n if (l = x * x + y * y) {\n l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n x *= l;\n y *= l;\n t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n t.y -= y * k;\n s.x += x * (k = 1 - k);\n s.y += y * k;\n }\n }\n if (k = alpha * gravity) {\n x = size[0] / 2;\n y = size[1] / 2;\n i = -1;\n if (k) while (++i < n) {\n o = nodes[i];\n o.x += (x - o.x) * k;\n o.y += (y - o.y) * k;\n }\n }\n if (charge) {\n d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n i = -1;\n while (++i < n) {\n if (!(o = nodes[i]).fixed) {\n q.visit(repulse(o));\n }\n }\n }\n i = -1;\n while (++i < n) {\n o = nodes[i];\n if (o.fixed) {\n o.x = o.px;\n o.y = o.py;\n } else {\n o.x -= (o.px - (o.px = o.x)) * friction;\n o.y -= (o.py - (o.py = o.y)) * friction;\n }\n }\n event.tick({\n type: \"tick\",\n alpha: alpha\n });\n };\n force.nodes = function(x) {\n if (!arguments.length) return nodes;\n nodes = x;\n return force;\n };\n force.links = function(x) {\n if (!arguments.length) return links;\n links = x;\n return force;\n };\n force.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return force;\n };\n force.linkDistance = function(x) {\n if (!arguments.length) return linkDistance;\n linkDistance = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.distance = force.linkDistance;\n force.linkStrength = function(x) {\n if (!arguments.length) return linkStrength;\n linkStrength = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.friction = function(x) {\n if (!arguments.length) return friction;\n friction = +x;\n return force;\n };\n force.charge = function(x) {\n if (!arguments.length) return charge;\n charge = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.chargeDistance = function(x) {\n if (!arguments.length) return Math.sqrt(chargeDistance2);\n chargeDistance2 = x * x;\n return force;\n };\n force.gravity = function(x) {\n if (!arguments.length) return gravity;\n gravity = +x;\n return force;\n };\n force.theta = function(x) {\n if (!arguments.length) return Math.sqrt(theta2);\n theta2 = x * x;\n return force;\n };\n force.alpha = function(x) {\n if (!arguments.length) return alpha;\n x = +x;\n if (alpha) {\n if (x > 0) {\n alpha = x;\n } else {\n timer.c = null, timer.t = NaN, timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n }\n } else if (x > 0) {\n event.start({\n type: \"start\",\n alpha: alpha = x\n });\n timer = d3_timer(force.tick);\n }\n return force;\n };\n force.start = function() {\n var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n for (i = 0; i < n; ++i) {\n (o = nodes[i]).index = i;\n o.weight = 0;\n }\n for (i = 0; i < m; ++i) {\n o = links[i];\n if (typeof o.source == \"number\") o.source = nodes[o.source];\n if (typeof o.target == \"number\") o.target = nodes[o.target];\n ++o.source.weight;\n ++o.target.weight;\n }\n for (i = 0; i < n; ++i) {\n o = nodes[i];\n if (isNaN(o.x)) o.x = position(\"x\", w);\n if (isNaN(o.y)) o.y = position(\"y\", h);\n if (isNaN(o.px)) o.px = o.x;\n if (isNaN(o.py)) o.py = o.y;\n }\n distances = [];\n if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n strengths = [];\n if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n charges = [];\n if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n function position(dimension, size) {\n if (!neighbors) {\n neighbors = new Array(n);\n for (j = 0; j < n; ++j) {\n neighbors[j] = [];\n }\n for (j = 0; j < m; ++j) {\n var o = links[j];\n neighbors[o.source.index].push(o.target);\n neighbors[o.target.index].push(o.source);\n }\n }\n var candidates = neighbors[i], j = -1, l = candidates.length, x;\n while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n return Math.random() * size;\n }\n return force.resume();\n };\n force.resume = function() {\n return force.alpha(.1);\n };\n force.stop = function() {\n return force.alpha(0);\n };\n force.drag = function() {\n if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n if (!arguments.length) return drag;\n this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n };\n function dragmove(d) {\n d.px = d3.event.x, d.py = d3.event.y;\n force.resume();\n }\n return d3.rebind(force, event, \"on\");\n };\n function d3_layout_forceDragstart(d) {\n d.fixed |= 2;\n }\n function d3_layout_forceDragend(d) {\n d.fixed &= ~6;\n }\n function d3_layout_forceMouseover(d) {\n d.fixed |= 4;\n d.px = d.x, d.py = d.y;\n }\n function d3_layout_forceMouseout(d) {\n d.fixed &= ~4;\n }\n function d3_layout_forceAccumulate(quad, alpha, charges) {\n var cx = 0, cy = 0;\n quad.charge = 0;\n if (!quad.leaf) {\n var nodes = quad.nodes, n = nodes.length, i = -1, c;\n while (++i < n) {\n c = nodes[i];\n if (c == null) continue;\n d3_layout_forceAccumulate(c, alpha, charges);\n quad.charge += c.charge;\n cx += c.charge * c.cx;\n cy += c.charge * c.cy;\n }\n }\n if (quad.point) {\n if (!quad.leaf) {\n quad.point.x += Math.random() - .5;\n quad.point.y += Math.random() - .5;\n }\n var k = alpha * charges[quad.point.index];\n quad.charge += quad.pointCharge = k;\n cx += k * quad.point.x;\n cy += k * quad.point.y;\n }\n quad.cx = cx / quad.charge;\n quad.cy = cy / quad.charge;\n }\n var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n d3.layout.hierarchy = function() {\n var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n function hierarchy(root) {\n var stack = [ root ], nodes = [], node;\n root.depth = 0;\n while ((node = stack.pop()) != null) {\n nodes.push(node);\n if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n var n, childs, child;\n while (--n >= 0) {\n stack.push(child = childs[n]);\n child.parent = node;\n child.depth = node.depth + 1;\n }\n if (value) node.value = 0;\n node.children = childs;\n } else {\n if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n delete node.children;\n }\n }\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var childs, parent;\n if (sort && (childs = node.children)) childs.sort(sort);\n if (value && (parent = node.parent)) parent.value += node.value;\n });\n return nodes;\n }\n hierarchy.sort = function(x) {\n if (!arguments.length) return sort;\n sort = x;\n return hierarchy;\n };\n hierarchy.children = function(x) {\n if (!arguments.length) return children;\n children = x;\n return hierarchy;\n };\n hierarchy.value = function(x) {\n if (!arguments.length) return value;\n value = x;\n return hierarchy;\n };\n hierarchy.revalue = function(root) {\n if (value) {\n d3_layout_hierarchyVisitBefore(root, function(node) {\n if (node.children) node.value = 0;\n });\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var parent;\n if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n if (parent = node.parent) parent.value += node.value;\n });\n }\n return root;\n };\n return hierarchy;\n };\n function d3_layout_hierarchyRebind(object, hierarchy) {\n d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n object.nodes = object;\n object.links = d3_layout_hierarchyLinks;\n return object;\n }\n function d3_layout_hierarchyVisitBefore(node, callback) {\n var nodes = [ node ];\n while ((node = nodes.pop()) != null) {\n callback(node);\n if ((children = node.children) && (n = children.length)) {\n var n, children;\n while (--n >= 0) nodes.push(children[n]);\n }\n }\n }\n function d3_layout_hierarchyVisitAfter(node, callback) {\n var nodes = [ node ], nodes2 = [];\n while ((node = nodes.pop()) != null) {\n nodes2.push(node);\n if ((children = node.children) && (n = children.length)) {\n var i = -1, n, children;\n while (++i < n) nodes.push(children[i]);\n }\n }\n while ((node = nodes2.pop()) != null) {\n callback(node);\n }\n }\n function d3_layout_hierarchyChildren(d) {\n return d.children;\n }\n function d3_layout_hierarchyValue(d) {\n return d.value;\n }\n function d3_layout_hierarchySort(a, b) {\n return b.value - a.value;\n }\n function d3_layout_hierarchyLinks(nodes) {\n return d3.merge(nodes.map(function(parent) {\n return (parent.children || []).map(function(child) {\n return {\n source: parent,\n target: child\n };\n });\n }));\n }\n d3.layout.partition = function() {\n var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n function position(node, x, dx, dy) {\n var children = node.children;\n node.x = x;\n node.y = node.depth * dy;\n node.dx = dx;\n node.dy = dy;\n if (children && (n = children.length)) {\n var i = -1, n, c, d;\n dx = node.value ? dx / node.value : 0;\n while (++i < n) {\n position(c = children[i], x, d = c.value * dx, dy);\n x += d;\n }\n }\n }\n function depth(node) {\n var children = node.children, d = 0;\n if (children && (n = children.length)) {\n var i = -1, n;\n while (++i < n) d = Math.max(d, depth(children[i]));\n }\n return 1 + d;\n }\n function partition(d, i) {\n var nodes = hierarchy.call(this, d, i);\n position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n return nodes;\n }\n partition.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return partition;\n };\n return d3_layout_hierarchyRebind(partition, hierarchy);\n };\n d3.layout.pie = function() {\n var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n function pie(data) {\n var n = data.length, values = data.map(function(d, i) {\n return +value.call(pie, d, i);\n }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n return values[j] - values[i];\n } : function(i, j) {\n return sort(data[i], data[j]);\n });\n index.forEach(function(i) {\n arcs[i] = {\n data: data[i],\n value: v = values[i],\n startAngle: a,\n endAngle: a += v * k + pa,\n padAngle: p\n };\n });\n return arcs;\n }\n pie.value = function(_) {\n if (!arguments.length) return value;\n value = _;\n return pie;\n };\n pie.sort = function(_) {\n if (!arguments.length) return sort;\n sort = _;\n return pie;\n };\n pie.startAngle = function(_) {\n if (!arguments.length) return startAngle;\n startAngle = _;\n return pie;\n };\n pie.endAngle = function(_) {\n if (!arguments.length) return endAngle;\n endAngle = _;\n return pie;\n };\n pie.padAngle = function(_) {\n if (!arguments.length) return padAngle;\n padAngle = _;\n return pie;\n };\n return pie;\n };\n var d3_layout_pieSortByValue = {};\n d3.layout.stack = function() {\n var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n function stack(data, index) {\n if (!(n = data.length)) return data;\n var series = data.map(function(d, i) {\n return values.call(stack, d, i);\n });\n var points = series.map(function(d) {\n return d.map(function(v, i) {\n return [ x.call(stack, v, i), y.call(stack, v, i) ];\n });\n });\n var orders = order.call(stack, points, index);\n series = d3.permute(series, orders);\n points = d3.permute(points, orders);\n var offsets = offset.call(stack, points, index);\n var m = series[0].length, n, i, j, o;\n for (j = 0; j < m; ++j) {\n out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n for (i = 1; i < n; ++i) {\n out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n }\n }\n return data;\n }\n stack.values = function(x) {\n if (!arguments.length) return values;\n values = x;\n return stack;\n };\n stack.order = function(x) {\n if (!arguments.length) return order;\n order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n return stack;\n };\n stack.offset = function(x) {\n if (!arguments.length) return offset;\n offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n return stack;\n };\n stack.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n return stack;\n };\n stack.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n return stack;\n };\n stack.out = function(z) {\n if (!arguments.length) return out;\n out = z;\n return stack;\n };\n return stack;\n };\n function d3_layout_stackX(d) {\n return d.x;\n }\n function d3_layout_stackY(d) {\n return d.y;\n }\n function d3_layout_stackOut(d, y0, y) {\n d.y0 = y0;\n d.y = y;\n }\n var d3_layout_stackOrders = d3.map({\n \"inside-out\": function(data) {\n var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n return max[a] - max[b];\n }), top = 0, bottom = 0, tops = [], bottoms = [];\n for (i = 0; i < n; ++i) {\n j = index[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n return bottoms.reverse().concat(tops);\n },\n reverse: function(data) {\n return d3.range(data.length).reverse();\n },\n \"default\": d3_layout_stackOrderDefault\n });\n var d3_layout_stackOffsets = d3.map({\n silhouette: function(data) {\n var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o > max) max = o;\n sums.push(o);\n }\n for (j = 0; j < m; ++j) {\n y0[j] = (max - sums[j]) / 2;\n }\n return y0;\n },\n wiggle: function(data) {\n var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n y0[0] = o = o0 = 0;\n for (j = 1; j < m; ++j) {\n for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n }\n s2 += s3 * data[i][j][1];\n }\n y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n if (o < o0) o0 = o;\n }\n for (j = 0; j < m; ++j) y0[j] -= o0;\n return y0;\n },\n expand: function(data) {\n var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n }\n for (j = 0; j < m; ++j) y0[j] = 0;\n return y0;\n },\n zero: d3_layout_stackOffsetZero\n });\n function d3_layout_stackOrderDefault(data) {\n return d3.range(data.length);\n }\n function d3_layout_stackOffsetZero(data) {\n var j = -1, m = data[0].length, y0 = [];\n while (++j < m) y0[j] = 0;\n return y0;\n }\n function d3_layout_stackMaxIndex(array) {\n var i = 1, j = 0, v = array[0][1], k, n = array.length;\n for (;i < n; ++i) {\n if ((k = array[i][1]) > v) {\n j = i;\n v = k;\n }\n }\n return j;\n }\n function d3_layout_stackReduceSum(d) {\n return d.reduce(d3_layout_stackSum, 0);\n }\n function d3_layout_stackSum(p, d) {\n return p + d[1];\n }\n d3.layout.histogram = function() {\n var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n function histogram(data, i) {\n var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n while (++i < m) {\n bin = bins[i] = [];\n bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n bin.y = 0;\n }\n if (m > 0) {\n i = -1;\n while (++i < n) {\n x = values[i];\n if (x >= range[0] && x <= range[1]) {\n bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n bin.y += k;\n bin.push(data[i]);\n }\n }\n }\n return bins;\n }\n histogram.value = function(x) {\n if (!arguments.length) return valuer;\n valuer = x;\n return histogram;\n };\n histogram.range = function(x) {\n if (!arguments.length) return ranger;\n ranger = d3_functor(x);\n return histogram;\n };\n histogram.bins = function(x) {\n if (!arguments.length) return binner;\n binner = typeof x === \"number\" ? function(range) {\n return d3_layout_histogramBinFixed(range, x);\n } : d3_functor(x);\n return histogram;\n };\n histogram.frequency = function(x) {\n if (!arguments.length) return frequency;\n frequency = !!x;\n return histogram;\n };\n return histogram;\n };\n function d3_layout_histogramBinSturges(range, values) {\n return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n }\n function d3_layout_histogramBinFixed(range, n) {\n var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n while (++x <= n) f[x] = m * x + b;\n return f;\n }\n function d3_layout_histogramRange(values) {\n return [ d3.min(values), d3.max(values) ];\n }\n d3.layout.pack = function() {\n var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n function pack(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n return radius;\n };\n root.x = root.y = 0;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r = +r(d.value);\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n if (padding) {\n var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r += dr;\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r -= dr;\n });\n }\n d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n return nodes;\n }\n pack.size = function(_) {\n if (!arguments.length) return size;\n size = _;\n return pack;\n };\n pack.radius = function(_) {\n if (!arguments.length) return radius;\n radius = _ == null || typeof _ === \"function\" ? _ : +_;\n return pack;\n };\n pack.padding = function(_) {\n if (!arguments.length) return padding;\n padding = +_;\n return pack;\n };\n return d3_layout_hierarchyRebind(pack, hierarchy);\n };\n function d3_layout_packSort(a, b) {\n return a.value - b.value;\n }\n function d3_layout_packInsert(a, b) {\n var c = a._pack_next;\n a._pack_next = b;\n b._pack_prev = a;\n b._pack_next = c;\n c._pack_prev = b;\n }\n function d3_layout_packSplice(a, b) {\n a._pack_next = b;\n b._pack_prev = a;\n }\n function d3_layout_packIntersects(a, b) {\n var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n return .999 * dr * dr > dx * dx + dy * dy;\n }\n function d3_layout_packSiblings(node) {\n if (!(nodes = node.children) || !(n = nodes.length)) return;\n var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n function bound(node) {\n xMin = Math.min(node.x - node.r, xMin);\n xMax = Math.max(node.x + node.r, xMax);\n yMin = Math.min(node.y - node.r, yMin);\n yMax = Math.max(node.y + node.r, yMax);\n }\n nodes.forEach(d3_layout_packLink);\n a = nodes[0];\n a.x = -a.r;\n a.y = 0;\n bound(a);\n if (n > 1) {\n b = nodes[1];\n b.x = b.r;\n b.y = 0;\n bound(b);\n if (n > 2) {\n c = nodes[2];\n d3_layout_packPlace(a, b, c);\n bound(c);\n d3_layout_packInsert(a, c);\n a._pack_prev = c;\n d3_layout_packInsert(c, b);\n b = a._pack_next;\n for (i = 3; i < n; i++) {\n d3_layout_packPlace(a, b, c = nodes[i]);\n var isect = 0, s1 = 1, s2 = 1;\n for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n if (d3_layout_packIntersects(j, c)) {\n isect = 1;\n break;\n }\n }\n if (isect == 1) {\n for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n if (d3_layout_packIntersects(k, c)) {\n break;\n }\n }\n }\n if (isect) {\n if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n i--;\n } else {\n d3_layout_packInsert(a, c);\n b = c;\n bound(c);\n }\n }\n }\n }\n var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n for (i = 0; i < n; i++) {\n c = nodes[i];\n c.x -= cx;\n c.y -= cy;\n cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n }\n node.r = cr;\n nodes.forEach(d3_layout_packUnlink);\n }\n function d3_layout_packLink(node) {\n node._pack_next = node._pack_prev = node;\n }\n function d3_layout_packUnlink(node) {\n delete node._pack_next;\n delete node._pack_prev;\n }\n function d3_layout_packTransform(node, x, y, k) {\n var children = node.children;\n node.x = x += k * node.x;\n node.y = y += k * node.y;\n node.r *= k;\n if (children) {\n var i = -1, n = children.length;\n while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n }\n }\n function d3_layout_packPlace(a, b, c) {\n var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n if (db && (dx || dy)) {\n var da = b.r + c.r, dc = dx * dx + dy * dy;\n da *= da;\n db *= db;\n var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n c.x = a.x + x * dx + y * dy;\n c.y = a.y + x * dy - y * dx;\n } else {\n c.x = a.x + db;\n c.y = a.y;\n }\n }\n d3.layout.tree = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n function tree(d, i) {\n var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n d3_layout_hierarchyVisitBefore(root1, secondWalk);\n if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n var left = root0, right = root0, bottom = root0;\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return nodes;\n }\n function wrapTree(root0) {\n var root1 = {\n A: null,\n children: [ root0 ]\n }, queue = [ root1 ], node1;\n while ((node1 = queue.pop()) != null) {\n for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n queue.push((children[i] = child = {\n _: children[i],\n parent: node1,\n children: (child = children[i].children) && child.slice() || [],\n A: null,\n a: null,\n z: 0,\n m: 0,\n c: 0,\n s: 0,\n t: null,\n i: i\n }).a = child);\n }\n }\n return root1.children[0];\n }\n function firstWalk(v) {\n var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n if (children.length) {\n d3_layout_treeShift(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n vom = d3_layout_treeLeft(vom);\n vop = d3_layout_treeRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !d3_layout_treeRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !d3_layout_treeLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= size[0];\n node.y = node.depth * size[1];\n }\n tree.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return tree;\n };\n tree.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null ? sizeNode : null;\n return tree;\n };\n tree.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) == null ? null : sizeNode;\n return tree;\n };\n return d3_layout_hierarchyRebind(tree, hierarchy);\n };\n function d3_layout_treeSeparation(a, b) {\n return a.parent == b.parent ? 1 : 2;\n }\n function d3_layout_treeLeft(v) {\n var children = v.children;\n return children.length ? children[0] : v.t;\n }\n function d3_layout_treeRight(v) {\n var children = v.children, n;\n return (n = children.length) ? children[n - 1] : v.t;\n }\n function d3_layout_treeMove(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n }\n function d3_layout_treeShift(v) {\n var shift = 0, change = 0, children = v.children, i = children.length, w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n }\n function d3_layout_treeAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n }\n d3.layout.cluster = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n function cluster(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var children = node.children;\n if (children && children.length) {\n node.x = d3_layout_clusterX(children);\n node.y = d3_layout_clusterY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n node.x = (node.x - root.x) * size[0];\n node.y = (root.y - node.y) * size[1];\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * size[0];\n node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n });\n return nodes;\n }\n cluster.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return cluster;\n };\n cluster.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null;\n return cluster;\n };\n cluster.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) != null;\n return cluster;\n };\n return d3_layout_hierarchyRebind(cluster, hierarchy);\n };\n function d3_layout_clusterY(children) {\n return 1 + d3.max(children, function(child) {\n return child.y;\n });\n }\n function d3_layout_clusterX(children) {\n return children.reduce(function(x, child) {\n return x + child.x;\n }, 0) / children.length;\n }\n function d3_layout_clusterLeft(node) {\n var children = node.children;\n return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n }\n function d3_layout_clusterRight(node) {\n var children = node.children, n;\n return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n }\n d3.layout.treemap = function() {\n var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n function scale(children, k) {\n var i = -1, n = children.length, child, area;\n while (++i < n) {\n area = (child = children[i]).value * (k < 0 ? 0 : k);\n child.area = isNaN(area) || area <= 0 ? 0 : area;\n }\n }\n function squarify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while ((n = remaining.length) > 0) {\n row.push(child = remaining[n - 1]);\n row.area += child.area;\n if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n remaining.pop();\n best = score;\n } else {\n row.area -= row.pop().area;\n position(row, u, rect, false);\n u = Math.min(rect.dx, rect.dy);\n row.length = row.area = 0;\n best = Infinity;\n }\n }\n if (row.length) {\n position(row, u, rect, true);\n row.length = row.area = 0;\n }\n children.forEach(squarify);\n }\n }\n function stickify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), remaining = children.slice(), child, row = [];\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while (child = remaining.pop()) {\n row.push(child);\n row.area += child.area;\n if (child.z != null) {\n position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n row.length = row.area = 0;\n }\n }\n children.forEach(stickify);\n }\n }\n function worst(row, u) {\n var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n while (++i < n) {\n if (!(r = row[i].area)) continue;\n if (r < rmin) rmin = r;\n if (r > rmax) rmax = r;\n }\n s *= s;\n u *= u;\n return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n }\n function position(row, u, rect, flush) {\n var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n if (u == rect.dx) {\n if (flush || v > rect.dy) v = rect.dy;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dy = v;\n x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n }\n o.z = true;\n o.dx += rect.x + rect.dx - x;\n rect.y += v;\n rect.dy -= v;\n } else {\n if (flush || v > rect.dx) v = rect.dx;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dx = v;\n y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n }\n o.z = false;\n o.dy += rect.y + rect.dy - y;\n rect.x += v;\n rect.dx -= v;\n }\n }\n function treemap(d) {\n var nodes = stickies || hierarchy(d), root = nodes[0];\n root.x = root.y = 0;\n if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n if (stickies) hierarchy.revalue(root);\n scale([ root ], root.dx * root.dy / root.value);\n (stickies ? stickify : squarify)(root);\n if (sticky) stickies = nodes;\n return nodes;\n }\n treemap.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return treemap;\n };\n treemap.padding = function(x) {\n if (!arguments.length) return padding;\n function padFunction(node) {\n var p = x.call(treemap, node, node.depth);\n return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n }\n function padConstant(node) {\n return d3_layout_treemapPad(node, x);\n }\n var type;\n pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n padConstant) : padConstant;\n return treemap;\n };\n treemap.round = function(x) {\n if (!arguments.length) return round != Number;\n round = x ? Math.round : Number;\n return treemap;\n };\n treemap.sticky = function(x) {\n if (!arguments.length) return sticky;\n sticky = x;\n stickies = null;\n return treemap;\n };\n treemap.ratio = function(x) {\n if (!arguments.length) return ratio;\n ratio = x;\n return treemap;\n };\n treemap.mode = function(x) {\n if (!arguments.length) return mode;\n mode = x + \"\";\n return treemap;\n };\n return d3_layout_hierarchyRebind(treemap, hierarchy);\n };\n function d3_layout_treemapPadNull(node) {\n return {\n x: node.x,\n y: node.y,\n dx: node.dx,\n dy: node.dy\n };\n }\n function d3_layout_treemapPad(node, padding) {\n var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n if (dx < 0) {\n x += dx / 2;\n dx = 0;\n }\n if (dy < 0) {\n y += dy / 2;\n dy = 0;\n }\n return {\n x: x,\n y: y,\n dx: dx,\n dy: dy\n };\n }\n d3.random = {\n normal: function(µ, σ) {\n var n = arguments.length;\n if (n < 2) σ = 1;\n if (n < 1) µ = 0;\n return function() {\n var x, y, r;\n do {\n x = Math.random() * 2 - 1;\n y = Math.random() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n };\n },\n logNormal: function() {\n var random = d3.random.normal.apply(d3, arguments);\n return function() {\n return Math.exp(random());\n };\n },\n bates: function(m) {\n var random = d3.random.irwinHall(m);\n return function() {\n return random() / m;\n };\n },\n irwinHall: function(m) {\n return function() {\n for (var s = 0, j = 0; j < m; j++) s += Math.random();\n return s;\n };\n }\n };\n d3.scale = {};\n function d3_scaleExtent(domain) {\n var start = domain[0], stop = domain[domain.length - 1];\n return start < stop ? [ start, stop ] : [ stop, start ];\n }\n function d3_scaleRange(scale) {\n return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n }\n function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n return function(x) {\n return i(u(x));\n };\n }\n function d3_scale_nice(domain, nice) {\n var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n if (x1 < x0) {\n dx = i0, i0 = i1, i1 = dx;\n dx = x0, x0 = x1, x1 = dx;\n }\n domain[i0] = nice.floor(x0);\n domain[i1] = nice.ceil(x1);\n return domain;\n }\n function d3_scale_niceStep(step) {\n return step ? {\n floor: function(x) {\n return Math.floor(x / step) * step;\n },\n ceil: function(x) {\n return Math.ceil(x / step) * step;\n }\n } : d3_scale_niceIdentity;\n }\n var d3_scale_niceIdentity = {\n floor: d3_identity,\n ceil: d3_identity\n };\n function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n if (domain[k] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n while (++j <= k) {\n u.push(uninterpolate(domain[j - 1], domain[j]));\n i.push(interpolate(range[j - 1], range[j]));\n }\n return function(x) {\n var j = d3.bisect(domain, x, 1, k) - 1;\n return i[j](u[j](x));\n };\n }\n d3.scale.linear = function() {\n return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n };\n function d3_scale_linear(domain, range, interpolate, clamp) {\n var output, input;\n function rescale() {\n var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n output = linear(domain, range, uninterpolate, interpolate);\n input = linear(range, domain, uninterpolate, d3_interpolate);\n return scale;\n }\n function scale(x) {\n return output(x);\n }\n scale.invert = function(y) {\n return input(y);\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(Number);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.rangeRound = function(x) {\n return scale.range(x).interpolate(d3_interpolateRound);\n };\n scale.clamp = function(x) {\n if (!arguments.length) return clamp;\n clamp = x;\n return rescale();\n };\n scale.interpolate = function(x) {\n if (!arguments.length) return interpolate;\n interpolate = x;\n return rescale();\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n d3_scale_linearNice(domain, m);\n return rescale();\n };\n scale.copy = function() {\n return d3_scale_linear(domain, range, interpolate, clamp);\n };\n return rescale();\n }\n function d3_scale_linearRebind(scale, linear) {\n return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n }\n function d3_scale_linearNice(domain, m) {\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n return domain;\n }\n function d3_scale_linearTickRange(domain, m) {\n if (m == null) m = 10;\n var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n extent[0] = Math.ceil(extent[0] / step) * step;\n extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n extent[2] = step;\n return extent;\n }\n function d3_scale_linearTicks(domain, m) {\n return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n }\n function d3_scale_linearTickFormat(domain, m, format) {\n var range = d3_scale_linearTickRange(domain, m);\n if (format) {\n var match = d3_format_re.exec(format);\n match.shift();\n if (match[8] === \"s\") {\n var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n match[8] = \"f\";\n format = d3.format(match.join(\"\"));\n return function(d) {\n return format(prefix.scale(d)) + prefix.symbol;\n };\n }\n if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n format = match.join(\"\");\n } else {\n format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n }\n return d3.format(format);\n }\n var d3_scale_linearFormatSignificant = {\n s: 1,\n g: 1,\n p: 1,\n r: 1,\n e: 1\n };\n function d3_scale_linearPrecision(value) {\n return -Math.floor(Math.log(value) / Math.LN10 + .01);\n }\n function d3_scale_linearFormatPrecision(type, range) {\n var p = d3_scale_linearPrecision(range[2]);\n return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n }\n d3.scale.log = function() {\n return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n };\n function d3_scale_log(linear, base, positive, domain) {\n function log(x) {\n return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n }\n function pow(x) {\n return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n }\n function scale(x) {\n return linear(log(x));\n }\n scale.invert = function(x) {\n return pow(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n positive = x[0] >= 0;\n linear.domain((domain = x.map(Number)).map(log));\n return scale;\n };\n scale.base = function(_) {\n if (!arguments.length) return base;\n base = +_;\n linear.domain(domain.map(log));\n return scale;\n };\n scale.nice = function() {\n var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n linear.domain(niced);\n domain = niced.map(pow);\n return scale;\n };\n scale.ticks = function() {\n var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n if (isFinite(j - i)) {\n if (positive) {\n for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n ticks.push(pow(i));\n } else {\n ticks.push(pow(i));\n for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n }\n for (i = 0; ticks[i] < u; i++) {}\n for (j = ticks.length; ticks[j - 1] > v; j--) {}\n ticks = ticks.slice(i, j);\n }\n return ticks;\n };\n scale.tickFormat = function(n, format) {\n if (!arguments.length) return d3_scale_logFormat;\n if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n var k = Math.max(1, base * n / scale.ticks().length);\n return function(d) {\n var i = d / pow(Math.round(log(d)));\n if (i * base < base - .5) i *= base;\n return i <= k ? format(d) : \"\";\n };\n };\n scale.copy = function() {\n return d3_scale_log(linear.copy(), base, positive, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n floor: function(x) {\n return -Math.ceil(-x);\n },\n ceil: function(x) {\n return -Math.floor(-x);\n }\n };\n d3.scale.pow = function() {\n return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n };\n function d3_scale_pow(linear, exponent, domain) {\n var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n function scale(x) {\n return linear(powp(x));\n }\n scale.invert = function(x) {\n return powb(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n linear.domain((domain = x.map(Number)).map(powp));\n return scale;\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n return scale.domain(d3_scale_linearNice(domain, m));\n };\n scale.exponent = function(x) {\n if (!arguments.length) return exponent;\n powp = d3_scale_powPow(exponent = x);\n powb = d3_scale_powPow(1 / exponent);\n linear.domain(domain.map(powp));\n return scale;\n };\n scale.copy = function() {\n return d3_scale_pow(linear.copy(), exponent, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_scale_powPow(e) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n };\n }\n d3.scale.sqrt = function() {\n return d3.scale.pow().exponent(.5);\n };\n d3.scale.ordinal = function() {\n return d3_scale_ordinal([], {\n t: \"range\",\n a: [ [] ]\n });\n };\n function d3_scale_ordinal(domain, ranger) {\n var index, range, rangeBand;\n function scale(x) {\n return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n }\n function steps(start, step) {\n return d3.range(domain.length).map(function(i) {\n return start + step * i;\n });\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = [];\n index = new d3_Map();\n var i = -1, n = x.length, xi;\n while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n return scale[ranger.t].apply(scale, ranger.a);\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n rangeBand = 0;\n ranger = {\n t: \"range\",\n a: arguments\n };\n return scale;\n };\n scale.rangePoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n 0) : (stop - start) / (domain.length - 1 + padding);\n range = steps(start + step * padding / 2, step);\n rangeBand = 0;\n ranger = {\n t: \"rangePoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundPoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n rangeBand = 0;\n ranger = {\n t: \"rangeRoundPoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n range = steps(start + step * outerPadding, step);\n if (reverse) range.reverse();\n rangeBand = step * (1 - padding);\n ranger = {\n t: \"rangeBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n if (reverse) range.reverse();\n rangeBand = Math.round(step * (1 - padding));\n ranger = {\n t: \"rangeRoundBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBand = function() {\n return rangeBand;\n };\n scale.rangeExtent = function() {\n return d3_scaleExtent(ranger.a[0]);\n };\n scale.copy = function() {\n return d3_scale_ordinal(domain, ranger);\n };\n return scale.domain(domain);\n }\n d3.scale.category10 = function() {\n return d3.scale.ordinal().range(d3_category10);\n };\n d3.scale.category20 = function() {\n return d3.scale.ordinal().range(d3_category20);\n };\n d3.scale.category20b = function() {\n return d3.scale.ordinal().range(d3_category20b);\n };\n d3.scale.category20c = function() {\n return d3.scale.ordinal().range(d3_category20c);\n };\n var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n d3.scale.quantile = function() {\n return d3_scale_quantile([], []);\n };\n function d3_scale_quantile(domain, range) {\n var thresholds;\n function rescale() {\n var k = 0, q = range.length;\n thresholds = [];\n while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n return scale;\n }\n function scale(x) {\n if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.quantiles = function() {\n return thresholds;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n };\n scale.copy = function() {\n return d3_scale_quantile(domain, range);\n };\n return rescale();\n }\n d3.scale.quantize = function() {\n return d3_scale_quantize(0, 1, [ 0, 1 ]);\n };\n function d3_scale_quantize(x0, x1, range) {\n var kx, i;\n function scale(x) {\n return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n }\n function rescale() {\n kx = range.length / (x1 - x0);\n i = range.length - 1;\n return scale;\n }\n scale.domain = function(x) {\n if (!arguments.length) return [ x0, x1 ];\n x0 = +x[0];\n x1 = +x[x.length - 1];\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n y = y < 0 ? NaN : y / kx + x0;\n return [ y, y + 1 / kx ];\n };\n scale.copy = function() {\n return d3_scale_quantize(x0, x1, range);\n };\n return rescale();\n }\n d3.scale.threshold = function() {\n return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n };\n function d3_scale_threshold(domain, range) {\n function scale(x) {\n if (x <= x) return range[d3.bisect(domain, x)];\n }\n scale.domain = function(_) {\n if (!arguments.length) return domain;\n domain = _;\n return scale;\n };\n scale.range = function(_) {\n if (!arguments.length) return range;\n range = _;\n return scale;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return [ domain[y - 1], domain[y] ];\n };\n scale.copy = function() {\n return d3_scale_threshold(domain, range);\n };\n return scale;\n }\n d3.scale.identity = function() {\n return d3_scale_identity([ 0, 1 ]);\n };\n function d3_scale_identity(domain) {\n function identity(x) {\n return +x;\n }\n identity.invert = identity;\n identity.domain = identity.range = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(identity);\n return identity;\n };\n identity.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n identity.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n identity.copy = function() {\n return d3_scale_identity(domain);\n };\n return identity;\n }\n d3.svg = {};\n function d3_zero() {\n return 0;\n }\n d3.svg.arc = function() {\n var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n function arc() {\n var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n if (!cw) p1 *= -1;\n if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n }\n if (r1) {\n x0 = r1 * Math.cos(a0 + p1);\n y0 = r1 * Math.sin(a0 + p1);\n x1 = r1 * Math.cos(a1 - p1);\n y1 = r1 * Math.sin(a1 - p1);\n var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n var h1 = (a0 + a1) / 2;\n x0 = r1 * Math.cos(h1);\n y0 = r1 * Math.sin(h1);\n x1 = y1 = null;\n }\n } else {\n x0 = y0 = 0;\n }\n if (r0) {\n x2 = r0 * Math.cos(a1 - p0);\n y2 = r0 * Math.sin(a1 - p0);\n x3 = r0 * Math.cos(a0 + p0);\n y3 = r0 * Math.sin(a0 + p0);\n var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n var h0 = (a0 + a1) / 2;\n x2 = r0 * Math.cos(h0);\n y2 = r0 * Math.sin(h0);\n x3 = y3 = null;\n }\n } else {\n x2 = y2 = 0;\n }\n if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n cr = r0 < r1 ^ cw ? 0 : 1;\n var rc1 = rc, rc0 = rc;\n if (da < π) {\n var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n if (x1 != null) {\n var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n if (rc === rc1) {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n } else {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n }\n if (x3 != null) {\n var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n if (rc === rc0) {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n } else {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n }\n } else {\n path.push(\"L\", x2, \",\", y2);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n path.push(\"L\", x2, \",\", y2);\n if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n }\n path.push(\"Z\");\n return path.join(\"\");\n }\n function circleSegment(r1, cw) {\n return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n }\n arc.innerRadius = function(v) {\n if (!arguments.length) return innerRadius;\n innerRadius = d3_functor(v);\n return arc;\n };\n arc.outerRadius = function(v) {\n if (!arguments.length) return outerRadius;\n outerRadius = d3_functor(v);\n return arc;\n };\n arc.cornerRadius = function(v) {\n if (!arguments.length) return cornerRadius;\n cornerRadius = d3_functor(v);\n return arc;\n };\n arc.padRadius = function(v) {\n if (!arguments.length) return padRadius;\n padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n return arc;\n };\n arc.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return arc;\n };\n arc.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return arc;\n };\n arc.padAngle = function(v) {\n if (!arguments.length) return padAngle;\n padAngle = d3_functor(v);\n return arc;\n };\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n return [ Math.cos(a) * r, Math.sin(a) * r ];\n };\n return arc;\n };\n var d3_svg_arcAuto = \"auto\";\n function d3_svg_arcInnerRadius(d) {\n return d.innerRadius;\n }\n function d3_svg_arcOuterRadius(d) {\n return d.outerRadius;\n }\n function d3_svg_arcStartAngle(d) {\n return d.startAngle;\n }\n function d3_svg_arcEndAngle(d) {\n return d.endAngle;\n }\n function d3_svg_arcPadAngle(d) {\n return d && d.padAngle;\n }\n function d3_svg_arcSweep(x0, y0, x1, y1) {\n return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n }\n function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n }\n function d3_svg_line(projection) {\n var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n function line(data) {\n var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n function segment() {\n segments.push(\"M\", interpolate(projection(points), tension));\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n } else if (points.length) {\n segment();\n points = [];\n }\n }\n if (points.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n line.x = function(_) {\n if (!arguments.length) return x;\n x = _;\n return line;\n };\n line.y = function(_) {\n if (!arguments.length) return y;\n y = _;\n return line;\n };\n line.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return line;\n };\n line.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n return line;\n };\n line.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return line;\n };\n return line;\n }\n d3.svg.line = function() {\n return d3_svg_line(d3_identity);\n };\n var d3_svg_lineInterpolators = d3.map({\n linear: d3_svg_lineLinear,\n \"linear-closed\": d3_svg_lineLinearClosed,\n step: d3_svg_lineStep,\n \"step-before\": d3_svg_lineStepBefore,\n \"step-after\": d3_svg_lineStepAfter,\n basis: d3_svg_lineBasis,\n \"basis-open\": d3_svg_lineBasisOpen,\n \"basis-closed\": d3_svg_lineBasisClosed,\n bundle: d3_svg_lineBundle,\n cardinal: d3_svg_lineCardinal,\n \"cardinal-open\": d3_svg_lineCardinalOpen,\n \"cardinal-closed\": d3_svg_lineCardinalClosed,\n monotone: d3_svg_lineMonotone\n });\n d3_svg_lineInterpolators.forEach(function(key, value) {\n value.key = key;\n value.closed = /-closed$/.test(key);\n });\n function d3_svg_lineLinear(points) {\n return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n }\n function d3_svg_lineLinearClosed(points) {\n return points.join(\"L\") + \"Z\";\n }\n function d3_svg_lineStep(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n if (n > 1) path.push(\"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepBefore(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepAfter(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n return path.join(\"\");\n }\n function d3_svg_lineCardinalOpen(points, tension) {\n return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineCardinalClosed(points, tension) {\n return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n }\n function d3_svg_lineCardinal(points, tension) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineHermite(points, tangents) {\n if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n return d3_svg_lineLinear(points);\n }\n var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n if (quad) {\n path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n p0 = points[1];\n pi = 2;\n }\n if (tangents.length > 1) {\n t = tangents[1];\n p = points[pi];\n pi++;\n path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n for (var i = 2; i < tangents.length; i++, pi++) {\n p = points[pi];\n t = tangents[i];\n path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n }\n }\n if (quad) {\n var lp = points[pi];\n path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n }\n return path;\n }\n function d3_svg_lineCardinalTangents(points, tension) {\n var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n while (++i < n) {\n p0 = p1;\n p1 = p2;\n p2 = points[i];\n tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n }\n return tangents;\n }\n function d3_svg_lineBasis(points) {\n if (points.length < 3) return d3_svg_lineLinear(points);\n var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n points.push(points[n - 1]);\n while (++i <= n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n points.pop();\n path.push(\"L\", pi);\n return path.join(\"\");\n }\n function d3_svg_lineBasisOpen(points) {\n if (points.length < 4) return d3_svg_lineLinear(points);\n var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n while (++i < 3) {\n pi = points[i];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n --i;\n while (++i < n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBasisClosed(points) {\n var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n while (++i < 4) {\n pi = points[i % n];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n --i;\n while (++i < m) {\n pi = points[i % n];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBundle(points, tension) {\n var n = points.length - 1;\n if (n) {\n var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n while (++i <= n) {\n p = points[i];\n t = i / n;\n p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n }\n }\n return d3_svg_lineBasis(points);\n }\n function d3_svg_lineDot4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n }\n var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n function d3_svg_lineBasisBezier(path, x, y) {\n path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n }\n function d3_svg_lineSlope(p0, p1) {\n return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n }\n function d3_svg_lineFiniteDifferences(points) {\n var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n while (++i < j) {\n m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n }\n m[i] = d;\n return m;\n }\n function d3_svg_lineMonotoneTangents(points) {\n var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n while (++i < j) {\n d = d3_svg_lineSlope(points[i], points[i + 1]);\n if (abs(d) < ε) {\n m[i] = m[i + 1] = 0;\n } else {\n a = m[i] / d;\n b = m[i + 1] / d;\n s = a * a + b * b;\n if (s > 9) {\n s = d * 3 / Math.sqrt(s);\n m[i] = s * a;\n m[i + 1] = s * b;\n }\n }\n }\n i = -1;\n while (++i <= j) {\n s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n tangents.push([ s || 0, m[i] * s || 0 ]);\n }\n return tangents;\n }\n function d3_svg_lineMonotone(points) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n }\n d3.svg.line.radial = function() {\n var line = d3_svg_line(d3_svg_lineRadial);\n line.radius = line.x, delete line.x;\n line.angle = line.y, delete line.y;\n return line;\n };\n function d3_svg_lineRadial(points) {\n var point, i = -1, n = points.length, r, a;\n while (++i < n) {\n point = points[i];\n r = point[0];\n a = point[1] - halfπ;\n point[0] = r * Math.cos(a);\n point[1] = r * Math.sin(a);\n }\n return points;\n }\n function d3_svg_area(projection) {\n var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n function area(data) {\n var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n return x;\n } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n return y;\n } : d3_functor(y1), x, y;\n function segment() {\n segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n } else if (points0.length) {\n segment();\n points0 = [];\n points1 = [];\n }\n }\n if (points0.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n area.x = function(_) {\n if (!arguments.length) return x1;\n x0 = x1 = _;\n return area;\n };\n area.x0 = function(_) {\n if (!arguments.length) return x0;\n x0 = _;\n return area;\n };\n area.x1 = function(_) {\n if (!arguments.length) return x1;\n x1 = _;\n return area;\n };\n area.y = function(_) {\n if (!arguments.length) return y1;\n y0 = y1 = _;\n return area;\n };\n area.y0 = function(_) {\n if (!arguments.length) return y0;\n y0 = _;\n return area;\n };\n area.y1 = function(_) {\n if (!arguments.length) return y1;\n y1 = _;\n return area;\n };\n area.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return area;\n };\n area.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n interpolateReverse = interpolate.reverse || interpolate;\n L = interpolate.closed ? \"M\" : \"L\";\n return area;\n };\n area.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return area;\n };\n return area;\n }\n d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n d3.svg.area = function() {\n return d3_svg_area(d3_identity);\n };\n d3.svg.area.radial = function() {\n var area = d3_svg_area(d3_svg_lineRadial);\n area.radius = area.x, delete area.x;\n area.innerRadius = area.x0, delete area.x0;\n area.outerRadius = area.x1, delete area.x1;\n area.angle = area.y, delete area.y;\n area.startAngle = area.y0, delete area.y0;\n area.endAngle = area.y1, delete area.y1;\n return area;\n };\n d3.svg.chord = function() {\n var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n function chord(d, i) {\n var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n }\n function subgroup(self, f, d, i) {\n var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n return {\n r: r,\n a0: a0,\n a1: a1,\n p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n };\n }\n function equals(a, b) {\n return a.a0 == b.a0 && a.a1 == b.a1;\n }\n function arc(r, p, a) {\n return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n }\n function curve(r0, p0, r1, p1) {\n return \"Q 0,0 \" + p1;\n }\n chord.radius = function(v) {\n if (!arguments.length) return radius;\n radius = d3_functor(v);\n return chord;\n };\n chord.source = function(v) {\n if (!arguments.length) return source;\n source = d3_functor(v);\n return chord;\n };\n chord.target = function(v) {\n if (!arguments.length) return target;\n target = d3_functor(v);\n return chord;\n };\n chord.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return chord;\n };\n chord.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return chord;\n };\n return chord;\n };\n function d3_svg_chordRadius(d) {\n return d.radius;\n }\n d3.svg.diagonal = function() {\n var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n function diagonal(d, i) {\n var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n x: p0.x,\n y: m\n }, {\n x: p3.x,\n y: m\n }, p3 ];\n p = p.map(projection);\n return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n }\n diagonal.source = function(x) {\n if (!arguments.length) return source;\n source = d3_functor(x);\n return diagonal;\n };\n diagonal.target = function(x) {\n if (!arguments.length) return target;\n target = d3_functor(x);\n return diagonal;\n };\n diagonal.projection = function(x) {\n if (!arguments.length) return projection;\n projection = x;\n return diagonal;\n };\n return diagonal;\n };\n function d3_svg_diagonalProjection(d) {\n return [ d.x, d.y ];\n }\n d3.svg.diagonal.radial = function() {\n var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n diagonal.projection = function(x) {\n return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n };\n return diagonal;\n };\n function d3_svg_diagonalRadialProjection(projection) {\n return function() {\n var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n return [ r * Math.cos(a), r * Math.sin(a) ];\n };\n }\n d3.svg.symbol = function() {\n var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n function symbol(d, i) {\n return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n }\n symbol.type = function(x) {\n if (!arguments.length) return type;\n type = d3_functor(x);\n return symbol;\n };\n symbol.size = function(x) {\n if (!arguments.length) return size;\n size = d3_functor(x);\n return symbol;\n };\n return symbol;\n };\n function d3_svg_symbolSize() {\n return 64;\n }\n function d3_svg_symbolType() {\n return \"circle\";\n }\n function d3_svg_symbolCircle(size) {\n var r = Math.sqrt(size / π);\n return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n }\n var d3_svg_symbols = d3.map({\n circle: d3_svg_symbolCircle,\n cross: function(size) {\n var r = Math.sqrt(size / 5) / 2;\n return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n },\n diamond: function(size) {\n var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n },\n square: function(size) {\n var r = Math.sqrt(size) / 2;\n return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n },\n \"triangle-down\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n },\n \"triangle-up\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n }\n });\n d3.svg.symbolTypes = d3_svg_symbols.keys();\n var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n d3_selectionPrototype.transition = function(name) {\n var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n time: Date.now(),\n ease: d3_ease_cubicInOut,\n delay: 0,\n duration: 250\n };\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_selectionPrototype.interrupt = function(name) {\n return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n };\n var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n function d3_selection_interruptNS(ns) {\n return function() {\n var lock, activeId, active;\n if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n active.timer.c = null;\n active.timer.t = NaN;\n if (--lock.count) delete lock[activeId]; else delete this[ns];\n lock.active += .5;\n active.event && active.event.interrupt.call(this, this.__data__, active.index);\n }\n };\n }\n function d3_transition(groups, ns, id) {\n d3_subclass(groups, d3_transitionPrototype);\n groups.namespace = ns;\n groups.id = id;\n return groups;\n }\n var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n d3_transitionPrototype.call = d3_selectionPrototype.call;\n d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n d3_transitionPrototype.node = d3_selectionPrototype.node;\n d3_transitionPrototype.size = d3_selectionPrototype.size;\n d3.transition = function(selection, name) {\n return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n };\n d3.transition.prototype = d3_transitionPrototype;\n d3_transitionPrototype.select = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n subgroup.push(subnode);\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.selectAll = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n transition = node[ns][id];\n subnodes = selector.call(node, node.__data__, i, j);\n subgroups.push(subgroup = []);\n for (var k = -1, o = subnodes.length; ++k < o; ) {\n if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n subgroup.push(subnode);\n }\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_transition(subgroups, this.namespace, this.id);\n };\n d3_transitionPrototype.tween = function(name, tween) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n return d3_selection_each(this, tween == null ? function(node) {\n node[ns][id].tween.remove(name);\n } : function(node) {\n node[ns][id].tween.set(name, tween);\n });\n };\n function d3_transition_tween(groups, name, value, tween) {\n var id = groups.id, ns = groups.namespace;\n return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n } : (value = tween(value), function(node) {\n node[ns][id].tween.set(name, value);\n }));\n }\n d3_transitionPrototype.attr = function(nameNS, value) {\n if (arguments.length < 2) {\n for (value in nameNS) this.attr(value, nameNS[value]);\n return this;\n }\n var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrTween(b) {\n return b == null ? attrNull : (b += \"\", function() {\n var a = this.getAttribute(name), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttribute(name, i(t));\n });\n });\n }\n function attrTweenNS(b) {\n return b == null ? attrNullNS : (b += \"\", function() {\n var a = this.getAttributeNS(name.space, name.local), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttributeNS(name.space, name.local, i(t));\n });\n });\n }\n return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.attrTween = function(nameNS, tween) {\n var name = d3.ns.qualify(nameNS);\n function attrTween(d, i) {\n var f = tween.call(this, d, i, this.getAttribute(name));\n return f && function(t) {\n this.setAttribute(name, f(t));\n };\n }\n function attrTweenNS(d, i) {\n var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n return f && function(t) {\n this.setAttributeNS(name.space, name.local, f(t));\n };\n }\n return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.style(priority, name[priority], value);\n return this;\n }\n priority = \"\";\n }\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleString(b) {\n return b == null ? styleNull : (b += \"\", function() {\n var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n return a !== b && (i = d3_interpolate(a, b), function(t) {\n this.style.setProperty(name, i(t), priority);\n });\n });\n }\n return d3_transition_tween(this, \"style.\" + name, value, styleString);\n };\n d3_transitionPrototype.styleTween = function(name, tween, priority) {\n if (arguments.length < 3) priority = \"\";\n function styleTween(d, i) {\n var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n return f && function(t) {\n this.style.setProperty(name, f(t), priority);\n };\n }\n return this.tween(\"style.\" + name, styleTween);\n };\n d3_transitionPrototype.text = function(value) {\n return d3_transition_tween(this, \"text\", value, d3_transition_text);\n };\n function d3_transition_text(b) {\n if (b == null) b = \"\";\n return function() {\n this.textContent = b;\n };\n }\n d3_transitionPrototype.remove = function() {\n var ns = this.namespace;\n return this.each(\"end.transition\", function() {\n var p;\n if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n });\n };\n d3_transitionPrototype.ease = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].ease;\n if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n return d3_selection_each(this, function(node) {\n node[ns][id].ease = value;\n });\n };\n d3_transitionPrototype.delay = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].delay;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].delay = +value.call(node, node.__data__, i, j);\n } : (value = +value, function(node) {\n node[ns][id].delay = value;\n }));\n };\n d3_transitionPrototype.duration = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].duration;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n } : (value = Math.max(1, value), function(node) {\n node[ns][id].duration = value;\n }));\n };\n d3_transitionPrototype.each = function(type, listener) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) {\n var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n try {\n d3_transitionInheritId = id;\n d3_selection_each(this, function(node, i, j) {\n d3_transitionInherit = node[ns][id];\n type.call(node, node.__data__, i, j);\n });\n } finally {\n d3_transitionInherit = inherit;\n d3_transitionInheritId = inheritId;\n }\n } else {\n d3_selection_each(this, function(node) {\n var transition = node[ns][id];\n (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n });\n }\n return this;\n };\n d3_transitionPrototype.transition = function() {\n var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if (node = group[i]) {\n transition = node[ns][id0];\n d3_transitionNode(node, i, ns, id1, {\n time: transition.time,\n ease: transition.ease,\n delay: transition.delay + transition.duration,\n duration: transition.duration\n });\n }\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id1);\n };\n function d3_transitionNamespace(name) {\n return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n }\n function d3_transitionNode(node, i, ns, id, inherit) {\n var lock = node[ns] || (node[ns] = {\n active: 0,\n count: 0\n }), transition = lock[id], time, timer, duration, ease, tweens;\n function schedule(elapsed) {\n var delay = transition.delay;\n timer.t = delay + time;\n if (delay <= elapsed) return start(elapsed - delay);\n timer.c = start;\n }\n function start(elapsed) {\n var activeId = lock.active, active = lock[activeId];\n if (active) {\n active.timer.c = null;\n active.timer.t = NaN;\n --lock.count;\n delete lock[activeId];\n active.event && active.event.interrupt.call(node, node.__data__, active.index);\n }\n for (var cancelId in lock) {\n if (+cancelId < id) {\n var cancel = lock[cancelId];\n cancel.timer.c = null;\n cancel.timer.t = NaN;\n --lock.count;\n delete lock[cancelId];\n }\n }\n timer.c = tick;\n d3_timer(function() {\n if (timer.c && tick(elapsed || 1)) {\n timer.c = null;\n timer.t = NaN;\n }\n return 1;\n }, 0, time);\n lock.active = id;\n transition.event && transition.event.start.call(node, node.__data__, i);\n tweens = [];\n transition.tween.forEach(function(key, value) {\n if (value = value.call(node, node.__data__, i)) {\n tweens.push(value);\n }\n });\n ease = transition.ease;\n duration = transition.duration;\n }\n function tick(elapsed) {\n var t = elapsed / duration, e = ease(t), n = tweens.length;\n while (n > 0) {\n tweens[--n].call(node, e);\n }\n if (t >= 1) {\n transition.event && transition.event.end.call(node, node.__data__, i);\n if (--lock.count) delete lock[id]; else delete node[ns];\n return 1;\n }\n }\n if (!transition) {\n time = inherit.time;\n timer = d3_timer(schedule, 0, time);\n transition = lock[id] = {\n tween: new d3_Map(),\n time: time,\n timer: timer,\n delay: inherit.delay,\n duration: inherit.duration,\n ease: inherit.ease,\n index: i\n };\n inherit = null;\n ++lock.count;\n }\n }\n d3.svg.axis = function() {\n var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n function axis(g) {\n g.each(function() {\n var g = d3.select(this);\n var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n d3.transition(path));\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n if (orient === \"bottom\" || orient === \"top\") {\n tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n } else {\n tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n }\n lineEnter.attr(y2, sign * innerTickSize);\n textEnter.attr(y1, sign * tickSpacing);\n lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n if (scale1.rangeBand) {\n var x = scale1, dx = x.rangeBand() / 2;\n scale0 = scale1 = function(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, scale0);\n }\n tickEnter.call(tickTransform, scale0, scale1);\n tickUpdate.call(tickTransform, scale1, scale1);\n });\n }\n axis.scale = function(x) {\n if (!arguments.length) return scale;\n scale = x;\n return axis;\n };\n axis.orient = function(x) {\n if (!arguments.length) return orient;\n orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n return axis;\n };\n axis.ticks = function() {\n if (!arguments.length) return tickArguments_;\n tickArguments_ = d3_array(arguments);\n return axis;\n };\n axis.tickValues = function(x) {\n if (!arguments.length) return tickValues;\n tickValues = x;\n return axis;\n };\n axis.tickFormat = function(x) {\n if (!arguments.length) return tickFormat_;\n tickFormat_ = x;\n return axis;\n };\n axis.tickSize = function(x) {\n var n = arguments.length;\n if (!n) return innerTickSize;\n innerTickSize = +x;\n outerTickSize = +arguments[n - 1];\n return axis;\n };\n axis.innerTickSize = function(x) {\n if (!arguments.length) return innerTickSize;\n innerTickSize = +x;\n return axis;\n };\n axis.outerTickSize = function(x) {\n if (!arguments.length) return outerTickSize;\n outerTickSize = +x;\n return axis;\n };\n axis.tickPadding = function(x) {\n if (!arguments.length) return tickPadding;\n tickPadding = +x;\n return axis;\n };\n axis.tickSubdivide = function() {\n return arguments.length && axis;\n };\n return axis;\n };\n var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n };\n function d3_svg_axisX(selection, x0, x1) {\n selection.attr(\"transform\", function(d) {\n var v0 = x0(d);\n return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n });\n }\n function d3_svg_axisY(selection, y0, y1) {\n selection.attr(\"transform\", function(d) {\n var v0 = y0(d);\n return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n });\n }\n d3.svg.brush = function() {\n var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n function brush(g) {\n g.each(function() {\n var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n var background = g.selectAll(\".background\").data([ 0 ]);\n background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n resize.exit().remove();\n resize.enter().append(\"g\").attr(\"class\", function(d) {\n return \"resize \" + d;\n }).style(\"cursor\", function(d) {\n return d3_svg_brushCursor[d];\n }).append(\"rect\").attr(\"x\", function(d) {\n return /[ew]$/.test(d) ? -3 : null;\n }).attr(\"y\", function(d) {\n return /^[ns]/.test(d) ? -3 : null;\n }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n resize.style(\"display\", brush.empty() ? \"none\" : null);\n var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n if (x) {\n range = d3_scaleRange(x);\n backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n redrawX(gUpdate);\n }\n if (y) {\n range = d3_scaleRange(y);\n backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n redrawY(gUpdate);\n }\n redraw(gUpdate);\n });\n }\n brush.event = function(g) {\n g.each(function() {\n var event_ = event.of(this, arguments), extent1 = {\n x: xExtent,\n y: yExtent,\n i: xExtentDomain,\n j: yExtentDomain\n }, extent0 = this.__chart__ || extent1;\n this.__chart__ = extent1;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.brush\", function() {\n xExtentDomain = extent0.i;\n yExtentDomain = extent0.j;\n xExtent = extent0.x;\n yExtent = extent0.y;\n event_({\n type: \"brushstart\"\n });\n }).tween(\"brush:brush\", function() {\n var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n xExtentDomain = yExtentDomain = null;\n return function(t) {\n xExtent = extent1.x = xi(t);\n yExtent = extent1.y = yi(t);\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n };\n }).each(\"end.brush\", function() {\n xExtentDomain = extent1.i;\n yExtentDomain = extent1.j;\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n });\n } else {\n event_({\n type: \"brushstart\"\n });\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n }\n });\n };\n function redraw(g) {\n g.selectAll(\".resize\").attr(\"transform\", function(d) {\n return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n });\n }\n function redrawX(g) {\n g.select(\".extent\").attr(\"x\", xExtent[0]);\n g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n }\n function redrawY(g) {\n g.select(\".extent\").attr(\"y\", yExtent[0]);\n g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n }\n function brushstart() {\n var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n if (d3.event.changedTouches) {\n w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n } else {\n w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n }\n g.interrupt().selectAll(\"*\").interrupt();\n if (dragging) {\n origin[0] = xExtent[0] - origin[0];\n origin[1] = yExtent[0] - origin[1];\n } else if (resizing) {\n var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n origin[0] = xExtent[ex];\n origin[1] = yExtent[ey];\n } else if (d3.event.altKey) center = origin.slice();\n g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n event_({\n type: \"brushstart\"\n });\n brushmove();\n function keydown() {\n if (d3.event.keyCode == 32) {\n if (!dragging) {\n center = null;\n origin[0] -= xExtent[1];\n origin[1] -= yExtent[1];\n dragging = 2;\n }\n d3_eventPreventDefault();\n }\n }\n function keyup() {\n if (d3.event.keyCode == 32 && dragging == 2) {\n origin[0] += xExtent[1];\n origin[1] += yExtent[1];\n dragging = 0;\n d3_eventPreventDefault();\n }\n }\n function brushmove() {\n var point = d3.mouse(target), moved = false;\n if (offset) {\n point[0] += offset[0];\n point[1] += offset[1];\n }\n if (!dragging) {\n if (d3.event.altKey) {\n if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n origin[0] = xExtent[+(point[0] < center[0])];\n origin[1] = yExtent[+(point[1] < center[1])];\n } else center = null;\n }\n if (resizingX && move1(point, x, 0)) {\n redrawX(g);\n moved = true;\n }\n if (resizingY && move1(point, y, 1)) {\n redrawY(g);\n moved = true;\n }\n if (moved) {\n redraw(g);\n event_({\n type: \"brush\",\n mode: dragging ? \"move\" : \"resize\"\n });\n }\n }\n function move1(point, scale, i) {\n var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n if (dragging) {\n r0 -= position;\n r1 -= size + position;\n }\n min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n if (dragging) {\n max = (min += position) + size;\n } else {\n if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n if (position < min) {\n max = min;\n min = position;\n } else {\n max = position;\n }\n }\n if (extent[0] != min || extent[1] != max) {\n if (i) yExtentDomain = null; else xExtentDomain = null;\n extent[0] = min;\n extent[1] = max;\n return true;\n }\n }\n function brushend() {\n brushmove();\n g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n d3.select(\"body\").style(\"cursor\", null);\n w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n dragRestore();\n event_({\n type: \"brushend\"\n });\n }\n }\n brush.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.clamp = function(z) {\n if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n return brush;\n };\n brush.extent = function(z) {\n var x0, x1, y0, y1, t;\n if (!arguments.length) {\n if (x) {\n if (xExtentDomain) {\n x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n } else {\n x0 = xExtent[0], x1 = xExtent[1];\n if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n }\n }\n if (y) {\n if (yExtentDomain) {\n y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n } else {\n y0 = yExtent[0], y1 = yExtent[1];\n if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n }\n }\n return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n }\n if (x) {\n x0 = z[0], x1 = z[1];\n if (y) x0 = x0[0], x1 = x1[0];\n xExtentDomain = [ x0, x1 ];\n if (x.invert) x0 = x(x0), x1 = x(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n }\n if (y) {\n y0 = z[0], y1 = z[1];\n if (x) y0 = y0[1], y1 = y1[1];\n yExtentDomain = [ y0, y1 ];\n if (y.invert) y0 = y(y0), y1 = y(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n }\n return brush;\n };\n brush.clear = function() {\n if (!brush.empty()) {\n xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n xExtentDomain = yExtentDomain = null;\n }\n return brush;\n };\n brush.empty = function() {\n return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n };\n return d3.rebind(brush, event, \"on\");\n };\n var d3_svg_brushCursor = {\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n };\n var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n var d3_time_formatUtc = d3_time_format.utc;\n var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n function d3_time_formatIsoNative(date) {\n return date.toISOString();\n }\n d3_time_formatIsoNative.parse = function(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n };\n d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n d3_time.second = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 1e3) * 1e3);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n }, function(date) {\n return date.getSeconds();\n });\n d3_time.seconds = d3_time.second.range;\n d3_time.seconds.utc = d3_time.second.utc.range;\n d3_time.minute = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 6e4) * 6e4);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n }, function(date) {\n return date.getMinutes();\n });\n d3_time.minutes = d3_time.minute.range;\n d3_time.minutes.utc = d3_time.minute.utc.range;\n d3_time.hour = d3_time_interval(function(date) {\n var timezone = date.getTimezoneOffset() / 60;\n return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n }, function(date) {\n return date.getHours();\n });\n d3_time.hours = d3_time.hour.range;\n d3_time.hours.utc = d3_time.hour.utc.range;\n d3_time.month = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setDate(1);\n return date;\n }, function(date, offset) {\n date.setMonth(date.getMonth() + offset);\n }, function(date) {\n return date.getMonth();\n });\n d3_time.months = d3_time.month.range;\n d3_time.months.utc = d3_time.month.utc.range;\n function d3_time_scale(linear, methods, format) {\n function scale(x) {\n return linear(x);\n }\n scale.invert = function(x) {\n return d3_time_scaleDate(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n linear.domain(x);\n return scale;\n };\n function tickMethod(extent, count) {\n var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n return d / 31536e6;\n }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n }\n scale.nice = function(interval, skip) {\n var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n if (method) interval = method[0], skip = method[1];\n function skipped(date) {\n return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n }\n return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n floor: function(date) {\n while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n return date;\n },\n ceil: function(date) {\n while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n return date;\n }\n } : interval));\n };\n scale.ticks = function(interval, skip) {\n var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n range: interval\n }, skip ];\n if (method) interval = method[0], skip = method[1];\n return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n };\n scale.tickFormat = function() {\n return format;\n };\n scale.copy = function() {\n return d3_time_scale(linear.copy(), methods, format);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_time_scaleDate(t) {\n return new Date(t);\n }\n var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];\n var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n return d.getMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getHours();\n } ], [ \"%a %d\", function(d) {\n return d.getDay() && d.getDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getMonth();\n } ], [ \"%Y\", d3_true ] ]);\n var d3_time_scaleMilliseconds = {\n range: function(start, stop, step) {\n return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n },\n floor: d3_identity,\n ceil: d3_identity\n };\n d3_time_scaleLocalMethods.year = d3_time.year;\n d3_time.scale = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n };\n var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n return [ m[0].utc, m[1] ];\n });\n var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n return d.getUTCMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getUTCSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getUTCMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getUTCHours();\n } ], [ \"%a %d\", function(d) {\n return d.getUTCDay() && d.getUTCDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getUTCDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getUTCMonth();\n } ], [ \"%Y\", d3_true ] ]);\n d3_time_scaleUtcMethods.year = d3_time.year.utc;\n d3_time.scale.utc = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n };\n d3.text = d3_xhrType(function(request) {\n return request.responseText;\n });\n d3.json = function(url, callback) {\n return d3_xhr(url, \"application/json\", d3_json, callback);\n };\n function d3_json(request) {\n return JSON.parse(request.responseText);\n }\n d3.html = function(url, callback) {\n return d3_xhr(url, \"text/html\", d3_html, callback);\n };\n function d3_html(request) {\n var range = d3_document.createRange();\n range.selectNode(d3_document.body);\n return range.createContextualFragment(request.responseText);\n }\n d3.xml = d3_xhrType(function(request) {\n return request.responseXML;\n });\n if (typeof define === \"function\" && define.amd) this.d3 = d3, define(d3); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/c3/~/d3/d3.js\n// module id = 116\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar _invariant = require('fbjs/lib/invariant');\n\nif (process.env.NODE_ENV !== 'production') {\n var warning = require('fbjs/lib/warning');\n}\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {\n ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (process.env.NODE_ENV !== 'production') {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isInherited = name in Constructor;\n _invariant(\n !isInherited,\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/create-react-class/factory.js\n// module id = 117\n// module chunks = 0","exports = module.exports = require(\"../css-loader/lib/css-base.js\")(undefined);\n// imports\n\n\n// module\nexports.push([module.id, \"/*-- Chart --*/\\n.c3 svg {\\n font: 10px sans-serif;\\n -webkit-tap-highlight-color: transparent; }\\n\\n.c3 path, .c3 line {\\n fill: none;\\n stroke: #000; }\\n\\n.c3 text {\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none; }\\n\\n.c3-legend-item-tile,\\n.c3-xgrid-focus,\\n.c3-ygrid,\\n.c3-event-rect,\\n.c3-bars path {\\n shape-rendering: crispEdges; }\\n\\n.c3-chart-arc path {\\n stroke: #fff; }\\n\\n.c3-chart-arc text {\\n fill: #fff;\\n font-size: 13px; }\\n\\n/*-- Axis --*/\\n/*-- Grid --*/\\n.c3-grid line {\\n stroke: #aaa; }\\n\\n.c3-grid text {\\n fill: #aaa; }\\n\\n.c3-xgrid, .c3-ygrid {\\n stroke-dasharray: 3 3; }\\n\\n/*-- Text on Chart --*/\\n.c3-text.c3-empty {\\n fill: #808080;\\n font-size: 2em; }\\n\\n/*-- Line --*/\\n.c3-line {\\n stroke-width: 1px; }\\n\\n/*-- Point --*/\\n.c3-circle._expanded_ {\\n stroke-width: 1px;\\n stroke: white; }\\n\\n.c3-selected-circle {\\n fill: white;\\n stroke-width: 2px; }\\n\\n/*-- Bar --*/\\n.c3-bar {\\n stroke-width: 0; }\\n\\n.c3-bar._expanded_ {\\n fill-opacity: 1;\\n fill-opacity: 0.75; }\\n\\n/*-- Focus --*/\\n.c3-target.c3-focused {\\n opacity: 1; }\\n\\n.c3-target.c3-focused path.c3-line, .c3-target.c3-focused path.c3-step {\\n stroke-width: 2px; }\\n\\n.c3-target.c3-defocused {\\n opacity: 0.3 !important; }\\n\\n/*-- Region --*/\\n.c3-region {\\n fill: steelblue;\\n fill-opacity: .1; }\\n\\n/*-- Brush --*/\\n.c3-brush .extent {\\n fill-opacity: .1; }\\n\\n/*-- Select - Drag --*/\\n/*-- Legend --*/\\n.c3-legend-item {\\n font-size: 12px; }\\n\\n.c3-legend-item-hidden {\\n opacity: 0.15; }\\n\\n.c3-legend-background {\\n opacity: 0.75;\\n fill: white;\\n stroke: lightgray;\\n stroke-width: 1; }\\n\\n/*-- Title --*/\\n.c3-title {\\n font: 14px sans-serif; }\\n\\n/*-- Tooltip --*/\\n.c3-tooltip-container {\\n z-index: 10; }\\n\\n.c3-tooltip {\\n border-collapse: collapse;\\n border-spacing: 0;\\n background-color: #fff;\\n empty-cells: show;\\n -webkit-box-shadow: 7px 7px 12px -9px #777777;\\n -moz-box-shadow: 7px 7px 12px -9px #777777;\\n box-shadow: 7px 7px 12px -9px #777777;\\n opacity: 0.9; }\\n\\n.c3-tooltip tr {\\n border: 1px solid #CCC; }\\n\\n.c3-tooltip th {\\n background-color: #aaa;\\n font-size: 14px;\\n padding: 2px 5px;\\n text-align: left;\\n color: #FFF; }\\n\\n.c3-tooltip td {\\n font-size: 13px;\\n padding: 3px 6px;\\n background-color: #fff;\\n border-left: 1px dotted #999; }\\n\\n.c3-tooltip td > span {\\n display: inline-block;\\n width: 10px;\\n height: 10px;\\n margin-right: 6px; }\\n\\n.c3-tooltip td.value {\\n text-align: right; }\\n\\n/*-- Area --*/\\n.c3-area {\\n stroke-width: 0;\\n opacity: 0.2; }\\n\\n/*-- Arc --*/\\n.c3-chart-arcs-title {\\n dominant-baseline: middle;\\n font-size: 1.3em; }\\n\\n.c3-chart-arcs .c3-chart-arcs-background {\\n fill: #e0e0e0;\\n stroke: none; }\\n\\n.c3-chart-arcs .c3-chart-arcs-gauge-unit {\\n fill: #000;\\n font-size: 16px; }\\n\\n.c3-chart-arcs .c3-chart-arcs-gauge-max {\\n fill: #777; }\\n\\n.c3-chart-arcs .c3-chart-arcs-gauge-min {\\n fill: #777; }\\n\\n.c3-chart-arc .c3-gauge-value {\\n fill: #000;\\n /* font-size: 28px !important;*/ }\\n\\n.c3-chart-arc.c3-target g path {\\n opacity: 1; }\\n\\n.c3-chart-arc.c3-target.c3-focused g path {\\n opacity: 1; }\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/c3/c3.css\n// module id = 118\n// module chunks = 0","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(undefined);\n// imports\n\n\n// module\nexports.push([module.id, \"/* Utility Styles */\\n#aculistWidgetRoot {\\n text-align: center;\\n min-height: calc(100vh - 293px);\\n position: relative;\\n }\\n\\n #aculistWidgetRoot.aculist .section_container {\\n text-align: right;\\n}\\n\\n /* div[class^=\\\"section_container\\\"] > button[class^=\\\"copybtn\\\"] { text-align: right!important; } */\\n\\n #aculistWidgetRoot.aculist img.copybtn {\\n background-color: rgb(0,130,202);\\n color: white;\\n padding: .4%;\\n cursor: pointer;\\n \\n background-repeat: no-repeat;\\n background-position: center;\\n}\\n\\n#aculistWidgetRoot.aculist .d-inline-block {\\n display: inline-block!important;\\n}\\n\\n#aculistWidgetRoot.aculist .mx-auto {\\n margin: 0 auto;\\n}\\n\\n#aculistWidgetRoot.aculist .text-center {\\n text-align: center;\\n}\\n\\n#aculistWidgetRoot.aculist text.c3-axis-x-label {\\n font-style: oblique;\\n}\\n#aculistWidgetRoot.aculist text.c3-axis-y-label {\\n font-style: oblique;\\n}\\n#aculistWidgetRoot.aculist text.c3-axis-y2-label {\\n font-style: oblique;\\n}\\n\\n#aculistWidgetRoot.aculist p {\\n text-align: center;\\n}\\n\\n#aculistWidgetRoot.aculist .chartTitle {\\n padding: 0 0 12px 0; \\n color: black;\\n font-family: Roboto, 'Segoe UI', Tahoma, sans-serif;\\n font-size: 24px;\\n font-weight: bold; \\n /* -webkit-font-smoothing: antialiased;\\n text-transform: uppercase;\\n letter-spacing: .02em;\\n font-size:18px;\\n font-style: normal; */\\n}\\n\\n#aculistWidgetRoot.aculist .section_container {\\n padding: 1%;\\n margin-bottom: 25px;\\n box-shadow: 0 0 2px 2px rgb(217,218,208);\\n width: 100%;\\n \\n background-color: white;\\n}\\n\\n#aculistWidgetRoot.aculist button.btn.btn-secondary.active {\\n color: white!important;\\n background-color: gray!important;\\n background-image: none;\\n border-color: #adadad;\\n}\\n#aculistWidgetRoot.aculist #chart {\\n background: white;\\n margin: 1em auto;\\n}\\n#aculistWidgetRoot.aculist path.c3-line {\\n stroke-width: 3px; \\n}\\n\\n/* line.c3-axis-y {\\n fill: none;\\n stroke: blueviolet;\\n path.domain { stroke: white; }\\n.tick text { stroke: yellow; }\\n.c3-legend-item text { stroke: grey; }\\n} */\\n\\n#aculistWidgetRoot.aculist .c3 .c3-axis-y path, .c3 .c3-axis-y line {\\n stroke: transparent;\\n}\\n#aculistWidgetRoot.aculist .c3 .c3-axis-y2 path, .c3 .c3-axis-y2 line {\\n stroke: transparent;\\n}\\n/* #aculistWidgetRoot.aculist .c3 .c3-ygrid line {\\n stroke: blue;\\n} */\\n\\n/* #aculistWidgetRoot.aculist .c3-ygrid {\\n stroke: #70707a;\\n stroke-dasharray: 3 3; }\\n .c3-bar-region {\\n stroke-width: 2;\\n stroke-opacity: 0.7;\\n stroke-dasharray: 5 5;\\n fill-opacity: 0.3;\\n} */\\n\\n#aculistWidgetRoot.aculist .c3-bar-region._expanded_ {\\n fill-opacity: 0.5;\\n}\\n\\n#aculistWidgetRoot.aculist .c3-circle {\\n stroke:none; \\n}\\n\\n/* Widget Loading Spinner */\\n#aculistWidgetRoot.aculist .markettrends.loading .chart-body{\\n visibility: hidden!important;\\n}\\n\\n#aculistWidgetRoot.aculist .markettrends.loading .chart-body svg {\\nopacity: 0!important;\\n}\\n\\n/* .markettrends.loading:after {\\n content: \\\"Loading...\\\";\\n display:block;\\n position: absolute;\\n top: 35%;\\n left: 45%;\\n} */\\n\\n#aculistWidgetRoot.aculist .loader,\\n#aculistWidgetRoot.aculist .loader:after {\\n border-radius: 50%;\\n width: 10em;\\n height: 10em;\\n}\\n#aculistWidgetRoot.aculist .loader {\\n margin: 60px auto;\\n font-size: 5px;\\n position: relative;\\n text-indent: -9999em;\\n border-top: 1.1em solid RGB(0,130,202);\\n border-right: 1.1em solid RGB(0,130,202);\\n border-bottom: 1.1em solid RGB(0,130,202);\\n border-left: 1.1em solid #ffffff;\\n -webkit-transform: translateZ(0);\\n -ms-transform: translateZ(0);\\n transform: translateZ(0);\\n -webkit-animation: load8 1.1s infinite linear;\\n animation: load8 1.1s infinite linear;\\n\\n}\\n\\n@-webkit-keyframes load8 {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes load8 {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n\\n#aculistWidgetRoot.aculist .c3-axis .tick line {display: none;}\\n#aculistWidgetRoot.aculist .c3-area {\\n opacity: 1 !important;\\n}\\n\\n#widget-container, #widgetChartContainer {\\n max-width: 960px;\\n}\\n\\n.widgetContainer, .widgetHolder {\\n min-height: 400px;\\n}\\n\\n#aculistWidgetRoot.aculist .d-block {\\n display: block!important;\\n line-height: 1.5\\n}\\n\\n/* #aculistWidgetRoot.aculist .c3-axis-y text {\\n fill:#70707a;\\n\\n}\\n#aculistWidgetRoot.aculist .c3-axis-x text {\\n \\n fill:#70707a;\\n} \\n#aculistWidgetRoot.aculist .c3-axis-y2 text {\\n \\n fill:#70707a;\\n}*/\\n\\n#aculistWidgetRoot.aculist h2 {\\n display: block;\\n \\n -webkit-margin-before: 0.83em;\\n -webkit-margin-after: 0.83em;\\n -webkit-margin-start: 0px;\\n -webkit-margin-end: 0px;\\n font-weight: bold;\\n}\\n#aculistWidgetRoot.aculist .chartShare\\n{\\ndisplay:block;\\nposition: absolute;\\ntop:25%;\\nleft:18%;\\nbackground-color: transparent;\\n\\n\\n}\\n#aculistWidgetRoot.aculist .h4, h4 {\\n font-size: .5rem;\\n font-weight: 800;\\n}\\n/* #aculistWidgetRoot.aculist .attribution-img {\\n position: relative;\\n top: -20px;\\n left: 75px;\\n} */\\n#aculistWidgetRoot.aculist .attribution-label {\\n line-height: 21px;\\n font-size: 11px;\\n}\\n@media screen and (max-width: 750px) and (orientation: landscape) {\\n #aculistWidgetRoot.aculist .section_container {\\n width: calc(100% - 2rem);\\n margin: 0 1rem;\\n margin-bottom: 1rem;\\n }\\n \\n #aculistWidgetRoot.aculist .section_container .c3 {\\n max-height: 300px!important;\\n }\\n \\n #aculistWidgetRoot.aculist .section_container svg {\\n min-height: 300px!important;\\n font: 8px sans-serif;\\n }\\n \\n #aculistWidgetRoot.aculist .c3-legend-item {\\n font-size: 10px;\\n }\\n\\n #aculistWidgetRoot.aculist .chartTitle {\\n font-size: 1rem;\\n }\\n \\n \\n #aculistWidgetRoot.aculist .c3-axis-x-label {\\n text-anchor: end;\\n transform: translate(10px, 10px);\\n }\\n }\\n @media screen and (max-width: 600px) {\\n #aculistWidgetRoot.aculist .section_container {\\n width: calc(100% - 2rem);\\n margin: 0 1rem;\\n }\\n \\n #aculistWidgetRoot.aculist .section_container .c3 {\\n max-height: 400px!important;\\n }\\n \\n #aculistWidgetRoot.aculist .section_container svg {\\n min-height: 400px!important;\\n font: 8px sans-serif;\\n }\\n \\n #aculistWidgetRoot.aculist .c3-legend-item {\\n font-size: 10px;\\n \\n }\\n \\n \\n \\n #aculistWidgetRoot.aculist .c3-axis-x-label {\\n text-anchor: end;\\n transform: translate(10px, 10px);\\n }\\n }\\n \\n @media screen and (max-width: 450px) {\\n #aculistWidgetRoot.aculist .section_container {\\n width: 100%;\\n margin: 0;\\n }\\n #aculistWidgetRoot.aculist .c3-axis-x .tick * {\\n font-size:6px;\\n }\\n }\\n\\n #aculistWidgetRoot.aculist .hidden {\\n display: none!important;\\n visibility: hidden!important;\\n}\\n \\n/*Computed styles for canvas to Image*/\\n\\n\\n#chartCopyHolder .title {\\n \\n padding-top: \\n 20px;\\n \\n }\\n \\n \\n \\n #chartCopyHolder .copybtn {\\n \\n display: \\n none;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 .text-center {\\n \\n text-align: \\n center;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 text.c3-axis-x-label {\\n \\n font-style: \\n oblique;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 text.c3-axis-y-label {\\n \\n font-style: \\n oblique;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 text.c3-axis-y2-label {\\n \\n font-style: \\n oblique;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 .c3-axis-y path, .c3 .c3-axis-y line {\\n \\n stroke: transparent;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 .c3-axis-y2 path, .c3 .c3-axis-y2 line {\\n \\n stroke: transparent;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 .c3-bar-region._expanded_ {\\n \\n fill-opacity: \\n 0.5;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 .c3-circle {\\n \\n stroke:none;\\n \\n }\\n \\n \\n \\n #chartCopyHolder svg.c3 {\\n \\n font: 10px\\n sans-serif;\\n \\n -webkit-tap-highlight-color: \\n transparent; \\n \\n }\\n \\n div#chartCopyHolder .section_container {\\n padding-left: 0!important;\\n padding-right: 0!important;\\n position: relative;\\n} \\n \\n \\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./src/css/charts.css\n// module id = 119\n// module chunks = 0","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/src/defaultLocale.js\n// module id = 121\n// module chunks = 0","export default function(x, p) {\n x = x.toPrecision(p);\n\n out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (x[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n case \"e\": break out;\n default: if (i0 > 0) i0 = 0; break;\n }\n }\n\n return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/src/formatDefault.js\n// module id = 122\n// module chunks = 0","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/src/formatGroup.js\n// module id = 123\n// module chunks = 0","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/src/formatNumerals.js\n// module id = 124\n// module chunks = 0","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/src/formatRounded.js\n// module id = 125\n// module chunks = 0","export default function(x) {\n return x;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/src/identity.js\n// module id = 126\n// module chunks = 0","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/src/precisionFixed.js\n// module id = 127\n// module chunks = 0","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/src/precisionPrefix.js\n// module id = 128\n// module chunks = 0","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/src/precisionRound.js\n// module id = 129\n// module chunks = 0","export default function(x) {\n return function() {\n return x;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/constant.js\n// module id = 131\n// module chunks = 0","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/local.js\n// module id = 132\n// module chunks = 0","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/mouse.js\n// module id = 133\n// module chunks = 0","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/select.js\n// module id = 134\n// module chunks = 0","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selectAll.js\n// module id = 135\n// module chunks = 0","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/append.js\n// module id = 136\n// module chunks = 0","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/attr.js\n// module id = 137\n// module chunks = 0","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/call.js\n// module id = 138\n// module chunks = 0","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/classed.js\n// module id = 139\n// module chunks = 0","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/data.js\n// module id = 140\n// module chunks = 0","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/datum.js\n// module id = 141\n// module chunks = 0","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/dispatch.js\n// module id = 142\n// module chunks = 0","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/each.js\n// module id = 143\n// module chunks = 0","export default function() {\n return !this.node();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/empty.js\n// module id = 144\n// module chunks = 0","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/exit.js\n// module id = 145\n// module chunks = 0","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/filter.js\n// module id = 146\n// module chunks = 0","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/html.js\n// module id = 147\n// module chunks = 0","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/insert.js\n// module id = 148\n// module chunks = 0","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/lower.js\n// module id = 149\n// module chunks = 0","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/merge.js\n// module id = 150\n// module chunks = 0","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/node.js\n// module id = 151\n// module chunks = 0","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/nodes.js\n// module id = 152\n// module chunks = 0","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/order.js\n// module id = 153\n// module chunks = 0","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/property.js\n// module id = 154\n// module chunks = 0","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/raise.js\n// module id = 155\n// module chunks = 0","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/remove.js\n// module id = 156\n// module chunks = 0","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/select.js\n// module id = 157\n// module chunks = 0","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/selectAll.js\n// module id = 158\n// module chunks = 0","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/size.js\n// module id = 159\n// module chunks = 0","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/sort.js\n// module id = 160\n// module chunks = 0","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/selection/text.js\n// module id = 161\n// module chunks = 0","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/touch.js\n// module id = 162\n// module chunks = 0","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/src/touches.js\n// module id = 163\n// module chunks = 0","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/camelize.js\n// module id = 164\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar camelize = require('./camelize');\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/camelizeStyleName.js\n// module id = 165\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nvar isTextNode = require('./isTextNode');\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/containsNode.js\n// module id = 166\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar invariant = require('./invariant');\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n\n !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n\n !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n\n !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;\n\n // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\n\n // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj && (\n // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') &&\n // quacks like an array\n 'length' in obj &&\n // not window\n !('setInterval' in obj) &&\n // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && (\n // a real array\n Array.isArray(obj) ||\n // arguments\n 'callee' in obj ||\n // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/createArrayFromMixed.js\n// module id = 167\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar createArrayFromMixed = require('./createArrayFromMixed');\nvar getMarkupWrap = require('./getMarkupWrap');\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * <script> element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any <script> elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered <script>.\n * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n */\nfunction createNodesFromMarkup(markup, handleScript) {\n var node = dummyNode;\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;\n var nodeName = getNodeName(markup);\n\n var wrap = nodeName && getMarkupWrap(nodeName);\n if (wrap) {\n node.innerHTML = wrap[1] + markup + wrap[2];\n\n var wrapDepth = wrap[0];\n while (wrapDepth--) {\n node = node.lastChild;\n }\n } else {\n node.innerHTML = markup;\n }\n\n var scripts = node.getElementsByTagName('script');\n if (scripts.length) {\n !handleScript ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;\n createArrayFromMixed(scripts).forEach(handleScript);\n }\n\n var nodes = Array.from(node.childNodes);\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/createNodesFromMarkup.js\n// module id = 168\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/*eslint-disable fb-www/unsafe-html */\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to detect which wraps are necessary.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n */\n\nvar shouldWrap = {};\n\nvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\nvar tableWrap = [1, '<table>', '</table>'];\nvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\nvar svgWrap = [1, '<svg xmlns=\"http://www.w3.org/2000/svg\">', '</svg>'];\n\nvar markupWrap = {\n '*': [1, '?<div>', '</div>'],\n\n 'area': [1, '<map>', '</map>'],\n 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n 'legend': [1, '<fieldset>', '</fieldset>'],\n 'param': [1, '<object>', '</object>'],\n 'tr': [2, '<table><tbody>', '</tbody></table>'],\n\n 'optgroup': selectWrap,\n 'option': selectWrap,\n\n 'caption': tableWrap,\n 'colgroup': tableWrap,\n 'tbody': tableWrap,\n 'tfoot': tableWrap,\n 'thead': tableWrap,\n\n 'td': trWrap,\n 'th': trWrap\n};\n\n// Initialize the SVG elements since we know they'll always need to be wrapped\n// consistently. If they are created inside a <div> they will be initialized in\n// the wrong namespace (and will not display).\nvar svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];\nsvgElements.forEach(function (nodeName) {\n markupWrap[nodeName] = svgWrap;\n shouldWrap[nodeName] = true;\n});\n\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\nfunction getMarkupWrap(nodeName) {\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;\n if (!markupWrap.hasOwnProperty(nodeName)) {\n nodeName = '*';\n }\n if (!shouldWrap.hasOwnProperty(nodeName)) {\n if (nodeName === '*') {\n dummyNode.innerHTML = '<link />';\n } else {\n dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n }\n shouldWrap[nodeName] = !dummyNode.firstChild;\n }\n return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\nmodule.exports = getMarkupWrap;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/getMarkupWrap.js\n// module id = 169\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n'use strict';\n\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/getUnboundedScrollPosition.js\n// module id = 170\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/hyphenate.js\n// module id = 171\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar hyphenate = require('./hyphenate');\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/hyphenateStyleName.js\n// module id = 172\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/isNode.js\n// module id = 173\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar isNode = require('./isNode');\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/isTextNode.js\n// module id = 174\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/memoizeStringOnly.js\n// module id = 175\n// module chunks = 0","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_arrayMap.js\n// module id = 176\n// module chunks = 0","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseGetTag.js\n// module id = 177\n// module chunks = 0","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\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 (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\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\nmodule.exports = baseToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseToString.js\n// module id = 178\n// module chunks = 0","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_freeGlobal.js\n// module id = 179\n// module chunks = 0","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getRawTag.js\n// module id = 180\n// module chunks = 0","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_objectToString.js\n// module id = 181\n// module chunks = 0","var freeGlobal = require('./_freeGlobal');\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\nmodule.exports = root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_root.js\n// module id = 182\n// module chunks = 0","/**\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\nmodule.exports = isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isArray.js\n// module id = 183\n// module chunks = 0","/**\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 != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isObjectLike.js\n// module id = 184\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\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) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isSymbol.js\n// module id = 185\n// module chunks = 0","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.4';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var 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 empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var 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 */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:(?:1st|2nd|3rd|(?![123])\\\\dth)\\\\b)',\n rsOrdUpper = '\\\\d*(?:(?:1ST|2ND|3RD|(?![123])\\\\dTH)\\\\b)',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\n function addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n }\n\n /**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\n function addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n }\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` 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 * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` 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 * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee 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 all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\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 */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\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 `_.reduceRight` 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 last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, 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 */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` 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 * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\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 */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\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 */\n function 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 `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` 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 * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\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 */\n function 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 `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\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 */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\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 */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\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 */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\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 */\n function 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 */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\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 */\n function 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 /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\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 */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var 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. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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 */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\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 */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\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 */\n function 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 */\n function 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 */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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 */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\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 */\n function 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 --this.size;\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 */\n function 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 */\n function 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 */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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 */\n function mapCacheClear() {\n this.size = 0;\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 */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\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 */\n function 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 */\n function 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 */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\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 */\n function 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 */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\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 */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\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 */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\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 */\n function 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 */\n function 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 */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\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 */\n function 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 * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\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 */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` 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 */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\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 */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\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 */\n var baseForRight = createBaseFor(true);\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 */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` 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 */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\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 */\n function baseGet(object, path) {\n path = castPath(path, object);\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 `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` 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 */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\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 */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\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 {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, 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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_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, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\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 */\n function 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, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, 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 */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\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 */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(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 */\n function 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 */\n function 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 `_.keysIn` 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 */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` 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} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\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 */\n function 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 */\n function 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, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(object[key], srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = object[key],\n srcValue = source[key],\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\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 */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection 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 */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\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 */\n function 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 (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\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 * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\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 * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\n function cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), CLONE_DEEP_FLAG) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\n function cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), CLONE_DEEP_FLAG) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\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 */\n function 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 */\n function 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 * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_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 & COMPARE_UNORDERED_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 (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, 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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, 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 & COMPARE_PARTIAL_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 |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, 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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(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, bitmask, customizer, 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 * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : 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 */\n function 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 */\n function 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 */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\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 */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((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 = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\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 * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\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 */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\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 || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\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 */\n function 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 the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\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 */\n function 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 */\n function 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 a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\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 */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\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 */\n function 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 */\n function 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 */\n function 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 * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\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 */\n var stringToPath = memoizeCapped(function(string) {\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 */\n function 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 convert.\n * @returns {string} Returns the source code.\n */\n function 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 * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\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} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\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} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.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 * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.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 * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.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 {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\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 iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\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 * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\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 */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\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 _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\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} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\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} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\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|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\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 `clear`, `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 */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && 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) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\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 */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= 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 */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\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 */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\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 */\n function 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 */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or 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 boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\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 DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.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 * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\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 * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\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 an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(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 */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\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 integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\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 */\n function 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 */\n function isObject(value) {\n var type = typeof value;\n return value != null && (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 */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\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 native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\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 nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` 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 regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\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 safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\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 */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(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 */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is 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 convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\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 convert.\n * @returns {string} Returns the converted 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 */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(args) {\n args.push(undefined, customDefaultsAssignIn);\n return apply(assignInWith, undefined, args);\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\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 */\n function 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 property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\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 = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\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 */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` 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 of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\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 */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\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 * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\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 values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n var sourceURL = '//# sourceURL=' +\n ('sourceURL' in options\n ? options.sourceURL\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimEnd, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\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 */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|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 * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n */\n var overSome = createOver(arraySome);\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 */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = (lodashFunc.name + ''),\n names = realNames[key] || (realNames[key] = []);\n\n names.push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/lodash.js\n// module id = 186\n// module chunks = 0","var baseToString = require('./_baseToString');\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 convert.\n * @returns {string} Returns the converted 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\nmodule.exports = toString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/toString.js\n// module id = 187\n// module chunks = 0","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/uniqueId.js\n// module id = 188\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/checkPropTypes.js\n// module id = 189\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/factoryWithTypeCheckers.js\n// module id = 190\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/lib/ReactPropTypesSecret.js\n// module id = 191\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = {\n Properties: {\n // Global States and Properties\n 'aria-current': 0, // state\n 'aria-details': 0,\n 'aria-disabled': 0, // state\n 'aria-hidden': 0, // state\n 'aria-invalid': 0, // state\n 'aria-keyshortcuts': 0,\n 'aria-label': 0,\n 'aria-roledescription': 0,\n // Widget Attributes\n 'aria-autocomplete': 0,\n 'aria-checked': 0,\n 'aria-expanded': 0,\n 'aria-haspopup': 0,\n 'aria-level': 0,\n 'aria-modal': 0,\n 'aria-multiline': 0,\n 'aria-multiselectable': 0,\n 'aria-orientation': 0,\n 'aria-placeholder': 0,\n 'aria-pressed': 0,\n 'aria-readonly': 0,\n 'aria-required': 0,\n 'aria-selected': 0,\n 'aria-sort': 0,\n 'aria-valuemax': 0,\n 'aria-valuemin': 0,\n 'aria-valuenow': 0,\n 'aria-valuetext': 0,\n // Live Region Attributes\n 'aria-atomic': 0,\n 'aria-busy': 0,\n 'aria-live': 0,\n 'aria-relevant': 0,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': 0,\n 'aria-grabbed': 0,\n // Relationship Attributes\n 'aria-activedescendant': 0,\n 'aria-colcount': 0,\n 'aria-colindex': 0,\n 'aria-colspan': 0,\n 'aria-controls': 0,\n 'aria-describedby': 0,\n 'aria-errormessage': 0,\n 'aria-flowto': 0,\n 'aria-labelledby': 0,\n 'aria-owns': 0,\n 'aria-posinset': 0,\n 'aria-rowcount': 0,\n 'aria-rowindex': 0,\n 'aria-rowspan': 0,\n 'aria-setsize': 0\n },\n DOMAttributeNames: {},\n DOMPropertyNames: {}\n};\n\nmodule.exports = ARIADOMPropertyConfig;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ARIADOMPropertyConfig.js\n// module id = 192\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar focusNode = require('fbjs/lib/focusNode');\n\nvar AutoFocusUtils = {\n focusDOMComponent: function () {\n focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n }\n};\n\nmodule.exports = AutoFocusUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/AutoFocusUtils.js\n// module id = 193\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar FallbackCompositionState = require('./FallbackCompositionState');\nvar SyntheticCompositionEvent = require('./SyntheticCompositionEvent');\nvar SyntheticInputEvent = require('./SyntheticInputEvent');\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: 'onBeforeInput',\n captured: 'onBeforeInputCapture'\n },\n dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionEnd',\n captured: 'onCompositionEndCapture'\n },\n dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionStart',\n captured: 'onCompositionStartCapture'\n },\n dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionUpdate',\n captured: 'onCompositionUpdateCapture'\n },\n dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case 'topCompositionStart':\n return eventTypes.compositionStart;\n case 'topCompositionEnd':\n return eventTypes.compositionEnd;\n case 'topCompositionUpdate':\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topKeyUp':\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n case 'topKeyDown':\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n case 'topKeyPress':\n case 'topMouseDown':\n case 'topBlur':\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n if (typeof detail === 'object' && 'data' in detail) {\n return detail.data;\n }\n return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topCompositionEnd':\n return getDataFromCustomEvent(nativeEvent);\n case 'topKeyPress':\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case 'topTextInput':\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n // If composition event is available, we extract a string only at\n // compositionevent, otherwise extract it at fallback events.\n if (currentComposition) {\n if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n return null;\n }\n\n switch (topLevelType) {\n case 'topPaste':\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n case 'topKeyPress':\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case 'topCompositionEnd':\n return useFallbackCompositionData ? null : nativeEvent.data;\n default:\n return null;\n }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/BeforeInputEventPlugin.js\n// module id = 194\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar camelizeStyleName = require('fbjs/lib/camelizeStyleName');\nvar dangerousStyleValue = require('./dangerousStyleValue');\nvar hyphenateStyleName = require('fbjs/lib/hyphenateStyleName');\nvar memoizeStringOnly = require('fbjs/lib/memoizeStringOnly');\nvar warning = require('fbjs/lib/warning');\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar hasShorthandPropertyBug = false;\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n var tempStyle = document.createElement('div').style;\n try {\n // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n tempStyle.font = '';\n } catch (e) {\n hasShorthandPropertyBug = true;\n }\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n\n var warnHyphenatedStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n };\n\n var warnBadVendoredStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n };\n\n var warnStyleValueWithSemicolon = function (name, value, owner) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, \"Style property values shouldn't contain a semicolon.%s \" + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;\n };\n\n var warnStyleValueIsNaN = function (name, value, owner) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;\n };\n\n var checkRenderMessage = function (owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n };\n\n /**\n * @param {string} name\n * @param {*} value\n * @param {ReactDOMComponent} component\n */\n var warnValidStyle = function (name, value, component) {\n var owner;\n if (component) {\n owner = component._currentElement._owner;\n }\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name, owner);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name, owner);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value, owner);\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n warnStyleValueIsNaN(name, value, owner);\n }\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @param {ReactDOMComponent} component\n * @return {?string}\n */\n createMarkupForStyles: function (styles, component) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var isCustomProperty = styleName.indexOf('--') === 0;\n var styleValue = styles[styleName];\n if (process.env.NODE_ENV !== 'production') {\n if (!isCustomProperty) {\n warnValidStyle(styleName, styleValue, component);\n }\n }\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, component, isCustomProperty) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n * @param {ReactDOMComponent} component\n */\n setValueForStyles: function (node, styles, component) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: component._debugID,\n type: 'update styles',\n payload: styles\n });\n }\n\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var isCustomProperty = styleName.indexOf('--') === 0;\n if (process.env.NODE_ENV !== 'production') {\n if (!isCustomProperty) {\n warnValidStyle(styleName, styles[styleName], component);\n }\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName], component, isCustomProperty);\n if (styleName === 'float' || styleName === 'cssFloat') {\n styleName = styleFloatAccessor;\n }\n if (isCustomProperty) {\n style.setProperty(styleName, styleValue);\n } else if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n};\n\nmodule.exports = CSSPropertyOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/CSSPropertyOperations.js\n// module id = 195\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar inputValueTracking = require('./inputValueTracking');\nvar getEventTarget = require('./getEventTarget');\nvar isEventSupported = require('./isEventSupported');\nvar isTextInputElement = require('./isTextInputElement');\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: 'onChange',\n captured: 'onChangeCapture'\n },\n dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n }\n};\n\nfunction createAndAccumulateChangeEvent(inst, nativeEvent, target) {\n var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, target);\n event.type = 'change';\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = createAndAccumulateChangeEvent(activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue(false);\n}\n\nfunction startWatchingForChangeEventIE8(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementInst = null;\n}\n\nfunction getInstIfValueChanged(targetInst, nativeEvent) {\n var updated = inputValueTracking.updateValueIfChanged(targetInst);\n var simulated = nativeEvent.simulated === true && ChangeEventPlugin._allowSimulatedPassThrough;\n\n if (updated || simulated) {\n return targetInst;\n }\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n if (topLevelType === 'topChange') {\n return targetInst;\n }\n}\n\nfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForChangeEventIE8();\n }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n\n isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9);\n}\n\n/**\n * (For IE <=9) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n}\n\n/**\n * (For IE <=9) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n\n activeElement = null;\n activeElementInst = null;\n}\n\n/**\n * (For IE <=9) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n if (getInstIfValueChanged(activeElementInst, nativeEvent)) {\n manualDispatchChangeEvent(nativeEvent);\n }\n}\n\nfunction handleEventsForInputEventPolyfill(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventPolyfill(topLevelType, targetInst, nativeEvent) {\n if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n return getInstIfValueChanged(activeElementInst, nativeEvent);\n }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n var nodeName = elem.nodeName;\n return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst, nativeEvent) {\n if (topLevelType === 'topClick') {\n return getInstIfValueChanged(targetInst, nativeEvent);\n }\n}\n\nfunction getTargetInstForInputOrChangeEvent(topLevelType, targetInst, nativeEvent) {\n if (topLevelType === 'topInput' || topLevelType === 'topChange') {\n return getInstIfValueChanged(targetInst, nativeEvent);\n }\n}\n\nfunction handleControlledInputBlur(inst, node) {\n // TODO: In IE, inst is occasionally null. Why?\n if (inst == null) {\n return;\n }\n\n // Fiber and ReactDOM keep wrapper state in separate places\n var state = inst._wrapperState || node._wrapperState;\n\n if (!state || !state.controlled || node.type !== 'number') {\n return;\n }\n\n // If controlled, assign the value attribute to the current value on blur\n var value = '' + node.value;\n if (node.getAttribute('value') !== value) {\n node.setAttribute('value', value);\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n eventTypes: eventTypes,\n\n _allowSimulatedPassThrough: true,\n _isInputEventSupported: isInputEventSupported,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n var getTargetInstFunc, handleEventFunc;\n if (shouldUseChangeEvent(targetNode)) {\n if (doesChangeEventBubble) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n handleEventFunc = handleEventsForInputEventPolyfill;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n }\n\n if (getTargetInstFunc) {\n var inst = getTargetInstFunc(topLevelType, targetInst, nativeEvent);\n if (inst) {\n var event = createAndAccumulateChangeEvent(inst, nativeEvent, nativeEventTarget);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(topLevelType, targetNode, targetInst);\n }\n\n // When blurring, set the value attribute for number inputs\n if (topLevelType === 'topBlur') {\n handleControlledInputBlur(targetInst, targetNode);\n }\n }\n};\n\nmodule.exports = ChangeEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ChangeEventPlugin.js\n// module id = 196\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar createNodesFromMarkup = require('fbjs/lib/createNodesFromMarkup');\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\n\nvar Danger = {\n /**\n * Replaces a node with a string of markup at its current position within its\n * parent. The markup must render into a single root node.\n *\n * @param {DOMElement} oldChild Child node to replace.\n * @param {string} markup Markup to render in place of the child node.\n * @internal\n */\n dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {\n !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;\n !markup ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;\n !(oldChild.nodeName !== 'HTML') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;\n\n if (typeof markup === 'string') {\n var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n oldChild.parentNode.replaceChild(newChild, oldChild);\n } else {\n DOMLazyTree.replaceChildWithTree(oldChild, markup);\n }\n }\n};\n\nmodule.exports = Danger;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/Danger.js\n// module id = 197\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\nvar DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\nmodule.exports = DefaultEventPluginOrder;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/DefaultEventPluginOrder.js\n// module id = 198\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\nvar eventTypes = {\n mouseEnter: {\n registrationName: 'onMouseEnter',\n dependencies: ['topMouseOut', 'topMouseOver']\n },\n mouseLeave: {\n registrationName: 'onMouseLeave',\n dependencies: ['topMouseOut', 'topMouseOver']\n }\n};\n\nvar EnterLeaveEventPlugin = {\n eventTypes: eventTypes,\n\n /**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n return null;\n }\n if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n // Must not be a mouse in or mouse out - ignoring.\n return null;\n }\n\n var win;\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = nativeEventTarget.ownerDocument;\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from;\n var to;\n if (topLevelType === 'topMouseOut') {\n from = targetInst;\n var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return null;\n }\n\n var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n\n var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n leave.type = 'mouseleave';\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n\n var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n enter.type = 'mouseenter';\n enter.target = toNode;\n enter.relatedTarget = fromNode;\n\n EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n return [leave, enter];\n }\n};\n\nmodule.exports = EnterLeaveEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/EnterLeaveEventPlugin.js\n// module id = 199\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n this._root = root;\n this._startText = this.getText();\n this._fallbackText = null;\n}\n\n_assign(FallbackCompositionState.prototype, {\n destructor: function () {\n this._root = null;\n this._startText = null;\n this._fallbackText = null;\n },\n\n /**\n * Get current text of input.\n *\n * @return {string}\n */\n getText: function () {\n if ('value' in this._root) {\n return this._root.value;\n }\n return this._root[getTextContentAccessor()];\n },\n\n /**\n * Determine the differing substring between the initially stored\n * text content and the current content.\n *\n * @return {string}\n */\n getData: function () {\n if (this._fallbackText) {\n return this._fallbackText;\n }\n\n var start;\n var startValue = this._startText;\n var startLength = startValue.length;\n var end;\n var endValue = this.getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n this._fallbackText = endValue.slice(start, sliceTail);\n return this._fallbackText;\n }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\n\nmodule.exports = FallbackCompositionState;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/FallbackCompositionState.js\n// module id = 200\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\n\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),\n Properties: {\n /**\n * Standard Properties\n */\n accept: 0,\n acceptCharset: 0,\n accessKey: 0,\n action: 0,\n allowFullScreen: HAS_BOOLEAN_VALUE,\n allowTransparency: 0,\n alt: 0,\n // specifies target context for links with `preload` type\n as: 0,\n async: HAS_BOOLEAN_VALUE,\n autoComplete: 0,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n capture: HAS_BOOLEAN_VALUE,\n cellPadding: 0,\n cellSpacing: 0,\n charSet: 0,\n challenge: 0,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n cite: 0,\n classID: 0,\n className: 0,\n cols: HAS_POSITIVE_NUMERIC_VALUE,\n colSpan: 0,\n content: 0,\n contentEditable: 0,\n contextMenu: 0,\n controls: HAS_BOOLEAN_VALUE,\n controlsList: 0,\n coords: 0,\n crossOrigin: 0,\n data: 0, // For `<object />` acts as `src`.\n dateTime: 0,\n 'default': HAS_BOOLEAN_VALUE,\n defer: HAS_BOOLEAN_VALUE,\n dir: 0,\n disabled: HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: 0,\n encType: 0,\n form: 0,\n formAction: 0,\n formEncType: 0,\n formMethod: 0,\n formNoValidate: HAS_BOOLEAN_VALUE,\n formTarget: 0,\n frameBorder: 0,\n headers: 0,\n height: 0,\n hidden: HAS_BOOLEAN_VALUE,\n high: 0,\n href: 0,\n hrefLang: 0,\n htmlFor: 0,\n httpEquiv: 0,\n icon: 0,\n id: 0,\n inputMode: 0,\n integrity: 0,\n is: 0,\n keyParams: 0,\n keyType: 0,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: HAS_BOOLEAN_VALUE,\n low: 0,\n manifest: 0,\n marginHeight: 0,\n marginWidth: 0,\n max: 0,\n maxLength: 0,\n media: 0,\n mediaGroup: 0,\n method: 0,\n min: 0,\n minLength: 0,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n name: 0,\n nonce: 0,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n playsInline: HAS_BOOLEAN_VALUE,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 0,\n readOnly: HAS_BOOLEAN_VALUE,\n referrerPolicy: 0,\n rel: 0,\n required: HAS_BOOLEAN_VALUE,\n reversed: HAS_BOOLEAN_VALUE,\n role: 0,\n rows: HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: HAS_NUMERIC_VALUE,\n sandbox: 0,\n scope: 0,\n scoped: HAS_BOOLEAN_VALUE,\n scrolling: 0,\n seamless: HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n shape: 0,\n size: HAS_POSITIVE_NUMERIC_VALUE,\n sizes: 0,\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: 0,\n src: 0,\n srcDoc: 0,\n srcLang: 0,\n srcSet: 0,\n start: HAS_NUMERIC_VALUE,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 0,\n target: 0,\n title: 0,\n // Setting .type throws on non-<input> tags\n type: 0,\n useMap: 0,\n value: 0,\n width: 0,\n wmode: 0,\n wrap: 0,\n\n /**\n * RDFa Properties\n */\n about: 0,\n datatype: 0,\n inlist: 0,\n prefix: 0,\n // property is also supported for OpenGraph in meta tags.\n property: 0,\n resource: 0,\n 'typeof': 0,\n vocab: 0,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: 0,\n autoCorrect: 0,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: 0,\n // color is for Safari mask-icon link\n color: 0,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: 0,\n itemScope: HAS_BOOLEAN_VALUE,\n itemType: 0,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: 0,\n itemRef: 0,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: 0,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: 0,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMPropertyNames: {},\n DOMMutationMethods: {\n value: function (node, value) {\n if (value == null) {\n return node.removeAttribute('value');\n }\n\n // Number inputs get special treatment due to some edge cases in\n // Chrome. Let everything else assign the value attribute as normal.\n // https://github.com/facebook/react/issues/7253#issuecomment-236074326\n if (node.type !== 'number' || node.hasAttribute('value') === false) {\n node.setAttribute('value', '' + value);\n } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) {\n // Don't assign an attribute if validation reports bad\n // input. Chrome will clear the value. Additionally, don't\n // operate on inputs that have focus, otherwise Chrome might\n // strip off trailing decimal places and cause the user's\n // cursor position to jump to the beginning of the input.\n //\n // In ReactDOMInput, we have an onBlur event that will trigger\n // this function again when focus is lost.\n node.setAttribute('value', '' + value);\n }\n }\n }\n};\n\nmodule.exports = HTMLDOMPropertyConfig;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/HTMLDOMPropertyConfig.js\n// module id = 201\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactReconciler = require('./ReactReconciler');\n\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\nfunction instantiateChild(childInstances, child, name, selfDebugID) {\n // We found a component instance.\n var keyUnique = childInstances[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (child != null && keyUnique) {\n childInstances[name] = instantiateReactComponent(child, true);\n }\n}\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID) // 0 in production and for roots\n {\n if (nestedChildNodes == null) {\n return null;\n }\n var childInstances = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {\n return instantiateChild(childInsts, child, name, selfDebugID);\n }, childInstances);\n } else {\n traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n }\n return childInstances;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextChildren Flat child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID) // 0 in production and for roots\n {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n var prevChild;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(nextElement, true);\n nextChildren[name] = nextChildInstance;\n // Creating mount image now ensures refs are resolved in right order\n // (see https://github.com/facebook/react/pull/7101 for explanation).\n var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);\n mountImages.push(nextChildMountImage);\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {\n prevChild = prevChildren[name];\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function (renderedChildren, safely) {\n for (var name in renderedChildren) {\n if (renderedChildren.hasOwnProperty(name)) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild, safely);\n }\n }\n }\n};\n\nmodule.exports = ReactChildReconciler;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactChildReconciler.js\n// module id = 202\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMIDOperations = require('./ReactDOMIDOperations');\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactComponentBrowserEnvironment.js\n// module id = 203\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactErrorUtils = require('./ReactErrorUtils');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactNodeTypes = require('./ReactNodeTypes');\nvar ReactReconciler = require('./ReactReconciler');\n\nif (process.env.NODE_ENV !== 'production') {\n var checkReactTypeSpec = require('./checkReactTypeSpec');\n}\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar CompositeTypes = {\n ImpureClass: 0,\n PureClass: 1,\n StatelessFunctional: 2\n};\n\nfunction StatelessComponent(Component) {}\nStatelessComponent.prototype.render = function () {\n var Component = ReactInstanceMap.get(this)._currentElement.type;\n var element = Component(this.props, this.context, this.updater);\n warnIfInvalidElement(Component, element);\n return element;\n};\n\nfunction warnIfInvalidElement(Component, element) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;\n }\n}\n\nfunction shouldConstruct(Component) {\n return !!(Component.prototype && Component.prototype.isReactComponent);\n}\n\nfunction isPureComponent(Component) {\n return !!(Component.prototype && Component.prototype.isPureReactComponent);\n}\n\n// Separated into a function to contain deoptimizations caused by try/finally.\nfunction measureLifeCyclePerf(fn, debugID, timerType) {\n if (debugID === 0) {\n // Top-level wrappers (see ReactMount) and empty components (see\n // ReactDOMEmptyComponent) are invisible to hooks and devtools.\n // Both are implementation details that should go away in the future.\n return fn();\n }\n\n ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);\n try {\n return fn();\n } finally {\n ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);\n }\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponent = {\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function (element) {\n this._currentElement = element;\n this._rootNodeID = 0;\n this._compositeType = null;\n this._instance = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n\n // See ReactUpdateQueue\n this._updateBatchNumber = null;\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._context = null;\n this._mountOrder = 0;\n this._topLevelWrapper = null;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n\n // ComponentWillUnmount shall only be called once\n this._calledComponentWillUnmount = false;\n\n if (process.env.NODE_ENV !== 'production') {\n this._warnedAboutRefsInRender = false;\n }\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} hostParent\n * @param {?object} hostContainerInfo\n * @param {?object} context\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var _this = this;\n\n this._context = context;\n this._mountOrder = nextMountID++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var publicProps = this._currentElement.props;\n var publicContext = this._processContext(context);\n\n var Component = this._currentElement.type;\n\n var updateQueue = transaction.getUpdateQueue();\n\n // Initialize the public class\n var doConstruct = shouldConstruct(Component);\n var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);\n var renderedElement;\n\n // Support functional components\n if (!doConstruct && (inst == null || inst.render == null)) {\n renderedElement = inst;\n warnIfInvalidElement(Component, renderedElement);\n !(inst === null || inst === false || React.isValidElement(inst)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;\n inst = new StatelessComponent(Component);\n this._compositeType = CompositeTypes.StatelessFunctional;\n } else {\n if (isPureComponent(Component)) {\n this._compositeType = CompositeTypes.PureClass;\n } else {\n this._compositeType = CompositeTypes.ImpureClass;\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n if (inst.render == null) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;\n }\n\n var propsMutated = inst.props !== publicProps;\n var componentName = Component.displayName || Component.name || 'Component';\n\n process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + \"up the same props that your component's constructor was passed.\", componentName, componentName) : void 0;\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n inst.updater = updateQueue;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (process.env.NODE_ENV !== 'production') {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var markup;\n if (inst.unstable_handleError) {\n markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } else {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n\n if (inst.componentDidMount) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(function () {\n return inst.componentDidMount();\n }, _this._debugID, 'componentDidMount');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n }\n\n return markup;\n },\n\n _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {\n if (process.env.NODE_ENV !== 'production' && !doConstruct) {\n ReactCurrentOwner.current = this;\n try {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n }\n },\n\n _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {\n var Component = this._currentElement.type;\n\n if (doConstruct) {\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return new Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'ctor');\n } else {\n return new Component(publicProps, publicContext, updateQueue);\n }\n }\n\n // This can still be an instance in case of factory components\n // but we'll count this as time spent rendering as the more common case.\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'render');\n } else {\n return Component(publicProps, publicContext, updateQueue);\n }\n },\n\n performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var markup;\n var checkpoint = transaction.checkpoint();\n try {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } catch (e) {\n // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n transaction.rollback(checkpoint);\n this._instance.unstable_handleError(e);\n if (this._pendingStateQueue) {\n this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n }\n checkpoint = transaction.checkpoint();\n\n this._renderedComponent.unmountComponent(true);\n transaction.rollback(checkpoint);\n\n // Try again - we've informed the component about the error, so they can render an error message this time.\n // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n return markup;\n },\n\n performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var inst = this._instance;\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (inst.componentWillMount) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillMount();\n }, debugID, 'componentWillMount');\n } else {\n inst.componentWillMount();\n }\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n // If not a stateless component, we now render\n if (renderedElement === undefined) {\n renderedElement = this._renderValidatedComponent();\n }\n\n var nodeType = ReactNodeTypes.getType(renderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n return markup;\n },\n\n getHostNode: function () {\n return ReactReconciler.getHostNode(this._renderedComponent);\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (safely) {\n if (!this._renderedComponent) {\n return;\n }\n\n var inst = this._instance;\n\n if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {\n inst._calledComponentWillUnmount = true;\n\n if (safely) {\n var name = this.getName() + '.componentWillUnmount()';\n ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n } else {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUnmount();\n }, this._debugID, 'componentWillUnmount');\n } else {\n inst.componentWillUnmount();\n }\n }\n }\n\n if (this._renderedComponent) {\n ReactReconciler.unmountComponent(this._renderedComponent, safely);\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._instance = null;\n }\n\n // Reset pending fields\n // Even if this component is scheduled for another update in ReactUpdates,\n // it would still be ignored because these fields are reset.\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = 0;\n this._topLevelWrapper = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function (context) {\n var Component = this._currentElement.type;\n var contextTypes = Component.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n var maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function (context) {\n var maskedContext = this._maskContext(context);\n if (process.env.NODE_ENV !== 'production') {\n var Component = this._currentElement.type;\n if (Component.contextTypes) {\n this._checkContextTypes(Component.contextTypes, maskedContext, 'context');\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function (currentContext) {\n var Component = this._currentElement.type;\n var inst = this._instance;\n var childContext;\n\n if (inst.getChildContext) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n try {\n childContext = inst.getChildContext();\n } finally {\n ReactInstrumentation.debugTool.onEndProcessingChildContext();\n }\n } else {\n childContext = inst.getChildContext();\n }\n }\n\n if (childContext) {\n !(typeof Component.childContextTypes === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;\n if (process.env.NODE_ENV !== 'production') {\n this._checkContextTypes(Component.childContextTypes, childContext, 'child context');\n }\n for (var name in childContext) {\n !(name in Component.childContextTypes) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;\n }\n return _assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Assert that the context types are valid\n *\n * @param {object} typeSpecs Map of context field to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkContextTypes: function (typeSpecs, values, location) {\n if (process.env.NODE_ENV !== 'production') {\n checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);\n }\n },\n\n receiveComponent: function (nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n } else {\n this._updateBatchNumber = null;\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n var inst = this._instance;\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;\n\n var willReceive = false;\n var nextContext;\n\n // Determine if the context has changed or not\n if (this._context === nextUnmaskedContext) {\n nextContext = inst.context;\n } else {\n nextContext = this._processContext(nextUnmaskedContext);\n willReceive = true;\n }\n\n var prevProps = prevParentElement.props;\n var nextProps = nextParentElement.props;\n\n // Not a simple state update but a props update\n if (prevParentElement !== nextParentElement) {\n willReceive = true;\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n if (willReceive && inst.componentWillReceiveProps) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillReceiveProps(nextProps, nextContext);\n }, this._debugID, 'componentWillReceiveProps');\n } else {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n var shouldUpdate = true;\n\n if (!this._pendingForceUpdate) {\n if (inst.shouldComponentUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n shouldUpdate = measureLifeCyclePerf(function () {\n return inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'shouldComponentUpdate');\n } else {\n shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }\n } else {\n if (this._compositeType === CompositeTypes.PureClass) {\n shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);\n }\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;\n }\n\n this._updateBatchNumber = null;\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function (props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = _assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n var _this2 = this;\n\n var inst = this._instance;\n\n var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n var prevProps;\n var prevState;\n var prevContext;\n if (hasComponentDidUpdate) {\n prevProps = inst.props;\n prevState = inst.state;\n prevContext = inst.context;\n }\n\n if (inst.componentWillUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'componentWillUpdate');\n } else {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (hasComponentDidUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n }\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function (transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n } else {\n var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);\n ReactReconciler.unmountComponent(prevComponentInstance, false);\n\n var nodeType = ReactNodeTypes.getType(nextRenderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);\n }\n },\n\n /**\n * Overridden in shallow rendering.\n *\n * @protected\n */\n _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {\n ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function () {\n var inst = this._instance;\n var renderedElement;\n\n if (process.env.NODE_ENV !== 'production') {\n renderedElement = measureLifeCyclePerf(function () {\n return inst.render();\n }, this._debugID, 'render');\n } else {\n renderedElement = inst.render();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (renderedElement === undefined && inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedElement = null;\n }\n }\n\n return renderedElement;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function () {\n var renderedElement;\n if (process.env.NODE_ENV !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {\n ReactCurrentOwner.current = this;\n try {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n }\n !(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;\n\n return renderedElement;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function (ref, component) {\n var inst = this.getPublicInstance();\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;\n var publicComponentInstance = component.getPublicInstance();\n if (process.env.NODE_ENV !== 'production') {\n var componentName = component && component.getName ? component.getName() : 'a component';\n process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref \"%s\" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;\n }\n var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n refs[ref] = publicComponentInstance;\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function (ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function () {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function () {\n var inst = this._instance;\n if (this._compositeType === CompositeTypes.StatelessFunctional) {\n return null;\n }\n return inst;\n },\n\n // Stub\n _instantiateReactComponent: null\n};\n\nmodule.exports = ReactCompositeComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactCompositeComponent.js\n// module id = 204\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDefaultInjection = require('./ReactDefaultInjection');\nvar ReactMount = require('./ReactMount');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdates = require('./ReactUpdates');\nvar ReactVersion = require('./ReactVersion');\n\nvar findDOMNode = require('./findDOMNode');\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar renderSubtreeIntoContainer = require('./renderSubtreeIntoContainer');\nvar warning = require('fbjs/lib/warning');\n\nReactDefaultInjection.inject();\n\nvar ReactDOM = {\n findDOMNode: findDOMNode,\n render: ReactMount.render,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n version: ReactVersion,\n\n /* eslint-disable camelcase */\n unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n /* eslint-enable camelcase */\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n ComponentTree: {\n getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n getNodeFromInstance: function (inst) {\n // inst is an internal instance (but could be a composite)\n if (inst._renderedComponent) {\n inst = getHostComponentFromComposite(inst);\n }\n if (inst) {\n return ReactDOMComponentTree.getNodeFromInstance(inst);\n } else {\n return null;\n }\n }\n },\n Mount: ReactMount,\n Reconciler: ReactReconciler\n });\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n // First check if devtools is not installed\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // If we're in Chrome or Firefox, provide a download link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n // Firefox does not have the issue with devtools loaded over file://\n var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;\n console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');\n }\n }\n\n var testFunc = function testFn() {};\n process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, \"It looks like you're using a minified copy of the development build \" + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0;\n\n // If we're in IE8, check to see if we are in compatibility mode and provide\n // information on preventing compatibility mode\n var ieCompatibilityMode = document.documentMode && document.documentMode < 8;\n\n process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />') : void 0;\n\n var expectedFeatures = [\n // shims\n Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;\n break;\n }\n }\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactInstrumentation = require('./ReactInstrumentation');\n var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook');\n var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook');\n var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook');\n\n ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);\n}\n\nmodule.exports = ReactDOM;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOM.js\n// module id = 205\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* global hasOwnProperty:true */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar AutoFocusUtils = require('./AutoFocusUtils');\nvar CSSPropertyOperations = require('./CSSPropertyOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMNamespaces = require('./DOMNamespaces');\nvar DOMProperty = require('./DOMProperty');\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMInput = require('./ReactDOMInput');\nvar ReactDOMOption = require('./ReactDOMOption');\nvar ReactDOMSelect = require('./ReactDOMSelect');\nvar ReactDOMTextarea = require('./ReactDOMTextarea');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMultiChild = require('./ReactMultiChild');\nvar ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar isEventSupported = require('./isEventSupported');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar inputValueTracking = require('./inputValueTracking');\nvar validateDOMNesting = require('./validateDOMNesting');\nvar warning = require('fbjs/lib/warning');\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = { string: true, number: true };\n\nvar STYLE = 'style';\nvar HTML = '__html';\nvar RESERVED_PROPS = {\n children: null,\n dangerouslySetInnerHTML: null,\n suppressContentEditableWarning: null\n};\n\n// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\nvar DOC_FRAGMENT_TYPE = 11;\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n if (internalInstance) {\n var owner = internalInstance._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' This DOM node was rendered by `' + name + '`.';\n }\n }\n }\n return '';\n}\n\nfunction friendlyStringify(obj) {\n if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return '[' + obj.map(friendlyStringify).join(', ') + ']';\n } else {\n var pairs = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n }\n }\n return '{' + pairs.join(', ') + '}';\n }\n } else if (typeof obj === 'string') {\n return JSON.stringify(obj);\n } else if (typeof obj === 'function') {\n return '[function object]';\n }\n // Differs from JSON.stringify in that undefined because undefined and that\n // inf and nan don't become null\n return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n if (style1 == null || style2 == null) {\n return;\n }\n if (shallowEqual(style1, style2)) {\n return;\n }\n\n var componentName = component._tag;\n var owner = component._currentElement._owner;\n var ownerName;\n if (owner) {\n ownerName = owner.getName();\n }\n\n var hash = ownerName + '|' + componentName;\n\n if (styleMutationWarning.hasOwnProperty(hash)) {\n return;\n }\n\n styleMutationWarning[hash] = true;\n\n process.env.NODE_ENV !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n}\n\n/**\n * @param {object} component\n * @param {?object} props\n */\nfunction assertValidProps(component, props) {\n if (!props) {\n return;\n }\n // Note the use of `==` which checks for null or undefined.\n if (voidElementTags[component._tag]) {\n !(props.children == null && props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;\n }\n if (props.dangerouslySetInnerHTML != null) {\n !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;\n !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;\n }\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;\n }\n !(props.style == null || typeof props.style === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n if (transaction instanceof ReactServerRenderingTransaction) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // IE8 has no API for event capturing and the `onScroll` event doesn't\n // bubble.\n process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), \"This browser doesn't support the `onScroll` event\") : void 0;\n }\n var containerInfo = inst._hostContainerInfo;\n var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n listenTo(registrationName, doc);\n transaction.getReactMountReady().enqueue(putListener, {\n inst: inst,\n registrationName: registrationName,\n listener: listener\n });\n}\n\nfunction putListener() {\n var listenerToPut = this;\n EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction inputPostMount() {\n var inst = this;\n ReactDOMInput.postMountWrapper(inst);\n}\n\nfunction textareaPostMount() {\n var inst = this;\n ReactDOMTextarea.postMountWrapper(inst);\n}\n\nfunction optionPostMount() {\n var inst = this;\n ReactDOMOption.postMountWrapper(inst);\n}\n\nvar setAndValidateContentChildDev = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev = function (content) {\n var hasExistingContent = this._contentDebugID != null;\n var debugID = this._debugID;\n // This ID represents the inlined child that has no backing instance:\n var contentDebugID = -debugID;\n\n if (content == null) {\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n }\n this._contentDebugID = null;\n return;\n }\n\n validateDOMNesting(null, String(content), this, this._ancestorInfo);\n this._contentDebugID = contentDebugID;\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n } else {\n ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n }\n };\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n topAbort: 'abort',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTimeUpdate: 'timeupdate',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting'\n};\n\nfunction trackInputValue() {\n inputValueTracking.track(this);\n}\n\nfunction trapBubbledEventsLocal() {\n var inst = this;\n // If a component renders to null or if another component fatals and causes\n // the state of the tree to be corrupted, `node` here can be null.\n !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;\n var node = getNode(inst);\n !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;\n\n switch (inst._tag) {\n case 'iframe':\n case 'object':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'video':\n case 'audio':\n inst._wrapperState.listeners = [];\n // Create listener for each media event\n for (var event in mediaEvents) {\n if (mediaEvents.hasOwnProperty(event)) {\n inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n }\n }\n break;\n case 'source':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];\n break;\n case 'img':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'form':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];\n break;\n case 'input':\n case 'select':\n case 'textarea':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];\n break;\n }\n}\n\nfunction postUpdateSelectWrapper() {\n ReactDOMSelect.postUpdateWrapper(this);\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n // NOTE: menuitem's close tag should be omitted, but that causes problems.\n};\n\nvar newlineEatingTags = {\n listing: true,\n pre: true,\n textarea: true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n menuitem: true\n}, omittedCloseTags);\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n if (!hasOwnProperty.call(validatedTagCache, tag)) {\n !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;\n validatedTagCache[tag] = true;\n }\n}\n\nfunction isCustomComponent(tagName, props) {\n return tagName.indexOf('-') >= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n * - Event listeners: `onClick`, `onMouseDown`, etc.\n * - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(element) {\n var tag = element.type;\n validateDangerousTag(tag);\n this._currentElement = element;\n this._tag = tag.toLowerCase();\n this._namespaceURI = null;\n this._renderedChildren = null;\n this._previousStyle = null;\n this._previousStyleCopy = null;\n this._hostNode = null;\n this._hostParent = null;\n this._rootNodeID = 0;\n this._domID = 0;\n this._hostContainerInfo = null;\n this._wrapperState = null;\n this._topLevelWrapper = null;\n this._flags = 0;\n if (process.env.NODE_ENV !== 'production') {\n this._ancestorInfo = null;\n setAndValidateContentChildDev.call(this, null);\n }\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\n\nReactDOMComponent.Mixin = {\n /**\n * Generates root tag markup then recurses. This method has side effects and\n * is not idempotent.\n *\n * @internal\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?ReactDOMComponent} the parent component instance\n * @param {?object} info about the host container\n * @param {object} context\n * @return {string} The computed markup.\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n this._rootNodeID = globalIdCounter++;\n this._domID = hostContainerInfo._idCounter++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var props = this._currentElement.props;\n\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n this._wrapperState = {\n listeners: null\n };\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'input':\n ReactDOMInput.mountWrapper(this, props, hostParent);\n props = ReactDOMInput.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trackInputValue, this);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'option':\n ReactDOMOption.mountWrapper(this, props, hostParent);\n props = ReactDOMOption.getHostProps(this, props);\n break;\n case 'select':\n ReactDOMSelect.mountWrapper(this, props, hostParent);\n props = ReactDOMSelect.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'textarea':\n ReactDOMTextarea.mountWrapper(this, props, hostParent);\n props = ReactDOMTextarea.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trackInputValue, this);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n }\n\n assertValidProps(this, props);\n\n // We create tags in the namespace of their parent container, except HTML\n // tags get no namespace.\n var namespaceURI;\n var parentTag;\n if (hostParent != null) {\n namespaceURI = hostParent._namespaceURI;\n parentTag = hostParent._tag;\n } else if (hostContainerInfo._tag) {\n namespaceURI = hostContainerInfo._namespaceURI;\n parentTag = hostContainerInfo._tag;\n }\n if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n namespaceURI = DOMNamespaces.html;\n }\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'svg') {\n namespaceURI = DOMNamespaces.svg;\n } else if (this._tag === 'math') {\n namespaceURI = DOMNamespaces.mathml;\n }\n }\n this._namespaceURI = namespaceURI;\n\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo._tag) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(this._tag, null, this, parentInfo);\n }\n this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n }\n\n var mountImage;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var el;\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'script') {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n var div = ownerDocument.createElement('div');\n var type = this._currentElement.type;\n div.innerHTML = '<' + type + '></' + type + '>';\n el = div.removeChild(div.firstChild);\n } else if (props.is) {\n el = ownerDocument.createElement(this._currentElement.type, props.is);\n } else {\n // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n el = ownerDocument.createElement(this._currentElement.type);\n }\n } else {\n el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n }\n ReactDOMComponentTree.precacheNode(this, el);\n this._flags |= Flags.hasCachedChildNodes;\n if (!this._hostParent) {\n DOMPropertyOperations.setAttributeForRoot(el);\n }\n this._updateDOMProperties(null, props, transaction);\n var lazyTree = DOMLazyTree(el);\n this._createInitialChildren(transaction, props, context, lazyTree);\n mountImage = lazyTree;\n } else {\n var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n var tagContent = this._createContentMarkup(transaction, props, context);\n if (!tagContent && omittedCloseTags[this._tag]) {\n mountImage = tagOpen + '/>';\n } else {\n mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n }\n }\n\n switch (this._tag) {\n case 'input':\n transaction.getReactMountReady().enqueue(inputPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'textarea':\n transaction.getReactMountReady().enqueue(textareaPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'select':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'button':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'option':\n transaction.getReactMountReady().enqueue(optionPostMount, this);\n break;\n }\n\n return mountImage;\n },\n\n /**\n * Creates markup for the open tag and all attributes.\n *\n * This method has side effects because events get registered.\n *\n * Iterating over object properties is faster than iterating over arrays.\n * @see http://jsperf.com/obj-vs-arr-iteration\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @return {string} Markup of opening tag.\n */\n _createOpenTagMarkupAndPutListeners: function (transaction, props) {\n var ret = '<' + this._currentElement.type;\n\n for (var propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n var propValue = props[propKey];\n if (propValue == null) {\n continue;\n }\n if (registrationNameModules.hasOwnProperty(propKey)) {\n if (propValue) {\n enqueuePutListener(this, propKey, propValue, transaction);\n }\n } else {\n if (propKey === STYLE) {\n if (propValue) {\n if (process.env.NODE_ENV !== 'production') {\n // See `_updateDOMProperties`. style block\n this._previousStyle = propValue;\n }\n propValue = this._previousStyleCopy = _assign({}, props.style);\n }\n propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n }\n var markup = null;\n if (this._tag != null && isCustomComponent(this._tag, props)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n }\n } else {\n markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n }\n if (markup) {\n ret += ' ' + markup;\n }\n }\n }\n\n // For static pages, no need to put React ID and checksum. Saves lots of\n // bytes.\n if (transaction.renderToStaticMarkup) {\n return ret;\n }\n\n if (!this._hostParent) {\n ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n }\n ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n return ret;\n },\n\n /**\n * Creates markup for the content between the tags.\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @param {object} context\n * @return {string} Content markup.\n */\n _createContentMarkup: function (transaction, props, context) {\n var ret = '';\n\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n ret = innerHTML.__html;\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n ret = escapeTextContentForBrowser(contentToUse);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n ret = mountImages.join('');\n }\n }\n if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n // text/html ignores the first character in these tags if it's a newline\n // Prefer to break application/xml over text/html (for now) by adding\n // a newline specifically to get eaten by the parser. (Alternately for\n // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n // \\r is normalized out by HTMLTextAreaElement#value.)\n // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n return '\\n' + ret;\n } else {\n return ret;\n }\n },\n\n _createInitialChildren: function (transaction, props, context, lazyTree) {\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n // TODO: Validate that text is allowed as a child of this node\n if (contentToUse != null) {\n // Avoid setting textContent when the text is empty. In IE11 setting\n // textContent on a text area will cause the placeholder to not\n // show within the textarea until it has been focused and blurred again.\n // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n if (contentToUse !== '') {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n DOMLazyTree.queueText(lazyTree, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n for (var i = 0; i < mountImages.length; i++) {\n DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n }\n }\n }\n },\n\n /**\n * Receives a next element and updates the component.\n *\n * @internal\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} context\n */\n receiveComponent: function (nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n this.updateComponent(transaction, prevElement, nextElement, context);\n },\n\n /**\n * Updates a DOM component after it has already been allocated and\n * attached to the DOM. Reconciles the root DOM node, then recurses.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @param {ReactElement} nextElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevElement, nextElement, context) {\n var lastProps = prevElement.props;\n var nextProps = this._currentElement.props;\n\n switch (this._tag) {\n case 'input':\n lastProps = ReactDOMInput.getHostProps(this, lastProps);\n nextProps = ReactDOMInput.getHostProps(this, nextProps);\n break;\n case 'option':\n lastProps = ReactDOMOption.getHostProps(this, lastProps);\n nextProps = ReactDOMOption.getHostProps(this, nextProps);\n break;\n case 'select':\n lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n break;\n case 'textarea':\n lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n break;\n }\n\n assertValidProps(this, nextProps);\n this._updateDOMProperties(lastProps, nextProps, transaction);\n this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n switch (this._tag) {\n case 'input':\n // Update the wrapper around inputs *after* updating props. This has to\n // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n // raise warnings and prevent the new value from being assigned.\n ReactDOMInput.updateWrapper(this);\n\n // We also check that we haven't missed a value update, such as a\n // Radio group shifting the checked value to another named radio input.\n inputValueTracking.updateValueIfChanged(this);\n break;\n case 'textarea':\n ReactDOMTextarea.updateWrapper(this);\n break;\n case 'select':\n // <select> value update needs to occur after <option> children\n // reconciliation\n transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n break;\n }\n },\n\n /**\n * Reconciles the properties by detecting differences in property values and\n * updating the DOM as necessary. This function is probably the single most\n * critical path for performance optimization.\n *\n * TODO: Benchmark whether checking for changed values in memory actually\n * improves performance (especially statically positioned elements).\n * TODO: Benchmark the effects of putting this at the top since 99% of props\n * do not change for a given reconciliation.\n * TODO: Benchmark areas that can be improved with caching.\n *\n * @private\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {?DOMElement} node\n */\n _updateDOMProperties: function (lastProps, nextProps, transaction) {\n var propKey;\n var styleName;\n var styleUpdates;\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n continue;\n }\n if (propKey === STYLE) {\n var lastStyle = this._previousStyleCopy;\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n this._previousStyleCopy = null;\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (lastProps[propKey]) {\n // Only call deleteListener if there was a listener previously or\n // else willDeleteListener gets called when there wasn't actually a\n // listener (e.g., onClick={null})\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, lastProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n }\n }\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n continue;\n }\n if (propKey === STYLE) {\n if (nextProp) {\n if (process.env.NODE_ENV !== 'production') {\n checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n this._previousStyle = nextProp;\n }\n nextProp = this._previousStyleCopy = _assign({}, nextProp);\n } else {\n this._previousStyleCopy = null;\n }\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n // Update styles that changed since `lastProp`.\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n styleUpdates = nextProp;\n }\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (nextProp) {\n enqueuePutListener(this, propKey, nextProp, transaction);\n } else if (lastProp) {\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, nextProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n var node = getNode(this);\n // If we're updating to null or undefined, we should remove the property\n // from the DOM node instead of inadvertently setting to a string. This\n // brings us in line with the same behavior we have on initial render.\n if (nextProp != null) {\n DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n } else {\n DOMPropertyOperations.deleteValueForProperty(node, propKey);\n }\n }\n }\n if (styleUpdates) {\n CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n }\n },\n\n /**\n * Reconciles the children with the various properties that affect the\n * children content.\n *\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n */\n _updateDOMChildren: function (lastProps, nextProps, transaction, context) {\n var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;\n var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;\n\n var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;\n\n // Note the use of `!=` which checks for null or undefined.\n var lastChildren = lastContent != null ? null : lastProps.children;\n var nextChildren = nextContent != null ? null : nextProps.children;\n\n // If we're switching from children to content/html or vice versa, remove\n // the old content\n var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n if (lastChildren != null && nextChildren == null) {\n this.updateChildren(null, transaction, context);\n } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n this.updateTextContent('');\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n }\n\n if (nextContent != null) {\n if (lastContent !== nextContent) {\n this.updateTextContent('' + nextContent);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, nextContent);\n }\n }\n } else if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n this.updateMarkup('' + nextHtml);\n }\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n } else if (nextChildren != null) {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n\n this.updateChildren(nextChildren, transaction, context);\n }\n },\n\n getHostNode: function () {\n return getNode(this);\n },\n\n /**\n * Destroys all event registrations for this instance. Does not remove from\n * the DOM. That must be done by the parent.\n *\n * @internal\n */\n unmountComponent: function (safely) {\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n var listeners = this._wrapperState.listeners;\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].remove();\n }\n }\n break;\n case 'input':\n case 'textarea':\n inputValueTracking.stopTracking(this);\n break;\n case 'html':\n case 'head':\n case 'body':\n /**\n * Components like <html> <head> and <body> can't be removed or added\n * easily in a cross-browser way, however it's valuable to be able to\n * take advantage of React's reconciliation for styling and <title>\n * management. So we just document it and throw in dangerous cases.\n */\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;\n break;\n }\n\n this.unmountChildren(safely);\n ReactDOMComponentTree.uncacheNode(this);\n EventPluginHub.deleteAllListeners(this);\n this._rootNodeID = 0;\n this._domID = 0;\n this._wrapperState = null;\n\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n },\n\n getPublicInstance: function () {\n return getNode(this);\n }\n};\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMComponent.js\n// module id = 206\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar validateDOMNesting = require('./validateDOMNesting');\n\nvar DOC_NODE_TYPE = 9;\n\nfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n var info = {\n _topLevelWrapper: topLevelWrapper,\n _idCounter: 1,\n _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n _node: node,\n _tag: node ? node.nodeName.toLowerCase() : null,\n _namespaceURI: node ? node.namespaceURI : null\n };\n if (process.env.NODE_ENV !== 'production') {\n info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n }\n return info;\n}\n\nmodule.exports = ReactDOMContainerInfo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMContainerInfo.js\n// module id = 207\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactDOMEmptyComponent = function (instantiate) {\n // ReactCompositeComponent uses this:\n this._currentElement = null;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n this._domID = 0;\n};\n_assign(ReactDOMEmptyComponent.prototype, {\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var domID = hostContainerInfo._idCounter++;\n this._domID = domID;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var nodeValue = ' react-empty: ' + this._domID + ' ';\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var node = ownerDocument.createComment(nodeValue);\n ReactDOMComponentTree.precacheNode(this, node);\n return DOMLazyTree(node);\n } else {\n if (transaction.renderToStaticMarkup) {\n // Normally we'd insert a comment node, but since this is a situation\n // where React won't take over (static pages), we can simply return\n // nothing.\n return '';\n }\n return '<!--' + nodeValue + '-->';\n }\n },\n receiveComponent: function () {},\n getHostNode: function () {\n return ReactDOMComponentTree.getNodeFromInstance(this);\n },\n unmountComponent: function () {\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMEmptyComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMEmptyComponent.js\n// module id = 208\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMFeatureFlags = {\n useCreateElement: true,\n useFiber: false\n};\n\nmodule.exports = ReactDOMFeatureFlags;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMFeatureFlags.js\n// module id = 209\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\n/**\n * Operations used to process updates to DOM nodes.\n */\nvar ReactDOMIDOperations = {\n /**\n * Updates a component's children by processing a series of updates.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n dangerouslyProcessChildrenUpdates: function (parentInst, updates) {\n var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n DOMChildrenOperations.processUpdates(node, updates);\n }\n};\n\nmodule.exports = ReactDOMIDOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMIDOperations.js\n// module id = 210\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnCheckedLink = false;\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMInput.updateWrapper(this);\n }\n}\n\nfunction isControlled(props) {\n var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = {\n getHostProps: function (inst, props) {\n var value = LinkedValueUtils.getValue(props);\n var checked = LinkedValueUtils.getChecked(props);\n\n var hostProps = _assign({\n // Make sure we set .type before any other properties (setting .value\n // before .type means .value is lost in IE11 and below)\n type: undefined,\n // Make sure we set .step before .value (setting .value before .step\n // means .value is rounded on mount, based upon step precision)\n step: undefined,\n // Make sure we set .min & .max before .value (to ensure proper order\n // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n min: undefined,\n max: undefined\n }, props, {\n defaultChecked: undefined,\n defaultValue: undefined,\n value: value != null ? value : inst._wrapperState.initialValue,\n checked: checked != null ? checked : inst._wrapperState.initialChecked,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);\n\n var owner = inst._currentElement._owner;\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.checkedLink !== undefined && !didWarnCheckedLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnCheckedLink = true;\n }\n if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnCheckedDefaultChecked = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnValueDefaultValue = true;\n }\n }\n\n var defaultValue = props.defaultValue;\n inst._wrapperState = {\n initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n initialValue: props.value != null ? props.value : defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n controlled: isControlled(props)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n if (process.env.NODE_ENV !== 'production') {\n var controlled = isControlled(props);\n var owner = inst._currentElement._owner;\n\n if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnUncontrolledToControlled = true;\n }\n if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnControlledToUncontrolled = true;\n }\n }\n\n // TODO: Shouldn't this be getChecked(props)?\n var checked = props.checked;\n if (checked != null) {\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n if (value === 0 && node.value === '') {\n node.value = '0';\n // Note: IE9 reports a number inputs as 'text', so check props instead.\n } else if (props.type === 'number') {\n // Simulate `input.valueAsNumber`. IE9 does not support it\n var valueAsNumber = parseFloat(node.value, 10) || 0;\n\n if (\n // eslint-disable-next-line\n value != valueAsNumber ||\n // eslint-disable-next-line\n value == valueAsNumber && node.value != value) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n } else if (node.value !== '' + value) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n } else {\n if (props.value == null && props.defaultValue != null) {\n // In Chrome, assigning defaultValue to certain input types triggers input validation.\n // For number inputs, the display value loses trailing decimal points. For email inputs,\n // Chrome raises \"The specified value <x> is not a valid email address\".\n //\n // Here we check to see if the defaultValue has actually changed, avoiding these problems\n // when the user is inputting text\n //\n // https://github.com/facebook/react/issues/7253\n if (node.defaultValue !== '' + props.defaultValue) {\n node.defaultValue = '' + props.defaultValue;\n }\n }\n if (props.checked == null && props.defaultChecked != null) {\n node.defaultChecked = !!props.defaultChecked;\n }\n }\n },\n\n postMountWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n // Detach value from defaultValue. We won't do anything if we're working on\n // submit or reset inputs as those values & defaultValues are linked. They\n // are not resetable nodes so this operation doesn't matter and actually\n // removes browser-default values (eg \"Submit Query\") when no value is\n // provided.\n\n switch (props.type) {\n case 'submit':\n case 'reset':\n break;\n case 'color':\n case 'date':\n case 'datetime':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n // This fixes the no-show issue on iOS Safari and Android Chrome:\n // https://github.com/facebook/react/issues/7233\n node.value = '';\n node.value = node.defaultValue;\n break;\n default:\n node.value = node.value;\n break;\n }\n\n // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n // this is needed to work around a chrome bug where setting defaultChecked\n // will sometimes influence the value of checked (even after detachment).\n // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n // We need to temporarily unset name to avoid disrupting radio button groups.\n var name = node.name;\n if (name !== '') {\n node.name = '';\n }\n node.defaultChecked = !node.defaultChecked;\n node.defaultChecked = !node.defaultChecked;\n if (name !== '') {\n node.name = name;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n // Here we use asap to wait until all updates have propagated, which\n // is important when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n ReactUpdates.asap(forceUpdateIfMounted, this);\n\n var name = props.name;\n if (props.type === 'radio' && name != null) {\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n }\n\n // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form, let's just use the global\n // `querySelectorAll` to ensure we don't miss anything.\n var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0; i < group.length; i++) {\n var otherNode = group[i];\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n }\n // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n !otherInstance ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;\n // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n }\n }\n\n return returnValue;\n}\n\nmodule.exports = ReactDOMInput;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMInput.js\n// module id = 211\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMSelect = require('./ReactDOMSelect');\n\nvar warning = require('fbjs/lib/warning');\nvar didWarnInvalidOptionChildren = false;\n\nfunction flattenChildren(children) {\n var content = '';\n\n // Flatten children and warn if they aren't strings or numbers;\n // invalid types are ignored.\n React.Children.forEach(children, function (child) {\n if (child == null) {\n return;\n }\n if (typeof child === 'string' || typeof child === 'number') {\n content += child;\n } else if (!didWarnInvalidOptionChildren) {\n didWarnInvalidOptionChildren = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;\n }\n });\n\n return content;\n}\n\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\nvar ReactDOMOption = {\n mountWrapper: function (inst, props, hostParent) {\n // TODO (yungsters): Remove support for `selected` in <option>.\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;\n }\n\n // Look up whether this option is 'selected'\n var selectValue = null;\n if (hostParent != null) {\n var selectParent = hostParent;\n\n if (selectParent._tag === 'optgroup') {\n selectParent = selectParent._hostParent;\n }\n\n if (selectParent != null && selectParent._tag === 'select') {\n selectValue = ReactDOMSelect.getSelectValueContext(selectParent);\n }\n }\n\n // If the value is null (e.g., no specified value or after initial mount)\n // or missing (e.g., for <datalist>), we don't change props.selected\n var selected = null;\n if (selectValue != null) {\n var value;\n if (props.value != null) {\n value = props.value + '';\n } else {\n value = flattenChildren(props.children);\n }\n selected = false;\n if (Array.isArray(selectValue)) {\n // multiple\n for (var i = 0; i < selectValue.length; i++) {\n if ('' + selectValue[i] === value) {\n selected = true;\n break;\n }\n }\n } else {\n selected = '' + selectValue === value;\n }\n }\n\n inst._wrapperState = { selected: selected };\n },\n\n postMountWrapper: function (inst) {\n // value=\"\" should make a value attribute (#6219)\n var props = inst._currentElement.props;\n if (props.value != null) {\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n node.setAttribute('value', props.value);\n }\n },\n\n getHostProps: function (inst, props) {\n var hostProps = _assign({ selected: undefined, children: undefined }, props);\n\n // Read state only from initial mount because <select> updates value\n // manually; we need the initial state only for server rendering\n if (inst._wrapperState.selected != null) {\n hostProps.selected = inst._wrapperState.selected;\n }\n\n var content = flattenChildren(props.children);\n\n if (content) {\n hostProps.children = content;\n }\n\n return hostProps;\n }\n};\n\nmodule.exports = ReactDOMOption;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMOption.js\n// module id = 212\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar getNodeForCharacterOffset = require('./getNodeForCharacterOffset');\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n return anchorNode === focusNode && anchorOffset === focusOffset;\n}\n\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE's selection API doesn't provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it's always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getIEOffsets(node) {\n var selection = document.selection;\n var selectedRange = selection.createRange();\n var selectedLength = selectedRange.text.length;\n\n // Duplicate selection so we can move range without breaking user selection.\n var fromStart = selectedRange.duplicate();\n fromStart.moveToElementText(node);\n fromStart.setEndPoint('EndToStart', selectedRange);\n\n var startOffset = fromStart.text.length;\n var endOffset = startOffset + selectedLength;\n\n return {\n start: startOffset,\n end: endOffset\n };\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n var selection = window.getSelection && window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode;\n var anchorOffset = selection.anchorOffset;\n var focusNode = selection.focusNode;\n var focusOffset = selection.focusOffset;\n\n var currentRange = selection.getRangeAt(0);\n\n // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n // divs do not seem to expose properties, triggering a \"Permission denied\n // error\" if any of its properties are accessed. The only seemingly possible\n // way to avoid erroring is to access a property that typically works for\n // non-anonymous divs and catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n try {\n /* eslint-disable no-unused-expressions */\n currentRange.startContainer.nodeType;\n currentRange.endContainer.nodeType;\n /* eslint-enable no-unused-expressions */\n } catch (e) {\n return null;\n }\n\n // If the node and offset values are the same, the selection is collapsed.\n // `Selection.isCollapsed` is available natively, but IE sometimes gets\n // this value wrong.\n var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\n var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n var tempRange = currentRange.cloneRange();\n tempRange.selectNodeContents(node);\n tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\n var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n var end = start + rangeLength;\n\n // Detect whether the selection is backward.\n var detectionRange = document.createRange();\n detectionRange.setStart(anchorNode, anchorOffset);\n detectionRange.setEnd(focusNode, focusOffset);\n var isBackward = detectionRange.collapsed;\n\n return {\n start: isBackward ? end : start,\n end: isBackward ? start : end\n };\n}\n\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setIEOffsets(node, offsets) {\n var range = document.selection.createRange().duplicate();\n var start, end;\n\n if (offsets.end === undefined) {\n start = offsets.start;\n end = start;\n } else if (offsets.start > offsets.end) {\n start = offsets.end;\n end = offsets.start;\n } else {\n start = offsets.start;\n end = offsets.end;\n }\n\n range.moveToElementText(node);\n range.moveStart('character', start);\n range.setEndPoint('EndToStart', range);\n range.moveEnd('character', end - start);\n range.select();\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n if (!window.getSelection) {\n return;\n }\n\n var selection = window.getSelection();\n var length = node[getTextContentAccessor()].length;\n var start = Math.min(offsets.start, length);\n var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n var range = document.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nvar useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);\n\nvar ReactDOMSelection = {\n /**\n * @param {DOMElement} node\n */\n getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n /**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\n\nmodule.exports = ReactDOMSelection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMSelection.js\n// module id = 213\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar validateDOMNesting = require('./validateDOMNesting');\n\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n * - When mounting text into the DOM, adjacent text nodes are merged.\n * - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings between comment nodes so that they\n * can undergo the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\nvar ReactDOMTextComponent = function (text) {\n // TODO: This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n\n // Properties\n this._domID = 0;\n this._mountIndex = 0;\n this._closingComment = null;\n this._commentNodes = null;\n};\n\n_assign(ReactDOMTextComponent.prototype, {\n /**\n * Creates the markup for this text node. This node is not intended to have\n * any features besides containing text content.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup for this text node.\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo != null) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(null, this._stringText, this, parentInfo);\n }\n }\n\n var domID = hostContainerInfo._idCounter++;\n var openingValue = ' react-text: ' + domID + ' ';\n var closingValue = ' /react-text ';\n this._domID = domID;\n this._hostParent = hostParent;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var openingComment = ownerDocument.createComment(openingValue);\n var closingComment = ownerDocument.createComment(closingValue);\n var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n if (this._stringText) {\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n }\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n ReactDOMComponentTree.precacheNode(this, openingComment);\n this._closingComment = closingComment;\n return lazyTree;\n } else {\n var escapedText = escapeTextContentForBrowser(this._stringText);\n\n if (transaction.renderToStaticMarkup) {\n // Normally we'd wrap this between comment nodes for the reasons stated\n // above, but since this is a situation where React won't take over\n // (static pages), we can simply return the text as it is.\n return escapedText;\n }\n\n return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';\n }\n },\n\n /**\n * Updates this component by updating the text content.\n *\n * @param {ReactText} nextText The next text content\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n receiveComponent: function (nextText, transaction) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n // TODO: Save this as pending props and use performUpdateIfNecessary\n // and/or updateComponent to do the actual update for consistency with\n // other component types?\n this._stringText = nextStringText;\n var commentNodes = this.getHostNode();\n DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n }\n }\n },\n\n getHostNode: function () {\n var hostNode = this._commentNodes;\n if (hostNode) {\n return hostNode;\n }\n if (!this._closingComment) {\n var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n var node = openingComment.nextSibling;\n while (true) {\n !(node != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;\n if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {\n this._closingComment = node;\n break;\n }\n node = node.nextSibling;\n }\n }\n hostNode = [this._hostNode, this._closingComment];\n this._commentNodes = hostNode;\n return hostNode;\n },\n\n unmountComponent: function () {\n this._closingComment = null;\n this._commentNodes = null;\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMTextComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMTextComponent.js\n// module id = 214\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValDefaultVal = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMTextarea.updateWrapper(this);\n }\n}\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = {\n getHostProps: function (inst, props) {\n !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;\n\n // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated. We could add a check in setTextContent\n // to only set the value if/when the value differs from the node value (which would\n // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.\n // The value can be a boolean or object so that's why it's forced to be a string.\n var hostProps = _assign({}, props, {\n value: undefined,\n defaultValue: undefined,\n children: '' + inst._wrapperState.initialValue,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValDefaultVal = true;\n }\n }\n\n var value = LinkedValueUtils.getValue(props);\n var initialValue = value;\n\n // Only bother fetching default value if we're going to use it\n if (value == null) {\n var defaultValue = props.defaultValue;\n // TODO (yungsters): Remove support for children content in <textarea>.\n var children = props.children;\n if (children != null) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;\n }\n !(defaultValue == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;\n if (Array.isArray(children)) {\n !(children.length <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;\n children = children[0];\n }\n\n defaultValue = '' + children;\n }\n if (defaultValue == null) {\n defaultValue = '';\n }\n initialValue = defaultValue;\n }\n\n inst._wrapperState = {\n initialValue: '' + initialValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n if (props.defaultValue == null) {\n node.defaultValue = newValue;\n }\n }\n if (props.defaultValue != null) {\n node.defaultValue = props.defaultValue;\n }\n },\n\n postMountWrapper: function (inst) {\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var textContent = node.textContent;\n\n // Only set node.value if textContent is equal to the expected\n // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n // will populate textContent as well.\n // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n if (textContent === inst._wrapperState.initialValue) {\n node.value = textContent;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n ReactUpdates.asap(forceUpdateIfMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMTextarea;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMTextarea.js\n// module id = 215\n// module chunks = 0","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n var depthA = 0;\n for (var tempA = instA; tempA; tempA = tempA._hostParent) {\n depthA++;\n }\n var depthB = 0;\n for (var tempB = instB; tempB; tempB = tempB._hostParent) {\n depthB++;\n }\n\n // If A is deeper, crawl up.\n while (depthA - depthB > 0) {\n instA = instA._hostParent;\n depthA--;\n }\n\n // If B is deeper, crawl up.\n while (depthB - depthA > 0) {\n instB = instB._hostParent;\n depthB--;\n }\n\n // Walk in lockstep until we find a match.\n var depth = depthA;\n while (depth--) {\n if (instA === instB) {\n return instA;\n }\n instA = instA._hostParent;\n instB = instB._hostParent;\n }\n return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\nfunction isAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n\n while (instB) {\n if (instB === instA) {\n return true;\n }\n instB = instB._hostParent;\n }\n return false;\n}\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n !('_hostNode' in inst) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;\n\n return inst._hostParent;\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n var path = [];\n while (inst) {\n path.push(inst);\n inst = inst._hostParent;\n }\n var i;\n for (i = path.length; i-- > 0;) {\n fn(path[i], 'captured', arg);\n }\n for (i = 0; i < path.length; i++) {\n fn(path[i], 'bubbled', arg);\n }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n var common = from && to ? getLowestCommonAncestor(from, to) : null;\n var pathFrom = [];\n while (from && from !== common) {\n pathFrom.push(from);\n from = from._hostParent;\n }\n var pathTo = [];\n while (to && to !== common) {\n pathTo.push(to);\n to = to._hostParent;\n }\n var i;\n for (i = 0; i < pathFrom.length; i++) {\n fn(pathFrom[i], 'bubbled', argFrom);\n }\n for (i = pathTo.length; i-- > 0;) {\n fn(pathTo[i], 'captured', argTo);\n }\n}\n\nmodule.exports = {\n isAncestor: isAncestor,\n getLowestCommonAncestor: getLowestCommonAncestor,\n getParentInstance: getParentInstance,\n traverseTwoPhase: traverseTwoPhase,\n traverseEnterLeave: traverseEnterLeave\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMTreeTraversal.js\n// module id = 216\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactUpdates = require('./ReactUpdates');\nvar Transaction = require('./Transaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function () {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\n_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n }\n});\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function (callback, a, b, c, d, e) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n return callback(a, b, c, d, e);\n } else {\n return transaction.perform(callback, null, a, b, c, d, e);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDefaultBatchingStrategy.js\n// module id = 217\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = require('./ARIADOMPropertyConfig');\nvar BeforeInputEventPlugin = require('./BeforeInputEventPlugin');\nvar ChangeEventPlugin = require('./ChangeEventPlugin');\nvar DefaultEventPluginOrder = require('./DefaultEventPluginOrder');\nvar EnterLeaveEventPlugin = require('./EnterLeaveEventPlugin');\nvar HTMLDOMPropertyConfig = require('./HTMLDOMPropertyConfig');\nvar ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment');\nvar ReactDOMComponent = require('./ReactDOMComponent');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMEmptyComponent = require('./ReactDOMEmptyComponent');\nvar ReactDOMTreeTraversal = require('./ReactDOMTreeTraversal');\nvar ReactDOMTextComponent = require('./ReactDOMTextComponent');\nvar ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');\nvar ReactEventListener = require('./ReactEventListener');\nvar ReactInjection = require('./ReactInjection');\nvar ReactReconcileTransaction = require('./ReactReconcileTransaction');\nvar SVGDOMPropertyConfig = require('./SVGDOMPropertyConfig');\nvar SelectEventPlugin = require('./SelectEventPlugin');\nvar SimpleEventPlugin = require('./SimpleEventPlugin');\n\nvar alreadyInjected = false;\n\nfunction inject() {\n if (alreadyInjected) {\n // TODO: This is currently true because these injections are shared between\n // the client and the server package. They should be built independently\n // and not share any injection state. Then this problem will be solved.\n return;\n }\n alreadyInjected = true;\n\n ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n\n /**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\n ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n ReactInjection.EventPluginHub.injectEventPluginsByName({\n SimpleEventPlugin: SimpleEventPlugin,\n EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n ChangeEventPlugin: ChangeEventPlugin,\n SelectEventPlugin: SelectEventPlugin,\n BeforeInputEventPlugin: BeforeInputEventPlugin\n });\n\n ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);\n\n ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);\n\n ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n return new ReactDOMEmptyComponent(instantiate);\n });\n\n ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n\n ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n}\n\nmodule.exports = {\n inject: inject\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDefaultInjection.js\n// module id = 218\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactElementSymbol.js\n// module id = 219\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n */\n handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactEventEmitterMixin.js\n// module id = 220\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar PooledClass = require('./PooledClass');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar getEventTarget = require('./getEventTarget');\nvar getUnboundedScrollPosition = require('fbjs/lib/getUnboundedScrollPosition');\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findParent(inst) {\n // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n // traversal, but caching is difficult to do correctly without using a\n // mutation observer to listen for all DOM changes.\n while (inst._hostParent) {\n inst = inst._hostParent;\n }\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n var container = rootNode.parentNode;\n return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n this.topLevelType = topLevelType;\n this.nativeEvent = nativeEvent;\n this.ancestors = [];\n}\n_assign(TopLevelCallbackBookKeeping.prototype, {\n destructor: function () {\n this.topLevelType = null;\n this.nativeEvent = null;\n this.ancestors.length = 0;\n }\n});\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\n // Loop through the hierarchy, in case there's any nested components.\n // It's important that we build the array of ancestors before calling any\n // event handlers, because event handlers can modify the DOM, leading to\n // inconsistencies with ReactMount's node cache. See #1105.\n var ancestor = targetInst;\n do {\n bookKeeping.ancestors.push(ancestor);\n ancestor = ancestor && findParent(ancestor);\n } while (ancestor);\n\n for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n targetInst = bookKeeping.ancestors[i];\n ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n }\n}\n\nfunction scrollValueMonitor(cb) {\n var scrollPosition = getUnboundedScrollPosition(window);\n cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n _enabled: true,\n _handleTopLevel: null,\n\n WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n setHandleTopLevel: function (handleTopLevel) {\n ReactEventListener._handleTopLevel = handleTopLevel;\n },\n\n setEnabled: function (enabled) {\n ReactEventListener._enabled = !!enabled;\n },\n\n isEnabled: function () {\n return ReactEventListener._enabled;\n },\n\n /**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapBubbledEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n /**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapCapturedEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n monitorScrollValue: function (refresh) {\n var callback = scrollValueMonitor.bind(null, refresh);\n EventListener.listen(window, 'scroll', callback);\n },\n\n dispatchEvent: function (topLevelType, nativeEvent) {\n if (!ReactEventListener._enabled) {\n return;\n }\n\n var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n try {\n // Event queue being processed in the same cycle allows\n // `preventDefault`.\n ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n } finally {\n TopLevelCallbackBookKeeping.release(bookKeeping);\n }\n }\n};\n\nmodule.exports = ReactEventListener;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactEventListener.js\n// module id = 221\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactHostComponent = require('./ReactHostComponent');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar ReactInjection = {\n Component: ReactComponentEnvironment.injection,\n DOMProperty: DOMProperty.injection,\n EmptyComponent: ReactEmptyComponent.injection,\n EventPluginHub: EventPluginHub.injection,\n EventPluginUtils: EventPluginUtils.injection,\n EventEmitter: ReactBrowserEventEmitter.injection,\n HostComponent: ReactHostComponent.injection,\n Updates: ReactUpdates.injection\n};\n\nmodule.exports = ReactInjection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactInjection.js\n// module id = 222\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar adler32 = require('./adler32');\n\nvar TAG_END = /\\/?>/;\nvar COMMENT_START = /^<\\!\\-\\-/;\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function (markup) {\n var checksum = adler32(markup);\n\n // Add checksum (handle both parent tags, comments and self-closing tags)\n if (COMMENT_START.test(markup)) {\n return markup;\n } else {\n return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\"$&');\n }\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function (markup, element) {\n var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactMarkupChecksum.js\n// module id = 223\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactChildReconciler = require('./ReactChildReconciler');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar flattenChildren = require('./flattenChildren');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'INSERT_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction makeMove(child, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'MOVE_EXISTING',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: ReactReconciler.getHostNode(child),\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction makeRemove(child, node) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'REMOVE_NODE',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: node,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\nfunction makeSetMarkup(markup) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'SET_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction makeTextContent(textContent) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'TEXT_CONTENT',\n content: textContent,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\nfunction enqueue(queue, update) {\n if (update) {\n queue = queue || [];\n queue.push(update);\n }\n return queue;\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue(inst, updateQueue) {\n ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n\nvar setChildrenForInstrumentation = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n var getDebugID = function (inst) {\n if (!inst._debugID) {\n // Check for ART-like instances. TODO: This is silly/gross.\n var internal;\n if (internal = ReactInstanceMap.get(inst)) {\n inst = internal;\n }\n }\n return inst._debugID;\n };\n setChildrenForInstrumentation = function (children) {\n var debugID = getDebugID(this);\n // TODO: React Native empty components are also multichild.\n // This means they still get into this method but don't have _debugID.\n if (debugID !== 0) {\n ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n return children[key]._debugID;\n }) : []);\n }\n };\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {\n if (process.env.NODE_ENV !== 'production') {\n var selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n }\n }\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n },\n\n _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n var nextChildren;\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n }\n }\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n },\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function (nestedChildren, transaction, context) {\n var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n this._renderedChildren = children;\n\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n }\n var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n child._mountIndex = index++;\n mountImages.push(mountImage);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, children);\n }\n\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function (nextContent) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n // Set new text content.\n var updates = [makeTextContent(nextContent)];\n processQueue(this, updates);\n },\n\n /**\n * Replaces any rendered children with a markup string.\n *\n * @param {string} nextMarkup String of markup.\n * @internal\n */\n updateMarkup: function (nextMarkup) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n var updates = [makeSetMarkup(nextMarkup)];\n processQueue(this, updates);\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function (nextNestedChildrenElements, transaction, context) {\n // Hook used by React ART\n this._updateChildren(nextNestedChildrenElements, transaction, context);\n },\n\n /**\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function (nextNestedChildrenElements, transaction, context) {\n var prevChildren = this._renderedChildren;\n var removedNodes = {};\n var mountImages = [];\n var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n if (!nextChildren && !prevChildren) {\n return;\n }\n var updates = null;\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var nextIndex = 0;\n var lastIndex = 0;\n // `nextMountIndex` will increment for each newly mounted child.\n var nextMountIndex = 0;\n var lastPlacedNode = null;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n // The `removedNodes` loop below will actually remove the child.\n }\n // The child must be instantiated before it's mounted.\n updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n nextMountIndex++;\n }\n nextIndex++;\n lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n }\n // Remove children that are no longer present.\n for (name in removedNodes) {\n if (removedNodes.hasOwnProperty(name)) {\n updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n }\n }\n if (updates) {\n processQueue(this, updates);\n }\n this._renderedChildren = nextChildren;\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, nextChildren);\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted. It does not actually perform any\n * backend operations.\n *\n * @internal\n */\n unmountChildren: function (safely) {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren, safely);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function (child, afterNode, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n return makeMove(child, afterNode, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function (child, afterNode, mountImage) {\n return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function (child, node) {\n return makeRemove(child, node);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {\n child._mountIndex = index;\n return this.createChild(child, afterNode, mountImage);\n },\n\n /**\n * Unmounts a rendered child.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @private\n */\n _unmountChild: function (child, node) {\n var update = this.removeChild(child, node);\n child._mountIndex = null;\n return update;\n }\n }\n};\n\nmodule.exports = ReactMultiChild;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactMultiChild.js\n// module id = 224\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\nfunction isValidOwner(object) {\n return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');\n}\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;\n var ownerPublicInstance = owner.getPublicInstance();\n // Check that `component`'s owner is still alive and that `component` is still the current ref\n // because we do not want to detach the ref if another component stole it.\n if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n};\n\nmodule.exports = ReactOwner;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactOwner.js\n// module id = 225\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactPropTypesSecret.js\n// module id = 226\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar Transaction = require('./Transaction');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\nvar SELECTION_RESTORATION = {\n /**\n * @return {Selection} Selection information.\n */\n initialize: ReactInputSelection.getSelectionInformation,\n /**\n * @param {Selection} sel Selection information returned from `initialize`.\n */\n close: ReactInputSelection.restoreSelection\n};\n\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\nvar EVENT_SUPPRESSION = {\n /**\n * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n * the reconciliation.\n */\n initialize: function () {\n var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n ReactBrowserEventEmitter.setEnabled(false);\n return currentlyEnabled;\n },\n\n /**\n * @param {boolean} previouslyEnabled Enabled status of\n * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n * restores the previous value.\n */\n close: function (previouslyEnabled) {\n ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n }\n};\n\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function () {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function () {\n this.reactMountReady.notifyAll();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\nfunction ReactReconcileTransaction(useCreateElement) {\n this.reinitializeTransaction();\n // Only server-side rendering really needs this option (see\n // `ReactServerRendering`), but server-side uses\n // `ReactServerRenderingTransaction` instead. This option is here so that it's\n // accessible and defaults to false when `ReactDOMComponent` and\n // `ReactDOMTextComponent` checks it in `mountComponent`.`\n this.renderToStaticMarkup = false;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.useCreateElement = useCreateElement;\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap procedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return this.reactMountReady;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return ReactUpdateQueue;\n },\n\n /**\n * Save current transaction state -- if the return value from this method is\n * passed to `rollback`, the transaction will be reset to that state.\n */\n checkpoint: function () {\n // reactMountReady is the our only stateful wrapper\n return this.reactMountReady.checkpoint();\n },\n\n rollback: function (checkpoint) {\n this.reactMountReady.rollback(checkpoint);\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\n_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\n\nmodule.exports = ReactReconcileTransaction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactReconcileTransaction.js\n// module id = 227\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar ReactOwner = require('./ReactOwner');\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n var prevRef = null;\n var prevOwner = null;\n if (prevElement !== null && typeof prevElement === 'object') {\n prevRef = prevElement.ref;\n prevOwner = prevElement._owner;\n }\n\n var nextRef = null;\n var nextOwner = null;\n if (nextElement !== null && typeof nextElement === 'object') {\n nextRef = nextElement.ref;\n nextOwner = nextElement._owner;\n }\n\n return prevRef !== nextRef ||\n // If owner changes but we have an unchanged function ref, don't update refs\n typeof nextRef === 'string' && nextOwner !== prevOwner;\n};\n\nReactRef.detachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactRef.js\n// module id = 228\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\nvar Transaction = require('./Transaction');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactServerUpdateQueue = require('./ReactServerUpdateQueue');\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\nvar noopCallbackQueue = {\n enqueue: function () {}\n};\n\n/**\n * @class ReactServerRenderingTransaction\n * @param {boolean} renderToStaticMarkup\n */\nfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n this.reinitializeTransaction();\n this.renderToStaticMarkup = renderToStaticMarkup;\n this.useCreateElement = false;\n this.updateQueue = new ReactServerUpdateQueue(this);\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array} Empty list of operation wrap procedures.\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return noopCallbackQueue;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return this.updateQueue;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {},\n\n checkpoint: function () {},\n\n rollback: function () {}\n};\n\n_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\nmodule.exports = ReactServerRenderingTransaction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactServerRenderingTransaction.js\n// module id = 229\n// module chunks = 0","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the update queue used for server rendering.\n * It delegates to ReactUpdateQueue while server rendering is in progress and\n * switches to ReactNoopUpdateQueue after the transaction has completed.\n * @class ReactServerUpdateQueue\n * @param {Transaction} transaction\n */\n\nvar ReactServerUpdateQueue = function () {\n function ReactServerUpdateQueue(transaction) {\n _classCallCheck(this, ReactServerUpdateQueue);\n\n this.transaction = transaction;\n }\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n\n\n ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {\n return false;\n };\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);\n }\n };\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueForceUpdate(publicInstance);\n } else {\n warnNoop(publicInstance, 'forceUpdate');\n }\n };\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} completeState Next state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);\n } else {\n warnNoop(publicInstance, 'replaceState');\n }\n };\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} partialState Next partial state to be merged with state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueSetState(publicInstance, partialState);\n } else {\n warnNoop(publicInstance, 'setState');\n }\n };\n\n return ReactServerUpdateQueue;\n}();\n\nmodule.exports = ReactServerUpdateQueue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactServerUpdateQueue.js\n// module id = 230\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.6.2';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactVersion.js\n// module id = 231\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar NS = {\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace'\n};\n\n// We use attributes for everything SVG so let's avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\nvar ATTRS = {\n accentHeight: 'accent-height',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 'alignment-baseline',\n allowReorder: 'allowReorder',\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 'arabic-form',\n ascent: 0,\n attributeName: 'attributeName',\n attributeType: 'attributeType',\n autoReverse: 'autoReverse',\n azimuth: 0,\n baseFrequency: 'baseFrequency',\n baseProfile: 'baseProfile',\n baselineShift: 'baseline-shift',\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 'calcMode',\n capHeight: 'cap-height',\n clip: 0,\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n clipPathUnits: 'clipPathUnits',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n contentScriptType: 'contentScriptType',\n contentStyleType: 'contentStyleType',\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 'diffuseConstant',\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 'dominant-baseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 'edgeMode',\n elevation: 0,\n enableBackground: 'enable-background',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 'externalResourcesRequired',\n fill: 0,\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n filter: 0,\n filterRes: 'filterRes',\n filterUnits: 'filterUnits',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n focusable: 0,\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n glyphRef: 'glyphRef',\n gradientTransform: 'gradientTransform',\n gradientUnits: 'gradientUnits',\n hanging: 0,\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n ideographic: 0,\n imageRendering: 'image-rendering',\n 'in': 0,\n in2: 0,\n intercept: 0,\n k: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n kernelMatrix: 'kernelMatrix',\n kernelUnitLength: 'kernelUnitLength',\n kerning: 0,\n keyPoints: 'keyPoints',\n keySplines: 'keySplines',\n keyTimes: 'keyTimes',\n lengthAdjust: 'lengthAdjust',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n limitingConeAngle: 'limitingConeAngle',\n local: 0,\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n markerHeight: 'markerHeight',\n markerUnits: 'markerUnits',\n markerWidth: 'markerWidth',\n mask: 0,\n maskContentUnits: 'maskContentUnits',\n maskUnits: 'maskUnits',\n mathematical: 0,\n mode: 0,\n numOctaves: 'numOctaves',\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pathLength: 'pathLength',\n patternContentUnits: 'patternContentUnits',\n patternTransform: 'patternTransform',\n patternUnits: 'patternUnits',\n pointerEvents: 'pointer-events',\n points: 0,\n pointsAtX: 'pointsAtX',\n pointsAtY: 'pointsAtY',\n pointsAtZ: 'pointsAtZ',\n preserveAlpha: 'preserveAlpha',\n preserveAspectRatio: 'preserveAspectRatio',\n primitiveUnits: 'primitiveUnits',\n r: 0,\n radius: 0,\n refX: 'refX',\n refY: 'refY',\n renderingIntent: 'rendering-intent',\n repeatCount: 'repeatCount',\n repeatDur: 'repeatDur',\n requiredExtensions: 'requiredExtensions',\n requiredFeatures: 'requiredFeatures',\n restart: 0,\n result: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n seed: 0,\n shapeRendering: 'shape-rendering',\n slope: 0,\n spacing: 0,\n specularConstant: 'specularConstant',\n specularExponent: 'specularExponent',\n speed: 0,\n spreadMethod: 'spreadMethod',\n startOffset: 'startOffset',\n stdDeviation: 'stdDeviation',\n stemh: 0,\n stemv: 0,\n stitchTiles: 'stitchTiles',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n surfaceScale: 'surfaceScale',\n systemLanguage: 'systemLanguage',\n tableValues: 'tableValues',\n targetX: 'targetX',\n targetY: 'targetY',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n textLength: 'textLength',\n to: 0,\n transform: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicode: 0,\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n values: 0,\n vectorEffect: 'vector-effect',\n version: 0,\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n viewBox: 'viewBox',\n viewTarget: 'viewTarget',\n visibility: 0,\n widths: 0,\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n x: 0,\n xHeight: 'x-height',\n x1: 0,\n x2: 0,\n xChannelSelector: 'xChannelSelector',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlns: 0,\n xmlnsXlink: 'xmlns:xlink',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n y: 0,\n y1: 0,\n y2: 0,\n yChannelSelector: 'yChannelSelector',\n z: 0,\n zoomAndPan: 'zoomAndPan'\n};\n\nvar SVGDOMPropertyConfig = {\n Properties: {},\n DOMAttributeNamespaces: {\n xlinkActuate: NS.xlink,\n xlinkArcrole: NS.xlink,\n xlinkHref: NS.xlink,\n xlinkRole: NS.xlink,\n xlinkShow: NS.xlink,\n xlinkTitle: NS.xlink,\n xlinkType: NS.xlink,\n xmlBase: NS.xml,\n xmlLang: NS.xml,\n xmlSpace: NS.xml\n },\n DOMAttributeNames: {}\n};\n\nObject.keys(ATTRS).forEach(function (key) {\n SVGDOMPropertyConfig.Properties[key] = 0;\n if (ATTRS[key]) {\n SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n }\n});\n\nmodule.exports = SVGDOMPropertyConfig;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SVGDOMPropertyConfig.js\n// module id = 232\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getActiveElement = require('fbjs/lib/getActiveElement');\nvar isTextInputElement = require('./isTextInputElement');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nvar eventTypes = {\n select: {\n phasedRegistrationNames: {\n bubbled: 'onSelect',\n captured: 'onSelectCapture'\n },\n dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n }\n};\n\nvar activeElement = null;\nvar activeElementInst = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n// Track whether a listener exists for this plugin. If none exist, we do\n// not extract events. See #3639.\nvar hasListener = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else if (window.getSelection) {\n var selection = window.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n } else if (document.selection) {\n var range = document.selection.createRange();\n return {\n parentElement: range.parentElement(),\n text: range.text,\n top: range.boundingTop,\n left: range.boundingLeft\n };\n }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n return null;\n }\n\n // Only fire when selection has actually changed.\n var currentSelection = getSelection(activeElement);\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n\n var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n\n syntheticEvent.type = 'select';\n syntheticEvent.target = activeElement;\n\n EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\n return syntheticEvent;\n }\n\n return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (!hasListener) {\n return null;\n }\n\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n switch (topLevelType) {\n // Track the input node that has focus.\n case 'topFocus':\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement = targetNode;\n activeElementInst = targetInst;\n lastSelection = null;\n }\n break;\n case 'topBlur':\n activeElement = null;\n activeElementInst = null;\n lastSelection = null;\n break;\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n case 'topMouseDown':\n mouseDown = true;\n break;\n case 'topContextMenu':\n case 'topMouseUp':\n mouseDown = false;\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n case 'topSelectionChange':\n if (skipSelectionChangeEvent) {\n break;\n }\n // falls through\n case 'topKeyDown':\n case 'topKeyUp':\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n }\n\n return null;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n if (registrationName === 'onSelect') {\n hasListener = true;\n }\n }\n};\n\nmodule.exports = SelectEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SelectEventPlugin.js\n// module id = 233\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticAnimationEvent = require('./SyntheticAnimationEvent');\nvar SyntheticClipboardEvent = require('./SyntheticClipboardEvent');\nvar SyntheticEvent = require('./SyntheticEvent');\nvar SyntheticFocusEvent = require('./SyntheticFocusEvent');\nvar SyntheticKeyboardEvent = require('./SyntheticKeyboardEvent');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\nvar SyntheticDragEvent = require('./SyntheticDragEvent');\nvar SyntheticTouchEvent = require('./SyntheticTouchEvent');\nvar SyntheticTransitionEvent = require('./SyntheticTransitionEvent');\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar SyntheticWheelEvent = require('./SyntheticWheelEvent');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar getEventCharCode = require('./getEventCharCode');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Turns\n * ['abort', ...]\n * into\n * eventTypes = {\n * 'abort': {\n * phasedRegistrationNames: {\n * bubbled: 'onAbort',\n * captured: 'onAbortCapture',\n * },\n * dependencies: ['topAbort'],\n * },\n * ...\n * };\n * topLevelEventsToDispatchConfig = {\n * 'topAbort': { sameConfig }\n * };\n */\nvar eventTypes = {};\nvar topLevelEventsToDispatchConfig = {};\n['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) {\n var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n var onEvent = 'on' + capitalizedEvent;\n var topEvent = 'top' + capitalizedEvent;\n\n var type = {\n phasedRegistrationNames: {\n bubbled: onEvent,\n captured: onEvent + 'Capture'\n },\n dependencies: [topEvent]\n };\n eventTypes[event] = type;\n topLevelEventsToDispatchConfig[topEvent] = type;\n});\n\nvar onClickListeners = {};\n\nfunction getDictionaryKey(inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n}\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nvar SimpleEventPlugin = {\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n if (!dispatchConfig) {\n return null;\n }\n var EventConstructor;\n switch (topLevelType) {\n case 'topAbort':\n case 'topCanPlay':\n case 'topCanPlayThrough':\n case 'topDurationChange':\n case 'topEmptied':\n case 'topEncrypted':\n case 'topEnded':\n case 'topError':\n case 'topInput':\n case 'topInvalid':\n case 'topLoad':\n case 'topLoadedData':\n case 'topLoadedMetadata':\n case 'topLoadStart':\n case 'topPause':\n case 'topPlay':\n case 'topPlaying':\n case 'topProgress':\n case 'topRateChange':\n case 'topReset':\n case 'topSeeked':\n case 'topSeeking':\n case 'topStalled':\n case 'topSubmit':\n case 'topSuspend':\n case 'topTimeUpdate':\n case 'topVolumeChange':\n case 'topWaiting':\n // HTML Events\n // @see http://www.w3.org/TR/html5/index.html#events-0\n EventConstructor = SyntheticEvent;\n break;\n case 'topKeyPress':\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return null;\n }\n /* falls through */\n case 'topKeyDown':\n case 'topKeyUp':\n EventConstructor = SyntheticKeyboardEvent;\n break;\n case 'topBlur':\n case 'topFocus':\n EventConstructor = SyntheticFocusEvent;\n break;\n case 'topClick':\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return null;\n }\n /* falls through */\n case 'topDoubleClick':\n case 'topMouseDown':\n case 'topMouseMove':\n case 'topMouseUp':\n // TODO: Disabled elements should not respond to mouse events\n /* falls through */\n case 'topMouseOut':\n case 'topMouseOver':\n case 'topContextMenu':\n EventConstructor = SyntheticMouseEvent;\n break;\n case 'topDrag':\n case 'topDragEnd':\n case 'topDragEnter':\n case 'topDragExit':\n case 'topDragLeave':\n case 'topDragOver':\n case 'topDragStart':\n case 'topDrop':\n EventConstructor = SyntheticDragEvent;\n break;\n case 'topTouchCancel':\n case 'topTouchEnd':\n case 'topTouchMove':\n case 'topTouchStart':\n EventConstructor = SyntheticTouchEvent;\n break;\n case 'topAnimationEnd':\n case 'topAnimationIteration':\n case 'topAnimationStart':\n EventConstructor = SyntheticAnimationEvent;\n break;\n case 'topTransitionEnd':\n EventConstructor = SyntheticTransitionEvent;\n break;\n case 'topScroll':\n EventConstructor = SyntheticUIEvent;\n break;\n case 'topWheel':\n EventConstructor = SyntheticWheelEvent;\n break;\n case 'topCopy':\n case 'topCut':\n case 'topPaste':\n EventConstructor = SyntheticClipboardEvent;\n break;\n }\n !EventConstructor ? process.env.NODE_ENV !== 'production' ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;\n var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n if (!onClickListeners[key]) {\n onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);\n }\n }\n },\n\n willDeleteListener: function (inst, registrationName) {\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n onClickListeners[key].remove();\n delete onClickListeners[key];\n }\n }\n};\n\nmodule.exports = SimpleEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SimpleEventPlugin.js\n// module id = 234\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar AnimationEventInterface = {\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\nmodule.exports = SyntheticAnimationEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticAnimationEvent.js\n// module id = 235\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n clipboardData: function (event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nmodule.exports = SyntheticClipboardEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticClipboardEvent.js\n// module id = 236\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\nmodule.exports = SyntheticCompositionEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticCompositionEvent.js\n// module id = 237\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nmodule.exports = SyntheticDragEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticDragEvent.js\n// module id = 238\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nmodule.exports = SyntheticFocusEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticFocusEvent.js\n// module id = 239\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\nvar InputEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\n\nmodule.exports = SyntheticInputEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticInputEvent.js\n// module id = 240\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventCharCode = require('./getEventCharCode');\nvar getEventKey = require('./getEventKey');\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n key: getEventKey,\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function (event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n return 0;\n },\n keyCode: function (event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n },\n which: function (event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nmodule.exports = SyntheticKeyboardEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticKeyboardEvent.js\n// module id = 241\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: getEventModifierState\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nmodule.exports = SyntheticTouchEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticTouchEvent.js\n// module id = 242\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar TransitionEventInterface = {\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\nmodule.exports = SyntheticTransitionEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticTransitionEvent.js\n// module id = 243\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n deltaX: function (event) {\n return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n },\n deltaY: function (event) {\n return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0;\n },\n deltaZ: null,\n\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nmodule.exports = SyntheticWheelEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticWheelEvent.js\n// module id = 244\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar MOD = 65521;\n\n// adler32 is not cryptographically strong, and is only used to sanity check that\n// markup generated on the server matches the markup generated on the client.\n// This implementation (a modified version of the SheetJS version) has been optimized\n// for our use case, at the expense of conforming to the adler32 specification\n// for non-ascii inputs.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n var i = 0;\n var l = data.length;\n var m = l & ~0x3;\n while (i < m) {\n var n = Math.min(i + 4096, m);\n for (; i < n; i += 4) {\n b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n }\n a %= MOD;\n b %= MOD;\n }\n for (; i < l; i++) {\n b += a += data.charCodeAt(i);\n }\n a %= MOD;\n b %= MOD;\n return a | b << 16;\n}\n\nmodule.exports = adler32;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/adler32.js\n// module id = 245\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar warning = require('fbjs/lib/warning');\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\nvar styleWarnings = {};\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @param {ReactDOMComponent} component\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, component, isCustomProperty) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n if (isEmpty) {\n return '';\n }\n\n var isNonNumeric = isNaN(value);\n if (isCustomProperty || isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n return '' + value; // cast to string\n }\n\n if (typeof value === 'string') {\n if (process.env.NODE_ENV !== 'production') {\n // Allow '0' to pass through without warning. 0 is already special and\n // doesn't require units, so we don't need to warn about it.\n if (component && value !== '0') {\n var owner = component._currentElement._owner;\n var ownerName = owner ? owner.getName() : null;\n if (ownerName && !styleWarnings[ownerName]) {\n styleWarnings[ownerName] = {};\n }\n var warned = false;\n if (ownerName) {\n var warnings = styleWarnings[ownerName];\n warned = warnings[name];\n if (!warned) {\n warnings[name] = true;\n }\n }\n if (!warned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;\n }\n }\n }\n value = value.trim();\n }\n return value + 'px';\n}\n\nmodule.exports = dangerousStyleValue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/dangerousStyleValue.js\n// module id = 246\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstanceMap = require('./ReactInstanceMap');\n\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Returns the DOM node rendered by this element.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {?DOMElement} The root node of this element.\n */\nfunction findDOMNode(componentOrElement) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrElement == null) {\n return null;\n }\n if (componentOrElement.nodeType === 1) {\n return componentOrElement;\n }\n\n var inst = ReactInstanceMap.get(componentOrElement);\n if (inst) {\n inst = getHostComponentFromComposite(inst);\n return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n }\n\n if (typeof componentOrElement.render === 'function') {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;\n }\n}\n\nmodule.exports = findDOMNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/findDOMNode.js\n// module id = 247\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n * @param {number=} selfDebugID Optional debugID of the current internal instance.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {\n // We found a component instance.\n if (traverseContext && typeof traverseContext === 'object') {\n var result = traverseContext;\n var keyUnique = result[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children, selfDebugID) {\n if (children == null) {\n return children;\n }\n var result = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(children, function (traverseContext, child, name) {\n return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);\n }, result);\n } else {\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n }\n return result;\n}\n\nmodule.exports = flattenChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/flattenChildren.js\n// module id = 248\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar getEventCharCode = require('./getEventCharCode');\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n Esc: 'Escape',\n Spacebar: ' ',\n Left: 'ArrowLeft',\n Up: 'ArrowUp',\n Right: 'ArrowRight',\n Down: 'ArrowDown',\n Del: 'Delete',\n Win: 'OS',\n Menu: 'ContextMenu',\n Apps: 'ContextMenu',\n Scroll: 'ScrollLock',\n MozPrintableKey: 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 112: 'F1',\n 113: 'F2',\n 114: 'F3',\n 115: 'F4',\n 116: 'F5',\n 117: 'F6',\n 118: 'F7',\n 119: 'F8',\n 120: 'F9',\n 121: 'F10',\n 122: 'F11',\n 123: 'F12',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 224: 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (key !== 'Unidentified') {\n return key;\n }\n }\n\n // Browser does not implement `key`, polyfill as much of it as we can.\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent);\n\n // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n return '';\n}\n\nmodule.exports = getEventKey;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getEventKey.js\n// module id = 249\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getIteratorFn.js\n// module id = 250\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n node = node.parentNode;\n }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === 3) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\nmodule.exports = getNodeForCharacterOffset;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getNodeForCharacterOffset.js\n// module id = 251\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n prefixes['ms' + styleProp] = 'MS' + eventName;\n prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\n return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n style = document.createElement('div').style;\n\n // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n }\n\n // Same as above\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n for (var styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return '';\n}\n\nmodule.exports = getVendorPrefixedEventName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getVendorPrefixedEventName.js\n// module id = 252\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextContentForBrowser(value) + '\"';\n}\n\nmodule.exports = quoteAttributeValueForBrowser;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/quoteAttributeValueForBrowser.js\n// module id = 253\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactMount = require('./ReactMount');\n\nmodule.exports = ReactMount.renderSubtreeIntoContainer;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/renderSubtreeIntoContainer.js\n// module id = 254\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.renderChildren = exports.buildQuery = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactFetchComponent = require('react-fetch-component');\n\nvar _reactFetchComponent2 = _interopRequireDefault(_reactFetchComponent);\n\nvar _odataQuery = require('odata-query');\n\nvar _odataQuery2 = _interopRequireDefault(_odataQuery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction buildUrl(baseUrl, query) {\n return query !== false && baseUrl + (0, _odataQuery2.default)(query);\n}\n\nvar OData = function (_Component) {\n _inherits(OData, _Component);\n\n function OData() {\n _classCallCheck(this, OData);\n\n return _possibleConstructorReturn(this, (OData.__proto__ || Object.getPrototypeOf(OData)).apply(this, arguments));\n }\n\n _createClass(OData, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n baseUrl = _props.baseUrl,\n query = _props.query,\n children = _props.children,\n rest = _objectWithoutProperties(_props, ['baseUrl', 'query', 'children']);\n\n var url = buildUrl(baseUrl, query);\n\n return _react2.default.createElement(\n _reactFetchComponent2.default,\n _extends({ url: url }, rest),\n function (_ref) {\n var _fetch = _ref.fetch,\n props = _objectWithoutProperties(_ref, ['fetch']);\n\n return (0, _reactFetchComponent.renderChildren)(children, _extends({}, props, {\n fetch: function fetch(query, options, updateOptions) {\n return _fetch(buildUrl(baseUrl, query || _this2.props.query), options || _this2.props.options, updateOptions);\n }\n }));\n }\n );\n }\n }]);\n\n return OData;\n}(_react.Component);\n\nexports.buildQuery = _odataQuery2.default;\nexports.renderChildren = _reactFetchComponent.renderChildren;\nexports.default = OData;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-odata/dist/OData.js\n// module id = 255\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n select = _ref.select,\n filter = _ref.filter,\n groupBy = _ref.groupBy,\n transform = _ref.transform,\n orderBy = _ref.orderBy,\n top = _ref.top,\n skip = _ref.skip,\n key = _ref.key,\n count = _ref.count,\n expand = _ref.expand,\n action = _ref.action,\n func = _ref.func;\n\n var path = '';\n var params = {};\n\n if (select) {\n params.$select = select;\n }\n\n if (filter || count instanceof Object) {\n var builtFilter = buildFilter(count instanceof Object ? count : filter);\n if (builtFilter !== undefined) {\n params.$filter = builtFilter;\n }\n }\n\n if (transform) {\n var builtTransforms = buildTransforms(transform);\n if (builtTransforms !== undefined) {\n params.$apply = builtTransforms;\n }\n }\n\n if (top) {\n params.$top = top;\n }\n\n if (skip) {\n params.$skip = skip;\n }\n\n if (key) {\n if ((typeof key === 'undefined' ? 'undefined' : _typeof(key)) === 'object') {\n var keys = Object.keys(key).map(function (k) {\n return k + '=' + key[k];\n }).join(',');\n path += '(' + keys + ')';\n } else {\n path += '(' + key + ')';\n }\n }\n\n if (count) {\n if (typeof count === 'boolean') {\n params.$count = true;\n } else {\n path += '/$count';\n }\n }\n\n if (action) {\n path += '/' + action;\n }\n\n if (func) {\n if (typeof func === 'string') {\n path += '/' + func;\n } else if ((typeof func === 'undefined' ? 'undefined' : _typeof(func)) === 'object') {\n var _Object$keys = Object.keys(func),\n _Object$keys2 = _slicedToArray(_Object$keys, 1),\n funcName = _Object$keys2[0];\n\n var funcParams = Object.keys(func[funcName]).map(function (p) {\n return p + '=' + func[funcName][p];\n }).join(',');\n\n path += '/' + funcName;\n if (funcParams.length) {\n path += '(' + funcParams + ')';\n }\n }\n }\n\n if (expand) {\n params.$expand = buildExpand(expand);\n }\n\n if (orderBy) {\n params.$orderby = buildOrderBy(orderBy);\n }\n\n return buildUrl(path, params);\n};\n\nfunction _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; }\n\nvar COMPARISON_OPERATORS = ['eq', 'ne', 'gt', 'ge', 'lt', 'le'];\nvar LOGICAL_OPERATORS = ['and', 'or', 'not'];\nvar COLLECTION_OPERATORS = ['any', 'all'];\nvar BOOLEAN_FUNCTIONS = ['startswith', 'endswith', 'contains'];\nvar SUPPORTED_EXPAND_PROPERTIES = ['expand', 'select', 'top', 'orderby', 'filter'];\n\nfunction buildFilter() {\n var filters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var propPrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n if (filters == null) {\n // ignore `null` and `undefined` filters (useful for conditionally applied filters)\n return;\n } else if (typeof filters === 'string') {\n // Use raw filter string\n return filters;\n } else if (Array.isArray(filters)) {\n var builtFilters = filters.map(function (f) {\n return buildFilter(f, propPrefix);\n }).filter(function (f) {\n return f !== undefined;\n });\n if (builtFilters.length) {\n return '(' + builtFilters.join(' and ') + ')';\n }\n } else if ((typeof filters === 'undefined' ? 'undefined' : _typeof(filters)) === 'object') {\n var filtersArray = Object.keys(filters).reduce(function (result, filterKey) {\n var value = filters[filterKey];\n var propName = propPrefix ? propPrefix + '/' + filterKey : filterKey;\n\n if ([\"number\", \"string\", \"boolean\"].indexOf(typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== -1 || value instanceof Date || value === null) {\n // Simple key/value handled as equals operator\n result.push(propName + ' eq ' + handleValue(value));\n } else if (Array.isArray(value)) {\n var op = filterKey;\n var _builtFilters = value.map(function (v) {\n return buildFilter(v, propPrefix);\n }).filter(function (f) {\n return f !== undefined;\n });\n if (_builtFilters.length) {\n result.push('(' + _builtFilters.join(' ' + op + ' ') + ')');\n }\n } else if (LOGICAL_OPERATORS.indexOf(propName) !== -1) {\n var _builtFilters2 = Object.keys(value).map(function (valueKey) {\n return buildFilter(_defineProperty({}, valueKey, value[valueKey]));\n });\n if (_builtFilters2.length) {\n result.push('' + _builtFilters2.join(' ' + propName + ' '));\n }\n } else if (value instanceof Object) {\n var operators = Object.keys(value);\n operators.forEach(function (op) {\n if ([].concat(COMPARISON_OPERATORS, LOGICAL_OPERATORS).indexOf(op) !== -1) {\n result.push(propName + ' ' + op + ' ' + handleValue(value[op]));\n } else if (COLLECTION_OPERATORS.indexOf(op) !== -1) {\n var lambaParameter = propName[0].toLowerCase();\n result.push(propName + '/' + op + '(' + lambaParameter + ':' + buildFilter(value[op], lambaParameter) + ')');\n } else if (op === 'in') {\n // Convert `{ Prop: { in: [1,2,3] } }` to `Prop eq 1 or Prop eq 2 or Prop eq 3`\n result.push(value[op].map(function (v) {\n return propName + ' eq ' + handleValue(v);\n }).join(' or '));\n } else if (BOOLEAN_FUNCTIONS.indexOf(op) !== -1) {\n // Simple boolean functions (startswith, endswith, contains)\n result.push(op + '(' + propName + ',' + handleValue(value[op]) + ')');\n } else {\n // Nested property\n result.push(buildFilter(value, propName));\n }\n });\n } else if (value === undefined) {\n // Ignore/omit filter if value is `undefined`\n } else {\n throw new Error('Unexpected value type: ' + value);\n }\n\n return result;\n }, []);\n\n return filtersArray.join(' and ') || undefined;\n } else {\n throw new Error('Unexpected filters type: ' + filters);\n }\n}\n\nfunction handleValue(value) {\n if (typeof value === 'string') {\n return '\\'' + value.replace(\"'\", \"''\") + '\\'';\n } else if (value instanceof Date) {\n return value.toISOString();\n } else {\n // TODO: Figure out how best to specify types. See: https://github.com/devnixs/ODataAngularResources/blob/master/src/odatavalue.js\n return value;\n }\n}\n\nfunction buildExpand(expands) {\n if (typeof expands === 'number') {\n return expands;\n } else if (typeof expands === 'string') {\n\n if (expands.indexOf('/') === -1) {\n return expands;\n }\n\n // Change `Foo/Bar/Baz` to `Foo($expand=Bar($expand=Baz))`\n return expands.split('/').reverse().reduce(function (results, item, index, arr) {\n if (index === 0) {\n // Inner-most item\n return '$expand=' + item;\n } else if (index === arr.length - 1) {\n // Outer-most item, don't add `$expand=` prefix (added above)\n return item + '(' + results + ')';\n } else {\n // Other items\n return '$expand=' + item + '(' + results + ')';\n }\n }, '');\n } else if (Array.isArray(expands)) {\n return '' + expands.map(function (e) {\n return buildExpand(e);\n }).join(',');\n } else if ((typeof expands === 'undefined' ? 'undefined' : _typeof(expands)) === 'object') {\n var expandKeys = Object.keys(expands);\n\n if (expandKeys.some(function (key) {\n return SUPPORTED_EXPAND_PROPERTIES.indexOf(key.toLowerCase()) !== -1;\n })) {\n return expandKeys.map(function (key) {\n var value = key === 'filter' ? buildFilter(expands[key]) : key.toLowerCase() === 'orderby' ? buildOrderBy(expands[key]) : buildExpand(expands[key]);\n return '$' + key.toLowerCase() + '=' + value;\n }).join(';');\n } else {\n return expandKeys.map(function (key) {\n var builtExpand = buildExpand(expands[key]);\n return builtExpand ? key + '(' + builtExpand + ')' : key;\n }).join(',');\n }\n }\n}\n\nfunction buildTransforms(transforms) {\n // Wrap single object an array for simplified processing\n var transformsArray = Array.isArray(transforms) ? transforms : [transforms];\n\n var transformsResult = transformsArray.reduce(function (result, transform) {\n Object.keys(transform).forEach(function (transformKey) {\n var transformValue = transform[transformKey];\n switch (transformKey) {\n case 'aggregate':\n result.push('aggregate(' + buildAggregate(transformValue) + ')');\n break;\n case 'filter':\n var builtFilter = buildFilter(transformValue);\n if (builtFilter !== undefined) {\n result.push('filter(' + buildFilter(transformValue) + ')');\n }\n break;\n case 'groupby': // support both cases\n case 'groupBy':\n result.push('groupby(' + buildGroupBy(transformValue) + ')');\n break;\n default:\n // TODO: support as many of the following:\n // topcount, topsum, toppercent,\n // bottomsum, bottomcount, bottompercent,\n // identity, concat, expand, search, compute, isdefined\n throw new Error('Unsupported transform: \\'' + transformKey + '\\'');\n }\n });\n\n return result;\n }, []);\n\n return transformsResult.join('/') || undefined;\n}\n\nfunction buildAggregate(aggregate) {\n // Wrap single object an array for simplified processing\n var aggregateArray = Array.isArray(aggregate) ? aggregate : [aggregate];\n\n return aggregateArray.map(function (aggregateItem) {\n return Object.keys(aggregateItem).map(function (aggregateKey) {\n var aggregateValue = aggregateItem[aggregateKey];\n\n // TODO: Are these always required? Can/should we default them if so? \n if (aggregateValue.with === undefined) {\n throw new Error('\\'with\\' property required for \\'' + aggregateKey + '\\'');\n }\n if (aggregateValue.as === undefined) {\n throw new Error('\\'as\\' property required for \\'' + aggregateKey + '\\'');\n }\n\n return aggregateKey + ' with ' + aggregateValue.with + ' as ' + aggregateValue.as;\n });\n }).join(',');\n}\n\nfunction buildGroupBy(groupBy) {\n if (groupBy.properties === undefined) {\n throw new Error('\\'properties\\' property required for groupBy:\\'' + aggregateKey + '\\'');\n }\n\n var result = '(' + groupBy.properties.join(',') + ')';\n\n if (groupBy.transform) {\n result += ',' + buildTransforms(groupBy.transform);\n }\n\n return result;\n}\n\nfunction buildOrderBy(orderBy) {\n if (typeof orderBy === 'number') {\n return orderBy;\n } else if (typeof orderBy === 'string') {\n return orderBy;\n } else if (Array.isArray(orderBy)) {\n return '' + orderBy.map(function (o) {\n return buildOrderBy(o);\n }).join(',');\n }\n}\n\nfunction buildUrl(path, params) {\n if (Object.keys(params).length) {\n return path + '?' + Object.keys(params).map(function (key) {\n return key + '=' + params[key];\n }).join('&');\n } else {\n return path;\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-odata/~/odata-query/dist/index.js\n// module id = 256\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nexports.renderChildren = renderChildren;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _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; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Fetch = function (_Component) {\n _inherits(Fetch, _Component);\n\n function Fetch() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Fetch);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Fetch.__proto__ || Object.getPrototypeOf(Fetch)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n request: {\n url: _this.props.url,\n options: _this.props.options\n },\n fetch: _this.fetch.bind(_this),\n clearData: _this.clearData.bind(_this),\n loading: null\n }, _this.cache = {}, _this.promises = [], _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Fetch, [{\n key: 'getOptions',\n value: function getOptions(options) {\n return typeof options === 'function' ? options() : options;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _props = this.props,\n url = _props.url,\n options = _props.options,\n manual = _props.manual,\n onChange = _props.onChange;\n\n this.mounted = true;\n\n if (typeof onChange === 'function') {\n onChange(this.state);\n }\n\n if (url && !manual) {\n this.fetch(url, options);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var _props2 = this.props,\n url = _props2.url,\n options = _props2.options,\n manual = _props2.manual;\n\n if (url !== prevProps.url && !manual) {\n this.fetch(url, options);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.mounted = false;\n }\n }, {\n key: 'fetch',\n value: function (_fetch) {\n function fetch(_x, _x2, _x3) {\n return _fetch.apply(this, arguments);\n }\n\n fetch.toString = function () {\n return _fetch.toString();\n };\n\n return fetch;\n }(function (url, options, updateOptions) {\n var _this2 = this;\n\n var _props3 = this.props,\n as = _props3.as,\n cache = _props3.cache;\n\n\n if (url == null) {\n url = this.props.url;\n }\n\n options = this.getOptions(options || this.props.options);\n var request = { url: url, options: options };\n\n if (cache && this.cache[url]) {\n // Restore cached state\n var promise = this.cache[url];\n promise.then(function (cachedState) {\n return _this2.update(cachedState, promise, updateOptions);\n });\n this.promises.push(promise);\n } else {\n this.update({ request: request, loading: true }, null, updateOptions);\n\n var _promise = fetch(url, options).then(function (response) {\n return response[as]().then(function (data) {\n return { response: response, data: data };\n }).catch(function (error) {\n return { response: response, data: error };\n });\n }).then(function (_ref2) {\n var _newState;\n\n var response = _ref2.response,\n data = _ref2.data;\n\n var newState = (_newState = {\n request: request,\n loading: false\n }, _defineProperty(_newState, response.ok ? 'error' : 'data', undefined), _defineProperty(_newState, response.ok ? 'data' : 'error', data), _defineProperty(_newState, 'response', response), _newState);\n\n _this2.update(newState, _promise, updateOptions);\n\n return newState;\n }).catch(function (error) {\n // Catch request errors with no response (CORS issues, etc)\n var newState = {\n request: request,\n data: undefined,\n error: error,\n loading: false\n };\n\n _this2.update(newState, _promise, updateOptions);\n\n // Rethrow so not to swallow errors, especially from errors within handlers (children func / onChange)\n throw error;\n\n return newState;\n });\n\n this.promises.push(_promise);\n\n if (cache) {\n this.cache[url] = _promise;\n }\n\n return _promise;\n }\n })\n }, {\n key: 'clearData',\n value: function clearData() {\n this.setState({ data: undefined });\n }\n }, {\n key: 'update',\n value: function update(nextState, currentPromise) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (currentPromise) {\n // Handle (i.e. ignore) promises resolved out of order from requests\n var index = this.promises.indexOf(currentPromise);\n if (index === -1) {\n // Ignore update as a later request/promise has already been processed\n return;\n }\n\n // Remove currently resolved promise and any outstanding promises\n // (which will cause them to be ignored when they do resolve/reject)\n this.promises.splice(0, index + 1);\n }\n\n var _props4 = this.props,\n onChange = _props4.onChange,\n onDataChange = _props4.onDataChange;\n\n\n var data = undefined;\n if (nextState.data && nextState.data !== this.state.data && typeof onDataChange === 'function') {\n data = onDataChange(nextState.data, options.ignorePreviousData ? undefined : this.state.data);\n }\n\n if (typeof onChange === 'function') {\n // Always call onChange even if unmounted. Useful for `POST` requests with a redirect\n onChange(_extends({}, this.state, nextState, data && { data: data }));\n }\n\n // Ignore passing state down if no longer mounted\n if (this.mounted) {\n // If `onDataChange` prop returned a value, we use it for data passed down to the children function\n this.setState(_extends({}, nextState, data && { data: data }));\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var children = this.props.children;\n\n return renderChildren(children, this.state);\n }\n }]);\n\n return Fetch;\n}(_react.Component);\n\nFetch.defaultProps = {\n as: 'json'\n};\nexports.default = Fetch;\nfunction renderChildren(children, fetchProps) {\n if (typeof children === 'function') {\n var childrenResult = children(fetchProps);\n if (typeof childrenResult === 'function') {\n return renderChildren(childrenResult, fetchProps);\n } else {\n return childrenResult;\n }\n } else if (_react2.default.Children.count(children) === 0) {\n return null;\n } else {\n // DOM/Component children\n // TODO: Better to check if children count === 1 and return null otherwise (like react-router)?\n // Currently not possible to support multiple children components/elements (until React fiber)\n return _react2.default.Children.only(children);\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-odata/~/react-fetch-component/dist/Fetch.js\n// module id = 257\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/KeyEscapeUtils.js\n// module id = 258\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/PooledClass.js\n// module id = 259\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar PooledClass = require('./PooledClass');\nvar ReactElement = require('./ReactElement');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar traverseAllChildren = require('./traverseAllChildren');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.func = forEachFunction;\n this.context = forEachContext;\n this.count = 0;\n}\nForEachBookKeeping.prototype.destructor = function () {\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n this.result = mapResult;\n this.keyPrefix = keyPrefix;\n this.func = mapFunction;\n this.context = mapContext;\n this.count = 0;\n}\nMapBookKeeping.prototype.destructor = function () {\n this.result = null;\n this.keyPrefix = null;\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (ReactElement.isValidElement(mappedChild)) {\n mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n count: countChildren,\n toArray: toArray\n};\n\nmodule.exports = ReactChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactChildren.js\n// module id = 260\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactElement = require('./ReactElement');\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @private\n */\nvar createDOMFactory = ReactElement.createFactory;\nif (process.env.NODE_ENV !== 'production') {\n var ReactElementValidator = require('./ReactElementValidator');\n createDOMFactory = ReactElementValidator.createFactory;\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n *\n * @public\n */\nvar ReactDOMFactories = {\n a: createDOMFactory('a'),\n abbr: createDOMFactory('abbr'),\n address: createDOMFactory('address'),\n area: createDOMFactory('area'),\n article: createDOMFactory('article'),\n aside: createDOMFactory('aside'),\n audio: createDOMFactory('audio'),\n b: createDOMFactory('b'),\n base: createDOMFactory('base'),\n bdi: createDOMFactory('bdi'),\n bdo: createDOMFactory('bdo'),\n big: createDOMFactory('big'),\n blockquote: createDOMFactory('blockquote'),\n body: createDOMFactory('body'),\n br: createDOMFactory('br'),\n button: createDOMFactory('button'),\n canvas: createDOMFactory('canvas'),\n caption: createDOMFactory('caption'),\n cite: createDOMFactory('cite'),\n code: createDOMFactory('code'),\n col: createDOMFactory('col'),\n colgroup: createDOMFactory('colgroup'),\n data: createDOMFactory('data'),\n datalist: createDOMFactory('datalist'),\n dd: createDOMFactory('dd'),\n del: createDOMFactory('del'),\n details: createDOMFactory('details'),\n dfn: createDOMFactory('dfn'),\n dialog: createDOMFactory('dialog'),\n div: createDOMFactory('div'),\n dl: createDOMFactory('dl'),\n dt: createDOMFactory('dt'),\n em: createDOMFactory('em'),\n embed: createDOMFactory('embed'),\n fieldset: createDOMFactory('fieldset'),\n figcaption: createDOMFactory('figcaption'),\n figure: createDOMFactory('figure'),\n footer: createDOMFactory('footer'),\n form: createDOMFactory('form'),\n h1: createDOMFactory('h1'),\n h2: createDOMFactory('h2'),\n h3: createDOMFactory('h3'),\n h4: createDOMFactory('h4'),\n h5: createDOMFactory('h5'),\n h6: createDOMFactory('h6'),\n head: createDOMFactory('head'),\n header: createDOMFactory('header'),\n hgroup: createDOMFactory('hgroup'),\n hr: createDOMFactory('hr'),\n html: createDOMFactory('html'),\n i: createDOMFactory('i'),\n iframe: createDOMFactory('iframe'),\n img: createDOMFactory('img'),\n input: createDOMFactory('input'),\n ins: createDOMFactory('ins'),\n kbd: createDOMFactory('kbd'),\n keygen: createDOMFactory('keygen'),\n label: createDOMFactory('label'),\n legend: createDOMFactory('legend'),\n li: createDOMFactory('li'),\n link: createDOMFactory('link'),\n main: createDOMFactory('main'),\n map: createDOMFactory('map'),\n mark: createDOMFactory('mark'),\n menu: createDOMFactory('menu'),\n menuitem: createDOMFactory('menuitem'),\n meta: createDOMFactory('meta'),\n meter: createDOMFactory('meter'),\n nav: createDOMFactory('nav'),\n noscript: createDOMFactory('noscript'),\n object: createDOMFactory('object'),\n ol: createDOMFactory('ol'),\n optgroup: createDOMFactory('optgroup'),\n option: createDOMFactory('option'),\n output: createDOMFactory('output'),\n p: createDOMFactory('p'),\n param: createDOMFactory('param'),\n picture: createDOMFactory('picture'),\n pre: createDOMFactory('pre'),\n progress: createDOMFactory('progress'),\n q: createDOMFactory('q'),\n rp: createDOMFactory('rp'),\n rt: createDOMFactory('rt'),\n ruby: createDOMFactory('ruby'),\n s: createDOMFactory('s'),\n samp: createDOMFactory('samp'),\n script: createDOMFactory('script'),\n section: createDOMFactory('section'),\n select: createDOMFactory('select'),\n small: createDOMFactory('small'),\n source: createDOMFactory('source'),\n span: createDOMFactory('span'),\n strong: createDOMFactory('strong'),\n style: createDOMFactory('style'),\n sub: createDOMFactory('sub'),\n summary: createDOMFactory('summary'),\n sup: createDOMFactory('sup'),\n table: createDOMFactory('table'),\n tbody: createDOMFactory('tbody'),\n td: createDOMFactory('td'),\n textarea: createDOMFactory('textarea'),\n tfoot: createDOMFactory('tfoot'),\n th: createDOMFactory('th'),\n thead: createDOMFactory('thead'),\n time: createDOMFactory('time'),\n title: createDOMFactory('title'),\n tr: createDOMFactory('tr'),\n track: createDOMFactory('track'),\n u: createDOMFactory('u'),\n ul: createDOMFactory('ul'),\n 'var': createDOMFactory('var'),\n video: createDOMFactory('video'),\n wbr: createDOMFactory('wbr'),\n\n // SVG\n circle: createDOMFactory('circle'),\n clipPath: createDOMFactory('clipPath'),\n defs: createDOMFactory('defs'),\n ellipse: createDOMFactory('ellipse'),\n g: createDOMFactory('g'),\n image: createDOMFactory('image'),\n line: createDOMFactory('line'),\n linearGradient: createDOMFactory('linearGradient'),\n mask: createDOMFactory('mask'),\n path: createDOMFactory('path'),\n pattern: createDOMFactory('pattern'),\n polygon: createDOMFactory('polygon'),\n polyline: createDOMFactory('polyline'),\n radialGradient: createDOMFactory('radialGradient'),\n rect: createDOMFactory('rect'),\n stop: createDOMFactory('stop'),\n svg: createDOMFactory('svg'),\n text: createDOMFactory('text'),\n tspan: createDOMFactory('tspan')\n};\n\nmodule.exports = ReactDOMFactories;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactDOMFactories.js\n// module id = 261\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _require = require('./ReactElement'),\n isValidElement = _require.isValidElement;\n\nvar factory = require('prop-types/factory');\n\nmodule.exports = factory(isValidElement);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactPropTypes.js\n// module id = 262\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.6.2';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactVersion.js\n// module id = 263\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _require = require('./ReactBaseClasses'),\n Component = _require.Component;\n\nvar _require2 = require('./ReactElement'),\n isValidElement = _require2.isValidElement;\n\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\nvar factory = require('create-react-class/factory');\n\nmodule.exports = factory(Component, isValidElement, ReactNoopUpdateQueue);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/createClass.js\n// module id = 264\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/getIteratorFn.js\n// module id = 265\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar nextDebugID = 1;\n\nfunction getNextDebugID() {\n return nextDebugID++;\n}\n\nmodule.exports = getNextDebugID;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/getNextDebugID.js\n// module id = 266\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = lowPriorityWarning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/lowPriorityWarning.js\n// module id = 267\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactElement = require('./ReactElement');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !ReactElement.isValidElement(children) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;\n return children;\n}\n\nmodule.exports = onlyChild;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/onlyChild.js\n// module id = 268\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = \" It looks like you're using an element created by a different \" + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/traverseAllChildren.js\n// module id = 269\n// module chunks = 0","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/setimmediate/setImmediate.js\n// module id = 270\n// module chunks = 0","\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/style-loader/lib/urls.js\n// module id = 271\n// module chunks = 0","var apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\nexports.setImmediate = setImmediate;\nexports.clearImmediate = clearImmediate;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/timers-browserify/main.js\n// module id = 272\n// module chunks = 0","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAAQCAYAAAC1MDndAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTZENUJEQzJCMDQwMTFFN0FGMzJCODlDMDY5NjdGN0MiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTZENUJEQzNCMDQwMTFFN0FGMzJCODlDMDY5NjdGN0MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5NkQ1QkRDMEIwNDAxMUU3QUYzMkI4OUMwNjk2N0Y3QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5NkQ1QkRDMUIwNDAxMUU3QUYzMkI4OUMwNjk2N0Y3QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmwzJe0AAAShSURBVHja5Jd/TJVVGMefF++NH3OXLhj5g3GxK2rkEFfKtKWFLBOVVk60Wj9Xc5auuVqN1mzVzGpmf1TaFLM5i+nEtBGCU5CuOVQCsxFOBaFmw0y9Ny69l+vlvn0ffN6Xl9cLXpq1RWf77JzznOc9P55zzvOclyjKFKpwOf1l7rUrli1Xg3vTV6E+nP4HKSYKw8SDV1E8u70h+6Wyxsy48qaJb6J+BvLl4KahbCBlAMPYkD0N2BijfIE4mr1hKfnUOBqT6KPKpcUUawuxajNYBUpsD7RpQ/4EwTAKWIhiI9jIxmF5cfXUHuNwOudLpK11d+qfuMEXoB7fzRnSBsICc5EdATvBeF3e2pZImbXNZKduQ3fDd9Pp0p8J5s+zQQX6qALThpSBsKApoBLFA2CqVamhNIlGal7KDx03ZB1dsfSR5+5Ifd7HRkZ/pWDCf95AWESh+BCVbWFV+P7YSEr3nu8pPxyqI4emGm0l9VOo5WJypH6PgmFgNfrPH+ykxs5cbwPJ//TiMYYTxETtpLGYp5Bt0esaXG75O6k0uuuSoVOTmUWftMzqPS7jmmlj4U5rvw/BYe+OMCE7+yrAzuyus98+77O0T0S2BiwQA18Gn4M3oNuB9lSUD4HPUH8LdQfKJ9gloP6y9NFqrovsGTkE+ZD/hHomyjy/DPAzeALyGsjZ594fdZivqnD1MU7AlUArFh+h25IvGrLqM2463OqKdtPmgUlgHFhsMU6W+L8HwV6wnuMBWAkqRY0jKw+WZJo/10eYurLWOTlErj9JODKng03SViTyTtAluryJ3n4NFAjYSDmq9jlrKXPDNEzRqGh2dR/ddw/kUlhTojEQn1B+G3SAJy1tawE/PudjNxeAF1Bmo70GXr/Bt4sNHATvgxl84lmIMVeaNu5T1LP7NdC+0jRydvuNemeWg9yjr56me3GtZqS3GW1N51Poqx8nXe++3yInqBx8yRODLEPaOBzmgT2YVLn+DcoaWAOqbrCBPgA8pgfY0b86qJf0hd8TaMSp3qulwHNk5Pn76BTlVVGM0vsuXHdwJqlX7ANN6jG5IltMfk4/RSniD0//G5FJNuE5GdeDDcoZlIE8O0ZRvBYks7P+ZXMM1a1zGPi3BWhWuMnQ+c0/nIprp13venFaBJbJVXtcosgFEBb/NFDq7mf+ob9hpM3I+EEcD3b0F82uEZ4+lUSu9nbL8xohxRu6hiXBWoqlK4baptqcHkNFuF6TkU2W6qNycvg0pfGNxWTZOe7nKAPdQku4fw/kikg/1rdKnir55UGG90KwEOPulr+FNFNfAxuocY8Dwuh+qZxaJxWE6o06X7EPa+6JpKpfJW50Crfz4TSdrBcBh/3tmPxhsI3dG3hFIDHkMcAL3IX8az2YWsYrQPtx4IlgHI5aH/PvEcolfIoBh+VfI03cZq58U+YeHxtQw+32m6PejRylhU4kje0KKle7ajg3hipPTkA4bTOr3cGLwQIPmWReTHArv0X4fYS2k8j5jq4Gc8F0eaO8LW8jPT0iPqwAsGMsMjt2pB8iuVWRq9D9A+PM599LsITtDp6FXL+mquj2XKO/BBgAgi22AONsZVEAAAAASUVORK5CYII=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/images/aculist-edge_logo.png\n// module id = 273\n// module chunks = 0","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAAO0lEQVQ4y2NgGArgPxIY1YChsOE/LtBAmpYG0mxpIOSDBpKUo2lpIDZxNJCkHKqlYZAla3RAHQ1DFgAARRroHyLNTwwAAAAASUVORK5CYII=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/images/download.png\n// module id = 274\n// module chunks = 0","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/whatwg-fetch/fetch.js\n// module id = 275\n// module chunks = 0"],"sourceRoot":""}