{"version":3,"sources":["webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/index.vue?d292","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/once.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/is-promise/index.js","webpack:///./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/fuzzysearch/index.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/index.vue?c794","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/breadcrumb.vue?efb0","webpack:///src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/breadcrumb.vue","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/breadcrumb.vue?bb12","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/breadcrumb.vue","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/DataTable.vue?79c4","webpack:///src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/DataTable.vue","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/DataTable.vue?90f5","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/DataTable.vue","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/DonViThongKeDataTable.vue?675e","webpack:///./src/services/api/HoSoCanBoCongChuc/DanhMuc/DonViThongKeService.js","webpack:///src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/DonViThongKeDataTable.vue","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/DonViThongKeDataTable.vue?c419","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/DonViThongKeDataTable.vue","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/LeftSidebar.vue?415c","webpack:///src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/LeftSidebar.vue","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/LeftSidebar.vue?3245","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/LeftSidebar.vue","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/DonViThongKeLeftSidebar.vue?89b8","webpack:///src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/DonViThongKeLeftSidebar.vue","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/DonViThongKeLeftSidebar.vue?c9bc","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/DonViThongKeLeftSidebar.vue","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/useSetup.js","webpack:///src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/index.vue","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/index.vue?5dc8","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/index.vue","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/last.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./src/@core/comp-functions/forms/form-validation.js","webpack:///./node_modules/lodash/toInteger.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/lodash/toFinite.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/DonViThongKeLeftSidebar.vue?a777","webpack:///./node_modules/lodash/constant.js","webpack:///./src/services/api/DefaultTemplate/DonViService.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/model.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-options.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/helpers/mixin-options.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/form-select-option.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/form-select-option-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/form-select.js","webpack:///./src/views/HoSoCanBoCongChuc/danhmuc/donvithongke/components/LeftSidebar.vue?0533","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/bootstrap-vue/esm/constants/popper.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/click-out.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/focus-in.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/dropdown.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-item.js","webpack:///./node_modules/bootstrap-vue/esm/components/breadcrumb/breadcrumb-link.js","webpack:///./node_modules/bootstrap-vue/esm/components/breadcrumb/breadcrumb-item.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/bootstrap-vue/esm/components/sidebar/sidebar.js","webpack:///./node_modules/lodash/noop.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-radio-check.js","webpack:///./node_modules/bootstrap-vue/esm/utils/loose-index-of.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-checkbox/form-checkbox.js","webpack:///./node_modules/@riophae/vue-treeselect/dist/vue-treeselect.cjs.js","webpack:///./src/@core/utils/utils.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown.js","webpack:///./node_modules/watch-size/index.es.mjs","webpack:///./node_modules/lodash/before.js","webpack:///./node_modules/bootstrap-vue/esm/components/breadcrumb/breadcrumb.js","webpack:///./node_modules/vue-good-table/dist/vue-good-table.esm.js","webpack:///./node_modules/lodash/isSymbol.js"],"names":["Symbol","objectProto","Object","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","undefined","getRawTag","value","isOwn","call","tag","unmasked","e","result","module","exports","_nonIterableSpread","TypeError","__esModule","_iterableToArray","iter","iterator","Array","from","props","id","inline","novalidate","validated","BForm","extend","name","functional","render","h","_ref","data","children","class","attrs","isObjectLike","isObject","type","before","once","func","arrayLikeToArray","require","_arrayWithoutHoles","arr","isArray","isPromise","obj","then","default","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_slicedToArray","i","objectToString","freeGlobal","freeSelf","self","root","Function","fuzzysearch","needle","haystack","tlen","length","qlen","outer","j","nch","charCodeAt","nullTag","undefinedTag","baseGetTag","_vm","this","_h","$createElement","_c","_self","staticStyle","staticClass","show","isShowLeftSidebar","isShowDonViThongKeSidebar","on","$event","code","editData","reLoadDataTable","dataTable","dataTableIsLoaded","showDonViThongKeSidebar","removeItem","showLeftSlidebar","staticRenderFns","items","_v","_s","title","_e","_l","item","key","text","active","to","directives","Ripple","components","BBreadcrumb","BBreadcrumbItem","BRow","BCol","BDropdown","BDropdownItem","BButton","component","model","callback","$$v","searchTerm","expression","isLoaded","rawName","modifiers","$emit","columns","enabled","externalQuery","perPage","pageLength","scopedSlots","_u","fn","column","field","row","params","proxy","showEdit","showConfirmDeleteModule","formattedRow","perPageChanged","currentPerPage","total","pageChanged","currentPage","BCard","BCardBody","VueGoodTable","BPagination","BFormGroup","BFormInput","BFormSelect","BFormCheckbox","required","isWait","dir","label","tdClass","thClass","computed","methods","position","icon","variant","msgBoxConfirm","cancelVariant","DeleteData","info","ten","BaseService","http","CapThongKeGetAll","postdata","url","method","CapThongKeCreate","assign","CapThongKeUpdate","CapThongKeGetByCode","DonViThongKeGetByCode","DonViThongKeCreate","DonViThongKeDelete","created","getInfo","resetForm","val","ref","hide","handleSubmit","preventDefault","onSubmit","apply","arguments","validationContext","getValidationState","formData","$set","errors","localize","BSidebar","BFormInvalidFeedback","vSelect","ValidationProvider","ValidationObserver","parentId","alphaNum","email","dataUpdate","res","dataCreate","setup","refFormObserver","listDonVi","normalizer","formatDonViUsings","formatRemoveDonViUsing","Treeselect","watch","listUsing","getDonVi","GetTree","node","instanceId","maCoQuan","isSyncQG","list","useDonViService","toast","useToast","useRouter","router","route","donViGetInfo","ctx","response","isError","replace","ToastificationContent","message","Breadcrumb","LeftSidebar","DataTable","DonViThongKeDataTable","DonViThongKeLeftSidebar","headerData","document","fetchData","now","Date","last","array","arrayWithoutHoles","iterableToArray","nonIterableSpread","_toConsumableArray","formValidation","resetFormData","clearFormData","resetObserver","reset","dirty","fieldRequired","changed","valid","nextTick","clearForm","toFinite","toInteger","remainder","reWhitespace","trimmedEndIndex","string","index","test","charAt","global","_arrayLikeToArray","len","arr2","toNumber","INFINITY","MAX_INTEGER","sign","_unsupportedIterableToArray","o","minLen","n","slice","constructor","constant","GetTreeAll","GetById","DonViCreate","DonViUpdate","DonViDelete","_makeModelMixin","mixin","prop","event","OPTIONS_OBJECT_DEPRECATED_MSG","disabledField","htmlField","options","textField","valueField","formOptionsMixin","formOptions","normalizeOptions","normalizeOption","option","get","String","html","disabled","Boolean","_this","map","warn","$options","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","_objectSpread","target","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","configurable","writable","labelField","optionsField","optionsMixin","mixins","BFormSelectOption","domProps","BFormSelectOptionGroup","concat","normalizeSlot","ariaInvalid","multiple","selectSize","localValue","computedSelectSize","plain","inputClass","size","stateClass","newValue","focus","$refs","input","blur","onChange","selectedValue","selected","_value","$nextTick","safeId","form","computedAriaInvalid","change","reTrimStart","baseTrim","PLACEMENT_TOP_START","PLACEMENT_TOP_END","PLACEMENT_BOTTOM_START","PLACEMENT_BOTTOM_END","PLACEMENT_RIGHT_START","PLACEMENT_LEFT_START","clickOutMixin","listenForClickOut","oldValue","clickOutElement","clickOutEventName","_clickOutHandler","beforeCreate","mounted","beforeDestroy","isClickOut","$el","clickOutHandler","focusInMixin","listenForFocusIn","focusInElement","_focusInHandler","focusInHandler","ROOT_EVENT_NAME_SHOWN","ROOT_EVENT_NAME_HIDDEN","SELECTOR_FORM_CHILD","SELECTOR_ITEM","selector","join","els","boundary","dropleft","dropright","dropup","noFlip","offset","popperOpts","right","dropdownMixin","provide","bvDropdown","inject","bvNavbar","visible","visibleChangePrevented","inNavbar","toggler","toggle","directionClass","boundaryClass","eventName","bvEvent","cancelable","vueTarget","menu","relatedTarget","componentId","emitEvent","defaultPrevented","$off","focusToggler","showMenu","hideMenu","$_popper","$_hideTimeout","deactivated","whileOpenListen","destroyPopper","clearHideTimeout","emitOnRoot","el","split","createPopper","focusMenu","element","getPopperConfig","destroy","updatePopper","scheduleUpdate","_unused","clearTimeout","placement","popperConfig","flip","boundariesElement","preventOverflow","isOpen","$root","rootCloseListener","vm","_this2","refocus","$once","_event","keyCode","indexOf","onMousedown","propagation","onKeydown","onEsc","focusNext","onSplitClick","hideHandler","_this3","setTimeout","up","_this4","getItems","focusItem","find","_this5","_iterableToArrayLimit","_i","_arr","_n","_d","next","done","err","linkClass","inheritAttrs","computedAttrs","bvAttrs","role","closeDropdown","onClick","style","$props","click","ariaCurrent","BBreadcrumbLink","suppliedProps","componentData","FUNC_ERROR_TEXT","nativeMax","Math","max","nativeMin","min","debounce","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","isSymbol","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","_watch","CLASS_NAME","ROOT_ACTION_EVENT_NAME_REQUEST_STATE","ROOT_ACTION_EVENT_NAME_TOGGLE","ROOT_EVENT_NAME_STATE","ROOT_EVENT_NAME_SYNC_STATE","defaultValue","modelMixin","modelProps","MODEL_PROP_NAME","MODEL_EVENT_NAME","ariaLabel","ariaLabelledby","backdrop","backdropVariant","bgVariant","bodyClass","closeLabel","footerClass","headerClass","lazy","noCloseOnBackdrop","noCloseOnEsc","noCloseOnRouteChange","noEnforceFocus","noHeader","noHeaderClose","noSlide","shadow","sidebarClass","textVariant","width","zIndex","renderHeaderTitle","slotScope","renderHeaderClose","renderHeader","$content","$title","$close","renderBody","renderFooter","$footer","renderContent","$header","renderBackdrop","localShow","onBackdropClick","transitionProps","css","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","hasTitle","$scopedSlots","$slots","hasNormalizedSlot","titleId","tabindex","emitState","fullPath","$_returnFocusEl","listenOnRoot","handleToggle","handleSync","activated","emitSync","state","onTopTrapFocus","tabables","content","enforceFocus","reverse","onBottomTrapFocus","onBeforeEnter","body","onAfterEnter","onAfterLeave","$sidebar","beforeEnter","afterEnter","afterLeave","$backdrop","noFade","$tabTrapTop","$tabTrapBottom","keydown","noop","_arrayWithHoles","_nonIterableRest","_methods","_objectSpread2","button","buttonVariant","formRadioCheckMixin","localChecked","isGroup","bvGroup","hasFocus","computedLocalChecked","set","isChecked","isRadio","isBtnMode","buttons","isPlain","isCustom","isSwitch","switches","switch","isInline","isDisabled","isRequired","computedName","groupName","computedForm","computedSize","computedState","computedButtonVariant","buttonClasses","computedLocalCheckedWatcher","_ref2","checked","$input","handleChange","handleFocus","$button","$label","for","MODEL_PROP_NAME_INDETERMINATE","MODEL_EVENT_NAME_INDETERMINATE","setIndeterminate","indeterminate","_ref$target","uncheckedValue","modules","installedModules","__webpack_require__","moduleId","l","m","c","d","getter","r","t","mode","ns","create","bind","property","p","s","__webpack_exports__","slicedToArray_","slicedToArray_default","toConsumableArray_","toConsumableArray_default","defineProperty_","defineProperty_default","external_fuzzysearch_","external_fuzzysearch_default","noop_","noop_default","warning_warning","a","onLeftClick","mouseDownHandler","evt","_len","_key","scrollIntoView","$scrollingEl","$focusedEl","scrollingReact","getBoundingClientRect","focusedRect","overScroll","offsetHeight","bottom","scrollTop","offsetTop","clientHeight","scrollHeight","top","intervalId","debounce_","debounce_default","external_watch_size_","external_watch_size_default","removeFromArray","elem","idx","splice","registered","INTERVAL_DURATION","run","setInterval","stop","clearInterval","listener","lastWidth","lastHeight","offsetWidth","height","watchSizeForIE9","unwatch","watchSize","isIE9","documentMode","locked","wrappedListener","implementation","removeSizeWatcher","findScrollParents","$scrollParents","$parent","parentNode","nodeName","nodeType","ELEMENT_NODE","isScrollElment","window","_getComputedStyle","getComputedStyle","overflow","overflowX","overflowY","setupResizeAndScrollEventListeners","addEventListener","passive","scrollParent","removeEventListener","$scrollParent","isNaN_isNaN","x","external_is_promise_","external_is_promise_default","once_","once_default","identity_","identity_default","constant_","constant_default","createMap","typeof_","typeof_default","isPlainObject","getPrototypeOf","copy","deepExtend","last_","last_default","includes","arrOrStr","predicate","quickDiff","arrA","arrB","NO_PARENT_NODE","UNCHECKED","INDETERMINATE","CHECKED","ALL_CHILDREN","ALL_DESCENDANTS","LEAF_CHILDREN","LEAF_DESCENDANTS","LOAD_ROOT_OPTIONS","LOAD_CHILDREN_OPTIONS","ASYNC_SEARCH","ALL","BRANCH_PRIORITY","LEAF_PRIORITY","ALL_WITH_INDETERMINATE","ORDER_SELECTED","LEVEL","INDEX","KEY_CODES","BACKSPACE","ENTER","ESCAPE","END","HOME","ARROW_LEFT","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","DELETE","INPUT_DEBOUNCE_DELAY","MIN_INPUT_WIDTH","MENU_BUFFER","sortValueByIndex","b","level","sortValueByLevel","createAsyncOptionsStates","isLoading","loadingError","stringifyOptionPropValue","match","enableFuzzyMatch","getErrorMessage","treeselectMixin","instance","allowClearingDisabled","allowSelectingDisabledDescendants","alwaysOpen","appendToBody","async","autoFocus","autoLoadRootOptions","autoDeselectAncestors","autoDeselectDescendants","autoSelectAncestors","autoSelectDescendants","backspaceRemoves","beforeClearAll","branchNodesFirst","cacheOptions","clearable","clearAllText","clearOnSelect","clearValueText","closeOnSelect","defaultExpandLevel","Number","defaultOptions","deleteRemoves","delimiter","flattenSearchResults","disableBranchNodes","disableFuzzyMatching","flat","joinValues","limit","Infinity","limitText","count","loadingText","loadOptions","matchKeys","maxHeight","noChildrenText","noOptionsText","noResultsText","openDirection","validator","acceptableValues","openOnClick","openOnFocus","placeholder","retryText","retryTitle","searchable","searchNested","searchPromptText","showCount","showCountOf","showCountOnSearch","sortValueBy","tabIndex","valueConsistsOf","valueFormat","trigger","isFocused","searchQuery","current","lastScrollPosition","forest","normalizedOptions","nodeMap","checkedStateMap","selectedNodeIds","extractCheckedNodeIdsFromValue","selectedNodeMap","rootOptionsStates","localSearch","noResults","countMap","remoteSearch","selectedNodes","getNode","internalValue","single","isRootNode","isSelected","isLeaf","_internalValue","indeterminateNodeIds","selectedNode","ancestors","ancestor","sort","hasValue","visibleOptionIds","traverseAllNodesByIndex","shouldOptionBeIncludedInSearchResult","isBranch","shouldExpand","hasVisibleOptions","showCountOnSearchComputed","hasBranchNodes","some","rootNode","shouldFlattenOptions","openMenu","closeMenu","initialize","hasChanged","getValue","getInstanceId","buildForestState","handler","deep","immediate","handleRemoteSearch","handleLocalSearch","nodeIdsFromValue","fixSelectedNodeIds","verifyProps","propNames","propName","resetFlags","_blurOnSelect","getRemoteSearchEntry","prevNodeMap","keepDataOfSelectedNodes","normalize","rawNodes","raw","nodeId","createFallbackNode","extractNodeFromValue","enhancedNormalizer","fallbackNode","isFallbackNode","isNew","_this6","defaultNode","valueArray","matched","nodeIdListOfPrevValue","_this7","nextSelectedNodeIds","traverseDescendantsBFS","descendant","queue","shift","_map","_queue","_nodeId","_node","_this8","currNode","traverseDescendantsDFS","_this9","child","traverseAllNodesDFS","_this10","walk","toggleClickOutsideEvent","handleClickOutside","getValueContainer","control","getInput","focusInput","blurInput","handleMouseDown","stopPropagation","isClickedOnValueContainer","contains","wrapper","_this11","resetHighlightedOptionWhenNecessary","_this11$$set","isExpandedOnSearch","showAllChildrenOnSearch","isMatched","hasMatchedDescendants","lowerCasedSearchQuery","trim","toLocaleLowerCase","splitSearchQuery","every","filterValue","nestedSearchLabel","matchKey","lowerCased","_this12","entry","callLoadOptionsProp","action","isPending","start","succeed","fail","end","_this13","$watch","isExpanded","shouldShowOptionInMenu","getControl","getMenu","portal","portalTarget","$menu","setCurrentHighlightedOption","_this14","scroll","prev","isHighlighted","scrollToOption","$option","querySelector","forceReset","highlightFirstOption","first","highlightPrevOption","highlightLastOption","highlightNextOption","resetSearchQuery","saveMenuScrollPosition","restoreMenuScrollPosition","loadRootOptions","toggleMenu","toggleExpanded","nextState","childrenStates","loadChildrenOptions","_this15","selectedNodeId","ancestorNode","nodes","_this16","checkDuplication","verifyNodeShape","isDefaultExpanded","reduce","normalized","_this16$$set","hasDisabledDescendants","branchNodes","leafNodes","_this17","_this18","_ref3","catch","console","error","_this19","JSON","stringify","select","clear","_selectNode","_deselectNode","_this20","_this21","addValue","isFullyChecked","curr","_this22","removeValue","hasUncheckedSomeDescendants","removeLastValue","lastValue","lastSelectedNode","destroyed","stringifyValue","HiddenFields_render","HiddenFieldsvue_type_script_lang_js_","_","context","injections","stringifiedValues","stringifiedValue","components_HiddenFieldsvue_type_script_lang_js_","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","shadowRoot","_injectStyles","originalRender","existing","__file","Input_render","Input_staticRenderFns","HiddenFields","external_babel_helper_vue_jsx_merge_props_","external_babel_helper_vue_jsx_merge_props_default","keysThatRequireMenuBeingOpen","Inputvue_type_script_lang_js_","inputWidth","needAutoSize","inputStyle","updateInputWidth","debouncedCallback","updateSearchQuery","onInput","onFocus","onBlur","activeElement","onKeyDown","which","ctrlKey","shiftKey","altKey","metaKey","_current","_current2","onMouseDown","renderInputContainer","renderInput","renderSizer","autocomplete","sizer","scrollWidth","components_Inputvue_type_script_lang_js_","Input_component","Placeholder_render","Placeholder_staticRenderFns","Input","Placeholdervue_type_script_lang_js_","placeholderClass","components_Placeholdervue_type_script_lang_js_","Placeholder_component","SingleValue_render","SingleValue_staticRenderFns","Placeholder","SingleValuevue_type_script_lang_js_","renderSingleValueLabel","customValueLabelRenderer","renderValueContainer","shouldShowValue","components_SingleValuevue_type_script_lang_js_","SingleValue_component","SingleValue","Deletevue_type_template_id_364b6320_render","xmlns","viewBox","Deletevue_type_template_id_364b6320_staticRenderFns","_withStripped","Deletevue_type_script_lang_js_","icons_Deletevue_type_script_lang_js_","Delete_component","MultiValueItem_render","MultiValueItem_staticRenderFns","Delete","MultiValueItemvue_type_script_lang_js_","itemClass","labelRenderer","components_MultiValueItemvue_type_script_lang_js_","MultiValueItem_component","MultiValue_render","MultiValue_staticRenderFns","MultiValueItem","MultiValuevue_type_script_lang_js_","renderMultiValueItems","renderExceedLimitTip","transitionGroupProps","appear","components_MultiValuevue_type_script_lang_js_","MultiValue_component","MultiValue","Arrowvue_type_template_id_11186cd4_render","Arrowvue_type_template_id_11186cd4_staticRenderFns","Arrowvue_type_script_lang_js_","icons_Arrowvue_type_script_lang_js_","Arrow_component","Control_render","Control_staticRenderFns","Arrow","Controlvue_type_script_lang_js_","shouldShowX","hasUndisabledValue","shouldShowArrow","renderX","handleMouseDownOnX","renderArrow","arrowClass","handleMouseDownOnArrow","shouldClear","ValueContainer","components_Controlvue_type_script_lang_js_","Control_component","Tip_render","Tip_staticRenderFns","Control","Tipvue_type_script_lang_js_","components_Tipvue_type_script_lang_js_","Tip_component","arrowPlaceholder","checkMark","minusMark","Option_render","Option_staticRenderFns","Tip","Option","shouldShow","renderOption","optionClass","handleMouseEnterOption","renderLabelContainer","renderCheckboxContainer","renderCheckbox","renderLabel","renderSubOptionsList","renderSubOptions","renderNoChildrenTip","renderLoadingChildrenTip","renderLoadingChildrenErrorTip","handleMouseDownOnLabelContainer","checkedState","checkboxClass","shouldShowCount","NaN","labelClassName","countClassName","customLabelRenderer","childNode","handleMouseDownOnRetry","currentTarget","indentLevel","listItemClass","Optionvue_type_script_lang_js_","components_Optionvue_type_script_lang_js_","Option_component","Menu_render","Menu_staticRenderFns","components_Option","directionMap","above","below","Menuvue_type_script_lang_js_","menuStyle","menuContainerStyle","onMenuOpen","onMenuClose","menuSizeWatcher","menuResizeAndScrollEventListeners","renderMenu","renderBeforeList","renderAsyncSearchMenuInner","renderLocalSearchMenuInner","renderNormalMenuInner","renderAfterList","beforeListRenderer","afterListRenderer","renderLoadingOptionsTip","renderLoadingRootOptionsErrorTip","renderNoAvailableOptionsTip","renderOptionList","renderNoResultsTip","shouldShowSearchPromptTip","shouldShowNoResultsTip","renderSearchPromptTip","renderAsyncSearchLoadingErrorTip","adjustMenuOpenDirection","setupMenuSizeWatcher","setupMenuResizeAndScrollEventListeners","removeMenuSizeWatcher","removeMenuResizeAndScrollEventListeners","$control","menuRect","controlRect","menuHeight","viewportHeight","innerHeight","spaceAbove","spaceBelow","isControlInViewport","hasEnoughSpaceBelow","hasEnoughSpaceAbove","remove","components_Menuvue_type_script_lang_js_","Menu_component","Menu","external_vue_","external_vue_default","MenuPortalvue_type_script_lang_js_ownKeys","MenuPortalvue_type_script_lang_js_objectSpread","MenuPortal_render","MenuPortal_staticRenderFns","PortalTarget","setupHandlers","removeHandlers","updateMenuContainerOffset","controlResizeAndScrollEventListeners","controlSizeWatcher","updateWidth","setupControlResizeAndScrollEventListeners","setupControlSizeWatcher","removeControlResizeAndScrollEventListeners","removeControlSizeWatcher","$portalTarget","portalTargetRect","offsetY","left","round","transformVariations","transform","portalTargetClass","wrapperClass","portalTargetStyle","MenuPortalvue_type_script_lang_js_","teardown","createElement","appendChild","removeChild","innerHTML","$destroy","components_MenuPortalvue_type_script_lang_js_","MenuPortal_component","Treeselect_render","Treeselect_staticRenderFns","MenuPortal","Treeselectvue_type_script_lang_js_","components_Treeselectvue_type_script_lang_js_","Treeselect_component","VERSION","isToday","date","today","getDate","getMonth","getFullYear","isDynamicRouteActive","resolve","resolvedRoute","path","currentRoute","getCurrentInstance","reactive","$route","toRefs","$router","identity","block","menuClass","noCaret","splitButtonType","splitClass","splitHref","splitTo","splitVariant","toggleClass","toggleTag","toggleText","dropdownClasses","menuClasses","toggleClasses","commonProps","$buttonChildren","buttonContentDomProps","$split","btnProps","href","$toggle","mousedown","expand","shrink","expandChild","shrinkChild","cssText","unbind","scrollLeft","childNodes","activeDefined","_item","_typeof","MAX_SAFE_INTEGER","argsTag","funcTag","genTag","reIsUint","arrayEach","iteratee","baseTimes","overArg","arg","propertyIsEnumerable","nativeKeys","arrayLikeKeys","inherited","isArguments","skipIndexes","isIndex","baseEach","createBaseEach","baseForOwn","baseFor","createBaseFor","baseKeys","isPrototype","eachFunc","fromRight","collection","isArrayLike","iterable","keysFunc","Ctor","proto","isArrayLikeObject","isLength","isFunction","lodash_foreach","MAX_SAFE_INTEGER$1","argsTag$1","funcTag$1","genTag$1","reIsUint$1","baseTimes$1","overArg$1","objectProto$1","hasOwnProperty$1","objectToString$1","propertyIsEnumerable$1","nativeKeys$1","nonEnumShadows","arrayLikeKeys$1","isArray$1","isArguments$1","isIndex$1","assignValue","objValue","eq","baseKeys$1","isPrototype$1","baseRest","otherArgs","copyObject","customizer","createAssigner","assigner","sources","guard","isIterateeCall","isObject$1","isArrayLike$1","isArrayLikeObject$1","isLength$1","isFunction$1","isObjectLike$1","keys$1","lodash_assign","commonjsGlobal","globalThis","createCommonjsModule","lodash_clonedeep","LARGE_ARRAY_SIZE","HASH_UNDEFINED","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reRegExpChar","reFlags","reIsHostCtor","cloneableTags","freeExports","freeModule","moduleExports","addMapEntry","pair","addSetEntry","arrayPush","values","arrayReduce","accumulator","initAccum","isHostObject","mapToArray","setToArray","arrayProto","funcProto","coreJsData","maskSrcKey","uid","exec","IE_PROTO","funcToString","reIsNative","RegExp","Buffer","Uint8Array","getPrototype","objectCreate","nativeGetSymbols","nativeIsBuffer","isBuffer","DataView","getNative","Map","Promise","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","entries","hashClear","__data__","hashDelete","has","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","lastIndex","pop","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","cache","pairs","baseAssign","baseClone","isDeep","isFull","stack","isArr","initCloneArray","copyArray","getTag","isFunc","cloneBuffer","initCloneObject","copySymbols","initCloneByTag","stacked","getAllKeys","subValue","baseCreate","baseGetAllKeys","symbolsFunc","baseIsNative","isMasked","pattern","buffer","cloneArrayBuffer","arrayBuffer","byteLength","cloneDataView","dataView","byteOffset","cloneMap","cloneFunc","cloneRegExp","regexp","cloneSet","cloneSymbol","symbol","cloneTypedArray","typedArray","getSymbols","isKeyable","stubArray","cloneDeep","ArrayBuffer","ctorString","stubFalse","lodash_filter","UNORDERED_COMPARE_FLAG","PARTIAL_COMPARE_FLAG","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","typedArrayTags","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arrayFilter","resIndex","arraySome","baseProperty","baseUnary","symbolToString","SetCache","setCacheAdd","setCacheHas","baseFilter","baseGet","isKey","castPath","toKey","baseHasIn","baseIsEqual","bitmask","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMatch","matchData","noCustomizer","srcValue","baseIsTypedArray","baseIteratee","baseMatchesProperty","baseMatches","getMatchData","matchesStrictComparable","isStrictComparable","hasIn","basePropertyDeep","baseToString","stringToPath","isPartial","arrLength","othLength","seen","arrValue","othValue","compared","othIndex","convert","objProps","objLength","othProps","skipCtor","objCtor","othCtor","hasPath","hasFunc","memoize","number","quote","resolver","memoized","Cache","lodash_isequal","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","asyncTag","proxyTag","cacheHas","isArg","isBuff","isType","baseIsArguments","isEqual","diacritics","diacriticless","searchChar","foundChar","indexChar","escapeRegExp","str","defaultType","format","filterPredicate","rowval","skipDiacritics","fromDropdown","rowValue","toLowerCase","compare","y","cook","script","lastPage","totalRecords","ofText","pageText","pageInfo","changePage","isNaN","template","isFunctionalTemplate","createInjector","createInjectorSSR","createInjectorShadow","__vue_script__","__vue_render__","_k","__vue_staticRenderFns__","__vue_inject_styles__","__vue_scope_id__","__vue_module_identifier__","__vue_is_functional_template__","__vue_component__","DEFAULT_ROWS_PER_PAGE_DROPDOWN","script$1","styleClass","rtl","customRowsPerPageDropdown","paginateDropdownAllowAll","nextText","prevText","rowsPerPageText","allText","prevPage","rowsPerPageOptions","handlePerPage","pagesCount","quotient","floor","paginatedInfo","nextIsPossible","prevIsPossible","pageNumber","emit","nextPage","previousPage","found","unshift","__vue_script__$1","__vue_render__$1","$$selectedVal","__vue_staticRenderFns__$1","__vue_inject_styles__$1","__vue_scope_id__$1","__vue_module_identifier__$1","__vue_is_functional_template__$1","__vue_component__$1","script$2","globalSearchTerm","showControlBar","searchEnabled","updateValue","entered","__vue_script__$2","__vue_render__$2","globalSearchPlaceholder","_t","__vue_staticRenderFns__$2","__vue_inject_styles__$2","__vue_scope_id__$2","__vue_module_identifier__$2","__vue_is_functional_template__$2","__vue_component__$2","script$3","populateInitialFilters","columnFilters","timer","hasFilterRow","col","filterOptions","isFilterable","isDropdown","filterDropdownItems","isDropdownObjects","isDropdownArray","getPlaceholder","updateFiltersOnEnter","updateFiltersImmediately","updateFiltersOnKeyup","updateFilters","updateSlotFilter","fieldToFilter","slotFilterField","formatValue","__vue_script__$3","__vue_render__$3","lineNumbers","selectable","hidden","__vue_staticRenderFns__$3","__vue_inject_styles__$3","__vue_scope_id__$3","__vue_module_identifier__$3","__vue_is_functional_template__$3","__vue_component__$3","DEFAULT_SORT_TYPE","getColumnFirstSortType","firstSortType","getCurrentPrimarySort","sortArray","getNextSort","currentSort","getIndex","primarySort","currentPrimarySort","secondarySort","script$4","allSelected","allSelectedIndeterminate","typedColumns","sortable","getClasses","tableRef","paginated","setColumnStyles","checkBoxThStyle","lineNumberThStyle","columnStyles","sorts","toggleSelectAll","isSortableColumn","isSortable","setInitialSort","getColumnSort","getHeaderClasses","classes","filterRows","getWidthStyle","dom","cellStyle","colStyles","skip","cell","rows","cells","minWidth","maxWidth","getColumnStyle","styleObject","__vue_script__$4","__vue_render__$4","__vue_staticRenderFns__$4","__vue_inject_styles__$4","__vue_scope_id__$4","__vue_module_identifier__$4","__vue_is_functional_template__$4","__vue_component__$4","script$5","headerRow","selectAllByGroup","collapsable","collectFormatted","fullColspan","groupIndex","groupChildObject","vgtSelected","columnCollapsable","currentIndex","toggleSelectGroup","__vue_script__$5","__vue_render__$5","vgtIsExpanded","__vue_staticRenderFns__$5","__vue_inject_styles__$5","__vue_scope_id__$5","__vue_module_identifier__$5","__vue_is_functional_template__$5","__vue_component__$5","toDate","argument","argStr","getTime","Error","dirtyNumber","ceil","addMilliseconds","dirtyDate","dirtyAmount","timestamp","amount","MILLISECONDS_IN_MINUTE","getTimezoneOffsetInMilliseconds","baseTimezoneOffset","getTimezoneOffset","setSeconds","millisecondsPartOfTimezoneOffset","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","diff","isValid","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","token","addSuffix","comparison","buildFormatLongFn","dirtyOptions","defaultWidth","formats","dateFormats","full","long","medium","short","timeFormats","dateTimeFormats","formatLong","dateTime","formatRelativeLocale","lastWeek","yesterday","tomorrow","nextWeek","formatRelative","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","eraValues","narrow","abbreviated","wide","quarterValues","monthValues","dayValues","dayPeriodValues","am","pm","midnight","noon","morning","afternoon","evening","night","formattingDayPeriodValues","ordinalNumber","_dirtyOptions","rem100","era","quarter","month","day","dayPeriod","buildMatchPatternFn","dirtyString","matchResult","matchPattern","matchedString","parseResult","parsePattern","valueCallback","rest","buildMatchFn","matchPatterns","defaultMatchWidth","parsePatterns","defaultParseWidth","findIndex","findKey","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","any","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","locale","weekStartsOn","firstWeekContainsDate","subMilliseconds","addLeadingZeros","targetLength","output","abs","formatters","signedYear","getUTCFullYear","year","M","getUTCMonth","getUTCDate","dayPeriodEnumValue","getUTCHours","toUpperCase","H","getUTCMinutes","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","fractionalSeconds","pow","MILLISECONDS_IN_DAY","getUTCDayOfYear","setUTCMonth","setUTCHours","startOfYearTimestamp","difference","startOfUTCISOWeek","getUTCDay","setUTCDate","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","RangeError","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","MILLISECONDS_IN_WEEK$1","getUTCWeek","dayPeriodEnum","formatters$1","G","unit","Y","signedWeekYear","weekYear","twoDigitYear","R","isoWeekYear","u","Q","q","L","w","week","I","isoWeek","D","dayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","B","K","k","X","_localize","originalDate","_originalDate","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","z","T","dirtyDelimiter","absOffset","minutes","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","dateTimeFormat","datePattern","timePattern","longFormatters","P","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","locale$1","utcDate","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","assign$1","dirtyObject","setUTCDay","dirtyDay","currentDay","dayIndex","setUTCISODay","setUTCISOWeek","dirtyISOWeek","setUTCWeek","dirtyWeek","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE$1","MILLISECONDS_IN_SECOND","numericPatterns","hour23h","hour24h","hour11h","hour12h","minute","second","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","basicOptionalMinutes","basic","basicOptionalSeconds","extended","extendedOptionalSeconds","parseNumericPattern","parseTimezonePattern","seconds","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","parsers","priority","parse","flags","incompatibleTokens","isTwoDigitYear","validate","normalizedTwoDigitYear","_match","_flags","firstWeekOfYear","isLeapYear","wholeWeekDays","isPM","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","timestampIsSet","_token","TIMEZONE_UNIT_PRIORITY","formattingTokensRegExp$1","longFormattingTokensRegExp$1","escapedStringRegExp$1","doubleQuoteRegExp$1","notWhitespaceRegExp","unescapedLatinCharacterRegExp$1","dirtyDateString","dirtyFormatString","dirtyBackupDate","dateString","formatString","subFnOptions","setters","dateToSystemTimezone","tokens","usedTokens","parser","incompatibleToken","usedToken","fullToken","cleanEscapedString$1","uniquePrioritySetters","setter","setterArray","convertedDate","setFullYear","setHours","isRight","dateInputFormat","v","dateOutputFormat","date$1","freeze","parseFloat","number$1","decimal","toFixed","decimal$1","percentage","percentage$1","_boolean","_boolean$1","dataTypes","coreDataTypes","compName","script$6","fixedHeader","theme","totalRows","responsive","rowStyleClass","compactMode","groupOptions","rowKey","selectOptions","selectionInfoClass","selectionText","clearSelectionText","disableSelectInfo","sortOptions","initialSortBy","paginationOptions","perPageDropdown","dropdownAllowAll","searchOptions","searchFn","tableLoading","selectOnCheckboxOnly","selectAllByPage","maintainExpanded","expandedRowKeys","defaultSortBy","searchTrigger","externalSearchQuery","searchPlaceholder","searchSkipDiacritics","paginate","paginateOnTop","paginateOnBottom","paginationMode","filteredRows","forceSearch","sortChanged","initializeSelect","initializePagination","handleSearch","initializeSearch","initializeSort","selectedRows","tableStyles","tableStyleClasses","hasFooterSlot","wrapperStyles","rowKeyField","hasHeaderRowTemplate","showEmptySlot","selectedRowCount","selectedPageRowsCount","totalPageRowCount","totalRowCount","selectionInfo","selectedPageRows","processedRows","r1","r2","originalIndex","groupHeaderOnTop","headerPosition","groupHeaderOnBottom","wrapStyleClasses","globalSearchAllowed","computedRows","allRows","globalSearchDisabled","foundMatch","rowCount","vgt_header_id","newHeaderRow","cRows","xRow","yRow","sortValue","getColumnForField","xvalue","collect","yvalue","sortFn","typeDef","paginatedRows","childRows","_paginatedRows","pageStart","pageEnd","reconstructedRows","flatRow","handleExpanded","hRow","vgt_id","originalRows","nestedRows","handleGrouped","hasRowClickListener","$listeners","toggleExpand","expandAll","collapseAll","resetTable","emitSelectedRows","unselectAllInternal","forceAll","paginationWidget","paginationBottom","paginationTop","pageChangedEvent","pagination","perPageChangedEvent","changeSort","onCheckboxClicked","pageIndex","onRowDoubleClicked","onRowClicked","onRowAuxClicked","onCellClicked","rowIndex","onMouseenter","onMouseleave","searchTableOnEnter","searchTableOnKeyUp","dig","splitter","headerField","formatFn","isHeaderRow","_this$typedColumns$in","custom","fromFilter","_loop","newChildren","filterFn","getCurrentIndex","getRowStyleClass","rowStyleClasses","childRow","_this$paginationOptio","nextLabel","prevLabel","rowsPerPageLabel","ofLabel","pageLabel","allLabel","setCurrentPage","_perPageDropdown","_this$searchOptions","_this$sortOptions","hasField","_this$selectOptions","__vue_script__$6","__vue_render__$6","slot","table","__vue_staticRenderFns__$6","__vue_inject_styles__$6","__vue_scope_id__$6","__vue_module_identifier__$6","__vue_is_functional_template__$6","__vue_component__$6","VueGoodTablePlugin","install","Vue","use"],"mappings":"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","file":"js/chunk-b6aa562e.b77f688e.js","sourcesContent":["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","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n id: makeProp(PROP_TYPE_STRING),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n novalidate: makeProp(PROP_TYPE_BOOLEAN, false),\n validated: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM); // --- Main component ---\n// @vue/component\n\nexport var BForm = /*#__PURE__*/Vue.extend({\n name: NAME_FORM,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('form', mergeData(data, {\n class: {\n 'form-inline': props.inline,\n 'was-validated': props.validated\n },\n attrs: {\n id: props.id,\n novalidate: props.novalidate\n }\n }), children);\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","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&lang=scss&\"","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var before = require('./before');\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 */\nfunction once(func) {\n return before(2, func);\n}\n\nmodule.exports = once;\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","module.exports = isPromise;\nmodule.exports.default = isPromise;\n\nfunction isPromise(obj) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/** 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","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","'use strict';\n\nfunction fuzzysearch (needle, haystack) {\n var tlen = haystack.length;\n var qlen = needle.length;\n if (qlen > tlen) {\n return false;\n }\n if (qlen === tlen) {\n return needle === haystack;\n }\n outer: for (var i = 0, j = 0; i < qlen; i++) {\n var nch = needle.charCodeAt(i);\n while (j < tlen) {\n if (haystack.charCodeAt(j++) === nch) {\n continue outer;\n }\n }\n return false;\n }\n return true;\n}\n\nmodule.exports = fuzzysearch;\n","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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"height\":\"inherit\"}},[_c('div',{staticClass:\"body-content-overlay\",class:{ show: _vm.isShowLeftSidebar || _vm.isShowDonViThongKeSidebar },on:{\"click\":function($event){_vm.isShowLeftSidebar = _vm.isShowDonViThongKeSidebar = false}}}),_c('left-sidebar',{attrs:{\"parent-id\":_vm.code,\"is-show-left-sidebar\":_vm.isShowLeftSidebar,\"form-data\":_vm.editData},on:{\"update:isShowLeftSidebar\":function($event){_vm.isShowLeftSidebar=$event},\"update:is-show-left-sidebar\":function($event){_vm.isShowLeftSidebar=$event},\"refetch-data\":_vm.reLoadDataTable}}),_c('don-vi-thong-ke-left-sidebar',{attrs:{\"parent-id\":_vm.code,\"is-show-left-sidebar\":_vm.isShowDonViThongKeSidebar,\"form-data\":_vm.dataTable},on:{\"update:isShowLeftSidebar\":function($event){_vm.isShowDonViThongKeSidebar=$event},\"update:is-show-left-sidebar\":function($event){_vm.isShowDonViThongKeSidebar=$event},\"refetch-data\":_vm.reLoadDataTable}}),(_vm.code)?_c('div',[_c('don-vi-thong-ke-data-table',{attrs:{\"code\":_vm.code,\"data-table\":_vm.dataTable,\"is-loaded\":_vm.dataTableIsLoaded},on:{\"show-edit\":_vm.showDonViThongKeSidebar,\"remove-item\":_vm.removeItem}})],1):_c('div',[_c('data-table',{attrs:{\"data-table\":_vm.dataTable,\"is-loaded\":_vm.dataTableIsLoaded},on:{\"show-edit\":_vm.showLeftSlidebar,\"remove-item\":_vm.removeItem}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.items.length > 0)?_c('b-row',{staticClass:\"content-header\"},[_c('b-col',{staticClass:\"content-header-left mb-2\",attrs:{\"cols\":\"12\",\"md\":\"9\"}},[_c('b-row',{staticClass:\"breadcrumbs-top\"},[_c('b-col',{attrs:{\"cols\":\"12\"}},[(_vm.title)?_c('h2',{staticClass:\"content-header-title float-left pr-1 mb-0\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]):_vm._e(),_c('div',{staticClass:\"breadcrumb-wrapper\"},[_c('b-breadcrumb',[_c('b-breadcrumb-item',{attrs:{\"to\":\"/admin/common/diagioihanhchinh\"}},[_c('feather-icon',{staticClass:\"align-text-top\",attrs:{\"icon\":\"HomeIcon\",\"size\":\"16\"}})],1),_vm._l((_vm.items),function(item){return _c('b-breadcrumb-item',{key:item.text,attrs:{\"active\":item.active,\"to\":item.to}},[_vm._v(\" \"+_vm._s(item.text)+\" \")])})],2)],1)])],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n 0\"\r\n class=\"content-header\">\r\n\r\n \r\n \r\n \r\n \r\n \r\n {{ title }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ item.text }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./breadcrumb.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./breadcrumb.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./breadcrumb.vue?vue&type=template&id=d35f5b8e&\"\nimport script from \"./breadcrumb.vue?vue&type=script&lang=js&\"\nexport * from \"./breadcrumb.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',[_c('b-card-body',{staticClass:\"m-0, p-0\"},[_c('div',{staticClass:\"custom-search d-flex justify-content-end\"},[_c('b-form-group',[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('label',{staticClass:\"mr-1\",staticStyle:{\"width\":\"100px\"}},[_vm._v(\"Tìm kiếm\")]),_c('b-form-input',{staticClass:\"d-inline-block\",attrs:{\"placeholder\":\"Tìm kiếm\",\"type\":\"text\"},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}})],1)]),_c('b-form-group',{staticClass:\"ml-1\",attrs:{\"disabled\":_vm.isLoaded}},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(113, 102, 240, 0.15)'),expression:\"'rgba(113, 102, 240, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.$emit('show-edit', {})}}},[_c('feather-icon',{attrs:{\"icon\":\"PlusIcon\"}})],1)],1)],1)]),_c('vue-good-table',{attrs:{\"columns\":_vm.columns,\"rows\":_vm.dataTable,\"search-options\":{\n enabled: true,\n externalQuery: _vm.searchTerm,\n },\"pagination-options\":{\n enabled: true,\n perPage: _vm.pageLength,\n }},scopedSlots:_vm._u([{key:\"table-row\",fn:function(props){return [(props.column.field === 'name')?_c('span',{staticClass:\"text-nowrap\"},[_c('span',{staticClass:\"text-nowrap\"},[_vm._v(_vm._s(props.row.name))])]):(props.column.field === 'action')?_c('span',[_c('span',[_c('b-button',{staticClass:\"btn-icon\",attrs:{\"to\":{\n name: 'danhmuc-donvithongke-code',\n params: { code: props.row.code },\n },\"variant\":\"flat-success\"}},[_c('feather-icon',{attrs:{\"icon\":\"SendIcon\",\"size\":\"20\"}})],1),_c('b-dropdown',{attrs:{\"variant\":\"link\",\"toggle-class\":\"text-decoration-none\",\"no-caret\":\"\"},scopedSlots:_vm._u([{key:\"button-content\",fn:function(){return [_c('feather-icon',{staticClass:\"text-body align-middle\",attrs:{\"icon\":\"MoreVerticalIcon\",\"size\":\"16\"}})]},proxy:true}],null,true)},[_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.showEdit(props.row)}}},[_c('feather-icon',{staticClass:\"mr-50\",attrs:{\"icon\":\"Edit2Icon\"}}),_c('span',[_vm._v(\"Sửa\")])],1),_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.showConfirmDeleteModule(props.row)}}},[_c('feather-icon',{staticClass:\"mr-50\",attrs:{\"icon\":\"TrashIcon\"}}),_c('span',[_vm._v(\"Xóa\")])],1)],1)],1)]):_c('span',[_vm._v(\" \"+_vm._s(props.formattedRow[props.column.field])+\" \")])]}},{key:\"pagination-bottom\",fn:function(props){return [_c('div',{staticClass:\"d-flex justify-content-between flex-wrap\"},[_c('div',{staticClass:\"d-flex align-items-center mb-0 mt-1\"},[_c('span',{staticClass:\"text-nowrap\"},[_vm._v(\" Hiển thị 1 đến \")]),_c('b-form-select',{staticClass:\"mx-1\",attrs:{\"options\":['10', '20', '50', '100', '500']},on:{\"input\":function (value) { return props.perPageChanged({ currentPerPage: value }); }},model:{value:(_vm.pageLength),callback:function ($$v) {_vm.pageLength=$$v},expression:\"pageLength\"}}),_c('span',{staticClass:\"text-nowrap\"},[_vm._v(\" của \"+_vm._s(props.total)+\" dòng \")])],1),_c('div',[_c('b-pagination',{staticClass:\"mt-1 mb-0\",attrs:{\"value\":1,\"total-rows\":props.total,\"per-page\":_vm.pageLength,\"first-number\":\"\",\"last-number\":\"\",\"align\":\"right\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},on:{\"input\":function (value) { return props.pageChanged({ currentPage: value }); }},scopedSlots:_vm._u([{key:\"prev-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"18\"}})]},proxy:true},{key:\"next-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"18\"}})]},proxy:true}],null,true)})],1)])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n \r\n \r\n \r\n \r\n \r\n Tìm kiếm\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {{ props.row.name }}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sửa\r\n \r\n \r\n \r\n Xóa\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{ props.formattedRow[props.column.field] }}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Hiển thị 1 đến \r\n props.perPageChanged({ currentPerPage: value })\r\n \"\r\n />\r\n của {{ props.total }} dòng \r\n \r\n \r\n props.pageChanged({ currentPage: value })\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DataTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DataTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DataTable.vue?vue&type=template&id=278daac0&\"\nimport script from \"./DataTable.vue?vue&type=script&lang=js&\"\nexport * from \"./DataTable.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',[_c('b-card-body',{staticClass:\"m-0, p-0\"},[_c('div',{staticClass:\"custom-search d-flex justify-content-between align-items-center\"},[(_vm.info)?_c('h5',{staticClass:\"text-primary\"},[_vm._v(_vm._s(_vm.info.name))]):_vm._e(),_c('div',{staticClass:\"d-flex align-items-center\"},[_c('b-form-group',[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('label',{staticClass:\"mr-1\",staticStyle:{\"width\":\"100px\"}},[_vm._v(\"Tìm kiếm\")]),_c('b-form-input',{staticClass:\"d-inline-block\",attrs:{\"placeholder\":\"Tìm kiếm\",\"type\":\"text\"},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}})],1)]),_c('b-form-group',{staticClass:\"ml-1\",attrs:{\"disabled\":_vm.isLoaded}},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(113, 102, 240, 0.15)'),expression:\"'rgba(113, 102, 240, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":\"primary\",\"size\":\"sm\"},on:{\"click\":function($event){return _vm.$emit('show-edit', {})}}},[_c('feather-icon',{attrs:{\"icon\":\"PlusIcon\"}})],1)],1)],1)])]),_c('vue-good-table',{attrs:{\"columns\":_vm.columns,\"rows\":_vm.dataTable,\"search-options\":{\n enabled: true,\n externalQuery: _vm.searchTerm,\n },\"pagination-options\":{\n enabled: true,\n perPage: _vm.pageLength,\n }},scopedSlots:_vm._u([{key:\"table-row\",fn:function(props){return [(props.column.field === 'name')?_c('span',{staticClass:\"text-nowrap\"},[_c('span',{staticClass:\"text-nowrap\"},[_vm._v(_vm._s(props.row.ten))])]):(props.column.field === 'action')?_c('span',[_c('span',[_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"flat-danger\",\"size\":\"sm\"},on:{\"click\":function($event){return _vm.showConfirmDeleteModule(props.row)}}},[_c('feather-icon',{attrs:{\"icon\":\"TrashIcon\",\"size\":\"20\"}})],1)],1)]):_c('span',[_vm._v(\" \"+_vm._s(props.formattedRow[props.column.field])+\" \")])]}},{key:\"pagination-bottom\",fn:function(props){return [_c('div',{staticClass:\"d-flex justify-content-between flex-wrap\"},[_c('div',{staticClass:\"d-flex align-items-center mb-0 mt-1\"},[_c('span',{staticClass:\"text-nowrap\"},[_vm._v(\" Hiển thị 1 đến \")]),_c('b-form-select',{staticClass:\"mx-1\",attrs:{\"options\":['10', '20', '50', '100', '500']},on:{\"input\":function (value) { return props.perPageChanged({ currentPerPage: value }); }},model:{value:(_vm.pageLength),callback:function ($$v) {_vm.pageLength=$$v},expression:\"pageLength\"}}),_c('span',{staticClass:\"text-nowrap\"},[_vm._v(\" của \"+_vm._s(props.total)+\" dòng \")])],1),_c('div',[_c('b-pagination',{staticClass:\"mt-1 mb-0\",attrs:{\"value\":1,\"total-rows\":props.total,\"per-page\":_vm.pageLength,\"first-number\":\"\",\"last-number\":\"\",\"align\":\"right\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},on:{\"input\":function (value) { return props.pageChanged({ currentPage: value }); }},scopedSlots:_vm._u([{key:\"prev-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"18\"}})]},proxy:true},{key:\"next-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"18\"}})]},proxy:true}],null,true)})],1)])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable */\r\nimport BaseService from \"../../../BaseService\";\r\n\r\nconst { http } = BaseService();\r\n\r\n// API\r\nexport function CapThongKeGetAll(postdata) {\r\n const data = { ...postdata };\r\n return http({\r\n url: \"CapThongKe/getAll\",\r\n method: \"get\",\r\n data,\r\n });\r\n}\r\n\r\nexport function CapThongKeCreate(postdata) {\r\n const data = Object.assign({}, postdata);\r\n return http({\r\n url: \"CapThongKe/create\",\r\n method: \"post\",\r\n data,\r\n });\r\n}\r\n\r\nexport function CapThongKeUpdate(postdata) {\r\n const data = Object.assign({}, postdata);\r\n return http({\r\n url: \"CapThongKe/update\",\r\n method: \"post\",\r\n data,\r\n });\r\n}\r\n\r\nexport function CapThongKeDelete(postdata) {\r\n const data = Object.assign({}, postdata);\r\n return http({\r\n url: \"CapThongKe/delete\",\r\n method: \"post\",\r\n data,\r\n });\r\n}\r\n\r\nexport function CapThongKeGetById(postdata) {\r\n return http({\r\n url: \"CapThongKe/get-by-id/\" + postdata,\r\n method: \"get\",\r\n });\r\n}\r\nexport function CapThongKeGetByCode(postdata) {\r\n return http({\r\n url: \"CapThongKe/get-by-code/\" + postdata,\r\n method: \"get\",\r\n });\r\n}\r\n\r\nexport function DonViThongKeGetByCode(postdata) {\r\n return http({\r\n url: \"DonViThongKe/get-by-code/\" + postdata,\r\n method: \"get\",\r\n });\r\n}\r\n\r\nexport function DonViThongKeCreate(postdata) {\r\n const data = Object.assign({}, postdata);\r\n return http({\r\n url: \"DonViThongKe/create\",\r\n method: \"post\",\r\n data,\r\n });\r\n}\r\nexport function DonViThongKeDelete(postdata) {\r\n const data = Object.assign({}, postdata);\r\n return http({\r\n url: \"DonViThongKe/delete\",\r\n method: \"post\",\r\n data,\r\n });\r\n}\r\n","\r\n\r\n \r\n \r\n \r\n {{ info.name }}\r\n \r\n \r\n \r\n Tìm kiếm\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {{ props.row.ten }}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{ props.formattedRow[props.column.field] }}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Hiển thị 1 đến \r\n props.perPageChanged({ currentPerPage: value })\r\n \"\r\n />\r\n của {{ props.total }} dòng \r\n \r\n \r\n props.pageChanged({ currentPage: value })\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DonViThongKeDataTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DonViThongKeDataTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DonViThongKeDataTable.vue?vue&type=template&id=2e4ac362&\"\nimport script from \"./DonViThongKeDataTable.vue?vue&type=script&lang=js&\"\nexport * from \"./DonViThongKeDataTable.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-sidebar',{attrs:{\"id\":\"add-new-user-sidebar\",\"visible\":_vm.isShowLeftSidebar,\"bg-variant\":\"white\",\"sidebar-class\":\"sidebar-lg\",\"shadow\":\"\",\"backdrop\":\"\",\"no-header\":\"\",\"right\":\"\"},on:{\"hidden\":_vm.resetForm,\"change\":function (val) { return _vm.$emit('update:is-show-left-sidebar', val); }},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar hide = ref.hide;\nreturn [_c('div',{staticClass:\"d-flex justify-content-between align-items-center content-sidebar-header px-2 py-1\"},[_c('h5',{staticClass:\"mb-0\"},[_vm._v(\"Thông tin đơn vị\")]),_c('feather-icon',{staticClass:\"ml-1 cursor-pointer\",attrs:{\"icon\":\"XIcon\",\"size\":\"16\"},on:{\"click\":hide}})],1),_c('validation-observer',{ref:\"refFormObserver\",scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar handleSubmit = ref.handleSubmit;\nreturn [_c('b-form',{staticClass:\"p-2\",on:{\"submit\":function($event){$event.preventDefault();return handleSubmit(_vm.onSubmit)},\"reset\":function($event){$event.preventDefault();return _vm.resetForm.apply(null, arguments)}}},[_c('validation-provider',{attrs:{\"name\":\"Mã\",\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function(validationContext){return [_c('label',{staticStyle:{\"font-size\":\"13px\"},attrs:{\"label-for\":\"Code\"}},[_vm._v(\"Mã \"),_c('span',{staticStyle:{\"color\":\"red\"}},[_vm._v(\"*\")])]),_c('b-form-group',[_c('b-form-input',{attrs:{\"id\":\"Code\",\"state\":_vm.getValidationState(validationContext),\"trim\":\"\",\"disabled\":_vm.isWait,\"placeholder\":\"Mã\"},model:{value:(_vm.formData.code),callback:function ($$v) {_vm.$set(_vm.formData, \"code\", $$v)},expression:\"formData.code\"}}),_c('b-form-invalid-feedback',[_vm._v(\" \"+_vm._s(validationContext.errors[0])+\" \")])],1)]}}],null,true)}),_c('validation-provider',{attrs:{\"name\":\"Tên\",\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function(validationContext){return [_c('label',{staticStyle:{\"font-size\":\"13px\"},attrs:{\"label-for\":\"Name\"}},[_vm._v(\"Tên \"),_c('span',{staticStyle:{\"color\":\"red\"}},[_vm._v(\"*\")])]),_c('b-form-group',[_c('b-form-input',{attrs:{\"id\":\"Name\",\"state\":_vm.getValidationState(validationContext),\"disabled\":_vm.isWait,\"placeholder\":\"Tên\"},model:{value:(_vm.formData.name),callback:function ($$v) {_vm.$set(_vm.formData, \"name\", $$v)},expression:\"formData.name\"}}),_c('b-form-invalid-feedback',[_vm._v(\" \"+_vm._s(validationContext.errors[0])+\" \")])],1)]}}],null,true)}),_c('validation-provider',{attrs:{\"name\":\"Description\",\"rules\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(validationContext){return [_c('b-form-group',{attrs:{\"label\":\"Mô tả\",\"label-for\":\"Description\"}},[_c('b-form-input',{attrs:{\"id\":\"Description\",\"state\":_vm.getValidationState(validationContext),\"disabled\":_vm.isWait,\"placeholder\":\"Mô tả\"},model:{value:(_vm.formData.description),callback:function ($$v) {_vm.$set(_vm.formData, \"description\", $$v)},expression:\"formData.description\"}}),_c('b-form-invalid-feedback',[_vm._v(\" \"+_vm._s(validationContext.errors[0])+\" \")])],1)]}}],null,true)}),_c('div',{staticClass:\"d-flex mt-2\"},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],staticClass:\"mr-2\",attrs:{\"variant\":\"primary\",\"disabled\":_vm.isWait,\"type\":\"submit\"}},[_vm._v(\" Lưu \")]),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(186, 191, 199, 0.15)'),expression:\"'rgba(186, 191, 199, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"type\":\"button\",\"variant\":\"outline-secondary\",\"disabled\":_vm.isWait},on:{\"click\":hide}},[_vm._v(\" Đóng \")])],1)],1)]}}],null,true)})]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n $emit('update:is-show-left-sidebar', val)\"\r\n >\r\n \r\n \r\n \r\n Thông tin đơn vị\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Mã *\r\n \r\n \r\n\r\n \r\n {{ validationContext.errors[0] }}\r\n \r\n \r\n \r\n\r\n \r\n Tên *\r\n \r\n \r\n\r\n \r\n {{ validationContext.errors[0] }}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n {{ validationContext.errors[0] }}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Lưu\r\n \r\n \r\n Đóng\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LeftSidebar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LeftSidebar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LeftSidebar.vue?vue&type=template&id=6ccd265a&\"\nimport script from \"./LeftSidebar.vue?vue&type=script&lang=js&\"\nexport * from \"./LeftSidebar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LeftSidebar.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-sidebar',{attrs:{\"id\":\"add-new-user-sidebar\",\"visible\":_vm.isShowLeftSidebar,\"bg-variant\":\"white\",\"sidebar-class\":\"sidebar-lg\",\"shadow\":\"\",\"backdrop\":\"\",\"no-header\":\"\",\"right\":\"\"},on:{\"hidden\":_vm.resetForm,\"change\":function (val) { return _vm.$emit('update:is-show-left-sidebar', val); }},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar hide = ref.hide;\nreturn [_c('div',{staticClass:\"d-flex justify-content-between align-items-center content-sidebar-header px-2 py-1\"},[_c('h5',{staticClass:\"mb-0\"},[_vm._v(\"Thông tin đơn vị\")]),_c('feather-icon',{staticClass:\"ml-1 cursor-pointer\",attrs:{\"icon\":\"XIcon\",\"size\":\"16\"},on:{\"click\":hide}})],1),_c('validation-observer',{ref:\"refFormObserver\",scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar handleSubmit = ref.handleSubmit;\nreturn [_c('b-form',{staticClass:\"p-2\",on:{\"submit\":function($event){$event.preventDefault();return handleSubmit(_vm.onSubmit)},\"reset\":function($event){$event.preventDefault();return _vm.resetForm.apply(null, arguments)}}},[_c('validation-provider',{attrs:{\"name\":\"Tên\",\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function(validationContext){return [_c('label',{staticStyle:{\"font-size\":\"13px\"},attrs:{\"label-for\":\"Name\"}},[_vm._v(\"Tên \"),_c('span',{staticStyle:{\"color\":\"red\"}},[_vm._v(\"*\")])]),_c('b-form-group',[_c('treeselect',{attrs:{\"options\":_vm.listDonVi,\"value-format\":\"object\",\"flat\":true,\"searchable\":true,\"show-count\":true,\"default-expand-level\":1,\"normalizer\":_vm.normalizer,\"placeholder\":\"Chọn đơn vị\",\"multiple\":true},on:{\"select\":_vm.formatDonViUsings,\"deselect\":_vm.formatRemoveDonViUsing},model:{value:(_vm.data),callback:function ($$v) {_vm.data=$$v},expression:\"data\"}}),_c('b-form-invalid-feedback',[_vm._v(\" \"+_vm._s(validationContext.errors[0])+\" \")])],1)]}}],null,true)}),_c('div',{staticClass:\"d-flex mt-2\"},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],staticClass:\"mr-2\",attrs:{\"variant\":\"primary\",\"disabled\":_vm.isWait,\"type\":\"submit\"}},[_vm._v(\" Lưu \")]),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(186, 191, 199, 0.15)'),expression:\"'rgba(186, 191, 199, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"type\":\"button\",\"variant\":\"outline-secondary\",\"disabled\":_vm.isWait},on:{\"click\":hide}},[_vm._v(\" Hủy \")])],1)],1)]}}],null,true)})]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n $emit('update:is-show-left-sidebar', val)\"\r\n >\r\n \r\n \r\n \r\n Thông tin đơn vị\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Tên *\r\n \r\n \r\n\r\n \r\n {{ validationContext.errors[0] }}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Lưu\r\n \r\n \r\n Hủy\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DonViThongKeLeftSidebar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DonViThongKeLeftSidebar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DonViThongKeLeftSidebar.vue?vue&type=template&id=8bf3f808&\"\nimport script from \"./DonViThongKeLeftSidebar.vue?vue&type=script&lang=js&\"\nexport * from \"./DonViThongKeLeftSidebar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DonViThongKeLeftSidebar.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\r\nimport {\r\n CapThongKeGetAll,\r\n DonViThongKeGetByCode,\r\n} from \"@/services/api/HoSoCanBoCongChuc/DanhMuc/DonViThongKeService\";\r\n\r\nimport { ref, watch, computed } from \"@vue/composition-api\";\r\nimport store from \"@/store\";\r\n\r\n// Notification\r\nimport { useToast } from \"vue-toastification/composition\";\r\nimport { useRouter } from \"@core/utils/utils\";\r\nimport ToastificationContent from \"@core/components/toastification/ToastificationContent.vue\";\r\n\r\nexport default function useDonViService() {\r\n const toast = useToast();\r\n const { route, router } = useRouter();\r\n const donViGetInfo = (ctx, callback) => {\r\n if (ctx == undefined || ctx == null) {\r\n CapThongKeGetAll().then((response) => {\r\n // console.log(\"ctx\", response);\r\n if (!response.isError) {\r\n callback(response.data);\r\n } else {\r\n router.replace(\"/admin/donvi/dashboard\").then(() => {\r\n toast({\r\n component: ToastificationContent,\r\n props: {\r\n title: \"Error: Go To Common Dashboard\",\r\n icon: \"AlertTriangleIcon\",\r\n variant: \"danger\",\r\n text: response.message,\r\n },\r\n });\r\n });\r\n }\r\n });\r\n } else {\r\n DonViThongKeGetByCode(ctx).then((response) => {\r\n // console.log(\"ctx\", response);\r\n if (!response.isError) {\r\n callback(response.data);\r\n } else {\r\n router.replace(\"/admin/donvi/dashboard\").then(() => {\r\n toast({\r\n component: ToastificationContent,\r\n props: {\r\n title: \"Error: Go To Common Dashboard\",\r\n icon: \"AlertTriangleIcon\",\r\n variant: \"danger\",\r\n text: response.message,\r\n },\r\n });\r\n });\r\n }\r\n });\r\n }\r\n };\r\n return {\r\n donViGetInfo,\r\n };\r\n}\r\n","\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=fcd38010&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style1 from \"./index.vue?vue&type=style&index=1&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fcd38010\",\n null\n \n)\n\nexport default component.exports","var root = require('./_root');\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 */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\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 */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { ref, nextTick } from '@vue/composition-api'\r\n\r\n// ===========================================================\r\n// ! This is coupled with \"veeValidate\" plugin\r\n// ===========================================================\r\n\r\nexport default function formValidation(resetFormData, clearFormData = () => {}) {\r\n // ------------------------------------------------\r\n // refFormObserver\r\n // ! This is for veeValidate Observer\r\n // * Used for veeValidate form observer\r\n // ------------------------------------------------\r\n const refFormObserver = ref(null)\r\n\r\n // ------------------------------------------------\r\n // resetObserver\r\n // ! This function is coupled with veeValidate\r\n // * It resets form observer\r\n // ------------------------------------------------\r\n const resetObserver = () => {\r\n refFormObserver.value.reset()\r\n }\r\n\r\n // ------------------------------------------------\r\n // getValidationState\r\n // ! This function is coupled with veeValidate\r\n // * It returns true/false based on validation\r\n // ------------------------------------------------\r\n // eslint-disable-next-line object-curly-newline\r\n const getValidationState = ({ dirty, validated, required: fieldRequired, changed, valid = null }) => {\r\n const result = dirty || validated ? valid : null\r\n return !fieldRequired && !changed ? null : result\r\n }\r\n\r\n // ------------------------------------------------\r\n // resetForm\r\n // ! This function is coupled with veeValidate\r\n // * This uses resetFormData arg to reset form data\r\n // ------------------------------------------------\r\n const resetForm = () => {\r\n resetFormData()\r\n nextTick(() => {\r\n resetObserver()\r\n })\r\n }\r\n\r\n // ------------------------------------------------\r\n // clearForm\r\n // ! This function is coupled with veeValidate\r\n // * This uses clearFormData arg to reset form data\r\n // ------------------------------------------------\r\n const clearForm = () => {\r\n clearFormData()\r\n nextTick(() => {\r\n resetObserver()\r\n })\r\n }\r\n\r\n return {\r\n refFormObserver,\r\n resetObserver,\r\n getValidationState,\r\n resetForm,\r\n clearForm,\r\n }\r\n}\r\n","var toFinite = require('./toFinite');\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 */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\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 */\nfunction 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\nmodule.exports = toFinite;\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DonViThongKeLeftSidebar.vue?vue&type=style&index=0&lang=scss&\"","/**\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 */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/* eslint-disable */\r\nimport { initialAbility } from \"@/libs/acl/config\";\r\nimport BaseService from \"../../BaseService\";\r\n\r\nconst { http } = BaseService();\r\n\r\n// API\r\n\r\nexport function DonViGetList(postdata) {\r\n const data = { ...postdata };\r\n return http({\r\n url: \"DonVi/get-list-dv-by-id\",\r\n method: \"post\",\r\n data,\r\n });\r\n}\r\n\r\nexport function GetTreeDVSD(id) {\r\n // const data = { ...postdata };\r\n return http({\r\n url: \"DonVi/get-don-vi-su-dung/\" + id,\r\n method: \"get\",\r\n });\r\n}\r\n\r\nexport function GetTree() {\r\n // const data = { ...postdata };\r\n return http({\r\n url: \"DonVi/GetTree\",\r\n method: \"get\",\r\n });\r\n}\r\n\r\nexport function GetTreeAll() {\r\n // const data = { ...postdata };\r\n return http({\r\n url: \"DonVi/GetTreeAll\",\r\n method: \"get\",\r\n });\r\n}\r\n\r\nexport function GetTreeUserDonVi() {\r\n // const data = { ...postdata };\r\n return http({\r\n url: \"DonVi/GetTreeExceptUserDonVi\",\r\n method: \"get\",\r\n });\r\n}\r\n\r\nexport function GetById(data) {\r\n return http({\r\n url: \"DonVi/get-by-id/\" + data,\r\n method: \"get\",\r\n });\r\n}\r\n\r\nexport function DonViCreate(postdata) {\r\n const data = { ...postdata };\r\n return http({\r\n url: \"DonVi/Create\",\r\n method: \"post\",\r\n data,\r\n });\r\n}\r\n\r\nexport function DonViUpdate(postdata) {\r\n const data = { ...postdata };\r\n return http({\r\n url: \"DonVi/Update\",\r\n method: \"post\",\r\n data,\r\n });\r\n}\r\n\r\nexport function DonViDelete(postdata) {\r\n const data = { ...postdata };\r\n return http({\r\n url: \"DonVi/Delete\",\r\n method: \"post\",\r\n data,\r\n });\r\n}\r\n\r\n////////////////////////////////////////\r\n","import { makeModelMixin } from '../utils/model';\n\nvar _makeModelMixin = makeModelMixin('value'),\n mixin = _makeModelMixin.mixin,\n props = _makeModelMixin.props,\n prop = _makeModelMixin.prop,\n event = _makeModelMixin.event;\n\nexport { mixin as modelMixin, props, prop as MODEL_PROP_NAME, event as MODEL_EVENT_NAME };","import { Vue } from '../vue';\nimport { PROP_TYPE_ARRAY_OBJECT, PROP_TYPE_STRING } from '../constants/props';\nimport { get } from '../utils/get';\nimport { stripTags } from '../utils/html';\nimport { isArray, isPlainObject, isUndefined } from '../utils/inspect';\nimport { keys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { warn } from '../utils/warn'; // --- Constants ---\n\nvar OPTIONS_OBJECT_DEPRECATED_MSG = 'Setting prop \"options\" to an object is deprecated. Use the array format instead.'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n disabledField: makeProp(PROP_TYPE_STRING, 'disabled'),\n htmlField: makeProp(PROP_TYPE_STRING, 'html'),\n options: makeProp(PROP_TYPE_ARRAY_OBJECT, []),\n textField: makeProp(PROP_TYPE_STRING, 'text'),\n valueField: makeProp(PROP_TYPE_STRING, 'value')\n}, 'formOptionControls'); // --- Mixin ---\n// @vue/component\n\nexport var formOptionsMixin = Vue.extend({\n props: props,\n computed: {\n formOptions: function formOptions() {\n return this.normalizeOptions(this.options);\n }\n },\n methods: {\n normalizeOption: function normalizeOption(option) {\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n // When the option is an object, normalize it\n if (isPlainObject(option)) {\n var value = get(option, this.valueField);\n var text = get(option, this.textField);\n return {\n value: isUndefined(value) ? key || text : value,\n text: stripTags(String(isUndefined(text) ? key : text)),\n html: get(option, this.htmlField),\n disabled: Boolean(get(option, this.disabledField))\n };\n } // Otherwise create an `` object from the given value\n\n\n return {\n value: key || option,\n text: stripTags(String(option)),\n disabled: false\n };\n },\n normalizeOptions: function normalizeOptions(options) {\n var _this = this;\n\n // Normalize the given options array\n if (isArray(options)) {\n return options.map(function (option) {\n return _this.normalizeOption(option);\n });\n } else if (isPlainObject(options)) {\n // Deprecate the object options format\n warn(OPTIONS_OBJECT_DEPRECATED_MSG, this.$options.name); // Normalize a `options` object to an array of options\n\n return keys(options).map(function (key) {\n return _this.normalizeOption(options[key] || {}, key);\n });\n } // If not an array or object, return an empty array\n\n /* istanbul ignore next */\n\n\n return [];\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nimport { Vue } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { get } from '../../../utils/get';\nimport { isNull, isPlainObject, isUndefined } from '../../../utils/inspect';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../../utils/props';\nimport { formOptionsMixin, props as formOptionsProps } from '../../../mixins/form-options'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formOptionsProps), {}, {\n labelField: makeProp(PROP_TYPE_STRING, 'label'),\n optionsField: makeProp(PROP_TYPE_STRING, 'options')\n})), 'formOptions'); // --- Mixin ---\n// @vue/component\n\nexport var optionsMixin = Vue.extend({\n mixins: [formOptionsMixin],\n props: props,\n methods: {\n normalizeOption: function normalizeOption(option) {\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n // When the option is an object, normalize it\n if (isPlainObject(option)) {\n var value = get(option, this.valueField);\n var text = get(option, this.textField);\n var options = get(option, this.optionsField, null); // When it has options, create an `` object\n\n if (!isNull(options)) {\n return {\n label: String(get(option, this.labelField) || text),\n options: this.normalizeOptions(options)\n };\n } // Otherwise create an `` object\n\n\n return {\n value: isUndefined(value) ? key || text : value,\n text: String(isUndefined(text) ? key : text),\n html: get(option, this.htmlField),\n disabled: Boolean(get(option, this.disabledField))\n };\n } // Otherwise create an `` object from the given value\n\n\n return {\n value: key || option,\n text: String(option),\n disabled: false\n };\n }\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM_SELECT_OPTION } from '../../constants/components';\nimport { PROP_TYPE_ANY, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n value: makeProp(PROP_TYPE_ANY, undefined, true) // Required\n\n}, NAME_FORM_SELECT_OPTION); // --- Main component ---\n// @vue/component\n\nexport var BFormSelectOption = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_SELECT_OPTION,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var value = props.value,\n disabled = props.disabled;\n return h('option', mergeData(data, {\n attrs: {\n disabled: disabled\n },\n domProps: {\n value: value\n }\n }), children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nimport { Vue } from '../../vue';\nimport { NAME_FORM_SELECT_OPTION_GROUP } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_FIRST } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formOptionsMixin, props as formOptionsProps } from '../../mixins/form-options';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BFormSelectOption } from './form-select-option'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formOptionsProps), {}, {\n label: makeProp(PROP_TYPE_STRING, undefined, true) // Required\n\n})), NAME_FORM_SELECT_OPTION_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BFormSelectOptionGroup = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_SELECT_OPTION_GROUP,\n mixins: [normalizeSlotMixin, formOptionsMixin],\n props: props,\n render: function render(h) {\n var label = this.label;\n var $options = this.formOptions.map(function (option, index) {\n var value = option.value,\n text = option.text,\n html = option.html,\n disabled = option.disabled;\n return h(BFormSelectOption, {\n attrs: {\n value: value,\n disabled: disabled\n },\n domProps: htmlOrText(html, text),\n key: \"option_\".concat(index)\n });\n });\n return h('optgroup', {\n attrs: {\n label: label\n }\n }, [this.normalizeSlot(SLOT_NAME_FIRST), $options, this.normalizeSlot()]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nimport { Vue } from '../../vue';\nimport { NAME_FORM_SELECT } from '../../constants/components';\nimport { EVENT_NAME_CHANGE } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER } from '../../constants/props';\nimport { SLOT_NAME_FIRST } from '../../constants/slots';\nimport { from as arrayFrom } from '../../utils/array';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { htmlOrText } from '../../utils/html';\nimport { isArray } from '../../utils/inspect';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formCustomMixin, props as formCustomProps } from '../../mixins/form-custom';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { MODEL_EVENT_NAME, MODEL_PROP_NAME, modelMixin, props as modelProps } from '../../mixins/model';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { optionsMixin } from './helpers/mixin-options';\nimport { BFormSelectOption } from './form-select-option';\nimport { BFormSelectOptionGroup } from './form-select-option-group'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formCustomProps), formSizeProps), formStateProps), {}, {\n ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n multiple: makeProp(PROP_TYPE_BOOLEAN, false),\n // Browsers default size to `0`, which shows 4 rows in most browsers in multiple mode\n // Size of `1` can bork out Firefox\n selectSize: makeProp(PROP_TYPE_NUMBER, 0)\n})), NAME_FORM_SELECT); // --- Main component ---\n// @vue/component\n\nexport var BFormSelect = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_SELECT,\n mixins: [idMixin, modelMixin, formControlMixin, formSizeMixin, formStateMixin, formCustomMixin, optionsMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n return {\n localValue: this[MODEL_PROP_NAME]\n };\n },\n computed: {\n computedSelectSize: function computedSelectSize() {\n // Custom selects with a size of zero causes the arrows to be hidden,\n // so dont render the size attribute in this case\n return !this.plain && this.selectSize === 0 ? null : this.selectSize;\n },\n inputClass: function inputClass() {\n return [this.plain ? 'form-control' : 'custom-select', this.size && this.plain ? \"form-control-\".concat(this.size) : null, this.size && !this.plain ? \"custom-select-\".concat(this.size) : null, this.stateClass];\n }\n },\n watch: {\n value: function value(newValue) {\n this.localValue = newValue;\n },\n localValue: function localValue() {\n this.$emit(MODEL_EVENT_NAME, this.localValue);\n }\n },\n methods: {\n focus: function focus() {\n attemptFocus(this.$refs.input);\n },\n blur: function blur() {\n attemptBlur(this.$refs.input);\n },\n onChange: function onChange(event) {\n var _this = this;\n\n var target = event.target;\n var selectedValue = arrayFrom(target.options).filter(function (o) {\n return o.selected;\n }).map(function (o) {\n return '_value' in o ? o._value : o.value;\n });\n this.localValue = target.multiple ? selectedValue : selectedValue[0];\n this.$nextTick(function () {\n _this.$emit(EVENT_NAME_CHANGE, _this.localValue);\n });\n }\n },\n render: function render(h) {\n var name = this.name,\n disabled = this.disabled,\n required = this.required,\n size = this.computedSelectSize,\n value = this.localValue;\n var $options = this.formOptions.map(function (option, index) {\n var value = option.value,\n label = option.label,\n options = option.options,\n disabled = option.disabled;\n var key = \"option_\".concat(index);\n return isArray(options) ? h(BFormSelectOptionGroup, {\n props: {\n label: label,\n options: options\n },\n key: key\n }) : h(BFormSelectOption, {\n props: {\n value: value,\n disabled: disabled\n },\n domProps: htmlOrText(option.html, option.text),\n key: key\n });\n });\n return h('select', {\n class: this.inputClass,\n attrs: {\n id: this.safeId(),\n name: name,\n form: this.form || null,\n multiple: this.multiple || null,\n size: size,\n disabled: disabled,\n required: required,\n 'aria-required': required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n },\n on: {\n change: this.onChange\n },\n directives: [{\n name: 'model',\n value: value\n }],\n ref: 'input'\n }, [this.normalizeSlot(SLOT_NAME_FIRST), $options, this.normalizeSlot()]);\n }\n});","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LeftSidebar.vue?vue&type=style&index=0&lang=scss&\"","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export var PLACEMENT_TOP_START = 'top-start';\nexport var PLACEMENT_TOP_END = 'top-end';\nexport var PLACEMENT_BOTTOM_START = 'bottom-start';\nexport var PLACEMENT_BOTTOM_END = 'bottom-end';\nexport var PLACEMENT_RIGHT_START = 'right-start';\nexport var PLACEMENT_RIGHT_END = 'right-end';\nexport var PLACEMENT_LEFT_START = 'left-start';\nexport var PLACEMENT_LEFT_END = 'left-end';","import { Vue } from '../vue';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { contains } from '../utils/dom';\nimport { eventOn, eventOff } from '../utils/events'; // @vue/component\n\nexport var clickOutMixin = Vue.extend({\n data: function data() {\n return {\n listenForClickOut: false\n };\n },\n watch: {\n listenForClickOut: function listenForClickOut(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n\n if (newValue) {\n eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n }\n }\n },\n beforeCreate: function beforeCreate() {\n // Declare non-reactive properties\n this.clickOutElement = null;\n this.clickOutEventName = null;\n },\n mounted: function mounted() {\n if (!this.clickOutElement) {\n this.clickOutElement = document;\n }\n\n if (!this.clickOutEventName) {\n this.clickOutEventName = 'click';\n }\n\n if (this.listenForClickOut) {\n eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n },\n beforeDestroy: function beforeDestroy() {\n eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n },\n methods: {\n isClickOut: function isClickOut(event) {\n return !contains(this.$el, event.target);\n },\n _clickOutHandler: function _clickOutHandler(event) {\n if (this.clickOutHandler && this.isClickOut(event)) {\n this.clickOutHandler(event);\n }\n }\n }\n});","import { Vue } from '../vue';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { eventOn, eventOff } from '../utils/events'; // @vue/component\n\nexport var focusInMixin = Vue.extend({\n data: function data() {\n return {\n listenForFocusIn: false\n };\n },\n watch: {\n listenForFocusIn: function listenForFocusIn(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n\n if (newValue) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n }\n }\n },\n beforeCreate: function beforeCreate() {\n // Declare non-reactive properties\n this.focusInElement = null;\n },\n mounted: function mounted() {\n if (!this.focusInElement) {\n this.focusInElement = document;\n }\n\n if (this.listenForFocusIn) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n },\n beforeDestroy: function beforeDestroy() {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n },\n methods: {\n _focusInHandler: function _focusInHandler(event) {\n if (this.focusInHandler) {\n this.focusInHandler(event);\n }\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nimport Popper from 'popper.js';\nimport { Vue } from '../vue';\nimport { NAME_DROPDOWN } from '../constants/components';\nimport { EVENT_NAME_CLICK, EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_NAME_TOGGLE } from '../constants/events';\nimport { CODE_DOWN, CODE_ENTER, CODE_ESC, CODE_SPACE, CODE_UP } from '../constants/key-codes';\nimport { PLACEMENT_TOP_START, PLACEMENT_TOP_END, PLACEMENT_BOTTOM_START, PLACEMENT_BOTTOM_END, PLACEMENT_RIGHT_START, PLACEMENT_LEFT_START } from '../constants/popper';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../constants/props';\nimport { HTMLElement } from '../constants/safe-types';\nimport { BvEvent } from '../utils/bv-event.class';\nimport { attemptFocus, closest, contains, isVisible, requestAF, selectAll } from '../utils/dom';\nimport { getRootEventName, stopEvent } from '../utils/events';\nimport { isNull } from '../utils/inspect';\nimport { mergeDeep, sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { warn } from '../utils/warn';\nimport { clickOutMixin } from './click-out';\nimport { focusInMixin } from './focus-in';\nimport { idMixin, props as idProps } from './id';\nimport { listenOnRootMixin } from './listen-on-root'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_SHOWN = getRootEventName(NAME_DROPDOWN, EVENT_NAME_SHOWN);\nvar ROOT_EVENT_NAME_HIDDEN = getRootEventName(NAME_DROPDOWN, EVENT_NAME_HIDDEN); // CSS selectors\n\nvar SELECTOR_FORM_CHILD = '.dropdown form';\nvar SELECTOR_ITEM = ['.dropdown-item', '.b-dropdown-form'].map(function (selector) {\n return \"\".concat(selector, \":not(.disabled):not([disabled])\");\n}).join(', '); // --- Helper methods ---\n// Return an array of visible items\n\nvar filterVisibles = function filterVisibles(els) {\n return (els || []).filter(isVisible);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, idProps), {}, {\n // String: `scrollParent`, `window` or `viewport`\n // HTMLElement: HTML Element reference\n boundary: makeProp([HTMLElement, PROP_TYPE_STRING], 'scrollParent'),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n // Place left if possible\n dropleft: makeProp(PROP_TYPE_BOOLEAN, false),\n // Place right if possible\n dropright: makeProp(PROP_TYPE_BOOLEAN, false),\n // Place on top if possible\n dropup: makeProp(PROP_TYPE_BOOLEAN, false),\n // Disable auto-flipping of menu from bottom <=> top\n noFlip: makeProp(PROP_TYPE_BOOLEAN, false),\n // Number of pixels or a CSS unit value to offset menu\n // (i.e. `1px`, `1rem`, etc.)\n offset: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n popperOpts: makeProp(PROP_TYPE_OBJECT, {}),\n // Right align menu (default is left align)\n right: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_DROPDOWN); // --- Mixin ---\n// @vue/component\n\nexport var dropdownMixin = Vue.extend({\n mixins: [idMixin, listenOnRootMixin, clickOutMixin, focusInMixin],\n provide: function provide() {\n return {\n bvDropdown: this\n };\n },\n inject: {\n bvNavbar: {\n default: null\n }\n },\n props: props,\n data: function data() {\n return {\n visible: false,\n visibleChangePrevented: false\n };\n },\n computed: {\n inNavbar: function inNavbar() {\n return !isNull(this.bvNavbar);\n },\n toggler: function toggler() {\n var toggle = this.$refs.toggle;\n return toggle ? toggle.$el || toggle : null;\n },\n directionClass: function directionClass() {\n if (this.dropup) {\n return 'dropup';\n } else if (this.dropright) {\n return 'dropright';\n } else if (this.dropleft) {\n return 'dropleft';\n }\n\n return '';\n },\n boundaryClass: function boundaryClass() {\n // Position `static` is needed to allow menu to \"breakout\" of the `scrollParent`\n // boundaries when boundary is anything other than `scrollParent`\n // See: https://github.com/twbs/bootstrap/issues/24251#issuecomment-341413786\n return this.boundary !== 'scrollParent' && !this.inNavbar ? 'position-static' : '';\n }\n },\n watch: {\n visible: function visible(newValue, oldValue) {\n if (this.visibleChangePrevented) {\n this.visibleChangePrevented = false;\n return;\n }\n\n if (newValue !== oldValue) {\n var eventName = newValue ? EVENT_NAME_SHOW : EVENT_NAME_HIDE;\n var bvEvent = new BvEvent(eventName, {\n cancelable: true,\n vueTarget: this,\n target: this.$refs.menu,\n relatedTarget: null,\n componentId: this.safeId ? this.safeId() : this.id || null\n });\n this.emitEvent(bvEvent);\n\n if (bvEvent.defaultPrevented) {\n // Reset value and exit if canceled\n this.visibleChangePrevented = true;\n this.visible = oldValue; // Just in case a child element triggered `this.hide(true)`\n\n this.$off(EVENT_NAME_HIDDEN, this.focusToggler);\n return;\n }\n\n if (newValue) {\n this.showMenu();\n } else {\n this.hideMenu();\n }\n }\n },\n disabled: function disabled(newValue, oldValue) {\n if (newValue !== oldValue && newValue && this.visible) {\n // Hide dropdown if disabled changes to true\n this.visible = false;\n }\n }\n },\n created: function created() {\n // Create private non-reactive props\n this.$_popper = null;\n this.$_hideTimeout = null;\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n // In case we are inside a ``\n this.visible = false;\n this.whileOpenListen(false);\n this.destroyPopper();\n },\n beforeDestroy: function beforeDestroy() {\n this.visible = false;\n this.whileOpenListen(false);\n this.destroyPopper();\n this.clearHideTimeout();\n },\n methods: {\n // Event emitter\n emitEvent: function emitEvent(bvEvent) {\n var type = bvEvent.type;\n this.emitOnRoot(getRootEventName(NAME_DROPDOWN, type), bvEvent);\n this.$emit(type, bvEvent);\n },\n showMenu: function showMenu() {\n var _this = this;\n\n if (this.disabled) {\n /* istanbul ignore next */\n return;\n } // Only instantiate Popper.js when dropdown is not in ``\n\n\n if (!this.inNavbar) {\n if (typeof Popper === 'undefined') {\n /* istanbul ignore next */\n warn('Popper.js not found. Falling back to CSS positioning', NAME_DROPDOWN);\n } else {\n // For dropup with alignment we use the parent element as popper container\n var el = this.dropup && this.right || this.split ? this.$el : this.$refs.toggle; // Make sure we have a reference to an element, not a component!\n\n el = el.$el || el; // Instantiate Popper.js\n\n this.createPopper(el);\n }\n } // Ensure other menus are closed\n\n\n this.emitOnRoot(ROOT_EVENT_NAME_SHOWN, this); // Enable listeners\n\n this.whileOpenListen(true); // Wrap in `$nextTick()` to ensure menu is fully rendered/shown\n\n this.$nextTick(function () {\n // Focus on the menu container on show\n _this.focusMenu(); // Emit the shown event\n\n\n _this.$emit(EVENT_NAME_SHOWN);\n });\n },\n hideMenu: function hideMenu() {\n this.whileOpenListen(false);\n this.emitOnRoot(ROOT_EVENT_NAME_HIDDEN, this);\n this.$emit(EVENT_NAME_HIDDEN);\n this.destroyPopper();\n },\n createPopper: function createPopper(element) {\n this.destroyPopper();\n this.$_popper = new Popper(element, this.$refs.menu, this.getPopperConfig());\n },\n // Ensure popper event listeners are removed cleanly\n destroyPopper: function destroyPopper() {\n this.$_popper && this.$_popper.destroy();\n this.$_popper = null;\n },\n // Instructs popper to re-computes the dropdown position\n // useful if the content changes size\n updatePopper: function updatePopper() {\n try {\n this.$_popper.scheduleUpdate();\n } catch (_unused) {}\n },\n clearHideTimeout: function clearHideTimeout() {\n clearTimeout(this.$_hideTimeout);\n this.$_hideTimeout = null;\n },\n getPopperConfig: function getPopperConfig() {\n var placement = PLACEMENT_BOTTOM_START;\n\n if (this.dropup) {\n placement = this.right ? PLACEMENT_TOP_END : PLACEMENT_TOP_START;\n } else if (this.dropright) {\n placement = PLACEMENT_RIGHT_START;\n } else if (this.dropleft) {\n placement = PLACEMENT_LEFT_START;\n } else if (this.right) {\n placement = PLACEMENT_BOTTOM_END;\n }\n\n var popperConfig = {\n placement: placement,\n modifiers: {\n offset: {\n offset: this.offset || 0\n },\n flip: {\n enabled: !this.noFlip\n }\n }\n };\n var boundariesElement = this.boundary;\n\n if (boundariesElement) {\n popperConfig.modifiers.preventOverflow = {\n boundariesElement: boundariesElement\n };\n }\n\n return mergeDeep(popperConfig, this.popperOpts || {});\n },\n // Turn listeners on/off while open\n whileOpenListen: function whileOpenListen(isOpen) {\n // Hide the dropdown when clicked outside\n this.listenForClickOut = isOpen; // Hide the dropdown when it loses focus\n\n this.listenForFocusIn = isOpen; // Hide the dropdown when another dropdown is opened\n\n var method = isOpen ? '$on' : '$off';\n this.$root[method](ROOT_EVENT_NAME_SHOWN, this.rootCloseListener);\n },\n rootCloseListener: function rootCloseListener(vm) {\n if (vm !== this) {\n this.visible = false;\n }\n },\n // Public method to show dropdown\n show: function show() {\n var _this2 = this;\n\n if (this.disabled) {\n return;\n } // Wrap in a `requestAF()` to allow any previous\n // click handling to occur first\n\n\n requestAF(function () {\n _this2.visible = true;\n });\n },\n // Public method to hide dropdown\n hide: function hide() {\n var refocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n /* istanbul ignore next */\n if (this.disabled) {\n return;\n }\n\n this.visible = false;\n\n if (refocus) {\n // Child element is closing the dropdown on click\n this.$once(EVENT_NAME_HIDDEN, this.focusToggler);\n }\n },\n // Called only by a button that toggles the menu\n toggle: function toggle(event) {\n event = event || {}; // Early exit when not a click event or ENTER, SPACE or DOWN were pressed\n\n var _event = event,\n type = _event.type,\n keyCode = _event.keyCode;\n\n if (type !== 'click' && !(type === 'keydown' && [CODE_ENTER, CODE_SPACE, CODE_DOWN].indexOf(keyCode) !== -1)) {\n /* istanbul ignore next */\n return;\n }\n /* istanbul ignore next */\n\n\n if (this.disabled) {\n this.visible = false;\n return;\n }\n\n this.$emit(EVENT_NAME_TOGGLE, event);\n stopEvent(event); // Toggle visibility\n\n if (this.visible) {\n this.hide(true);\n } else {\n this.show();\n }\n },\n // Mousedown handler for the toggle\n\n /* istanbul ignore next */\n onMousedown: function onMousedown(event) {\n // We prevent the 'mousedown' event for the toggle to stop the\n // 'focusin' event from being fired\n // The event would otherwise be picked up by the global 'focusin'\n // listener and there is no cross-browser solution to detect it\n // relates to the toggle click\n // The 'click' event will still be fired and we handle closing\n // other dropdowns there too\n // See https://github.com/bootstrap-vue/bootstrap-vue/issues/4328\n stopEvent(event, {\n propagation: false\n });\n },\n // Called from dropdown menu context\n onKeydown: function onKeydown(event) {\n var keyCode = event.keyCode;\n\n if (keyCode === CODE_ESC) {\n // Close on ESC\n this.onEsc(event);\n } else if (keyCode === CODE_DOWN) {\n // Down Arrow\n this.focusNext(event, false);\n } else if (keyCode === CODE_UP) {\n // Up Arrow\n this.focusNext(event, true);\n }\n },\n // If user presses ESC, close the menu\n onEsc: function onEsc(event) {\n if (this.visible) {\n this.visible = false;\n stopEvent(event); // Return focus to original trigger button\n\n this.$once(EVENT_NAME_HIDDEN, this.focusToggler);\n }\n },\n // Called only in split button mode, for the split button\n onSplitClick: function onSplitClick(event) {\n /* istanbul ignore next */\n if (this.disabled) {\n this.visible = false;\n return;\n }\n\n this.$emit(EVENT_NAME_CLICK, event);\n },\n // Shared hide handler between click-out and focus-in events\n hideHandler: function hideHandler(event) {\n var _this3 = this;\n\n var target = event.target;\n\n if (this.visible && !contains(this.$refs.menu, target) && !contains(this.toggler, target)) {\n this.clearHideTimeout();\n this.$_hideTimeout = setTimeout(function () {\n return _this3.hide();\n }, this.inNavbar ? 300 : 0);\n }\n },\n // Document click-out listener\n clickOutHandler: function clickOutHandler(event) {\n this.hideHandler(event);\n },\n // Document focus-in listener\n focusInHandler: function focusInHandler(event) {\n this.hideHandler(event);\n },\n // Keyboard nav\n focusNext: function focusNext(event, up) {\n var _this4 = this;\n\n // Ignore key up/down on form elements\n var target = event.target;\n\n if (!this.visible || event && closest(SELECTOR_FORM_CHILD, target)) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n stopEvent(event);\n this.$nextTick(function () {\n var items = _this4.getItems();\n\n if (items.length < 1) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n var index = items.indexOf(target);\n\n if (up && index > 0) {\n index--;\n } else if (!up && index < items.length - 1) {\n index++;\n }\n\n if (index < 0) {\n /* istanbul ignore next: should never happen */\n index = 0;\n }\n\n _this4.focusItem(index, items);\n });\n },\n focusItem: function focusItem(index, items) {\n var el = items.find(function (el, i) {\n return i === index;\n });\n attemptFocus(el);\n },\n getItems: function getItems() {\n // Get all items\n return filterVisibles(selectAll(SELECTOR_ITEM, this.$refs.menu));\n },\n focusMenu: function focusMenu() {\n attemptFocus(this.$refs.menu);\n },\n focusToggler: function focusToggler() {\n var _this5 = this;\n\n this.$nextTick(function () {\n attemptFocus(_this5.toggler);\n });\n }\n }\n});","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nimport { Vue } from '../../vue';\nimport { NAME_DROPDOWN_ITEM } from '../../constants/components';\nimport { EVENT_NAME_CLICK } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { requestAF } from '../../utils/dom';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, omit(BLinkProps, ['event', 'routerTag'])), {}, {\n linkClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n variant: makeProp(PROP_TYPE_STRING)\n})), NAME_DROPDOWN_ITEM); // --- Main component ---\n// @vue/component\n\nexport var BDropdownItem = /*#__PURE__*/Vue.extend({\n name: NAME_DROPDOWN_ITEM,\n mixins: [attrsMixin, normalizeSlotMixin],\n inject: {\n bvDropdown: {\n default: null\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n computedAttrs: function computedAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n role: 'menuitem'\n });\n }\n },\n methods: {\n closeDropdown: function closeDropdown() {\n var _this = this;\n\n // Close on next animation frame to allow time to process\n requestAF(function () {\n if (_this.bvDropdown) {\n _this.bvDropdown.hide(true);\n }\n });\n },\n onClick: function onClick(event) {\n this.$emit(EVENT_NAME_CLICK, event);\n this.closeDropdown();\n }\n },\n render: function render(h) {\n var linkClass = this.linkClass,\n variant = this.variant,\n active = this.active,\n disabled = this.disabled,\n onClick = this.onClick,\n bvAttrs = this.bvAttrs;\n return h('li', {\n class: bvAttrs.class,\n style: bvAttrs.style,\n attrs: {\n role: 'presentation'\n }\n }, [h(BLink, {\n staticClass: 'dropdown-item',\n class: [linkClass, _defineProperty({}, \"text-\".concat(variant), variant && !(active || disabled))],\n props: this.$props,\n attrs: this.computedAttrs,\n on: {\n click: onClick\n },\n ref: 'item'\n }, this.normalizeSlot())]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_BREADCRUMB_LINK } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, omit(BLinkProps, ['event', 'routerTag'])), {}, {\n ariaCurrent: makeProp(PROP_TYPE_STRING, 'location'),\n html: makeProp(PROP_TYPE_STRING),\n text: makeProp(PROP_TYPE_STRING)\n})), NAME_BREADCRUMB_LINK); // --- Main component ---\n// @vue/component\n\nexport var BBreadcrumbLink = /*#__PURE__*/Vue.extend({\n name: NAME_BREADCRUMB_LINK,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var suppliedProps = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var active = suppliedProps.active;\n var tag = active ? 'span' : BLink;\n var componentData = {\n attrs: {\n 'aria-current': active ? suppliedProps.ariaCurrent : null\n },\n props: pluckProps(props, suppliedProps)\n };\n\n if (!children) {\n componentData.domProps = htmlOrText(suppliedProps.html, suppliedProps.text);\n }\n\n return h(tag, mergeData(data, componentData), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_BREADCRUMB_ITEM } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BBreadcrumbLink, props as BBreadcrumbLinkProps } from './breadcrumb-link'; // --- Props ---\n\nexport var props = makePropsConfigurable(BBreadcrumbLinkProps, NAME_BREADCRUMB_ITEM); // --- Main component ---\n// @vue/component\n\nexport var BBreadcrumbItem = /*#__PURE__*/Vue.extend({\n name: NAME_BREADCRUMB_ITEM,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('li', mergeData(data, {\n staticClass: 'breadcrumb-item',\n class: {\n active: props.active\n }\n }), [h(BBreadcrumbLink, {\n props: props\n }, children)]);\n }\n});","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\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 */\nfunction 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 timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\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 clearTimeout(timerId);\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\nmodule.exports = debounce;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\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 */\nfunction 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 = baseTrim(value);\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\nmodule.exports = toNumber;\n","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nimport { Vue } from '../../vue';\nimport { NAME_COLLAPSE, NAME_SIDEBAR } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN } from '../../constants/events';\nimport { CODE_ESC } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_FOOTER, SLOT_NAME_HEADER, SLOT_NAME_HEADER_CLOSE, SLOT_NAME_TITLE } from '../../constants/slots';\nimport { attemptFocus, contains, getActiveElement, getTabables } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName } from '../../utils/events';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BIconX } from '../../icons/icons';\nimport { BButtonClose } from '../button/button-close';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar CLASS_NAME = 'b-sidebar';\nvar ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nvar ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\nvar ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\nvar ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\n\nvar _makeModelMixin = makeModelMixin('visible', {\n type: PROP_TYPE_BOOLEAN,\n defaultValue: false,\n event: EVENT_NAME_CHANGE\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n ariaLabel: makeProp(PROP_TYPE_STRING),\n ariaLabelledby: makeProp(PROP_TYPE_STRING),\n // If `true`, shows a basic backdrop\n backdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n backdropVariant: makeProp(PROP_TYPE_STRING, 'dark'),\n bgVariant: makeProp(PROP_TYPE_STRING, 'light'),\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // `aria-label` for close button\n closeLabel: makeProp(PROP_TYPE_STRING),\n footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnBackdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnEsc: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnRouteChange: makeProp(PROP_TYPE_BOOLEAN, false),\n noEnforceFocus: makeProp(PROP_TYPE_BOOLEAN, false),\n noHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n noHeaderClose: makeProp(PROP_TYPE_BOOLEAN, false),\n noSlide: makeProp(PROP_TYPE_BOOLEAN, false),\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n shadow: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n sidebarClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n textVariant: makeProp(PROP_TYPE_STRING, 'dark'),\n title: makeProp(PROP_TYPE_STRING),\n width: makeProp(PROP_TYPE_STRING),\n zIndex: makeProp(PROP_TYPE_NUMBER_STRING)\n})), NAME_SIDEBAR); // --- Render methods ---\n\nvar renderHeaderTitle = function renderHeaderTitle(h, ctx) {\n // Render a empty `` when to title was provided\n var title = ctx.normalizeSlot(SLOT_NAME_TITLE, ctx.slotScope) || ctx.title;\n\n if (!title) {\n return h('span');\n }\n\n return h('strong', {\n attrs: {\n id: ctx.safeId('__title__')\n }\n }, [title]);\n};\n\nvar renderHeaderClose = function renderHeaderClose(h, ctx) {\n if (ctx.noHeaderClose) {\n return h();\n }\n\n var closeLabel = ctx.closeLabel,\n textVariant = ctx.textVariant,\n hide = ctx.hide;\n return h(BButtonClose, {\n props: {\n ariaLabel: closeLabel,\n textVariant: textVariant\n },\n on: {\n click: hide\n },\n ref: 'close-button'\n }, [ctx.normalizeSlot(SLOT_NAME_HEADER_CLOSE) || h(BIconX)]);\n};\n\nvar renderHeader = function renderHeader(h, ctx) {\n if (ctx.noHeader) {\n return h();\n }\n\n var $content = ctx.normalizeSlot(SLOT_NAME_HEADER, ctx.slotScope);\n\n if (!$content) {\n var $title = renderHeaderTitle(h, ctx);\n var $close = renderHeaderClose(h, ctx);\n $content = ctx.right ? [$close, $title] : [$title, $close];\n }\n\n return h('header', {\n staticClass: \"\".concat(CLASS_NAME, \"-header\"),\n class: ctx.headerClass,\n key: 'header'\n }, $content);\n};\n\nvar renderBody = function renderBody(h, ctx) {\n return h('div', {\n staticClass: \"\".concat(CLASS_NAME, \"-body\"),\n class: ctx.bodyClass,\n key: 'body'\n }, [ctx.normalizeSlot(SLOT_NAME_DEFAULT, ctx.slotScope)]);\n};\n\nvar renderFooter = function renderFooter(h, ctx) {\n var $footer = ctx.normalizeSlot(SLOT_NAME_FOOTER, ctx.slotScope);\n\n if (!$footer) {\n return h();\n }\n\n return h('footer', {\n staticClass: \"\".concat(CLASS_NAME, \"-footer\"),\n class: ctx.footerClass,\n key: 'footer'\n }, [$footer]);\n};\n\nvar renderContent = function renderContent(h, ctx) {\n // We render the header even if `lazy` is enabled as it\n // acts as the accessible label for the sidebar\n var $header = renderHeader(h, ctx);\n\n if (ctx.lazy && !ctx.isOpen) {\n return $header;\n }\n\n return [$header, renderBody(h, ctx), renderFooter(h, ctx)];\n};\n\nvar renderBackdrop = function renderBackdrop(h, ctx) {\n if (!ctx.backdrop) {\n return h();\n }\n\n var backdropVariant = ctx.backdropVariant;\n return h('div', {\n directives: [{\n name: 'show',\n value: ctx.localShow\n }],\n staticClass: 'b-sidebar-backdrop',\n class: _defineProperty({}, \"bg-\".concat(backdropVariant), backdropVariant),\n on: {\n click: ctx.onBackdropClick\n }\n });\n}; // --- Main component ---\n// @vue/component\n\n\nexport var BSidebar = /*#__PURE__*/Vue.extend({\n name: NAME_SIDEBAR,\n mixins: [attrsMixin, idMixin, modelMixin, listenOnRootMixin, normalizeSlotMixin],\n inheritAttrs: false,\n props: props,\n data: function data() {\n var visible = !!this[MODEL_PROP_NAME];\n return {\n // Internal `v-model` state\n localShow: visible,\n // For lazy render triggering\n isOpen: visible\n };\n },\n computed: {\n transitionProps: function transitionProps() {\n return this.noSlide ?\n /* istanbul ignore next */\n {\n css: true\n } : {\n css: true,\n enterClass: '',\n enterActiveClass: 'slide',\n enterToClass: 'show',\n leaveClass: 'show',\n leaveActiveClass: 'slide',\n leaveToClass: ''\n };\n },\n slotScope: function slotScope() {\n var hide = this.hide,\n right = this.right,\n visible = this.localShow;\n return {\n hide: hide,\n right: right,\n visible: visible\n };\n },\n hasTitle: function hasTitle() {\n var $scopedSlots = this.$scopedSlots,\n $slots = this.$slots;\n return !this.noHeader && !this.hasNormalizedSlot(SLOT_NAME_HEADER) && !!(this.normalizeSlot(SLOT_NAME_TITLE, this.slotScope, $scopedSlots, $slots) || this.title);\n },\n titleId: function titleId() {\n return this.hasTitle ? this.safeId('__title__') : null;\n },\n computedAttrs: function computedAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n id: this.safeId(),\n tabindex: '-1',\n role: 'dialog',\n 'aria-modal': this.backdrop ? 'true' : 'false',\n 'aria-hidden': this.localShow ? null : 'true',\n 'aria-label': this.ariaLabel || null,\n 'aria-labelledby': this.ariaLabelledby || this.titleId || null\n });\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localShow = newValue;\n }\n }), _defineProperty(_watch, \"localShow\", function localShow(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.emitState(newValue);\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }), _defineProperty(_watch, \"$route\", function $route() {\n var newValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var oldValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.noCloseOnRouteChange && newValue.fullPath !== oldValue.fullPath) {\n this.hide();\n }\n }), _watch),\n created: function created() {\n // Define non-reactive properties\n this.$_returnFocusEl = null;\n },\n mounted: function mounted() {\n var _this = this;\n\n // Add `$root` listeners\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE, this.handleToggle);\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, this.handleSync); // Send out a gratuitous state event to ensure toggle button is synced\n\n this.$nextTick(function () {\n _this.emitState(_this.localShow);\n });\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.emitSync();\n },\n beforeDestroy: function beforeDestroy() {\n this.localShow = false;\n this.$_returnFocusEl = null;\n },\n methods: {\n hide: function hide() {\n this.localShow = false;\n },\n emitState: function emitState() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;\n this.emitOnRoot(ROOT_EVENT_NAME_STATE, this.safeId(), state);\n },\n emitSync: function emitSync() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;\n this.emitOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.safeId(), state);\n },\n handleToggle: function handleToggle(id) {\n // Note `safeId()` can be null until after mount\n if (id && id === this.safeId()) {\n this.localShow = !this.localShow;\n }\n },\n handleSync: function handleSync(id) {\n var _this2 = this;\n\n // Note `safeId()` can be null until after mount\n if (id && id === this.safeId()) {\n this.$nextTick(function () {\n _this2.emitSync(_this2.localShow);\n });\n }\n },\n onKeydown: function onKeydown(event) {\n var keyCode = event.keyCode;\n\n if (!this.noCloseOnEsc && keyCode === CODE_ESC && this.localShow) {\n this.hide();\n }\n },\n onBackdropClick: function onBackdropClick() {\n if (this.localShow && !this.noCloseOnBackdrop) {\n this.hide();\n }\n },\n\n /* istanbul ignore next */\n onTopTrapFocus: function onTopTrapFocus() {\n var tabables = getTabables(this.$refs.content);\n this.enforceFocus(tabables.reverse()[0]);\n },\n\n /* istanbul ignore next */\n onBottomTrapFocus: function onBottomTrapFocus() {\n var tabables = getTabables(this.$refs.content);\n this.enforceFocus(tabables[0]);\n },\n onBeforeEnter: function onBeforeEnter() {\n // Returning focus to `document.body` may cause unwanted scrolls,\n // so we exclude setting focus on body\n this.$_returnFocusEl = getActiveElement(IS_BROWSER ? [document.body] : []); // Trigger lazy render\n\n this.isOpen = true;\n },\n onAfterEnter: function onAfterEnter(el) {\n if (!contains(el, getActiveElement())) {\n this.enforceFocus(el);\n }\n\n this.$emit(EVENT_NAME_SHOWN);\n },\n onAfterLeave: function onAfterLeave() {\n this.enforceFocus(this.$_returnFocusEl);\n this.$_returnFocusEl = null; // Trigger lazy render\n\n this.isOpen = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n enforceFocus: function enforceFocus(el) {\n if (!this.noEnforceFocus) {\n attemptFocus(el);\n }\n }\n },\n render: function render(h) {\n var _ref;\n\n var bgVariant = this.bgVariant,\n width = this.width,\n textVariant = this.textVariant,\n localShow = this.localShow;\n var shadow = this.shadow === '' ? true : this.shadow;\n var $sidebar = h(this.tag, {\n staticClass: CLASS_NAME,\n class: [(_ref = {\n shadow: shadow === true\n }, _defineProperty(_ref, \"shadow-\".concat(shadow), shadow && shadow !== true), _defineProperty(_ref, \"\".concat(CLASS_NAME, \"-right\"), this.right), _defineProperty(_ref, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_ref, \"text-\".concat(textVariant), textVariant), _ref), this.sidebarClass],\n style: {\n width: width\n },\n attrs: this.computedAttrs,\n directives: [{\n name: 'show',\n value: localShow\n }],\n ref: 'content'\n }, [renderContent(h, this)]);\n $sidebar = h('transition', {\n props: this.transitionProps,\n on: {\n beforeEnter: this.onBeforeEnter,\n afterEnter: this.onAfterEnter,\n afterLeave: this.onAfterLeave\n }\n }, [$sidebar]);\n var $backdrop = h(BVTransition, {\n props: {\n noFade: this.noSlide\n }\n }, [renderBackdrop(h, this)]);\n var $tabTrapTop = h();\n var $tabTrapBottom = h();\n\n if (this.backdrop && localShow) {\n $tabTrapTop = h('div', {\n attrs: {\n tabindex: '0'\n },\n on: {\n focus: this.onTopTrapFocus\n }\n });\n $tabTrapBottom = h('div', {\n attrs: {\n tabindex: '0'\n },\n on: {\n focus: this.onBottomTrapFocus\n }\n });\n }\n\n return h('div', {\n staticClass: 'b-sidebar-outer',\n style: {\n zIndex: this.zIndex\n },\n attrs: {\n tabindex: '-1'\n },\n on: {\n keydown: this.onKeydown\n }\n }, [$tabTrapTop, $sidebar, $tabTrapBottom, $backdrop]);\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 */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _watch, _methods;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nimport { Vue } from '../vue';\nimport { PROP_TYPE_ANY, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../constants/props';\nimport { EVENT_NAME_CHANGE } from '../constants/events';\nimport { attemptBlur, attemptFocus } from '../utils/dom';\nimport { isBoolean } from '../utils/inspect';\nimport { looseEqual } from '../utils/loose-equal';\nimport { makeModelMixin } from '../utils/model';\nimport { sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { attrsMixin } from './attrs';\nimport { formControlMixin, props as formControlProps } from './form-control';\nimport { formCustomMixin, props as formCustomProps } from './form-custom';\nimport { formSizeMixin, props as formSizeProps } from './form-size';\nimport { formStateMixin, props as formStateProps } from './form-state';\nimport { idMixin, props as idProps } from './id';\nimport { normalizeSlotMixin } from './normalize-slot'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('checked', {\n defaultValue: null\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formSizeProps), formStateProps), formCustomProps), {}, {\n ariaLabel: makeProp(PROP_TYPE_STRING),\n ariaLabelledby: makeProp(PROP_TYPE_STRING),\n // Only applicable in standalone mode (non group)\n button: makeProp(PROP_TYPE_BOOLEAN, false),\n // Only applicable when rendered with button style\n buttonVariant: makeProp(PROP_TYPE_STRING),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n value: makeProp(PROP_TYPE_ANY)\n})), 'formRadioCheckControls'); // --- Mixin ---\n// @vue/component\n\nexport var formRadioCheckMixin = Vue.extend({\n mixins: [attrsMixin, idMixin, modelMixin, normalizeSlotMixin, formControlMixin, formSizeMixin, formStateMixin, formCustomMixin],\n inheritAttrs: false,\n props: props,\n data: function data() {\n return {\n localChecked: this.isGroup ? this.bvGroup[MODEL_PROP_NAME] : this[MODEL_PROP_NAME],\n hasFocus: false\n };\n },\n computed: {\n computedLocalChecked: {\n get: function get() {\n return this.isGroup ? this.bvGroup.localChecked : this.localChecked;\n },\n set: function set(value) {\n if (this.isGroup) {\n this.bvGroup.localChecked = value;\n } else {\n this.localChecked = value;\n }\n }\n },\n isChecked: function isChecked() {\n return looseEqual(this.value, this.computedLocalChecked);\n },\n isRadio: function isRadio() {\n return true;\n },\n isGroup: function isGroup() {\n // Is this check/radio a child of check-group or radio-group?\n return !!this.bvGroup;\n },\n isBtnMode: function isBtnMode() {\n // Support button style in single input mode\n return this.isGroup ? this.bvGroup.buttons : this.button;\n },\n isPlain: function isPlain() {\n return this.isBtnMode ? false : this.isGroup ? this.bvGroup.plain : this.plain;\n },\n isCustom: function isCustom() {\n return this.isBtnMode ? false : !this.isPlain;\n },\n isSwitch: function isSwitch() {\n // Custom switch styling (checkboxes only)\n return this.isBtnMode || this.isRadio || this.isPlain ? false : this.isGroup ? this.bvGroup.switches : this.switch;\n },\n isInline: function isInline() {\n return this.isGroup ? this.bvGroup.inline : this.inline;\n },\n isDisabled: function isDisabled() {\n // Child can be disabled while parent isn't, but is always disabled if group is\n return this.isGroup ? this.bvGroup.disabled || this.disabled : this.disabled;\n },\n isRequired: function isRequired() {\n // Required only works when a name is provided for the input(s)\n // Child can only be required when parent is\n // Groups will always have a name (either user supplied or auto generated)\n return this.computedName && (this.isGroup ? this.bvGroup.required : this.required);\n },\n computedName: function computedName() {\n // Group name preferred over local name\n return (this.isGroup ? this.bvGroup.groupName : this.name) || null;\n },\n computedForm: function computedForm() {\n return (this.isGroup ? this.bvGroup.form : this.form) || null;\n },\n computedSize: function computedSize() {\n return (this.isGroup ? this.bvGroup.size : this.size) || '';\n },\n computedState: function computedState() {\n return this.isGroup ? this.bvGroup.computedState : isBoolean(this.state) ? this.state : null;\n },\n computedButtonVariant: function computedButtonVariant() {\n // Local variant preferred over group variant\n var buttonVariant = this.buttonVariant;\n\n if (buttonVariant) {\n return buttonVariant;\n }\n\n if (this.isGroup && this.bvGroup.buttonVariant) {\n return this.bvGroup.buttonVariant;\n }\n\n return 'secondary';\n },\n buttonClasses: function buttonClasses() {\n var _ref;\n\n var computedSize = this.computedSize;\n return ['btn', \"btn-\".concat(this.computedButtonVariant), (_ref = {}, _defineProperty(_ref, \"btn-\".concat(computedSize), computedSize), _defineProperty(_ref, \"disabled\", this.isDisabled), _defineProperty(_ref, \"active\", this.isChecked), _defineProperty(_ref, \"focus\", this.hasFocus), _ref)];\n },\n computedAttrs: function computedAttrs() {\n var disabled = this.isDisabled,\n required = this.isRequired;\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n id: this.safeId(),\n type: this.isRadio ? 'radio' : 'checkbox',\n name: this.computedName,\n form: this.computedForm,\n disabled: disabled,\n required: required,\n 'aria-required': required || null,\n 'aria-label': this.ariaLabel || null,\n 'aria-labelledby': this.ariaLabelledby || null\n });\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function () {\n this[\"\".concat(MODEL_PROP_NAME, \"Watcher\")].apply(this, arguments);\n }), _defineProperty(_watch, \"computedLocalChecked\", function computedLocalChecked() {\n this.computedLocalCheckedWatcher.apply(this, arguments);\n }), _watch),\n methods: (_methods = {}, _defineProperty(_methods, \"\".concat(MODEL_PROP_NAME, \"Watcher\"), function Watcher(newValue) {\n if (!looseEqual(newValue, this.computedLocalChecked)) {\n this.computedLocalChecked = newValue;\n }\n }), _defineProperty(_methods, \"computedLocalCheckedWatcher\", function computedLocalCheckedWatcher(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }), _defineProperty(_methods, \"handleChange\", function handleChange(_ref2) {\n var _this = this;\n\n var checked = _ref2.target.checked;\n var value = this.value;\n var localChecked = checked ? value : null;\n this.computedLocalChecked = value; // Fire events in a `$nextTick()` to ensure the `v-model` is updated\n\n this.$nextTick(function () {\n // Change is only emitted on user interaction\n _this.$emit(EVENT_NAME_CHANGE, localChecked); // If this is a child of a group, we emit a change event on it as well\n\n\n if (_this.isGroup) {\n _this.bvGroup.$emit(EVENT_NAME_CHANGE, localChecked);\n }\n });\n }), _defineProperty(_methods, \"handleFocus\", function handleFocus(event) {\n // When in buttons mode, we need to add 'focus' class to label when input focused\n // As it is the hidden input which has actual focus\n if (event.target) {\n if (event.type === 'focus') {\n this.hasFocus = true;\n } else if (event.type === 'blur') {\n this.hasFocus = false;\n }\n }\n }), _defineProperty(_methods, \"focus\", function focus() {\n if (!this.isDisabled) {\n attemptFocus(this.$refs.input);\n }\n }), _defineProperty(_methods, \"blur\", function blur() {\n if (!this.isDisabled) {\n attemptBlur(this.$refs.input);\n }\n }), _methods),\n render: function render(h) {\n var isRadio = this.isRadio,\n isBtnMode = this.isBtnMode,\n isPlain = this.isPlain,\n isCustom = this.isCustom,\n isInline = this.isInline,\n isSwitch = this.isSwitch,\n computedSize = this.computedSize,\n bvAttrs = this.bvAttrs;\n var $content = this.normalizeSlot();\n var $input = h('input', {\n class: [{\n 'form-check-input': isPlain,\n 'custom-control-input': isCustom,\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n 'position-static': isPlain && !$content\n }, isBtnMode ? '' : this.stateClass],\n directives: [{\n name: 'model',\n value: this.computedLocalChecked\n }],\n attrs: this.computedAttrs,\n domProps: {\n value: this.value,\n checked: this.isChecked\n },\n on: _objectSpread({\n change: this.handleChange\n }, isBtnMode ? {\n focus: this.handleFocus,\n blur: this.handleFocus\n } : {}),\n key: 'input',\n ref: 'input'\n });\n\n if (isBtnMode) {\n var $button = h('label', {\n class: this.buttonClasses\n }, [$input, $content]);\n\n if (!this.isGroup) {\n // Standalone button mode, so wrap in 'btn-group-toggle'\n // and flag it as inline-block to mimic regular buttons\n $button = h('div', {\n class: ['btn-group-toggle', 'd-inline-block']\n }, [$button]);\n }\n\n return $button;\n } // If no label content in plain mode we dont render the label\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n\n\n var $label = h();\n\n if (!(isPlain && !$content)) {\n $label = h('label', {\n class: {\n 'form-check-label': isPlain,\n 'custom-control-label': isCustom\n },\n attrs: {\n for: this.safeId()\n }\n }, $content);\n }\n\n return h('div', {\n class: [_defineProperty({\n 'form-check': isPlain,\n 'form-check-inline': isPlain && isInline,\n 'custom-control': isCustom,\n 'custom-control-inline': isCustom && isInline,\n 'custom-checkbox': isCustom && !isRadio && !isSwitch,\n 'custom-switch': isSwitch,\n 'custom-radio': isCustom && isRadio\n }, \"b-custom-control-\".concat(computedSize), computedSize && !isBtnMode), bvAttrs.class],\n style: bvAttrs.style\n }, [$input, $label]);\n }\n});","import { looseEqual } from './loose-equal'; // Assumes that the first argument is an array\n\nexport var looseIndexOf = function looseIndexOf(array, value) {\n for (var i = 0; i < array.length; i++) {\n if (looseEqual(array[i], value)) {\n return i;\n }\n }\n\n return -1;\n};","var _objectSpread2;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nimport { Vue } from '../../vue';\nimport { NAME_FORM_CHECKBOX } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_ANY, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { isArray } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { looseIndexOf } from '../../utils/loose-index-of';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { MODEL_EVENT_NAME, formRadioCheckMixin, props as formRadioCheckProps } from '../../mixins/form-radio-check'; // --- Constants ---\n\nvar MODEL_PROP_NAME_INDETERMINATE = 'indeterminate';\nvar MODEL_EVENT_NAME_INDETERMINATE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_INDETERMINATE; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formRadioCheckProps), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, MODEL_PROP_NAME_INDETERMINATE, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"switch\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"uncheckedValue\", makeProp(PROP_TYPE_ANY, false)), _defineProperty(_objectSpread2, \"value\", makeProp(PROP_TYPE_ANY, true)), _objectSpread2))), NAME_FORM_CHECKBOX); // --- Main component ---\n// @vue/component\n\nexport var BFormCheckbox = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_CHECKBOX,\n mixins: [formRadioCheckMixin],\n inject: {\n bvGroup: {\n from: 'bvCheckGroup',\n default: null\n }\n },\n props: props,\n computed: {\n isChecked: function isChecked() {\n var value = this.value,\n checked = this.computedLocalChecked;\n return isArray(checked) ? looseIndexOf(checked, value) > -1 : looseEqual(checked, value);\n },\n isRadio: function isRadio() {\n return false;\n }\n },\n watch: _defineProperty({}, MODEL_PROP_NAME_INDETERMINATE, function (newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.setIndeterminate(newValue);\n }\n }),\n mounted: function mounted() {\n // Set initial indeterminate state\n this.setIndeterminate(this[MODEL_PROP_NAME_INDETERMINATE]);\n },\n methods: {\n computedLocalCheckedWatcher: function computedLocalCheckedWatcher(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n var $input = this.$refs.input;\n\n if ($input) {\n this.$emit(MODEL_EVENT_NAME_INDETERMINATE, $input.indeterminate);\n }\n }\n },\n handleChange: function handleChange(_ref) {\n var _this = this;\n\n var _ref$target = _ref.target,\n checked = _ref$target.checked,\n indeterminate = _ref$target.indeterminate;\n var value = this.value,\n uncheckedValue = this.uncheckedValue; // Update `computedLocalChecked`\n\n var localChecked = this.computedLocalChecked;\n\n if (isArray(localChecked)) {\n var index = looseIndexOf(localChecked, value);\n\n if (checked && index < 0) {\n // Add value to array\n localChecked = localChecked.concat(value);\n } else if (!checked && index > -1) {\n // Remove value from array\n localChecked = localChecked.slice(0, index).concat(localChecked.slice(index + 1));\n }\n } else {\n localChecked = checked ? value : uncheckedValue;\n }\n\n this.computedLocalChecked = localChecked; // Fire events in a `$nextTick()` to ensure the `v-model` is updated\n\n this.$nextTick(function () {\n // Change is only emitted on user interaction\n _this.$emit(EVENT_NAME_CHANGE, localChecked); // If this is a child of a group, we emit a change event on it as well\n\n\n if (_this.isGroup) {\n _this.bvGroup.$emit(EVENT_NAME_CHANGE, localChecked);\n }\n\n _this.$emit(MODEL_EVENT_NAME_INDETERMINATE, indeterminate);\n });\n },\n setIndeterminate: function setIndeterminate(state) {\n // Indeterminate only supported in single checkbox mode\n if (isArray(this.computedLocalChecked)) {\n state = false;\n }\n\n var $input = this.$refs.input;\n\n if ($input) {\n $input.indeterminate = state; // Emit update event to prop\n\n this.$emit(MODEL_EVENT_NAME_INDETERMINATE, state);\n }\n }\n }\n});","/*!\n * vue-treeselect v0.4.0 | (c) 2017-2019 Riophae Lee\n * Released under the MIT License.\n * https://vue-treeselect.js.org/\n */\nmodule.exports =\n/******/ (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// 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, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\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/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 16);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@babel/runtime/helpers/slicedToArray\");\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@babel/runtime/helpers/toConsumableArray\");\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@babel/runtime/helpers/defineProperty\");\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"fuzzysearch\");\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"lodash/noop\");\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"lodash/debounce\");\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"watch-size\");\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"is-promise\");\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"lodash/once\");\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"lodash/identity\");\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"lodash/constant\");\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@babel/runtime/helpers/typeof\");\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"lodash/last\");\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"babel-helper-vue-jsx-merge-props\");\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"vue\");\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n/* 16 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: external \"@babel/runtime/helpers/slicedToArray\"\nvar slicedToArray_ = __webpack_require__(0);\nvar slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray_);\n\n// EXTERNAL MODULE: external \"@babel/runtime/helpers/toConsumableArray\"\nvar toConsumableArray_ = __webpack_require__(1);\nvar toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray_);\n\n// EXTERNAL MODULE: external \"@babel/runtime/helpers/defineProperty\"\nvar defineProperty_ = __webpack_require__(2);\nvar defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty_);\n\n// EXTERNAL MODULE: external \"fuzzysearch\"\nvar external_fuzzysearch_ = __webpack_require__(3);\nvar external_fuzzysearch_default = /*#__PURE__*/__webpack_require__.n(external_fuzzysearch_);\n\n// EXTERNAL MODULE: external \"lodash/noop\"\nvar noop_ = __webpack_require__(4);\nvar noop_default = /*#__PURE__*/__webpack_require__.n(noop_);\n\n// CONCATENATED MODULE: ./src/utils/noop.js\n\n// CONCATENATED MODULE: ./src/utils/warning.js\n\n\nvar warning_warning = process.env.NODE_ENV === 'production' ? noop_default.a : function warning(checker, complainer) {\n if (!checker()) {\n var _console;\n\n var message = ['[Vue-Treeselect Warning]'].concat(complainer());\n\n (_console = console).error.apply(_console, toConsumableArray_default()(message));\n }\n};\n// CONCATENATED MODULE: ./src/utils/onLeftClick.js\nfunction onLeftClick(mouseDownHandler) {\n return function onMouseDown(evt) {\n if (evt.type === 'mousedown' && evt.button === 0) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n mouseDownHandler.call.apply(mouseDownHandler, [this, evt].concat(args));\n }\n };\n}\n// CONCATENATED MODULE: ./src/utils/scrollIntoView.js\nfunction scrollIntoView($scrollingEl, $focusedEl) {\n var scrollingReact = $scrollingEl.getBoundingClientRect();\n var focusedRect = $focusedEl.getBoundingClientRect();\n var overScroll = $focusedEl.offsetHeight / 3;\n\n if (focusedRect.bottom + overScroll > scrollingReact.bottom) {\n $scrollingEl.scrollTop = Math.min($focusedEl.offsetTop + $focusedEl.clientHeight - $scrollingEl.offsetHeight + overScroll, $scrollingEl.scrollHeight);\n } else if (focusedRect.top - overScroll < scrollingReact.top) {\n $scrollingEl.scrollTop = Math.max($focusedEl.offsetTop - overScroll, 0);\n }\n}\n// EXTERNAL MODULE: external \"lodash/debounce\"\nvar debounce_ = __webpack_require__(5);\nvar debounce_default = /*#__PURE__*/__webpack_require__.n(debounce_);\n\n// CONCATENATED MODULE: ./src/utils/debounce.js\n\n// EXTERNAL MODULE: external \"watch-size\"\nvar external_watch_size_ = __webpack_require__(6);\nvar external_watch_size_default = /*#__PURE__*/__webpack_require__.n(external_watch_size_);\n\n// CONCATENATED MODULE: ./src/utils/removeFromArray.js\nfunction removeFromArray(arr, elem) {\n var idx = arr.indexOf(elem);\n if (idx !== -1) arr.splice(idx, 1);\n}\n// CONCATENATED MODULE: ./src/utils/watchSize.js\n\n\nvar intervalId;\nvar registered = [];\nvar INTERVAL_DURATION = 100;\n\nfunction run() {\n intervalId = setInterval(function () {\n registered.forEach(test);\n }, INTERVAL_DURATION);\n}\n\nfunction stop() {\n clearInterval(intervalId);\n intervalId = null;\n}\n\nfunction test(item) {\n var $el = item.$el,\n listener = item.listener,\n lastWidth = item.lastWidth,\n lastHeight = item.lastHeight;\n var width = $el.offsetWidth;\n var height = $el.offsetHeight;\n\n if (lastWidth !== width || lastHeight !== height) {\n item.lastWidth = width;\n item.lastHeight = height;\n listener({\n width: width,\n height: height\n });\n }\n}\n\nfunction watchSizeForIE9($el, listener) {\n var item = {\n $el: $el,\n listener: listener,\n lastWidth: null,\n lastHeight: null\n };\n\n var unwatch = function unwatch() {\n removeFromArray(registered, item);\n if (!registered.length) stop();\n };\n\n registered.push(item);\n test(item);\n run();\n return unwatch;\n}\n\nfunction watchSize($el, listener) {\n var isIE9 = document.documentMode === 9;\n var locked = true;\n\n var wrappedListener = function wrappedListener() {\n return locked || listener.apply(void 0, arguments);\n };\n\n var implementation = isIE9 ? watchSizeForIE9 : external_watch_size_default.a;\n var removeSizeWatcher = implementation($el, wrappedListener);\n locked = false;\n return removeSizeWatcher;\n}\n// CONCATENATED MODULE: ./src/utils/setupResizeAndScrollEventListeners.js\nfunction findScrollParents($el) {\n var $scrollParents = [];\n var $parent = $el.parentNode;\n\n while ($parent && $parent.nodeName !== 'BODY' && $parent.nodeType === document.ELEMENT_NODE) {\n if (isScrollElment($parent)) $scrollParents.push($parent);\n $parent = $parent.parentNode;\n }\n\n $scrollParents.push(window);\n return $scrollParents;\n}\n\nfunction isScrollElment($el) {\n var _getComputedStyle = getComputedStyle($el),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /(auto|scroll|overlay)/.test(overflow + overflowY + overflowX);\n}\n\nfunction setupResizeAndScrollEventListeners($el, listener) {\n var $scrollParents = findScrollParents($el);\n window.addEventListener('resize', listener, {\n passive: true\n });\n $scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', listener, {\n passive: true\n });\n });\n return function removeEventListeners() {\n window.removeEventListener('resize', listener, {\n passive: true\n });\n $scrollParents.forEach(function ($scrollParent) {\n $scrollParent.removeEventListener('scroll', listener, {\n passive: true\n });\n });\n };\n}\n// CONCATENATED MODULE: ./src/utils/isNaN.js\nfunction isNaN_isNaN(x) {\n return x !== x;\n}\n// EXTERNAL MODULE: external \"is-promise\"\nvar external_is_promise_ = __webpack_require__(7);\nvar external_is_promise_default = /*#__PURE__*/__webpack_require__.n(external_is_promise_);\n\n// CONCATENATED MODULE: ./src/utils/isPromise.js\n\n// EXTERNAL MODULE: external \"lodash/once\"\nvar once_ = __webpack_require__(8);\nvar once_default = /*#__PURE__*/__webpack_require__.n(once_);\n\n// CONCATENATED MODULE: ./src/utils/once.js\n\n// EXTERNAL MODULE: external \"lodash/identity\"\nvar identity_ = __webpack_require__(9);\nvar identity_default = /*#__PURE__*/__webpack_require__.n(identity_);\n\n// CONCATENATED MODULE: ./src/utils/identity.js\n\n// EXTERNAL MODULE: external \"lodash/constant\"\nvar constant_ = __webpack_require__(10);\nvar constant_default = /*#__PURE__*/__webpack_require__.n(constant_);\n\n// CONCATENATED MODULE: ./src/utils/constant.js\n\n// CONCATENATED MODULE: ./src/utils/createMap.js\nvar createMap = function createMap() {\n return Object.create(null);\n};\n// EXTERNAL MODULE: external \"@babel/runtime/helpers/typeof\"\nvar typeof_ = __webpack_require__(11);\nvar typeof_default = /*#__PURE__*/__webpack_require__.n(typeof_);\n\n// CONCATENATED MODULE: ./src/utils/deepExtend.js\n\n\nfunction isPlainObject(value) {\n if (value == null || typeof_default()(value) !== 'object') return false;\n return Object.getPrototypeOf(value) === Object.prototype;\n}\n\nfunction copy(obj, key, value) {\n if (isPlainObject(value)) {\n obj[key] || (obj[key] = {});\n deepExtend(obj[key], value);\n } else {\n obj[key] = value;\n }\n}\n\nfunction deepExtend(target, source) {\n if (isPlainObject(source)) {\n var keys = Object.keys(source);\n\n for (var i = 0, len = keys.length; i < len; i++) {\n copy(target, keys[i], source[keys[i]]);\n }\n }\n\n return target;\n}\n// EXTERNAL MODULE: external \"lodash/last\"\nvar last_ = __webpack_require__(12);\nvar last_default = /*#__PURE__*/__webpack_require__.n(last_);\n\n// CONCATENATED MODULE: ./src/utils/last.js\n\n// CONCATENATED MODULE: ./src/utils/includes.js\nfunction includes(arrOrStr, elem) {\n return arrOrStr.indexOf(elem) !== -1;\n}\n// CONCATENATED MODULE: ./src/utils/find.js\nfunction find(arr, predicate, ctx) {\n for (var i = 0, len = arr.length; i < len; i++) {\n if (predicate.call(ctx, arr[i], i, arr)) return arr[i];\n }\n\n return undefined;\n}\n// CONCATENATED MODULE: ./src/utils/quickDiff.js\nfunction quickDiff(arrA, arrB) {\n if (arrA.length !== arrB.length) return true;\n\n for (var i = 0; i < arrA.length; i++) {\n if (arrA[i] !== arrB[i]) return true;\n }\n\n return false;\n}\n// CONCATENATED MODULE: ./src/utils/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// CONCATENATED MODULE: ./src/constants.js\nvar NO_PARENT_NODE = null;\nvar UNCHECKED = 0;\nvar INDETERMINATE = 1;\nvar CHECKED = 2;\nvar ALL_CHILDREN = 'ALL_CHILDREN';\nvar ALL_DESCENDANTS = 'ALL_DESCENDANTS';\nvar LEAF_CHILDREN = 'LEAF_CHILDREN';\nvar LEAF_DESCENDANTS = 'LEAF_DESCENDANTS';\nvar LOAD_ROOT_OPTIONS = 'LOAD_ROOT_OPTIONS';\nvar LOAD_CHILDREN_OPTIONS = 'LOAD_CHILDREN_OPTIONS';\nvar ASYNC_SEARCH = 'ASYNC_SEARCH';\nvar ALL = 'ALL';\nvar BRANCH_PRIORITY = 'BRANCH_PRIORITY';\nvar LEAF_PRIORITY = 'LEAF_PRIORITY';\nvar ALL_WITH_INDETERMINATE = 'ALL_WITH_INDETERMINATE';\nvar ORDER_SELECTED = 'ORDER_SELECTED';\nvar LEVEL = 'LEVEL';\nvar INDEX = 'INDEX';\nvar KEY_CODES = {\n BACKSPACE: 8,\n ENTER: 13,\n ESCAPE: 27,\n END: 35,\n HOME: 36,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_RIGHT: 39,\n ARROW_DOWN: 40,\n DELETE: 46\n};\nvar INPUT_DEBOUNCE_DELAY = process.env.NODE_ENV === 'testing' ? 10 : 200;\nvar MIN_INPUT_WIDTH = 5;\nvar MENU_BUFFER = 40;\n// CONCATENATED MODULE: ./src/mixins/treeselectMixin.js\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { defineProperty_default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\nfunction sortValueByIndex(a, b) {\n var i = 0;\n\n do {\n if (a.level < i) return -1;\n if (b.level < i) return 1;\n if (a.index[i] !== b.index[i]) return a.index[i] - b.index[i];\n i++;\n } while (true);\n}\n\nfunction sortValueByLevel(a, b) {\n return a.level === b.level ? sortValueByIndex(a, b) : a.level - b.level;\n}\n\nfunction createAsyncOptionsStates() {\n return {\n isLoaded: false,\n isLoading: false,\n loadingError: ''\n };\n}\n\nfunction stringifyOptionPropValue(value) {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' && !isNaN_isNaN(value)) return value + '';\n return '';\n}\n\nfunction match(enableFuzzyMatch, needle, haystack) {\n return enableFuzzyMatch ? external_fuzzysearch_default()(needle, haystack) : includes(haystack, needle);\n}\n\nfunction getErrorMessage(err) {\n return err.message || String(err);\n}\n\nvar instanceId = 0;\n/* harmony default export */ var treeselectMixin = ({\n provide: function provide() {\n return {\n instance: this\n };\n },\n props: {\n allowClearingDisabled: {\n type: Boolean,\n default: false\n },\n allowSelectingDisabledDescendants: {\n type: Boolean,\n default: false\n },\n alwaysOpen: {\n type: Boolean,\n default: false\n },\n appendToBody: {\n type: Boolean,\n default: false\n },\n async: {\n type: Boolean,\n default: false\n },\n autoFocus: {\n type: Boolean,\n default: false\n },\n autoLoadRootOptions: {\n type: Boolean,\n default: true\n },\n autoDeselectAncestors: {\n type: Boolean,\n default: false\n },\n autoDeselectDescendants: {\n type: Boolean,\n default: false\n },\n autoSelectAncestors: {\n type: Boolean,\n default: false\n },\n autoSelectDescendants: {\n type: Boolean,\n default: false\n },\n backspaceRemoves: {\n type: Boolean,\n default: true\n },\n beforeClearAll: {\n type: Function,\n default: constant_default()(true)\n },\n branchNodesFirst: {\n type: Boolean,\n default: false\n },\n cacheOptions: {\n type: Boolean,\n default: true\n },\n clearable: {\n type: Boolean,\n default: true\n },\n clearAllText: {\n type: String,\n default: 'Clear all'\n },\n clearOnSelect: {\n type: Boolean,\n default: false\n },\n clearValueText: {\n type: String,\n default: 'Clear value'\n },\n closeOnSelect: {\n type: Boolean,\n default: true\n },\n defaultExpandLevel: {\n type: Number,\n default: 0\n },\n defaultOptions: {\n default: false\n },\n deleteRemoves: {\n type: Boolean,\n default: true\n },\n delimiter: {\n type: String,\n default: ','\n },\n flattenSearchResults: {\n type: Boolean,\n default: false\n },\n disableBranchNodes: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n disableFuzzyMatching: {\n type: Boolean,\n default: false\n },\n flat: {\n type: Boolean,\n default: false\n },\n instanceId: {\n default: function _default() {\n return \"\".concat(instanceId++, \"$$\");\n },\n type: [String, Number]\n },\n joinValues: {\n type: Boolean,\n default: false\n },\n limit: {\n type: Number,\n default: Infinity\n },\n limitText: {\n type: Function,\n default: function limitTextDefault(count) {\n return \"and \".concat(count, \" more\");\n }\n },\n loadingText: {\n type: String,\n default: 'Loading...'\n },\n loadOptions: {\n type: Function\n },\n matchKeys: {\n type: Array,\n default: constant_default()(['label'])\n },\n maxHeight: {\n type: Number,\n default: 300\n },\n multiple: {\n type: Boolean,\n default: false\n },\n name: {\n type: String\n },\n noChildrenText: {\n type: String,\n default: 'No sub-options.'\n },\n noOptionsText: {\n type: String,\n default: 'No options available.'\n },\n noResultsText: {\n type: String,\n default: 'No results found...'\n },\n normalizer: {\n type: Function,\n default: identity_default.a\n },\n openDirection: {\n type: String,\n default: 'auto',\n validator: function validator(value) {\n var acceptableValues = ['auto', 'top', 'bottom', 'above', 'below'];\n return includes(acceptableValues, value);\n }\n },\n openOnClick: {\n type: Boolean,\n default: true\n },\n openOnFocus: {\n type: Boolean,\n default: false\n },\n options: {\n type: Array\n },\n placeholder: {\n type: String,\n default: 'Select...'\n },\n required: {\n type: Boolean,\n default: false\n },\n retryText: {\n type: String,\n default: 'Retry?'\n },\n retryTitle: {\n type: String,\n default: 'Click to retry'\n },\n searchable: {\n type: Boolean,\n default: true\n },\n searchNested: {\n type: Boolean,\n default: false\n },\n searchPromptText: {\n type: String,\n default: 'Type to search...'\n },\n showCount: {\n type: Boolean,\n default: false\n },\n showCountOf: {\n type: String,\n default: ALL_CHILDREN,\n validator: function validator(value) {\n var acceptableValues = [ALL_CHILDREN, ALL_DESCENDANTS, LEAF_CHILDREN, LEAF_DESCENDANTS];\n return includes(acceptableValues, value);\n }\n },\n showCountOnSearch: null,\n sortValueBy: {\n type: String,\n default: ORDER_SELECTED,\n validator: function validator(value) {\n var acceptableValues = [ORDER_SELECTED, LEVEL, INDEX];\n return includes(acceptableValues, value);\n }\n },\n tabIndex: {\n type: Number,\n default: 0\n },\n value: null,\n valueConsistsOf: {\n type: String,\n default: BRANCH_PRIORITY,\n validator: function validator(value) {\n var acceptableValues = [ALL, BRANCH_PRIORITY, LEAF_PRIORITY, ALL_WITH_INDETERMINATE];\n return includes(acceptableValues, value);\n }\n },\n valueFormat: {\n type: String,\n default: 'id'\n },\n zIndex: {\n type: [Number, String],\n default: 999\n }\n },\n data: function data() {\n return {\n trigger: {\n isFocused: false,\n searchQuery: ''\n },\n menu: {\n isOpen: false,\n current: null,\n lastScrollPosition: 0,\n placement: 'bottom'\n },\n forest: {\n normalizedOptions: [],\n nodeMap: createMap(),\n checkedStateMap: createMap(),\n selectedNodeIds: this.extractCheckedNodeIdsFromValue(),\n selectedNodeMap: createMap()\n },\n rootOptionsStates: createAsyncOptionsStates(),\n localSearch: {\n active: false,\n noResults: true,\n countMap: createMap()\n },\n remoteSearch: createMap()\n };\n },\n computed: {\n selectedNodes: function selectedNodes() {\n return this.forest.selectedNodeIds.map(this.getNode);\n },\n internalValue: function internalValue() {\n var _this = this;\n\n var internalValue;\n\n if (this.single || this.flat || this.disableBranchNodes || this.valueConsistsOf === ALL) {\n internalValue = this.forest.selectedNodeIds.slice();\n } else if (this.valueConsistsOf === BRANCH_PRIORITY) {\n internalValue = this.forest.selectedNodeIds.filter(function (id) {\n var node = _this.getNode(id);\n\n if (node.isRootNode) return true;\n return !_this.isSelected(node.parentNode);\n });\n } else if (this.valueConsistsOf === LEAF_PRIORITY) {\n internalValue = this.forest.selectedNodeIds.filter(function (id) {\n var node = _this.getNode(id);\n\n if (node.isLeaf) return true;\n return node.children.length === 0;\n });\n } else if (this.valueConsistsOf === ALL_WITH_INDETERMINATE) {\n var _internalValue;\n\n var indeterminateNodeIds = [];\n internalValue = this.forest.selectedNodeIds.slice();\n this.selectedNodes.forEach(function (selectedNode) {\n selectedNode.ancestors.forEach(function (ancestor) {\n if (includes(indeterminateNodeIds, ancestor.id)) return;\n if (includes(internalValue, ancestor.id)) return;\n indeterminateNodeIds.push(ancestor.id);\n });\n });\n\n (_internalValue = internalValue).push.apply(_internalValue, indeterminateNodeIds);\n }\n\n if (this.sortValueBy === LEVEL) {\n internalValue.sort(function (a, b) {\n return sortValueByLevel(_this.getNode(a), _this.getNode(b));\n });\n } else if (this.sortValueBy === INDEX) {\n internalValue.sort(function (a, b) {\n return sortValueByIndex(_this.getNode(a), _this.getNode(b));\n });\n }\n\n return internalValue;\n },\n hasValue: function hasValue() {\n return this.internalValue.length > 0;\n },\n single: function single() {\n return !this.multiple;\n },\n visibleOptionIds: function visibleOptionIds() {\n var _this2 = this;\n\n var visibleOptionIds = [];\n this.traverseAllNodesByIndex(function (node) {\n if (!_this2.localSearch.active || _this2.shouldOptionBeIncludedInSearchResult(node)) {\n visibleOptionIds.push(node.id);\n }\n\n if (node.isBranch && !_this2.shouldExpand(node)) {\n return false;\n }\n });\n return visibleOptionIds;\n },\n hasVisibleOptions: function hasVisibleOptions() {\n return this.visibleOptionIds.length !== 0;\n },\n showCountOnSearchComputed: function showCountOnSearchComputed() {\n return typeof this.showCountOnSearch === 'boolean' ? this.showCountOnSearch : this.showCount;\n },\n hasBranchNodes: function hasBranchNodes() {\n return this.forest.normalizedOptions.some(function (rootNode) {\n return rootNode.isBranch;\n });\n },\n shouldFlattenOptions: function shouldFlattenOptions() {\n return this.localSearch.active && this.flattenSearchResults;\n }\n },\n watch: {\n alwaysOpen: function alwaysOpen(newValue) {\n if (newValue) this.openMenu();else this.closeMenu();\n },\n branchNodesFirst: function branchNodesFirst() {\n this.initialize();\n },\n disabled: function disabled(newValue) {\n if (newValue && this.menu.isOpen) this.closeMenu();else if (!newValue && !this.menu.isOpen && this.alwaysOpen) this.openMenu();\n },\n flat: function flat() {\n this.initialize();\n },\n internalValue: function internalValue(newValue, oldValue) {\n var hasChanged = quickDiff(newValue, oldValue);\n if (hasChanged) this.$emit('input', this.getValue(), this.getInstanceId());\n },\n matchKeys: function matchKeys() {\n this.initialize();\n },\n multiple: function multiple(newValue) {\n if (newValue) this.buildForestState();\n },\n options: {\n handler: function handler() {\n if (this.async) return;\n this.initialize();\n this.rootOptionsStates.isLoaded = Array.isArray(this.options);\n },\n deep: true,\n immediate: true\n },\n 'trigger.searchQuery': function triggerSearchQuery() {\n if (this.async) {\n this.handleRemoteSearch();\n } else {\n this.handleLocalSearch();\n }\n\n this.$emit('search-change', this.trigger.searchQuery, this.getInstanceId());\n },\n value: function value() {\n var nodeIdsFromValue = this.extractCheckedNodeIdsFromValue();\n var hasChanged = quickDiff(nodeIdsFromValue, this.internalValue);\n if (hasChanged) this.fixSelectedNodeIds(nodeIdsFromValue);\n }\n },\n methods: {\n verifyProps: function verifyProps() {\n var _this3 = this;\n\n warning_warning(function () {\n return _this3.async ? _this3.searchable : true;\n }, function () {\n return 'For async search mode, the value of \"searchable\" prop must be true.';\n });\n\n if (this.options == null && !this.loadOptions) {\n warning_warning(function () {\n return false;\n }, function () {\n return 'Are you meant to dynamically load options? You need to use \"loadOptions\" prop.';\n });\n }\n\n if (this.flat) {\n warning_warning(function () {\n return _this3.multiple;\n }, function () {\n return 'You are using flat mode. But you forgot to add \"multiple=true\"?';\n });\n }\n\n if (!this.flat) {\n var propNames = ['autoSelectAncestors', 'autoSelectDescendants', 'autoDeselectAncestors', 'autoDeselectDescendants'];\n propNames.forEach(function (propName) {\n warning_warning(function () {\n return !_this3[propName];\n }, function () {\n return \"\\\"\".concat(propName, \"\\\" only applies to flat mode.\");\n });\n });\n }\n },\n resetFlags: function resetFlags() {\n this._blurOnSelect = false;\n },\n initialize: function initialize() {\n var options = this.async ? this.getRemoteSearchEntry().options : this.options;\n\n if (Array.isArray(options)) {\n var prevNodeMap = this.forest.nodeMap;\n this.forest.nodeMap = createMap();\n this.keepDataOfSelectedNodes(prevNodeMap);\n this.forest.normalizedOptions = this.normalize(NO_PARENT_NODE, options, prevNodeMap);\n this.fixSelectedNodeIds(this.internalValue);\n } else {\n this.forest.normalizedOptions = [];\n }\n },\n getInstanceId: function getInstanceId() {\n return this.instanceId == null ? this.id : this.instanceId;\n },\n getValue: function getValue() {\n var _this4 = this;\n\n if (this.valueFormat === 'id') {\n return this.multiple ? this.internalValue.slice() : this.internalValue[0];\n }\n\n var rawNodes = this.internalValue.map(function (id) {\n return _this4.getNode(id).raw;\n });\n return this.multiple ? rawNodes : rawNodes[0];\n },\n getNode: function getNode(nodeId) {\n warning_warning(function () {\n return nodeId != null;\n }, function () {\n return \"Invalid node id: \".concat(nodeId);\n });\n if (nodeId == null) return null;\n return nodeId in this.forest.nodeMap ? this.forest.nodeMap[nodeId] : this.createFallbackNode(nodeId);\n },\n createFallbackNode: function createFallbackNode(id) {\n var raw = this.extractNodeFromValue(id);\n var label = this.enhancedNormalizer(raw).label || \"\".concat(id, \" (unknown)\");\n var fallbackNode = {\n id: id,\n label: label,\n ancestors: [],\n parentNode: NO_PARENT_NODE,\n isFallbackNode: true,\n isRootNode: true,\n isLeaf: true,\n isBranch: false,\n isDisabled: false,\n isNew: false,\n index: [-1],\n level: 0,\n raw: raw\n };\n return this.$set(this.forest.nodeMap, id, fallbackNode);\n },\n extractCheckedNodeIdsFromValue: function extractCheckedNodeIdsFromValue() {\n var _this5 = this;\n\n if (this.value == null) return [];\n\n if (this.valueFormat === 'id') {\n return this.multiple ? this.value.slice() : [this.value];\n }\n\n return (this.multiple ? this.value : [this.value]).map(function (node) {\n return _this5.enhancedNormalizer(node);\n }).map(function (node) {\n return node.id;\n });\n },\n extractNodeFromValue: function extractNodeFromValue(id) {\n var _this6 = this;\n\n var defaultNode = {\n id: id\n };\n\n if (this.valueFormat === 'id') {\n return defaultNode;\n }\n\n var valueArray = this.multiple ? Array.isArray(this.value) ? this.value : [] : this.value ? [this.value] : [];\n var matched = find(valueArray, function (node) {\n return node && _this6.enhancedNormalizer(node).id === id;\n });\n return matched || defaultNode;\n },\n fixSelectedNodeIds: function fixSelectedNodeIds(nodeIdListOfPrevValue) {\n var _this7 = this;\n\n var nextSelectedNodeIds = [];\n\n if (this.single || this.flat || this.disableBranchNodes || this.valueConsistsOf === ALL) {\n nextSelectedNodeIds = nodeIdListOfPrevValue;\n } else if (this.valueConsistsOf === BRANCH_PRIORITY) {\n nodeIdListOfPrevValue.forEach(function (nodeId) {\n nextSelectedNodeIds.push(nodeId);\n\n var node = _this7.getNode(nodeId);\n\n if (node.isBranch) _this7.traverseDescendantsBFS(node, function (descendant) {\n nextSelectedNodeIds.push(descendant.id);\n });\n });\n } else if (this.valueConsistsOf === LEAF_PRIORITY) {\n var map = createMap();\n var queue = nodeIdListOfPrevValue.slice();\n\n while (queue.length) {\n var nodeId = queue.shift();\n var node = this.getNode(nodeId);\n nextSelectedNodeIds.push(nodeId);\n if (node.isRootNode) continue;\n if (!(node.parentNode.id in map)) map[node.parentNode.id] = node.parentNode.children.length;\n if (--map[node.parentNode.id] === 0) queue.push(node.parentNode.id);\n }\n } else if (this.valueConsistsOf === ALL_WITH_INDETERMINATE) {\n var _map = createMap();\n\n var _queue = nodeIdListOfPrevValue.filter(function (nodeId) {\n var node = _this7.getNode(nodeId);\n\n return node.isLeaf || node.children.length === 0;\n });\n\n while (_queue.length) {\n var _nodeId = _queue.shift();\n\n var _node = this.getNode(_nodeId);\n\n nextSelectedNodeIds.push(_nodeId);\n if (_node.isRootNode) continue;\n if (!(_node.parentNode.id in _map)) _map[_node.parentNode.id] = _node.parentNode.children.length;\n if (--_map[_node.parentNode.id] === 0) _queue.push(_node.parentNode.id);\n }\n }\n\n var hasChanged = quickDiff(this.forest.selectedNodeIds, nextSelectedNodeIds);\n if (hasChanged) this.forest.selectedNodeIds = nextSelectedNodeIds;\n this.buildForestState();\n },\n keepDataOfSelectedNodes: function keepDataOfSelectedNodes(prevNodeMap) {\n var _this8 = this;\n\n this.forest.selectedNodeIds.forEach(function (id) {\n if (!prevNodeMap[id]) return;\n\n var node = _objectSpread({}, prevNodeMap[id], {\n isFallbackNode: true\n });\n\n _this8.$set(_this8.forest.nodeMap, id, node);\n });\n },\n isSelected: function isSelected(node) {\n return this.forest.selectedNodeMap[node.id] === true;\n },\n traverseDescendantsBFS: function traverseDescendantsBFS(parentNode, callback) {\n if (!parentNode.isBranch) return;\n var queue = parentNode.children.slice();\n\n while (queue.length) {\n var currNode = queue[0];\n if (currNode.isBranch) queue.push.apply(queue, toConsumableArray_default()(currNode.children));\n callback(currNode);\n queue.shift();\n }\n },\n traverseDescendantsDFS: function traverseDescendantsDFS(parentNode, callback) {\n var _this9 = this;\n\n if (!parentNode.isBranch) return;\n parentNode.children.forEach(function (child) {\n _this9.traverseDescendantsDFS(child, callback);\n\n callback(child);\n });\n },\n traverseAllNodesDFS: function traverseAllNodesDFS(callback) {\n var _this10 = this;\n\n this.forest.normalizedOptions.forEach(function (rootNode) {\n _this10.traverseDescendantsDFS(rootNode, callback);\n\n callback(rootNode);\n });\n },\n traverseAllNodesByIndex: function traverseAllNodesByIndex(callback) {\n var walk = function walk(parentNode) {\n parentNode.children.forEach(function (child) {\n if (callback(child) !== false && child.isBranch) {\n walk(child);\n }\n });\n };\n\n walk({\n children: this.forest.normalizedOptions\n });\n },\n toggleClickOutsideEvent: function toggleClickOutsideEvent(enabled) {\n if (enabled) {\n document.addEventListener('mousedown', this.handleClickOutside, false);\n } else {\n document.removeEventListener('mousedown', this.handleClickOutside, false);\n }\n },\n getValueContainer: function getValueContainer() {\n return this.$refs.control.$refs['value-container'];\n },\n getInput: function getInput() {\n return this.getValueContainer().$refs.input;\n },\n focusInput: function focusInput() {\n this.getInput().focus();\n },\n blurInput: function blurInput() {\n this.getInput().blur();\n },\n handleMouseDown: onLeftClick(function handleMouseDown(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n if (this.disabled) return;\n var isClickedOnValueContainer = this.getValueContainer().$el.contains(evt.target);\n\n if (isClickedOnValueContainer && !this.menu.isOpen && (this.openOnClick || this.trigger.isFocused)) {\n this.openMenu();\n }\n\n if (this._blurOnSelect) {\n this.blurInput();\n } else {\n this.focusInput();\n }\n\n this.resetFlags();\n }),\n handleClickOutside: function handleClickOutside(evt) {\n if (this.$refs.wrapper && !this.$refs.wrapper.contains(evt.target)) {\n this.blurInput();\n this.closeMenu();\n }\n },\n handleLocalSearch: function handleLocalSearch() {\n var _this11 = this;\n\n var searchQuery = this.trigger.searchQuery;\n\n var done = function done() {\n return _this11.resetHighlightedOptionWhenNecessary(true);\n };\n\n if (!searchQuery) {\n this.localSearch.active = false;\n return done();\n }\n\n this.localSearch.active = true;\n this.localSearch.noResults = true;\n this.traverseAllNodesDFS(function (node) {\n if (node.isBranch) {\n var _this11$$set;\n\n node.isExpandedOnSearch = false;\n node.showAllChildrenOnSearch = false;\n node.isMatched = false;\n node.hasMatchedDescendants = false;\n\n _this11.$set(_this11.localSearch.countMap, node.id, (_this11$$set = {}, defineProperty_default()(_this11$$set, ALL_CHILDREN, 0), defineProperty_default()(_this11$$set, ALL_DESCENDANTS, 0), defineProperty_default()(_this11$$set, LEAF_CHILDREN, 0), defineProperty_default()(_this11$$set, LEAF_DESCENDANTS, 0), _this11$$set));\n }\n });\n var lowerCasedSearchQuery = searchQuery.trim().toLocaleLowerCase();\n var splitSearchQuery = lowerCasedSearchQuery.replace(/\\s+/g, ' ').split(' ');\n this.traverseAllNodesDFS(function (node) {\n if (_this11.searchNested && splitSearchQuery.length > 1) {\n node.isMatched = splitSearchQuery.every(function (filterValue) {\n return match(false, filterValue, node.nestedSearchLabel);\n });\n } else {\n node.isMatched = _this11.matchKeys.some(function (matchKey) {\n return match(!_this11.disableFuzzyMatching, lowerCasedSearchQuery, node.lowerCased[matchKey]);\n });\n }\n\n if (node.isMatched) {\n _this11.localSearch.noResults = false;\n node.ancestors.forEach(function (ancestor) {\n return _this11.localSearch.countMap[ancestor.id][ALL_DESCENDANTS]++;\n });\n if (node.isLeaf) node.ancestors.forEach(function (ancestor) {\n return _this11.localSearch.countMap[ancestor.id][LEAF_DESCENDANTS]++;\n });\n\n if (node.parentNode !== NO_PARENT_NODE) {\n _this11.localSearch.countMap[node.parentNode.id][ALL_CHILDREN] += 1;\n if (node.isLeaf) _this11.localSearch.countMap[node.parentNode.id][LEAF_CHILDREN] += 1;\n }\n }\n\n if ((node.isMatched || node.isBranch && node.isExpandedOnSearch) && node.parentNode !== NO_PARENT_NODE) {\n node.parentNode.isExpandedOnSearch = true;\n node.parentNode.hasMatchedDescendants = true;\n }\n });\n done();\n },\n handleRemoteSearch: function handleRemoteSearch() {\n var _this12 = this;\n\n var searchQuery = this.trigger.searchQuery;\n var entry = this.getRemoteSearchEntry();\n\n var done = function done() {\n _this12.initialize();\n\n _this12.resetHighlightedOptionWhenNecessary(true);\n };\n\n if ((searchQuery === '' || this.cacheOptions) && entry.isLoaded) {\n return done();\n }\n\n this.callLoadOptionsProp({\n action: ASYNC_SEARCH,\n args: {\n searchQuery: searchQuery\n },\n isPending: function isPending() {\n return entry.isLoading;\n },\n start: function start() {\n entry.isLoading = true;\n entry.isLoaded = false;\n entry.loadingError = '';\n },\n succeed: function succeed(options) {\n entry.isLoaded = true;\n entry.options = options;\n if (_this12.trigger.searchQuery === searchQuery) done();\n },\n fail: function fail(err) {\n entry.loadingError = getErrorMessage(err);\n },\n end: function end() {\n entry.isLoading = false;\n }\n });\n },\n getRemoteSearchEntry: function getRemoteSearchEntry() {\n var _this13 = this;\n\n var searchQuery = this.trigger.searchQuery;\n\n var entry = this.remoteSearch[searchQuery] || _objectSpread({}, createAsyncOptionsStates(), {\n options: []\n });\n\n this.$watch(function () {\n return entry.options;\n }, function () {\n if (_this13.trigger.searchQuery === searchQuery) _this13.initialize();\n }, {\n deep: true\n });\n\n if (searchQuery === '') {\n if (Array.isArray(this.defaultOptions)) {\n entry.options = this.defaultOptions;\n entry.isLoaded = true;\n return entry;\n } else if (this.defaultOptions !== true) {\n entry.isLoaded = true;\n return entry;\n }\n }\n\n if (!this.remoteSearch[searchQuery]) {\n this.$set(this.remoteSearch, searchQuery, entry);\n }\n\n return entry;\n },\n shouldExpand: function shouldExpand(node) {\n return this.localSearch.active ? node.isExpandedOnSearch : node.isExpanded;\n },\n shouldOptionBeIncludedInSearchResult: function shouldOptionBeIncludedInSearchResult(node) {\n if (node.isMatched) return true;\n if (node.isBranch && node.hasMatchedDescendants && !this.flattenSearchResults) return true;\n if (!node.isRootNode && node.parentNode.showAllChildrenOnSearch) return true;\n return false;\n },\n shouldShowOptionInMenu: function shouldShowOptionInMenu(node) {\n if (this.localSearch.active && !this.shouldOptionBeIncludedInSearchResult(node)) {\n return false;\n }\n\n return true;\n },\n getControl: function getControl() {\n return this.$refs.control.$el;\n },\n getMenu: function getMenu() {\n var ref = this.appendToBody ? this.$refs.portal.portalTarget : this;\n var $menu = ref.$refs.menu.$refs.menu;\n return $menu && $menu.nodeName !== '#comment' ? $menu : null;\n },\n setCurrentHighlightedOption: function setCurrentHighlightedOption(node) {\n var _this14 = this;\n\n var scroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var prev = this.menu.current;\n\n if (prev != null && prev in this.forest.nodeMap) {\n this.forest.nodeMap[prev].isHighlighted = false;\n }\n\n this.menu.current = node.id;\n node.isHighlighted = true;\n\n if (this.menu.isOpen && scroll) {\n var scrollToOption = function scrollToOption() {\n var $menu = _this14.getMenu();\n\n var $option = $menu.querySelector(\".vue-treeselect__option[data-id=\\\"\".concat(node.id, \"\\\"]\"));\n if ($option) scrollIntoView($menu, $option);\n };\n\n if (this.getMenu()) {\n scrollToOption();\n } else {\n this.$nextTick(scrollToOption);\n }\n }\n },\n resetHighlightedOptionWhenNecessary: function resetHighlightedOptionWhenNecessary() {\n var forceReset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var current = this.menu.current;\n\n if (forceReset || current == null || !(current in this.forest.nodeMap) || !this.shouldShowOptionInMenu(this.getNode(current))) {\n this.highlightFirstOption();\n }\n },\n highlightFirstOption: function highlightFirstOption() {\n if (!this.hasVisibleOptions) return;\n var first = this.visibleOptionIds[0];\n this.setCurrentHighlightedOption(this.getNode(first));\n },\n highlightPrevOption: function highlightPrevOption() {\n if (!this.hasVisibleOptions) return;\n var prev = this.visibleOptionIds.indexOf(this.menu.current) - 1;\n if (prev === -1) return this.highlightLastOption();\n this.setCurrentHighlightedOption(this.getNode(this.visibleOptionIds[prev]));\n },\n highlightNextOption: function highlightNextOption() {\n if (!this.hasVisibleOptions) return;\n var next = this.visibleOptionIds.indexOf(this.menu.current) + 1;\n if (next === this.visibleOptionIds.length) return this.highlightFirstOption();\n this.setCurrentHighlightedOption(this.getNode(this.visibleOptionIds[next]));\n },\n highlightLastOption: function highlightLastOption() {\n if (!this.hasVisibleOptions) return;\n var last = last_default()(this.visibleOptionIds);\n this.setCurrentHighlightedOption(this.getNode(last));\n },\n resetSearchQuery: function resetSearchQuery() {\n this.trigger.searchQuery = '';\n },\n closeMenu: function closeMenu() {\n if (!this.menu.isOpen || !this.disabled && this.alwaysOpen) return;\n this.saveMenuScrollPosition();\n this.menu.isOpen = false;\n this.toggleClickOutsideEvent(false);\n this.resetSearchQuery();\n this.$emit('close', this.getValue(), this.getInstanceId());\n },\n openMenu: function openMenu() {\n if (this.disabled || this.menu.isOpen) return;\n this.menu.isOpen = true;\n this.$nextTick(this.resetHighlightedOptionWhenNecessary);\n this.$nextTick(this.restoreMenuScrollPosition);\n if (!this.options && !this.async) this.loadRootOptions();\n this.toggleClickOutsideEvent(true);\n this.$emit('open', this.getInstanceId());\n },\n toggleMenu: function toggleMenu() {\n if (this.menu.isOpen) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n },\n toggleExpanded: function toggleExpanded(node) {\n var nextState;\n\n if (this.localSearch.active) {\n nextState = node.isExpandedOnSearch = !node.isExpandedOnSearch;\n if (nextState) node.showAllChildrenOnSearch = true;\n } else {\n nextState = node.isExpanded = !node.isExpanded;\n }\n\n if (nextState && !node.childrenStates.isLoaded) {\n this.loadChildrenOptions(node);\n }\n },\n buildForestState: function buildForestState() {\n var _this15 = this;\n\n var selectedNodeMap = createMap();\n this.forest.selectedNodeIds.forEach(function (selectedNodeId) {\n selectedNodeMap[selectedNodeId] = true;\n });\n this.forest.selectedNodeMap = selectedNodeMap;\n var checkedStateMap = createMap();\n\n if (this.multiple) {\n this.traverseAllNodesByIndex(function (node) {\n checkedStateMap[node.id] = UNCHECKED;\n });\n this.selectedNodes.forEach(function (selectedNode) {\n checkedStateMap[selectedNode.id] = CHECKED;\n\n if (!_this15.flat && !_this15.disableBranchNodes) {\n selectedNode.ancestors.forEach(function (ancestorNode) {\n if (!_this15.isSelected(ancestorNode)) {\n checkedStateMap[ancestorNode.id] = INDETERMINATE;\n }\n });\n }\n });\n }\n\n this.forest.checkedStateMap = checkedStateMap;\n },\n enhancedNormalizer: function enhancedNormalizer(raw) {\n return _objectSpread({}, raw, {}, this.normalizer(raw, this.getInstanceId()));\n },\n normalize: function normalize(parentNode, nodes, prevNodeMap) {\n var _this16 = this;\n\n var normalizedOptions = nodes.map(function (node) {\n return [_this16.enhancedNormalizer(node), node];\n }).map(function (_ref, index) {\n var _ref2 = slicedToArray_default()(_ref, 2),\n node = _ref2[0],\n raw = _ref2[1];\n\n _this16.checkDuplication(node);\n\n _this16.verifyNodeShape(node);\n\n var id = node.id,\n label = node.label,\n children = node.children,\n isDefaultExpanded = node.isDefaultExpanded;\n var isRootNode = parentNode === NO_PARENT_NODE;\n var level = isRootNode ? 0 : parentNode.level + 1;\n var isBranch = Array.isArray(children) || children === null;\n var isLeaf = !isBranch;\n var isDisabled = !!node.isDisabled || !_this16.flat && !isRootNode && parentNode.isDisabled;\n var isNew = !!node.isNew;\n\n var lowerCased = _this16.matchKeys.reduce(function (prev, key) {\n return _objectSpread({}, prev, defineProperty_default()({}, key, stringifyOptionPropValue(node[key]).toLocaleLowerCase()));\n }, {});\n\n var nestedSearchLabel = isRootNode ? lowerCased.label : parentNode.nestedSearchLabel + ' ' + lowerCased.label;\n\n var normalized = _this16.$set(_this16.forest.nodeMap, id, createMap());\n\n _this16.$set(normalized, 'id', id);\n\n _this16.$set(normalized, 'label', label);\n\n _this16.$set(normalized, 'level', level);\n\n _this16.$set(normalized, 'ancestors', isRootNode ? [] : [parentNode].concat(parentNode.ancestors));\n\n _this16.$set(normalized, 'index', (isRootNode ? [] : parentNode.index).concat(index));\n\n _this16.$set(normalized, 'parentNode', parentNode);\n\n _this16.$set(normalized, 'lowerCased', lowerCased);\n\n _this16.$set(normalized, 'nestedSearchLabel', nestedSearchLabel);\n\n _this16.$set(normalized, 'isDisabled', isDisabled);\n\n _this16.$set(normalized, 'isNew', isNew);\n\n _this16.$set(normalized, 'isMatched', false);\n\n _this16.$set(normalized, 'isHighlighted', false);\n\n _this16.$set(normalized, 'isBranch', isBranch);\n\n _this16.$set(normalized, 'isLeaf', isLeaf);\n\n _this16.$set(normalized, 'isRootNode', isRootNode);\n\n _this16.$set(normalized, 'raw', raw);\n\n if (isBranch) {\n var _this16$$set;\n\n var isLoaded = Array.isArray(children);\n\n _this16.$set(normalized, 'childrenStates', _objectSpread({}, createAsyncOptionsStates(), {\n isLoaded: isLoaded\n }));\n\n _this16.$set(normalized, 'isExpanded', typeof isDefaultExpanded === 'boolean' ? isDefaultExpanded : level < _this16.defaultExpandLevel);\n\n _this16.$set(normalized, 'hasMatchedDescendants', false);\n\n _this16.$set(normalized, 'hasDisabledDescendants', false);\n\n _this16.$set(normalized, 'isExpandedOnSearch', false);\n\n _this16.$set(normalized, 'showAllChildrenOnSearch', false);\n\n _this16.$set(normalized, 'count', (_this16$$set = {}, defineProperty_default()(_this16$$set, ALL_CHILDREN, 0), defineProperty_default()(_this16$$set, ALL_DESCENDANTS, 0), defineProperty_default()(_this16$$set, LEAF_CHILDREN, 0), defineProperty_default()(_this16$$set, LEAF_DESCENDANTS, 0), _this16$$set));\n\n _this16.$set(normalized, 'children', isLoaded ? _this16.normalize(normalized, children, prevNodeMap) : []);\n\n if (isDefaultExpanded === true) normalized.ancestors.forEach(function (ancestor) {\n ancestor.isExpanded = true;\n });\n\n if (!isLoaded && typeof _this16.loadOptions !== 'function') {\n warning_warning(function () {\n return false;\n }, function () {\n return 'Unloaded branch node detected. \"loadOptions\" prop is required to load its children.';\n });\n } else if (!isLoaded && normalized.isExpanded) {\n _this16.loadChildrenOptions(normalized);\n }\n }\n\n normalized.ancestors.forEach(function (ancestor) {\n return ancestor.count[ALL_DESCENDANTS]++;\n });\n if (isLeaf) normalized.ancestors.forEach(function (ancestor) {\n return ancestor.count[LEAF_DESCENDANTS]++;\n });\n\n if (!isRootNode) {\n parentNode.count[ALL_CHILDREN] += 1;\n if (isLeaf) parentNode.count[LEAF_CHILDREN] += 1;\n if (isDisabled) parentNode.hasDisabledDescendants = true;\n }\n\n if (prevNodeMap && prevNodeMap[id]) {\n var prev = prevNodeMap[id];\n normalized.isMatched = prev.isMatched;\n normalized.showAllChildrenOnSearch = prev.showAllChildrenOnSearch;\n normalized.isHighlighted = prev.isHighlighted;\n\n if (prev.isBranch && normalized.isBranch) {\n normalized.isExpanded = prev.isExpanded;\n normalized.isExpandedOnSearch = prev.isExpandedOnSearch;\n\n if (prev.childrenStates.isLoaded && !normalized.childrenStates.isLoaded) {\n normalized.isExpanded = false;\n } else {\n normalized.childrenStates = _objectSpread({}, prev.childrenStates);\n }\n }\n }\n\n return normalized;\n });\n\n if (this.branchNodesFirst) {\n var branchNodes = normalizedOptions.filter(function (option) {\n return option.isBranch;\n });\n var leafNodes = normalizedOptions.filter(function (option) {\n return option.isLeaf;\n });\n normalizedOptions = branchNodes.concat(leafNodes);\n }\n\n return normalizedOptions;\n },\n loadRootOptions: function loadRootOptions() {\n var _this17 = this;\n\n this.callLoadOptionsProp({\n action: LOAD_ROOT_OPTIONS,\n isPending: function isPending() {\n return _this17.rootOptionsStates.isLoading;\n },\n start: function start() {\n _this17.rootOptionsStates.isLoading = true;\n _this17.rootOptionsStates.loadingError = '';\n },\n succeed: function succeed() {\n _this17.rootOptionsStates.isLoaded = true;\n\n _this17.$nextTick(function () {\n _this17.resetHighlightedOptionWhenNecessary(true);\n });\n },\n fail: function fail(err) {\n _this17.rootOptionsStates.loadingError = getErrorMessage(err);\n },\n end: function end() {\n _this17.rootOptionsStates.isLoading = false;\n }\n });\n },\n loadChildrenOptions: function loadChildrenOptions(parentNode) {\n var _this18 = this;\n\n var id = parentNode.id,\n raw = parentNode.raw;\n this.callLoadOptionsProp({\n action: LOAD_CHILDREN_OPTIONS,\n args: {\n parentNode: raw\n },\n isPending: function isPending() {\n return _this18.getNode(id).childrenStates.isLoading;\n },\n start: function start() {\n _this18.getNode(id).childrenStates.isLoading = true;\n _this18.getNode(id).childrenStates.loadingError = '';\n },\n succeed: function succeed() {\n _this18.getNode(id).childrenStates.isLoaded = true;\n },\n fail: function fail(err) {\n _this18.getNode(id).childrenStates.loadingError = getErrorMessage(err);\n },\n end: function end() {\n _this18.getNode(id).childrenStates.isLoading = false;\n }\n });\n },\n callLoadOptionsProp: function callLoadOptionsProp(_ref3) {\n var action = _ref3.action,\n args = _ref3.args,\n isPending = _ref3.isPending,\n start = _ref3.start,\n succeed = _ref3.succeed,\n fail = _ref3.fail,\n end = _ref3.end;\n\n if (!this.loadOptions || isPending()) {\n return;\n }\n\n start();\n var callback = once_default()(function (err, result) {\n if (err) {\n fail(err);\n } else {\n succeed(result);\n }\n\n end();\n });\n var result = this.loadOptions(_objectSpread({\n id: this.getInstanceId(),\n instanceId: this.getInstanceId(),\n action: action\n }, args, {\n callback: callback\n }));\n\n if (external_is_promise_default()(result)) {\n result.then(function () {\n callback();\n }, function (err) {\n callback(err);\n }).catch(function (err) {\n console.error(err);\n });\n }\n },\n checkDuplication: function checkDuplication(node) {\n var _this19 = this;\n\n warning_warning(function () {\n return !(node.id in _this19.forest.nodeMap && !_this19.forest.nodeMap[node.id].isFallbackNode);\n }, function () {\n return \"Detected duplicate presence of node id \".concat(JSON.stringify(node.id), \". \") + \"Their labels are \\\"\".concat(_this19.forest.nodeMap[node.id].label, \"\\\" and \\\"\").concat(node.label, \"\\\" respectively.\");\n });\n },\n verifyNodeShape: function verifyNodeShape(node) {\n warning_warning(function () {\n return !(node.children === undefined && node.isBranch === true);\n }, function () {\n return 'Are you meant to declare an unloaded branch node? ' + '`isBranch: true` is no longer supported, please use `children: null` instead.';\n });\n },\n select: function select(node) {\n if (this.disabled || node.isDisabled) {\n return;\n }\n\n if (this.single) {\n this.clear();\n }\n\n var nextState = this.multiple && !this.flat ? this.forest.checkedStateMap[node.id] === UNCHECKED : !this.isSelected(node);\n\n if (nextState) {\n this._selectNode(node);\n } else {\n this._deselectNode(node);\n }\n\n this.buildForestState();\n\n if (nextState) {\n this.$emit('select', node.raw, this.getInstanceId());\n } else {\n this.$emit('deselect', node.raw, this.getInstanceId());\n }\n\n if (this.localSearch.active && nextState && (this.single || this.clearOnSelect)) {\n this.resetSearchQuery();\n }\n\n if (this.single && this.closeOnSelect) {\n this.closeMenu();\n\n if (this.searchable) {\n this._blurOnSelect = true;\n }\n }\n },\n clear: function clear() {\n var _this20 = this;\n\n if (this.hasValue) {\n if (this.single || this.allowClearingDisabled) {\n this.forest.selectedNodeIds = [];\n } else {\n this.forest.selectedNodeIds = this.forest.selectedNodeIds.filter(function (nodeId) {\n return _this20.getNode(nodeId).isDisabled;\n });\n }\n\n this.buildForestState();\n }\n },\n _selectNode: function _selectNode(node) {\n var _this21 = this;\n\n if (this.single || this.disableBranchNodes) {\n return this.addValue(node);\n }\n\n if (this.flat) {\n this.addValue(node);\n\n if (this.autoSelectAncestors) {\n node.ancestors.forEach(function (ancestor) {\n if (!_this21.isSelected(ancestor) && !ancestor.isDisabled) _this21.addValue(ancestor);\n });\n } else if (this.autoSelectDescendants) {\n this.traverseDescendantsBFS(node, function (descendant) {\n if (!_this21.isSelected(descendant) && !descendant.isDisabled) _this21.addValue(descendant);\n });\n }\n\n return;\n }\n\n var isFullyChecked = node.isLeaf || !node.hasDisabledDescendants || this.allowSelectingDisabledDescendants;\n\n if (isFullyChecked) {\n this.addValue(node);\n }\n\n if (node.isBranch) {\n this.traverseDescendantsBFS(node, function (descendant) {\n if (!descendant.isDisabled || _this21.allowSelectingDisabledDescendants) {\n _this21.addValue(descendant);\n }\n });\n }\n\n if (isFullyChecked) {\n var curr = node;\n\n while ((curr = curr.parentNode) !== NO_PARENT_NODE) {\n if (curr.children.every(this.isSelected)) this.addValue(curr);else break;\n }\n }\n },\n _deselectNode: function _deselectNode(node) {\n var _this22 = this;\n\n if (this.disableBranchNodes) {\n return this.removeValue(node);\n }\n\n if (this.flat) {\n this.removeValue(node);\n\n if (this.autoDeselectAncestors) {\n node.ancestors.forEach(function (ancestor) {\n if (_this22.isSelected(ancestor) && !ancestor.isDisabled) _this22.removeValue(ancestor);\n });\n } else if (this.autoDeselectDescendants) {\n this.traverseDescendantsBFS(node, function (descendant) {\n if (_this22.isSelected(descendant) && !descendant.isDisabled) _this22.removeValue(descendant);\n });\n }\n\n return;\n }\n\n var hasUncheckedSomeDescendants = false;\n\n if (node.isBranch) {\n this.traverseDescendantsDFS(node, function (descendant) {\n if (!descendant.isDisabled || _this22.allowSelectingDisabledDescendants) {\n _this22.removeValue(descendant);\n\n hasUncheckedSomeDescendants = true;\n }\n });\n }\n\n if (node.isLeaf || hasUncheckedSomeDescendants || node.children.length === 0) {\n this.removeValue(node);\n var curr = node;\n\n while ((curr = curr.parentNode) !== NO_PARENT_NODE) {\n if (this.isSelected(curr)) this.removeValue(curr);else break;\n }\n }\n },\n addValue: function addValue(node) {\n this.forest.selectedNodeIds.push(node.id);\n this.forest.selectedNodeMap[node.id] = true;\n },\n removeValue: function removeValue(node) {\n removeFromArray(this.forest.selectedNodeIds, node.id);\n delete this.forest.selectedNodeMap[node.id];\n },\n removeLastValue: function removeLastValue() {\n if (!this.hasValue) return;\n if (this.single) return this.clear();\n var lastValue = last_default()(this.internalValue);\n var lastSelectedNode = this.getNode(lastValue);\n this.select(lastSelectedNode);\n },\n saveMenuScrollPosition: function saveMenuScrollPosition() {\n var $menu = this.getMenu();\n if ($menu) this.menu.lastScrollPosition = $menu.scrollTop;\n },\n restoreMenuScrollPosition: function restoreMenuScrollPosition() {\n var $menu = this.getMenu();\n if ($menu) $menu.scrollTop = this.menu.lastScrollPosition;\n }\n },\n created: function created() {\n this.verifyProps();\n this.resetFlags();\n },\n mounted: function mounted() {\n if (this.autoFocus) this.focusInput();\n if (!this.options && !this.async && this.autoLoadRootOptions) this.loadRootOptions();\n if (this.alwaysOpen) this.openMenu();\n if (this.async && this.defaultOptions) this.handleRemoteSearch();\n },\n destroyed: function destroyed() {\n this.toggleClickOutsideEvent(false);\n }\n});\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/HiddenFields.vue?vue&type=script&lang=js&\n\n\nfunction stringifyValue(value) {\n if (typeof value === 'string') return value;\n if (value != null && !isNaN_isNaN(value)) return JSON.stringify(value);\n return '';\n}\n\n/* harmony default export */ var HiddenFieldsvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--hidden-fields',\n inject: ['instance'],\n functional: true,\n render: function render(_, context) {\n var h = arguments[0];\n var instance = context.injections.instance;\n if (!instance.name || instance.disabled || !instance.hasValue) return null;\n var stringifiedValues = instance.internalValue.map(stringifyValue);\n if (instance.multiple && instance.joinValues) stringifiedValues = [stringifiedValues.join(instance.delimiter)];\n return stringifiedValues.map(function (stringifiedValue, i) {\n return h(\"input\", {\n attrs: {\n type: \"hidden\",\n name: instance.name\n },\n domProps: {\n \"value\": stringifiedValue\n },\n key: 'hidden-field-' + i\n });\n });\n }\n});\n// CONCATENATED MODULE: ./src/components/HiddenFields.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_HiddenFieldsvue_type_script_lang_js_ = (HiddenFieldsvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n// CONCATENATED MODULE: ./src/components/HiddenFields.vue\nvar HiddenFields_render, staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar component = normalizeComponent(\n components_HiddenFieldsvue_type_script_lang_js_,\n HiddenFields_render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/HiddenFields.vue\"\n/* harmony default export */ var HiddenFields = (component.exports);\n// EXTERNAL MODULE: external \"babel-helper-vue-jsx-merge-props\"\nvar external_babel_helper_vue_jsx_merge_props_ = __webpack_require__(13);\nvar external_babel_helper_vue_jsx_merge_props_default = /*#__PURE__*/__webpack_require__.n(external_babel_helper_vue_jsx_merge_props_);\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Input.vue?vue&type=script&lang=js&\n\n\n\nvar keysThatRequireMenuBeingOpen = [KEY_CODES.ENTER, KEY_CODES.END, KEY_CODES.HOME, KEY_CODES.ARROW_LEFT, KEY_CODES.ARROW_UP, KEY_CODES.ARROW_RIGHT, KEY_CODES.ARROW_DOWN];\n/* harmony default export */ var Inputvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--input',\n inject: ['instance'],\n data: function data() {\n return {\n inputWidth: MIN_INPUT_WIDTH,\n value: ''\n };\n },\n computed: {\n needAutoSize: function needAutoSize() {\n var instance = this.instance;\n return instance.searchable && !instance.disabled && instance.multiple;\n },\n inputStyle: function inputStyle() {\n return {\n width: this.needAutoSize ? \"\".concat(this.inputWidth, \"px\") : null\n };\n }\n },\n watch: {\n 'instance.trigger.searchQuery': function instanceTriggerSearchQuery(newValue) {\n this.value = newValue;\n },\n value: function value() {\n if (this.needAutoSize) this.$nextTick(this.updateInputWidth);\n }\n },\n created: function created() {\n this.debouncedCallback = debounce_default()(this.updateSearchQuery, INPUT_DEBOUNCE_DELAY, {\n leading: true,\n trailing: true\n });\n },\n methods: {\n clear: function clear() {\n this.onInput({\n target: {\n value: ''\n }\n });\n },\n focus: function focus() {\n var instance = this.instance;\n\n if (!instance.disabled) {\n this.$refs.input && this.$refs.input.focus();\n }\n },\n blur: function blur() {\n this.$refs.input && this.$refs.input.blur();\n },\n onFocus: function onFocus() {\n var instance = this.instance;\n instance.trigger.isFocused = true;\n if (instance.openOnFocus) instance.openMenu();\n },\n onBlur: function onBlur() {\n var instance = this.instance;\n var menu = instance.getMenu();\n\n if (menu && document.activeElement === menu) {\n return this.focus();\n }\n\n instance.trigger.isFocused = false;\n instance.closeMenu();\n },\n onInput: function onInput(evt) {\n var value = evt.target.value;\n this.value = value;\n\n if (value) {\n this.debouncedCallback();\n } else {\n this.debouncedCallback.cancel();\n this.updateSearchQuery();\n }\n },\n onKeyDown: function onKeyDown(evt) {\n var instance = this.instance;\n var key = 'which' in evt ? evt.which : evt.keyCode;\n if (evt.ctrlKey || evt.shiftKey || evt.altKey || evt.metaKey) return;\n\n if (!instance.menu.isOpen && includes(keysThatRequireMenuBeingOpen, key)) {\n evt.preventDefault();\n return instance.openMenu();\n }\n\n switch (key) {\n case KEY_CODES.BACKSPACE:\n {\n if (instance.backspaceRemoves && !this.value.length) {\n instance.removeLastValue();\n }\n\n break;\n }\n\n case KEY_CODES.ENTER:\n {\n evt.preventDefault();\n if (instance.menu.current === null) return;\n var current = instance.getNode(instance.menu.current);\n if (current.isBranch && instance.disableBranchNodes) return;\n instance.select(current);\n break;\n }\n\n case KEY_CODES.ESCAPE:\n {\n if (this.value.length) {\n this.clear();\n } else if (instance.menu.isOpen) {\n instance.closeMenu();\n }\n\n break;\n }\n\n case KEY_CODES.END:\n {\n evt.preventDefault();\n instance.highlightLastOption();\n break;\n }\n\n case KEY_CODES.HOME:\n {\n evt.preventDefault();\n instance.highlightFirstOption();\n break;\n }\n\n case KEY_CODES.ARROW_LEFT:\n {\n var _current = instance.getNode(instance.menu.current);\n\n if (_current.isBranch && instance.shouldExpand(_current)) {\n evt.preventDefault();\n instance.toggleExpanded(_current);\n } else if (!_current.isRootNode && (_current.isLeaf || _current.isBranch && !instance.shouldExpand(_current))) {\n evt.preventDefault();\n instance.setCurrentHighlightedOption(_current.parentNode);\n }\n\n break;\n }\n\n case KEY_CODES.ARROW_UP:\n {\n evt.preventDefault();\n instance.highlightPrevOption();\n break;\n }\n\n case KEY_CODES.ARROW_RIGHT:\n {\n var _current2 = instance.getNode(instance.menu.current);\n\n if (_current2.isBranch && !instance.shouldExpand(_current2)) {\n evt.preventDefault();\n instance.toggleExpanded(_current2);\n }\n\n break;\n }\n\n case KEY_CODES.ARROW_DOWN:\n {\n evt.preventDefault();\n instance.highlightNextOption();\n break;\n }\n\n case KEY_CODES.DELETE:\n {\n if (instance.deleteRemoves && !this.value.length) {\n instance.removeLastValue();\n }\n\n break;\n }\n\n default:\n {\n instance.openMenu();\n }\n }\n },\n onMouseDown: function onMouseDown(evt) {\n if (this.value.length) {\n evt.stopPropagation();\n }\n },\n renderInputContainer: function renderInputContainer() {\n var h = this.$createElement;\n var instance = this.instance;\n var props = {};\n var children = [];\n\n if (instance.searchable && !instance.disabled) {\n children.push(this.renderInput());\n if (this.needAutoSize) children.push(this.renderSizer());\n }\n\n if (!instance.searchable) {\n deepExtend(props, {\n on: {\n focus: this.onFocus,\n blur: this.onBlur,\n keydown: this.onKeyDown\n },\n ref: 'input'\n });\n }\n\n if (!instance.searchable && !instance.disabled) {\n deepExtend(props, {\n attrs: {\n tabIndex: instance.tabIndex\n }\n });\n }\n\n return h(\"div\", external_babel_helper_vue_jsx_merge_props_default()([{\n \"class\": \"vue-treeselect__input-container\"\n }, props]), [children]);\n },\n renderInput: function renderInput() {\n var h = this.$createElement;\n var instance = this.instance;\n return h(\"input\", {\n ref: \"input\",\n \"class\": \"vue-treeselect__input\",\n attrs: {\n type: \"text\",\n autocomplete: \"off\",\n tabIndex: instance.tabIndex,\n required: instance.required && !instance.hasValue\n },\n domProps: {\n \"value\": this.value\n },\n style: this.inputStyle,\n on: {\n \"focus\": this.onFocus,\n \"input\": this.onInput,\n \"blur\": this.onBlur,\n \"keydown\": this.onKeyDown,\n \"mousedown\": this.onMouseDown\n }\n });\n },\n renderSizer: function renderSizer() {\n var h = this.$createElement;\n return h(\"div\", {\n ref: \"sizer\",\n \"class\": \"vue-treeselect__sizer\"\n }, [this.value]);\n },\n updateInputWidth: function updateInputWidth() {\n this.inputWidth = Math.max(MIN_INPUT_WIDTH, this.$refs.sizer.scrollWidth + 15);\n },\n updateSearchQuery: function updateSearchQuery() {\n var instance = this.instance;\n instance.trigger.searchQuery = this.value;\n }\n },\n render: function render() {\n return this.renderInputContainer();\n }\n});\n// CONCATENATED MODULE: ./src/components/Input.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_Inputvue_type_script_lang_js_ = (Inputvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/Input.vue\nvar Input_render, Input_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar Input_component = normalizeComponent(\n components_Inputvue_type_script_lang_js_,\n Input_render,\n Input_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Input_api; }\nInput_component.options.__file = \"src/components/Input.vue\"\n/* harmony default export */ var Input = (Input_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Placeholder.vue?vue&type=script&lang=js&\n/* harmony default export */ var Placeholdervue_type_script_lang_js_ = ({\n name: 'vue-treeselect--placeholder',\n inject: ['instance'],\n render: function render() {\n var h = arguments[0];\n var instance = this.instance;\n var placeholderClass = {\n 'vue-treeselect__placeholder': true,\n 'vue-treeselect-helper-zoom-effect-off': true,\n 'vue-treeselect-helper-hide': instance.hasValue || instance.trigger.searchQuery\n };\n return h(\"div\", {\n \"class\": placeholderClass\n }, [instance.placeholder]);\n }\n});\n// CONCATENATED MODULE: ./src/components/Placeholder.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_Placeholdervue_type_script_lang_js_ = (Placeholdervue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/Placeholder.vue\nvar Placeholder_render, Placeholder_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar Placeholder_component = normalizeComponent(\n components_Placeholdervue_type_script_lang_js_,\n Placeholder_render,\n Placeholder_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Placeholder_api; }\nPlaceholder_component.options.__file = \"src/components/Placeholder.vue\"\n/* harmony default export */ var Placeholder = (Placeholder_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/SingleValue.vue?vue&type=script&lang=js&\n\n\n/* harmony default export */ var SingleValuevue_type_script_lang_js_ = ({\n name: 'vue-treeselect--single-value',\n inject: ['instance'],\n methods: {\n renderSingleValueLabel: function renderSingleValueLabel() {\n var instance = this.instance;\n var node = instance.selectedNodes[0];\n var customValueLabelRenderer = instance.$scopedSlots['value-label'];\n return customValueLabelRenderer ? customValueLabelRenderer({\n node: node\n }) : node.label;\n }\n },\n render: function render() {\n var h = arguments[0];\n var instance = this.instance,\n renderValueContainer = this.$parent.renderValueContainer;\n var shouldShowValue = instance.hasValue && !instance.trigger.searchQuery;\n return renderValueContainer([shouldShowValue && h(\"div\", {\n \"class\": \"vue-treeselect__single-value\"\n }, [this.renderSingleValueLabel()]), h(Placeholder), h(Input, {\n ref: \"input\"\n })]);\n }\n});\n// CONCATENATED MODULE: ./src/components/SingleValue.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_SingleValuevue_type_script_lang_js_ = (SingleValuevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/SingleValue.vue\nvar SingleValue_render, SingleValue_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar SingleValue_component = normalizeComponent(\n components_SingleValuevue_type_script_lang_js_,\n SingleValue_render,\n SingleValue_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var SingleValue_api; }\nSingleValue_component.options.__file = \"src/components/SingleValue.vue\"\n/* harmony default export */ var SingleValue = (SingleValue_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js!./node_modules/vue-loader/lib??vue-loader-options!./src/components/icons/Delete.vue?vue&type=template&id=364b6320&\nvar Deletevue_type_template_id_364b6320_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"svg\",\n {\n attrs: {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 348.333 348.333\"\n }\n },\n [\n _c(\"path\", {\n attrs: {\n d:\n \"M336.559 68.611L231.016 174.165l105.543 105.549c15.699 15.705 15.699 41.145 0 56.85-7.844 7.844-18.128 11.769-28.407 11.769-10.296 0-20.581-3.919-28.419-11.769L174.167 231.003 68.609 336.563c-7.843 7.844-18.128 11.769-28.416 11.769-10.285 0-20.563-3.919-28.413-11.769-15.699-15.698-15.699-41.139 0-56.85l105.54-105.549L11.774 68.611c-15.699-15.699-15.699-41.145 0-56.844 15.696-15.687 41.127-15.687 56.829 0l105.563 105.554L279.721 11.767c15.705-15.687 41.139-15.687 56.832 0 15.705 15.699 15.705 41.145.006 56.844z\"\n }\n })\n ]\n )\n}\nvar Deletevue_type_template_id_364b6320_staticRenderFns = []\nDeletevue_type_template_id_364b6320_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./src/components/icons/Delete.vue?vue&type=template&id=364b6320&\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/icons/Delete.vue?vue&type=script&lang=js&\n/* harmony default export */ var Deletevue_type_script_lang_js_ = ({\n name: 'vue-treeselect--x'\n});\n// CONCATENATED MODULE: ./src/components/icons/Delete.vue?vue&type=script&lang=js&\n /* harmony default export */ var icons_Deletevue_type_script_lang_js_ = (Deletevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/icons/Delete.vue\n\n\n\n\n\n/* normalize component */\n\nvar Delete_component = normalizeComponent(\n icons_Deletevue_type_script_lang_js_,\n Deletevue_type_template_id_364b6320_render,\n Deletevue_type_template_id_364b6320_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Delete_api; }\nDelete_component.options.__file = \"src/components/icons/Delete.vue\"\n/* harmony default export */ var Delete = (Delete_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/MultiValueItem.vue?vue&type=script&lang=js&\n\n\n/* harmony default export */ var MultiValueItemvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--multi-value-item',\n inject: ['instance'],\n props: {\n node: {\n type: Object,\n required: true\n }\n },\n methods: {\n handleMouseDown: onLeftClick(function handleMouseDown() {\n var instance = this.instance,\n node = this.node;\n instance.select(node);\n })\n },\n render: function render() {\n var h = arguments[0];\n var instance = this.instance,\n node = this.node;\n var itemClass = {\n 'vue-treeselect__multi-value-item': true,\n 'vue-treeselect__multi-value-item-disabled': node.isDisabled,\n 'vue-treeselect__multi-value-item-new': node.isNew\n };\n var customValueLabelRenderer = instance.$scopedSlots['value-label'];\n var labelRenderer = customValueLabelRenderer ? customValueLabelRenderer({\n node: node\n }) : node.label;\n return h(\"div\", {\n \"class\": \"vue-treeselect__multi-value-item-container\"\n }, [h(\"div\", {\n \"class\": itemClass,\n on: {\n \"mousedown\": this.handleMouseDown\n }\n }, [h(\"span\", {\n \"class\": \"vue-treeselect__multi-value-label\"\n }, [labelRenderer]), h(\"span\", {\n \"class\": \"vue-treeselect__icon vue-treeselect__value-remove\"\n }, [h(Delete)])])]);\n }\n});\n// CONCATENATED MODULE: ./src/components/MultiValueItem.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_MultiValueItemvue_type_script_lang_js_ = (MultiValueItemvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/MultiValueItem.vue\nvar MultiValueItem_render, MultiValueItem_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar MultiValueItem_component = normalizeComponent(\n components_MultiValueItemvue_type_script_lang_js_,\n MultiValueItem_render,\n MultiValueItem_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var MultiValueItem_api; }\nMultiValueItem_component.options.__file = \"src/components/MultiValueItem.vue\"\n/* harmony default export */ var MultiValueItem = (MultiValueItem_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/MultiValue.vue?vue&type=script&lang=js&\n\n\n\n\n/* harmony default export */ var MultiValuevue_type_script_lang_js_ = ({\n name: 'vue-treeselect--multi-value',\n inject: ['instance'],\n methods: {\n renderMultiValueItems: function renderMultiValueItems() {\n var h = this.$createElement;\n var instance = this.instance;\n return instance.internalValue.slice(0, instance.limit).map(instance.getNode).map(function (node) {\n return h(MultiValueItem, {\n key: \"multi-value-item-\".concat(node.id),\n attrs: {\n node: node\n }\n });\n });\n },\n renderExceedLimitTip: function renderExceedLimitTip() {\n var h = this.$createElement;\n var instance = this.instance;\n var count = instance.internalValue.length - instance.limit;\n if (count <= 0) return null;\n return h(\"div\", {\n \"class\": \"vue-treeselect__limit-tip vue-treeselect-helper-zoom-effect-off\",\n key: \"exceed-limit-tip\"\n }, [h(\"span\", {\n \"class\": \"vue-treeselect__limit-tip-text\"\n }, [instance.limitText(count)])]);\n }\n },\n render: function render() {\n var h = arguments[0];\n var renderValueContainer = this.$parent.renderValueContainer;\n var transitionGroupProps = {\n props: {\n tag: 'div',\n name: 'vue-treeselect__multi-value-item--transition',\n appear: true\n }\n };\n return renderValueContainer(h(\"transition-group\", external_babel_helper_vue_jsx_merge_props_default()([{\n \"class\": \"vue-treeselect__multi-value\"\n }, transitionGroupProps]), [this.renderMultiValueItems(), this.renderExceedLimitTip(), h(Placeholder, {\n key: \"placeholder\"\n }), h(Input, {\n ref: \"input\",\n key: \"input\"\n })]));\n }\n});\n// CONCATENATED MODULE: ./src/components/MultiValue.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_MultiValuevue_type_script_lang_js_ = (MultiValuevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/MultiValue.vue\nvar MultiValue_render, MultiValue_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar MultiValue_component = normalizeComponent(\n components_MultiValuevue_type_script_lang_js_,\n MultiValue_render,\n MultiValue_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var MultiValue_api; }\nMultiValue_component.options.__file = \"src/components/MultiValue.vue\"\n/* harmony default export */ var MultiValue = (MultiValue_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js!./node_modules/vue-loader/lib??vue-loader-options!./src/components/icons/Arrow.vue?vue&type=template&id=11186cd4&\nvar Arrowvue_type_template_id_11186cd4_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"svg\",\n {\n attrs: {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 292.362 292.362\"\n }\n },\n [\n _c(\"path\", {\n attrs: {\n d:\n \"M286.935 69.377c-3.614-3.617-7.898-5.424-12.848-5.424H18.274c-4.952 0-9.233 1.807-12.85 5.424C1.807 72.998 0 77.279 0 82.228c0 4.948 1.807 9.229 5.424 12.847l127.907 127.907c3.621 3.617 7.902 5.428 12.85 5.428s9.233-1.811 12.847-5.428L286.935 95.074c3.613-3.617 5.427-7.898 5.427-12.847 0-4.948-1.814-9.229-5.427-12.85z\"\n }\n })\n ]\n )\n}\nvar Arrowvue_type_template_id_11186cd4_staticRenderFns = []\nArrowvue_type_template_id_11186cd4_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./src/components/icons/Arrow.vue?vue&type=template&id=11186cd4&\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/icons/Arrow.vue?vue&type=script&lang=js&\n/* harmony default export */ var Arrowvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--arrow'\n});\n// CONCATENATED MODULE: ./src/components/icons/Arrow.vue?vue&type=script&lang=js&\n /* harmony default export */ var icons_Arrowvue_type_script_lang_js_ = (Arrowvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/icons/Arrow.vue\n\n\n\n\n\n/* normalize component */\n\nvar Arrow_component = normalizeComponent(\n icons_Arrowvue_type_script_lang_js_,\n Arrowvue_type_template_id_11186cd4_render,\n Arrowvue_type_template_id_11186cd4_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Arrow_api; }\nArrow_component.options.__file = \"src/components/icons/Arrow.vue\"\n/* harmony default export */ var Arrow = (Arrow_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Control.vue?vue&type=script&lang=js&\n\n\n\n\n\n/* harmony default export */ var Controlvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--control',\n inject: ['instance'],\n computed: {\n shouldShowX: function shouldShowX() {\n var instance = this.instance;\n return instance.clearable && !instance.disabled && instance.hasValue && (this.hasUndisabledValue || instance.allowClearingDisabled);\n },\n shouldShowArrow: function shouldShowArrow() {\n var instance = this.instance;\n if (!instance.alwaysOpen) return true;\n return !instance.menu.isOpen;\n },\n hasUndisabledValue: function hasUndisabledValue() {\n var instance = this.instance;\n return instance.hasValue && instance.internalValue.some(function (id) {\n return !instance.getNode(id).isDisabled;\n });\n }\n },\n methods: {\n renderX: function renderX() {\n var h = this.$createElement;\n var instance = this.instance;\n var title = instance.multiple ? instance.clearAllText : instance.clearValueText;\n if (!this.shouldShowX) return null;\n return h(\"div\", {\n \"class\": \"vue-treeselect__x-container\",\n attrs: {\n title: title\n },\n on: {\n \"mousedown\": this.handleMouseDownOnX\n }\n }, [h(Delete, {\n \"class\": \"vue-treeselect__x\"\n })]);\n },\n renderArrow: function renderArrow() {\n var h = this.$createElement;\n var instance = this.instance;\n var arrowClass = {\n 'vue-treeselect__control-arrow': true,\n 'vue-treeselect__control-arrow--rotated': instance.menu.isOpen\n };\n if (!this.shouldShowArrow) return null;\n return h(\"div\", {\n \"class\": \"vue-treeselect__control-arrow-container\",\n on: {\n \"mousedown\": this.handleMouseDownOnArrow\n }\n }, [h(Arrow, {\n \"class\": arrowClass\n })]);\n },\n handleMouseDownOnX: onLeftClick(function handleMouseDownOnX(evt) {\n evt.stopPropagation();\n evt.preventDefault();\n var instance = this.instance;\n var result = instance.beforeClearAll();\n\n var handler = function handler(shouldClear) {\n if (shouldClear) instance.clear();\n };\n\n if (external_is_promise_default()(result)) {\n result.then(handler);\n } else {\n setTimeout(function () {\n return handler(result);\n }, 0);\n }\n }),\n handleMouseDownOnArrow: onLeftClick(function handleMouseDownOnArrow(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n var instance = this.instance;\n instance.focusInput();\n instance.toggleMenu();\n }),\n renderValueContainer: function renderValueContainer(children) {\n var h = this.$createElement;\n return h(\"div\", {\n \"class\": \"vue-treeselect__value-container\"\n }, [children]);\n }\n },\n render: function render() {\n var h = arguments[0];\n var instance = this.instance;\n var ValueContainer = instance.single ? SingleValue : MultiValue;\n return h(\"div\", {\n \"class\": \"vue-treeselect__control\",\n on: {\n \"mousedown\": instance.handleMouseDown\n }\n }, [h(ValueContainer, {\n ref: \"value-container\"\n }), this.renderX(), this.renderArrow()]);\n }\n});\n// CONCATENATED MODULE: ./src/components/Control.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_Controlvue_type_script_lang_js_ = (Controlvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/Control.vue\nvar Control_render, Control_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar Control_component = normalizeComponent(\n components_Controlvue_type_script_lang_js_,\n Control_render,\n Control_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Control_api; }\nControl_component.options.__file = \"src/components/Control.vue\"\n/* harmony default export */ var Control = (Control_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Tip.vue?vue&type=script&lang=js&\n/* harmony default export */ var Tipvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--tip',\n functional: true,\n props: {\n type: {\n type: String,\n required: true\n },\n icon: {\n type: String,\n required: true\n }\n },\n render: function render(_, context) {\n var h = arguments[0];\n var props = context.props,\n children = context.children;\n return h(\"div\", {\n \"class\": \"vue-treeselect__tip vue-treeselect__\".concat(props.type, \"-tip\")\n }, [h(\"div\", {\n \"class\": \"vue-treeselect__icon-container\"\n }, [h(\"span\", {\n \"class\": \"vue-treeselect__icon-\".concat(props.icon)\n })]), h(\"span\", {\n \"class\": \"vue-treeselect__tip-text vue-treeselect__\".concat(props.type, \"-tip-text\")\n }, [children])]);\n }\n});\n// CONCATENATED MODULE: ./src/components/Tip.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_Tipvue_type_script_lang_js_ = (Tipvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/Tip.vue\nvar Tip_render, Tip_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar Tip_component = normalizeComponent(\n components_Tipvue_type_script_lang_js_,\n Tip_render,\n Tip_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Tip_api; }\nTip_component.options.__file = \"src/components/Tip.vue\"\n/* harmony default export */ var Tip = (Tip_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Option.vue?vue&type=script&lang=js&\n\n\n\n\n\nvar arrowPlaceholder, checkMark, minusMark;\nvar Option = {\n name: 'vue-treeselect--option',\n inject: ['instance'],\n props: {\n node: {\n type: Object,\n required: true\n }\n },\n computed: {\n shouldExpand: function shouldExpand() {\n var instance = this.instance,\n node = this.node;\n return node.isBranch && instance.shouldExpand(node);\n },\n shouldShow: function shouldShow() {\n var instance = this.instance,\n node = this.node;\n return instance.shouldShowOptionInMenu(node);\n }\n },\n methods: {\n renderOption: function renderOption() {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n var optionClass = {\n 'vue-treeselect__option': true,\n 'vue-treeselect__option--disabled': node.isDisabled,\n 'vue-treeselect__option--selected': instance.isSelected(node),\n 'vue-treeselect__option--highlight': node.isHighlighted,\n 'vue-treeselect__option--matched': instance.localSearch.active && node.isMatched,\n 'vue-treeselect__option--hide': !this.shouldShow\n };\n return h(\"div\", {\n \"class\": optionClass,\n on: {\n \"mouseenter\": this.handleMouseEnterOption\n },\n attrs: {\n \"data-id\": node.id\n }\n }, [this.renderArrow(), this.renderLabelContainer([this.renderCheckboxContainer([this.renderCheckbox()]), this.renderLabel()])]);\n },\n renderSubOptionsList: function renderSubOptionsList() {\n var h = this.$createElement;\n if (!this.shouldExpand) return null;\n return h(\"div\", {\n \"class\": \"vue-treeselect__list\"\n }, [this.renderSubOptions(), this.renderNoChildrenTip(), this.renderLoadingChildrenTip(), this.renderLoadingChildrenErrorTip()]);\n },\n renderArrow: function renderArrow() {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n if (instance.shouldFlattenOptions && this.shouldShow) return null;\n\n if (node.isBranch) {\n var transitionProps = {\n props: {\n name: 'vue-treeselect__option-arrow--prepare',\n appear: true\n }\n };\n var arrowClass = {\n 'vue-treeselect__option-arrow': true,\n 'vue-treeselect__option-arrow--rotated': this.shouldExpand\n };\n return h(\"div\", {\n \"class\": \"vue-treeselect__option-arrow-container\",\n on: {\n \"mousedown\": this.handleMouseDownOnArrow\n }\n }, [h(\"transition\", transitionProps, [h(Arrow, {\n \"class\": arrowClass\n })])]);\n }\n\n if (instance.hasBranchNodes) {\n if (!arrowPlaceholder) arrowPlaceholder = h(\"div\", {\n \"class\": \"vue-treeselect__option-arrow-placeholder\"\n }, [\"\\xA0\"]);\n return arrowPlaceholder;\n }\n\n return null;\n },\n renderLabelContainer: function renderLabelContainer(children) {\n var h = this.$createElement;\n return h(\"div\", {\n \"class\": \"vue-treeselect__label-container\",\n on: {\n \"mousedown\": this.handleMouseDownOnLabelContainer\n }\n }, [children]);\n },\n renderCheckboxContainer: function renderCheckboxContainer(children) {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n if (instance.single) return null;\n if (instance.disableBranchNodes && node.isBranch) return null;\n return h(\"div\", {\n \"class\": \"vue-treeselect__checkbox-container\"\n }, [children]);\n },\n renderCheckbox: function renderCheckbox() {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n var checkedState = instance.forest.checkedStateMap[node.id];\n var checkboxClass = {\n 'vue-treeselect__checkbox': true,\n 'vue-treeselect__checkbox--checked': checkedState === CHECKED,\n 'vue-treeselect__checkbox--indeterminate': checkedState === INDETERMINATE,\n 'vue-treeselect__checkbox--unchecked': checkedState === UNCHECKED,\n 'vue-treeselect__checkbox--disabled': node.isDisabled\n };\n if (!checkMark) checkMark = h(\"span\", {\n \"class\": \"vue-treeselect__check-mark\"\n });\n if (!minusMark) minusMark = h(\"span\", {\n \"class\": \"vue-treeselect__minus-mark\"\n });\n return h(\"span\", {\n \"class\": checkboxClass\n }, [checkMark, minusMark]);\n },\n renderLabel: function renderLabel() {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n var shouldShowCount = node.isBranch && (instance.localSearch.active ? instance.showCountOnSearchComputed : instance.showCount);\n var count = shouldShowCount ? instance.localSearch.active ? instance.localSearch.countMap[node.id][instance.showCountOf] : node.count[instance.showCountOf] : NaN;\n var labelClassName = 'vue-treeselect__label';\n var countClassName = 'vue-treeselect__count';\n var customLabelRenderer = instance.$scopedSlots['option-label'];\n if (customLabelRenderer) return customLabelRenderer({\n node: node,\n shouldShowCount: shouldShowCount,\n count: count,\n labelClassName: labelClassName,\n countClassName: countClassName\n });\n return h(\"label\", {\n \"class\": labelClassName\n }, [node.label, shouldShowCount && h(\"span\", {\n \"class\": countClassName\n }, [\"(\", count, \")\"])]);\n },\n renderSubOptions: function renderSubOptions() {\n var h = this.$createElement;\n var node = this.node;\n if (!node.childrenStates.isLoaded) return null;\n return node.children.map(function (childNode) {\n return h(Option, {\n attrs: {\n node: childNode\n },\n key: childNode.id\n });\n });\n },\n renderNoChildrenTip: function renderNoChildrenTip() {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n if (!node.childrenStates.isLoaded || node.children.length) return null;\n return h(Tip, {\n attrs: {\n type: \"no-children\",\n icon: \"warning\"\n }\n }, [instance.noChildrenText]);\n },\n renderLoadingChildrenTip: function renderLoadingChildrenTip() {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n if (!node.childrenStates.isLoading) return null;\n return h(Tip, {\n attrs: {\n type: \"loading\",\n icon: \"loader\"\n }\n }, [instance.loadingText]);\n },\n renderLoadingChildrenErrorTip: function renderLoadingChildrenErrorTip() {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n if (!node.childrenStates.loadingError) return null;\n return h(Tip, {\n attrs: {\n type: \"error\",\n icon: \"error\"\n }\n }, [node.childrenStates.loadingError, h(\"a\", {\n \"class\": \"vue-treeselect__retry\",\n attrs: {\n title: instance.retryTitle\n },\n on: {\n \"mousedown\": this.handleMouseDownOnRetry\n }\n }, [instance.retryText])]);\n },\n handleMouseEnterOption: function handleMouseEnterOption(evt) {\n var instance = this.instance,\n node = this.node;\n if (evt.target !== evt.currentTarget) return;\n instance.setCurrentHighlightedOption(node, false);\n },\n handleMouseDownOnArrow: onLeftClick(function handleMouseDownOnOptionArrow() {\n var instance = this.instance,\n node = this.node;\n instance.toggleExpanded(node);\n }),\n handleMouseDownOnLabelContainer: onLeftClick(function handleMouseDownOnLabelContainer() {\n var instance = this.instance,\n node = this.node;\n\n if (node.isBranch && instance.disableBranchNodes) {\n instance.toggleExpanded(node);\n } else {\n instance.select(node);\n }\n }),\n handleMouseDownOnRetry: onLeftClick(function handleMouseDownOnRetry() {\n var instance = this.instance,\n node = this.node;\n instance.loadChildrenOptions(node);\n })\n },\n render: function render() {\n var h = arguments[0];\n var node = this.node;\n var indentLevel = this.instance.shouldFlattenOptions ? 0 : node.level;\n\n var listItemClass = defineProperty_default()({\n 'vue-treeselect__list-item': true\n }, \"vue-treeselect__indent-level-\".concat(indentLevel), true);\n\n var transitionProps = {\n props: {\n name: 'vue-treeselect__list--transition'\n }\n };\n return h(\"div\", {\n \"class\": listItemClass\n }, [this.renderOption(), node.isBranch && h(\"transition\", transitionProps, [this.renderSubOptionsList()])]);\n }\n};\n/* harmony default export */ var Optionvue_type_script_lang_js_ = (Option);\n// CONCATENATED MODULE: ./src/components/Option.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_Optionvue_type_script_lang_js_ = (Optionvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/Option.vue\nvar Option_render, Option_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar Option_component = normalizeComponent(\n components_Optionvue_type_script_lang_js_,\n Option_render,\n Option_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Option_api; }\nOption_component.options.__file = \"src/components/Option.vue\"\n/* harmony default export */ var components_Option = (Option_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Menu.vue?vue&type=script&lang=js&\n\n\n\n\nvar directionMap = {\n top: 'top',\n bottom: 'bottom',\n above: 'top',\n below: 'bottom'\n};\n/* harmony default export */ var Menuvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--menu',\n inject: ['instance'],\n computed: {\n menuStyle: function menuStyle() {\n var instance = this.instance;\n return {\n maxHeight: instance.maxHeight + 'px'\n };\n },\n menuContainerStyle: function menuContainerStyle() {\n var instance = this.instance;\n return {\n zIndex: instance.appendToBody ? null : instance.zIndex\n };\n }\n },\n watch: {\n 'instance.menu.isOpen': function instanceMenuIsOpen(newValue) {\n if (newValue) {\n this.$nextTick(this.onMenuOpen);\n } else {\n this.onMenuClose();\n }\n }\n },\n created: function created() {\n this.menuSizeWatcher = null;\n this.menuResizeAndScrollEventListeners = null;\n },\n mounted: function mounted() {\n var instance = this.instance;\n if (instance.menu.isOpen) this.$nextTick(this.onMenuOpen);\n },\n destroyed: function destroyed() {\n this.onMenuClose();\n },\n methods: {\n renderMenu: function renderMenu() {\n var h = this.$createElement;\n var instance = this.instance;\n if (!instance.menu.isOpen) return null;\n return h(\"div\", {\n ref: \"menu\",\n \"class\": \"vue-treeselect__menu\",\n on: {\n \"mousedown\": instance.handleMouseDown\n },\n style: this.menuStyle\n }, [this.renderBeforeList(), instance.async ? this.renderAsyncSearchMenuInner() : instance.localSearch.active ? this.renderLocalSearchMenuInner() : this.renderNormalMenuInner(), this.renderAfterList()]);\n },\n renderBeforeList: function renderBeforeList() {\n var instance = this.instance;\n var beforeListRenderer = instance.$scopedSlots['before-list'];\n return beforeListRenderer ? beforeListRenderer() : null;\n },\n renderAfterList: function renderAfterList() {\n var instance = this.instance;\n var afterListRenderer = instance.$scopedSlots['after-list'];\n return afterListRenderer ? afterListRenderer() : null;\n },\n renderNormalMenuInner: function renderNormalMenuInner() {\n var instance = this.instance;\n\n if (instance.rootOptionsStates.isLoading) {\n return this.renderLoadingOptionsTip();\n } else if (instance.rootOptionsStates.loadingError) {\n return this.renderLoadingRootOptionsErrorTip();\n } else if (instance.rootOptionsStates.isLoaded && instance.forest.normalizedOptions.length === 0) {\n return this.renderNoAvailableOptionsTip();\n } else {\n return this.renderOptionList();\n }\n },\n renderLocalSearchMenuInner: function renderLocalSearchMenuInner() {\n var instance = this.instance;\n\n if (instance.rootOptionsStates.isLoading) {\n return this.renderLoadingOptionsTip();\n } else if (instance.rootOptionsStates.loadingError) {\n return this.renderLoadingRootOptionsErrorTip();\n } else if (instance.rootOptionsStates.isLoaded && instance.forest.normalizedOptions.length === 0) {\n return this.renderNoAvailableOptionsTip();\n } else if (instance.localSearch.noResults) {\n return this.renderNoResultsTip();\n } else {\n return this.renderOptionList();\n }\n },\n renderAsyncSearchMenuInner: function renderAsyncSearchMenuInner() {\n var instance = this.instance;\n var entry = instance.getRemoteSearchEntry();\n var shouldShowSearchPromptTip = instance.trigger.searchQuery === '' && !instance.defaultOptions;\n var shouldShowNoResultsTip = shouldShowSearchPromptTip ? false : entry.isLoaded && entry.options.length === 0;\n\n if (shouldShowSearchPromptTip) {\n return this.renderSearchPromptTip();\n } else if (entry.isLoading) {\n return this.renderLoadingOptionsTip();\n } else if (entry.loadingError) {\n return this.renderAsyncSearchLoadingErrorTip();\n } else if (shouldShowNoResultsTip) {\n return this.renderNoResultsTip();\n } else {\n return this.renderOptionList();\n }\n },\n renderOptionList: function renderOptionList() {\n var h = this.$createElement;\n var instance = this.instance;\n return h(\"div\", {\n \"class\": \"vue-treeselect__list\"\n }, [instance.forest.normalizedOptions.map(function (rootNode) {\n return h(components_Option, {\n attrs: {\n node: rootNode\n },\n key: rootNode.id\n });\n })]);\n },\n renderSearchPromptTip: function renderSearchPromptTip() {\n var h = this.$createElement;\n var instance = this.instance;\n return h(Tip, {\n attrs: {\n type: \"search-prompt\",\n icon: \"warning\"\n }\n }, [instance.searchPromptText]);\n },\n renderLoadingOptionsTip: function renderLoadingOptionsTip() {\n var h = this.$createElement;\n var instance = this.instance;\n return h(Tip, {\n attrs: {\n type: \"loading\",\n icon: \"loader\"\n }\n }, [instance.loadingText]);\n },\n renderLoadingRootOptionsErrorTip: function renderLoadingRootOptionsErrorTip() {\n var h = this.$createElement;\n var instance = this.instance;\n return h(Tip, {\n attrs: {\n type: \"error\",\n icon: \"error\"\n }\n }, [instance.rootOptionsStates.loadingError, h(\"a\", {\n \"class\": \"vue-treeselect__retry\",\n on: {\n \"click\": instance.loadRootOptions\n },\n attrs: {\n title: instance.retryTitle\n }\n }, [instance.retryText])]);\n },\n renderAsyncSearchLoadingErrorTip: function renderAsyncSearchLoadingErrorTip() {\n var h = this.$createElement;\n var instance = this.instance;\n var entry = instance.getRemoteSearchEntry();\n return h(Tip, {\n attrs: {\n type: \"error\",\n icon: \"error\"\n }\n }, [entry.loadingError, h(\"a\", {\n \"class\": \"vue-treeselect__retry\",\n on: {\n \"click\": instance.handleRemoteSearch\n },\n attrs: {\n title: instance.retryTitle\n }\n }, [instance.retryText])]);\n },\n renderNoAvailableOptionsTip: function renderNoAvailableOptionsTip() {\n var h = this.$createElement;\n var instance = this.instance;\n return h(Tip, {\n attrs: {\n type: \"no-options\",\n icon: \"warning\"\n }\n }, [instance.noOptionsText]);\n },\n renderNoResultsTip: function renderNoResultsTip() {\n var h = this.$createElement;\n var instance = this.instance;\n return h(Tip, {\n attrs: {\n type: \"no-results\",\n icon: \"warning\"\n }\n }, [instance.noResultsText]);\n },\n onMenuOpen: function onMenuOpen() {\n this.adjustMenuOpenDirection();\n this.setupMenuSizeWatcher();\n this.setupMenuResizeAndScrollEventListeners();\n },\n onMenuClose: function onMenuClose() {\n this.removeMenuSizeWatcher();\n this.removeMenuResizeAndScrollEventListeners();\n },\n adjustMenuOpenDirection: function adjustMenuOpenDirection() {\n var instance = this.instance;\n if (!instance.menu.isOpen) return;\n var $menu = instance.getMenu();\n var $control = instance.getControl();\n var menuRect = $menu.getBoundingClientRect();\n var controlRect = $control.getBoundingClientRect();\n var menuHeight = menuRect.height;\n var viewportHeight = window.innerHeight;\n var spaceAbove = controlRect.top;\n var spaceBelow = window.innerHeight - controlRect.bottom;\n var isControlInViewport = controlRect.top >= 0 && controlRect.top <= viewportHeight || controlRect.top < 0 && controlRect.bottom > 0;\n var hasEnoughSpaceBelow = spaceBelow > menuHeight + MENU_BUFFER;\n var hasEnoughSpaceAbove = spaceAbove > menuHeight + MENU_BUFFER;\n\n if (!isControlInViewport) {\n instance.closeMenu();\n } else if (instance.openDirection !== 'auto') {\n instance.menu.placement = directionMap[instance.openDirection];\n } else if (hasEnoughSpaceBelow || !hasEnoughSpaceAbove) {\n instance.menu.placement = 'bottom';\n } else {\n instance.menu.placement = 'top';\n }\n },\n setupMenuSizeWatcher: function setupMenuSizeWatcher() {\n var instance = this.instance;\n var $menu = instance.getMenu();\n if (this.menuSizeWatcher) return;\n this.menuSizeWatcher = {\n remove: watchSize($menu, this.adjustMenuOpenDirection)\n };\n },\n setupMenuResizeAndScrollEventListeners: function setupMenuResizeAndScrollEventListeners() {\n var instance = this.instance;\n var $control = instance.getControl();\n if (this.menuResizeAndScrollEventListeners) return;\n this.menuResizeAndScrollEventListeners = {\n remove: setupResizeAndScrollEventListeners($control, this.adjustMenuOpenDirection)\n };\n },\n removeMenuSizeWatcher: function removeMenuSizeWatcher() {\n if (!this.menuSizeWatcher) return;\n this.menuSizeWatcher.remove();\n this.menuSizeWatcher = null;\n },\n removeMenuResizeAndScrollEventListeners: function removeMenuResizeAndScrollEventListeners() {\n if (!this.menuResizeAndScrollEventListeners) return;\n this.menuResizeAndScrollEventListeners.remove();\n this.menuResizeAndScrollEventListeners = null;\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n ref: \"menu-container\",\n \"class\": \"vue-treeselect__menu-container\",\n style: this.menuContainerStyle\n }, [h(\"transition\", {\n attrs: {\n name: \"vue-treeselect__menu--transition\"\n }\n }, [this.renderMenu()])]);\n }\n});\n// CONCATENATED MODULE: ./src/components/Menu.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_Menuvue_type_script_lang_js_ = (Menuvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/Menu.vue\nvar Menu_render, Menu_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar Menu_component = normalizeComponent(\n components_Menuvue_type_script_lang_js_,\n Menu_render,\n Menu_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Menu_api; }\nMenu_component.options.__file = \"src/components/Menu.vue\"\n/* harmony default export */ var Menu = (Menu_component.exports);\n// EXTERNAL MODULE: external \"vue\"\nvar external_vue_ = __webpack_require__(14);\nvar external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/MenuPortal.vue?vue&type=script&lang=js&\n\n\nfunction MenuPortalvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction MenuPortalvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { MenuPortalvue_type_script_lang_js_ownKeys(source, true).forEach(function (key) { defineProperty_default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { MenuPortalvue_type_script_lang_js_ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\nvar PortalTarget = {\n name: 'vue-treeselect--portal-target',\n inject: ['instance'],\n watch: {\n 'instance.menu.isOpen': function instanceMenuIsOpen(newValue) {\n if (newValue) {\n this.setupHandlers();\n } else {\n this.removeHandlers();\n }\n },\n 'instance.menu.placement': function instanceMenuPlacement() {\n this.updateMenuContainerOffset();\n }\n },\n created: function created() {\n this.controlResizeAndScrollEventListeners = null;\n this.controlSizeWatcher = null;\n },\n mounted: function mounted() {\n var instance = this.instance;\n if (instance.menu.isOpen) this.setupHandlers();\n },\n methods: {\n setupHandlers: function setupHandlers() {\n this.updateWidth();\n this.updateMenuContainerOffset();\n this.setupControlResizeAndScrollEventListeners();\n this.setupControlSizeWatcher();\n },\n removeHandlers: function removeHandlers() {\n this.removeControlResizeAndScrollEventListeners();\n this.removeControlSizeWatcher();\n },\n setupControlResizeAndScrollEventListeners: function setupControlResizeAndScrollEventListeners() {\n var instance = this.instance;\n var $control = instance.getControl();\n if (this.controlResizeAndScrollEventListeners) return;\n this.controlResizeAndScrollEventListeners = {\n remove: setupResizeAndScrollEventListeners($control, this.updateMenuContainerOffset)\n };\n },\n setupControlSizeWatcher: function setupControlSizeWatcher() {\n var _this = this;\n\n var instance = this.instance;\n var $control = instance.getControl();\n if (this.controlSizeWatcher) return;\n this.controlSizeWatcher = {\n remove: watchSize($control, function () {\n _this.updateWidth();\n\n _this.updateMenuContainerOffset();\n })\n };\n },\n removeControlResizeAndScrollEventListeners: function removeControlResizeAndScrollEventListeners() {\n if (!this.controlResizeAndScrollEventListeners) return;\n this.controlResizeAndScrollEventListeners.remove();\n this.controlResizeAndScrollEventListeners = null;\n },\n removeControlSizeWatcher: function removeControlSizeWatcher() {\n if (!this.controlSizeWatcher) return;\n this.controlSizeWatcher.remove();\n this.controlSizeWatcher = null;\n },\n updateWidth: function updateWidth() {\n var instance = this.instance;\n var $portalTarget = this.$el;\n var $control = instance.getControl();\n var controlRect = $control.getBoundingClientRect();\n $portalTarget.style.width = controlRect.width + 'px';\n },\n updateMenuContainerOffset: function updateMenuContainerOffset() {\n var instance = this.instance;\n var $control = instance.getControl();\n var $portalTarget = this.$el;\n var controlRect = $control.getBoundingClientRect();\n var portalTargetRect = $portalTarget.getBoundingClientRect();\n var offsetY = instance.menu.placement === 'bottom' ? controlRect.height : 0;\n var left = Math.round(controlRect.left - portalTargetRect.left) + 'px';\n var top = Math.round(controlRect.top - portalTargetRect.top + offsetY) + 'px';\n var menuContainerStyle = this.$refs.menu.$refs['menu-container'].style;\n var transformVariations = ['transform', 'webkitTransform', 'MozTransform', 'msTransform'];\n var transform = find(transformVariations, function (t) {\n return t in document.body.style;\n });\n menuContainerStyle[transform] = \"translate(\".concat(left, \", \").concat(top, \")\");\n }\n },\n render: function render() {\n var h = arguments[0];\n var instance = this.instance;\n var portalTargetClass = ['vue-treeselect__portal-target', instance.wrapperClass];\n var portalTargetStyle = {\n zIndex: instance.zIndex\n };\n return h(\"div\", {\n \"class\": portalTargetClass,\n style: portalTargetStyle,\n attrs: {\n \"data-instance-id\": instance.getInstanceId()\n }\n }, [h(Menu, {\n ref: \"menu\"\n })]);\n },\n destroyed: function destroyed() {\n this.removeHandlers();\n }\n};\nvar placeholder;\n/* harmony default export */ var MenuPortalvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--menu-portal',\n created: function created() {\n this.portalTarget = null;\n },\n mounted: function mounted() {\n this.setup();\n },\n destroyed: function destroyed() {\n this.teardown();\n },\n methods: {\n setup: function setup() {\n var el = document.createElement('div');\n document.body.appendChild(el);\n this.portalTarget = new external_vue_default.a(MenuPortalvue_type_script_lang_js_objectSpread({\n el: el,\n parent: this\n }, PortalTarget));\n },\n teardown: function teardown() {\n document.body.removeChild(this.portalTarget.$el);\n this.portalTarget.$el.innerHTML = '';\n this.portalTarget.$destroy();\n this.portalTarget = null;\n }\n },\n render: function render() {\n var h = arguments[0];\n if (!placeholder) placeholder = h(\"div\", {\n \"class\": \"vue-treeselect__menu-placeholder\"\n });\n return placeholder;\n }\n});\n// CONCATENATED MODULE: ./src/components/MenuPortal.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_MenuPortalvue_type_script_lang_js_ = (MenuPortalvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/MenuPortal.vue\nvar MenuPortal_render, MenuPortal_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar MenuPortal_component = normalizeComponent(\n components_MenuPortalvue_type_script_lang_js_,\n MenuPortal_render,\n MenuPortal_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var MenuPortal_api; }\nMenuPortal_component.options.__file = \"src/components/MenuPortal.vue\"\n/* harmony default export */ var MenuPortal = (MenuPortal_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Treeselect.vue?vue&type=script&lang=js&\n\n\n\n\n\n/* harmony default export */ var Treeselectvue_type_script_lang_js_ = ({\n name: 'vue-treeselect',\n mixins: [treeselectMixin],\n computed: {\n wrapperClass: function wrapperClass() {\n return {\n 'vue-treeselect': true,\n 'vue-treeselect--single': this.single,\n 'vue-treeselect--multi': this.multiple,\n 'vue-treeselect--searchable': this.searchable,\n 'vue-treeselect--disabled': this.disabled,\n 'vue-treeselect--focused': this.trigger.isFocused,\n 'vue-treeselect--has-value': this.hasValue,\n 'vue-treeselect--open': this.menu.isOpen,\n 'vue-treeselect--open-above': this.menu.placement === 'top',\n 'vue-treeselect--open-below': this.menu.placement === 'bottom',\n 'vue-treeselect--branch-nodes-disabled': this.disableBranchNodes,\n 'vue-treeselect--append-to-body': this.appendToBody\n };\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n ref: \"wrapper\",\n \"class\": this.wrapperClass\n }, [h(HiddenFields), h(Control, {\n ref: \"control\"\n }), this.appendToBody ? h(MenuPortal, {\n ref: \"portal\"\n }) : h(Menu, {\n ref: \"menu\"\n })]);\n }\n});\n// CONCATENATED MODULE: ./src/components/Treeselect.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_Treeselectvue_type_script_lang_js_ = (Treeselectvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/Treeselect.vue\nvar Treeselect_render, Treeselect_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar Treeselect_component = normalizeComponent(\n components_Treeselectvue_type_script_lang_js_,\n Treeselect_render,\n Treeselect_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Treeselect_api; }\nTreeselect_component.options.__file = \"src/components/Treeselect.vue\"\n/* harmony default export */ var Treeselect = (Treeselect_component.exports);\n// EXTERNAL MODULE: ./src/style.less\nvar style = __webpack_require__(15);\n\n// CONCATENATED MODULE: ./src/index.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VERSION\", function() { return VERSION; });\n/* concated harmony reexport Treeselect */__webpack_require__.d(__webpack_exports__, \"Treeselect\", function() { return Treeselect; });\n/* concated harmony reexport treeselectMixin */__webpack_require__.d(__webpack_exports__, \"treeselectMixin\", function() { return treeselectMixin; });\n/* concated harmony reexport LOAD_ROOT_OPTIONS */__webpack_require__.d(__webpack_exports__, \"LOAD_ROOT_OPTIONS\", function() { return LOAD_ROOT_OPTIONS; });\n/* concated harmony reexport LOAD_CHILDREN_OPTIONS */__webpack_require__.d(__webpack_exports__, \"LOAD_CHILDREN_OPTIONS\", function() { return LOAD_CHILDREN_OPTIONS; });\n/* concated harmony reexport ASYNC_SEARCH */__webpack_require__.d(__webpack_exports__, \"ASYNC_SEARCH\", function() { return ASYNC_SEARCH; });\n\n\n\n/* harmony default export */ var src = __webpack_exports__[\"default\"] = (Treeselect);\n\n\nvar VERSION = \"0.4.0\";\n\n/***/ })\n/******/ ]);\n//# sourceMappingURL=vue-treeselect.cjs.js.map","import router from '@/router'\r\n// eslint-disable-next-line object-curly-newline\r\nimport { reactive, getCurrentInstance, watch, toRefs } from '@vue/composition-api'\r\n\r\nexport const isObject = obj => typeof obj === 'object' && obj !== null\r\n\r\nexport const isToday = date => {\r\n const today = new Date()\r\n return (\r\n /* eslint-disable operator-linebreak */\r\n date.getDate() === today.getDate() &&\r\n date.getMonth() === today.getMonth() &&\r\n date.getFullYear() === today.getFullYear()\r\n /* eslint-enable */\r\n )\r\n}\r\n\r\nconst getRandomFromArray = array => array[Math.floor(Math.random() * array.length)]\r\n\r\n// ? Light and Dark variant is not included\r\n// prettier-ignore\r\nexport const getRandomBsVariant = () => getRandomFromArray(['primary', 'secondary', 'success', 'warning', 'danger', 'info'])\r\n\r\nexport const isDynamicRouteActive = route => {\r\n const { route: resolvedRoute } = router.resolve(route)\r\n return resolvedRoute.path === router.currentRoute.path\r\n}\r\n\r\nexport const isDynamicRouteActiveByCode = code => {\r\n return code === router.currentRoute.params.code\r\n}\r\n\r\n// Thanks: https://medium.com/better-programming/reactive-vue-routes-with-the-composition-api-18c1abd878d1\r\nexport const useRouter = () => {\r\n const vm = getCurrentInstance().proxy\r\n const state = reactive({\r\n route: vm.$route,\r\n })\r\n\r\n watch(\r\n () => vm.$route,\r\n r => {\r\n state.route = r\r\n },\r\n )\r\n\r\n return { ...toRefs(state), router: vm.$router }\r\n}\r\n\r\n/**\r\n * This is just enhancement over Object.extend [Gives deep extend]\r\n * @param {target} a Object which contains values to be overridden\r\n * @param {source} b Object which contains values to override\r\n */\r\n// export const objectExtend = (a, b) => {\r\n// // Don't touch 'null' or 'undefined' objects.\r\n// if (a == null || b == null) {\r\n// return a\r\n// }\r\n\r\n// Object.keys(b).forEach(key => {\r\n// if (Object.prototype.toString.call(b[key]) === '[object Object]') {\r\n// if (Object.prototype.toString.call(a[key]) !== '[object Object]') {\r\n// // eslint-disable-next-line no-param-reassign\r\n// a[key] = b[key]\r\n// } else {\r\n// // eslint-disable-next-line no-param-reassign\r\n// a[key] = objectExtend(a[key], b[key])\r\n// }\r\n// } else {\r\n// // eslint-disable-next-line no-param-reassign\r\n// a[key] = b[key]\r\n// }\r\n// })\r\n\r\n// return a\r\n// }\r\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nimport { Vue } from '../../vue';\nimport { NAME_DROPDOWN } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BUTTON_CONTENT, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { htmlOrText } from '../../utils/html';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { dropdownMixin, props as dropdownProps } from '../../mixins/dropdown';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BButton } from '../button/button';\nimport { sortKeys } from '../../utils/object'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), dropdownProps), {}, {\n block: makeProp(PROP_TYPE_BOOLEAN, false),\n html: makeProp(PROP_TYPE_STRING),\n // If `true`, only render menu contents when open\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n menuClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n noCaret: makeProp(PROP_TYPE_BOOLEAN, false),\n role: makeProp(PROP_TYPE_STRING, 'menu'),\n size: makeProp(PROP_TYPE_STRING),\n split: makeProp(PROP_TYPE_BOOLEAN, false),\n splitButtonType: makeProp(PROP_TYPE_STRING, 'button', function (value) {\n return arrayIncludes(['button', 'submit', 'reset'], value);\n }),\n splitClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n splitHref: makeProp(PROP_TYPE_STRING),\n splitTo: makeProp(PROP_TYPE_OBJECT_STRING),\n splitVariant: makeProp(PROP_TYPE_STRING),\n text: makeProp(PROP_TYPE_STRING),\n toggleClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n toggleTag: makeProp(PROP_TYPE_STRING, 'button'),\n // TODO: This really should be `toggleLabel`\n toggleText: makeProp(PROP_TYPE_STRING, 'Toggle dropdown'),\n variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_DROPDOWN); // --- Main component ---\n// @vue/component\n\nexport var BDropdown = /*#__PURE__*/Vue.extend({\n name: NAME_DROPDOWN,\n mixins: [idMixin, dropdownMixin, normalizeSlotMixin],\n props: props,\n computed: {\n dropdownClasses: function dropdownClasses() {\n var block = this.block,\n split = this.split;\n return [this.directionClass, this.boundaryClass, {\n show: this.visible,\n // The 'btn-group' class is required in `split` mode for button alignment\n // It needs also to be applied when `block` is disabled to allow multiple\n // dropdowns to be aligned one line\n 'btn-group': split || !block,\n // When `block` is enabled and we are in `split` mode the 'd-flex' class\n // needs to be applied to allow the buttons to stretch to full width\n 'd-flex': block && split\n }];\n },\n menuClasses: function menuClasses() {\n return [this.menuClass, {\n 'dropdown-menu-right': this.right,\n show: this.visible\n }];\n },\n toggleClasses: function toggleClasses() {\n var split = this.split;\n return [this.toggleClass, {\n 'dropdown-toggle-split': split,\n 'dropdown-toggle-no-caret': this.noCaret && !split\n }];\n }\n },\n render: function render(h) {\n var visible = this.visible,\n variant = this.variant,\n size = this.size,\n block = this.block,\n disabled = this.disabled,\n split = this.split,\n role = this.role,\n hide = this.hide,\n toggle = this.toggle;\n var commonProps = {\n variant: variant,\n size: size,\n block: block,\n disabled: disabled\n };\n var $buttonChildren = this.normalizeSlot(SLOT_NAME_BUTTON_CONTENT);\n var buttonContentDomProps = this.hasNormalizedSlot(SLOT_NAME_BUTTON_CONTENT) ? {} : htmlOrText(this.html, this.text);\n var $split = h();\n\n if (split) {\n var splitTo = this.splitTo,\n splitHref = this.splitHref,\n splitButtonType = this.splitButtonType;\n\n var btnProps = _objectSpread(_objectSpread({}, commonProps), {}, {\n variant: this.splitVariant || variant\n }); // We add these as needed due to issues with\n // defined property with `undefined`/`null` values\n\n\n if (splitTo) {\n btnProps.to = splitTo;\n } else if (splitHref) {\n btnProps.href = splitHref;\n } else if (splitButtonType) {\n btnProps.type = splitButtonType;\n }\n\n $split = h(BButton, {\n class: this.splitClass,\n attrs: {\n id: this.safeId('_BV_button_')\n },\n props: btnProps,\n domProps: buttonContentDomProps,\n on: {\n click: this.onSplitClick\n },\n ref: 'button'\n }, $buttonChildren); // Overwrite button content for the toggle when in `split` mode\n\n $buttonChildren = [h('span', {\n class: ['sr-only']\n }, [this.toggleText])];\n buttonContentDomProps = {};\n }\n\n var $toggle = h(BButton, {\n staticClass: 'dropdown-toggle',\n class: this.toggleClasses,\n attrs: {\n id: this.safeId('_BV_toggle_'),\n 'aria-haspopup': 'true',\n 'aria-expanded': toString(visible)\n },\n props: _objectSpread(_objectSpread({}, commonProps), {}, {\n tag: this.toggleTag,\n block: block && !split\n }),\n domProps: buttonContentDomProps,\n on: {\n mousedown: this.onMousedown,\n click: toggle,\n keydown: toggle // Handle ENTER, SPACE and DOWN\n\n },\n ref: 'toggle'\n }, $buttonChildren);\n var $menu = h('ul', {\n staticClass: 'dropdown-menu',\n class: this.menuClasses,\n attrs: {\n role: role,\n tabindex: '-1',\n 'aria-labelledby': this.safeId(split ? '_BV_button_' : '_BV_toggle_')\n },\n on: {\n keydown: this.onKeydown // Handle UP, DOWN and ESC\n\n },\n ref: 'menu'\n }, [!this.lazy || visible ? this.normalizeSlot(SLOT_NAME_DEFAULT, {\n hide: hide\n }) : h()]);\n return h('div', {\n staticClass: 'dropdown b-dropdown',\n class: this.dropdownClasses,\n attrs: {\n id: this.safeId()\n }\n }, [$split, $toggle, $menu]);\n }\n});","var index = (function (element, listener) {\n\tvar expand = document.createElement('_');\n\tvar shrink = expand.appendChild(document.createElement('_'));\n\tvar expandChild = expand.appendChild(document.createElement('_'));\n\tvar shrinkChild = shrink.appendChild(document.createElement('_'));\n\n\tvar lastWidth = void 0,\n\t lastHeight = void 0;\n\n\tshrink.style.cssText = expand.style.cssText = 'height:100%;left:0;opacity:0;overflow:hidden;pointer-events:none;position:absolute;top:0;transition:0s;width:100%;z-index:-1';\n\tshrinkChild.style.cssText = expandChild.style.cssText = 'display:block;height:100%;transition:0s;width:100%';\n\tshrinkChild.style.width = shrinkChild.style.height = '200%';\n\n\telement.appendChild(expand);\n\n\ttest();\n\n\treturn stop;\n\n\tfunction test() {\n\t\tunbind();\n\n\t\tvar width = element.offsetWidth;\n\t\tvar height = element.offsetHeight;\n\n\t\tif (width !== lastWidth || height !== lastHeight) {\n\t\t\tlastWidth = width;\n\t\t\tlastHeight = height;\n\n\t\t\texpandChild.style.width = width * 2 + 'px';\n\t\t\texpandChild.style.height = height * 2 + 'px';\n\n\t\t\texpand.scrollLeft = expand.scrollWidth;\n\t\t\texpand.scrollTop = expand.scrollHeight;\n\t\t\tshrink.scrollLeft = shrink.scrollWidth;\n\t\t\tshrink.scrollTop = shrink.scrollHeight;\n\n\t\t\tlistener({ width: width, height: height });\n\t\t}\n\n\t\tshrink.addEventListener('scroll', test);\n\t\texpand.addEventListener('scroll', test);\n\t}\n\n\tfunction unbind() {\n\t\tshrink.removeEventListener('scroll', test);\n\t\texpand.removeEventListener('scroll', test);\n\t}\n\n\tfunction stop() {\n\t\tunbind();\n\n\t\telement.removeChild(expand);\n\t}\n});\n\nexport default index;\n","var toInteger = require('./toInteger');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\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 */\nfunction 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\nmodule.exports = before;\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_BREADCRUMB } from '../../constants/components';\nimport { PROP_TYPE_ARRAY } from '../../constants/props';\nimport { isArray, isObject } from '../../utils/inspect';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { BBreadcrumbItem } from './breadcrumb-item'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n items: makeProp(PROP_TYPE_ARRAY)\n}, NAME_BREADCRUMB); // --- Main component ---\n// @vue/component\n\nexport var BBreadcrumb = /*#__PURE__*/Vue.extend({\n name: NAME_BREADCRUMB,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var items = props.items; // Build child nodes from items, if given\n\n var childNodes = children;\n\n if (isArray(items)) {\n var activeDefined = false;\n childNodes = items.map(function (item, idx) {\n if (!isObject(item)) {\n item = {\n text: toString(item)\n };\n } // Copy the value here so we can normalize it\n\n\n var _item = item,\n active = _item.active;\n\n if (active) {\n activeDefined = true;\n } // Auto-detect active by position in list\n\n\n if (!active && !activeDefined) {\n active = idx + 1 === items.length;\n }\n\n return h(BBreadcrumbItem, {\n props: _objectSpread(_objectSpread({}, item), {}, {\n active: active\n })\n });\n });\n }\n\n return h('ol', mergeData(data, {\n staticClass: 'breadcrumb'\n }), childNodes);\n }\n});","/**\n * vue-good-table v2.21.0\n * (c) 2018-present xaksis \n * https://github.com/xaksis/vue-good-table\n * Released under the MIT License.\n */\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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 */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** 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 objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * 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 * _([1, 2]).forEach(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 */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, typeof iteratee == 'function' ? iteratee : identity);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nvar lodash_foreach = forEach;\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]',\n funcTag$1 = '[object Function]',\n genTag$1 = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint$1 = /^(?:0|[1-9]\\d*)$/;\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 */\nfunction 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 * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes$1(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 * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg$1(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto$1.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString$1 = objectProto$1.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable$1 = objectProto$1.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys$1 = overArg$1(Object.keys, Object),\n nativeMax = Math.max;\n\n/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\nvar nonEnumShadows = !propertyIsEnumerable$1.call({ 'valueOf': 1 }, 'valueOf');\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys$1(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray$1(value) || isArguments$1(value))\n ? baseTimes$1(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty$1.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex$1(key, length)))) {\n result.push(key);\n }\n }\n return result;\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 */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty$1.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys$1(object) {\n if (!isPrototype$1(object)) {\n return nativeKeys$1(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty$1.call(object, key) && key != 'constructor') {\n result.push(key);\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 */\nfunction baseRest(func, start) {\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] = array;\n return apply(func, this, otherArgs);\n };\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 */\nfunction copyObject(source, props, object, customizer) {\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 assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\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 */\nfunction 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 * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex$1(value, length) {\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n return !!length &&\n (typeof value == 'number' || reIsUint$1.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 */\nfunction isIterateeCall(value, index, object) {\n if (!isObject$1(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike$1(object) && isIndex$1(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 likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype$1(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$1;\n\n return value === proto;\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 */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments$1(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject$1(value) && hasOwnProperty$1.call(value, 'callee') &&\n (!propertyIsEnumerable$1.call(value, 'callee') || objectToString$1.call(value) == argsTag$1);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray$1 = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike$1(value) {\n return value != null && isLength$1(value.length) && !isFunction$1(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject$1(value) {\n return isObjectLike$1(value) && isArrayLike$1(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction$1(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject$1(value) ? objectToString$1.call(value) : '';\n return tag == funcTag$1 || tag == genTag$1;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength$1(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER$1;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject$1(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike$1(value) {\n return !!value && typeof value == 'object';\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 */\nvar assign = createAssigner(function(object, source) {\n if (nonEnumShadows || isPrototype$1(source) || isArrayLike$1(source)) {\n copyObject(source, keys$1(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty$1.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys$1(object) {\n return isArrayLike$1(object) ? arrayLikeKeys$1(object) : baseKeys$1(object);\n}\n\nvar lodash_assign = assign;\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar lodash_clonedeep = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\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 */\nfunction 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 */\nfunction 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 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 */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\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 */\nfunction 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 */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * 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 */\nfunction 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 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 */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.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 */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\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} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including 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 */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\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 if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return 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 if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\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, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\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} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\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 */\nfunction 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`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * 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 */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\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 */\nfunction 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 */\nfunction 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 */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : 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 */\nfunction 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 */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : 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 */\nfunction 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 */\nfunction 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 * 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 */\nfunction 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 */\nfunction copyObject(source, props, object, customizer) {\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 assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties 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 */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\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 */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction 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 */\nfunction 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 */\nfunction 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 * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * 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 */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\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 */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is 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 */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns 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 */\nfunction 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 */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n});\n\nvar lodash_filter = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.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 */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array ? array.length : 0,\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 `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * The base implementation of `_.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 */\nfunction 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 `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * 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]\n * 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 */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate));\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = filter;\n});\n\nvar lodash_isequal = createCommonjsModule(function (module, exports) {\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n 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\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.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 */\nfunction 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 * 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 */\nfunction 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 `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == 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 * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * 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 */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\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/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == 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 */\nfunction 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 */\nfunction 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 */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n 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`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == 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 */\nfunction 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 */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --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 */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++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`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == 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 */\nfunction 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 */\nfunction 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 */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n 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`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == 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 */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n 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 */\nfunction 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 */\nfunction 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 */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var 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`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n 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 * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `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 */\nfunction 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 */\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\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 */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\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 */\nfunction 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 */\nfunction 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 `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 * 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 */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * 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\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 */\nvar 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 * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = 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 * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * 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\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 */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar 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 */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * 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 */\nvar isBuffer = nativeIsBuffer || stubFalse;\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 */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n 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 a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != 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 */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns 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 */\nfunction 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 */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n});\n\n// all diacritics\r\nvar diacritics = \r\n\t{\r\n\t\t'a' : ['a','à','á','â','ã','ä','å','æ','ā','ă','ą','ǎ','ǟ','ǡ','ǻ','ȁ','ȃ','ȧ','ɐ','ɑ','ɒ','ͣ','а','ӑ','ӓ','ᵃ','ᵄ','ᶏ','ḁ','ẚ','ạ','ả','ấ','ầ','ẩ','ẫ','ậ','ắ','ằ','ẳ','ẵ','ặ','ₐ','ⱥ','a'],\r\n\t\t'A' : ['A','À','Á','Â','Ã','Ä','Å','Ā','Ă','Ą','Ǎ','Ǟ','Ǡ','Ǻ','Ȁ','Ȃ','Ȧ','Ⱥ','А','Ӑ','Ӓ','ᴀ','ᴬ','Ḁ','Ạ','Ả','Ấ','Ầ','Ẩ','Ẫ','Ậ','Ắ','Ằ','Ẳ','Ẵ','Ặ','A'],\r\n\t\t \r\n\t\t'b' : ['b','ƀ','ƃ','ɓ','ᖯ','ᵇ','ᵬ','ᶀ','ḃ','ḅ','ḇ','b'],\r\n\t\t'B' : ['B','Ɓ','Ƃ','Ƀ','ʙ','ᛒ','ᴃ','ᴮ','ᴯ','Ḃ','Ḅ','Ḇ','B'],\r\n\t\t \r\n\t\t'c' : ['c','ç','ć','ĉ','ċ','č','ƈ','ȼ','ɕ','ͨ','ᴄ','ᶜ','ḉ','ↄ','c'],\r\n\t\t'C' : ['C','Ç','Ć','Ĉ','Ċ','Č','Ƈ','Ȼ','ʗ','Ḉ','C'],\r\n\t\t\r\n\t\t'd' : ['d','ď','đ','Ƌ','ƌ','ȡ','ɖ','ɗ','ͩ','ᵈ','ᵭ','ᶁ','ᶑ','ḋ','ḍ','ḏ','ḑ','ḓ','d'],\r\n\t\t'D' : ['D','Ď','Đ','Ɖ','Ɗ','ᴰ','Ḋ','Ḍ','Ḏ','Ḑ','Ḓ','D'],\r\n\t\t\r\n\t\t'e' : ['e','è','é','ê','ë','ē','ĕ','ė','ę','ě','ǝ','ȅ','ȇ','ȩ','ɇ','ɘ','ͤ','ᵉ','ᶒ','ḕ','ḗ','ḙ','ḛ','ḝ','ẹ','ẻ','ẽ','ế','ề','ể','ễ','ệ','ₑ','e'],\r\n\t\t'E' : ['E','È','É','Ê','Ë','Ē','Ĕ','Ė','Ę','Ě','Œ','Ǝ','Ɛ','Ȅ','Ȇ','Ȩ','Ɇ','ɛ','ɜ','ɶ','Є','Э','э','є','Ӭ','ӭ','ᴇ','ᴈ','ᴱ','ᴲ','ᵋ','ᵌ','ᶓ','ᶔ','ᶟ','Ḕ','Ḗ','Ḙ','Ḛ','Ḝ','Ẹ','Ẻ','Ẽ','Ế','Ề','Ể','Ễ','Ệ','E','𐐁','𐐩'],\r\n\t\t\r\n\t\t'f' : ['f','ƒ','ᵮ','ᶂ','ᶠ','ḟ','f'],\r\n\t\t'F' : ['F','Ƒ','Ḟ','ⅎ','F'],\r\n\t\t\r\n\t\t'g' : ['g','ĝ','ğ','ġ','ģ','ǥ','ǧ','ǵ','ɠ','ɡ','ᵍ','ᵷ','ᵹ','ᶃ','ᶢ','ḡ','g'],\r\n\t\t'G' : ['G','Ĝ','Ğ','Ġ','Ģ','Ɠ','Ǥ','Ǧ','Ǵ','ɢ','ʛ','ᴳ','Ḡ','G'],\r\n\t\t\r\n\t\t'h' : ['h','ĥ','ħ','ƕ','ȟ','ɥ','ɦ','ʮ','ʯ','ʰ','ʱ','ͪ','Һ','һ','ᑋ','ᶣ','ḣ','ḥ','ḧ','ḩ','ḫ','ⱨ','h'],\r\n\t\t'H' : ['H','Ĥ','Ħ','Ȟ','ʜ','ᕼ','ᚺ','ᚻ','ᴴ','Ḣ','Ḥ','Ḧ','Ḩ','Ḫ','Ⱨ','H'],\r\n\t\t\r\n\t\t'i' : ['i','ì','í','î','ï','ĩ','ī','ĭ','į','ǐ','ȉ','ȋ','ɨ','ͥ','ᴉ','ᵎ','ᵢ','ᶖ','ᶤ','ḭ','ḯ','ỉ','ị','i'],\r\n\t\t'I' : ['I','Ì','Í','Î','Ï','Ĩ','Ī','Ĭ','Į','İ','Ǐ','Ȉ','Ȋ','ɪ','І','ᴵ','ᵻ','ᶦ','ᶧ','Ḭ','Ḯ','Ỉ','Ị','I'],\r\n\t\t\r\n\t\t'j' : ['j','ĵ','ǰ','ɉ','ʝ','ʲ','ᶡ','ᶨ','j'],\r\n\t\t'J' : ['J','Ĵ','ᴊ','ᴶ','J'],\r\n\t\t\r\n\t\t'k' : ['k','ķ','ƙ','ǩ','ʞ','ᵏ','ᶄ','ḱ','ḳ','ḵ','ⱪ','k'],\r\n\t\t'K' : ['K','Ķ','Ƙ','Ǩ','ᴷ','Ḱ','Ḳ','Ḵ','Ⱪ','K'],\r\n\t\t\r\n\t\t'l' : ['l','ĺ','ļ','ľ','ŀ','ł','ƚ','ȴ','ɫ','ɬ','ɭ','ˡ','ᶅ','ᶩ','ᶪ','ḷ','ḹ','ḻ','ḽ','ℓ','ⱡ'],\r\n\t\t'L' : ['L','Ĺ','Ļ','Ľ','Ŀ','Ł','Ƚ','ʟ','ᴌ','ᴸ','ᶫ','Ḷ','Ḹ','Ḻ','Ḽ','Ⱡ','Ɫ'],\r\n\t\t\r\n\t\t'm' : ['m','ɯ','ɰ','ɱ','ͫ','ᴟ','ᵐ','ᵚ','ᵯ','ᶆ','ᶬ','ᶭ','ḿ','ṁ','ṃ','㎡','㎥','m'],\r\n\t\t'M' : ['M','Ɯ','ᴍ','ᴹ','Ḿ','Ṁ','Ṃ','M'],\r\n\t\t\r\n\t\t'n' : ['n','ñ','ń','ņ','ň','ʼn','ƞ','ǹ','ȵ','ɲ','ɳ','ᵰ','ᶇ','ᶮ','ᶯ','ṅ','ṇ','ṉ','ṋ','ⁿ','n'],\r\n\t\t'N' : ['N','Ñ','Ń','Ņ','Ň','Ɲ','Ǹ','Ƞ','ɴ','ᴎ','ᴺ','ᴻ','ᶰ','Ṅ','Ṇ','Ṉ','Ṋ','N'],\r\n\t\t\r\n\t\t'o' : ['o','ò','ó','ô','õ','ö','ø','ō','ŏ','ő','ơ','ǒ','ǫ','ǭ','ǿ','ȍ','ȏ','ȫ','ȭ','ȯ','ȱ','ɵ','ͦ','о','ӧ','ө','ᴏ','ᴑ','ᴓ','ᴼ','ᵒ','ᶱ','ṍ','ṏ','ṑ','ṓ','ọ','ỏ','ố','ồ','ổ','ỗ','ộ','ớ','ờ','ở','ỡ','ợ','ₒ','o','𐐬'],\r\n\t\t'O' : ['O','Ò','Ó','Ô','Õ','Ö','Ø','Ō','Ŏ','Ő','Ɵ','Ơ','Ǒ','Ǫ','Ǭ','Ǿ','Ȍ','Ȏ','Ȫ','Ȭ','Ȯ','Ȱ','О','Ӧ','Ө','Ṍ','Ṏ','Ṑ','Ṓ','Ọ','Ỏ','Ố','Ồ','Ổ','Ỗ','Ộ','Ớ','Ờ','Ở','Ỡ','Ợ','O','𐐄'],\r\n\t\t\r\n\t\t'p' : ['p','ᵖ','ᵱ','ᵽ','ᶈ','ṕ','ṗ','p'],\r\n\t\t'P' : ['P','Ƥ','ᴘ','ᴾ','Ṕ','Ṗ','Ᵽ','P'],\r\n\t\t\r\n\t\t'q' : ['q','ɋ','ʠ','ᛩ','q'],\r\n\t\t'Q' : ['Q','Ɋ','Q'],\r\n\t\t\r\n\t\t'r' : ['r','ŕ','ŗ','ř','ȑ','ȓ','ɍ','ɹ','ɻ','ʳ','ʴ','ʵ','ͬ','ᵣ','ᵲ','ᶉ','ṙ','ṛ','ṝ','ṟ'],\r\n\t\t'R' : ['R','Ŕ','Ŗ','Ř','Ʀ','Ȑ','Ȓ','Ɍ','ʀ','ʁ','ʶ','ᚱ','ᴙ','ᴚ','ᴿ','Ṙ','Ṛ','Ṝ','Ṟ','Ɽ'],\r\n\t\t\r\n\t\t's' : ['s','ś','ŝ','ş','š','ș','ʂ','ᔆ','ᶊ','ṡ','ṣ','ṥ','ṧ','ṩ','s'],\r\n\t\t'S' : ['S','Ś','Ŝ','Ş','Š','Ș','ȿ','ˢ','ᵴ','Ṡ','Ṣ','Ṥ','Ṧ','Ṩ','S'],\r\n\t\t\r\n\t\t't' : ['t','ţ','ť','ŧ','ƫ','ƭ','ț','ʇ','ͭ','ᵀ','ᵗ','ᵵ','ᶵ','ṫ','ṭ','ṯ','ṱ','ẗ','t'],\r\n\t\t'T' : ['T','Ţ','Ť','Ƭ','Ʈ','Ț','Ⱦ','ᴛ','ᵀ','Ṫ','Ṭ','Ṯ','Ṱ','T'],\r\n\t \t\r\n\t\t'u' : ['u','ù','ú','û','ü','ũ','ū','ŭ','ů','ű','ų','ư','ǔ','ǖ','ǘ','ǚ','ǜ','ȕ','ȗ','ͧ','ߎ','ᵘ','ᵤ','ṳ','ṵ','ṷ','ṹ','ṻ','ụ','ủ','ứ','ừ','ử','ữ','ự','u'],\r\n\t\t'U' : ['U','Ù','Ú','Û','Ü','Ũ','Ū','Ŭ','Ů','Ű','Ų','Ư','Ǔ','Ǖ','Ǘ','Ǚ','Ǜ','Ȕ','Ȗ','Ʉ','ᴜ','ᵁ','ᵾ','Ṳ','Ṵ','Ṷ','Ṹ','Ṻ','Ụ','Ủ','Ứ','Ừ','Ử','Ữ','Ự','U'],\r\n\t\t\r\n\t\t'v' : ['v','ʋ','ͮ','ᵛ','ᵥ','ᶹ','ṽ','ṿ','ⱱ','v','ⱴ'],\r\n\t\t'V' : ['V','Ʋ','Ʌ','ʌ','ᴠ','ᶌ','Ṽ','Ṿ','V'],\r\n\t\t\r\n\t\t'w' : ['w','ŵ','ʷ','ᵂ','ẁ','ẃ','ẅ','ẇ','ẉ','ẘ','ⱳ','w'],\r\n\t\t'W' : ['W','Ŵ','ʍ','ᴡ','Ẁ','Ẃ','Ẅ','Ẇ','Ẉ','Ⱳ','W'],\r\n\t\t\r\n\t\t'x' : ['x','̽','͓','ᶍ','ͯ','ẋ','ẍ','ₓ','x'],\r\n\t\t'X' : ['X','ˣ','ͯ','Ẋ','Ẍ','☒','✕','✖','✗','✘','X'],\r\n\t\t\r\n\t\t'y' : ['y','ý','ÿ','ŷ','ȳ','ɏ','ʸ','ẏ','ỳ','ỵ','ỷ','ỹ','y'],\r\n\t\t'Y' : ['Y','Ý','Ŷ','Ÿ','Ƴ','ƴ','Ȳ','Ɏ','ʎ','ʏ','Ẏ','Ỳ','Ỵ','Ỷ','Ỹ','Y'],\r\n\t\t\r\n\t\t'z' : ['z','ź','ż','ž','ƶ','ȥ','ɀ','ʐ','ʑ','ᙆ','ᙇ','ᶻ','ᶼ','ᶽ','ẑ','ẓ','ẕ','ⱬ','z'],\r\n\t\t'Z' : ['Z','Ź','Ż','Ž','Ƶ','Ȥ','ᴢ','ᵶ','Ẑ','Ẓ','Ẕ','Ⱬ','Z']\r\n\t};\r\n\r\n/*\r\n * Main function of the module which removes all diacritics from the received text\r\n */\r\nvar diacriticless = function (text) {\r\n var result = [];\r\n\r\n\t// iterate over all the characters of the received text\r\n for(var i=0; i 2 && arguments[2] !== undefined ? arguments[2] : false;\n var fromDropdown = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n // take care of nulls\n if (typeof rowval === 'undefined' || rowval === null) {\n return false;\n } // row value\n\n\n var rowValue = skipDiacritics ? String(rowval).toLowerCase() : diacriticless(escapeRegExp(String(rowval)).toLowerCase()); // search term\n\n var searchTerm = skipDiacritics ? filter.toLowerCase() : diacriticless(escapeRegExp(filter).toLowerCase()); // comparison\n\n return fromDropdown ? rowValue === searchTerm : rowValue.indexOf(searchTerm) > -1;\n },\n compare: function compare(x, y) {\n function cook(d) {\n if (typeof d === 'undefined' || d === null) return '';\n return diacriticless(d.toLowerCase());\n }\n\n x = cook(x);\n y = cook(y);\n if (x < y) return -1;\n if (x > y) return 1;\n return 0;\n }\n};\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar script = {\n name: 'VgtPaginationPageInfo',\n props: {\n currentPage: {\n \"default\": 1\n },\n lastPage: {\n \"default\": 1\n },\n totalRecords: {\n \"default\": 0\n },\n ofText: {\n \"default\": 'of',\n type: String\n },\n pageText: {\n \"default\": 'page',\n type: String\n }\n },\n data: function data() {\n return {};\n },\n computed: {\n pageInfo: function pageInfo() {\n return \"\".concat(this.ofText, \" \").concat(this.lastPage);\n }\n },\n methods: {\n changePage: function changePage(event) {\n var value = parseInt(event.target.value, 10); //! invalid number\n\n if (Number.isNaN(value) || value > this.lastPage || value < 1) {\n event.target.value = this.currentPage;\n return false;\n } //* valid number\n\n\n event.target.value = value;\n this.$emit('page-changed', value);\n }\n },\n mounted: function mounted() {},\n components: {}\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n const options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n let hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n const originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n const existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n staticClass: \"footer__navigation__page-info\"\n }, [_vm._v(\"\\n \" + _vm._s(_vm.pageText) + \" \"), _c('input', {\n staticClass: \"footer__navigation__page-info__current-entry\",\n attrs: {\n \"type\": \"text\"\n },\n domProps: {\n \"value\": _vm.currentPage\n },\n on: {\n \"keyup\": function keyup($event) {\n if (!$event.type.indexOf('key') && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) {\n return null;\n }\n\n $event.stopPropagation();\n return _vm.changePage($event);\n }\n }\n }), _vm._v(\" \" + _vm._s(_vm.pageInfo) + \"\\n\")]);\n};\n\nvar __vue_staticRenderFns__ = [];\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = \"data-v-9a8cd1f4\";\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ =\n/*#__PURE__*/\nnormalizeComponent({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\n//\nvar DEFAULT_ROWS_PER_PAGE_DROPDOWN = [10, 20, 30, 40, 50];\nvar script$1 = {\n name: 'VgtPagination',\n props: {\n styleClass: {\n \"default\": 'table table-bordered'\n },\n total: {\n \"default\": null\n },\n perPage: {},\n rtl: {\n \"default\": false\n },\n customRowsPerPageDropdown: {\n \"default\": function _default() {\n return [];\n }\n },\n paginateDropdownAllowAll: {\n \"default\": true\n },\n mode: {\n \"default\": 'records'\n },\n // text options\n nextText: {\n \"default\": 'Next'\n },\n prevText: {\n \"default\": 'Prev'\n },\n rowsPerPageText: {\n \"default\": 'Rows per page:'\n },\n ofText: {\n \"default\": 'of'\n },\n pageText: {\n \"default\": 'page'\n },\n allText: {\n \"default\": 'All'\n }\n },\n data: function data() {\n return {\n currentPage: 1,\n prevPage: 0,\n currentPerPage: 10,\n rowsPerPageOptions: []\n };\n },\n watch: {\n perPage: {\n handler: function handler(newValue, oldValue) {\n this.handlePerPage();\n this.perPageChanged(oldValue);\n },\n immediate: true\n },\n customRowsPerPageDropdown: function customRowsPerPageDropdown() {\n this.handlePerPage();\n },\n total: {\n handler: function handler(newValue, oldValue) {\n if (this.rowsPerPageOptions.indexOf(this.currentPerPage) === -1) {\n this.currentPerPage = newValue;\n }\n }\n }\n },\n computed: {\n // Number of pages\n pagesCount: function pagesCount() {\n var quotient = Math.floor(this.total / this.currentPerPage);\n var remainder = this.total % this.currentPerPage;\n return remainder === 0 ? quotient : quotient + 1;\n },\n // Current displayed items\n paginatedInfo: function paginatedInfo() {\n var first = (this.currentPage - 1) * this.currentPerPage + 1;\n var last = Math.min(this.total, this.currentPage * this.currentPerPage);\n\n if (last === 0) {\n first = 0;\n }\n\n return \"\".concat(first, \" - \").concat(last, \" \").concat(this.ofText, \" \").concat(this.total);\n },\n // Can go to next page\n nextIsPossible: function nextIsPossible() {\n return this.currentPage < this.pagesCount;\n },\n // Can go to previous page\n prevIsPossible: function prevIsPossible() {\n return this.currentPage > 1;\n }\n },\n methods: {\n // Change current page\n changePage: function changePage(pageNumber) {\n var emit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (pageNumber > 0 && this.total > this.currentPerPage * (pageNumber - 1)) {\n this.prevPage = this.currentPage;\n this.currentPage = pageNumber;\n if (emit) this.pageChanged();\n }\n },\n // Go to next page\n nextPage: function nextPage() {\n if (this.nextIsPossible) {\n this.prevPage = this.currentPage;\n ++this.currentPage;\n this.pageChanged();\n }\n },\n // Go to previous page\n previousPage: function previousPage() {\n if (this.prevIsPossible) {\n this.prevPage = this.currentPage;\n --this.currentPage;\n this.pageChanged();\n }\n },\n // Indicate page changing\n pageChanged: function pageChanged() {\n this.$emit('page-changed', {\n currentPage: this.currentPage,\n prevPage: this.prevPage\n });\n },\n // Indicate per page changing\n perPageChanged: function perPageChanged(oldValue) {\n // go back to first page\n if (oldValue) {\n //* only emit if this isn't first initialization\n this.$emit('per-page-changed', {\n currentPerPage: this.currentPerPage\n });\n }\n\n this.changePage(1, false);\n },\n // Handle per page changing\n handlePerPage: function handlePerPage() {\n //* if there's a custom dropdown then we use that\n if (this.customRowsPerPageDropdown !== null && Array.isArray(this.customRowsPerPageDropdown) && this.customRowsPerPageDropdown.length !== 0) {\n this.rowsPerPageOptions = lodash_clonedeep(this.customRowsPerPageDropdown);\n } else {\n //* otherwise we use the default rows per page dropdown\n this.rowsPerPageOptions = lodash_clonedeep(DEFAULT_ROWS_PER_PAGE_DROPDOWN);\n }\n\n if (this.perPage) {\n this.currentPerPage = this.perPage; // if perPage doesn't already exist, we add it\n\n var found = false;\n\n for (var i = 0; i < this.rowsPerPageOptions.length; i++) {\n if (this.rowsPerPageOptions[i] === this.perPage) {\n found = true;\n }\n }\n\n if (!found && this.perPage !== -1) {\n this.rowsPerPageOptions.unshift(this.perPage);\n }\n } else {\n // reset to default\n this.currentPerPage = 10;\n }\n }\n },\n mounted: function mounted() {},\n components: {\n 'pagination-page-info': __vue_component__\n }\n};\n\n/* script */\nvar __vue_script__$1 = script$1;\n/* template */\n\nvar __vue_render__$1 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n staticClass: \"vgt-wrap__footer vgt-clearfix\"\n }, [_c('div', {\n staticClass: \"footer__row-count vgt-pull-left\"\n }, [_c('span', {\n staticClass: \"footer__row-count__label\"\n }, [_vm._v(_vm._s(_vm.rowsPerPageText))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.currentPerPage,\n expression: \"currentPerPage\"\n }],\n staticClass: \"footer__row-count__select\",\n attrs: {\n \"autocomplete\": \"off\",\n \"name\": \"perPageSelect\"\n },\n on: {\n \"change\": [function ($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function (o) {\n return o.selected;\n }).map(function (o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val;\n });\n _vm.currentPerPage = $event.target.multiple ? $$selectedVal : $$selectedVal[0];\n }, _vm.perPageChanged]\n }\n }, [_vm._l(_vm.rowsPerPageOptions, function (option, idx) {\n return _c('option', {\n key: 'rows-dropdown-option-' + idx,\n domProps: {\n \"value\": option\n }\n }, [_vm._v(\"\\n \" + _vm._s(option) + \"\\n \")]);\n }), _vm._v(\" \"), _vm.paginateDropdownAllowAll ? _c('option', {\n domProps: {\n \"value\": _vm.total\n }\n }, [_vm._v(_vm._s(_vm.allText))]) : _vm._e()], 2)]), _vm._v(\" \"), _c('div', {\n staticClass: \"footer__navigation vgt-pull-right\"\n }, [_c('a', {\n staticClass: \"footer__navigation__page-btn\",\n \"class\": {\n disabled: !_vm.prevIsPossible\n },\n attrs: {\n \"href\": \"javascript:undefined\",\n \"tabindex\": \"0\"\n },\n on: {\n \"click\": function click($event) {\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.previousPage($event);\n }\n }\n }, [_c('span', {\n staticClass: \"chevron\",\n \"class\": {\n 'left': !_vm.rtl,\n 'right': _vm.rtl\n }\n }), _vm._v(\" \"), _c('span', [_vm._v(_vm._s(_vm.prevText))])]), _vm._v(\" \"), _vm.mode === 'pages' ? _c('pagination-page-info', {\n attrs: {\n \"totalRecords\": _vm.total,\n \"lastPage\": _vm.pagesCount,\n \"currentPage\": _vm.currentPage,\n \"ofText\": _vm.ofText,\n \"pageText\": _vm.pageText\n },\n on: {\n \"page-changed\": _vm.changePage\n }\n }) : _c('div', {\n staticClass: \"footer__navigation__info\"\n }, [_vm._v(_vm._s(_vm.paginatedInfo))]), _vm._v(\" \"), _c('a', {\n staticClass: \"footer__navigation__page-btn\",\n \"class\": {\n disabled: !_vm.nextIsPossible\n },\n attrs: {\n \"href\": \"javascript:undefined\",\n \"tabindex\": \"0\"\n },\n on: {\n \"click\": function click($event) {\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.nextPage($event);\n }\n }\n }, [_c('span', [_vm._v(_vm._s(_vm.nextText))]), _vm._v(\" \"), _c('span', {\n staticClass: \"chevron\",\n \"class\": {\n 'right': !_vm.rtl,\n 'left': _vm.rtl\n }\n })])], 1)]);\n};\n\nvar __vue_staticRenderFns__$1 = [];\n/* style */\n\nvar __vue_inject_styles__$1 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$1 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$1 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$1 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$1 =\n/*#__PURE__*/\nnormalizeComponent({\n render: __vue_render__$1,\n staticRenderFns: __vue_staticRenderFns__$1\n}, __vue_inject_styles__$1, __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, false, undefined, undefined, undefined);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar script$2 = {\n name: 'VgtGlobalSearch',\n props: ['value', 'searchEnabled', 'globalSearchPlaceholder'],\n data: function data() {\n return {\n globalSearchTerm: null\n };\n },\n computed: {\n showControlBar: function showControlBar() {\n if (this.searchEnabled) return true;\n if (this.$slots && this.$slots['internal-table-actions']) return true;\n return false;\n }\n },\n methods: {\n updateValue: function updateValue(value) {\n this.$emit('input', value);\n this.$emit('on-keyup', value);\n },\n entered: function entered(value) {\n this.$emit('on-enter', value);\n }\n }\n};\n\n/* script */\nvar __vue_script__$2 = script$2;\n/* template */\n\nvar __vue_render__$2 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _vm.showControlBar ? _c('div', {\n staticClass: \"vgt-global-search vgt-clearfix\"\n }, [_c('div', {\n staticClass: \"vgt-global-search__input vgt-pull-left\"\n }, [_vm.searchEnabled ? _c('span', {\n staticClass: \"input__icon\"\n }, [_c('div', {\n staticClass: \"magnifying-glass\"\n })]) : _vm._e(), _vm._v(\" \"), _vm.searchEnabled ? _c('input', {\n staticClass: \"vgt-input vgt-pull-left\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.globalSearchPlaceholder\n },\n domProps: {\n \"value\": _vm.value\n },\n on: {\n \"input\": function input($event) {\n return _vm.updateValue($event.target.value);\n },\n \"keyup\": function keyup($event) {\n if (!$event.type.indexOf('key') && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) {\n return null;\n }\n\n return _vm.entered($event.target.value);\n }\n }\n }) : _vm._e()]), _vm._v(\" \"), _c('div', {\n staticClass: \"vgt-global-search__actions vgt-pull-right\"\n }, [_vm._t(\"internal-table-actions\")], 2)]) : _vm._e();\n};\n\nvar __vue_staticRenderFns__$2 = [];\n/* style */\n\nvar __vue_inject_styles__$2 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$2 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$2 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$2 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$2 =\n/*#__PURE__*/\nnormalizeComponent({\n render: __vue_render__$2,\n staticRenderFns: __vue_staticRenderFns__$2\n}, __vue_inject_styles__$2, __vue_script__$2, __vue_scope_id__$2, __vue_is_functional_template__$2, __vue_module_identifier__$2, false, undefined, undefined, undefined);\n\nvar script$3 = {\n name: 'VgtFilterRow',\n props: ['lineNumbers', 'columns', 'typedColumns', 'globalSearchEnabled', 'selectable', 'mode'],\n watch: {\n columns: {\n handler: function handler(newValue, oldValue) {\n this.populateInitialFilters();\n },\n deep: true,\n immediate: true\n }\n },\n data: function data() {\n return {\n columnFilters: {},\n timer: null\n };\n },\n computed: {\n // to create a filter row, we need to\n // make sure that there is atleast 1 column\n // that requires filtering\n hasFilterRow: function hasFilterRow() {\n // if (this.mode === 'remote' || !this.globalSearchEnabled) {\n for (var i = 0; i < this.columns.length; i++) {\n var col = this.columns[i];\n\n if (col.filterOptions && col.filterOptions.enabled) {\n return true;\n }\n } // }\n\n\n return false;\n }\n },\n methods: {\n reset: function reset() {\n var emitEvent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.columnFilters = {};\n\n if (emitEvent) {\n this.$emit('filter-changed', this.columnFilters);\n }\n },\n isFilterable: function isFilterable(column) {\n return column.filterOptions && column.filterOptions.enabled;\n },\n isDropdown: function isDropdown(column) {\n return this.isFilterable(column) && column.filterOptions.filterDropdownItems && column.filterOptions.filterDropdownItems.length;\n },\n isDropdownObjects: function isDropdownObjects(column) {\n return this.isDropdown(column) && _typeof(column.filterOptions.filterDropdownItems[0]) === 'object';\n },\n isDropdownArray: function isDropdownArray(column) {\n return this.isDropdown(column) && _typeof(column.filterOptions.filterDropdownItems[0]) !== 'object';\n },\n // get column's defined placeholder or default one\n getPlaceholder: function getPlaceholder(column) {\n var placeholder = this.isFilterable(column) && column.filterOptions.placeholder || \"Filter \".concat(column.label);\n return placeholder;\n },\n updateFiltersOnEnter: function updateFiltersOnEnter(column, value) {\n if (this.timer) clearTimeout(this.timer);\n this.updateFiltersImmediately(column.field, value);\n },\n updateFiltersOnKeyup: function updateFiltersOnKeyup(column, value) {\n // if the trigger is enter, we don't filter on keyup\n if (column.filterOptions.trigger === 'enter') return;\n this.updateFilters(column, value);\n },\n updateSlotFilter: function updateSlotFilter(column, value) {\n var fieldToFilter = column.filterOptions.slotFilterField || column.field;\n\n if (typeof column.filterOptions.formatValue === 'function') {\n value = column.filterOptions.formatValue(value);\n }\n\n this.updateFiltersImmediately(fieldToFilter, value);\n },\n // since vue doesn't detect property addition and deletion, we\n // need to create helper function to set property etc\n updateFilters: function updateFilters(column, value) {\n var _this = this;\n\n if (this.timer) clearTimeout(this.timer);\n this.timer = setTimeout(function () {\n _this.updateFiltersImmediately(column.field, value);\n }, 400);\n },\n updateFiltersImmediately: function updateFiltersImmediately(field, value) {\n this.$set(this.columnFilters, field, value);\n this.$emit('filter-changed', this.columnFilters);\n },\n populateInitialFilters: function populateInitialFilters() {\n for (var i = 0; i < this.columns.length; i++) {\n var col = this.columns[i]; // lets see if there are initial\n // filters supplied by user\n\n if (this.isFilterable(col) && typeof col.filterOptions.filterValue !== 'undefined' && col.filterOptions.filterValue !== null) {\n this.$set(this.columnFilters, col.field, col.filterOptions.filterValue); // this.updateFilters(col, col.filterOptions.filterValue);\n // this.$set(col.filterOptions, 'filterValue', undefined);\n }\n } //* lets emit event once all filters are set\n\n\n this.$emit('filter-changed', this.columnFilters);\n }\n }\n};\n\n/* script */\nvar __vue_script__$3 = script$3;\n/* template */\n\nvar __vue_render__$3 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _vm.hasFilterRow ? _c('tr', [_vm.lineNumbers ? _c('th') : _vm._e(), _vm._v(\" \"), _vm.selectable ? _c('th') : _vm._e(), _vm._v(\" \"), _vm._l(_vm.columns, function (column, index) {\n return !column.hidden ? _c('th', {\n key: index,\n staticClass: \"filter-th\"\n }, [_vm._t(\"column-filter\", [_vm.isFilterable(column) ? _c('div', [!_vm.isDropdown(column) ? _c('input', {\n staticClass: \"vgt-input\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.getPlaceholder(column)\n },\n domProps: {\n \"value\": _vm.columnFilters[column.field]\n },\n on: {\n \"keyup\": function keyup($event) {\n if (!$event.type.indexOf('key') && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) {\n return null;\n }\n\n return _vm.updateFiltersOnEnter(column, $event.target.value);\n },\n \"input\": function input($event) {\n return _vm.updateFiltersOnKeyup(column, $event.target.value);\n }\n }\n }) : _vm._e(), _vm._v(\" \"), _vm.isDropdownArray(column) ? _c('select', {\n staticClass: \"vgt-select\",\n domProps: {\n \"value\": _vm.columnFilters[column.field]\n },\n on: {\n \"change\": function change($event) {\n return _vm.updateFilters(column, $event.target.value);\n }\n }\n }, [_c('option', {\n key: \"-1\",\n attrs: {\n \"value\": \"\"\n }\n }, [_vm._v(_vm._s(_vm.getPlaceholder(column)))]), _vm._v(\" \"), _vm._l(column.filterOptions.filterDropdownItems, function (option, i) {\n return _c('option', {\n key: i,\n domProps: {\n \"value\": option\n }\n }, [_vm._v(\"\\n \" + _vm._s(option) + \"\\n \")]);\n })], 2) : _vm._e(), _vm._v(\" \"), _vm.isDropdownObjects(column) ? _c('select', {\n staticClass: \"vgt-select\",\n domProps: {\n \"value\": _vm.columnFilters[column.field]\n },\n on: {\n \"change\": function change($event) {\n return _vm.updateFilters(column, $event.target.value, true);\n }\n }\n }, [_c('option', {\n key: \"-1\",\n attrs: {\n \"value\": \"\"\n }\n }, [_vm._v(_vm._s(_vm.getPlaceholder(column)))]), _vm._v(\" \"), _vm._l(column.filterOptions.filterDropdownItems, function (option, i) {\n return _c('option', {\n key: i,\n domProps: {\n \"value\": option.value\n }\n }, [_vm._v(_vm._s(option.text))]);\n })], 2) : _vm._e()]) : _vm._e()], {\n \"column\": column,\n \"updateFilters\": _vm.updateSlotFilter\n })], 2) : _vm._e();\n })], 2) : _vm._e();\n};\n\nvar __vue_staticRenderFns__$3 = [];\n/* style */\n\nvar __vue_inject_styles__$3 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$3 = \"data-v-1c6bfd21\";\n/* module identifier */\n\nvar __vue_module_identifier__$3 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$3 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$3 =\n/*#__PURE__*/\nnormalizeComponent({\n render: __vue_render__$3,\n staticRenderFns: __vue_staticRenderFns__$3\n}, __vue_inject_styles__$3, __vue_script__$3, __vue_scope_id__$3, __vue_is_functional_template__$3, __vue_module_identifier__$3, false, undefined, undefined, undefined);\n\nvar DEFAULT_SORT_TYPE = 'asc';\n\nfunction getColumnFirstSortType(column) {\n return column.firstSortType || DEFAULT_SORT_TYPE;\n}\n\nfunction getCurrentPrimarySort(sortArray, column) {\n return sortArray.length === 1 && sortArray[0].field === column.field ? sortArray[0].type : undefined;\n}\n\nfunction getNextSort(currentSort) {\n return currentSort === 'asc' ? 'desc' : DEFAULT_SORT_TYPE;\n}\n\nfunction getIndex(sortArray, column) {\n for (var i = 0; i < sortArray.length; i++) {\n if (column.field === sortArray[i].field) return i;\n }\n\n return -1;\n}\n\nvar primarySort = function (sortArray, column) {\n var currentPrimarySort = getCurrentPrimarySort(sortArray, column);\n return [{\n field: column.field,\n type: currentPrimarySort ? getNextSort(currentPrimarySort) : getColumnFirstSortType(column)\n }];\n};\n\nvar secondarySort = function (sortArray, column) {\n var index = getIndex(sortArray, column);\n\n if (index === -1) {\n sortArray.push({\n field: column.field,\n type: getColumnFirstSortType(column)\n });\n } else {\n sortArray[index].type = getNextSort(sortArray[index].type);\n }\n\n return sortArray;\n};\n\n//\nvar script$4 = {\n name: 'VgtTableHeader',\n props: {\n lineNumbers: {\n \"default\": false,\n type: Boolean\n },\n selectable: {\n \"default\": false,\n type: Boolean\n },\n allSelected: {\n \"default\": false,\n type: Boolean\n },\n allSelectedIndeterminate: {\n \"default\": false,\n type: Boolean\n },\n columns: {\n type: Array\n },\n mode: {\n type: String\n },\n typedColumns: {},\n //* Sort related\n sortable: {\n type: Boolean\n },\n // sortColumn: {\n // type: Number,\n // },\n // sortType: {\n // type: String,\n // },\n // utility functions\n // isSortableColumn: {\n // type: Function,\n // },\n getClasses: {\n type: Function\n },\n //* search related\n searchEnabled: {\n type: Boolean\n },\n tableRef: {},\n paginated: {}\n },\n watch: {\n columns: {\n handler: function handler() {\n this.setColumnStyles();\n },\n immediate: true\n },\n tableRef: {\n handler: function handler() {\n this.setColumnStyles();\n },\n immediate: true\n },\n paginated: {\n handler: function handler() {\n if (this.tableRef) {\n this.setColumnStyles();\n }\n },\n deep: true\n }\n },\n data: function data() {\n return {\n checkBoxThStyle: {},\n lineNumberThStyle: {},\n columnStyles: [],\n sorts: []\n };\n },\n computed: {},\n methods: {\n reset: function reset() {\n this.$refs['filter-row'].reset(true);\n },\n toggleSelectAll: function toggleSelectAll() {\n this.$emit('on-toggle-select-all');\n },\n isSortableColumn: function isSortableColumn(column) {\n var sortable = column.sortable;\n var isSortable = typeof sortable === 'boolean' ? sortable : this.sortable;\n return isSortable;\n },\n sort: function sort(e, column) {\n //* if column is not sortable, return right here\n if (!this.isSortableColumn(column)) return;\n\n if (e.shiftKey) {\n this.sorts = secondarySort(this.sorts, column);\n } else {\n this.sorts = primarySort(this.sorts, column);\n }\n\n this.$emit('on-sort-change', this.sorts);\n },\n setInitialSort: function setInitialSort(sorts) {\n this.sorts = sorts;\n this.$emit('on-sort-change', this.sorts);\n },\n getColumnSort: function getColumnSort(column) {\n for (var i = 0; i < this.sorts.length; i += 1) {\n if (this.sorts[i].field === column.field) {\n return this.sorts[i].type || 'asc';\n }\n }\n\n return null;\n },\n getHeaderClasses: function getHeaderClasses(column, index) {\n var classes = lodash_assign({}, this.getClasses(index, 'th'), {\n sortable: this.isSortableColumn(column),\n 'sorting sorting-desc': this.getColumnSort(column) === 'desc',\n 'sorting sorting-asc': this.getColumnSort(column) === 'asc'\n });\n return classes;\n },\n filterRows: function filterRows(columnFilters) {\n this.$emit('filter-changed', columnFilters);\n },\n getWidthStyle: function getWidthStyle(dom) {\n if (window && window.getComputedStyle && dom) {\n var cellStyle = window.getComputedStyle(dom, null);\n return {\n width: cellStyle.width\n };\n }\n\n return {\n width: 'auto'\n };\n },\n setColumnStyles: function setColumnStyles() {\n var colStyles = [];\n\n for (var i = 0; i < this.columns.length; i++) {\n if (this.tableRef) {\n var skip = 0;\n if (this.selectable) skip++;\n if (this.lineNumbers) skip++;\n var cell = this.tableRef.rows[0].cells[i + skip];\n colStyles.push(this.getWidthStyle(cell));\n } else {\n colStyles.push({\n minWidth: this.columns[i].width ? this.columns[i].width : 'auto',\n maxWidth: this.columns[i].width ? this.columns[i].width : 'auto',\n width: this.columns[i].width ? this.columns[i].width : 'auto'\n });\n }\n }\n\n this.columnStyles = colStyles;\n },\n getColumnStyle: function getColumnStyle(column, index) {\n var styleObject = {\n minWidth: column.width ? column.width : 'auto',\n maxWidth: column.width ? column.width : 'auto',\n width: column.width ? column.width : 'auto'\n }; //* if fixed header we need to get width from original table\n\n if (this.tableRef) {\n if (this.selectable) index++;\n if (this.lineNumbers) index++;\n var cell = this.tableRef.rows[0].cells[index];\n var cellStyle = window.getComputedStyle(cell, null);\n styleObject.width = cellStyle.width;\n }\n\n return styleObject;\n }\n },\n mounted: function mounted() {\n window.addEventListener('resize', this.setColumnStyles);\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('resize', this.setColumnStyles);\n },\n components: {\n 'vgt-filter-row': __vue_component__$3\n }\n};\n\n/* script */\nvar __vue_script__$4 = script$4;\n/* template */\n\nvar __vue_render__$4 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('thead', [_c('tr', [_vm.lineNumbers ? _c('th', {\n staticClass: \"line-numbers\"\n }) : _vm._e(), _vm._v(\" \"), _vm.selectable ? _c('th', {\n staticClass: \"vgt-checkbox-col\"\n }, [_c('input', {\n attrs: {\n \"type\": \"checkbox\"\n },\n domProps: {\n \"checked\": _vm.allSelected,\n \"indeterminate\": _vm.allSelectedIndeterminate\n },\n on: {\n \"change\": _vm.toggleSelectAll\n }\n })]) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.columns, function (column, index) {\n return !column.hidden ? _c('th', {\n key: index,\n \"class\": _vm.getHeaderClasses(column, index),\n style: _vm.columnStyles[index],\n on: {\n \"click\": function click($event) {\n return _vm.sort($event, column);\n }\n }\n }, [_vm._t(\"table-column\", [_c('span', [_vm._v(_vm._s(column.label))])], {\n \"column\": column\n })], 2) : _vm._e();\n })], 2), _vm._v(\" \"), _c(\"vgt-filter-row\", {\n ref: \"filter-row\",\n tag: \"tr\",\n attrs: {\n \"global-search-enabled\": _vm.searchEnabled,\n \"line-numbers\": _vm.lineNumbers,\n \"selectable\": _vm.selectable,\n \"columns\": _vm.columns,\n \"mode\": _vm.mode,\n \"typed-columns\": _vm.typedColumns\n },\n on: {\n \"filter-changed\": _vm.filterRows\n },\n scopedSlots: _vm._u([{\n key: \"column-filter\",\n fn: function fn(props) {\n return [_vm._t(\"column-filter\", null, {\n \"column\": props.column,\n \"updateFilters\": props.updateFilters\n })];\n }\n }], null, true)\n })], 1);\n};\n\nvar __vue_staticRenderFns__$4 = [];\n/* style */\n\nvar __vue_inject_styles__$4 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$4 = \"data-v-2d1e3c02\";\n/* module identifier */\n\nvar __vue_module_identifier__$4 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$4 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$4 =\n/*#__PURE__*/\nnormalizeComponent({\n render: __vue_render__$4,\n staticRenderFns: __vue_staticRenderFns__$4\n}, __vue_inject_styles__$4, __vue_script__$4, __vue_scope_id__$4, __vue_is_functional_template__$4, __vue_module_identifier__$4, false, undefined, undefined, undefined);\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//\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//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar script$5 = {\n name: 'VgtHeaderRow',\n props: {\n headerRow: {\n type: Object\n },\n columns: {\n type: Array\n },\n lineNumbers: {\n type: Boolean\n },\n selectable: {\n type: Boolean\n },\n selectAllByGroup: {\n type: Boolean\n },\n collapsable: {\n type: [Boolean, Number],\n \"default\": false\n },\n collectFormatted: {\n type: Function\n },\n formattedRow: {\n type: Function\n },\n getClasses: {\n type: Function\n },\n fullColspan: {\n type: Number\n },\n groupIndex: {\n type: Number\n }\n },\n data: function data() {\n return {};\n },\n computed: {\n allSelected: function allSelected() {\n var headerRow = this.headerRow,\n groupChildObject = this.groupChildObject;\n return headerRow.children.filter(function (row) {\n return row.vgtSelected;\n }).length === headerRow.children.length;\n }\n },\n methods: {\n columnCollapsable: function columnCollapsable(currentIndex) {\n if (this.collapsable === true) {\n return currentIndex === 0;\n }\n\n return currentIndex === this.collapsable;\n },\n toggleSelectGroup: function toggleSelectGroup(event) {\n this.$emit('on-select-group-change', {\n groupIndex: this.groupIndex,\n checked: event.target.checked\n });\n }\n },\n mounted: function mounted() {},\n components: {}\n};\n\n/* script */\nvar __vue_script__$5 = script$5;\n/* template */\n\nvar __vue_render__$5 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('tr', [_vm.headerRow.mode === 'span' ? _c('th', {\n staticClass: \"vgt-left-align vgt-row-header\",\n attrs: {\n \"colspan\": _vm.fullColspan\n }\n }, [_vm.selectAllByGroup ? [_vm._t(\"table-header-group-select\", [_c('input', {\n attrs: {\n \"type\": \"checkbox\"\n },\n domProps: {\n \"checked\": _vm.allSelected\n },\n on: {\n \"change\": function change($event) {\n return _vm.toggleSelectGroup($event);\n }\n }\n })], {\n \"columns\": _vm.columns,\n \"row\": _vm.headerRow\n })] : _vm._e(), _vm._v(\" \"), _c('span', {\n on: {\n \"click\": function click($event) {\n _vm.collapsable ? _vm.$emit('vgtExpand', !_vm.headerRow.vgtIsExpanded) : function () {};\n }\n }\n }, [_vm.collapsable ? _c('span', {\n staticClass: \"triangle\",\n \"class\": {\n 'expand': _vm.headerRow.vgtIsExpanded\n }\n }) : _vm._e(), _vm._v(\" \"), _vm._t(\"table-header-row\", [_vm.headerRow.html ? _c('span', {\n domProps: {\n \"innerHTML\": _vm._s(_vm.headerRow.label)\n }\n }) : _c('span', [_vm._v(\"\\n \" + _vm._s(_vm.headerRow.label) + \"\\n \")])], {\n \"row\": _vm.headerRow\n })], 2)], 2) : _vm._e(), _vm._v(\" \"), _vm.headerRow.mode !== 'span' && _vm.lineNumbers ? _c('th', {\n staticClass: \"vgt-row-header\"\n }) : _vm._e(), _vm._v(\" \"), _vm.headerRow.mode !== 'span' && _vm.selectable ? _c('th', {\n staticClass: \"vgt-row-header\"\n }, [_vm.selectAllByGroup ? [_vm._t(\"table-header-group-select\", [_c('input', {\n attrs: {\n \"type\": \"checkbox\"\n },\n domProps: {\n \"checked\": _vm.allSelected\n },\n on: {\n \"change\": function change($event) {\n return _vm.toggleSelectGroup($event);\n }\n }\n })], {\n \"columns\": _vm.columns,\n \"row\": _vm.headerRow\n })] : _vm._e()], 2) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.columns, function (column, i) {\n return _vm.headerRow.mode !== 'span' && !column.hidden ? _c('th', {\n key: i,\n staticClass: \"vgt-row-header\",\n \"class\": _vm.getClasses(i, 'td'),\n on: {\n \"click\": function click($event) {\n _vm.columnCollapsable(i) ? _vm.$emit('vgtExpand', !_vm.headerRow.vgtIsExpanded) : function () {};\n }\n }\n }, [_vm.columnCollapsable(i) ? _c('span', {\n staticClass: \"triangle\",\n \"class\": {\n 'expand': _vm.headerRow.vgtIsExpanded\n }\n }) : _vm._e(), _vm._v(\" \"), _vm._t(\"table-header-row\", [!column.html ? _c('span', [_vm._v(\"\\n \" + _vm._s(_vm.collectFormatted(_vm.headerRow, column, true)) + \"\\n \")]) : _vm._e(), _vm._v(\" \"), column.html ? _c('span', {\n domProps: {\n \"innerHTML\": _vm._s(_vm.collectFormatted(_vm.headerRow, column, true))\n }\n }) : _vm._e()], {\n \"row\": _vm.headerRow,\n \"column\": column,\n \"formattedRow\": _vm.formattedRow(_vm.headerRow, true)\n })], 2) : _vm._e();\n })], 2);\n};\n\nvar __vue_staticRenderFns__$5 = [];\n/* style */\n\nvar __vue_inject_styles__$5 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$5 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$5 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$5 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$5 =\n/*#__PURE__*/\nnormalizeComponent({\n render: __vue_render__$5,\n staticRenderFns: __vue_staticRenderFns__$5\n}, __vue_inject_styles__$5, __vue_script__$5, __vue_scope_id__$5, __vue_is_functional_template__$5, __vue_module_identifier__$5, false, undefined, undefined, undefined);\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nfunction toDate(argument) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}\n\nfunction toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}\n\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\n\nfunction getTimezoneOffsetInMilliseconds(dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = date.getTimezoneOffset();\n date.setSeconds(0, 0);\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE;\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset;\n}\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\n\nfunction compareAsc(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `true` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nfunction isValid(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(date);\n}\n\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nfunction formatDistance(token, count, options) {\n options = options || {};\n var result;\n\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n}\n\nfunction buildFormatLongFn(args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\n\nvar formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nfunction formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n}\n\nfunction buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index];\n };\n}\n\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] // Note: in English, the names of days of the week and months are capitalized.\n // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n // Generally, formatted dates should look like they are in the middle of a sentence,\n // e.g. in Spanish language the weekdays and months should be in the lowercase.\n\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\n\nfunction buildMatchPatternFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var matchResult = string.match(args.matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n\n if (!parseResult) {\n return null;\n }\n\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\n\nfunction buildMatchFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var value;\n\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = parsePatterns.findIndex(function (pattern) {\n return pattern.test(string);\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(string);\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n}\n\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\n\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nfunction subMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}\n\nfunction addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\n\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCDayOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction startOfUTCISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction startOfUTCISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}\n\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction startOfUTCWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}\n\nvar MILLISECONDS_IN_WEEK$1 = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCWeek(dirtyDate, options) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK$1) + 1;\n}\n\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n /*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\n};\nvar formatters$1 = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return formatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return formatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return formatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return formatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return formatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return formatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return formatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return formatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nfunction dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\n\nvar protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nfunction isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nfunction isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nfunction throwProtectedError(token) {\n if (token === 'YYYY') {\n throw new RangeError('Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr');\n } else if (token === 'YY') {\n throw new RangeError('Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr');\n } else if (token === 'D') {\n throw new RangeError('Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr');\n } else if (token === 'DD') {\n throw new RangeError('Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr');\n }\n}\n\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'(.*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nfunction format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale$1 = options.locale || locale;\n var localeFirstWeekContainsDate = locale$1.options && locale$1.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale$1.options && locale$1.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale$1.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale$1.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale$1,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale$1.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters$1[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring);\n }\n\n return formatter(utcDate, substring, locale$1.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\nfunction assign$1(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction setUTCISODay(dirtyDate, dirtyDay) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction setUTCWeek(dirtyDate, dirtyWeek, options) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}\n\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE$1 = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n var value = parseInt(matchResult[0], 10);\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n };\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE$1 + seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4;\n\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n\n\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, _options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(string, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(string, {\n width: 'wide'\n }) || match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n }\n },\n set: function (date, flags, value, _options) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['R', 'u', 't', 'T']\n },\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback);\n\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, _options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback);\n\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (_date, _flags, value, _options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n },\n incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'wo':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'Io':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Day of the month\n d: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string);\n\n case 'do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Day of year\n D: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n case 'Do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n },\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n },\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'eee':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n },\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'ccc':\n return match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n },\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7;\n }\n\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, string);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(string, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // T\n\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tu\n\n case 'iiiiii':\n return match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tuesday\n\n case 'iiii':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 7;\n },\n set: function (date, _flags, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n },\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 't', 'T']\n },\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string);\n\n case 'ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 12;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n },\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string);\n\n case 'Ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 23;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n },\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string);\n\n case 'Ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']\n },\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string);\n\n case 'ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 24;\n },\n set: function (date, _flags, value, _options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n },\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string);\n\n case 'mo':\n return match.ordinalNumber(string, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string);\n\n case 'so':\n return match.ordinalNumber(string, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCSeconds(value, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Fraction of second\n S: {\n priority: 30,\n parse: function (string, token, _match, _options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return parseNDigits(token.length, string, valueCallback);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMilliseconds(value);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'x']\n },\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'X']\n },\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n },\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n }\n};\n\nvar TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp$1 = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp$1 = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp$1 = /^'(.*?)'?$/;\nvar doubleQuoteRegExp$1 = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp$1 = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `backupDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `backupDate` which works as a context of parsing.\n *\n * `backupDate` must be passed for correct work of the function.\n * If you're not sure which `backupDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `backupDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `backupDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * toDate('2016-01-01')\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} backupDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nfunction parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions) {\n if (arguments.length < 3) {\n throw new TypeError('3 arguments required, but only ' + arguments.length + ' present');\n }\n\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n var locale$1 = options.locale || locale;\n\n if (!locale$1.match) {\n throw new RangeError('locale must contain match property');\n }\n\n var localeFirstWeekContainsDate = locale$1.options && locale$1.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale$1.options && locale$1.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBackupDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale$1 // If timezone isn't specified, it will be set to the system timezone\n\n };\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }];\n var i;\n var tokens = formatString.match(longFormattingTokensRegExp$1).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale$1.formatLong, subFnOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp$1);\n var usedTokens = [];\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n throwProtectedError(token);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = void 0;\n\n for (var _i = 0; _i < usedTokens.length; _i++) {\n var usedToken = usedTokens[_i].token;\n\n if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n incompatibleToken = usedTokens[_i];\n break;\n }\n }\n\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.parse(dateString, token, locale$1.match, subFnOptions);\n\n if (!parseResult) {\n return new Date(NaN);\n }\n\n setters.push({\n priority: parser.priority,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp$1)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString$1(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN);\n }\n }\n } // Check if the remaining input contains something other than whitespace\n\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).reverse();\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyBackupDate);\n\n if (isNaN(date)) {\n return new Date(NaN);\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n if (result[0]) {\n utcDate = result[0];\n assign$1(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n\n return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n}\n\nfunction cleanEscapedString$1(input) {\n return input.match(escapedStringRegExp$1)[1].replace(doubleQuoteRegExp$1, \"'\");\n}\n\nvar date = lodash_clonedeep(defaultType);\ndate.isRight = true;\n\ndate.compare = function (x, y, column) {\n function cook(d) {\n if (column && column.dateInputFormat) {\n return parse(\"\".concat(d), \"\".concat(column.dateInputFormat), new Date());\n }\n\n return d;\n }\n\n x = cook(x);\n y = cook(y);\n\n if (!isValid(x)) {\n return -1;\n }\n\n if (!isValid(y)) {\n return 1;\n }\n\n return compareAsc(x, y);\n};\n\ndate.format = function (v, column) {\n if (v === undefined || v === null) return ''; // convert to date\n\n var date = parse(v, column.dateInputFormat, new Date());\n\n if (isValid(date)) {\n return format(date, column.dateOutputFormat);\n }\n\n console.error(\"Not a valid date: \\\"\".concat(v, \"\\\"\"));\n return null;\n};\n\nvar date$1 = /*#__PURE__*/Object.freeze({\n 'default': date\n});\n\nvar number = lodash_clonedeep(defaultType);\nnumber.isRight = true;\n\nnumber.filterPredicate = function (rowval, filter) {\n return number.compare(rowval, filter) === 0;\n};\n\nnumber.compare = function (x, y) {\n function cook(d) {\n // if d is null or undefined we give it the smallest\n // possible value\n if (d === undefined || d === null) return -Infinity;\n return d.indexOf('.') >= 0 ? parseFloat(d) : parseInt(d, 10);\n }\n\n x = typeof x === 'number' ? x : cook(x);\n y = typeof y === 'number' ? y : cook(y);\n if (x < y) return -1;\n if (x > y) return 1;\n return 0;\n};\n\nvar number$1 = /*#__PURE__*/Object.freeze({\n 'default': number\n});\n\nvar decimal = lodash_clonedeep(number);\n\ndecimal.format = function (v) {\n if (v === undefined || v === null) return '';\n return parseFloat(Math.round(v * 100) / 100).toFixed(2);\n};\n\nvar decimal$1 = /*#__PURE__*/Object.freeze({\n 'default': decimal\n});\n\nvar percentage = lodash_clonedeep(number);\n\npercentage.format = function (v) {\n if (v === undefined || v === null) return '';\n return \"\".concat(parseFloat(v * 100).toFixed(2), \"%\");\n};\n\nvar percentage$1 = /*#__PURE__*/Object.freeze({\n 'default': percentage\n});\n\nvar _boolean = lodash_clonedeep(defaultType);\n\n_boolean.isRight = true;\n\n_boolean.filterPredicate = function (rowval, filter) {\n return _boolean.compare(rowval, filter) === 0;\n};\n\n_boolean.compare = function (x, y) {\n function cook(d) {\n if (typeof d === 'boolean') return d ? 1 : 0;\n if (typeof d === 'string') return d === 'true' ? 1 : 0;\n return -Infinity;\n }\n\n x = cook(x);\n y = cook(y);\n if (x < y) return -1;\n if (x > y) return 1;\n return 0;\n};\n\nvar _boolean$1 = /*#__PURE__*/Object.freeze({\n 'default': _boolean\n});\n\nvar index = {\n date: date$1,\n decimal: decimal$1,\n number: number$1,\n percentage: percentage$1,\n \"boolean\": _boolean$1\n};\n\nvar dataTypes = {};\nvar coreDataTypes = index;\nlodash_foreach(Object.keys(coreDataTypes), function (key) {\n var compName = key.replace(/^\\.\\//, '').replace(/\\.js/, '');\n dataTypes[compName] = coreDataTypes[key][\"default\"];\n});\nvar script$6 = {\n name: 'vue-good-table',\n props: {\n isLoading: {\n \"default\": null,\n type: Boolean\n },\n maxHeight: {\n \"default\": null,\n type: String\n },\n fixedHeader: Boolean,\n theme: {\n \"default\": ''\n },\n mode: {\n \"default\": 'local'\n },\n // could be remote\n totalRows: {},\n // required if mode = 'remote'\n styleClass: {\n \"default\": 'vgt-table bordered'\n },\n columns: {},\n rows: {},\n lineNumbers: Boolean,\n responsive: {\n \"default\": true,\n type: Boolean\n },\n rtl: Boolean,\n rowStyleClass: {\n \"default\": null,\n type: [Function, String]\n },\n compactMode: Boolean,\n groupOptions: {\n \"default\": function _default() {\n return {\n enabled: false,\n collapsable: false,\n rowKey: null\n };\n }\n },\n selectOptions: {\n \"default\": function _default() {\n return {\n enabled: false,\n selectionInfoClass: '',\n selectionText: 'rows selected',\n clearSelectionText: 'clear',\n disableSelectInfo: false,\n selectAllByGroup: false\n };\n }\n },\n // sort\n sortOptions: {\n \"default\": function _default() {\n return {\n enabled: true,\n initialSortBy: {}\n };\n }\n },\n // pagination\n paginationOptions: {\n \"default\": function _default() {\n return {\n enabled: false,\n perPage: 10,\n perPageDropdown: null,\n position: 'bottom',\n dropdownAllowAll: true,\n mode: 'records' // or pages\n\n };\n }\n },\n searchOptions: {\n \"default\": function _default() {\n return {\n enabled: false,\n trigger: null,\n externalQuery: null,\n searchFn: null,\n placeholder: 'Search Table'\n };\n }\n }\n },\n data: function data() {\n return {\n // loading state for remote mode\n tableLoading: false,\n // text options\n nextText: 'Next',\n prevText: 'Prev',\n rowsPerPageText: 'Rows per page',\n ofText: 'of',\n allText: 'All',\n pageText: 'page',\n // internal select options\n selectable: false,\n selectOnCheckboxOnly: false,\n selectAllByPage: true,\n disableSelectInfo: false,\n selectionInfoClass: '',\n selectionText: 'rows selected',\n clearSelectionText: 'clear',\n // keys for rows that are currently expanded\n maintainExpanded: true,\n expandedRowKeys: new Set(),\n // internal sort options\n sortable: true,\n defaultSortBy: null,\n // internal search options\n searchEnabled: false,\n searchTrigger: null,\n externalSearchQuery: null,\n searchFn: null,\n searchPlaceholder: 'Search Table',\n searchSkipDiacritics: false,\n // internal pagination options\n perPage: null,\n paginate: false,\n paginateOnTop: false,\n paginateOnBottom: true,\n customRowsPerPageDropdown: [],\n paginateDropdownAllowAll: true,\n paginationMode: 'records',\n currentPage: 1,\n currentPerPage: 10,\n sorts: [],\n globalSearchTerm: '',\n filteredRows: [],\n columnFilters: {},\n forceSearch: false,\n sortChanged: false,\n dataTypes: dataTypes || {}\n };\n },\n watch: {\n rows: {\n handler: function handler() {\n this.$emit('update:isLoading', false);\n this.filterRows(this.columnFilters, false);\n },\n deep: true,\n immediate: true\n },\n selectOptions: {\n handler: function handler() {\n this.initializeSelect();\n },\n deep: true,\n immediate: true\n },\n paginationOptions: {\n handler: function handler(newValue, oldValue) {\n if (!lodash_isequal(newValue, oldValue)) {\n this.initializePagination();\n }\n },\n deep: true,\n immediate: true\n },\n searchOptions: {\n handler: function handler() {\n if (this.searchOptions.externalQuery !== undefined && this.searchOptions.externalQuery !== this.searchTerm) {\n //* we need to set searchTerm to externalQuery first.\n this.externalSearchQuery = this.searchOptions.externalQuery;\n this.handleSearch();\n }\n\n this.initializeSearch();\n },\n deep: true,\n immediate: true\n },\n sortOptions: {\n handler: function handler(newValue, oldValue) {\n if (!lodash_isequal(newValue, oldValue)) {\n this.initializeSort();\n }\n },\n deep: true\n },\n selectedRows: function selectedRows(newValue, oldValue) {\n if (!lodash_isequal(newValue, oldValue)) {\n this.$emit('on-selected-rows-change', {\n selectedRows: this.selectedRows\n });\n }\n }\n },\n computed: {\n tableStyles: function tableStyles() {\n if (this.compactMode) return this.tableStyleClasses + 'vgt-compact';else return this.tableStyleClasses;\n },\n hasFooterSlot: function hasFooterSlot() {\n return !!this.$slots['table-actions-bottom'];\n },\n wrapperStyles: function wrapperStyles() {\n return {\n overflow: 'scroll-y',\n maxHeight: this.maxHeight ? this.maxHeight : 'auto'\n };\n },\n rowKeyField: function rowKeyField() {\n return this.groupOptions.rowKey || 'vgt_header_id';\n },\n hasHeaderRowTemplate: function hasHeaderRowTemplate() {\n return !!this.$slots['table-header-row'] || !!this.$scopedSlots['table-header-row'];\n },\n showEmptySlot: function showEmptySlot() {\n if (!this.paginated.length) return true;\n\n if (this.paginated[0].label === 'no groups' && !this.paginated[0].children.length) {\n return true;\n }\n\n return false;\n },\n allSelected: function allSelected() {\n return this.selectedRowCount > 0 && (this.selectAllByPage && this.selectedPageRowsCount === this.totalPageRowCount || !this.selectAllByPage && this.selectedRowCount === this.totalRowCount);\n },\n allSelectedIndeterminate: function allSelectedIndeterminate() {\n return !this.allSelected && (this.selectAllByPage && this.selectedPageRowsCount > 0 || !this.selectAllByPage && this.selectedRowCount > 0);\n },\n selectionInfo: function selectionInfo() {\n return \"\".concat(this.selectedRowCount, \" \").concat(this.selectionText);\n },\n selectedRowCount: function selectedRowCount() {\n return this.selectedRows.length;\n },\n selectedPageRowsCount: function selectedPageRowsCount() {\n return this.selectedPageRows.length;\n },\n selectedPageRows: function selectedPageRows() {\n var selectedRows = [];\n lodash_foreach(this.paginated, function (headerRow) {\n lodash_foreach(headerRow.children, function (row) {\n if (row.vgtSelected) {\n selectedRows.push(row);\n }\n });\n });\n return selectedRows;\n },\n selectedRows: function selectedRows() {\n var selectedRows = [];\n lodash_foreach(this.processedRows, function (headerRow) {\n lodash_foreach(headerRow.children, function (row) {\n if (row.vgtSelected) {\n selectedRows.push(row);\n }\n });\n });\n return selectedRows.sort(function (r1, r2) {\n return r1.originalIndex - r2.originalIndex;\n });\n },\n fullColspan: function fullColspan() {\n var fullColspan = 0;\n\n for (var i = 0; i < this.columns.length; i += 1) {\n if (!this.columns[i].hidden) {\n fullColspan += 1;\n }\n }\n\n if (this.lineNumbers) fullColspan++;\n if (this.selectable) fullColspan++;\n return fullColspan;\n },\n groupHeaderOnTop: function groupHeaderOnTop() {\n if (this.groupOptions && this.groupOptions.enabled && this.groupOptions.headerPosition && this.groupOptions.headerPosition === 'bottom') {\n return false;\n }\n\n if (this.groupOptions && this.groupOptions.enabled) return true; // will only get here if groupOptions is false\n\n return false;\n },\n groupHeaderOnBottom: function groupHeaderOnBottom() {\n if (this.groupOptions && this.groupOptions.enabled && this.groupOptions.headerPosition && this.groupOptions.headerPosition === 'bottom') {\n return true;\n }\n\n return false;\n },\n totalRowCount: function totalRowCount() {\n var total = 0;\n lodash_foreach(this.processedRows, function (headerRow) {\n total += headerRow.children ? headerRow.children.length : 0;\n });\n return total;\n },\n totalPageRowCount: function totalPageRowCount() {\n var total = 0;\n lodash_foreach(this.paginated, function (headerRow) {\n total += headerRow.children ? headerRow.children.length : 0;\n });\n return total;\n },\n wrapStyleClasses: function wrapStyleClasses() {\n var classes = 'vgt-wrap';\n if (this.rtl) classes += ' rtl';\n classes += \" \".concat(this.theme);\n return classes;\n },\n tableStyleClasses: function tableStyleClasses() {\n var classes = this.styleClass;\n classes += \" \".concat(this.theme);\n return classes;\n },\n searchTerm: function searchTerm() {\n return this.externalSearchQuery != null ? this.externalSearchQuery : this.globalSearchTerm;\n },\n //\n globalSearchAllowed: function globalSearchAllowed() {\n if (this.searchEnabled && !!this.globalSearchTerm && this.searchTrigger !== 'enter') {\n return true;\n }\n\n if (this.externalSearchQuery != null && this.searchTrigger !== 'enter') {\n return true;\n }\n\n if (this.forceSearch) {\n this.forceSearch = false;\n return true;\n }\n\n return false;\n },\n // this is done everytime sortColumn\n // or sort type changes\n //----------------------------------------\n processedRows: function processedRows() {\n var _this = this;\n\n // we only process rows when mode is local\n var computedRows = this.filteredRows;\n\n if (this.mode === 'remote') {\n return computedRows;\n } // take care of the global filter here also\n\n\n if (this.globalSearchAllowed) {\n // here also we need to de-construct and then\n // re-construct the rows.\n var allRows = [];\n lodash_foreach(this.filteredRows, function (headerRow) {\n allRows.push.apply(allRows, _toConsumableArray(headerRow.children));\n });\n var filteredRows = [];\n lodash_foreach(allRows, function (row) {\n lodash_foreach(_this.columns, function (col) {\n // if col does not have search disabled,\n if (!col.globalSearchDisabled) {\n // if a search function is provided,\n // use that for searching, otherwise,\n // use the default search behavior\n if (_this.searchFn) {\n var foundMatch = _this.searchFn(row, col, _this.collectFormatted(row, col), _this.searchTerm);\n\n if (foundMatch) {\n filteredRows.push(row);\n return false; // break the loop\n }\n } else {\n // comparison\n var matched = defaultType.filterPredicate(_this.collectFormatted(row, col), _this.searchTerm, _this.searchSkipDiacritics);\n\n if (matched) {\n filteredRows.push(row);\n return false; // break loop\n }\n }\n }\n });\n }); // this is where we emit on search\n\n this.$emit('on-search', {\n searchTerm: this.searchTerm,\n rowCount: filteredRows.length\n }); // here we need to reconstruct the nested structure\n // of rows\n\n computedRows = [];\n lodash_foreach(this.filteredRows, function (headerRow) {\n var i = headerRow.vgt_header_id;\n var children = lodash_filter(filteredRows, ['vgt_id', i]);\n\n if (children.length) {\n var newHeaderRow = lodash_clonedeep(headerRow);\n newHeaderRow.children = children;\n computedRows.push(newHeaderRow);\n }\n });\n }\n\n if (this.sorts.length) {\n //* we need to sort\n computedRows.forEach(function (cRows) {\n cRows.children.sort(function (xRow, yRow) {\n //* we need to get column for each sort\n var sortValue;\n\n for (var i = 0; i < _this.sorts.length; i += 1) {\n var column = _this.getColumnForField(_this.sorts[i].field);\n\n var xvalue = _this.collect(xRow, _this.sorts[i].field);\n\n var yvalue = _this.collect(yRow, _this.sorts[i].field); //* if a custom sort function has been provided we use that\n\n\n var sortFn = column.sortFn;\n\n if (sortFn && typeof sortFn === 'function') {\n sortValue = sortValue || sortFn(xvalue, yvalue, column, xRow, yRow) * (_this.sorts[i].type === 'desc' ? -1 : 1);\n } else {\n //* else we use our own sort\n sortValue = sortValue || column.typeDef.compare(xvalue, yvalue, column) * (_this.sorts[i].type === 'desc' ? -1 : 1);\n }\n }\n\n return sortValue;\n });\n });\n } // if the filtering is event based, we need to maintain filter\n // rows\n\n\n if (this.searchTrigger === 'enter') {\n this.filteredRows = computedRows;\n }\n\n return computedRows;\n },\n paginated: function paginated() {\n var _this2 = this;\n\n if (!this.processedRows.length) return [];\n\n if (this.mode === 'remote') {\n return this.processedRows;\n } //* flatten the rows for paging.\n\n\n var paginatedRows = [];\n lodash_foreach(this.processedRows, function (childRows) {\n var _paginatedRows;\n\n //* only add headers when group options are enabled.\n if (_this2.groupOptions.enabled) {\n paginatedRows.push(childRows);\n }\n\n (_paginatedRows = paginatedRows).push.apply(_paginatedRows, _toConsumableArray(childRows.children));\n });\n\n if (this.paginate) {\n var pageStart = (this.currentPage - 1) * this.currentPerPage; // in case of filtering we might be on a page that is\n // not relevant anymore\n // also, if setting to all, current page will not be valid\n\n if (pageStart >= paginatedRows.length || this.currentPerPage === -1) {\n this.currentPage = 1;\n pageStart = 0;\n } // calculate page end now\n\n\n var pageEnd = paginatedRows.length + 1; // if the setting is set to 'all'\n\n if (this.currentPerPage !== -1) {\n pageEnd = this.currentPage * this.currentPerPage;\n }\n\n paginatedRows = paginatedRows.slice(pageStart, pageEnd);\n } // reconstruct paginated rows here\n\n\n var reconstructedRows = [];\n paginatedRows.forEach(function (flatRow) {\n //* header row?\n if (flatRow.vgt_header_id !== undefined) {\n _this2.handleExpanded(flatRow);\n\n var newHeaderRow = lodash_clonedeep(flatRow);\n newHeaderRow.children = [];\n reconstructedRows.push(newHeaderRow);\n } else {\n //* child row\n var hRow = reconstructedRows.find(function (r) {\n return r.vgt_header_id === flatRow.vgt_id;\n });\n\n if (!hRow) {\n hRow = _this2.processedRows.find(function (r) {\n return r.vgt_header_id === flatRow.vgt_id;\n });\n\n if (hRow) {\n hRow = lodash_clonedeep(hRow);\n hRow.children = [];\n reconstructedRows.push(hRow);\n }\n }\n\n hRow.children.push(flatRow);\n }\n });\n return reconstructedRows;\n },\n originalRows: function originalRows() {\n var rows = lodash_clonedeep(this.rows);\n var nestedRows = [];\n\n if (!this.groupOptions.enabled) {\n nestedRows = this.handleGrouped([{\n label: 'no groups',\n children: rows\n }]);\n } else {\n nestedRows = this.handleGrouped(rows);\n } // we need to preserve the original index of\n // rows so lets do that\n\n\n var index = 0;\n lodash_foreach(nestedRows, function (headerRow, i) {\n lodash_foreach(headerRow.children, function (row, j) {\n row.originalIndex = index++;\n });\n });\n return nestedRows;\n },\n typedColumns: function typedColumns() {\n var columns = lodash_assign(this.columns, []);\n\n for (var i = 0; i < this.columns.length; i++) {\n var column = columns[i];\n column.typeDef = this.dataTypes[column.type] || defaultType;\n }\n\n return columns;\n },\n hasRowClickListener: function hasRowClickListener() {\n return this.$listeners && this.$listeners['on-row-click'];\n }\n },\n methods: {\n //* we need to check for expanded row state here\n //* to maintain it when sorting/filtering\n handleExpanded: function handleExpanded(headerRow) {\n if (this.maintainExpanded && this.expandedRowKeys.has(headerRow[this.rowKeyField])) {\n this.$set(headerRow, 'vgtIsExpanded', true);\n } else {\n this.$set(headerRow, 'vgtIsExpanded', false);\n }\n },\n toggleExpand: function toggleExpand(id) {\n var _this3 = this;\n\n var headerRow = this.filteredRows.find(function (r) {\n return r[_this3.rowKeyField] === id;\n });\n\n if (headerRow) {\n this.$set(headerRow, 'vgtIsExpanded', !headerRow.vgtIsExpanded);\n }\n\n if (this.maintainExpanded && headerRow.vgtIsExpanded) {\n this.expandedRowKeys.add(headerRow[this.rowKeyField]);\n } else {\n this.expandedRowKeys[\"delete\"](headerRow[this.rowKeyField]);\n }\n },\n expandAll: function expandAll() {\n var _this4 = this;\n\n this.filteredRows.forEach(function (row) {\n _this4.$set(row, 'vgtIsExpanded', true);\n\n if (_this4.maintainExpanded) {\n _this4.expandedRowKeys.add(row[_this4.rowKeyField]);\n }\n });\n },\n collapseAll: function collapseAll() {\n var _this5 = this;\n\n this.filteredRows.forEach(function (row) {\n _this5.$set(row, 'vgtIsExpanded', false);\n\n _this5.expandedRowKeys.clear();\n });\n },\n getColumnForField: function getColumnForField(field) {\n for (var i = 0; i < this.typedColumns.length; i += 1) {\n if (this.typedColumns[i].field === field) return this.typedColumns[i];\n }\n },\n handleSearch: function handleSearch() {\n this.resetTable(); // for remote mode, we need to emit on-search\n\n if (this.mode === 'remote') {\n this.$emit('on-search', {\n searchTerm: this.searchTerm\n });\n }\n },\n reset: function reset() {\n this.initializeSort();\n this.changePage(1);\n this.$refs['table-header-primary'].reset(true);\n\n if (this.$refs['table-header-secondary']) {\n this.$refs['table-header-secondary'].reset(true);\n }\n },\n emitSelectedRows: function emitSelectedRows() {\n this.$emit('on-select-all', {\n selected: this.selectedRowCount === this.totalRowCount,\n selectedRows: this.selectedRows\n });\n },\n unselectAllInternal: function unselectAllInternal(forceAll) {\n var _this6 = this;\n\n var rows = this.selectAllByPage && !forceAll ? this.paginated : this.filteredRows;\n lodash_foreach(rows, function (headerRow, i) {\n lodash_foreach(headerRow.children, function (row, j) {\n _this6.$set(row, 'vgtSelected', false);\n });\n });\n this.emitSelectedRows();\n },\n toggleSelectAll: function toggleSelectAll() {\n var _this7 = this;\n\n if (this.allSelected) {\n this.unselectAllInternal();\n return;\n }\n\n var rows = this.selectAllByPage ? this.paginated : this.filteredRows;\n lodash_foreach(rows, function (headerRow) {\n lodash_foreach(headerRow.children, function (row) {\n _this7.$set(row, 'vgtSelected', true);\n });\n });\n this.emitSelectedRows();\n },\n toggleSelectGroup: function toggleSelectGroup(event, headerRow) {\n var _this8 = this;\n\n lodash_foreach(headerRow.children, function (row) {\n _this8.$set(row, 'vgtSelected', event.checked);\n });\n },\n changePage: function changePage(value) {\n if (this.paginationOptions.enabled) {\n var paginationWidget = this.$refs.paginationBottom;\n\n if (this.paginationOptions.position === 'top') {\n paginationWidget = this.$refs.paginationTop;\n }\n\n if (paginationWidget) {\n paginationWidget.currentPage = value; // we also need to set the currentPage\n // for table.\n\n this.currentPage = value;\n }\n }\n },\n pageChangedEvent: function pageChangedEvent() {\n return {\n currentPage: this.currentPage,\n currentPerPage: this.currentPerPage,\n total: Math.floor(this.totalRowCount / this.currentPerPage)\n };\n },\n pageChanged: function pageChanged(pagination) {\n this.currentPage = pagination.currentPage;\n var pageChangedEvent = this.pageChangedEvent();\n pageChangedEvent.prevPage = pagination.prevPage;\n this.$emit('on-page-change', pageChangedEvent);\n\n if (this.mode === 'remote') {\n this.$emit('update:isLoading', true);\n }\n },\n perPageChanged: function perPageChanged(pagination) {\n this.currentPerPage = pagination.currentPerPage; //* update perPage also\n\n var perPageChangedEvent = this.pageChangedEvent();\n this.$emit('on-per-page-change', perPageChangedEvent);\n\n if (this.mode === 'remote') {\n this.$emit('update:isLoading', true);\n }\n },\n changeSort: function changeSort(sorts) {\n this.sorts = sorts;\n this.$emit('on-sort-change', sorts); // every time we change sort we need to reset to page 1\n\n this.changePage(1); // if the mode is remote, we don't need to do anything\n // after this. just set table loading to true\n\n if (this.mode === 'remote') {\n this.$emit('update:isLoading', true);\n return;\n }\n\n this.sortChanged = true;\n },\n // checkbox click should always do the following\n onCheckboxClicked: function onCheckboxClicked(row, index, event) {\n this.$set(row, 'vgtSelected', !row.vgtSelected);\n this.$emit('on-row-click', {\n row: row,\n pageIndex: index,\n selected: !!row.vgtSelected,\n event: event\n });\n },\n onRowDoubleClicked: function onRowDoubleClicked(row, index, event) {\n this.$emit('on-row-dblclick', {\n row: row,\n pageIndex: index,\n selected: !!row.vgtSelected,\n event: event\n });\n },\n onRowClicked: function onRowClicked(row, index, event) {\n if (this.selectable && !this.selectOnCheckboxOnly) {\n this.$set(row, 'vgtSelected', !row.vgtSelected);\n }\n\n this.$emit('on-row-click', {\n row: row,\n pageIndex: index,\n selected: !!row.vgtSelected,\n event: event\n });\n },\n onRowAuxClicked: function onRowAuxClicked(row, index, event) {\n this.$emit('on-row-aux-click', {\n row: row,\n pageIndex: index,\n selected: !!row.vgtSelected,\n event: event\n });\n },\n onCellClicked: function onCellClicked(row, column, rowIndex, event) {\n this.$emit('on-cell-click', {\n row: row,\n column: column,\n rowIndex: rowIndex,\n event: event\n });\n },\n onMouseenter: function onMouseenter(row, index) {\n this.$emit('on-row-mouseenter', {\n row: row,\n pageIndex: index\n });\n },\n onMouseleave: function onMouseleave(row, index) {\n this.$emit('on-row-mouseleave', {\n row: row,\n pageIndex: index\n });\n },\n searchTableOnEnter: function searchTableOnEnter() {\n if (this.searchTrigger === 'enter') {\n this.handleSearch(); // we reset the filteredRows here because\n // we want to search across everything.\n\n this.filteredRows = lodash_clonedeep(this.originalRows);\n this.forceSearch = true;\n this.sortChanged = true;\n }\n },\n searchTableOnKeyUp: function searchTableOnKeyUp() {\n if (this.searchTrigger !== 'enter') {\n this.handleSearch();\n }\n },\n resetTable: function resetTable() {\n this.unselectAllInternal(true); // every time we searchTable\n\n this.changePage(1);\n },\n // field can be:\n // 1. function\n // 2. regular property - ex: 'prop'\n // 3. nested property path - ex: 'nested.prop'\n collect: function collect(obj, field) {\n // utility function to get nested property\n function dig(obj, selector) {\n var result = obj;\n var splitter = selector.split('.');\n\n for (var i = 0; i < splitter.length; i++) {\n if (typeof result === 'undefined' || result === null) {\n return undefined;\n }\n\n result = result[splitter[i]];\n }\n\n return result;\n }\n\n if (typeof field === 'function') return field(obj);\n if (typeof field === 'string') return dig(obj, field);\n return undefined;\n },\n collectFormatted: function collectFormatted(obj, column) {\n var headerRow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var value;\n\n if (headerRow && column.headerField) {\n value = this.collect(obj, column.headerField);\n } else {\n value = this.collect(obj, column.field);\n }\n\n if (value === undefined) return ''; // if user has supplied custom formatter,\n // use that here\n\n if (column.formatFn && typeof column.formatFn === 'function') {\n return column.formatFn(value, obj);\n } // lets format the resultant data\n\n\n var type = column.typeDef; // this will only happen if we try to collect formatted\n // before types have been initialized. for example: on\n // load when external query is specified.\n\n if (!type) {\n type = this.dataTypes[column.type] || defaultType;\n }\n\n var result = type.format(value, column); // we must have some values in compact mode\n\n if (this.compactMode && (result == '' || result == null)) return '-';\n return result;\n },\n formattedRow: function formattedRow(row) {\n var isHeaderRow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var formattedRow = {};\n\n for (var i = 0; i < this.typedColumns.length; i++) {\n var col = this.typedColumns[i]; // what happens if field is\n\n if (col.field) {\n formattedRow[col.field] = this.collectFormatted(row, col, isHeaderRow);\n }\n }\n\n return formattedRow;\n },\n // Get classes for the given column index & element.\n getClasses: function getClasses(index, element, row) {\n var _this$typedColumns$in = this.typedColumns[index],\n typeDef = _this$typedColumns$in.typeDef,\n custom = _this$typedColumns$in[\"\".concat(element, \"Class\")];\n\n var isRight = typeDef.isRight;\n if (this.rtl) isRight = true;\n var classes = {\n 'vgt-right-align': isRight,\n 'vgt-left-align': !isRight\n }; // for td we need to check if value is\n // a function.\n\n if (typeof custom === 'function') {\n classes[custom(row)] = true;\n } else if (typeof custom === 'string') {\n classes[custom] = true;\n }\n\n return classes;\n },\n // method to filter rows\n filterRows: function filterRows(columnFilters) {\n var _this9 = this;\n\n var fromFilter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n // if (!this.rows.length) return;\n // this is invoked either as a result of changing filters\n // or as a result of modifying rows.\n this.columnFilters = columnFilters;\n var computedRows = lodash_clonedeep(this.originalRows); // do we have a filter to care about?\n // if not we don't need to do anything\n\n if (this.columnFilters && Object.keys(this.columnFilters).length) {\n // every time we filter rows, we need to set current page\n // to 1\n // if the mode is remote, we only need to reset, if this is\n // being called from filter, not when rows are changing\n if (this.mode !== 'remote' || fromFilter) {\n this.changePage(1);\n } // we need to emit an event and that's that.\n // but this only needs to be invoked if filter is changing\n // not when row object is modified.\n\n\n if (fromFilter) {\n this.$emit('on-column-filter', {\n columnFilters: this.columnFilters\n });\n } // if mode is remote, we don't do any filtering here.\n\n\n if (this.mode === 'remote') {\n if (fromFilter) {\n this.$emit('update:isLoading', true);\n } else {\n // if remote filtering has already been taken care of.\n this.filteredRows = computedRows;\n }\n\n return;\n }\n\n var _loop = function _loop(i) {\n var col = _this9.typedColumns[i];\n\n if (_this9.columnFilters[col.field]) {\n computedRows = lodash_foreach(computedRows, function (headerRow) {\n var newChildren = headerRow.children.filter(function (row) {\n // If column has a custom filter, use that.\n if (col.filterOptions && typeof col.filterOptions.filterFn === 'function') {\n return col.filterOptions.filterFn(_this9.collect(row, col.field), _this9.columnFilters[col.field]);\n } // Otherwise Use default filters\n\n\n var typeDef = col.typeDef;\n return typeDef.filterPredicate(_this9.collect(row, col.field), _this9.columnFilters[col.field], false, col.filterOptions && _typeof(col.filterOptions.filterDropdownItems) === 'object');\n }); // should we remove the header?\n\n headerRow.children = newChildren;\n });\n }\n };\n\n for (var i = 0; i < this.typedColumns.length; i++) {\n _loop(i);\n }\n }\n\n this.filteredRows = computedRows;\n },\n getCurrentIndex: function getCurrentIndex(index) {\n return (this.currentPage - 1) * this.currentPerPage + index + 1;\n },\n getRowStyleClass: function getRowStyleClass(row) {\n var classes = '';\n if (this.hasRowClickListener) classes += 'clickable';\n var rowStyleClasses;\n\n if (typeof this.rowStyleClass === 'function') {\n rowStyleClasses = this.rowStyleClass(row);\n } else {\n rowStyleClasses = this.rowStyleClass;\n }\n\n if (rowStyleClasses) {\n classes += \" \".concat(rowStyleClasses);\n }\n\n return classes;\n },\n handleGrouped: function handleGrouped(originalRows) {\n var _this10 = this;\n\n lodash_foreach(originalRows, function (headerRow, i) {\n headerRow.vgt_header_id = i;\n\n if (_this10.groupOptions.maintainExpanded && _this10.expandedRowKeys.has(headerRow[_this10.groupOptions.rowKey])) {\n _this10.$set(headerRow, 'vgtIsExpanded', true);\n }\n\n lodash_foreach(headerRow.children, function (childRow) {\n childRow.vgt_id = i;\n });\n });\n return originalRows;\n },\n initializePagination: function initializePagination() {\n var _this11 = this;\n\n var _this$paginationOptio = this.paginationOptions,\n enabled = _this$paginationOptio.enabled,\n perPage = _this$paginationOptio.perPage,\n position = _this$paginationOptio.position,\n perPageDropdown = _this$paginationOptio.perPageDropdown,\n dropdownAllowAll = _this$paginationOptio.dropdownAllowAll,\n nextLabel = _this$paginationOptio.nextLabel,\n prevLabel = _this$paginationOptio.prevLabel,\n rowsPerPageLabel = _this$paginationOptio.rowsPerPageLabel,\n ofLabel = _this$paginationOptio.ofLabel,\n pageLabel = _this$paginationOptio.pageLabel,\n allLabel = _this$paginationOptio.allLabel,\n setCurrentPage = _this$paginationOptio.setCurrentPage,\n mode = _this$paginationOptio.mode;\n\n if (typeof enabled === 'boolean') {\n this.paginate = enabled;\n }\n\n if (typeof perPage === 'number') {\n this.perPage = perPage;\n }\n\n if (position === 'top') {\n this.paginateOnTop = true; // default is false\n\n this.paginateOnBottom = false; // default is true\n } else if (position === 'both') {\n this.paginateOnTop = true;\n this.paginateOnBottom = true;\n }\n\n if (Array.isArray(perPageDropdown) && perPageDropdown.length) {\n this.customRowsPerPageDropdown = perPageDropdown;\n\n if (!this.perPage) {\n var _perPageDropdown = _slicedToArray(perPageDropdown, 1);\n\n this.perPage = _perPageDropdown[0];\n }\n }\n\n if (typeof dropdownAllowAll === 'boolean') {\n this.paginateDropdownAllowAll = dropdownAllowAll;\n }\n\n if (typeof mode === 'string') {\n this.paginationMode = mode;\n }\n\n if (typeof nextLabel === 'string') {\n this.nextText = nextLabel;\n }\n\n if (typeof prevLabel === 'string') {\n this.prevText = prevLabel;\n }\n\n if (typeof rowsPerPageLabel === 'string') {\n this.rowsPerPageText = rowsPerPageLabel;\n }\n\n if (typeof ofLabel === 'string') {\n this.ofText = ofLabel;\n }\n\n if (typeof pageLabel === 'string') {\n this.pageText = pageLabel;\n }\n\n if (typeof allLabel === 'string') {\n this.allText = allLabel;\n }\n\n if (typeof setCurrentPage === 'number') {\n setTimeout(function () {\n _this11.changePage(setCurrentPage);\n }, 500);\n }\n },\n initializeSearch: function initializeSearch() {\n var _this$searchOptions = this.searchOptions,\n enabled = _this$searchOptions.enabled,\n trigger = _this$searchOptions.trigger,\n externalQuery = _this$searchOptions.externalQuery,\n searchFn = _this$searchOptions.searchFn,\n placeholder = _this$searchOptions.placeholder,\n skipDiacritics = _this$searchOptions.skipDiacritics;\n\n if (typeof enabled === 'boolean') {\n this.searchEnabled = enabled;\n }\n\n if (trigger === 'enter') {\n this.searchTrigger = trigger;\n }\n\n if (typeof externalQuery === 'string') {\n this.externalSearchQuery = externalQuery;\n }\n\n if (typeof searchFn === 'function') {\n this.searchFn = searchFn;\n }\n\n if (typeof placeholder === 'string') {\n this.searchPlaceholder = placeholder;\n }\n\n if (typeof skipDiacritics === 'boolean') {\n this.searchSkipDiacritics = skipDiacritics;\n }\n },\n initializeSort: function initializeSort() {\n var _this$sortOptions = this.sortOptions,\n enabled = _this$sortOptions.enabled,\n initialSortBy = _this$sortOptions.initialSortBy;\n\n if (typeof enabled === 'boolean') {\n this.sortable = enabled;\n } //* initialSortBy can be an array or an object\n\n\n if (_typeof(initialSortBy) === 'object') {\n var ref = this.fixedHeader ? this.$refs['table-header-secondary'] : this.$refs['table-header-primary'];\n\n if (Array.isArray(initialSortBy)) {\n ref.setInitialSort(initialSortBy);\n } else {\n var hasField = Object.prototype.hasOwnProperty.call(initialSortBy, 'field');\n if (hasField) ref.setInitialSort([initialSortBy]);\n }\n }\n },\n initializeSelect: function initializeSelect() {\n var _this$selectOptions = this.selectOptions,\n enabled = _this$selectOptions.enabled,\n selectionInfoClass = _this$selectOptions.selectionInfoClass,\n selectionText = _this$selectOptions.selectionText,\n clearSelectionText = _this$selectOptions.clearSelectionText,\n selectOnCheckboxOnly = _this$selectOptions.selectOnCheckboxOnly,\n selectAllByPage = _this$selectOptions.selectAllByPage,\n disableSelectInfo = _this$selectOptions.disableSelectInfo,\n selectAllByGroup = _this$selectOptions.selectAllByGroup;\n\n if (typeof enabled === 'boolean') {\n this.selectable = enabled;\n }\n\n if (typeof selectOnCheckboxOnly === 'boolean') {\n this.selectOnCheckboxOnly = selectOnCheckboxOnly;\n }\n\n if (typeof selectAllByPage === 'boolean') {\n this.selectAllByPage = selectAllByPage;\n }\n\n if (typeof selectAllByGroup === 'boolean') {\n this.selectAllByGroup = selectAllByGroup;\n }\n\n if (typeof disableSelectInfo === 'boolean') {\n this.disableSelectInfo = disableSelectInfo;\n }\n\n if (typeof selectionInfoClass === 'string') {\n this.selectionInfoClass = selectionInfoClass;\n }\n\n if (typeof selectionText === 'string') {\n this.selectionText = selectionText;\n }\n\n if (typeof clearSelectionText === 'string') {\n this.clearSelectionText = clearSelectionText;\n }\n }\n },\n mounted: function mounted() {\n if (this.perPage) {\n this.currentPerPage = this.perPage;\n }\n\n this.initializeSort();\n },\n components: {\n 'vgt-pagination': __vue_component__$1,\n 'vgt-global-search': __vue_component__$2,\n 'vgt-header-row': __vue_component__$5,\n 'vgt-table-header': __vue_component__$4\n }\n};\n\n/* script */\nvar __vue_script__$6 = script$6;\n/* template */\n\nvar __vue_render__$6 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n \"class\": _vm.wrapStyleClasses\n }, [_vm.isLoading ? _c('div', {\n staticClass: \"vgt-loading vgt-center-align\"\n }, [_vm._t(\"loadingContent\", [_c('span', {\n staticClass: \"vgt-loading__content\"\n }, [_vm._v(\"\\n Loading...\\n \")])])], 2) : _vm._e(), _vm._v(\" \"), _c('div', {\n staticClass: \"vgt-inner-wrap\",\n \"class\": {\n 'is-loading': _vm.isLoading\n }\n }, [_vm.paginate && _vm.paginateOnTop ? _vm._t(\"pagination-top\", [_c('vgt-pagination', {\n ref: \"paginationTop\",\n attrs: {\n \"perPage\": _vm.perPage,\n \"rtl\": _vm.rtl,\n \"total\": _vm.totalRows || _vm.totalRowCount,\n \"mode\": _vm.paginationMode,\n \"nextText\": _vm.nextText,\n \"prevText\": _vm.prevText,\n \"rowsPerPageText\": _vm.rowsPerPageText,\n \"customRowsPerPageDropdown\": _vm.customRowsPerPageDropdown,\n \"paginateDropdownAllowAll\": _vm.paginateDropdownAllowAll,\n \"ofText\": _vm.ofText,\n \"pageText\": _vm.pageText,\n \"allText\": _vm.allText\n },\n on: {\n \"page-changed\": _vm.pageChanged,\n \"per-page-changed\": _vm.perPageChanged\n }\n })], {\n \"pageChanged\": _vm.pageChanged,\n \"perPageChanged\": _vm.perPageChanged,\n \"total\": _vm.totalRows || _vm.totalRowCount\n }) : _vm._e(), _vm._v(\" \"), _c('vgt-global-search', {\n attrs: {\n \"search-enabled\": _vm.searchEnabled && _vm.externalSearchQuery == null,\n \"global-search-placeholder\": _vm.searchPlaceholder\n },\n on: {\n \"on-keyup\": _vm.searchTableOnKeyUp,\n \"on-enter\": _vm.searchTableOnEnter\n },\n model: {\n value: _vm.globalSearchTerm,\n callback: function callback($$v) {\n _vm.globalSearchTerm = $$v;\n },\n expression: \"globalSearchTerm\"\n }\n }, [_c('template', {\n slot: \"internal-table-actions\"\n }, [_vm._t(\"table-actions\")], 2)], 2), _vm._v(\" \"), _vm.selectedRowCount && !_vm.disableSelectInfo ? _c('div', {\n staticClass: \"vgt-selection-info-row clearfix\",\n \"class\": _vm.selectionInfoClass\n }, [_vm._v(\"\\n \" + _vm._s(_vm.selectionInfo) + \"\\n \"), _c('a', {\n attrs: {\n \"href\": \"\"\n },\n on: {\n \"click\": function click($event) {\n $event.preventDefault();\n return _vm.unselectAllInternal(true);\n }\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.clearSelectionText) + \"\\n \")]), _vm._v(\" \"), _c('div', {\n staticClass: \"vgt-selection-info-row__actions vgt-pull-right\"\n }, [_vm._t(\"selected-row-actions\")], 2)]) : _vm._e(), _vm._v(\" \"), _c('div', {\n staticClass: \"vgt-fixed-header\"\n }, [_vm.fixedHeader ? _c('table', {\n \"class\": _vm.tableStyleClasses\n }, [_c(\"vgt-table-header\", {\n ref: \"table-header-secondary\",\n tag: \"thead\",\n attrs: {\n \"columns\": _vm.columns,\n \"line-numbers\": _vm.lineNumbers,\n \"selectable\": _vm.selectable,\n \"all-selected\": _vm.allSelected,\n \"all-selected-indeterminate\": _vm.allSelectedIndeterminate,\n \"mode\": _vm.mode,\n \"sortable\": _vm.sortable,\n \"typed-columns\": _vm.typedColumns,\n \"getClasses\": _vm.getClasses,\n \"searchEnabled\": _vm.searchEnabled,\n \"paginated\": _vm.paginated,\n \"table-ref\": _vm.$refs.table\n },\n on: {\n \"on-toggle-select-all\": _vm.toggleSelectAll,\n \"on-sort-change\": _vm.changeSort,\n \"filter-changed\": _vm.filterRows\n },\n scopedSlots: _vm._u([{\n key: \"table-column\",\n fn: function fn(props) {\n return [_vm._t(\"table-column\", [_c('span', [_vm._v(_vm._s(props.column.label))])], {\n \"column\": props.column\n })];\n }\n }], null, true)\n })], 1) : _vm._e()]), _vm._v(\" \"), _c('div', {\n \"class\": {\n 'vgt-responsive': _vm.responsive\n },\n style: _vm.wrapperStyles\n }, [_c('table', {\n ref: \"table\",\n \"class\": _vm.tableStyles\n }, [_c(\"vgt-table-header\", {\n ref: \"table-header-primary\",\n tag: \"thead\",\n attrs: {\n \"columns\": _vm.columns,\n \"line-numbers\": _vm.lineNumbers,\n \"selectable\": _vm.selectable,\n \"all-selected\": _vm.allSelected,\n \"all-selected-indeterminate\": _vm.allSelectedIndeterminate,\n \"mode\": _vm.mode,\n \"sortable\": _vm.sortable,\n \"typed-columns\": _vm.typedColumns,\n \"getClasses\": _vm.getClasses,\n \"searchEnabled\": _vm.searchEnabled\n },\n on: {\n \"on-toggle-select-all\": _vm.toggleSelectAll,\n \"on-sort-change\": _vm.changeSort,\n \"filter-changed\": _vm.filterRows\n },\n scopedSlots: _vm._u([{\n key: \"table-column\",\n fn: function fn(props) {\n return [_vm._t(\"table-column\", [_c('span', [_vm._v(_vm._s(props.column.label))])], {\n \"column\": props.column\n })];\n }\n }, {\n key: \"column-filter\",\n fn: function fn(props) {\n return [_vm._t(\"column-filter\", null, {\n \"column\": props.column,\n \"updateFilters\": props.updateFilters\n })];\n }\n }], null, true)\n }), _vm._v(\" \"), _vm._l(_vm.paginated, function (headerRow, index) {\n return _c('tbody', {\n key: index\n }, [_vm.groupHeaderOnTop ? _c('vgt-header-row', {\n \"class\": _vm.getRowStyleClass(headerRow),\n attrs: {\n \"header-row\": headerRow,\n \"columns\": _vm.columns,\n \"line-numbers\": _vm.lineNumbers,\n \"selectable\": _vm.selectable,\n \"select-all-by-group\": _vm.selectAllByGroup,\n \"collapsable\": _vm.groupOptions.collapsable,\n \"collect-formatted\": _vm.collectFormatted,\n \"formatted-row\": _vm.formattedRow,\n \"get-classes\": _vm.getClasses,\n \"full-colspan\": _vm.fullColspan,\n \"groupIndex\": index\n },\n on: {\n \"vgtExpand\": function vgtExpand($event) {\n return _vm.toggleExpand(headerRow[_vm.rowKeyField]);\n },\n \"on-select-group-change\": function onSelectGroupChange($event) {\n return _vm.toggleSelectGroup($event, headerRow);\n }\n },\n scopedSlots: _vm._u([{\n key: \"table-header-row\",\n fn: function fn(props) {\n return _vm.hasHeaderRowTemplate ? [_vm._t(\"table-header-row\", null, {\n \"column\": props.column,\n \"formattedRow\": props.formattedRow,\n \"row\": props.row\n })] : undefined;\n }\n }], null, true)\n }) : _vm._e(), _vm._v(\" \"), _vm._l(headerRow.children, function (row, index) {\n return (_vm.groupOptions.collapsable ? headerRow.vgtIsExpanded : true) ? _c('tr', {\n key: row.originalIndex,\n \"class\": _vm.getRowStyleClass(row),\n on: {\n \"mouseenter\": function mouseenter($event) {\n return _vm.onMouseenter(row, index);\n },\n \"mouseleave\": function mouseleave($event) {\n return _vm.onMouseleave(row, index);\n },\n \"dblclick\": function dblclick($event) {\n return _vm.onRowDoubleClicked(row, index, $event);\n },\n \"click\": function click($event) {\n return _vm.onRowClicked(row, index, $event);\n },\n \"auxclick\": function auxclick($event) {\n return _vm.onRowAuxClicked(row, index, $event);\n }\n }\n }, [_vm.lineNumbers ? _c('th', {\n staticClass: \"line-numbers\"\n }, [_vm._v(\"\\n \" + _vm._s(_vm.getCurrentIndex(index)) + \"\\n \")]) : _vm._e(), _vm._v(\" \"), _vm.selectable ? _c('th', {\n staticClass: \"vgt-checkbox-col\",\n on: {\n \"click\": function click($event) {\n $event.stopPropagation();\n return _vm.onCheckboxClicked(row, index, $event);\n }\n }\n }, [_c('input', {\n attrs: {\n \"type\": \"checkbox\"\n },\n domProps: {\n \"checked\": row.vgtSelected\n }\n })]) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.columns, function (column, i) {\n return !column.hidden && column.field ? _c('td', {\n key: i,\n \"class\": _vm.getClasses(i, 'td', row),\n attrs: {\n \"data-label\": _vm.compactMode ? column.label : undefined\n },\n on: {\n \"click\": function click($event) {\n return _vm.onCellClicked(row, column, index, $event);\n }\n }\n }, [_vm._t(\"table-row\", [!column.html ? _c('span', [_vm._v(\"\\n \" + _vm._s(_vm.collectFormatted(row, column)) + \"\\n \")]) : _vm._e(), _vm._v(\" \"), column.html ? _c('span', {\n domProps: {\n \"innerHTML\": _vm._s(_vm.collect(row, column.field))\n }\n }) : _vm._e()], {\n \"row\": row,\n \"column\": column,\n \"formattedRow\": _vm.formattedRow(row),\n \"index\": index\n })], 2) : _vm._e();\n })], 2) : _vm._e();\n }), _vm._v(\" \"), _vm.groupHeaderOnBottom ? _c('vgt-header-row', {\n attrs: {\n \"header-row\": headerRow,\n \"columns\": _vm.columns,\n \"line-numbers\": _vm.lineNumbers,\n \"selectable\": _vm.selectable,\n \"select-all-by-group\": _vm.selectAllByGroup,\n \"collect-formatted\": _vm.collectFormatted,\n \"formatted-row\": _vm.formattedRow,\n \"get-classes\": _vm.getClasses,\n \"full-colspan\": _vm.fullColspan,\n \"groupIndex\": index\n },\n on: {\n \"on-select-group-change\": function onSelectGroupChange($event) {\n return _vm.toggleSelectGroup($event, headerRow);\n }\n },\n scopedSlots: _vm._u([{\n key: \"table-header-row\",\n fn: function fn(props) {\n return _vm.hasHeaderRowTemplate ? [_vm._t(\"table-header-row\", null, {\n \"column\": props.column,\n \"formattedRow\": props.formattedRow,\n \"row\": props.row\n })] : undefined;\n }\n }], null, true)\n }) : _vm._e()], 2);\n }), _vm._v(\" \"), _vm.showEmptySlot ? _c('tbody', [_c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.fullColspan\n }\n }, [_vm._t(\"emptystate\", [_c('div', {\n staticClass: \"vgt-center-align vgt-text-disabled\"\n }, [_vm._v(\"\\n No data for table\\n \")])])], 2)])]) : _vm._e()], 2)]), _vm._v(\" \"), _vm.hasFooterSlot ? _c('div', {\n staticClass: \"vgt-wrap__actions-footer\"\n }, [_vm._t(\"table-actions-bottom\")], 2) : _vm._e(), _vm._v(\" \"), _vm.paginate && _vm.paginateOnBottom ? _vm._t(\"pagination-bottom\", [_c('vgt-pagination', {\n ref: \"paginationBottom\",\n attrs: {\n \"perPage\": _vm.perPage,\n \"rtl\": _vm.rtl,\n \"total\": _vm.totalRows || _vm.totalRowCount,\n \"mode\": _vm.paginationMode,\n \"nextText\": _vm.nextText,\n \"prevText\": _vm.prevText,\n \"rowsPerPageText\": _vm.rowsPerPageText,\n \"customRowsPerPageDropdown\": _vm.customRowsPerPageDropdown,\n \"paginateDropdownAllowAll\": _vm.paginateDropdownAllowAll,\n \"ofText\": _vm.ofText,\n \"pageText\": _vm.pageText,\n \"allText\": _vm.allText\n },\n on: {\n \"page-changed\": _vm.pageChanged,\n \"per-page-changed\": _vm.perPageChanged\n }\n })], {\n \"pageChanged\": _vm.pageChanged,\n \"perPageChanged\": _vm.perPageChanged,\n \"total\": _vm.totalRows || _vm.totalRowCount\n }) : _vm._e()], 2)]);\n};\n\nvar __vue_staticRenderFns__$6 = [];\n/* style */\n\nvar __vue_inject_styles__$6 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$6 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$6 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$6 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$6 =\n/*#__PURE__*/\nnormalizeComponent({\n render: __vue_render__$6,\n staticRenderFns: __vue_staticRenderFns__$6\n}, __vue_inject_styles__$6, __vue_script__$6, __vue_scope_id__$6, __vue_is_functional_template__$6, __vue_module_identifier__$6, false, undefined, undefined, undefined);\n\nvar VueGoodTablePlugin = {\n install: function install(Vue, options) {\n Vue.component(__vue_component__$6.name, __vue_component__$6);\n }\n}; // Automatic installation if Vue has been added to the global scope.\n\nif (typeof window !== 'undefined' && window.Vue) {\n window.Vue.use(VueGoodTablePlugin);\n}\n\nexport default VueGoodTablePlugin;\nexport { __vue_component__$6 as VueGoodTable };\n","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"],"sourceRoot":""}