From 312b4366a482edea3fb43d6cfe7f5ab9bd2de461 Mon Sep 17 00:00:00 2001 From: Akshay Anand Date: Tue, 15 May 2018 14:27:12 -0400 Subject: [PATCH] test bundle --- dist/vue-good-table.cjs.js | 95 ++++++++++++++++++++++++++-------- dist/vue-good-table.es.js | 95 ++++++++++++++++++++++++++-------- dist/vue-good-table.js | 95 ++++++++++++++++++++++++++-------- dist/vue-good-table.min.js | 2 +- dist/vue-good-table.min.js.map | 2 +- 5 files changed, 221 insertions(+), 68 deletions(-) diff --git a/dist/vue-good-table.cjs.js b/dist/vue-good-table.cjs.js index 916cd74f..40f51d87 100644 --- a/dist/vue-good-table.cjs.js +++ b/dist/vue-good-table.cjs.js @@ -763,6 +763,7 @@ var VgtGlobalSearch = __vue_normalize__$1(__vue_template__$1, __vue_inject_style // // // +// var script$2 = { name: 'VgtFilterRow', props: ['lineNumbers', 'columns', 'typedColumns', 'globalSearchEnabled', 'selectable', 'mode'], @@ -816,6 +817,14 @@ var script$2 = { var placeholder = this.isFilterable(column) && column.filterOptions.placeholder || "Filter ".concat(column.label); return placeholder; }, + updateFiltersOnEnter: function updateFiltersOnEnter(column, value) { + this.updateFilters(column, value); + }, + updateFiltersOnKeyup: function updateFiltersOnKeyup(column, value) { + // if the trigger is enter, we don't filter on keyup + if (column.filterOptions.trigger === 'enter') return; + this.updateFilters(column, value); + }, // since vue doesn't detect property addition and deletion, we // need to create helper function to set property etc updateFilters: function updateFilters(column, value) { @@ -873,8 +882,15 @@ var __vue_render__$2 = function __vue_render__() { value: _vm.columnFilters[column.field] }, on: { + keyup: function keyup($event) { + if (!("button" in $event) && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) { + return null; + } + + _vm.updateFiltersOnEnter(column, $event.target.value); + }, input: function input($event) { - _vm.updateFilters(column, $event.target.value); + _vm.updateFiltersOnKeyup(column, $event.target.value); } } }) : _vm._e(), _vm._v(" "), _vm.isDropdownArray(column) ? _c("select", { @@ -906,7 +922,7 @@ var __vue_render__$2 = function __vue_render__() { }, on: { input: function input($event) { - _vm.updateFilters(column, $event.target.value); + _vm.updateFilters(column, $event.target.value, true); } } }, [_c("option", { @@ -937,8 +953,8 @@ var __vue_template__$2 = typeof __vue_render__$2 !== 'undefined' ? { var __vue_inject_styles__$2 = function (inject) { if (!inject) return; - inject("data-v-2a7ff999_0", { - source: "\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\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\n\n\n", + inject("data-v-1d6d352a_0", { + source: "\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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n", map: undefined, media: undefined }); @@ -946,7 +962,7 @@ var __vue_inject_styles__$2 = function (inject) { /* scoped */ -var __vue_scope_id__$2 = "data-v-2a7ff999"; +var __vue_scope_id__$2 = "data-v-1d6d352a"; /* module identifier */ @@ -1163,6 +1179,10 @@ each(Object.keys(coreDataTypes), function (key) { var script$3 = { name: 'vue-good-table', props: { + isLoading: { + default: false, + type: Boolean + }, theme: { default: '' }, @@ -1242,6 +1262,8 @@ var script$3 = { }, data: function data() { return { + // loading state for remote mode + tableLoading: false, // text options nextText: 'Next', prevText: 'Prev', @@ -1286,6 +1308,7 @@ var script$3 = { watch: { rows: { handler: function handler() { + this.tableLoading = false; this.filterRows(this.columnFilters, false); }, deep: true, @@ -1321,6 +1344,9 @@ var script$3 = { } }, computed: { + isTableLoading: function isTableLoading() { + return this.isLoading || this.tableLoading; + }, showEmptySlot: function showEmptySlot() { if (!this.paginated.length) return true; if (this.paginated[0].label === 'no groups' && !this.paginated[0].children.length) return true; @@ -1675,11 +1701,19 @@ var script$3 = { this.currentPage = pagination.currentPage; var pageChangedEvent = this.pageChangedEvent(); this.$emit('on-page-change', pageChangedEvent); + + if (this.mode === 'remote') { + this.tableLoading = true; + } }, perPageChanged: function perPageChanged(pagination) { this.currentPerPage = pagination.currentPerPage; var perPageChangedEvent = this.pageChangedEvent(); this.$emit('on-per-page-change', perPageChangedEvent); + + if (this.mode === 'remote') { + this.tableLoading = true; + } }, sort: function sort(index$$1) { if (!this.isSortableColumn(index$$1)) return; @@ -1698,9 +1732,13 @@ var script$3 = { this.unselectAll(); // every time we change sort we need to reset to page 1 this.changePage(1); // if the mode is remote, we don't need to do anything - // after this. + // after this. just set table loading to true + + if (this.mode === 'remote') { + this.tableLoading = true; + return; + } - if (this.mode === 'remote') return; this.sortChanged = true; }, click: function click(row, index$$1) { @@ -1877,15 +1915,19 @@ var script$3 = { // every time we filter rows, we need to set current page // to 1 this.changePage(1); - this.unselectAll(); // if mode is remote, we don't do any filtering here. - // we need to emit an event and that's that. + this.unselectAll(); // we need to emit an event and that's that. // but this only needs to be invoked if filter is changing // not when row object is modified. - if (this.mode === 'remote' && fromFilter) { + if (fromFilter) { this.$emit('on-column-filter', { columnFilters: this.columnFilters }); + } // if mode is remote, we don't do any filtering here. + + + if (this.mode === 'remote' && fromFilter) { + this.tableLoading = true; return; } @@ -2132,6 +2174,15 @@ var __vue_render__$3 = function __vue_render__() { rtl: _vm.rtl, nocturnal: _vm.theme === "nocturnal" } + }, [_vm.isTableLoading ? _c("div", { + staticClass: "vgt-loading vgt-center-align" + }, [_vm._t("loadingContent", [_c("span", { + staticClass: "vgt-loading__content" + }, [_vm._v("\n Loading...\n ")])])], 2) : _vm._e(), _vm._v(" "), _c("div", { + staticClass: "vgt-inner-wrap", + class: { + "is-loading": _vm.isTableLoading + } }, [_vm.paginate && _vm.paginateOnTop ? _c("vgt-pagination", { ref: "paginationTop", attrs: { @@ -2171,7 +2222,7 @@ var __vue_render__$3 = function __vue_render__() { }, [_vm._t("table-actions")], 2)], 2), _vm._v(" "), _vm.selectedRowCount ? _c("div", { staticClass: "vgt-selection-info-row clearfix", class: _vm.selectionInfoClass - }, [_vm._v("\n " + _vm._s(_vm.selectionInfo) + "\n "), _c("a", { + }, [_vm._v("\n " + _vm._s(_vm.selectionInfo) + "\n "), _c("a", { attrs: { href: "" }, @@ -2184,7 +2235,7 @@ var __vue_render__$3 = function __vue_render__() { _vm.unselectAllInternal(); } } - }, [_vm._v("\n " + _vm._s(_vm.clearSelectionText) + "\n ")]), _vm._v(" "), _c("div", { + }, [_vm._v("\n " + _vm._s(_vm.clearSelectionText) + "\n ")]), _vm._v(" "), _c("div", { staticClass: "vgt-selection-info-row__actions vgt-pull-right" }, [_vm._t("selected-row-actions")], 2)]) : _vm._e(), _vm._v(" "), _c("div", { class: { @@ -2266,7 +2317,7 @@ var __vue_render__$3 = function __vue_render__() { attrs: { colspan: _vm.fullColspan } - }, [_vm._v("\n " + _vm._s(headerRow.label) + "\n ")]) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.lineNumbers ? _c("th", { + }, [_vm._v("\n " + _vm._s(headerRow.label) + "\n ")]) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.lineNumbers ? _c("th", { staticClass: "vgt-row-header" }) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.selectable ? _c("th", { staticClass: "vgt-row-header" @@ -2275,7 +2326,7 @@ var __vue_render__$3 = function __vue_render__() { key: i, staticClass: "vgt-row-header", class: _vm.getClasses(i, "td") - }, [_vm._v("\n " + _vm._s(_vm.collectFormatted(headerRow, column, true)) + "\n ")]) : _vm._e(); + }, [_vm._v("\n " + _vm._s(_vm.collectFormatted(headerRow, column, true)) + "\n ")]) : _vm._e(); })], 2) : _vm._e(), _vm._v(" "), _vm._l(headerRow.children, function (row, index) { return _c("tr", { key: row.originalIndex, @@ -2293,7 +2344,7 @@ var __vue_render__$3 = function __vue_render__() { } }, [_vm.lineNumbers ? _c("th", { staticClass: "line-numbers" - }, [_vm._v("\n " + _vm._s(_vm.getCurrentIndex(index)) + "\n ")]) : _vm._e(), _vm._v(" "), _vm.selectable ? _c("th", { + }, [_vm._v("\n " + _vm._s(_vm.getCurrentIndex(index)) + "\n ")]) : _vm._e(), _vm._v(" "), _vm.selectable ? _c("th", { staticClass: "vgt-checkbox-col" }, [_c("input", { directives: [{ @@ -2337,7 +2388,7 @@ var __vue_render__$3 = function __vue_render__() { _vm.onCellClicked(row, column, index); } } - }, [_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", { + }, [_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", { domProps: { innerHTML: _vm._s(_vm.collect(row, column.field)) } @@ -2353,7 +2404,7 @@ var __vue_render__$3 = function __vue_render__() { attrs: { colspan: _vm.columns.length } - }, [_vm._v("\n " + _vm._s(headerRow.label) + "\n ")]) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.lineNumbers ? _c("th", { + }, [_vm._v("\n " + _vm._s(headerRow.label) + "\n ")]) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.lineNumbers ? _c("th", { staticClass: "vgt-row-header" }) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.selectable ? _c("th", { staticClass: "vgt-row-header" @@ -2362,7 +2413,7 @@ var __vue_render__$3 = function __vue_render__() { key: i, staticClass: "vgt-row-header", class: _vm.getClasses(i, "td") - }, [_vm._v("\n " + _vm._s(_vm.collectFormatted(headerRow, column, true)) + "\n ")]) : _vm._e(); + }, [_vm._v("\n " + _vm._s(_vm.collectFormatted(headerRow, column, true)) + "\n ")]) : _vm._e(); })], 2) : _vm._e()], 2); }), _vm._v(" "), _vm.showEmptySlot ? _c("tbody", [_c("tr", [_c("td", { attrs: { @@ -2370,7 +2421,7 @@ var __vue_render__$3 = function __vue_render__() { } }, [_vm._t("emptystate", [_c("div", { staticClass: "vgt-center-align vgt-text-disabled" - }, [_vm._v("\n No data for table\n ")])])], 2)])]) : _vm._e()], 2)]), _vm._v(" "), _vm.paginate && _vm.paginateOnBottom ? _c("vgt-pagination", { + }, [_vm._v("\n No data for table\n ")])])], 2)])]) : _vm._e()], 2)]), _vm._v(" "), _vm.paginate && _vm.paginateOnBottom ? _c("vgt-pagination", { ref: "paginationBottom", attrs: { perPage: _vm.perPage, @@ -2388,7 +2439,7 @@ var __vue_render__$3 = function __vue_render__() { "page-changed": _vm.pageChanged, "per-page-changed": _vm.perPageChanged } - }) : _vm._e()], 1); + }) : _vm._e()], 1)]); }; var __vue_staticRenderFns__$3 = []; @@ -2403,8 +2454,8 @@ var __vue_template__$3 = typeof __vue_render__$3 !== 'undefined' ? { var __vue_inject_styles__$3 = function (inject) { if (!inject) return; - inject("data-v-126ce30e_0", { - source: "/* Utility styles\n************************************************/\n.vgt-right-align {\n text-align: right;\n}\n.vgt-left-align {\n text-align: left;\n}\n.vgt-center-align {\n text-align: center;\n}\n.vgt-pull-left {\n float: left !important;\n}\n.vgt-pull-right {\n float: right !important;\n}\n.vgt-clearfix::after {\n display: block;\n content: \"\";\n clear: both;\n}\n.vgt-responsive {\n width: 100%;\n overflow-x: auto;\n}\n.vgt-text-disabled {\n color: #909399;\n}\ntable.vgt-table {\n border-collapse: collapse;\n background-color: transparent;\n width: 100%;\n max-width: 100%;\n table-layout: auto;\n border: 1px solid #DCDFE6;\n}\ntable.vgt-table td {\n padding: .75rem .75rem .75rem .75rem;\n vertical-align: top;\n border-bottom: 1px solid #DCDFE6;\n color: #606266;\n}\ntable.vgt-table tr.clickable {\n cursor: pointer;\n}\ntable.vgt-table tr.clickable:hover {\n background-color: #F1F5FD;\n}\n.vgt-table th {\n padding: .75rem 1.5rem .75rem .75rem;\n vertical-align: middle;\n}\n.vgt-table th.sorting:hover:after {\n display: inline-block;\n border-bottom-color: #73b8ff;\n}\n.vgt-table th.line-numbers, .vgt-table th.vgt-checkbox-col {\n padding: 0 .75rem 0 .75rem;\n color: #606266;\n border-right: 1px solid #DCDFE6;\n word-wrap: break-word;\n width: 25px;\n text-align: center;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table th.filter-th {\n padding: .75rem .75rem .75rem .75rem;\n}\n.vgt-table th.vgt-row-header {\n border-bottom: 2px solid #DCDFE6;\n border-top: 2px solid #DCDFE6;\n background-color: #fafafb;\n}\n.vgt-table thead th {\n color: #606266;\n vertical-align: bottom;\n border-bottom: 1px solid #DCDFE6;\n padding-right: 1.5rem;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table thead th.vgt-checkbox-col {\n vertical-align: middle;\n}\n.vgt-table thead th.sorting-asc, .vgt-table thead th.sorting-desc {\n color: #3b3c3f;\n position: relative;\n background-clip: padding-box;\n}\n.vgt-table thead th.sorting-asc:after, .vgt-table thead th.sorting-desc:after {\n content: '';\n display: block;\n position: absolute;\n height: 0px;\n width: 0px;\n right: 6px;\n top: 50%;\n margin-top: -3px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #409eff;\n}\n.vgt-table thead th.sorting-desc:after {\n border-top: 6px solid #409eff;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: none;\n}\n.vgt-input, .vgt-select {\n width: 100%;\n height: 32px;\n line-height: 1;\n display: block;\n font-size: 14px;\n font-weight: regular;\n padding: 6px 12px;\n color: #606266;\n border-radius: 4px;\n box-sizing: border-box;\n background-image: none;\n background-color: #fff;\n border: 1px solid #DCDFE6;\n transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.vgt-input::placeholder, .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #606266;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-input:focus, .vgt-select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-table.bordered td, .vgt-table.bordered th {\n border: 1px solid #DCDFE6;\n}\n.vgt-table.bordered th.vgt-row-header {\n border-bottom: 3px solid #DCDFE6;\n}\n.vgt-table.striped tbody tr:nth-of-type(odd) {\n background-color: rgba(51, 68, 109, 0.03);\n}\n.vgt-wrap.rtl {\n direction: rtl;\n}\n.vgt-wrap.rtl .vgt-table td, .vgt-wrap.rtl .vgt-table th:not(.line-numbers) {\n padding: .75rem .75rem .75rem 1.5rem;\n}\n.vgt-wrap.rtl .vgt-table thead th, .vgt-wrap.rtl .vgt-table.condensed thead th {\n padding-left: 1.5rem;\n padding-right: .75rem;\n}\n.vgt-wrap.rtl .vgt-table th.sorting:after,\n .vgt-wrap.rtl .vgt-table th.sorting-asc:after {\n margin-right: 5px;\n margin-left: 0px;\n}\n.vgt-table.condensed td, .vgt-table.condensed th.vgt-row-header {\n padding: .4rem .4rem .4rem .4rem;\n}\n.vgt-global-search {\n padding: 5px 0px;\n display: flex;\n flex-wrap: no-wrap;\n align-items: stretch;\n border: 1px solid #DCDFE6;\n border-bottom: 0px;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-global-search__input {\n position: relative;\n padding-left: 40px;\n flex-grow: 1;\n}\n.vgt-global-search__input .input__icon {\n position: absolute;\n left: 0px;\n max-width: 32px;\n}\n.vgt-global-search__input .input__icon .magnifying-glass {\n margin-top: 3px;\n margin-left: 8px;\n display: block;\n width: 16px;\n height: 16px;\n border: 2px solid #d6dae2;\n position: relative;\n border-radius: 50%;\n}\n.vgt-global-search__input .input__icon .magnifying-glass:before {\n content: \"\";\n display: block;\n position: absolute;\n right: -7px;\n bottom: -5px;\n background: #d6dae2;\n width: 8px;\n height: 4px;\n border-radius: 2px;\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n}\n.vgt-global-search__actions {\n margin-left: 10px;\n}\n.vgt-selection-info-row {\n background: #fdf9e8;\n padding: 5px 16px;\n font-size: 13px;\n border-top: 1px solid #DCDFE6;\n border-left: 1px solid #DCDFE6;\n border-right: 1px solid #DCDFE6;\n color: #d3aa3b;\n font-weight: bold;\n}\n.vgt-selection-info-row a {\n font-weight: bold;\n display: inline-block;\n margin-left: 10px;\n}\n.vgt-wrap__footer {\n color: #606266;\n padding: 1rem;\n border: 1px solid #DCDFE6;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-wrap__footer .footer__row-count__label, .vgt-wrap__footer .footer__row-count__select {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__row-count__label {\n font-size: 14px;\n color: #909399;\n}\n.vgt-wrap__footer .footer__row-count__select {\n background-color: transparent;\n width: auto;\n padding: 0;\n border: 0;\n border-radius: 0;\n height: auto;\n font-size: 14px;\n margin-left: 8px;\n color: #606266;\n font-weight: bold;\n}\n.vgt-wrap__footer .footer__row-count__select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-wrap__footer .footer__navigation {\n font-size: 14px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn, .vgt-wrap__footer .footer__navigation__info {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n text-decoration: none;\n color: #606266;\n font-weight: bold;\n white-space: nowrap;\n}\n.vgt-wrap__footer .footer__navigation__page-btn:focus {\n outline: none;\n border: 0;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron {\n width: 24px;\n height: 24px;\n border-radius: 15%;\n position: relative;\n margin: 0px 8px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron:after {\n content: '';\n position: absolute;\n display: block;\n left: 50%;\n top: 50%;\n margin-top: -6px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.left::after {\n border-right: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.right::after {\n border-left: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__info {\n color: #909399;\n margin: 0px 16px;\n}\n@media only screen and (max-width: 750px) {\n /* on small screens hide the info */\n.vgt-wrap__footer .footer__navigation__info {\n display: none;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n margin-left: 16px;\n}\n}\n.vgt-table.nocturnal {\n border: 1px solid #435169;\n background-color: #324057;\n}\n.vgt-table.nocturnal tr.clickable:hover {\n background-color: #445168;\n}\n.vgt-table.nocturnal td {\n border-bottom: 1px solid #435169;\n color: #C7CED8;\n}\n.vgt-table.nocturnal th.line-numbers {\n color: #C7CED8;\n border-right: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th {\n color: #C7CED8;\n border-bottom: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th.sorting-asc, .vgt-table.nocturnal thead th.sorting-desc {\n color: #9aa7b9;\n}\n.vgt-table.nocturnal.bordered td, .vgt-table.nocturnal.bordered th {\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input, .vgt-table.nocturnal .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input::placeholder, .vgt-table.nocturnal .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer {\n color: #C7CED8;\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__label {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select:focus {\n border-color: #409eff;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__info {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-global-search {\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass {\n border: 2px solid #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass:before {\n background: #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input::placeholder, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n\n/*# sourceMappingURL=Table.vue.map */", + inject("data-v-2617cab9_0", { + source: "/* Utility styles\n************************************************/\n.vgt-right-align {\n text-align: right;\n}\n.vgt-left-align {\n text-align: left;\n}\n.vgt-center-align {\n text-align: center;\n}\n.vgt-pull-left {\n float: left !important;\n}\n.vgt-pull-right {\n float: right !important;\n}\n.vgt-clearfix::after {\n display: block;\n content: \"\";\n clear: both;\n}\n.vgt-responsive {\n width: 100%;\n overflow-x: auto;\n}\n.vgt-text-disabled {\n color: #909399;\n}\n.vgt-wrap {\n position: relative;\n}\ntable.vgt-table {\n border-collapse: collapse;\n background-color: transparent;\n width: 100%;\n max-width: 100%;\n table-layout: auto;\n border: 1px solid #DCDFE6;\n}\ntable.vgt-table td {\n padding: .75rem .75rem .75rem .75rem;\n vertical-align: top;\n border-bottom: 1px solid #DCDFE6;\n color: #606266;\n}\ntable.vgt-table tr.clickable {\n cursor: pointer;\n}\ntable.vgt-table tr.clickable:hover {\n background-color: #F1F5FD;\n}\n.vgt-table th {\n padding: .75rem 1.5rem .75rem .75rem;\n vertical-align: middle;\n}\n.vgt-table th.sorting:hover:after {\n display: inline-block;\n border-bottom-color: #73b8ff;\n}\n.vgt-table th.line-numbers, .vgt-table th.vgt-checkbox-col {\n padding: 0 .75rem 0 .75rem;\n color: #606266;\n border-right: 1px solid #DCDFE6;\n word-wrap: break-word;\n width: 25px;\n text-align: center;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table th.filter-th {\n padding: .75rem .75rem .75rem .75rem;\n}\n.vgt-table th.vgt-row-header {\n border-bottom: 2px solid #DCDFE6;\n border-top: 2px solid #DCDFE6;\n background-color: #fafafb;\n}\n.vgt-table thead th {\n color: #606266;\n vertical-align: bottom;\n border-bottom: 1px solid #DCDFE6;\n padding-right: 1.5rem;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table thead th.vgt-checkbox-col {\n vertical-align: middle;\n}\n.vgt-table thead th.sorting-asc, .vgt-table thead th.sorting-desc {\n color: #3b3c3f;\n position: relative;\n background-clip: padding-box;\n}\n.vgt-table thead th.sorting-asc:after, .vgt-table thead th.sorting-desc:after {\n content: '';\n display: block;\n position: absolute;\n height: 0px;\n width: 0px;\n right: 6px;\n top: 50%;\n margin-top: -3px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #409eff;\n}\n.vgt-table thead th.sorting-desc:after {\n border-top: 6px solid #409eff;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: none;\n}\n.vgt-input, .vgt-select {\n width: 100%;\n height: 32px;\n line-height: 1;\n display: block;\n font-size: 14px;\n font-weight: regular;\n padding: 6px 12px;\n color: #606266;\n border-radius: 4px;\n box-sizing: border-box;\n background-image: none;\n background-color: #fff;\n border: 1px solid #DCDFE6;\n transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.vgt-input::placeholder, .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #606266;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-input:focus, .vgt-select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-loading {\n position: absolute;\n width: 100%;\n z-index: 10;\n margin-top: 117px;\n}\n.vgt-loading__content {\n background-color: #c0dfff;\n color: #409eff;\n padding: 7px 30px;\n border-radius: 3px;\n}\n.vgt-inner-wrap.is-loading {\n opacity: 0.3;\n pointer-events: none;\n}\n.vgt-table.bordered td, .vgt-table.bordered th {\n border: 1px solid #DCDFE6;\n}\n.vgt-table.bordered th.vgt-row-header {\n border-bottom: 3px solid #DCDFE6;\n}\n.vgt-table.striped tbody tr:nth-of-type(odd) {\n background-color: rgba(51, 68, 109, 0.03);\n}\n.vgt-wrap.rtl {\n direction: rtl;\n}\n.vgt-wrap.rtl .vgt-table td, .vgt-wrap.rtl .vgt-table th:not(.line-numbers) {\n padding: .75rem .75rem .75rem 1.5rem;\n}\n.vgt-wrap.rtl .vgt-table thead th, .vgt-wrap.rtl .vgt-table.condensed thead th {\n padding-left: 1.5rem;\n padding-right: .75rem;\n}\n.vgt-wrap.rtl .vgt-table th.sorting:after,\n .vgt-wrap.rtl .vgt-table th.sorting-asc:after {\n margin-right: 5px;\n margin-left: 0px;\n}\n.vgt-table.condensed td, .vgt-table.condensed th.vgt-row-header {\n padding: .4rem .4rem .4rem .4rem;\n}\n.vgt-global-search {\n padding: 5px 0px;\n display: flex;\n flex-wrap: no-wrap;\n align-items: stretch;\n border: 1px solid #DCDFE6;\n border-bottom: 0px;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-global-search__input {\n position: relative;\n padding-left: 40px;\n flex-grow: 1;\n}\n.vgt-global-search__input .input__icon {\n position: absolute;\n left: 0px;\n max-width: 32px;\n}\n.vgt-global-search__input .input__icon .magnifying-glass {\n margin-top: 3px;\n margin-left: 8px;\n display: block;\n width: 16px;\n height: 16px;\n border: 2px solid #d6dae2;\n position: relative;\n border-radius: 50%;\n}\n.vgt-global-search__input .input__icon .magnifying-glass:before {\n content: \"\";\n display: block;\n position: absolute;\n right: -7px;\n bottom: -5px;\n background: #d6dae2;\n width: 8px;\n height: 4px;\n border-radius: 2px;\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n}\n.vgt-global-search__actions {\n margin-left: 10px;\n}\n.vgt-selection-info-row {\n background: #fdf9e8;\n padding: 5px 16px;\n font-size: 13px;\n border-top: 1px solid #DCDFE6;\n border-left: 1px solid #DCDFE6;\n border-right: 1px solid #DCDFE6;\n color: #d3aa3b;\n font-weight: bold;\n}\n.vgt-selection-info-row a {\n font-weight: bold;\n display: inline-block;\n margin-left: 10px;\n}\n.vgt-wrap__footer {\n color: #606266;\n padding: 1rem;\n border: 1px solid #DCDFE6;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-wrap__footer .footer__row-count__label, .vgt-wrap__footer .footer__row-count__select {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__row-count__label {\n font-size: 14px;\n color: #909399;\n}\n.vgt-wrap__footer .footer__row-count__select {\n background-color: transparent;\n width: auto;\n padding: 0;\n border: 0;\n border-radius: 0;\n height: auto;\n font-size: 14px;\n margin-left: 8px;\n color: #606266;\n font-weight: bold;\n}\n.vgt-wrap__footer .footer__row-count__select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-wrap__footer .footer__navigation {\n font-size: 14px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn, .vgt-wrap__footer .footer__navigation__info {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n text-decoration: none;\n color: #606266;\n font-weight: bold;\n white-space: nowrap;\n}\n.vgt-wrap__footer .footer__navigation__page-btn:focus {\n outline: none;\n border: 0;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron {\n width: 24px;\n height: 24px;\n border-radius: 15%;\n position: relative;\n margin: 0px 8px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron:after {\n content: '';\n position: absolute;\n display: block;\n left: 50%;\n top: 50%;\n margin-top: -6px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.left::after {\n border-right: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.right::after {\n border-left: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__info {\n color: #909399;\n margin: 0px 16px;\n}\n@media only screen and (max-width: 750px) {\n /* on small screens hide the info */\n.vgt-wrap__footer .footer__navigation__info {\n display: none;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n margin-left: 16px;\n}\n}\n.vgt-table.nocturnal {\n border: 1px solid #435169;\n background-color: #324057;\n}\n.vgt-table.nocturnal tr.clickable:hover {\n background-color: #445168;\n}\n.vgt-table.nocturnal td {\n border-bottom: 1px solid #435169;\n color: #C7CED8;\n}\n.vgt-table.nocturnal th.line-numbers {\n color: #C7CED8;\n border-right: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th {\n color: #C7CED8;\n border-bottom: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th.sorting-asc, .vgt-table.nocturnal thead th.sorting-desc {\n color: #9aa7b9;\n}\n.vgt-table.nocturnal.bordered td, .vgt-table.nocturnal.bordered th {\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input, .vgt-table.nocturnal .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input::placeholder, .vgt-table.nocturnal .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer {\n color: #C7CED8;\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__label {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select:focus {\n border-color: #409eff;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__info {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-global-search {\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass {\n border: 2px solid #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass:before {\n background: #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input::placeholder, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n\n/*# sourceMappingURL=Table.vue.map */", map: undefined, media: undefined }); diff --git a/dist/vue-good-table.es.js b/dist/vue-good-table.es.js index 8706ce68..2fd15a16 100644 --- a/dist/vue-good-table.es.js +++ b/dist/vue-good-table.es.js @@ -757,6 +757,7 @@ var VgtGlobalSearch = __vue_normalize__$1(__vue_template__$1, __vue_inject_style // // // +// var script$2 = { name: 'VgtFilterRow', props: ['lineNumbers', 'columns', 'typedColumns', 'globalSearchEnabled', 'selectable', 'mode'], @@ -810,6 +811,14 @@ var script$2 = { var placeholder = this.isFilterable(column) && column.filterOptions.placeholder || "Filter ".concat(column.label); return placeholder; }, + updateFiltersOnEnter: function updateFiltersOnEnter(column, value) { + this.updateFilters(column, value); + }, + updateFiltersOnKeyup: function updateFiltersOnKeyup(column, value) { + // if the trigger is enter, we don't filter on keyup + if (column.filterOptions.trigger === 'enter') return; + this.updateFilters(column, value); + }, // since vue doesn't detect property addition and deletion, we // need to create helper function to set property etc updateFilters: function updateFilters(column, value) { @@ -867,8 +876,15 @@ var __vue_render__$2 = function __vue_render__() { value: _vm.columnFilters[column.field] }, on: { + keyup: function keyup($event) { + if (!("button" in $event) && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) { + return null; + } + + _vm.updateFiltersOnEnter(column, $event.target.value); + }, input: function input($event) { - _vm.updateFilters(column, $event.target.value); + _vm.updateFiltersOnKeyup(column, $event.target.value); } } }) : _vm._e(), _vm._v(" "), _vm.isDropdownArray(column) ? _c("select", { @@ -900,7 +916,7 @@ var __vue_render__$2 = function __vue_render__() { }, on: { input: function input($event) { - _vm.updateFilters(column, $event.target.value); + _vm.updateFilters(column, $event.target.value, true); } } }, [_c("option", { @@ -931,8 +947,8 @@ var __vue_template__$2 = typeof __vue_render__$2 !== 'undefined' ? { var __vue_inject_styles__$2 = function (inject) { if (!inject) return; - inject("data-v-2a7ff999_0", { - source: "\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\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\n\n\n", + inject("data-v-1d6d352a_0", { + source: "\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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n", map: undefined, media: undefined }); @@ -940,7 +956,7 @@ var __vue_inject_styles__$2 = function (inject) { /* scoped */ -var __vue_scope_id__$2 = "data-v-2a7ff999"; +var __vue_scope_id__$2 = "data-v-1d6d352a"; /* module identifier */ @@ -1157,6 +1173,10 @@ each(Object.keys(coreDataTypes), function (key) { var script$3 = { name: 'vue-good-table', props: { + isLoading: { + default: false, + type: Boolean + }, theme: { default: '' }, @@ -1236,6 +1256,8 @@ var script$3 = { }, data: function data() { return { + // loading state for remote mode + tableLoading: false, // text options nextText: 'Next', prevText: 'Prev', @@ -1280,6 +1302,7 @@ var script$3 = { watch: { rows: { handler: function handler() { + this.tableLoading = false; this.filterRows(this.columnFilters, false); }, deep: true, @@ -1315,6 +1338,9 @@ var script$3 = { } }, computed: { + isTableLoading: function isTableLoading() { + return this.isLoading || this.tableLoading; + }, showEmptySlot: function showEmptySlot() { if (!this.paginated.length) return true; if (this.paginated[0].label === 'no groups' && !this.paginated[0].children.length) return true; @@ -1669,11 +1695,19 @@ var script$3 = { this.currentPage = pagination.currentPage; var pageChangedEvent = this.pageChangedEvent(); this.$emit('on-page-change', pageChangedEvent); + + if (this.mode === 'remote') { + this.tableLoading = true; + } }, perPageChanged: function perPageChanged(pagination) { this.currentPerPage = pagination.currentPerPage; var perPageChangedEvent = this.pageChangedEvent(); this.$emit('on-per-page-change', perPageChangedEvent); + + if (this.mode === 'remote') { + this.tableLoading = true; + } }, sort: function sort(index$$1) { if (!this.isSortableColumn(index$$1)) return; @@ -1692,9 +1726,13 @@ var script$3 = { this.unselectAll(); // every time we change sort we need to reset to page 1 this.changePage(1); // if the mode is remote, we don't need to do anything - // after this. + // after this. just set table loading to true + + if (this.mode === 'remote') { + this.tableLoading = true; + return; + } - if (this.mode === 'remote') return; this.sortChanged = true; }, click: function click(row, index$$1) { @@ -1871,15 +1909,19 @@ var script$3 = { // every time we filter rows, we need to set current page // to 1 this.changePage(1); - this.unselectAll(); // if mode is remote, we don't do any filtering here. - // we need to emit an event and that's that. + this.unselectAll(); // we need to emit an event and that's that. // but this only needs to be invoked if filter is changing // not when row object is modified. - if (this.mode === 'remote' && fromFilter) { + if (fromFilter) { this.$emit('on-column-filter', { columnFilters: this.columnFilters }); + } // if mode is remote, we don't do any filtering here. + + + if (this.mode === 'remote' && fromFilter) { + this.tableLoading = true; return; } @@ -2126,6 +2168,15 @@ var __vue_render__$3 = function __vue_render__() { rtl: _vm.rtl, nocturnal: _vm.theme === "nocturnal" } + }, [_vm.isTableLoading ? _c("div", { + staticClass: "vgt-loading vgt-center-align" + }, [_vm._t("loadingContent", [_c("span", { + staticClass: "vgt-loading__content" + }, [_vm._v("\n Loading...\n ")])])], 2) : _vm._e(), _vm._v(" "), _c("div", { + staticClass: "vgt-inner-wrap", + class: { + "is-loading": _vm.isTableLoading + } }, [_vm.paginate && _vm.paginateOnTop ? _c("vgt-pagination", { ref: "paginationTop", attrs: { @@ -2165,7 +2216,7 @@ var __vue_render__$3 = function __vue_render__() { }, [_vm._t("table-actions")], 2)], 2), _vm._v(" "), _vm.selectedRowCount ? _c("div", { staticClass: "vgt-selection-info-row clearfix", class: _vm.selectionInfoClass - }, [_vm._v("\n " + _vm._s(_vm.selectionInfo) + "\n "), _c("a", { + }, [_vm._v("\n " + _vm._s(_vm.selectionInfo) + "\n "), _c("a", { attrs: { href: "" }, @@ -2178,7 +2229,7 @@ var __vue_render__$3 = function __vue_render__() { _vm.unselectAllInternal(); } } - }, [_vm._v("\n " + _vm._s(_vm.clearSelectionText) + "\n ")]), _vm._v(" "), _c("div", { + }, [_vm._v("\n " + _vm._s(_vm.clearSelectionText) + "\n ")]), _vm._v(" "), _c("div", { staticClass: "vgt-selection-info-row__actions vgt-pull-right" }, [_vm._t("selected-row-actions")], 2)]) : _vm._e(), _vm._v(" "), _c("div", { class: { @@ -2260,7 +2311,7 @@ var __vue_render__$3 = function __vue_render__() { attrs: { colspan: _vm.fullColspan } - }, [_vm._v("\n " + _vm._s(headerRow.label) + "\n ")]) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.lineNumbers ? _c("th", { + }, [_vm._v("\n " + _vm._s(headerRow.label) + "\n ")]) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.lineNumbers ? _c("th", { staticClass: "vgt-row-header" }) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.selectable ? _c("th", { staticClass: "vgt-row-header" @@ -2269,7 +2320,7 @@ var __vue_render__$3 = function __vue_render__() { key: i, staticClass: "vgt-row-header", class: _vm.getClasses(i, "td") - }, [_vm._v("\n " + _vm._s(_vm.collectFormatted(headerRow, column, true)) + "\n ")]) : _vm._e(); + }, [_vm._v("\n " + _vm._s(_vm.collectFormatted(headerRow, column, true)) + "\n ")]) : _vm._e(); })], 2) : _vm._e(), _vm._v(" "), _vm._l(headerRow.children, function (row, index) { return _c("tr", { key: row.originalIndex, @@ -2287,7 +2338,7 @@ var __vue_render__$3 = function __vue_render__() { } }, [_vm.lineNumbers ? _c("th", { staticClass: "line-numbers" - }, [_vm._v("\n " + _vm._s(_vm.getCurrentIndex(index)) + "\n ")]) : _vm._e(), _vm._v(" "), _vm.selectable ? _c("th", { + }, [_vm._v("\n " + _vm._s(_vm.getCurrentIndex(index)) + "\n ")]) : _vm._e(), _vm._v(" "), _vm.selectable ? _c("th", { staticClass: "vgt-checkbox-col" }, [_c("input", { directives: [{ @@ -2331,7 +2382,7 @@ var __vue_render__$3 = function __vue_render__() { _vm.onCellClicked(row, column, index); } } - }, [_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", { + }, [_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", { domProps: { innerHTML: _vm._s(_vm.collect(row, column.field)) } @@ -2347,7 +2398,7 @@ var __vue_render__$3 = function __vue_render__() { attrs: { colspan: _vm.columns.length } - }, [_vm._v("\n " + _vm._s(headerRow.label) + "\n ")]) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.lineNumbers ? _c("th", { + }, [_vm._v("\n " + _vm._s(headerRow.label) + "\n ")]) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.lineNumbers ? _c("th", { staticClass: "vgt-row-header" }) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.selectable ? _c("th", { staticClass: "vgt-row-header" @@ -2356,7 +2407,7 @@ var __vue_render__$3 = function __vue_render__() { key: i, staticClass: "vgt-row-header", class: _vm.getClasses(i, "td") - }, [_vm._v("\n " + _vm._s(_vm.collectFormatted(headerRow, column, true)) + "\n ")]) : _vm._e(); + }, [_vm._v("\n " + _vm._s(_vm.collectFormatted(headerRow, column, true)) + "\n ")]) : _vm._e(); })], 2) : _vm._e()], 2); }), _vm._v(" "), _vm.showEmptySlot ? _c("tbody", [_c("tr", [_c("td", { attrs: { @@ -2364,7 +2415,7 @@ var __vue_render__$3 = function __vue_render__() { } }, [_vm._t("emptystate", [_c("div", { staticClass: "vgt-center-align vgt-text-disabled" - }, [_vm._v("\n No data for table\n ")])])], 2)])]) : _vm._e()], 2)]), _vm._v(" "), _vm.paginate && _vm.paginateOnBottom ? _c("vgt-pagination", { + }, [_vm._v("\n No data for table\n ")])])], 2)])]) : _vm._e()], 2)]), _vm._v(" "), _vm.paginate && _vm.paginateOnBottom ? _c("vgt-pagination", { ref: "paginationBottom", attrs: { perPage: _vm.perPage, @@ -2382,7 +2433,7 @@ var __vue_render__$3 = function __vue_render__() { "page-changed": _vm.pageChanged, "per-page-changed": _vm.perPageChanged } - }) : _vm._e()], 1); + }) : _vm._e()], 1)]); }; var __vue_staticRenderFns__$3 = []; @@ -2397,8 +2448,8 @@ var __vue_template__$3 = typeof __vue_render__$3 !== 'undefined' ? { var __vue_inject_styles__$3 = function (inject) { if (!inject) return; - inject("data-v-126ce30e_0", { - source: "/* Utility styles\n************************************************/\n.vgt-right-align {\n text-align: right;\n}\n.vgt-left-align {\n text-align: left;\n}\n.vgt-center-align {\n text-align: center;\n}\n.vgt-pull-left {\n float: left !important;\n}\n.vgt-pull-right {\n float: right !important;\n}\n.vgt-clearfix::after {\n display: block;\n content: \"\";\n clear: both;\n}\n.vgt-responsive {\n width: 100%;\n overflow-x: auto;\n}\n.vgt-text-disabled {\n color: #909399;\n}\ntable.vgt-table {\n border-collapse: collapse;\n background-color: transparent;\n width: 100%;\n max-width: 100%;\n table-layout: auto;\n border: 1px solid #DCDFE6;\n}\ntable.vgt-table td {\n padding: .75rem .75rem .75rem .75rem;\n vertical-align: top;\n border-bottom: 1px solid #DCDFE6;\n color: #606266;\n}\ntable.vgt-table tr.clickable {\n cursor: pointer;\n}\ntable.vgt-table tr.clickable:hover {\n background-color: #F1F5FD;\n}\n.vgt-table th {\n padding: .75rem 1.5rem .75rem .75rem;\n vertical-align: middle;\n}\n.vgt-table th.sorting:hover:after {\n display: inline-block;\n border-bottom-color: #73b8ff;\n}\n.vgt-table th.line-numbers, .vgt-table th.vgt-checkbox-col {\n padding: 0 .75rem 0 .75rem;\n color: #606266;\n border-right: 1px solid #DCDFE6;\n word-wrap: break-word;\n width: 25px;\n text-align: center;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table th.filter-th {\n padding: .75rem .75rem .75rem .75rem;\n}\n.vgt-table th.vgt-row-header {\n border-bottom: 2px solid #DCDFE6;\n border-top: 2px solid #DCDFE6;\n background-color: #fafafb;\n}\n.vgt-table thead th {\n color: #606266;\n vertical-align: bottom;\n border-bottom: 1px solid #DCDFE6;\n padding-right: 1.5rem;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table thead th.vgt-checkbox-col {\n vertical-align: middle;\n}\n.vgt-table thead th.sorting-asc, .vgt-table thead th.sorting-desc {\n color: #3b3c3f;\n position: relative;\n background-clip: padding-box;\n}\n.vgt-table thead th.sorting-asc:after, .vgt-table thead th.sorting-desc:after {\n content: '';\n display: block;\n position: absolute;\n height: 0px;\n width: 0px;\n right: 6px;\n top: 50%;\n margin-top: -3px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #409eff;\n}\n.vgt-table thead th.sorting-desc:after {\n border-top: 6px solid #409eff;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: none;\n}\n.vgt-input, .vgt-select {\n width: 100%;\n height: 32px;\n line-height: 1;\n display: block;\n font-size: 14px;\n font-weight: regular;\n padding: 6px 12px;\n color: #606266;\n border-radius: 4px;\n box-sizing: border-box;\n background-image: none;\n background-color: #fff;\n border: 1px solid #DCDFE6;\n transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.vgt-input::placeholder, .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #606266;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-input:focus, .vgt-select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-table.bordered td, .vgt-table.bordered th {\n border: 1px solid #DCDFE6;\n}\n.vgt-table.bordered th.vgt-row-header {\n border-bottom: 3px solid #DCDFE6;\n}\n.vgt-table.striped tbody tr:nth-of-type(odd) {\n background-color: rgba(51, 68, 109, 0.03);\n}\n.vgt-wrap.rtl {\n direction: rtl;\n}\n.vgt-wrap.rtl .vgt-table td, .vgt-wrap.rtl .vgt-table th:not(.line-numbers) {\n padding: .75rem .75rem .75rem 1.5rem;\n}\n.vgt-wrap.rtl .vgt-table thead th, .vgt-wrap.rtl .vgt-table.condensed thead th {\n padding-left: 1.5rem;\n padding-right: .75rem;\n}\n.vgt-wrap.rtl .vgt-table th.sorting:after,\n .vgt-wrap.rtl .vgt-table th.sorting-asc:after {\n margin-right: 5px;\n margin-left: 0px;\n}\n.vgt-table.condensed td, .vgt-table.condensed th.vgt-row-header {\n padding: .4rem .4rem .4rem .4rem;\n}\n.vgt-global-search {\n padding: 5px 0px;\n display: flex;\n flex-wrap: no-wrap;\n align-items: stretch;\n border: 1px solid #DCDFE6;\n border-bottom: 0px;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-global-search__input {\n position: relative;\n padding-left: 40px;\n flex-grow: 1;\n}\n.vgt-global-search__input .input__icon {\n position: absolute;\n left: 0px;\n max-width: 32px;\n}\n.vgt-global-search__input .input__icon .magnifying-glass {\n margin-top: 3px;\n margin-left: 8px;\n display: block;\n width: 16px;\n height: 16px;\n border: 2px solid #d6dae2;\n position: relative;\n border-radius: 50%;\n}\n.vgt-global-search__input .input__icon .magnifying-glass:before {\n content: \"\";\n display: block;\n position: absolute;\n right: -7px;\n bottom: -5px;\n background: #d6dae2;\n width: 8px;\n height: 4px;\n border-radius: 2px;\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n}\n.vgt-global-search__actions {\n margin-left: 10px;\n}\n.vgt-selection-info-row {\n background: #fdf9e8;\n padding: 5px 16px;\n font-size: 13px;\n border-top: 1px solid #DCDFE6;\n border-left: 1px solid #DCDFE6;\n border-right: 1px solid #DCDFE6;\n color: #d3aa3b;\n font-weight: bold;\n}\n.vgt-selection-info-row a {\n font-weight: bold;\n display: inline-block;\n margin-left: 10px;\n}\n.vgt-wrap__footer {\n color: #606266;\n padding: 1rem;\n border: 1px solid #DCDFE6;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-wrap__footer .footer__row-count__label, .vgt-wrap__footer .footer__row-count__select {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__row-count__label {\n font-size: 14px;\n color: #909399;\n}\n.vgt-wrap__footer .footer__row-count__select {\n background-color: transparent;\n width: auto;\n padding: 0;\n border: 0;\n border-radius: 0;\n height: auto;\n font-size: 14px;\n margin-left: 8px;\n color: #606266;\n font-weight: bold;\n}\n.vgt-wrap__footer .footer__row-count__select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-wrap__footer .footer__navigation {\n font-size: 14px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn, .vgt-wrap__footer .footer__navigation__info {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n text-decoration: none;\n color: #606266;\n font-weight: bold;\n white-space: nowrap;\n}\n.vgt-wrap__footer .footer__navigation__page-btn:focus {\n outline: none;\n border: 0;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron {\n width: 24px;\n height: 24px;\n border-radius: 15%;\n position: relative;\n margin: 0px 8px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron:after {\n content: '';\n position: absolute;\n display: block;\n left: 50%;\n top: 50%;\n margin-top: -6px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.left::after {\n border-right: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.right::after {\n border-left: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__info {\n color: #909399;\n margin: 0px 16px;\n}\n@media only screen and (max-width: 750px) {\n /* on small screens hide the info */\n.vgt-wrap__footer .footer__navigation__info {\n display: none;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n margin-left: 16px;\n}\n}\n.vgt-table.nocturnal {\n border: 1px solid #435169;\n background-color: #324057;\n}\n.vgt-table.nocturnal tr.clickable:hover {\n background-color: #445168;\n}\n.vgt-table.nocturnal td {\n border-bottom: 1px solid #435169;\n color: #C7CED8;\n}\n.vgt-table.nocturnal th.line-numbers {\n color: #C7CED8;\n border-right: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th {\n color: #C7CED8;\n border-bottom: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th.sorting-asc, .vgt-table.nocturnal thead th.sorting-desc {\n color: #9aa7b9;\n}\n.vgt-table.nocturnal.bordered td, .vgt-table.nocturnal.bordered th {\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input, .vgt-table.nocturnal .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input::placeholder, .vgt-table.nocturnal .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer {\n color: #C7CED8;\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__label {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select:focus {\n border-color: #409eff;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__info {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-global-search {\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass {\n border: 2px solid #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass:before {\n background: #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input::placeholder, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n\n/*# sourceMappingURL=Table.vue.map */", + inject("data-v-2617cab9_0", { + source: "/* Utility styles\n************************************************/\n.vgt-right-align {\n text-align: right;\n}\n.vgt-left-align {\n text-align: left;\n}\n.vgt-center-align {\n text-align: center;\n}\n.vgt-pull-left {\n float: left !important;\n}\n.vgt-pull-right {\n float: right !important;\n}\n.vgt-clearfix::after {\n display: block;\n content: \"\";\n clear: both;\n}\n.vgt-responsive {\n width: 100%;\n overflow-x: auto;\n}\n.vgt-text-disabled {\n color: #909399;\n}\n.vgt-wrap {\n position: relative;\n}\ntable.vgt-table {\n border-collapse: collapse;\n background-color: transparent;\n width: 100%;\n max-width: 100%;\n table-layout: auto;\n border: 1px solid #DCDFE6;\n}\ntable.vgt-table td {\n padding: .75rem .75rem .75rem .75rem;\n vertical-align: top;\n border-bottom: 1px solid #DCDFE6;\n color: #606266;\n}\ntable.vgt-table tr.clickable {\n cursor: pointer;\n}\ntable.vgt-table tr.clickable:hover {\n background-color: #F1F5FD;\n}\n.vgt-table th {\n padding: .75rem 1.5rem .75rem .75rem;\n vertical-align: middle;\n}\n.vgt-table th.sorting:hover:after {\n display: inline-block;\n border-bottom-color: #73b8ff;\n}\n.vgt-table th.line-numbers, .vgt-table th.vgt-checkbox-col {\n padding: 0 .75rem 0 .75rem;\n color: #606266;\n border-right: 1px solid #DCDFE6;\n word-wrap: break-word;\n width: 25px;\n text-align: center;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table th.filter-th {\n padding: .75rem .75rem .75rem .75rem;\n}\n.vgt-table th.vgt-row-header {\n border-bottom: 2px solid #DCDFE6;\n border-top: 2px solid #DCDFE6;\n background-color: #fafafb;\n}\n.vgt-table thead th {\n color: #606266;\n vertical-align: bottom;\n border-bottom: 1px solid #DCDFE6;\n padding-right: 1.5rem;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table thead th.vgt-checkbox-col {\n vertical-align: middle;\n}\n.vgt-table thead th.sorting-asc, .vgt-table thead th.sorting-desc {\n color: #3b3c3f;\n position: relative;\n background-clip: padding-box;\n}\n.vgt-table thead th.sorting-asc:after, .vgt-table thead th.sorting-desc:after {\n content: '';\n display: block;\n position: absolute;\n height: 0px;\n width: 0px;\n right: 6px;\n top: 50%;\n margin-top: -3px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #409eff;\n}\n.vgt-table thead th.sorting-desc:after {\n border-top: 6px solid #409eff;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: none;\n}\n.vgt-input, .vgt-select {\n width: 100%;\n height: 32px;\n line-height: 1;\n display: block;\n font-size: 14px;\n font-weight: regular;\n padding: 6px 12px;\n color: #606266;\n border-radius: 4px;\n box-sizing: border-box;\n background-image: none;\n background-color: #fff;\n border: 1px solid #DCDFE6;\n transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.vgt-input::placeholder, .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #606266;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-input:focus, .vgt-select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-loading {\n position: absolute;\n width: 100%;\n z-index: 10;\n margin-top: 117px;\n}\n.vgt-loading__content {\n background-color: #c0dfff;\n color: #409eff;\n padding: 7px 30px;\n border-radius: 3px;\n}\n.vgt-inner-wrap.is-loading {\n opacity: 0.3;\n pointer-events: none;\n}\n.vgt-table.bordered td, .vgt-table.bordered th {\n border: 1px solid #DCDFE6;\n}\n.vgt-table.bordered th.vgt-row-header {\n border-bottom: 3px solid #DCDFE6;\n}\n.vgt-table.striped tbody tr:nth-of-type(odd) {\n background-color: rgba(51, 68, 109, 0.03);\n}\n.vgt-wrap.rtl {\n direction: rtl;\n}\n.vgt-wrap.rtl .vgt-table td, .vgt-wrap.rtl .vgt-table th:not(.line-numbers) {\n padding: .75rem .75rem .75rem 1.5rem;\n}\n.vgt-wrap.rtl .vgt-table thead th, .vgt-wrap.rtl .vgt-table.condensed thead th {\n padding-left: 1.5rem;\n padding-right: .75rem;\n}\n.vgt-wrap.rtl .vgt-table th.sorting:after,\n .vgt-wrap.rtl .vgt-table th.sorting-asc:after {\n margin-right: 5px;\n margin-left: 0px;\n}\n.vgt-table.condensed td, .vgt-table.condensed th.vgt-row-header {\n padding: .4rem .4rem .4rem .4rem;\n}\n.vgt-global-search {\n padding: 5px 0px;\n display: flex;\n flex-wrap: no-wrap;\n align-items: stretch;\n border: 1px solid #DCDFE6;\n border-bottom: 0px;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-global-search__input {\n position: relative;\n padding-left: 40px;\n flex-grow: 1;\n}\n.vgt-global-search__input .input__icon {\n position: absolute;\n left: 0px;\n max-width: 32px;\n}\n.vgt-global-search__input .input__icon .magnifying-glass {\n margin-top: 3px;\n margin-left: 8px;\n display: block;\n width: 16px;\n height: 16px;\n border: 2px solid #d6dae2;\n position: relative;\n border-radius: 50%;\n}\n.vgt-global-search__input .input__icon .magnifying-glass:before {\n content: \"\";\n display: block;\n position: absolute;\n right: -7px;\n bottom: -5px;\n background: #d6dae2;\n width: 8px;\n height: 4px;\n border-radius: 2px;\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n}\n.vgt-global-search__actions {\n margin-left: 10px;\n}\n.vgt-selection-info-row {\n background: #fdf9e8;\n padding: 5px 16px;\n font-size: 13px;\n border-top: 1px solid #DCDFE6;\n border-left: 1px solid #DCDFE6;\n border-right: 1px solid #DCDFE6;\n color: #d3aa3b;\n font-weight: bold;\n}\n.vgt-selection-info-row a {\n font-weight: bold;\n display: inline-block;\n margin-left: 10px;\n}\n.vgt-wrap__footer {\n color: #606266;\n padding: 1rem;\n border: 1px solid #DCDFE6;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-wrap__footer .footer__row-count__label, .vgt-wrap__footer .footer__row-count__select {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__row-count__label {\n font-size: 14px;\n color: #909399;\n}\n.vgt-wrap__footer .footer__row-count__select {\n background-color: transparent;\n width: auto;\n padding: 0;\n border: 0;\n border-radius: 0;\n height: auto;\n font-size: 14px;\n margin-left: 8px;\n color: #606266;\n font-weight: bold;\n}\n.vgt-wrap__footer .footer__row-count__select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-wrap__footer .footer__navigation {\n font-size: 14px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn, .vgt-wrap__footer .footer__navigation__info {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n text-decoration: none;\n color: #606266;\n font-weight: bold;\n white-space: nowrap;\n}\n.vgt-wrap__footer .footer__navigation__page-btn:focus {\n outline: none;\n border: 0;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron {\n width: 24px;\n height: 24px;\n border-radius: 15%;\n position: relative;\n margin: 0px 8px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron:after {\n content: '';\n position: absolute;\n display: block;\n left: 50%;\n top: 50%;\n margin-top: -6px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.left::after {\n border-right: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.right::after {\n border-left: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__info {\n color: #909399;\n margin: 0px 16px;\n}\n@media only screen and (max-width: 750px) {\n /* on small screens hide the info */\n.vgt-wrap__footer .footer__navigation__info {\n display: none;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n margin-left: 16px;\n}\n}\n.vgt-table.nocturnal {\n border: 1px solid #435169;\n background-color: #324057;\n}\n.vgt-table.nocturnal tr.clickable:hover {\n background-color: #445168;\n}\n.vgt-table.nocturnal td {\n border-bottom: 1px solid #435169;\n color: #C7CED8;\n}\n.vgt-table.nocturnal th.line-numbers {\n color: #C7CED8;\n border-right: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th {\n color: #C7CED8;\n border-bottom: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th.sorting-asc, .vgt-table.nocturnal thead th.sorting-desc {\n color: #9aa7b9;\n}\n.vgt-table.nocturnal.bordered td, .vgt-table.nocturnal.bordered th {\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input, .vgt-table.nocturnal .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input::placeholder, .vgt-table.nocturnal .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer {\n color: #C7CED8;\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__label {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select:focus {\n border-color: #409eff;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__info {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-global-search {\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass {\n border: 2px solid #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass:before {\n background: #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input::placeholder, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n\n/*# sourceMappingURL=Table.vue.map */", map: undefined, media: undefined }); diff --git a/dist/vue-good-table.js b/dist/vue-good-table.js index 364c0948..3162cd0e 100644 --- a/dist/vue-good-table.js +++ b/dist/vue-good-table.js @@ -6201,6 +6201,7 @@ // // // + // var script$2 = { name: 'VgtFilterRow', props: ['lineNumbers', 'columns', 'typedColumns', 'globalSearchEnabled', 'selectable', 'mode'], @@ -6254,6 +6255,14 @@ var placeholder = this.isFilterable(column) && column.filterOptions.placeholder || "Filter ".concat(column.label); return placeholder; }, + updateFiltersOnEnter: function updateFiltersOnEnter(column, value) { + this.updateFilters(column, value); + }, + updateFiltersOnKeyup: function updateFiltersOnKeyup(column, value) { + // if the trigger is enter, we don't filter on keyup + if (column.filterOptions.trigger === 'enter') return; + this.updateFilters(column, value); + }, // since vue doesn't detect property addition and deletion, we // need to create helper function to set property etc updateFilters: function updateFilters(column, value) { @@ -6311,8 +6320,15 @@ value: _vm.columnFilters[column.field] }, on: { + keyup: function keyup($event) { + if (!("button" in $event) && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) { + return null; + } + + _vm.updateFiltersOnEnter(column, $event.target.value); + }, input: function input($event) { - _vm.updateFilters(column, $event.target.value); + _vm.updateFiltersOnKeyup(column, $event.target.value); } } }) : _vm._e(), _vm._v(" "), _vm.isDropdownArray(column) ? _c("select", { @@ -6344,7 +6360,7 @@ }, on: { input: function input($event) { - _vm.updateFilters(column, $event.target.value); + _vm.updateFilters(column, $event.target.value, true); } } }, [_c("option", { @@ -6375,8 +6391,8 @@ var __vue_inject_styles__$2 = function (inject) { if (!inject) return; - inject("data-v-2a7ff999_0", { - source: "\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\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\n\n\n", + inject("data-v-1d6d352a_0", { + source: "\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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n", map: undefined, media: undefined }); @@ -6384,7 +6400,7 @@ /* scoped */ - var __vue_scope_id__$2 = "data-v-2a7ff999"; + var __vue_scope_id__$2 = "data-v-1d6d352a"; /* module identifier */ @@ -10939,6 +10955,10 @@ var script$3 = { name: 'vue-good-table', props: { + isLoading: { + default: false, + type: Boolean + }, theme: { default: '' }, @@ -11018,6 +11038,8 @@ }, data: function data() { return { + // loading state for remote mode + tableLoading: false, // text options nextText: 'Next', prevText: 'Prev', @@ -11062,6 +11084,7 @@ watch: { rows: { handler: function handler() { + this.tableLoading = false; this.filterRows(this.columnFilters, false); }, deep: true, @@ -11097,6 +11120,9 @@ } }, computed: { + isTableLoading: function isTableLoading() { + return this.isLoading || this.tableLoading; + }, showEmptySlot: function showEmptySlot() { if (!this.paginated.length) return true; if (this.paginated[0].label === 'no groups' && !this.paginated[0].children.length) return true; @@ -11451,11 +11477,19 @@ this.currentPage = pagination.currentPage; var pageChangedEvent = this.pageChangedEvent(); this.$emit('on-page-change', pageChangedEvent); + + if (this.mode === 'remote') { + this.tableLoading = true; + } }, perPageChanged: function perPageChanged(pagination) { this.currentPerPage = pagination.currentPerPage; var perPageChangedEvent = this.pageChangedEvent(); this.$emit('on-per-page-change', perPageChangedEvent); + + if (this.mode === 'remote') { + this.tableLoading = true; + } }, sort: function sort(index$$1) { if (!this.isSortableColumn(index$$1)) return; @@ -11474,9 +11508,13 @@ this.unselectAll(); // every time we change sort we need to reset to page 1 this.changePage(1); // if the mode is remote, we don't need to do anything - // after this. + // after this. just set table loading to true + + if (this.mode === 'remote') { + this.tableLoading = true; + return; + } - if (this.mode === 'remote') return; this.sortChanged = true; }, click: function click(row, index$$1) { @@ -11653,15 +11691,19 @@ // every time we filter rows, we need to set current page // to 1 this.changePage(1); - this.unselectAll(); // if mode is remote, we don't do any filtering here. - // we need to emit an event and that's that. + this.unselectAll(); // we need to emit an event and that's that. // but this only needs to be invoked if filter is changing // not when row object is modified. - if (this.mode === 'remote' && fromFilter) { + if (fromFilter) { this.$emit('on-column-filter', { columnFilters: this.columnFilters }); + } // if mode is remote, we don't do any filtering here. + + + if (this.mode === 'remote' && fromFilter) { + this.tableLoading = true; return; } @@ -11908,6 +11950,15 @@ rtl: _vm.rtl, nocturnal: _vm.theme === "nocturnal" } + }, [_vm.isTableLoading ? _c("div", { + staticClass: "vgt-loading vgt-center-align" + }, [_vm._t("loadingContent", [_c("span", { + staticClass: "vgt-loading__content" + }, [_vm._v("\n Loading...\n ")])])], 2) : _vm._e(), _vm._v(" "), _c("div", { + staticClass: "vgt-inner-wrap", + class: { + "is-loading": _vm.isTableLoading + } }, [_vm.paginate && _vm.paginateOnTop ? _c("vgt-pagination", { ref: "paginationTop", attrs: { @@ -11947,7 +11998,7 @@ }, [_vm._t("table-actions")], 2)], 2), _vm._v(" "), _vm.selectedRowCount ? _c("div", { staticClass: "vgt-selection-info-row clearfix", class: _vm.selectionInfoClass - }, [_vm._v("\n " + _vm._s(_vm.selectionInfo) + "\n "), _c("a", { + }, [_vm._v("\n " + _vm._s(_vm.selectionInfo) + "\n "), _c("a", { attrs: { href: "" }, @@ -11960,7 +12011,7 @@ _vm.unselectAllInternal(); } } - }, [_vm._v("\n " + _vm._s(_vm.clearSelectionText) + "\n ")]), _vm._v(" "), _c("div", { + }, [_vm._v("\n " + _vm._s(_vm.clearSelectionText) + "\n ")]), _vm._v(" "), _c("div", { staticClass: "vgt-selection-info-row__actions vgt-pull-right" }, [_vm._t("selected-row-actions")], 2)]) : _vm._e(), _vm._v(" "), _c("div", { class: { @@ -12042,7 +12093,7 @@ attrs: { colspan: _vm.fullColspan } - }, [_vm._v("\n " + _vm._s(headerRow.label) + "\n ")]) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.lineNumbers ? _c("th", { + }, [_vm._v("\n " + _vm._s(headerRow.label) + "\n ")]) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.lineNumbers ? _c("th", { staticClass: "vgt-row-header" }) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.selectable ? _c("th", { staticClass: "vgt-row-header" @@ -12051,7 +12102,7 @@ key: i, staticClass: "vgt-row-header", class: _vm.getClasses(i, "td") - }, [_vm._v("\n " + _vm._s(_vm.collectFormatted(headerRow, column, true)) + "\n ")]) : _vm._e(); + }, [_vm._v("\n " + _vm._s(_vm.collectFormatted(headerRow, column, true)) + "\n ")]) : _vm._e(); })], 2) : _vm._e(), _vm._v(" "), _vm._l(headerRow.children, function (row, index) { return _c("tr", { key: row.originalIndex, @@ -12069,7 +12120,7 @@ } }, [_vm.lineNumbers ? _c("th", { staticClass: "line-numbers" - }, [_vm._v("\n " + _vm._s(_vm.getCurrentIndex(index)) + "\n ")]) : _vm._e(), _vm._v(" "), _vm.selectable ? _c("th", { + }, [_vm._v("\n " + _vm._s(_vm.getCurrentIndex(index)) + "\n ")]) : _vm._e(), _vm._v(" "), _vm.selectable ? _c("th", { staticClass: "vgt-checkbox-col" }, [_c("input", { directives: [{ @@ -12113,7 +12164,7 @@ _vm.onCellClicked(row, column, index); } } - }, [_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", { + }, [_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", { domProps: { innerHTML: _vm._s(_vm.collect(row, column.field)) } @@ -12129,7 +12180,7 @@ attrs: { colspan: _vm.columns.length } - }, [_vm._v("\n " + _vm._s(headerRow.label) + "\n ")]) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.lineNumbers ? _c("th", { + }, [_vm._v("\n " + _vm._s(headerRow.label) + "\n ")]) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.lineNumbers ? _c("th", { staticClass: "vgt-row-header" }) : _vm._e(), _vm._v(" "), headerRow.mode !== "span" && _vm.selectable ? _c("th", { staticClass: "vgt-row-header" @@ -12138,7 +12189,7 @@ key: i, staticClass: "vgt-row-header", class: _vm.getClasses(i, "td") - }, [_vm._v("\n " + _vm._s(_vm.collectFormatted(headerRow, column, true)) + "\n ")]) : _vm._e(); + }, [_vm._v("\n " + _vm._s(_vm.collectFormatted(headerRow, column, true)) + "\n ")]) : _vm._e(); })], 2) : _vm._e()], 2); }), _vm._v(" "), _vm.showEmptySlot ? _c("tbody", [_c("tr", [_c("td", { attrs: { @@ -12146,7 +12197,7 @@ } }, [_vm._t("emptystate", [_c("div", { staticClass: "vgt-center-align vgt-text-disabled" - }, [_vm._v("\n No data for table\n ")])])], 2)])]) : _vm._e()], 2)]), _vm._v(" "), _vm.paginate && _vm.paginateOnBottom ? _c("vgt-pagination", { + }, [_vm._v("\n No data for table\n ")])])], 2)])]) : _vm._e()], 2)]), _vm._v(" "), _vm.paginate && _vm.paginateOnBottom ? _c("vgt-pagination", { ref: "paginationBottom", attrs: { perPage: _vm.perPage, @@ -12164,7 +12215,7 @@ "page-changed": _vm.pageChanged, "per-page-changed": _vm.perPageChanged } - }) : _vm._e()], 1); + }) : _vm._e()], 1)]); }; var __vue_staticRenderFns__$3 = []; @@ -12179,8 +12230,8 @@ var __vue_inject_styles__$3 = function (inject) { if (!inject) return; - inject("data-v-126ce30e_0", { - source: "/* Utility styles\n************************************************/\n.vgt-right-align {\n text-align: right;\n}\n.vgt-left-align {\n text-align: left;\n}\n.vgt-center-align {\n text-align: center;\n}\n.vgt-pull-left {\n float: left !important;\n}\n.vgt-pull-right {\n float: right !important;\n}\n.vgt-clearfix::after {\n display: block;\n content: \"\";\n clear: both;\n}\n.vgt-responsive {\n width: 100%;\n overflow-x: auto;\n}\n.vgt-text-disabled {\n color: #909399;\n}\ntable.vgt-table {\n border-collapse: collapse;\n background-color: transparent;\n width: 100%;\n max-width: 100%;\n table-layout: auto;\n border: 1px solid #DCDFE6;\n}\ntable.vgt-table td {\n padding: .75rem .75rem .75rem .75rem;\n vertical-align: top;\n border-bottom: 1px solid #DCDFE6;\n color: #606266;\n}\ntable.vgt-table tr.clickable {\n cursor: pointer;\n}\ntable.vgt-table tr.clickable:hover {\n background-color: #F1F5FD;\n}\n.vgt-table th {\n padding: .75rem 1.5rem .75rem .75rem;\n vertical-align: middle;\n}\n.vgt-table th.sorting:hover:after {\n display: inline-block;\n border-bottom-color: #73b8ff;\n}\n.vgt-table th.line-numbers, .vgt-table th.vgt-checkbox-col {\n padding: 0 .75rem 0 .75rem;\n color: #606266;\n border-right: 1px solid #DCDFE6;\n word-wrap: break-word;\n width: 25px;\n text-align: center;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table th.filter-th {\n padding: .75rem .75rem .75rem .75rem;\n}\n.vgt-table th.vgt-row-header {\n border-bottom: 2px solid #DCDFE6;\n border-top: 2px solid #DCDFE6;\n background-color: #fafafb;\n}\n.vgt-table thead th {\n color: #606266;\n vertical-align: bottom;\n border-bottom: 1px solid #DCDFE6;\n padding-right: 1.5rem;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table thead th.vgt-checkbox-col {\n vertical-align: middle;\n}\n.vgt-table thead th.sorting-asc, .vgt-table thead th.sorting-desc {\n color: #3b3c3f;\n position: relative;\n background-clip: padding-box;\n}\n.vgt-table thead th.sorting-asc:after, .vgt-table thead th.sorting-desc:after {\n content: '';\n display: block;\n position: absolute;\n height: 0px;\n width: 0px;\n right: 6px;\n top: 50%;\n margin-top: -3px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #409eff;\n}\n.vgt-table thead th.sorting-desc:after {\n border-top: 6px solid #409eff;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: none;\n}\n.vgt-input, .vgt-select {\n width: 100%;\n height: 32px;\n line-height: 1;\n display: block;\n font-size: 14px;\n font-weight: regular;\n padding: 6px 12px;\n color: #606266;\n border-radius: 4px;\n box-sizing: border-box;\n background-image: none;\n background-color: #fff;\n border: 1px solid #DCDFE6;\n transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.vgt-input::placeholder, .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #606266;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-input:focus, .vgt-select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-table.bordered td, .vgt-table.bordered th {\n border: 1px solid #DCDFE6;\n}\n.vgt-table.bordered th.vgt-row-header {\n border-bottom: 3px solid #DCDFE6;\n}\n.vgt-table.striped tbody tr:nth-of-type(odd) {\n background-color: rgba(51, 68, 109, 0.03);\n}\n.vgt-wrap.rtl {\n direction: rtl;\n}\n.vgt-wrap.rtl .vgt-table td, .vgt-wrap.rtl .vgt-table th:not(.line-numbers) {\n padding: .75rem .75rem .75rem 1.5rem;\n}\n.vgt-wrap.rtl .vgt-table thead th, .vgt-wrap.rtl .vgt-table.condensed thead th {\n padding-left: 1.5rem;\n padding-right: .75rem;\n}\n.vgt-wrap.rtl .vgt-table th.sorting:after,\n .vgt-wrap.rtl .vgt-table th.sorting-asc:after {\n margin-right: 5px;\n margin-left: 0px;\n}\n.vgt-table.condensed td, .vgt-table.condensed th.vgt-row-header {\n padding: .4rem .4rem .4rem .4rem;\n}\n.vgt-global-search {\n padding: 5px 0px;\n display: flex;\n flex-wrap: no-wrap;\n align-items: stretch;\n border: 1px solid #DCDFE6;\n border-bottom: 0px;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-global-search__input {\n position: relative;\n padding-left: 40px;\n flex-grow: 1;\n}\n.vgt-global-search__input .input__icon {\n position: absolute;\n left: 0px;\n max-width: 32px;\n}\n.vgt-global-search__input .input__icon .magnifying-glass {\n margin-top: 3px;\n margin-left: 8px;\n display: block;\n width: 16px;\n height: 16px;\n border: 2px solid #d6dae2;\n position: relative;\n border-radius: 50%;\n}\n.vgt-global-search__input .input__icon .magnifying-glass:before {\n content: \"\";\n display: block;\n position: absolute;\n right: -7px;\n bottom: -5px;\n background: #d6dae2;\n width: 8px;\n height: 4px;\n border-radius: 2px;\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n}\n.vgt-global-search__actions {\n margin-left: 10px;\n}\n.vgt-selection-info-row {\n background: #fdf9e8;\n padding: 5px 16px;\n font-size: 13px;\n border-top: 1px solid #DCDFE6;\n border-left: 1px solid #DCDFE6;\n border-right: 1px solid #DCDFE6;\n color: #d3aa3b;\n font-weight: bold;\n}\n.vgt-selection-info-row a {\n font-weight: bold;\n display: inline-block;\n margin-left: 10px;\n}\n.vgt-wrap__footer {\n color: #606266;\n padding: 1rem;\n border: 1px solid #DCDFE6;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-wrap__footer .footer__row-count__label, .vgt-wrap__footer .footer__row-count__select {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__row-count__label {\n font-size: 14px;\n color: #909399;\n}\n.vgt-wrap__footer .footer__row-count__select {\n background-color: transparent;\n width: auto;\n padding: 0;\n border: 0;\n border-radius: 0;\n height: auto;\n font-size: 14px;\n margin-left: 8px;\n color: #606266;\n font-weight: bold;\n}\n.vgt-wrap__footer .footer__row-count__select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-wrap__footer .footer__navigation {\n font-size: 14px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn, .vgt-wrap__footer .footer__navigation__info {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n text-decoration: none;\n color: #606266;\n font-weight: bold;\n white-space: nowrap;\n}\n.vgt-wrap__footer .footer__navigation__page-btn:focus {\n outline: none;\n border: 0;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron {\n width: 24px;\n height: 24px;\n border-radius: 15%;\n position: relative;\n margin: 0px 8px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron:after {\n content: '';\n position: absolute;\n display: block;\n left: 50%;\n top: 50%;\n margin-top: -6px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.left::after {\n border-right: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.right::after {\n border-left: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__info {\n color: #909399;\n margin: 0px 16px;\n}\n@media only screen and (max-width: 750px) {\n /* on small screens hide the info */\n.vgt-wrap__footer .footer__navigation__info {\n display: none;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n margin-left: 16px;\n}\n}\n.vgt-table.nocturnal {\n border: 1px solid #435169;\n background-color: #324057;\n}\n.vgt-table.nocturnal tr.clickable:hover {\n background-color: #445168;\n}\n.vgt-table.nocturnal td {\n border-bottom: 1px solid #435169;\n color: #C7CED8;\n}\n.vgt-table.nocturnal th.line-numbers {\n color: #C7CED8;\n border-right: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th {\n color: #C7CED8;\n border-bottom: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th.sorting-asc, .vgt-table.nocturnal thead th.sorting-desc {\n color: #9aa7b9;\n}\n.vgt-table.nocturnal.bordered td, .vgt-table.nocturnal.bordered th {\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input, .vgt-table.nocturnal .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input::placeholder, .vgt-table.nocturnal .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer {\n color: #C7CED8;\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__label {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select:focus {\n border-color: #409eff;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__info {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-global-search {\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass {\n border: 2px solid #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass:before {\n background: #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input::placeholder, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n\n/*# sourceMappingURL=Table.vue.map */", + inject("data-v-2617cab9_0", { + source: "/* Utility styles\n************************************************/\n.vgt-right-align {\n text-align: right;\n}\n.vgt-left-align {\n text-align: left;\n}\n.vgt-center-align {\n text-align: center;\n}\n.vgt-pull-left {\n float: left !important;\n}\n.vgt-pull-right {\n float: right !important;\n}\n.vgt-clearfix::after {\n display: block;\n content: \"\";\n clear: both;\n}\n.vgt-responsive {\n width: 100%;\n overflow-x: auto;\n}\n.vgt-text-disabled {\n color: #909399;\n}\n.vgt-wrap {\n position: relative;\n}\ntable.vgt-table {\n border-collapse: collapse;\n background-color: transparent;\n width: 100%;\n max-width: 100%;\n table-layout: auto;\n border: 1px solid #DCDFE6;\n}\ntable.vgt-table td {\n padding: .75rem .75rem .75rem .75rem;\n vertical-align: top;\n border-bottom: 1px solid #DCDFE6;\n color: #606266;\n}\ntable.vgt-table tr.clickable {\n cursor: pointer;\n}\ntable.vgt-table tr.clickable:hover {\n background-color: #F1F5FD;\n}\n.vgt-table th {\n padding: .75rem 1.5rem .75rem .75rem;\n vertical-align: middle;\n}\n.vgt-table th.sorting:hover:after {\n display: inline-block;\n border-bottom-color: #73b8ff;\n}\n.vgt-table th.line-numbers, .vgt-table th.vgt-checkbox-col {\n padding: 0 .75rem 0 .75rem;\n color: #606266;\n border-right: 1px solid #DCDFE6;\n word-wrap: break-word;\n width: 25px;\n text-align: center;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table th.filter-th {\n padding: .75rem .75rem .75rem .75rem;\n}\n.vgt-table th.vgt-row-header {\n border-bottom: 2px solid #DCDFE6;\n border-top: 2px solid #DCDFE6;\n background-color: #fafafb;\n}\n.vgt-table thead th {\n color: #606266;\n vertical-align: bottom;\n border-bottom: 1px solid #DCDFE6;\n padding-right: 1.5rem;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table thead th.vgt-checkbox-col {\n vertical-align: middle;\n}\n.vgt-table thead th.sorting-asc, .vgt-table thead th.sorting-desc {\n color: #3b3c3f;\n position: relative;\n background-clip: padding-box;\n}\n.vgt-table thead th.sorting-asc:after, .vgt-table thead th.sorting-desc:after {\n content: '';\n display: block;\n position: absolute;\n height: 0px;\n width: 0px;\n right: 6px;\n top: 50%;\n margin-top: -3px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #409eff;\n}\n.vgt-table thead th.sorting-desc:after {\n border-top: 6px solid #409eff;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: none;\n}\n.vgt-input, .vgt-select {\n width: 100%;\n height: 32px;\n line-height: 1;\n display: block;\n font-size: 14px;\n font-weight: regular;\n padding: 6px 12px;\n color: #606266;\n border-radius: 4px;\n box-sizing: border-box;\n background-image: none;\n background-color: #fff;\n border: 1px solid #DCDFE6;\n transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.vgt-input::placeholder, .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #606266;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-input:focus, .vgt-select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-loading {\n position: absolute;\n width: 100%;\n z-index: 10;\n margin-top: 117px;\n}\n.vgt-loading__content {\n background-color: #c0dfff;\n color: #409eff;\n padding: 7px 30px;\n border-radius: 3px;\n}\n.vgt-inner-wrap.is-loading {\n opacity: 0.3;\n pointer-events: none;\n}\n.vgt-table.bordered td, .vgt-table.bordered th {\n border: 1px solid #DCDFE6;\n}\n.vgt-table.bordered th.vgt-row-header {\n border-bottom: 3px solid #DCDFE6;\n}\n.vgt-table.striped tbody tr:nth-of-type(odd) {\n background-color: rgba(51, 68, 109, 0.03);\n}\n.vgt-wrap.rtl {\n direction: rtl;\n}\n.vgt-wrap.rtl .vgt-table td, .vgt-wrap.rtl .vgt-table th:not(.line-numbers) {\n padding: .75rem .75rem .75rem 1.5rem;\n}\n.vgt-wrap.rtl .vgt-table thead th, .vgt-wrap.rtl .vgt-table.condensed thead th {\n padding-left: 1.5rem;\n padding-right: .75rem;\n}\n.vgt-wrap.rtl .vgt-table th.sorting:after,\n .vgt-wrap.rtl .vgt-table th.sorting-asc:after {\n margin-right: 5px;\n margin-left: 0px;\n}\n.vgt-table.condensed td, .vgt-table.condensed th.vgt-row-header {\n padding: .4rem .4rem .4rem .4rem;\n}\n.vgt-global-search {\n padding: 5px 0px;\n display: flex;\n flex-wrap: no-wrap;\n align-items: stretch;\n border: 1px solid #DCDFE6;\n border-bottom: 0px;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-global-search__input {\n position: relative;\n padding-left: 40px;\n flex-grow: 1;\n}\n.vgt-global-search__input .input__icon {\n position: absolute;\n left: 0px;\n max-width: 32px;\n}\n.vgt-global-search__input .input__icon .magnifying-glass {\n margin-top: 3px;\n margin-left: 8px;\n display: block;\n width: 16px;\n height: 16px;\n border: 2px solid #d6dae2;\n position: relative;\n border-radius: 50%;\n}\n.vgt-global-search__input .input__icon .magnifying-glass:before {\n content: \"\";\n display: block;\n position: absolute;\n right: -7px;\n bottom: -5px;\n background: #d6dae2;\n width: 8px;\n height: 4px;\n border-radius: 2px;\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n}\n.vgt-global-search__actions {\n margin-left: 10px;\n}\n.vgt-selection-info-row {\n background: #fdf9e8;\n padding: 5px 16px;\n font-size: 13px;\n border-top: 1px solid #DCDFE6;\n border-left: 1px solid #DCDFE6;\n border-right: 1px solid #DCDFE6;\n color: #d3aa3b;\n font-weight: bold;\n}\n.vgt-selection-info-row a {\n font-weight: bold;\n display: inline-block;\n margin-left: 10px;\n}\n.vgt-wrap__footer {\n color: #606266;\n padding: 1rem;\n border: 1px solid #DCDFE6;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-wrap__footer .footer__row-count__label, .vgt-wrap__footer .footer__row-count__select {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__row-count__label {\n font-size: 14px;\n color: #909399;\n}\n.vgt-wrap__footer .footer__row-count__select {\n background-color: transparent;\n width: auto;\n padding: 0;\n border: 0;\n border-radius: 0;\n height: auto;\n font-size: 14px;\n margin-left: 8px;\n color: #606266;\n font-weight: bold;\n}\n.vgt-wrap__footer .footer__row-count__select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-wrap__footer .footer__navigation {\n font-size: 14px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn, .vgt-wrap__footer .footer__navigation__info {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n text-decoration: none;\n color: #606266;\n font-weight: bold;\n white-space: nowrap;\n}\n.vgt-wrap__footer .footer__navigation__page-btn:focus {\n outline: none;\n border: 0;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron {\n width: 24px;\n height: 24px;\n border-radius: 15%;\n position: relative;\n margin: 0px 8px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron:after {\n content: '';\n position: absolute;\n display: block;\n left: 50%;\n top: 50%;\n margin-top: -6px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.left::after {\n border-right: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.right::after {\n border-left: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__info {\n color: #909399;\n margin: 0px 16px;\n}\n@media only screen and (max-width: 750px) {\n /* on small screens hide the info */\n.vgt-wrap__footer .footer__navigation__info {\n display: none;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n margin-left: 16px;\n}\n}\n.vgt-table.nocturnal {\n border: 1px solid #435169;\n background-color: #324057;\n}\n.vgt-table.nocturnal tr.clickable:hover {\n background-color: #445168;\n}\n.vgt-table.nocturnal td {\n border-bottom: 1px solid #435169;\n color: #C7CED8;\n}\n.vgt-table.nocturnal th.line-numbers {\n color: #C7CED8;\n border-right: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th {\n color: #C7CED8;\n border-bottom: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th.sorting-asc, .vgt-table.nocturnal thead th.sorting-desc {\n color: #9aa7b9;\n}\n.vgt-table.nocturnal.bordered td, .vgt-table.nocturnal.bordered th {\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input, .vgt-table.nocturnal .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input::placeholder, .vgt-table.nocturnal .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer {\n color: #C7CED8;\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__label {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select:focus {\n border-color: #409eff;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__info {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-global-search {\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass {\n border: 2px solid #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass:before {\n background: #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input::placeholder, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n\n/*# sourceMappingURL=Table.vue.map */", map: undefined, media: undefined }); diff --git a/dist/vue-good-table.min.js b/dist/vue-good-table.min.js index 244ab666..85562dbf 100644 --- a/dist/vue-good-table.min.js +++ b/dist/vue-good-table.min.js @@ -5,5 +5,5 @@ * Released under the MIT License. */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.vueGoodTable={})}(this,function(t){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function n(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e-1&&t%1==0&&t-1&&t%1==0&&t<=r}(t.length)&&!function(t){var e=function(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}(t)?p.call(t):"";return e==a||e==i}(t)}function T(t){return D(t)?v(t):w(t)}function P(t){return t}var O=function(t,e){return(C(t)?s:b)(t,"function"==typeof e?e:P)},S=9007199254740991,j="[object Arguments]",F="[object Function]",k="[object GeneratorFunction]",A=/^(?:0|[1-9]\d*)$/;var M=Object.prototype,Y=M.hasOwnProperty,L=M.toString,U=M.propertyIsEnumerable,R=function(t,e){return function(n){return t(e(n))}}(Object.keys,Object),E=Math.max,I=!U.call({valueOf:1},"valueOf");function N(t,e){var n=B(t)||function(t){return function(t){return function(t){return!!t&&"object"==typeof t}(t)&&G(t)}(t)&&Y.call(t,"callee")&&(!U.call(t,"callee")||L.call(t)==j)}(t)?function(t,e){for(var n=-1,r=Array(t);++n-1&&t%1==0&&t-1&&t%1==0&&t<=S}(t.length)&&!function(t){var e=q(t)?L.call(t):"";return e==F||e==k}(t)}function q(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}var Z=function(t){return e=function(e,n){var r=-1,o=n.length,a=o>1?n[o-1]:void 0,i=o>2?n[2]:void 0;for(a=t.length>3&&"function"==typeof a?(o--,a):void 0,i&&function(t,e,n){if(!q(n))return!1;var r=typeof e;return!!("number"==r?G(n)&&H(e,n.length):"string"==r&&e in n)&&W(n[e],t)}(n[0],n[1],i)&&(a=o<3?void 0:a,o=1),e=Object(e);++r-1},Pt.prototype.set=function(t,e){var n=this.__data__,r=kt(n,t);return r<0?n.push([t,e]):n[r][1]=e,this},Ot.prototype.clear=function(){this.__data__={hash:new Tt,map:new(pt||Pt),string:new Tt}},Ot.prototype.delete=function(t){return Ut(this,t).delete(t)},Ot.prototype.get=function(t){return Ut(this,t).get(t)},Ot.prototype.has=function(t){return Ut(this,t).has(t)},Ot.prototype.set=function(t,e){return Ut(this,t).set(t,e),this},St.prototype.clear=function(){this.__data__=new Pt},St.prototype.delete=function(t){return this.__data__.delete(t)},St.prototype.get=function(t){return this.__data__.get(t)},St.prototype.has=function(t){return this.__data__.has(t)},St.prototype.set=function(t,e){var r=this.__data__;if(r instanceof Pt){var o=r.__data__;if(!pt||o.length-1&&t%1==0&&t-1&&t%1==0&&t<=o}(t.length)&&!qt(t)}var Gt=ct||function(){return!1};function qt(t){var e=Zt(t)?tt.call(t):"";return e==s||e==u}function Zt(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function Vt(t){return Bt(t)?jt(t):function(t){if(!$t(t))return ft(t);var e=[];for(var n in Object(t))K.call(t,n)&&"constructor"!=n&&e.push(n);return e}(t)}t.exports=function(t){return At(t,!0,!0)}}),J=Q(function(t,e){var n=200,r="Expected a function",o="__lodash_hash_undefined__",a=1,i=2,l=1/0,s=9007199254740991,u="[object Arguments]",c="[object Array]",f="[object Boolean]",d="[object Date]",p="[object Error]",h="[object Function]",g="[object GeneratorFunction]",v="[object Map]",m="[object Number]",_="[object Object]",b="[object RegExp]",y="[object Set]",w="[object String]",x="[object Symbol]",C="[object ArrayBuffer]",D="[object DataView]",T=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,P=/^\w*$/,O=/^\./,S=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,j=/\\(\\)?/g,F=/^\[object .+?Constructor\]$/,k=/^(?:0|[1-9]\d*)$/,A={};A["[object Float32Array]"]=A["[object Float64Array]"]=A["[object Int8Array]"]=A["[object Int16Array]"]=A["[object Int32Array]"]=A["[object Uint8Array]"]=A["[object Uint8ClampedArray]"]=A["[object Uint16Array]"]=A["[object Uint32Array]"]=!0,A[u]=A[c]=A[C]=A[f]=A[D]=A[d]=A[p]=A[h]=A[v]=A[m]=A[_]=A[b]=A[y]=A[w]=A["[object WeakMap]"]=!1;var M="object"==typeof V&&V&&V.Object===Object&&V,Y="object"==typeof self&&self&&self.Object===Object&&self,L=M||Y||Function("return this")(),U=e&&!e.nodeType&&e,R=U&&t&&!t.nodeType&&t,E=R&&R.exports===U&&M.process,I=function(){try{return E&&E.binding("util")}catch(t){}}(),N=I&&I.isTypedArray;function $(t,e){for(var n=-1,r=t?t.length:0,o=0,a=[];++n-1},Tt.prototype.set=function(t,e){var n=this.__data__,r=Ft(n,t);return r<0?n.push([t,e]):n[r][1]=e,this},Pt.prototype.clear=function(){this.__data__={hash:new Dt,map:new(ft||Tt),string:new Dt}},Pt.prototype.delete=function(t){return Wt(this,t).delete(t)},Pt.prototype.get=function(t){return Wt(this,t).get(t)},Pt.prototype.has=function(t){return Wt(this,t).has(t)},Pt.prototype.set=function(t,e){return Wt(this,t).set(t,e),this},Ot.prototype.add=Ot.prototype.push=function(t){return this.__data__.set(t,o),this},Ot.prototype.has=function(t){return this.__data__.has(t)},St.prototype.clear=function(){this.__data__=new Tt},St.prototype.delete=function(t){return this.__data__.delete(t)},St.prototype.get=function(t){return this.__data__.get(t)},St.prototype.has=function(t){return this.__data__.has(t)},St.prototype.set=function(t,e){var r=this.__data__;if(r instanceof Tt){var o=r.__data__;if(!ft||o.lengthu))return!1;var f=l.get(t);if(f&&l.get(e))return f==e;var d=-1,p=!0,h=o&a?new Ot:void 0;for(l.set(t,e),l.set(e,t);++d-1&&t%1==0&&t-1&&t%1==0&&t<=s}function le(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function se(t){return!!t&&"object"==typeof t}function ue(t){return"symbol"==typeof t||se(t)&&rt.call(t)==x}var ce=N?function(t){return function(e){return t(e)}}(N):function(t){return se(t)&&ie(t.length)&&!!A[rt.call(t)]};function fe(t){return oe(t)?jt(t):$t(t)}function de(t){return t}t.exports=function(t,e){return(re(t)?$:Yt)(t,Nt(e))}}),K={a:["a","à","á","â","ã","ä","å","æ","ā","ă","ą","ǎ","ǟ","ǡ","ǻ","ȁ","ȃ","ȧ","ɐ","ɑ","ɒ","ͣ","а","ӑ","ӓ","ᵃ","ᵄ","ᶏ","ḁ","ẚ","ạ","ả","ấ","ầ","ẩ","ẫ","ậ","ắ","ằ","ẳ","ẵ","ặ","ₐ","ⱥ","a"],A:["A","À","Á","Â","Ã","Ä","Å","Ā","Ă","Ą","Ǎ","Ǟ","Ǡ","Ǻ","Ȁ","Ȃ","Ȧ","Ⱥ","А","Ӑ","Ӓ","ᴀ","ᴬ","Ḁ","Ạ","Ả","Ấ","Ầ","Ẩ","Ẫ","Ậ","Ắ","Ằ","Ẳ","Ẵ","Ặ","A"],b:["b","ƀ","ƃ","ɓ","ᖯ","ᵇ","ᵬ","ᶀ","ḃ","ḅ","ḇ","b"],B:["B","Ɓ","Ƃ","Ƀ","ʙ","ᛒ","ᴃ","ᴮ","ᴯ","Ḃ","Ḅ","Ḇ","B"],c:["c","ç","ć","ĉ","ċ","č","ƈ","ȼ","ɕ","ͨ","ᴄ","ᶜ","ḉ","ↄ","c"],C:["C","Ç","Ć","Ĉ","Ċ","Č","Ƈ","Ȼ","ʗ","Ḉ","C"],d:["d","ď","đ","Ƌ","ƌ","ȡ","ɖ","ɗ","ͩ","ᵈ","ᵭ","ᶁ","ᶑ","ḋ","ḍ","ḏ","ḑ","ḓ","d"],D:["D","Ď","Đ","Ɖ","Ɗ","ᴰ","Ḋ","Ḍ","Ḏ","Ḑ","Ḓ","D"],e:["e","è","é","ê","ë","ē","ĕ","ė","ę","ě","ǝ","ȅ","ȇ","ȩ","ɇ","ɘ","ͤ","ᵉ","ᶒ","ḕ","ḗ","ḙ","ḛ","ḝ","ẹ","ẻ","ẽ","ế","ề","ể","ễ","ệ","ₑ","e"],E:["E","È","É","Ê","Ë","Ē","Ĕ","Ė","Ę","Ě","Œ","Ǝ","Ɛ","Ȅ","Ȇ","Ȩ","Ɇ","ɛ","ɜ","ɶ","Є","Э","э","є","Ӭ","ӭ","ᴇ","ᴈ","ᴱ","ᴲ","ᵋ","ᵌ","ᶓ","ᶔ","ᶟ","Ḕ","Ḗ","Ḙ","Ḛ","Ḝ","Ẹ","Ẻ","Ẽ","Ế","Ề","Ể","Ễ","Ệ","E","𐐁","𐐩"],f:["f","ƒ","ᵮ","ᶂ","ᶠ","ḟ","f"],F:["F","Ƒ","Ḟ","ⅎ","F"],g:["g","ĝ","ğ","ġ","ģ","ǥ","ǧ","ǵ","ɠ","ɡ","ᵍ","ᵷ","ᵹ","ᶃ","ᶢ","ḡ","g"],G:["G","Ĝ","Ğ","Ġ","Ģ","Ɠ","Ǥ","Ǧ","Ǵ","ɢ","ʛ","ᴳ","Ḡ","G"],h:["h","ĥ","ħ","ƕ","ȟ","ɥ","ɦ","ʮ","ʯ","ʰ","ʱ","ͪ","Һ","һ","ᑋ","ᶣ","ḣ","ḥ","ḧ","ḩ","ḫ","ⱨ","h"],H:["H","Ĥ","Ħ","Ȟ","ʜ","ᕼ","ᚺ","ᚻ","ᴴ","Ḣ","Ḥ","Ḧ","Ḩ","Ḫ","Ⱨ","H"],i:["i","ì","í","î","ï","ĩ","ī","ĭ","į","ǐ","ȉ","ȋ","ɨ","ͥ","ᴉ","ᵎ","ᵢ","ᶖ","ᶤ","ḭ","ḯ","ỉ","ị","i"],I:["I","Ì","Í","Î","Ï","Ĩ","Ī","Ĭ","Į","İ","Ǐ","Ȉ","Ȋ","ɪ","І","ᴵ","ᵻ","ᶦ","ᶧ","Ḭ","Ḯ","Ỉ","Ị","I"],j:["j","ĵ","ǰ","ɉ","ʝ","ʲ","ᶡ","ᶨ","j"],J:["J","Ĵ","ᴊ","ᴶ","J"],k:["k","ķ","ƙ","ǩ","ʞ","ᵏ","ᶄ","ḱ","ḳ","ḵ","ⱪ","k"],K:["K","Ķ","Ƙ","Ǩ","ᴷ","Ḱ","Ḳ","Ḵ","Ⱪ","K"],l:["l","ĺ","ļ","ľ","ŀ","ł","ƚ","ȴ","ɫ","ɬ","ɭ","ˡ","ᶅ","ᶩ","ᶪ","ḷ","ḹ","ḻ","ḽ","ℓ","ⱡ"],L:["L","Ĺ","Ļ","Ľ","Ŀ","Ł","Ƚ","ʟ","ᴌ","ᴸ","ᶫ","Ḷ","Ḹ","Ḻ","Ḽ","Ⱡ","Ɫ"],m:["m","ɯ","ɰ","ɱ","ͫ","ᴟ","ᵐ","ᵚ","ᵯ","ᶆ","ᶬ","ᶭ","ḿ","ṁ","ṃ","㎡","㎥","m"],M:["M","Ɯ","ᴍ","ᴹ","Ḿ","Ṁ","Ṃ","M"],n:["n","ñ","ń","ņ","ň","ʼn","ƞ","ǹ","ȵ","ɲ","ɳ","ᵰ","ᶇ","ᶮ","ᶯ","ṅ","ṇ","ṉ","ṋ","ⁿ","n"],N:["N","Ñ","Ń","Ņ","Ň","Ɲ","Ǹ","Ƞ","ɴ","ᴎ","ᴺ","ᴻ","ᶰ","Ṅ","Ṇ","Ṉ","Ṋ","N"],o:["o","ò","ó","ô","õ","ö","ø","ō","ŏ","ő","ơ","ǒ","ǫ","ǭ","ǿ","ȍ","ȏ","ȫ","ȭ","ȯ","ȱ","ɵ","ͦ","о","ӧ","ө","ᴏ","ᴑ","ᴓ","ᴼ","ᵒ","ᶱ","ṍ","ṏ","ṑ","ṓ","ọ","ỏ","ố","ồ","ổ","ỗ","ộ","ớ","ờ","ở","ỡ","ợ","ₒ","o","𐐬"],O:["O","Ò","Ó","Ô","Õ","Ö","Ø","Ō","Ŏ","Ő","Ɵ","Ơ","Ǒ","Ǫ","Ǭ","Ǿ","Ȍ","Ȏ","Ȫ","Ȭ","Ȯ","Ȱ","О","Ӧ","Ө","Ṍ","Ṏ","Ṑ","Ṓ","Ọ","Ỏ","Ố","Ồ","Ổ","Ỗ","Ộ","Ớ","Ờ","Ở","Ỡ","Ợ","O","𐐄"],p:["p","ᵖ","ᵱ","ᵽ","ᶈ","ṕ","ṗ","p"],P:["P","Ƥ","ᴘ","ᴾ","Ṕ","Ṗ","Ᵽ","P"],q:["q","ɋ","ʠ","ᛩ","q"],Q:["Q","Ɋ","Q"],r:["r","ŕ","ŗ","ř","ȑ","ȓ","ɍ","ɹ","ɻ","ʳ","ʴ","ʵ","ͬ","ᵣ","ᵲ","ᶉ","ṙ","ṛ","ṝ","ṟ"],R:["R","Ŕ","Ŗ","Ř","Ʀ","Ȑ","Ȓ","Ɍ","ʀ","ʁ","ʶ","ᚱ","ᴙ","ᴚ","ᴿ","Ṙ","Ṛ","Ṝ","Ṟ","Ɽ"],s:["s","ś","ŝ","ş","š","ș","ʂ","ᔆ","ᶊ","ṡ","ṣ","ṥ","ṧ","ṩ","s"],S:["S","Ś","Ŝ","Ş","Š","Ș","ȿ","ˢ","ᵴ","Ṡ","Ṣ","Ṥ","Ṧ","Ṩ","S"],t:["t","ţ","ť","ŧ","ƫ","ƭ","ț","ʇ","ͭ","ᵀ","ᵗ","ᵵ","ᶵ","ṫ","ṭ","ṯ","ṱ","ẗ","t"],T:["T","Ţ","Ť","Ƭ","Ʈ","Ț","Ⱦ","ᴛ","ᵀ","Ṫ","Ṭ","Ṯ","Ṱ","T"],u:["u","ù","ú","û","ü","ũ","ū","ŭ","ů","ű","ų","ư","ǔ","ǖ","ǘ","ǚ","ǜ","ȕ","ȗ","ͧ","ߎ","ᵘ","ᵤ","ṳ","ṵ","ṷ","ṹ","ṻ","ụ","ủ","ứ","ừ","ử","ữ","ự","u"],U:["U","Ù","Ú","Û","Ü","Ũ","Ū","Ŭ","Ů","Ű","Ų","Ư","Ǔ","Ǖ","Ǘ","Ǚ","Ǜ","Ȕ","Ȗ","Ʉ","ᴜ","ᵁ","ᵾ","Ṳ","Ṵ","Ṷ","Ṹ","Ṻ","Ụ","Ủ","Ứ","Ừ","Ử","Ữ","Ự","U"],v:["v","ʋ","ͮ","ᵛ","ᵥ","ᶹ","ṽ","ṿ","ⱱ","v","ⱴ"],V:["V","Ʋ","Ʌ","ʌ","ᴠ","ᶌ","Ṽ","Ṿ","V"],w:["w","ŵ","ʷ","ᵂ","ẁ","ẃ","ẅ","ẇ","ẉ","ẘ","ⱳ","w"],W:["W","Ŵ","ʍ","ᴡ","Ẁ","Ẃ","Ẅ","Ẇ","Ẉ","Ⱳ","W"],x:["x","̽","͓","ᶍ","ͯ","ẋ","ẍ","ₓ","x"],X:["X","ˣ","ͯ","Ẋ","Ẍ","☒","✕","✖","✗","✘","X"],y:["y","ý","ÿ","ŷ","ȳ","ɏ","ʸ","ẏ","ỳ","ỵ","ỷ","ỹ","y"],Y:["Y","Ý","Ŷ","Ÿ","Ƴ","ƴ","Ȳ","Ɏ","ʎ","ʏ","Ẏ","Ỳ","Ỵ","Ỷ","Ỹ","Y"],z:["z","ź","ż","ž","ƶ","ȥ","ɀ","ʐ","ʑ","ᙆ","ᙇ","ᶻ","ᶼ","ᶽ","ẑ","ẓ","ẕ","ⱬ","z"],Z:["Z","Ź","Ż","Ž","Ƶ","Ȥ","ᴢ","ᵶ","Ẑ","Ẓ","Ẕ","Ⱬ","Z"]},tt=function(t){for(var e=[],n=0;n-1},compare:function(t,e){function n(t){return void 0===t||null===t?"":t.toLowerCase()}return(t=n(t))<(e=n(e))?-1:t>e?1:0}},nt={name:"VgtPagination",props:{styleClass:{default:"table table-bordered"},total:{default:null},perPage:{},rtl:{default:!1},customRowsPerPageDropdown:{default:function(){return[]}},paginateDropdownAllowAll:{default:!0},nextText:{default:"Next"},prevText:{default:"Prev"},rowsPerPageText:{default:"Rows per page:"},ofText:{default:"of"},allText:{default:"All"}},data:function(){return{currentPage:1,currentPerPage:10,rowsPerPageOptions:[],defaultRowsPerPageDropdown:[10,20,30,40,50]}},watch:{perPage:function(){this.handlePerPage(),this.perPageChanged()},customRowsPerPageDropdown:function(){null!==this.customRowsPerPageDropdown&&Array.isArray(this.customRowsPerPageDropdown)&&0!==this.customRowsPerPageDropdown.lenght&&(this.rowsPerPageOptions=this.customRowsPerPageDropdown)}},computed:{paginatedInfo:function(){if(-1===this.currentPerPage)return"1 - ".concat(this.total," ").concat(this.ofText," ").concat(this.total);var t=(this.currentPage-1)*this.currentPerPage+1?(this.currentPage-1)*this.currentPerPage+1:1;t>this.total&&(t=1,this.currentPage=1);var e=Math.min(this.total,this.currentPerPage*this.currentPage);return"".concat(t," - ").concat(e," ").concat(this.ofText," ").concat(this.total)},nextIsPossible:function(){return this.total>this.currentPerPage*this.currentPage},prevIsPossible:function(){return this.currentPage>1}},methods:{reset:function(){},nextPage:function(){-1!==this.currentPerPage&&this.nextIsPossible&&(++this.currentPage,this.pageChanged())},previousPage:function(){this.currentPage>1&&(--this.currentPage,this.pageChanged())},pageChanged:function(){this.$emit("page-changed",{currentPage:this.currentPage})},perPageChanged:function(t){t&&(this.currentPerPage=parseInt(t.target.value,10)),this.$emit("per-page-changed",{currentPerPage:this.currentPerPage})},getRowsPerPageDropdown:function(){return this.rowsPerPageOptions},handlePerPage:function(){if(this.rowsPerPageOptions=X(this.defaultRowsPerPageDropdown),this.perPage){this.currentPerPage=this.perPage;for(var t=!1,e=0;e0?"in "+r:r+" ago":r},formatLong:(St={LTS:(Ot={LT:"h:mm aa",LTS:"h:mm:ss aa",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY h:mm aa",LLLL:"dddd, MMMM D YYYY h:mm aa"}).LTS,LT:Ot.LT,L:Ot.L,LL:Ot.LL,LLL:Ot.LLL,LLLL:Ot.LLLL,l:Ot.l||Pt(Ot.L),ll:Ot.ll||Pt(Ot.LL),lll:Ot.lll||Pt(Ot.LLL),llll:Ot.llll||Pt(Ot.LLLL)},function(t){return St[t]}),formatRelative:function(t,e,n,r){return jt[t]},localize:{ordinalNumber:function(t,e){var n=Number(t),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},weekday:Ft(At,"long"),weekdays:kt(At,"long"),month:Ft(Mt,"long"),months:kt(Mt,"long"),timeOfDay:Ft(Yt,"long",function(t){return t/12>=1?1:0}),timesOfDay:kt(Yt,"long")},match:{ordinalNumbers:(Rt=/^(\d+)(th|st|nd|rd)?/i,function(t){return String(t).match(Rt)}),ordinalNumber:function(t){return parseInt(t[1],10)},weekdays:Lt({narrow:/^(su|mo|tu|we|th|fr|sa)/i,short:/^(sun|mon|tue|wed|thu|fri|sat)/i,long:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},"long"),weekday:Ut({any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},"any"),months:Lt({short:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,long:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},"long"),month:Ut({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]},"any"),timesOfDay:Lt({short:/^(am|pm)/i,long:/^([ap]\.?\s?m\.?)/i},"long"),timeOfDay:Ut({any:[/^a/i,/^p/i]},"any")},options:{weekStartsOn:0,firstWeekContainsDate:1}},It=864e5;function Nt(t,e){var n=_t(t,e),r=n.getTime();n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0);var o=r-n.getTime();return Math.floor(o/It)+1}function $t(t,e){var n=_t(t,e),r=n.getUTCDay(),o=(r<1?7:0)+r-1;return n.setUTCDate(n.getUTCDate()-o),n.setUTCHours(0,0,0,0),n}function Ht(t,e){var n=_t(t,e),r=n.getUTCFullYear(),o=new Date(0);o.setUTCFullYear(r+1,0,4),o.setUTCHours(0,0,0,0);var a=$t(o,e),i=new Date(0);i.setUTCFullYear(r,0,4),i.setUTCHours(0,0,0,0);var l=$t(i,e);return n.getTime()>=a.getTime()?r+1:n.getTime()>=l.getTime()?r:r-1}function zt(t,e){var n=Ht(t,e),r=new Date(0);return r.setUTCFullYear(n,0,4),r.setUTCHours(0,0,0,0),$t(r,e)}var Wt=6048e5;function Bt(t,e){var n=_t(t,e),r=$t(n,e).getTime()-zt(n,e).getTime();return Math.round(r/Wt)+1}var Gt={M:function(t){return t.getUTCMonth()+1},Mo:function(t,e){var n=t.getUTCMonth()+1;return e.locale.localize.ordinalNumber(n,{unit:"month"})},MM:function(t){return Zt(t.getUTCMonth()+1,2)},MMM:function(t,e){return e.locale.localize.month(t.getUTCMonth(),{type:"short"})},MMMM:function(t,e){return e.locale.localize.month(t.getUTCMonth(),{type:"long"})},Q:function(t){return Math.ceil((t.getUTCMonth()+1)/3)},Qo:function(t,e){var n=Math.ceil((t.getUTCMonth()+1)/3);return e.locale.localize.ordinalNumber(n,{unit:"quarter"})},D:function(t){return t.getUTCDate()},Do:function(t,e){return e.locale.localize.ordinalNumber(t.getUTCDate(),{unit:"dayOfMonth"})},DD:function(t){return Zt(t.getUTCDate(),2)},DDD:function(t){return Nt(t)},DDDo:function(t,e){return e.locale.localize.ordinalNumber(Nt(t),{unit:"dayOfYear"})},DDDD:function(t){return Zt(Nt(t),3)},dd:function(t,e){return e.locale.localize.weekday(t.getUTCDay(),{type:"narrow"})},ddd:function(t,e){return e.locale.localize.weekday(t.getUTCDay(),{type:"short"})},dddd:function(t,e){return e.locale.localize.weekday(t.getUTCDay(),{type:"long"})},d:function(t){return t.getUTCDay()},do:function(t,e){return e.locale.localize.ordinalNumber(t.getUTCDay(),{unit:"dayOfWeek"})},E:function(t){return t.getUTCDay()||7},W:function(t){return Bt(t)},Wo:function(t,e){return e.locale.localize.ordinalNumber(Bt(t),{unit:"isoWeek"})},WW:function(t){return Zt(Bt(t),2)},YY:function(t){return Zt(t.getUTCFullYear(),4).substr(2)},YYYY:function(t){return Zt(t.getUTCFullYear(),4)},GG:function(t){return String(Ht(t)).substr(2)},GGGG:function(t){return Ht(t)},H:function(t){return t.getUTCHours()},HH:function(t){return Zt(t.getUTCHours(),2)},h:function(t){var e=t.getUTCHours();return 0===e?12:e>12?e%12:e},hh:function(t){return Zt(Gt.h(t),2)},m:function(t){return t.getUTCMinutes()},mm:function(t){return Zt(t.getUTCMinutes(),2)},s:function(t){return t.getUTCSeconds()},ss:function(t){return Zt(t.getUTCSeconds(),2)},S:function(t){return Math.floor(t.getUTCMilliseconds()/100)},SS:function(t){return Zt(Math.floor(t.getUTCMilliseconds()/10),2)},SSS:function(t){return Zt(t.getUTCMilliseconds(),3)},Z:function(t,e){return qt((e._originalDate||t).getTimezoneOffset(),":")},ZZ:function(t,e){return qt((e._originalDate||t).getTimezoneOffset())},X:function(t,e){var n=e._originalDate||t;return Math.floor(n.getTime()/1e3)},x:function(t,e){return(e._originalDate||t).getTime()},A:function(t,e){return e.locale.localize.timeOfDay(t.getUTCHours(),{type:"uppercase"})},a:function(t,e){return e.locale.localize.timeOfDay(t.getUTCHours(),{type:"lowercase"})},aa:function(t,e){return e.locale.localize.timeOfDay(t.getUTCHours(),{type:"long"})}};function qt(t,e){e=e||"";var n=t>0?"-":"+",r=Math.abs(t),o=r%60;return n+Zt(Math.floor(r/60),2)+e+Zt(o,2)}function Zt(t,e){for(var n=Math.abs(t).toString();n.length=0&&l<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var s=_t(t,n),u=Number(e),c=s.getUTCDay(),f=((u%7+7)%7=0&&i<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=a.locale||Et,s=l.parsers||{},u=l.units||{};if(!l.match)throw new RangeError("locale must contain match property");if(!l.formatLong)throw new RangeError("locale must contain formatLong property");var c=String(e).replace(ie,function(t){return"["===t[0]?t:"\\"===t[0]?function(t){if(t.match(/\[[\s\S]/))return t.replace(/^\[|]$/g,"");return t.replace(/\\/g,"")}(t):l.formatLong(t)});if(""===c)return""===o?_t(n,a):new Date(NaN);var f=yt(a);f.locale=l;var d,p=c.match(l.parsingTokensRegExp||le),h=p.length,g=[{priority:oe,set:ue,index:0}];for(d=0;d-1},Pt.prototype.set=function(t,e){var n=this.__data__,r=kt(n,t);return r<0?n.push([t,e]):n[r][1]=e,this},Ot.prototype.clear=function(){this.__data__={hash:new Tt,map:new(pt||Pt),string:new Tt}},Ot.prototype.delete=function(t){return Ut(this,t).delete(t)},Ot.prototype.get=function(t){return Ut(this,t).get(t)},Ot.prototype.has=function(t){return Ut(this,t).has(t)},Ot.prototype.set=function(t,e){return Ut(this,t).set(t,e),this},St.prototype.clear=function(){this.__data__=new Pt},St.prototype.delete=function(t){return this.__data__.delete(t)},St.prototype.get=function(t){return this.__data__.get(t)},St.prototype.has=function(t){return this.__data__.has(t)},St.prototype.set=function(t,e){var r=this.__data__;if(r instanceof Pt){var o=r.__data__;if(!pt||o.length-1&&t%1==0&&t-1&&t%1==0&&t<=o}(t.length)&&!qt(t)}var Gt=ct||function(){return!1};function qt(t){var e=Zt(t)?tt.call(t):"";return e==s||e==u}function Zt(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function Vt(t){return Bt(t)?jt(t):function(t){if(!$t(t))return ft(t);var e=[];for(var n in Object(t))K.call(t,n)&&"constructor"!=n&&e.push(n);return e}(t)}t.exports=function(t){return At(t,!1,!0)}}),fe=ce(et);fe.isRight=!0,fe.compare=function(t,e,n){function r(t){return n&&n.dateInputFormat?se("".concat(t),"".concat(n.dateInputFormat),new Date):t}return t=r(t),e=r(e),Ct(t)?Ct(e)?function(t,e,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=_t(t,n),o=_t(e,n),a=r.getTime()-o.getTime();return a<0?-1:a>0?1:a}(t,e):1:-1},fe.format=function(t,e){return void 0===t||null===t?"":Xt(se(t,e.dateInputFormat,new Date),e.dateOutputFormat)};var de=Object.freeze({default:fe}),pe=ce(et);pe.isRight=!0,pe.filterPredicate=function(t,e){return 0===pe.compare(t,e)},pe.compare=function(t,e){function n(t){return void 0===t||null===t?-1/0:t.indexOf(".")>=0?parseFloat(t):parseInt(t,10)}return(t="number"==typeof t?t:n(t))<(e="number"==typeof e?e:n(e))?-1:t>e?1:0};var he=Object.freeze({default:pe}),ge=ce(pe);ge.format=function(t){return void 0===t||null===t?"":parseFloat(Math.round(100*t)/100).toFixed(2)};var ve=Object.freeze({default:ge}),me=ce(pe);me.format=function(t){return void 0===t||null===t?"":"".concat(parseFloat(100*t).toFixed(2),"%")};var _e={},be={date:de,decimal:ve,number:he,percentage:Object.freeze({default:me})};O(Object.keys(be),function(t){var e=t.replace(/^\.\//,"").replace(/\.js/,"");_e[e]=be[t].default});var ye={name:"vue-good-table",props:{theme:{default:""},mode:{default:"local"},totalRows:{},styleClass:{default:"vgt-table bordered"},columns:{},rows:{},lineNumbers:{default:!1},responsive:{default:!0},rtl:{default:!1},rowStyleClass:{default:null,type:[Function,String]},groupOptions:{default:function(){return{enabled:!1}}},selectOptions:{default:function(){return{enabled:!1,selectionInfoClass:"",selectionText:"rows selected",clearSelectionText:"clear"}}},sortOptions:{default:function(){return{enabled:!0,initialSortBy:{}}}},paginationOptions:{default:function(){return{enabled:!1,perPage:10,perPageDropdown:null,position:"bottom",dropdownAllowAll:!0}}},searchOptions:{default:function(){return{enabled:!1,trigger:null,externalQuery:null,searchFn:null,placeholder:"Search Table"}}}},data:function(){return{nextText:"Next",prevText:"Prev",rowsPerPageText:"Rows per page",ofText:"of",allText:"All",selectable:!1,selectionInfoClass:"",selectionText:"rows selected",clearSelectionText:"clear",sortable:!0,defaultSortBy:null,searchEnabled:!1,searchTrigger:null,externalSearchQuery:null,searchFn:null,searchPlaceholder:"Search Table",perPage:null,paginate:!1,paginateOnTop:!1,paginateOnBottom:!0,customRowsPerPageDropdown:[],paginateDropdownAllowAll:!0,currentPage:1,currentPerPage:10,sortColumn:-1,sortType:"asc",globalSearchTerm:"",filteredRows:[],columnFilters:{},forceSearch:!1,sortChanged:!1,dataTypes:_e||{},allSelected:!1}},watch:{rows:{handler:function(){this.filterRows(this.columnFilters,!1)},deep:!0,immediate:!0},selectOptions:{handler:function(){this.initializeSelect()},deep:!0,immediate:!0},paginationOptions:{handler:function(){this.initializePagination()},deep:!0,immediate:!0},searchOptions:{handler:function(){this.initializeSearch()},deep:!0,immediate:!0},sortOptions:{handler:function(){this.initializeSort()},deep:!0,immediate:!0}},computed:{showEmptySlot:function(){return!this.paginated.length||"no groups"===this.paginated[0].label&&!this.paginated[0].children.length},selectionInfo:function(){return"".concat(this.selectedRowCount," ").concat(this.selectionText)},selectedRowCount:function(){return this.selectedRows.length},selectedRows:function(){var t=[];return O(this.processedRows,function(e){O(e.children,function(e){e.vgtSelected&&t.push(e)})}),t},fullColspan:function(){var t=this.columns.length;return this.lineNumbers&&t++,this.selectable&&t++,t},groupHeaderOnTop:function(){return!(this.groupOptions&&this.groupOptions.enabled&&this.groupOptions.headerPosition&&"bottom"===this.groupOptions.headerPosition)&&!(!this.groupOptions||!this.groupOptions.enabled)},groupHeaderOnBottom:function(){return!!(this.groupOptions&&this.groupOptions.enabled&&this.groupOptions.headerPosition&&"bottom"===this.groupOptions.headerPosition)},totalRowCount:function(){var t=0;return O(this.processedRows,function(e){t+=e.children?e.children.length:0}),t},tableStyleClasses:function(){var t=this.styleClass;return t+=" ".concat(this.theme)},searchTerm:function(){return null!=this.externalSearchQuery?this.externalSearchQuery:this.globalSearchTerm},globalSearchAllowed:function(){return!(!this.searchEnabled||!this.globalSearchTerm||"enter"===this.searchTrigger)||(null!=this.externalSearchQuery&&"enter"!==this.searchTrigger||!!this.forceSearch&&(this.forceSearch=!1,!0))},processedRows:function(){var t=this,e=this.filteredRows;if("remote"===this.mode)return e;if(this.globalSearchAllowed){var r=[];O(this.filteredRows,function(t){r.push.apply(r,n(t.children))});var o=[];O(r,function(e){O(t.columns,function(n){if(!n.globalSearchDisabled)if(t.searchFn){if(t.searchFn(e,n,t.collectFormatted(e,n),t.searchTerm))return o.push(e),!1}else{var r=t.collectFormatted(e,n);if(void 0!==r&&null!==r){r=tt(String(r).toLowerCase());var a=tt(t.searchTerm.toLowerCase());if(r.search(a)>-1)return o.push(e),!1}}})}),this.$emit("on-search",{searchTerm:this.searchTerm,rowCount:o.length}),e=[],O(this.filteredRows,function(t){var n=t.vgt_header_id,r=J(o,["vgt_id",n]);if(r.length){var a=X(t);a.children=r,e.push(a)}})}return-1!==this.sortColumn&&this.isSortableColumn(this.sortColumn)&&("enter"!==this.searchTrigger||this.sortChanged)&&(this.sortChanged=!1,O(e,function(e){e.children.sort(function(e,n){if(!t.columns[t.sortColumn])return 0;var r=t.collect(e,t.columns[t.sortColumn].field),o=t.collect(n,t.columns[t.sortColumn].field),a=t.columns[t.sortColumn].sortFn;return a&&"function"==typeof a?a(r,o,t.columns[t.sortColumn],e,n)*("desc"===t.sortType?-1:1):t.typedColumns[t.sortColumn].typeDef.compare(r,o,t.columns[t.sortColumn])*("desc"===t.sortType?-1:1)})})),"enter"===this.searchTrigger&&(this.filteredRows=e),e},paginated:function(){if(!this.processedRows.length)return[];if("remote"===this.mode)return this.processedRows;var t=[];if(O(this.processedRows,function(e){var r;(r=t).push.apply(r,n(e.children))}),this.paginate){var e=(this.currentPage-1)*this.currentPerPage;(e>=t.length||-1===this.currentPerPage)&&(this.currentPage=1,e=0);var r=t.length+1;-1!==this.currentPerPage&&(r=this.currentPage*this.currentPerPage),t=t.slice(e,r)}var o=[];return O(this.processedRows,function(e){var n=e.vgt_header_id,r=J(t,["vgt_id",n]);if(r.length){var a=X(e);a.children=r,o.push(a)}}),o},originalRows:function(){var t=X(this.rows),e=[];e=this.groupOptions.enabled?this.handleGrouped(t):this.handleGrouped([{label:"no groups",children:t}]);var n=0;return O(e,function(t,e){O(t.children,function(t,e){t.originalIndex=n++})}),e},typedColumns:function(){for(var t=Z(this.columns,[]),e=0;e2&&void 0!==arguments[2]&&arguments[2]&&e.headerField?this.collect(t,e.headerField):this.collect(t,e.field)))return"";if(e.formatFn&&"function"==typeof e.formatFn)return e.formatFn(n);var r=e.typeDef;return r||(r=this.dataTypes[e.type]||et),r.format(n,e)},formattedRow:function(t){for(var e={},n=0;n1&&void 0!==arguments[1])||arguments[1];this.columnFilters=t;var r=X(this.originalRows);if(this.columnFilters&&Object.keys(this.columnFilters).length){if(this.changePage(1),this.unselectAll(),"remote"===this.mode&&n)return void this.$emit("on-column-filter",{columnFilters:this.columnFilters});for(var o=function(t){var n=e.typedColumns[t];e.columnFilters[n.field]&&(r=O(r,function(t){var r=t.children.filter(function(t){return n.filterOptions&&"function"==typeof n.filterOptions.filterFn?n.filterOptions.filterFn(e.collect(t,n.field),e.columnFilters[n.field]):n.typeDef.filterPredicate(e.collect(t,n.field),e.columnFilters[n.field])});t.children=r}))},a=0;a-1:t.allSelected},on:{change:[function(e){var n=t.allSelected,r=e.target,o=!!r.checked;if(Array.isArray(n)){var a=t._i(n,null);r.checked?a<0&&(t.allSelected=n.concat([null])):a>-1&&(t.allSelected=n.slice(0,a).concat(n.slice(a+1)))}else t.allSelected=o},t.toggleSelectAll]}})]):t._e(),t._v(" "),t._l(t.columns,function(e,r){return e.hidden?t._e():n("th",{key:r,class:t.getHeaderClasses(e,r),style:{width:e.width?e.width:"auto"},on:{click:function(e){t.sort(r)}}},[t._t("table-column",[n("span",[t._v(t._s(e.label))])],{column:e})],2)})],2),t._v(" "),n("vgt-filter-row",{tag:"tr",attrs:{"global-search-enabled":t.searchEnabled,"line-numbers":t.lineNumbers,selectable:t.selectable,columns:t.columns,mode:t.mode,"typed-columns":t.typedColumns},on:{"filter-changed":t.filterRows}})]),t._v(" "),t._l(t.paginated,function(e,r){return n("tbody",{key:r},[t.groupHeaderOnTop?n("tr",["span"===e.mode?n("th",{staticClass:"vgt-left-align vgt-row-header",attrs:{colspan:t.fullColspan}},[t._v("\n "+t._s(e.label)+"\n ")]):t._e(),t._v(" "),"span"!==e.mode&&t.lineNumbers?n("th",{staticClass:"vgt-row-header"}):t._e(),t._v(" "),"span"!==e.mode&&t.selectable?n("th",{staticClass:"vgt-row-header"}):t._e(),t._v(" "),t._l(t.columns,function(r,o){return"span"!==e.mode?n("th",{key:o,staticClass:"vgt-row-header",class:t.getClasses(o,"td")},[t._v("\n "+t._s(t.collectFormatted(e,r,!0))+"\n ")]):t._e()})],2):t._e(),t._v(" "),t._l(e.children,function(e,r){return n("tr",{key:e.originalIndex,class:t.getRowStyleClass(e),on:{mouseenter:function(n){t.onMouseenter(e,r)},mouseleave:function(n){t.onMouseleave(e,r)},click:function(n){t.click(e,r)}}},[t.lineNumbers?n("th",{staticClass:"line-numbers"},[t._v("\n "+t._s(t.getCurrentIndex(r))+"\n ")]):t._e(),t._v(" "),t.selectable?n("th",{staticClass:"vgt-checkbox-col"},[n("input",{directives:[{name:"model",rawName:"v-model",value:e.vgtSelected,expression:"row.vgtSelected"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.vgtSelected)?t._i(e.vgtSelected,null)>-1:e.vgtSelected},on:{change:function(n){var r=e.vgtSelected,o=n.target,a=!!o.checked;if(Array.isArray(r)){var i=t._i(r,null);o.checked?i<0&&t.$set(e,"vgtSelected",r.concat([null])):i>-1&&t.$set(e,"vgtSelected",r.slice(0,i).concat(r.slice(i+1)))}else t.$set(e,"vgtSelected",a)}}})]):t._e(),t._v(" "),t._l(t.columns,function(o,a){return!o.hidden&&o.field?n("td",{key:a,class:t.getClasses(a,"td"),on:{click:function(n){t.onCellClicked(e,o,r)}}},[t._t("table-row",[o.html?t._e():n("span",[t._v("\n "+t._s(t.collectFormatted(e,o))+"\n ")]),t._v(" "),o.html?n("span",{domProps:{innerHTML:t._s(t.collect(e,o.field))}}):t._e()],{row:e,column:o,formattedRow:t.formattedRow(e),index:r})],2):t._e()})],2)}),t._v(" "),t.groupHeaderOnBottom?n("tr",["span"===e.mode?n("th",{staticClass:"vgt-left-align vgt-row-header",attrs:{colspan:t.columns.length}},[t._v("\n "+t._s(e.label)+"\n ")]):t._e(),t._v(" "),"span"!==e.mode&&t.lineNumbers?n("th",{staticClass:"vgt-row-header"}):t._e(),t._v(" "),"span"!==e.mode&&t.selectable?n("th",{staticClass:"vgt-row-header"}):t._e(),t._v(" "),t._l(t.columns,function(r,o){return"span"!==e.mode?n("th",{key:o,staticClass:"vgt-row-header",class:t.getClasses(o,"td")},[t._v("\n "+t._s(t.collectFormatted(e,r,!0))+"\n ")]):t._e()})],2):t._e()],2)}),t._v(" "),t.showEmptySlot?n("tbody",[n("tr",[n("td",{attrs:{colspan:t.fullColspan}},[t._t("emptystate",[n("div",{staticClass:"vgt-center-align vgt-text-disabled"},[t._v("\n No data for table\n ")])])],2)])]):t._e()],2)]),t._v(" "),t.paginate&&t.paginateOnBottom?n("vgt-pagination",{ref:"paginationBottom",attrs:{perPage:t.perPage,rtl:t.rtl,total:t.totalRows||t.totalRowCount,nextText:t.nextText,prevText:t.prevText,rowsPerPageText:t.rowsPerPageText,customRowsPerPageDropdown:t.customRowsPerPageDropdown,paginateDropdownAllowAll:t.paginateDropdownAllowAll,ofText:t.ofText,allText:t.allText},on:{"page-changed":t.pageChanged,"per-page-changed":t.perPageChanged}}):t._e()],1)};we._withStripped=!0;function xe(){var t=document.head||document.getElementsByTagName("head")[0],e=xe.styles||(xe.styles={}),n="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());return function(r,o){if(!document.querySelector('style[data-vue-ssr-id~="'+r+'"]')){var a=n?o.media||"default":r,i=e[a]||(e[a]={ids:[],parts:[],element:void 0});if(!i.ids.includes(r)){var l=o.source,s=i.ids.length;if(i.ids.push(r),n&&(i.element=i.element||document.querySelector("style[data-group="+a+"]")),!i.element){var u=i.element=document.createElement("style");u.type="text/css",o.media&&u.setAttribute("media",o.media),n&&(u.setAttribute("data-group",a),u.setAttribute("data-next-index","0")),t.appendChild(u)}if(n&&(s=parseInt(i.element.getAttribute("data-next-index")),i.element.setAttribute("data-next-index",s+1)),i.element.styleSheet)i.parts.push(l),i.element.styleSheet.cssText=i.parts.filter(Boolean).join("\n");else{var c=document.createTextNode(l),f=i.element.childNodes;f[s]&&i.element.removeChild(f[s]),f.length?i.element.insertBefore(c,f[s]):i.element.appendChild(c)}}}}}var Ce=function(t,e,n,r,o,a,i,l){var s,u=n||{};if(u.__file="/Users/akshay/Projects/learn/vue/plugins/vue-good-table/src/components/Table.vue",u.render||(u.render=t.render,u.staticRenderFns=t.staticRenderFns,u._compiled=!0,o&&(u.functional=!0)),u._scopeId=r,e&&(s=function(t){e.call(this,i(t))}),void 0!==s)if(u.functional){var c=u.render;u.render=function(t,e){return s.call(e),c(t,e)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,s):[s]}return u}({render:we,staticRenderFns:[]},function(t){t&&t("data-v-126ce30e_0",{source:"/* Utility styles\n************************************************/\n.vgt-right-align {\n text-align: right;\n}\n.vgt-left-align {\n text-align: left;\n}\n.vgt-center-align {\n text-align: center;\n}\n.vgt-pull-left {\n float: left !important;\n}\n.vgt-pull-right {\n float: right !important;\n}\n.vgt-clearfix::after {\n display: block;\n content: \"\";\n clear: both;\n}\n.vgt-responsive {\n width: 100%;\n overflow-x: auto;\n}\n.vgt-text-disabled {\n color: #909399;\n}\ntable.vgt-table {\n border-collapse: collapse;\n background-color: transparent;\n width: 100%;\n max-width: 100%;\n table-layout: auto;\n border: 1px solid #DCDFE6;\n}\ntable.vgt-table td {\n padding: .75rem .75rem .75rem .75rem;\n vertical-align: top;\n border-bottom: 1px solid #DCDFE6;\n color: #606266;\n}\ntable.vgt-table tr.clickable {\n cursor: pointer;\n}\ntable.vgt-table tr.clickable:hover {\n background-color: #F1F5FD;\n}\n.vgt-table th {\n padding: .75rem 1.5rem .75rem .75rem;\n vertical-align: middle;\n}\n.vgt-table th.sorting:hover:after {\n display: inline-block;\n border-bottom-color: #73b8ff;\n}\n.vgt-table th.line-numbers, .vgt-table th.vgt-checkbox-col {\n padding: 0 .75rem 0 .75rem;\n color: #606266;\n border-right: 1px solid #DCDFE6;\n word-wrap: break-word;\n width: 25px;\n text-align: center;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table th.filter-th {\n padding: .75rem .75rem .75rem .75rem;\n}\n.vgt-table th.vgt-row-header {\n border-bottom: 2px solid #DCDFE6;\n border-top: 2px solid #DCDFE6;\n background-color: #fafafb;\n}\n.vgt-table thead th {\n color: #606266;\n vertical-align: bottom;\n border-bottom: 1px solid #DCDFE6;\n padding-right: 1.5rem;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table thead th.vgt-checkbox-col {\n vertical-align: middle;\n}\n.vgt-table thead th.sorting-asc, .vgt-table thead th.sorting-desc {\n color: #3b3c3f;\n position: relative;\n background-clip: padding-box;\n}\n.vgt-table thead th.sorting-asc:after, .vgt-table thead th.sorting-desc:after {\n content: '';\n display: block;\n position: absolute;\n height: 0px;\n width: 0px;\n right: 6px;\n top: 50%;\n margin-top: -3px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #409eff;\n}\n.vgt-table thead th.sorting-desc:after {\n border-top: 6px solid #409eff;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: none;\n}\n.vgt-input, .vgt-select {\n width: 100%;\n height: 32px;\n line-height: 1;\n display: block;\n font-size: 14px;\n font-weight: regular;\n padding: 6px 12px;\n color: #606266;\n border-radius: 4px;\n box-sizing: border-box;\n background-image: none;\n background-color: #fff;\n border: 1px solid #DCDFE6;\n transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.vgt-input::placeholder, .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #606266;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-input:focus, .vgt-select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-table.bordered td, .vgt-table.bordered th {\n border: 1px solid #DCDFE6;\n}\n.vgt-table.bordered th.vgt-row-header {\n border-bottom: 3px solid #DCDFE6;\n}\n.vgt-table.striped tbody tr:nth-of-type(odd) {\n background-color: rgba(51, 68, 109, 0.03);\n}\n.vgt-wrap.rtl {\n direction: rtl;\n}\n.vgt-wrap.rtl .vgt-table td, .vgt-wrap.rtl .vgt-table th:not(.line-numbers) {\n padding: .75rem .75rem .75rem 1.5rem;\n}\n.vgt-wrap.rtl .vgt-table thead th, .vgt-wrap.rtl .vgt-table.condensed thead th {\n padding-left: 1.5rem;\n padding-right: .75rem;\n}\n.vgt-wrap.rtl .vgt-table th.sorting:after,\n .vgt-wrap.rtl .vgt-table th.sorting-asc:after {\n margin-right: 5px;\n margin-left: 0px;\n}\n.vgt-table.condensed td, .vgt-table.condensed th.vgt-row-header {\n padding: .4rem .4rem .4rem .4rem;\n}\n.vgt-global-search {\n padding: 5px 0px;\n display: flex;\n flex-wrap: no-wrap;\n align-items: stretch;\n border: 1px solid #DCDFE6;\n border-bottom: 0px;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-global-search__input {\n position: relative;\n padding-left: 40px;\n flex-grow: 1;\n}\n.vgt-global-search__input .input__icon {\n position: absolute;\n left: 0px;\n max-width: 32px;\n}\n.vgt-global-search__input .input__icon .magnifying-glass {\n margin-top: 3px;\n margin-left: 8px;\n display: block;\n width: 16px;\n height: 16px;\n border: 2px solid #d6dae2;\n position: relative;\n border-radius: 50%;\n}\n.vgt-global-search__input .input__icon .magnifying-glass:before {\n content: \"\";\n display: block;\n position: absolute;\n right: -7px;\n bottom: -5px;\n background: #d6dae2;\n width: 8px;\n height: 4px;\n border-radius: 2px;\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n}\n.vgt-global-search__actions {\n margin-left: 10px;\n}\n.vgt-selection-info-row {\n background: #fdf9e8;\n padding: 5px 16px;\n font-size: 13px;\n border-top: 1px solid #DCDFE6;\n border-left: 1px solid #DCDFE6;\n border-right: 1px solid #DCDFE6;\n color: #d3aa3b;\n font-weight: bold;\n}\n.vgt-selection-info-row a {\n font-weight: bold;\n display: inline-block;\n margin-left: 10px;\n}\n.vgt-wrap__footer {\n color: #606266;\n padding: 1rem;\n border: 1px solid #DCDFE6;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-wrap__footer .footer__row-count__label, .vgt-wrap__footer .footer__row-count__select {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__row-count__label {\n font-size: 14px;\n color: #909399;\n}\n.vgt-wrap__footer .footer__row-count__select {\n background-color: transparent;\n width: auto;\n padding: 0;\n border: 0;\n border-radius: 0;\n height: auto;\n font-size: 14px;\n margin-left: 8px;\n color: #606266;\n font-weight: bold;\n}\n.vgt-wrap__footer .footer__row-count__select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-wrap__footer .footer__navigation {\n font-size: 14px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn, .vgt-wrap__footer .footer__navigation__info {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n text-decoration: none;\n color: #606266;\n font-weight: bold;\n white-space: nowrap;\n}\n.vgt-wrap__footer .footer__navigation__page-btn:focus {\n outline: none;\n border: 0;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron {\n width: 24px;\n height: 24px;\n border-radius: 15%;\n position: relative;\n margin: 0px 8px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron:after {\n content: '';\n position: absolute;\n display: block;\n left: 50%;\n top: 50%;\n margin-top: -6px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.left::after {\n border-right: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.right::after {\n border-left: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__info {\n color: #909399;\n margin: 0px 16px;\n}\n@media only screen and (max-width: 750px) {\n /* on small screens hide the info */\n.vgt-wrap__footer .footer__navigation__info {\n display: none;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n margin-left: 16px;\n}\n}\n.vgt-table.nocturnal {\n border: 1px solid #435169;\n background-color: #324057;\n}\n.vgt-table.nocturnal tr.clickable:hover {\n background-color: #445168;\n}\n.vgt-table.nocturnal td {\n border-bottom: 1px solid #435169;\n color: #C7CED8;\n}\n.vgt-table.nocturnal th.line-numbers {\n color: #C7CED8;\n border-right: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th {\n color: #C7CED8;\n border-bottom: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th.sorting-asc, .vgt-table.nocturnal thead th.sorting-desc {\n color: #9aa7b9;\n}\n.vgt-table.nocturnal.bordered td, .vgt-table.nocturnal.bordered th {\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input, .vgt-table.nocturnal .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input::placeholder, .vgt-table.nocturnal .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer {\n color: #C7CED8;\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__label {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select:focus {\n border-color: #409eff;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__info {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-global-search {\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass {\n border: 2px solid #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass:before {\n background: #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input::placeholder, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n\n/*# sourceMappingURL=Table.vue.map */",map:void 0,media:void 0})},void 0===ye?{}:ye,void 0,!1,0,xe,"undefined"!=typeof __vue_create_injector_ssr__&&__vue_create_injector_ssr__),De={install:function(t,e){t.component(Ce.name,Ce)}};"undefined"!=typeof window&&window.Vue&&window.Vue.use(De),t.default=De,t.GoodTable=Ce,Object.defineProperty(t,"__esModule",{value:!0})}); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.vueGoodTable={})}(this,function(t){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function n(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e-1&&t%1==0&&t-1&&t%1==0&&t<=r}(t.length)&&!function(t){var e=function(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}(t)?p.call(t):"";return e==a||e==i}(t)}function T(t){return D(t)?v(t):w(t)}function P(t){return t}var O=function(t,e){return(C(t)?s:b)(t,"function"==typeof e?e:P)},S=9007199254740991,j="[object Arguments]",F="[object Function]",k="[object GeneratorFunction]",A=/^(?:0|[1-9]\d*)$/;var M=Object.prototype,L=M.hasOwnProperty,Y=M.toString,U=M.propertyIsEnumerable,E=function(t,e){return function(n){return t(e(n))}}(Object.keys,Object),R=Math.max,I=!U.call({valueOf:1},"valueOf");function N(t,e){var n=B(t)||function(t){return function(t){return function(t){return!!t&&"object"==typeof t}(t)&&G(t)}(t)&&L.call(t,"callee")&&(!U.call(t,"callee")||Y.call(t)==j)}(t)?function(t,e){for(var n=-1,r=Array(t);++n-1&&t%1==0&&t-1&&t%1==0&&t<=S}(t.length)&&!function(t){var e=q(t)?Y.call(t):"";return e==F||e==k}(t)}function q(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}var Z=function(t){return e=function(e,n){var r=-1,o=n.length,a=o>1?n[o-1]:void 0,i=o>2?n[2]:void 0;for(a=t.length>3&&"function"==typeof a?(o--,a):void 0,i&&function(t,e,n){if(!q(n))return!1;var r=typeof e;return!!("number"==r?G(n)&&z(e,n.length):"string"==r&&e in n)&&W(n[e],t)}(n[0],n[1],i)&&(a=o<3?void 0:a,o=1),e=Object(e);++r-1},Pt.prototype.set=function(t,e){var n=this.__data__,r=kt(n,t);return r<0?n.push([t,e]):n[r][1]=e,this},Ot.prototype.clear=function(){this.__data__={hash:new Tt,map:new(pt||Pt),string:new Tt}},Ot.prototype.delete=function(t){return Ut(this,t).delete(t)},Ot.prototype.get=function(t){return Ut(this,t).get(t)},Ot.prototype.has=function(t){return Ut(this,t).has(t)},Ot.prototype.set=function(t,e){return Ut(this,t).set(t,e),this},St.prototype.clear=function(){this.__data__=new Pt},St.prototype.delete=function(t){return this.__data__.delete(t)},St.prototype.get=function(t){return this.__data__.get(t)},St.prototype.has=function(t){return this.__data__.has(t)},St.prototype.set=function(t,e){var r=this.__data__;if(r instanceof Pt){var o=r.__data__;if(!pt||o.length-1&&t%1==0&&t-1&&t%1==0&&t<=o}(t.length)&&!qt(t)}var Gt=ct||function(){return!1};function qt(t){var e=Zt(t)?tt.call(t):"";return e==s||e==u}function Zt(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function Vt(t){return Bt(t)?jt(t):function(t){if(!$t(t))return ft(t);var e=[];for(var n in Object(t))K.call(t,n)&&"constructor"!=n&&e.push(n);return e}(t)}t.exports=function(t){return At(t,!0,!0)}}),J=Q(function(t,e){var n=200,r="Expected a function",o="__lodash_hash_undefined__",a=1,i=2,l=1/0,s=9007199254740991,u="[object Arguments]",c="[object Array]",f="[object Boolean]",d="[object Date]",p="[object Error]",h="[object Function]",g="[object GeneratorFunction]",v="[object Map]",m="[object Number]",_="[object Object]",b="[object RegExp]",y="[object Set]",w="[object String]",x="[object Symbol]",C="[object ArrayBuffer]",D="[object DataView]",T=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,P=/^\w*$/,O=/^\./,S=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,j=/\\(\\)?/g,F=/^\[object .+?Constructor\]$/,k=/^(?:0|[1-9]\d*)$/,A={};A["[object Float32Array]"]=A["[object Float64Array]"]=A["[object Int8Array]"]=A["[object Int16Array]"]=A["[object Int32Array]"]=A["[object Uint8Array]"]=A["[object Uint8ClampedArray]"]=A["[object Uint16Array]"]=A["[object Uint32Array]"]=!0,A[u]=A[c]=A[C]=A[f]=A[D]=A[d]=A[p]=A[h]=A[v]=A[m]=A[_]=A[b]=A[y]=A[w]=A["[object WeakMap]"]=!1;var M="object"==typeof V&&V&&V.Object===Object&&V,L="object"==typeof self&&self&&self.Object===Object&&self,Y=M||L||Function("return this")(),U=e&&!e.nodeType&&e,E=U&&t&&!t.nodeType&&t,R=E&&E.exports===U&&M.process,I=function(){try{return R&&R.binding("util")}catch(t){}}(),N=I&&I.isTypedArray;function $(t,e){for(var n=-1,r=t?t.length:0,o=0,a=[];++n-1},Tt.prototype.set=function(t,e){var n=this.__data__,r=Ft(n,t);return r<0?n.push([t,e]):n[r][1]=e,this},Pt.prototype.clear=function(){this.__data__={hash:new Dt,map:new(ft||Tt),string:new Dt}},Pt.prototype.delete=function(t){return Wt(this,t).delete(t)},Pt.prototype.get=function(t){return Wt(this,t).get(t)},Pt.prototype.has=function(t){return Wt(this,t).has(t)},Pt.prototype.set=function(t,e){return Wt(this,t).set(t,e),this},Ot.prototype.add=Ot.prototype.push=function(t){return this.__data__.set(t,o),this},Ot.prototype.has=function(t){return this.__data__.has(t)},St.prototype.clear=function(){this.__data__=new Tt},St.prototype.delete=function(t){return this.__data__.delete(t)},St.prototype.get=function(t){return this.__data__.get(t)},St.prototype.has=function(t){return this.__data__.has(t)},St.prototype.set=function(t,e){var r=this.__data__;if(r instanceof Tt){var o=r.__data__;if(!ft||o.lengthu))return!1;var f=l.get(t);if(f&&l.get(e))return f==e;var d=-1,p=!0,h=o&a?new Ot:void 0;for(l.set(t,e),l.set(e,t);++d-1&&t%1==0&&t-1&&t%1==0&&t<=s}function le(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function se(t){return!!t&&"object"==typeof t}function ue(t){return"symbol"==typeof t||se(t)&&rt.call(t)==x}var ce=N?function(t){return function(e){return t(e)}}(N):function(t){return se(t)&&ie(t.length)&&!!A[rt.call(t)]};function fe(t){return oe(t)?jt(t):$t(t)}function de(t){return t}t.exports=function(t,e){return(re(t)?$:Lt)(t,Nt(e))}}),K={a:["a","à","á","â","ã","ä","å","æ","ā","ă","ą","ǎ","ǟ","ǡ","ǻ","ȁ","ȃ","ȧ","ɐ","ɑ","ɒ","ͣ","а","ӑ","ӓ","ᵃ","ᵄ","ᶏ","ḁ","ẚ","ạ","ả","ấ","ầ","ẩ","ẫ","ậ","ắ","ằ","ẳ","ẵ","ặ","ₐ","ⱥ","a"],A:["A","À","Á","Â","Ã","Ä","Å","Ā","Ă","Ą","Ǎ","Ǟ","Ǡ","Ǻ","Ȁ","Ȃ","Ȧ","Ⱥ","А","Ӑ","Ӓ","ᴀ","ᴬ","Ḁ","Ạ","Ả","Ấ","Ầ","Ẩ","Ẫ","Ậ","Ắ","Ằ","Ẳ","Ẵ","Ặ","A"],b:["b","ƀ","ƃ","ɓ","ᖯ","ᵇ","ᵬ","ᶀ","ḃ","ḅ","ḇ","b"],B:["B","Ɓ","Ƃ","Ƀ","ʙ","ᛒ","ᴃ","ᴮ","ᴯ","Ḃ","Ḅ","Ḇ","B"],c:["c","ç","ć","ĉ","ċ","č","ƈ","ȼ","ɕ","ͨ","ᴄ","ᶜ","ḉ","ↄ","c"],C:["C","Ç","Ć","Ĉ","Ċ","Č","Ƈ","Ȼ","ʗ","Ḉ","C"],d:["d","ď","đ","Ƌ","ƌ","ȡ","ɖ","ɗ","ͩ","ᵈ","ᵭ","ᶁ","ᶑ","ḋ","ḍ","ḏ","ḑ","ḓ","d"],D:["D","Ď","Đ","Ɖ","Ɗ","ᴰ","Ḋ","Ḍ","Ḏ","Ḑ","Ḓ","D"],e:["e","è","é","ê","ë","ē","ĕ","ė","ę","ě","ǝ","ȅ","ȇ","ȩ","ɇ","ɘ","ͤ","ᵉ","ᶒ","ḕ","ḗ","ḙ","ḛ","ḝ","ẹ","ẻ","ẽ","ế","ề","ể","ễ","ệ","ₑ","e"],E:["E","È","É","Ê","Ë","Ē","Ĕ","Ė","Ę","Ě","Œ","Ǝ","Ɛ","Ȅ","Ȇ","Ȩ","Ɇ","ɛ","ɜ","ɶ","Є","Э","э","є","Ӭ","ӭ","ᴇ","ᴈ","ᴱ","ᴲ","ᵋ","ᵌ","ᶓ","ᶔ","ᶟ","Ḕ","Ḗ","Ḙ","Ḛ","Ḝ","Ẹ","Ẻ","Ẽ","Ế","Ề","Ể","Ễ","Ệ","E","𐐁","𐐩"],f:["f","ƒ","ᵮ","ᶂ","ᶠ","ḟ","f"],F:["F","Ƒ","Ḟ","ⅎ","F"],g:["g","ĝ","ğ","ġ","ģ","ǥ","ǧ","ǵ","ɠ","ɡ","ᵍ","ᵷ","ᵹ","ᶃ","ᶢ","ḡ","g"],G:["G","Ĝ","Ğ","Ġ","Ģ","Ɠ","Ǥ","Ǧ","Ǵ","ɢ","ʛ","ᴳ","Ḡ","G"],h:["h","ĥ","ħ","ƕ","ȟ","ɥ","ɦ","ʮ","ʯ","ʰ","ʱ","ͪ","Һ","һ","ᑋ","ᶣ","ḣ","ḥ","ḧ","ḩ","ḫ","ⱨ","h"],H:["H","Ĥ","Ħ","Ȟ","ʜ","ᕼ","ᚺ","ᚻ","ᴴ","Ḣ","Ḥ","Ḧ","Ḩ","Ḫ","Ⱨ","H"],i:["i","ì","í","î","ï","ĩ","ī","ĭ","į","ǐ","ȉ","ȋ","ɨ","ͥ","ᴉ","ᵎ","ᵢ","ᶖ","ᶤ","ḭ","ḯ","ỉ","ị","i"],I:["I","Ì","Í","Î","Ï","Ĩ","Ī","Ĭ","Į","İ","Ǐ","Ȉ","Ȋ","ɪ","І","ᴵ","ᵻ","ᶦ","ᶧ","Ḭ","Ḯ","Ỉ","Ị","I"],j:["j","ĵ","ǰ","ɉ","ʝ","ʲ","ᶡ","ᶨ","j"],J:["J","Ĵ","ᴊ","ᴶ","J"],k:["k","ķ","ƙ","ǩ","ʞ","ᵏ","ᶄ","ḱ","ḳ","ḵ","ⱪ","k"],K:["K","Ķ","Ƙ","Ǩ","ᴷ","Ḱ","Ḳ","Ḵ","Ⱪ","K"],l:["l","ĺ","ļ","ľ","ŀ","ł","ƚ","ȴ","ɫ","ɬ","ɭ","ˡ","ᶅ","ᶩ","ᶪ","ḷ","ḹ","ḻ","ḽ","ℓ","ⱡ"],L:["L","Ĺ","Ļ","Ľ","Ŀ","Ł","Ƚ","ʟ","ᴌ","ᴸ","ᶫ","Ḷ","Ḹ","Ḻ","Ḽ","Ⱡ","Ɫ"],m:["m","ɯ","ɰ","ɱ","ͫ","ᴟ","ᵐ","ᵚ","ᵯ","ᶆ","ᶬ","ᶭ","ḿ","ṁ","ṃ","㎡","㎥","m"],M:["M","Ɯ","ᴍ","ᴹ","Ḿ","Ṁ","Ṃ","M"],n:["n","ñ","ń","ņ","ň","ʼn","ƞ","ǹ","ȵ","ɲ","ɳ","ᵰ","ᶇ","ᶮ","ᶯ","ṅ","ṇ","ṉ","ṋ","ⁿ","n"],N:["N","Ñ","Ń","Ņ","Ň","Ɲ","Ǹ","Ƞ","ɴ","ᴎ","ᴺ","ᴻ","ᶰ","Ṅ","Ṇ","Ṉ","Ṋ","N"],o:["o","ò","ó","ô","õ","ö","ø","ō","ŏ","ő","ơ","ǒ","ǫ","ǭ","ǿ","ȍ","ȏ","ȫ","ȭ","ȯ","ȱ","ɵ","ͦ","о","ӧ","ө","ᴏ","ᴑ","ᴓ","ᴼ","ᵒ","ᶱ","ṍ","ṏ","ṑ","ṓ","ọ","ỏ","ố","ồ","ổ","ỗ","ộ","ớ","ờ","ở","ỡ","ợ","ₒ","o","𐐬"],O:["O","Ò","Ó","Ô","Õ","Ö","Ø","Ō","Ŏ","Ő","Ɵ","Ơ","Ǒ","Ǫ","Ǭ","Ǿ","Ȍ","Ȏ","Ȫ","Ȭ","Ȯ","Ȱ","О","Ӧ","Ө","Ṍ","Ṏ","Ṑ","Ṓ","Ọ","Ỏ","Ố","Ồ","Ổ","Ỗ","Ộ","Ớ","Ờ","Ở","Ỡ","Ợ","O","𐐄"],p:["p","ᵖ","ᵱ","ᵽ","ᶈ","ṕ","ṗ","p"],P:["P","Ƥ","ᴘ","ᴾ","Ṕ","Ṗ","Ᵽ","P"],q:["q","ɋ","ʠ","ᛩ","q"],Q:["Q","Ɋ","Q"],r:["r","ŕ","ŗ","ř","ȑ","ȓ","ɍ","ɹ","ɻ","ʳ","ʴ","ʵ","ͬ","ᵣ","ᵲ","ᶉ","ṙ","ṛ","ṝ","ṟ"],R:["R","Ŕ","Ŗ","Ř","Ʀ","Ȑ","Ȓ","Ɍ","ʀ","ʁ","ʶ","ᚱ","ᴙ","ᴚ","ᴿ","Ṙ","Ṛ","Ṝ","Ṟ","Ɽ"],s:["s","ś","ŝ","ş","š","ș","ʂ","ᔆ","ᶊ","ṡ","ṣ","ṥ","ṧ","ṩ","s"],S:["S","Ś","Ŝ","Ş","Š","Ș","ȿ","ˢ","ᵴ","Ṡ","Ṣ","Ṥ","Ṧ","Ṩ","S"],t:["t","ţ","ť","ŧ","ƫ","ƭ","ț","ʇ","ͭ","ᵀ","ᵗ","ᵵ","ᶵ","ṫ","ṭ","ṯ","ṱ","ẗ","t"],T:["T","Ţ","Ť","Ƭ","Ʈ","Ț","Ⱦ","ᴛ","ᵀ","Ṫ","Ṭ","Ṯ","Ṱ","T"],u:["u","ù","ú","û","ü","ũ","ū","ŭ","ů","ű","ų","ư","ǔ","ǖ","ǘ","ǚ","ǜ","ȕ","ȗ","ͧ","ߎ","ᵘ","ᵤ","ṳ","ṵ","ṷ","ṹ","ṻ","ụ","ủ","ứ","ừ","ử","ữ","ự","u"],U:["U","Ù","Ú","Û","Ü","Ũ","Ū","Ŭ","Ů","Ű","Ų","Ư","Ǔ","Ǖ","Ǘ","Ǚ","Ǜ","Ȕ","Ȗ","Ʉ","ᴜ","ᵁ","ᵾ","Ṳ","Ṵ","Ṷ","Ṹ","Ṻ","Ụ","Ủ","Ứ","Ừ","Ử","Ữ","Ự","U"],v:["v","ʋ","ͮ","ᵛ","ᵥ","ᶹ","ṽ","ṿ","ⱱ","v","ⱴ"],V:["V","Ʋ","Ʌ","ʌ","ᴠ","ᶌ","Ṽ","Ṿ","V"],w:["w","ŵ","ʷ","ᵂ","ẁ","ẃ","ẅ","ẇ","ẉ","ẘ","ⱳ","w"],W:["W","Ŵ","ʍ","ᴡ","Ẁ","Ẃ","Ẅ","Ẇ","Ẉ","Ⱳ","W"],x:["x","̽","͓","ᶍ","ͯ","ẋ","ẍ","ₓ","x"],X:["X","ˣ","ͯ","Ẋ","Ẍ","☒","✕","✖","✗","✘","X"],y:["y","ý","ÿ","ŷ","ȳ","ɏ","ʸ","ẏ","ỳ","ỵ","ỷ","ỹ","y"],Y:["Y","Ý","Ŷ","Ÿ","Ƴ","ƴ","Ȳ","Ɏ","ʎ","ʏ","Ẏ","Ỳ","Ỵ","Ỷ","Ỹ","Y"],z:["z","ź","ż","ž","ƶ","ȥ","ɀ","ʐ","ʑ","ᙆ","ᙇ","ᶻ","ᶼ","ᶽ","ẑ","ẓ","ẕ","ⱬ","z"],Z:["Z","Ź","Ż","Ž","Ƶ","Ȥ","ᴢ","ᵶ","Ẑ","Ẓ","Ẕ","Ⱬ","Z"]},tt=function(t){for(var e=[],n=0;n-1},compare:function(t,e){function n(t){return void 0===t||null===t?"":t.toLowerCase()}return(t=n(t))<(e=n(e))?-1:t>e?1:0}},nt={name:"VgtPagination",props:{styleClass:{default:"table table-bordered"},total:{default:null},perPage:{},rtl:{default:!1},customRowsPerPageDropdown:{default:function(){return[]}},paginateDropdownAllowAll:{default:!0},nextText:{default:"Next"},prevText:{default:"Prev"},rowsPerPageText:{default:"Rows per page:"},ofText:{default:"of"},allText:{default:"All"}},data:function(){return{currentPage:1,currentPerPage:10,rowsPerPageOptions:[],defaultRowsPerPageDropdown:[10,20,30,40,50]}},watch:{perPage:function(){this.handlePerPage(),this.perPageChanged()},customRowsPerPageDropdown:function(){null!==this.customRowsPerPageDropdown&&Array.isArray(this.customRowsPerPageDropdown)&&0!==this.customRowsPerPageDropdown.lenght&&(this.rowsPerPageOptions=this.customRowsPerPageDropdown)}},computed:{paginatedInfo:function(){if(-1===this.currentPerPage)return"1 - ".concat(this.total," ").concat(this.ofText," ").concat(this.total);var t=(this.currentPage-1)*this.currentPerPage+1?(this.currentPage-1)*this.currentPerPage+1:1;t>this.total&&(t=1,this.currentPage=1);var e=Math.min(this.total,this.currentPerPage*this.currentPage);return"".concat(t," - ").concat(e," ").concat(this.ofText," ").concat(this.total)},nextIsPossible:function(){return this.total>this.currentPerPage*this.currentPage},prevIsPossible:function(){return this.currentPage>1}},methods:{reset:function(){},nextPage:function(){-1!==this.currentPerPage&&this.nextIsPossible&&(++this.currentPage,this.pageChanged())},previousPage:function(){this.currentPage>1&&(--this.currentPage,this.pageChanged())},pageChanged:function(){this.$emit("page-changed",{currentPage:this.currentPage})},perPageChanged:function(t){t&&(this.currentPerPage=parseInt(t.target.value,10)),this.$emit("per-page-changed",{currentPerPage:this.currentPerPage})},getRowsPerPageDropdown:function(){return this.rowsPerPageOptions},handlePerPage:function(){if(this.rowsPerPageOptions=X(this.defaultRowsPerPageDropdown),this.perPage){this.currentPerPage=this.perPage;for(var t=!1,e=0;e0?"in "+r:r+" ago":r},formatLong:(St={LTS:(Ot={LT:"h:mm aa",LTS:"h:mm:ss aa",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY h:mm aa",LLLL:"dddd, MMMM D YYYY h:mm aa"}).LTS,LT:Ot.LT,L:Ot.L,LL:Ot.LL,LLL:Ot.LLL,LLLL:Ot.LLLL,l:Ot.l||Pt(Ot.L),ll:Ot.ll||Pt(Ot.LL),lll:Ot.lll||Pt(Ot.LLL),llll:Ot.llll||Pt(Ot.LLLL)},function(t){return St[t]}),formatRelative:function(t,e,n,r){return jt[t]},localize:{ordinalNumber:function(t,e){var n=Number(t),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},weekday:Ft(At,"long"),weekdays:kt(At,"long"),month:Ft(Mt,"long"),months:kt(Mt,"long"),timeOfDay:Ft(Lt,"long",function(t){return t/12>=1?1:0}),timesOfDay:kt(Lt,"long")},match:{ordinalNumbers:(Et=/^(\d+)(th|st|nd|rd)?/i,function(t){return String(t).match(Et)}),ordinalNumber:function(t){return parseInt(t[1],10)},weekdays:Yt({narrow:/^(su|mo|tu|we|th|fr|sa)/i,short:/^(sun|mon|tue|wed|thu|fri|sat)/i,long:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},"long"),weekday:Ut({any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},"any"),months:Yt({short:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,long:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},"long"),month:Ut({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]},"any"),timesOfDay:Yt({short:/^(am|pm)/i,long:/^([ap]\.?\s?m\.?)/i},"long"),timeOfDay:Ut({any:[/^a/i,/^p/i]},"any")},options:{weekStartsOn:0,firstWeekContainsDate:1}},It=864e5;function Nt(t,e){var n=_t(t,e),r=n.getTime();n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0);var o=r-n.getTime();return Math.floor(o/It)+1}function $t(t,e){var n=_t(t,e),r=n.getUTCDay(),o=(r<1?7:0)+r-1;return n.setUTCDate(n.getUTCDate()-o),n.setUTCHours(0,0,0,0),n}function zt(t,e){var n=_t(t,e),r=n.getUTCFullYear(),o=new Date(0);o.setUTCFullYear(r+1,0,4),o.setUTCHours(0,0,0,0);var a=$t(o,e),i=new Date(0);i.setUTCFullYear(r,0,4),i.setUTCHours(0,0,0,0);var l=$t(i,e);return n.getTime()>=a.getTime()?r+1:n.getTime()>=l.getTime()?r:r-1}function Ht(t,e){var n=zt(t,e),r=new Date(0);return r.setUTCFullYear(n,0,4),r.setUTCHours(0,0,0,0),$t(r,e)}var Wt=6048e5;function Bt(t,e){var n=_t(t,e),r=$t(n,e).getTime()-Ht(n,e).getTime();return Math.round(r/Wt)+1}var Gt={M:function(t){return t.getUTCMonth()+1},Mo:function(t,e){var n=t.getUTCMonth()+1;return e.locale.localize.ordinalNumber(n,{unit:"month"})},MM:function(t){return Zt(t.getUTCMonth()+1,2)},MMM:function(t,e){return e.locale.localize.month(t.getUTCMonth(),{type:"short"})},MMMM:function(t,e){return e.locale.localize.month(t.getUTCMonth(),{type:"long"})},Q:function(t){return Math.ceil((t.getUTCMonth()+1)/3)},Qo:function(t,e){var n=Math.ceil((t.getUTCMonth()+1)/3);return e.locale.localize.ordinalNumber(n,{unit:"quarter"})},D:function(t){return t.getUTCDate()},Do:function(t,e){return e.locale.localize.ordinalNumber(t.getUTCDate(),{unit:"dayOfMonth"})},DD:function(t){return Zt(t.getUTCDate(),2)},DDD:function(t){return Nt(t)},DDDo:function(t,e){return e.locale.localize.ordinalNumber(Nt(t),{unit:"dayOfYear"})},DDDD:function(t){return Zt(Nt(t),3)},dd:function(t,e){return e.locale.localize.weekday(t.getUTCDay(),{type:"narrow"})},ddd:function(t,e){return e.locale.localize.weekday(t.getUTCDay(),{type:"short"})},dddd:function(t,e){return e.locale.localize.weekday(t.getUTCDay(),{type:"long"})},d:function(t){return t.getUTCDay()},do:function(t,e){return e.locale.localize.ordinalNumber(t.getUTCDay(),{unit:"dayOfWeek"})},E:function(t){return t.getUTCDay()||7},W:function(t){return Bt(t)},Wo:function(t,e){return e.locale.localize.ordinalNumber(Bt(t),{unit:"isoWeek"})},WW:function(t){return Zt(Bt(t),2)},YY:function(t){return Zt(t.getUTCFullYear(),4).substr(2)},YYYY:function(t){return Zt(t.getUTCFullYear(),4)},GG:function(t){return String(zt(t)).substr(2)},GGGG:function(t){return zt(t)},H:function(t){return t.getUTCHours()},HH:function(t){return Zt(t.getUTCHours(),2)},h:function(t){var e=t.getUTCHours();return 0===e?12:e>12?e%12:e},hh:function(t){return Zt(Gt.h(t),2)},m:function(t){return t.getUTCMinutes()},mm:function(t){return Zt(t.getUTCMinutes(),2)},s:function(t){return t.getUTCSeconds()},ss:function(t){return Zt(t.getUTCSeconds(),2)},S:function(t){return Math.floor(t.getUTCMilliseconds()/100)},SS:function(t){return Zt(Math.floor(t.getUTCMilliseconds()/10),2)},SSS:function(t){return Zt(t.getUTCMilliseconds(),3)},Z:function(t,e){return qt((e._originalDate||t).getTimezoneOffset(),":")},ZZ:function(t,e){return qt((e._originalDate||t).getTimezoneOffset())},X:function(t,e){var n=e._originalDate||t;return Math.floor(n.getTime()/1e3)},x:function(t,e){return(e._originalDate||t).getTime()},A:function(t,e){return e.locale.localize.timeOfDay(t.getUTCHours(),{type:"uppercase"})},a:function(t,e){return e.locale.localize.timeOfDay(t.getUTCHours(),{type:"lowercase"})},aa:function(t,e){return e.locale.localize.timeOfDay(t.getUTCHours(),{type:"long"})}};function qt(t,e){e=e||"";var n=t>0?"-":"+",r=Math.abs(t),o=r%60;return n+Zt(Math.floor(r/60),2)+e+Zt(o,2)}function Zt(t,e){for(var n=Math.abs(t).toString();n.length=0&&l<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var s=_t(t,n),u=Number(e),c=s.getUTCDay(),f=((u%7+7)%7=0&&i<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=a.locale||Rt,s=l.parsers||{},u=l.units||{};if(!l.match)throw new RangeError("locale must contain match property");if(!l.formatLong)throw new RangeError("locale must contain formatLong property");var c=String(e).replace(ie,function(t){return"["===t[0]?t:"\\"===t[0]?function(t){if(t.match(/\[[\s\S]/))return t.replace(/^\[|]$/g,"");return t.replace(/\\/g,"")}(t):l.formatLong(t)});if(""===c)return""===o?_t(n,a):new Date(NaN);var f=yt(a);f.locale=l;var d,p=c.match(l.parsingTokensRegExp||le),h=p.length,g=[{priority:oe,set:ue,index:0}];for(d=0;d-1},Pt.prototype.set=function(t,e){var n=this.__data__,r=kt(n,t);return r<0?n.push([t,e]):n[r][1]=e,this},Ot.prototype.clear=function(){this.__data__={hash:new Tt,map:new(pt||Pt),string:new Tt}},Ot.prototype.delete=function(t){return Ut(this,t).delete(t)},Ot.prototype.get=function(t){return Ut(this,t).get(t)},Ot.prototype.has=function(t){return Ut(this,t).has(t)},Ot.prototype.set=function(t,e){return Ut(this,t).set(t,e),this},St.prototype.clear=function(){this.__data__=new Pt},St.prototype.delete=function(t){return this.__data__.delete(t)},St.prototype.get=function(t){return this.__data__.get(t)},St.prototype.has=function(t){return this.__data__.has(t)},St.prototype.set=function(t,e){var r=this.__data__;if(r instanceof Pt){var o=r.__data__;if(!pt||o.length-1&&t%1==0&&t-1&&t%1==0&&t<=o}(t.length)&&!qt(t)}var Gt=ct||function(){return!1};function qt(t){var e=Zt(t)?tt.call(t):"";return e==s||e==u}function Zt(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function Vt(t){return Bt(t)?jt(t):function(t){if(!$t(t))return ft(t);var e=[];for(var n in Object(t))K.call(t,n)&&"constructor"!=n&&e.push(n);return e}(t)}t.exports=function(t){return At(t,!1,!0)}}),fe=ce(et);fe.isRight=!0,fe.compare=function(t,e,n){function r(t){return n&&n.dateInputFormat?se("".concat(t),"".concat(n.dateInputFormat),new Date):t}return t=r(t),e=r(e),Ct(t)?Ct(e)?function(t,e,n){if(arguments.length<2)throw new TypeError("2 arguments required, but only "+arguments.length+" present");var r=_t(t,n),o=_t(e,n),a=r.getTime()-o.getTime();return a<0?-1:a>0?1:a}(t,e):1:-1},fe.format=function(t,e){return void 0===t||null===t?"":Xt(se(t,e.dateInputFormat,new Date),e.dateOutputFormat)};var de=Object.freeze({default:fe}),pe=ce(et);pe.isRight=!0,pe.filterPredicate=function(t,e){return 0===pe.compare(t,e)},pe.compare=function(t,e){function n(t){return void 0===t||null===t?-1/0:t.indexOf(".")>=0?parseFloat(t):parseInt(t,10)}return(t="number"==typeof t?t:n(t))<(e="number"==typeof e?e:n(e))?-1:t>e?1:0};var he=Object.freeze({default:pe}),ge=ce(pe);ge.format=function(t){return void 0===t||null===t?"":parseFloat(Math.round(100*t)/100).toFixed(2)};var ve=Object.freeze({default:ge}),me=ce(pe);me.format=function(t){return void 0===t||null===t?"":"".concat(parseFloat(100*t).toFixed(2),"%")};var _e={},be={date:de,decimal:ve,number:he,percentage:Object.freeze({default:me})};O(Object.keys(be),function(t){var e=t.replace(/^\.\//,"").replace(/\.js/,"");_e[e]=be[t].default});var ye={name:"vue-good-table",props:{isLoading:{default:!1,type:Boolean},theme:{default:""},mode:{default:"local"},totalRows:{},styleClass:{default:"vgt-table bordered"},columns:{},rows:{},lineNumbers:{default:!1},responsive:{default:!0},rtl:{default:!1},rowStyleClass:{default:null,type:[Function,String]},groupOptions:{default:function(){return{enabled:!1}}},selectOptions:{default:function(){return{enabled:!1,selectionInfoClass:"",selectionText:"rows selected",clearSelectionText:"clear"}}},sortOptions:{default:function(){return{enabled:!0,initialSortBy:{}}}},paginationOptions:{default:function(){return{enabled:!1,perPage:10,perPageDropdown:null,position:"bottom",dropdownAllowAll:!0}}},searchOptions:{default:function(){return{enabled:!1,trigger:null,externalQuery:null,searchFn:null,placeholder:"Search Table"}}}},data:function(){return{tableLoading:!1,nextText:"Next",prevText:"Prev",rowsPerPageText:"Rows per page",ofText:"of",allText:"All",selectable:!1,selectionInfoClass:"",selectionText:"rows selected",clearSelectionText:"clear",sortable:!0,defaultSortBy:null,searchEnabled:!1,searchTrigger:null,externalSearchQuery:null,searchFn:null,searchPlaceholder:"Search Table",perPage:null,paginate:!1,paginateOnTop:!1,paginateOnBottom:!0,customRowsPerPageDropdown:[],paginateDropdownAllowAll:!0,currentPage:1,currentPerPage:10,sortColumn:-1,sortType:"asc",globalSearchTerm:"",filteredRows:[],columnFilters:{},forceSearch:!1,sortChanged:!1,dataTypes:_e||{},allSelected:!1}},watch:{rows:{handler:function(){this.tableLoading=!1,this.filterRows(this.columnFilters,!1)},deep:!0,immediate:!0},selectOptions:{handler:function(){this.initializeSelect()},deep:!0,immediate:!0},paginationOptions:{handler:function(){this.initializePagination()},deep:!0,immediate:!0},searchOptions:{handler:function(){this.initializeSearch()},deep:!0,immediate:!0},sortOptions:{handler:function(){this.initializeSort()},deep:!0,immediate:!0}},computed:{isTableLoading:function(){return this.isLoading||this.tableLoading},showEmptySlot:function(){return!this.paginated.length||"no groups"===this.paginated[0].label&&!this.paginated[0].children.length},selectionInfo:function(){return"".concat(this.selectedRowCount," ").concat(this.selectionText)},selectedRowCount:function(){return this.selectedRows.length},selectedRows:function(){var t=[];return O(this.processedRows,function(e){O(e.children,function(e){e.vgtSelected&&t.push(e)})}),t},fullColspan:function(){var t=this.columns.length;return this.lineNumbers&&t++,this.selectable&&t++,t},groupHeaderOnTop:function(){return!(this.groupOptions&&this.groupOptions.enabled&&this.groupOptions.headerPosition&&"bottom"===this.groupOptions.headerPosition)&&!(!this.groupOptions||!this.groupOptions.enabled)},groupHeaderOnBottom:function(){return!!(this.groupOptions&&this.groupOptions.enabled&&this.groupOptions.headerPosition&&"bottom"===this.groupOptions.headerPosition)},totalRowCount:function(){var t=0;return O(this.processedRows,function(e){t+=e.children?e.children.length:0}),t},tableStyleClasses:function(){var t=this.styleClass;return t+=" ".concat(this.theme)},searchTerm:function(){return null!=this.externalSearchQuery?this.externalSearchQuery:this.globalSearchTerm},globalSearchAllowed:function(){return!(!this.searchEnabled||!this.globalSearchTerm||"enter"===this.searchTrigger)||(null!=this.externalSearchQuery&&"enter"!==this.searchTrigger||!!this.forceSearch&&(this.forceSearch=!1,!0))},processedRows:function(){var t=this,e=this.filteredRows;if("remote"===this.mode)return e;if(this.globalSearchAllowed){var r=[];O(this.filteredRows,function(t){r.push.apply(r,n(t.children))});var o=[];O(r,function(e){O(t.columns,function(n){if(!n.globalSearchDisabled)if(t.searchFn){if(t.searchFn(e,n,t.collectFormatted(e,n),t.searchTerm))return o.push(e),!1}else{var r=t.collectFormatted(e,n);if(void 0!==r&&null!==r){r=tt(String(r).toLowerCase());var a=tt(t.searchTerm.toLowerCase());if(r.search(a)>-1)return o.push(e),!1}}})}),this.$emit("on-search",{searchTerm:this.searchTerm,rowCount:o.length}),e=[],O(this.filteredRows,function(t){var n=t.vgt_header_id,r=J(o,["vgt_id",n]);if(r.length){var a=X(t);a.children=r,e.push(a)}})}return-1!==this.sortColumn&&this.isSortableColumn(this.sortColumn)&&("enter"!==this.searchTrigger||this.sortChanged)&&(this.sortChanged=!1,O(e,function(e){e.children.sort(function(e,n){if(!t.columns[t.sortColumn])return 0;var r=t.collect(e,t.columns[t.sortColumn].field),o=t.collect(n,t.columns[t.sortColumn].field),a=t.columns[t.sortColumn].sortFn;return a&&"function"==typeof a?a(r,o,t.columns[t.sortColumn],e,n)*("desc"===t.sortType?-1:1):t.typedColumns[t.sortColumn].typeDef.compare(r,o,t.columns[t.sortColumn])*("desc"===t.sortType?-1:1)})})),"enter"===this.searchTrigger&&(this.filteredRows=e),e},paginated:function(){if(!this.processedRows.length)return[];if("remote"===this.mode)return this.processedRows;var t=[];if(O(this.processedRows,function(e){var r;(r=t).push.apply(r,n(e.children))}),this.paginate){var e=(this.currentPage-1)*this.currentPerPage;(e>=t.length||-1===this.currentPerPage)&&(this.currentPage=1,e=0);var r=t.length+1;-1!==this.currentPerPage&&(r=this.currentPage*this.currentPerPage),t=t.slice(e,r)}var o=[];return O(this.processedRows,function(e){var n=e.vgt_header_id,r=J(t,["vgt_id",n]);if(r.length){var a=X(e);a.children=r,o.push(a)}}),o},originalRows:function(){var t=X(this.rows),e=[];e=this.groupOptions.enabled?this.handleGrouped(t):this.handleGrouped([{label:"no groups",children:t}]);var n=0;return O(e,function(t,e){O(t.children,function(t,e){t.originalIndex=n++})}),e},typedColumns:function(){for(var t=Z(this.columns,[]),e=0;e2&&void 0!==arguments[2]&&arguments[2]&&e.headerField?this.collect(t,e.headerField):this.collect(t,e.field)))return"";if(e.formatFn&&"function"==typeof e.formatFn)return e.formatFn(n);var r=e.typeDef;return r||(r=this.dataTypes[e.type]||et),r.format(n,e)},formattedRow:function(t){for(var e={},n=0;n1&&void 0!==arguments[1])||arguments[1];this.columnFilters=t;var r=X(this.originalRows);if(this.columnFilters&&Object.keys(this.columnFilters).length){if(this.changePage(1),this.unselectAll(),n&&this.$emit("on-column-filter",{columnFilters:this.columnFilters}),"remote"===this.mode&&n)return void(this.tableLoading=!0);for(var o=function(t){var n=e.typedColumns[t];e.columnFilters[n.field]&&(r=O(r,function(t){var r=t.children.filter(function(t){return n.filterOptions&&"function"==typeof n.filterOptions.filterFn?n.filterOptions.filterFn(e.collect(t,n.field),e.columnFilters[n.field]):n.typeDef.filterPredicate(e.collect(t,n.field),e.columnFilters[n.field])});t.children=r}))},a=0;a-1:t.allSelected},on:{change:[function(e){var n=t.allSelected,r=e.target,o=!!r.checked;if(Array.isArray(n)){var a=t._i(n,null);r.checked?a<0&&(t.allSelected=n.concat([null])):a>-1&&(t.allSelected=n.slice(0,a).concat(n.slice(a+1)))}else t.allSelected=o},t.toggleSelectAll]}})]):t._e(),t._v(" "),t._l(t.columns,function(e,r){return e.hidden?t._e():n("th",{key:r,class:t.getHeaderClasses(e,r),style:{width:e.width?e.width:"auto"},on:{click:function(e){t.sort(r)}}},[t._t("table-column",[n("span",[t._v(t._s(e.label))])],{column:e})],2)})],2),t._v(" "),n("vgt-filter-row",{tag:"tr",attrs:{"global-search-enabled":t.searchEnabled,"line-numbers":t.lineNumbers,selectable:t.selectable,columns:t.columns,mode:t.mode,"typed-columns":t.typedColumns},on:{"filter-changed":t.filterRows}})]),t._v(" "),t._l(t.paginated,function(e,r){return n("tbody",{key:r},[t.groupHeaderOnTop?n("tr",["span"===e.mode?n("th",{staticClass:"vgt-left-align vgt-row-header",attrs:{colspan:t.fullColspan}},[t._v("\n "+t._s(e.label)+"\n ")]):t._e(),t._v(" "),"span"!==e.mode&&t.lineNumbers?n("th",{staticClass:"vgt-row-header"}):t._e(),t._v(" "),"span"!==e.mode&&t.selectable?n("th",{staticClass:"vgt-row-header"}):t._e(),t._v(" "),t._l(t.columns,function(r,o){return"span"!==e.mode?n("th",{key:o,staticClass:"vgt-row-header",class:t.getClasses(o,"td")},[t._v("\n "+t._s(t.collectFormatted(e,r,!0))+"\n ")]):t._e()})],2):t._e(),t._v(" "),t._l(e.children,function(e,r){return n("tr",{key:e.originalIndex,class:t.getRowStyleClass(e),on:{mouseenter:function(n){t.onMouseenter(e,r)},mouseleave:function(n){t.onMouseleave(e,r)},click:function(n){t.click(e,r)}}},[t.lineNumbers?n("th",{staticClass:"line-numbers"},[t._v("\n "+t._s(t.getCurrentIndex(r))+"\n ")]):t._e(),t._v(" "),t.selectable?n("th",{staticClass:"vgt-checkbox-col"},[n("input",{directives:[{name:"model",rawName:"v-model",value:e.vgtSelected,expression:"row.vgtSelected"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.vgtSelected)?t._i(e.vgtSelected,null)>-1:e.vgtSelected},on:{change:function(n){var r=e.vgtSelected,o=n.target,a=!!o.checked;if(Array.isArray(r)){var i=t._i(r,null);o.checked?i<0&&t.$set(e,"vgtSelected",r.concat([null])):i>-1&&t.$set(e,"vgtSelected",r.slice(0,i).concat(r.slice(i+1)))}else t.$set(e,"vgtSelected",a)}}})]):t._e(),t._v(" "),t._l(t.columns,function(o,a){return!o.hidden&&o.field?n("td",{key:a,class:t.getClasses(a,"td"),on:{click:function(n){t.onCellClicked(e,o,r)}}},[t._t("table-row",[o.html?t._e():n("span",[t._v("\n "+t._s(t.collectFormatted(e,o))+"\n ")]),t._v(" "),o.html?n("span",{domProps:{innerHTML:t._s(t.collect(e,o.field))}}):t._e()],{row:e,column:o,formattedRow:t.formattedRow(e),index:r})],2):t._e()})],2)}),t._v(" "),t.groupHeaderOnBottom?n("tr",["span"===e.mode?n("th",{staticClass:"vgt-left-align vgt-row-header",attrs:{colspan:t.columns.length}},[t._v("\n "+t._s(e.label)+"\n ")]):t._e(),t._v(" "),"span"!==e.mode&&t.lineNumbers?n("th",{staticClass:"vgt-row-header"}):t._e(),t._v(" "),"span"!==e.mode&&t.selectable?n("th",{staticClass:"vgt-row-header"}):t._e(),t._v(" "),t._l(t.columns,function(r,o){return"span"!==e.mode?n("th",{key:o,staticClass:"vgt-row-header",class:t.getClasses(o,"td")},[t._v("\n "+t._s(t.collectFormatted(e,r,!0))+"\n ")]):t._e()})],2):t._e()],2)}),t._v(" "),t.showEmptySlot?n("tbody",[n("tr",[n("td",{attrs:{colspan:t.fullColspan}},[t._t("emptystate",[n("div",{staticClass:"vgt-center-align vgt-text-disabled"},[t._v("\n No data for table\n ")])])],2)])]):t._e()],2)]),t._v(" "),t.paginate&&t.paginateOnBottom?n("vgt-pagination",{ref:"paginationBottom",attrs:{perPage:t.perPage,rtl:t.rtl,total:t.totalRows||t.totalRowCount,nextText:t.nextText,prevText:t.prevText,rowsPerPageText:t.rowsPerPageText,customRowsPerPageDropdown:t.customRowsPerPageDropdown,paginateDropdownAllowAll:t.paginateDropdownAllowAll,ofText:t.ofText,allText:t.allText},on:{"page-changed":t.pageChanged,"per-page-changed":t.perPageChanged}}):t._e()],1)])};we._withStripped=!0;function xe(){var t=document.head||document.getElementsByTagName("head")[0],e=xe.styles||(xe.styles={}),n="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());return function(r,o){if(!document.querySelector('style[data-vue-ssr-id~="'+r+'"]')){var a=n?o.media||"default":r,i=e[a]||(e[a]={ids:[],parts:[],element:void 0});if(!i.ids.includes(r)){var l=o.source,s=i.ids.length;if(i.ids.push(r),n&&(i.element=i.element||document.querySelector("style[data-group="+a+"]")),!i.element){var u=i.element=document.createElement("style");u.type="text/css",o.media&&u.setAttribute("media",o.media),n&&(u.setAttribute("data-group",a),u.setAttribute("data-next-index","0")),t.appendChild(u)}if(n&&(s=parseInt(i.element.getAttribute("data-next-index")),i.element.setAttribute("data-next-index",s+1)),i.element.styleSheet)i.parts.push(l),i.element.styleSheet.cssText=i.parts.filter(Boolean).join("\n");else{var c=document.createTextNode(l),f=i.element.childNodes;f[s]&&i.element.removeChild(f[s]),f.length?i.element.insertBefore(c,f[s]):i.element.appendChild(c)}}}}}var Ce=function(t,e,n,r,o,a,i,l){var s,u=n||{};if(u.__file="/Users/akshay/Projects/learn/vue/plugins/vue-good-table/src/components/Table.vue",u.render||(u.render=t.render,u.staticRenderFns=t.staticRenderFns,u._compiled=!0,o&&(u.functional=!0)),u._scopeId=r,e&&(s=function(t){e.call(this,i(t))}),void 0!==s)if(u.functional){var c=u.render;u.render=function(t,e){return s.call(e),c(t,e)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,s):[s]}return u}({render:we,staticRenderFns:[]},function(t){t&&t("data-v-2617cab9_0",{source:"/* Utility styles\n************************************************/\n.vgt-right-align {\n text-align: right;\n}\n.vgt-left-align {\n text-align: left;\n}\n.vgt-center-align {\n text-align: center;\n}\n.vgt-pull-left {\n float: left !important;\n}\n.vgt-pull-right {\n float: right !important;\n}\n.vgt-clearfix::after {\n display: block;\n content: \"\";\n clear: both;\n}\n.vgt-responsive {\n width: 100%;\n overflow-x: auto;\n}\n.vgt-text-disabled {\n color: #909399;\n}\n.vgt-wrap {\n position: relative;\n}\ntable.vgt-table {\n border-collapse: collapse;\n background-color: transparent;\n width: 100%;\n max-width: 100%;\n table-layout: auto;\n border: 1px solid #DCDFE6;\n}\ntable.vgt-table td {\n padding: .75rem .75rem .75rem .75rem;\n vertical-align: top;\n border-bottom: 1px solid #DCDFE6;\n color: #606266;\n}\ntable.vgt-table tr.clickable {\n cursor: pointer;\n}\ntable.vgt-table tr.clickable:hover {\n background-color: #F1F5FD;\n}\n.vgt-table th {\n padding: .75rem 1.5rem .75rem .75rem;\n vertical-align: middle;\n}\n.vgt-table th.sorting:hover:after {\n display: inline-block;\n border-bottom-color: #73b8ff;\n}\n.vgt-table th.line-numbers, .vgt-table th.vgt-checkbox-col {\n padding: 0 .75rem 0 .75rem;\n color: #606266;\n border-right: 1px solid #DCDFE6;\n word-wrap: break-word;\n width: 25px;\n text-align: center;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table th.filter-th {\n padding: .75rem .75rem .75rem .75rem;\n}\n.vgt-table th.vgt-row-header {\n border-bottom: 2px solid #DCDFE6;\n border-top: 2px solid #DCDFE6;\n background-color: #fafafb;\n}\n.vgt-table thead th {\n color: #606266;\n vertical-align: bottom;\n border-bottom: 1px solid #DCDFE6;\n padding-right: 1.5rem;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-table thead th.vgt-checkbox-col {\n vertical-align: middle;\n}\n.vgt-table thead th.sorting-asc, .vgt-table thead th.sorting-desc {\n color: #3b3c3f;\n position: relative;\n background-clip: padding-box;\n}\n.vgt-table thead th.sorting-asc:after, .vgt-table thead th.sorting-desc:after {\n content: '';\n display: block;\n position: absolute;\n height: 0px;\n width: 0px;\n right: 6px;\n top: 50%;\n margin-top: -3px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #409eff;\n}\n.vgt-table thead th.sorting-desc:after {\n border-top: 6px solid #409eff;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: none;\n}\n.vgt-input, .vgt-select {\n width: 100%;\n height: 32px;\n line-height: 1;\n display: block;\n font-size: 14px;\n font-weight: regular;\n padding: 6px 12px;\n color: #606266;\n border-radius: 4px;\n box-sizing: border-box;\n background-image: none;\n background-color: #fff;\n border: 1px solid #DCDFE6;\n transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.vgt-input::placeholder, .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #606266;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-input:focus, .vgt-select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-loading {\n position: absolute;\n width: 100%;\n z-index: 10;\n margin-top: 117px;\n}\n.vgt-loading__content {\n background-color: #c0dfff;\n color: #409eff;\n padding: 7px 30px;\n border-radius: 3px;\n}\n.vgt-inner-wrap.is-loading {\n opacity: 0.3;\n pointer-events: none;\n}\n.vgt-table.bordered td, .vgt-table.bordered th {\n border: 1px solid #DCDFE6;\n}\n.vgt-table.bordered th.vgt-row-header {\n border-bottom: 3px solid #DCDFE6;\n}\n.vgt-table.striped tbody tr:nth-of-type(odd) {\n background-color: rgba(51, 68, 109, 0.03);\n}\n.vgt-wrap.rtl {\n direction: rtl;\n}\n.vgt-wrap.rtl .vgt-table td, .vgt-wrap.rtl .vgt-table th:not(.line-numbers) {\n padding: .75rem .75rem .75rem 1.5rem;\n}\n.vgt-wrap.rtl .vgt-table thead th, .vgt-wrap.rtl .vgt-table.condensed thead th {\n padding-left: 1.5rem;\n padding-right: .75rem;\n}\n.vgt-wrap.rtl .vgt-table th.sorting:after,\n .vgt-wrap.rtl .vgt-table th.sorting-asc:after {\n margin-right: 5px;\n margin-left: 0px;\n}\n.vgt-table.condensed td, .vgt-table.condensed th.vgt-row-header {\n padding: .4rem .4rem .4rem .4rem;\n}\n.vgt-global-search {\n padding: 5px 0px;\n display: flex;\n flex-wrap: no-wrap;\n align-items: stretch;\n border: 1px solid #DCDFE6;\n border-bottom: 0px;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-global-search__input {\n position: relative;\n padding-left: 40px;\n flex-grow: 1;\n}\n.vgt-global-search__input .input__icon {\n position: absolute;\n left: 0px;\n max-width: 32px;\n}\n.vgt-global-search__input .input__icon .magnifying-glass {\n margin-top: 3px;\n margin-left: 8px;\n display: block;\n width: 16px;\n height: 16px;\n border: 2px solid #d6dae2;\n position: relative;\n border-radius: 50%;\n}\n.vgt-global-search__input .input__icon .magnifying-glass:before {\n content: \"\";\n display: block;\n position: absolute;\n right: -7px;\n bottom: -5px;\n background: #d6dae2;\n width: 8px;\n height: 4px;\n border-radius: 2px;\n transform: rotate(45deg);\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n}\n.vgt-global-search__actions {\n margin-left: 10px;\n}\n.vgt-selection-info-row {\n background: #fdf9e8;\n padding: 5px 16px;\n font-size: 13px;\n border-top: 1px solid #DCDFE6;\n border-left: 1px solid #DCDFE6;\n border-right: 1px solid #DCDFE6;\n color: #d3aa3b;\n font-weight: bold;\n}\n.vgt-selection-info-row a {\n font-weight: bold;\n display: inline-block;\n margin-left: 10px;\n}\n.vgt-wrap__footer {\n color: #606266;\n padding: 1rem;\n border: 1px solid #DCDFE6;\n background: linear-gradient(#F4F5F8, #F1F3F6);\n}\n.vgt-wrap__footer .footer__row-count__label, .vgt-wrap__footer .footer__row-count__select {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__row-count__label {\n font-size: 14px;\n color: #909399;\n}\n.vgt-wrap__footer .footer__row-count__select {\n background-color: transparent;\n width: auto;\n padding: 0;\n border: 0;\n border-radius: 0;\n height: auto;\n font-size: 14px;\n margin-left: 8px;\n color: #606266;\n font-weight: bold;\n}\n.vgt-wrap__footer .footer__row-count__select:focus {\n outline: none;\n border-color: #409eff;\n}\n.vgt-wrap__footer .footer__navigation {\n font-size: 14px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn, .vgt-wrap__footer .footer__navigation__info {\n display: inline-block;\n vertical-align: middle;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n text-decoration: none;\n color: #606266;\n font-weight: bold;\n white-space: nowrap;\n}\n.vgt-wrap__footer .footer__navigation__page-btn:focus {\n outline: none;\n border: 0;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #606266;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron {\n width: 24px;\n height: 24px;\n border-radius: 15%;\n position: relative;\n margin: 0px 8px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron:after {\n content: '';\n position: absolute;\n display: block;\n left: 50%;\n top: 50%;\n margin-top: -6px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.left::after {\n border-right: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__page-btn .chevron.right::after {\n border-left: 6px solid #409eff;\n margin-left: -3px;\n}\n.vgt-wrap__footer .footer__navigation__info {\n color: #909399;\n margin: 0px 16px;\n}\n@media only screen and (max-width: 750px) {\n /* on small screens hide the info */\n.vgt-wrap__footer .footer__navigation__info {\n display: none;\n}\n.vgt-wrap__footer .footer__navigation__page-btn {\n margin-left: 16px;\n}\n}\n.vgt-table.nocturnal {\n border: 1px solid #435169;\n background-color: #324057;\n}\n.vgt-table.nocturnal tr.clickable:hover {\n background-color: #445168;\n}\n.vgt-table.nocturnal td {\n border-bottom: 1px solid #435169;\n color: #C7CED8;\n}\n.vgt-table.nocturnal th.line-numbers {\n color: #C7CED8;\n border-right: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th {\n color: #C7CED8;\n border-bottom: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-table.nocturnal thead th.sorting-asc, .vgt-table.nocturnal thead th.sorting-desc {\n color: #9aa7b9;\n}\n.vgt-table.nocturnal.bordered td, .vgt-table.nocturnal.bordered th {\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input, .vgt-table.nocturnal .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-table.nocturnal .vgt-input::placeholder, .vgt-table.nocturnal .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer {\n color: #C7CED8;\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__label {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__row-count__select:focus {\n border-color: #409eff;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn {\n color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.left:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.left:after {\n border-right-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled .chevron.right:after, .vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__page-btn.disabled:hover .chevron.right:after {\n border-left-color: #C7CED8;\n}\n.vgt-wrap.nocturnal .vgt-wrap__footer .footer__navigation__info {\n color: #8290A7;\n}\n.vgt-wrap.nocturnal .vgt-global-search {\n border: 1px solid #435169;\n background: linear-gradient(#2C394F, #2C394F);\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass {\n border: 2px solid #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .input__icon .magnifying-glass:before {\n background: #3f4c63;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select {\n color: #C7CED8;\n background-color: #232d3f;\n border: 1px solid #435169;\n}\n.vgt-wrap.nocturnal .vgt-global-search__input .vgt-input::placeholder, .vgt-wrap.nocturnal .vgt-global-search__input .vgt-select::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #C7CED8;\n opacity: 0.3;\n /* Firefox */\n}\n\n/*# sourceMappingURL=Table.vue.map */",map:void 0,media:void 0})},void 0===ye?{}:ye,void 0,!1,0,xe,"undefined"!=typeof __vue_create_injector_ssr__&&__vue_create_injector_ssr__),De={install:function(t,e){t.component(Ce.name,Ce)}};"undefined"!=typeof window&&window.Vue&&window.Vue.use(De),t.default=De,t.GoodTable=Ce,Object.defineProperty(t,"__esModule",{value:!0})}); //# sourceMappingURL=vue-good-table.min.js.map diff --git a/dist/vue-good-table.min.js.map b/dist/vue-good-table.min.js.map index f14117fd..a5b6a2cb 100644 --- a/dist/vue-good-table.min.js.map +++ b/dist/vue-good-table.min.js.map @@ -1 +1 @@ -{"version":3,"file":"vue-good-table.min.js","sources":["../node_modules/lodash.foreach/index.js","../node_modules/lodash.assign/index.js","../node_modules/lodash.clonedeep/index.js","../node_modules/lodash.filter/index.js","../node_modules/diacriticless/diacriticless.js","../src/components/types/default.js","../src/components/VgtPagination.vue.js?rollup_plugin_vue=%7B%22type%22%3A%22script%22%2C%22lang%22%3A%22js%22%7D","../src/components/VgtGlobalSearch.vue.js?rollup_plugin_vue=%7B%22type%22%3A%22script%22%2C%22lang%22%3A%22js%22%7D","../src/components/VgtFilterRow.vue.js?rollup_plugin_vue=%7B%22type%22%3A%22script%22%2C%22lang%22%3A%22js%22%7D","../node_modules/date-fns/esm/toDate/index.js","../node_modules/date-fns/esm/_lib/cloneObject/index.js","../node_modules/date-fns/esm/addMinutes/index.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeArrayFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildParseFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/locale/_lib/parseDecimal/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/esm/format/_lib/formatters/index.js","../node_modules/date-fns/esm/format/index.js","../node_modules/date-fns/esm/_lib/addUTCMinutes/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../node_modules/date-fns/esm/_lib/setUTCISOWeekYear/index.js","../node_modules/date-fns/esm/parse/_lib/units/index.js","../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../node_modules/date-fns/esm/parse/index.js","../node_modules/date-fns/esm/subMinutes/index.js","../node_modules/lodash.clone/index.js","../src/components/types/date.js","../node_modules/date-fns/esm/compareAsc/index.js","../src/components/types/number.js","../src/components/types/decimal.js","../src/components/types/percentage.js","../src/components/Table.vue.js?rollup_plugin_vue=%7B%22type%22%3A%22script%22%2C%22lang%22%3A%22js%22%7D","../src/index.js"],"sourcesContent":["/**\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\nmodule.exports = forEach;\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 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(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 nativeMax = Math.max;\n\n/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\nvar nonEnumShadows = !propertyIsEnumerable.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(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 * 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 `_.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(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is 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 * 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 * 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(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\n/**\n * 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\nmodule.exports = assign;\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 global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\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 * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.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, 3));\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","// 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\nmodule.exports = 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 -1);\n },\n\n compare(x, y) {\n function cook(d) {\n if (typeof d === 'undefined' || d === null) return '';\n return d.toLowerCase();\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//\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\nimport cloneDeep from 'lodash.clonedeep';\n\nexport default {\n name: 'VgtPagination',\n props: {\n styleClass: { default: 'table table-bordered' },\n total: { default: null },\n perPage: {},\n rtl: { default: false },\n customRowsPerPageDropdown: { default() { return []; } },\n paginateDropdownAllowAll: { default: true },\n\n // text options\n nextText: { default: 'Next' },\n prevText: { default: 'Prev' },\n rowsPerPageText: { default: 'Rows per page:' },\n ofText: { default: 'of' },\n allText: { default: 'All' },\n },\n\n data: () => ({\n currentPage: 1,\n currentPerPage: 10,\n rowsPerPageOptions: [],\n defaultRowsPerPageDropdown: [10, 20, 30, 40, 50],\n }),\n\n watch: {\n perPage() {\n this.handlePerPage();\n this.perPageChanged();\n },\n\n customRowsPerPageDropdown() {\n if (this.customRowsPerPageDropdown !== null\n && (Array.isArray(this.customRowsPerPageDropdown)\n && this.customRowsPerPageDropdown.lenght !== 0)) {\n this.rowsPerPageOptions = this.customRowsPerPageDropdown;\n }\n },\n\n },\n\n computed: {\n paginatedInfo() {\n if (this.currentPerPage === -1) {\n return `1 - ${this.total} ${this.ofText} ${this.total}`;\n }\n let first = ((this.currentPage - 1) * this.currentPerPage) + 1 ?\n ((this.currentPage - 1) * this.currentPerPage) + 1 : 1;\n\n if (first > this.total) {\n // this probably happened as a result of filtering\n first = 1;\n this.currentPage = 1;\n }\n\n const last = Math.min(this.total, this.currentPerPage * this.currentPage);\n return `${first} - ${last} ${this.ofText} ${this.total}`;\n },\n nextIsPossible() {\n return (this.total > this.currentPerPage * this.currentPage);\n },\n prevIsPossible() {\n return this.currentPage > 1;\n },\n },\n\n methods: {\n // optionSelected(option) {\n // return this.currentPerPage === option;\n // },\n\n reset() {\n\n },\n\n nextPage() {\n if (this.currentPerPage === -1) return;\n if (this.nextIsPossible) {\n ++this.currentPage;\n this.pageChanged();\n }\n },\n\n previousPage() {\n if (this.currentPage > 1) {\n --this.currentPage;\n this.pageChanged();\n }\n },\n\n pageChanged() {\n this.$emit('page-changed', { currentPage: this.currentPage });\n },\n\n perPageChanged(event) {\n if (event) {\n this.currentPerPage = parseInt(event.target.value, 10);\n }\n this.$emit('per-page-changed', { currentPerPage: this.currentPerPage });\n },\n\n getRowsPerPageDropdown() {\n return this.rowsPerPageOptions;\n },\n\n handlePerPage() {\n this.rowsPerPageOptions = cloneDeep(this.defaultRowsPerPageDropdown);\n if (this.perPage) {\n this.currentPerPage = this.perPage;\n // if perPage doesn't already exist, we add it\n let found = false;\n for (let i = 0; i < this.rowsPerPageOptions.length; i++) {\n if (this.rowsPerPageOptions[i] === this.perPage) {\n found = true;\n }\n }\n if (!found) this.rowsPerPageOptions.push(this.perPage);\n } else {\n // reset to default\n this.currentPerPage = 10;\n }\n\n if (this.customRowsPerPageDropdown !== null\n && (Array.isArray(this.customRowsPerPageDropdown)\n && this.customRowsPerPageDropdown.length !== 0)) {\n this.rowsPerPageOptions = this.customRowsPerPageDropdown;\n }\n },\n },\n\n mounted() {\n this.handlePerPage();\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\nexport default {\n name: 'VgtGlobalSearch',\n props: [\n 'value',\n 'searchEnabled',\n 'globalSearchPlaceholder',\n ],\n data() {\n return {\n globalSearchTerm: null,\n };\n },\n computed: {\n 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(value) {\n this.$emit('input', value);\n this.$emit('on-keyup', value);\n },\n entered(value) {\n this.$emit('on-enter', value);\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\nexport default {\n name: 'VgtFilterRow',\n props: [\n 'lineNumbers',\n 'columns',\n 'typedColumns',\n 'globalSearchEnabled',\n 'selectable',\n 'mode'\n ],\n watch: {\n columns: {\n handler() {\n this.populateInitialFilters();\n },\n deep: true,\n },\n },\n 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() {\n if (this.mode === 'remote' || !this.globalSearchEnabled) {\n for (let i = 0; i < this.columns.length; i++) {\n const col = this.columns[i];\n if (col.filterOptions && col.filterOptions.enabled) {\n return true;\n }\n }\n }\n return false;\n },\n },\n methods: {\n isFilterable(column) {\n return column.filterOptions\n && column.filterOptions.enabled;\n },\n\n isDropdown(column) {\n return this.isFilterable(column)\n && column.filterOptions.filterDropdownItems\n && column.filterOptions.filterDropdownItems.length;\n },\n\n isDropdownObjects(column) {\n return this.isDropdown(column)\n && typeof column.filterOptions.filterDropdownItems[0] === 'object';\n },\n\n isDropdownArray(column) {\n return this.isDropdown(column)\n && typeof column.filterOptions.filterDropdownItems[0] !== 'object';\n },\n\n // get column's defined placeholder or default one\n getPlaceholder(column) {\n const placeholder = (this.isFilterable(column) && column.filterOptions.placeholder) || `Filter ${column.label}`;\n return placeholder;\n },\n\n // since vue doesn't detect property addition and deletion, we\n // need to create helper function to set property etc\n updateFilters(column, value) {\n if (this.timer) clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n this.updateFiltersImmediately(column, value);\n }, 400);\n },\n\n updateFiltersImmediately(column, value) {\n this.$set(this.columnFilters, column.field, value);\n this.$emit('filter-changed', this.columnFilters);\n },\n\n populateInitialFilters() {\n for (let i = 0; i < this.columns.length; i++) {\n const col = this.columns[i];\n // lets see if there are initial\n // filters supplied by user\n if (this.isFilterable(col)\n && typeof col.filterOptions.filterValue !== 'undefined'\n && col.filterOptions.filterValue !== null) {\n this.updateFiltersImmediately(col, col.filterOptions.filterValue);\n this.$set(col.filterOptions, 'filterValue', undefined);\n }\n }\n },\n },\n mounted() {\n // take care of initial filters\n this.populateInitialFilters();\n },\n};\n","var MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar patterns = {\n dateTimeDelimeter: /[T ]/,\n plainTime: /:/,\n\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n ],\n\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n // timezone tokens\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-])(\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/\n}\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 an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument is null, it is treated as an invalid date.\n *\n * If all above fails, the function passes the given argument to Date constructor.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {*} argument - the value to convert\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function toDate (argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n if (argument === null) {\n return new Date(NaN)\n }\n\n var options = dirtyOptions || {}\n\n var additionalDigits = options.additionalDigits === undefined ? DEFAULT_ADDITIONAL_DIGITS : Number(options.additionalDigits)\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n // Clone the date\n if (argument instanceof 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 !== 'string') {\n return new Date(argument)\n }\n\n var dateStrings = splitDateString(argument)\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n var year = parseYearResult.year\n var restDateString = parseYearResult.restDateString\n\n var date = parseDate(restDateString, year)\n\n if (date) {\n var timestamp = date.getTime()\n var time = 0\n var offset\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time)\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone)\n } else {\n // get offset accurate to hour in timezones that change offset\n offset = new Date(timestamp + time).getTimezoneOffset()\n offset = new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE).getTimezoneOffset()\n }\n\n return new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE)\n } else {\n return new Date(argument)\n }\n}\n\nfunction splitDateString (dateString) {\n var dateStrings = {}\n var array = dateString.split(patterns.dateTimeDelimeter)\n var timeString\n\n if (patterns.plainTime.test(array[0])) {\n dateStrings.date = null\n timeString = array[0]\n } else {\n dateStrings.date = array[0]\n timeString = array[1]\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString)\n if (token) {\n dateStrings.time = timeString.replace(token[1], '')\n dateStrings.timezone = token[1]\n } else {\n dateStrings.time = timeString\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits]\n var patternYYYYY = patterns.YYYYY[additionalDigits]\n\n var token\n\n // YYYY or ±YYYYY\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString)\n if (token) {\n var yearString = token[1]\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n }\n }\n\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString)\n if (token) {\n var centuryString = token[1]\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n }\n}\n\nfunction parseDate (dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token\n var date\n var month\n var week\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0)\n date.setUTCFullYear(year)\n return date\n }\n\n // YYYY-MM\n token = patterns.MM.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n date.setUTCFullYear(year, month)\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString)\n if (token) {\n date = new Date(0)\n var dayOfYear = parseInt(token[1], 10)\n date.setUTCFullYear(year, 0, dayOfYear)\n return date\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = patterns.MMDD.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n var day = parseInt(token[2], 10)\n date.setUTCFullYear(year, month, day)\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n return dayOfISOYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n var dayOfWeek = parseInt(token[2], 10) - 1\n return dayOfISOYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime (timeString) {\n var token\n var hours\n var minutes\n\n // hh\n token = patterns.HH.exec(timeString)\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseFloat(token[2].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE\n }\n\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseInt(token[2], 10)\n var seconds = parseFloat(token[3].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction parseTimezone (timezoneString) {\n var token\n var absoluteOffset\n\n // Z\n token = patterns.timezoneZ.exec(timezoneString)\n if (token) {\n return 0\n }\n\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString)\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString)\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60 + parseInt(token[3], 10)\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n return 0\n}\n\nfunction dayOfISOYear (isoYear, week, day) {\n week = week || 0\n day = day || 0\n var date = new Date(0)\n date.setUTCFullYear(isoYear, 0, 4)\n var fourthOfJanuaryDay = date.getUTCDay() || 7\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","export default function cloneObject (dirtyObject) {\n dirtyObject = dirtyObject || {}\n var object = {}\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n object[property] = dirtyObject[property]\n }\n }\n\n return object\n}\n","import addMilliseconds from '../addMilliseconds/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = Number(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE, dirtyOptions)\n}\n","import toDate from '../toDate/index.js'\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 * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\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 */\nexport default function addMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var timestamp = toDate(dirtyDate, dirtyOptions).getTime()\n var amount = Number(dirtyAmount)\n return new Date(timestamp + amount)\n}\n","import toDate from '../toDate/index.js'\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 * @param {*} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\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('2014-02-31')\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid (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 return !isNaN(date)\n}\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n}\n\nexport default function formatDistance (token, count, options) {\n options = options || {}\n\n var result\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","var tokensToBeShortedPattern = /MMMM|MM|DD|dddd/g\n\nfunction buildShortLongFormat (format) {\n return format.replace(tokensToBeShortedPattern, function (token) {\n return token.slice(1)\n })\n}\n\n/**\n * @name buildFormatLongFn\n * @category Locale Helpers\n * @summary Build `formatLong` property for locale used by `format`, `formatRelative` and `parse` functions.\n *\n * @description\n * Build `formatLong` property for locale used by `format`, `formatRelative` and `parse` functions.\n * Returns a function which takes one of the following tokens as the argument:\n * `'LTS'`, `'LT'`, `'L'`, `'LL'`, `'LLL'`, `'l'`, `'ll'`, `'lll'`, `'llll'`\n * and returns a long format string written as `format` token strings.\n * See [format]{@link https://date-fns.org/docs/format}\n *\n * `'l'`, `'ll'`, `'lll'` and `'llll'` formats are built automatically\n * by shortening some of the tokens from corresponding unshortened formats\n * (e.g., if `LL` is `'MMMM DD YYYY'` then `ll` will be `MMM D YYYY`)\n *\n * @param {Object} obj - the object with long formats written as `format` token strings\n * @param {String} obj.LT - time format: hours and minutes\n * @param {String} obj.LTS - time format: hours, minutes and seconds\n * @param {String} obj.L - short date format: numeric day, month and year\n * @param {String} [obj.l] - short date format: numeric day, month and year (shortened)\n * @param {String} obj.LL - long date format: day, month in words, and year\n * @param {String} [obj.ll] - long date format: day, month in words, and year (shortened)\n * @param {String} obj.LLL - long date and time format\n * @param {String} [obj.lll] - long date and time format (shortened)\n * @param {String} obj.LLLL - long date, time and weekday format\n * @param {String} [obj.llll] - long date, time and weekday format (shortened)\n * @returns {Function} `formatLong` property of the locale\n *\n * @example\n * // For `en-US` locale:\n * locale.formatLong = buildFormatLongFn({\n * LT: 'h:mm aa',\n * LTS: 'h:mm:ss aa',\n * L: 'MM/DD/YYYY',\n * LL: 'MMMM D YYYY',\n * LLL: 'MMMM D YYYY h:mm aa',\n * LLLL: 'dddd, MMMM D YYYY h:mm aa'\n * })\n */\nexport default function buildFormatLongFn (obj) {\n var formatLongLocale = {\n LTS: obj.LTS,\n LT: obj.LT,\n L: obj.L,\n LL: obj.LL,\n LLL: obj.LLL,\n LLLL: obj.LLLL,\n l: obj.l || buildShortLongFormat(obj.L),\n ll: obj.ll || buildShortLongFormat(obj.LL),\n lll: obj.lll || buildShortLongFormat(obj.LLL),\n llll: obj.llll || buildShortLongFormat(obj.LLLL)\n }\n\n return function (token) {\n return formatLongLocale[token]\n }\n}\n","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js'\n\nvar formatLong = buildFormatLongFn({\n LT: 'h:mm aa',\n LTS: 'h:mm:ss aa',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D YYYY',\n LLL: 'MMMM D YYYY h:mm aa',\n LLLL: 'dddd, MMMM D YYYY h:mm aa'\n})\n\nexport default formatLong\n","var formatRelativeLocale = {\n lastWeek: '[last] dddd [at] LT',\n yesterday: '[yesterday at] LT',\n today: '[today at] LT',\n tomorrow: '[tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n other: 'L'\n}\n\nexport default function formatRelative (token, date, baseDate, options) {\n return formatRelativeLocale[token]\n}\n","/**\n * @name buildLocalizeFn\n * @category Locale Helpers\n * @summary Build `localize.weekday`, `localize.month` and `localize.timeOfDay` properties for the locale.\n *\n * @description\n * Build `localize.weekday`, `localize.month` and `localize.timeOfDay` properties for the locale\n * used by `format` function.\n * If no `type` is supplied to the options of the resulting function, `defaultType` will be used (see example).\n *\n * `localize.weekday` function takes the weekday index as argument (0 - Sunday).\n * `localize.month` takes the month index (0 - January).\n * `localize.timeOfDay` takes the hours. Use `indexCallback` to convert them to an array index (see example).\n *\n * @param {Object} values - the object with arrays of values\n * @param {String} defaultType - the default type for the localize function\n * @param {Function} [indexCallback] - the callback which takes the resulting function argument\n * and converts it into value array index\n * @returns {Function} the resulting function\n *\n * @example\n * var timeOfDayValues = {\n * uppercase: ['AM', 'PM'],\n * lowercase: ['am', 'pm'],\n * long: ['a.m.', 'p.m.']\n * }\n * locale.localize.timeOfDay = buildLocalizeFn(timeOfDayValues, 'long', function (hours) {\n * // 0 is a.m. array index, 1 is p.m. array index\n * return (hours / 12) >= 1 ? 1 : 0\n * })\n * locale.localize.timeOfDay(16, {type: 'uppercase'}) //=> 'PM'\n * locale.localize.timeOfDay(5) //=> 'a.m.'\n */\nexport default function buildLocalizeFn (values, defaultType, indexCallback) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {}\n var type = options.type ? String(options.type) : defaultType\n var valuesArray = values[type] || values[defaultType]\n var index = indexCallback ? indexCallback(Number(dirtyIndex)) : Number(dirtyIndex)\n return valuesArray[index]\n }\n}\n","/**\n * @name buildLocalizeArrayFn\n * @category Locale Helpers\n * @summary Build `localize.weekdays`, `localize.months` and `localize.timesOfDay` properties for the locale.\n *\n * @description\n * Build `localize.weekdays`, `localize.months` and `localize.timesOfDay` properties for the locale.\n * If no `type` is supplied to the options of the resulting function, `defaultType` will be used (see example).\n *\n * @param {Object} values - the object with arrays of values\n * @param {String} defaultType - the default type for the localize function\n * @returns {Function} the resulting function\n *\n * @example\n * var weekdayValues = {\n * narrow: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n * short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n * long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n * }\n * locale.localize.weekdays = buildLocalizeArrayFn(weekdayValues, 'long')\n * locale.localize.weekdays({type: 'narrow'}) //=> ['Su', 'Mo', ...]\n * locale.localize.weekdays() //=> ['Sunday', 'Monday', ...]\n */\nexport default function buildLocalizeArrayFn (values, defaultType) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {}\n var type = options.type ? String(options.type) : defaultType\n return values[type] || values[defaultType]\n }\n}\n","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'\nimport buildLocalizeArrayFn from '../../../_lib/buildLocalizeArrayFn/index.js'\n\n// 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.\nvar weekdayValues = {\n narrow: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n}\n\nvar monthValues = {\n short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n long: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n}\n\n// `timeOfDay` is used to designate which part of the day it is, when used with 12-hour clock.\n// Use the system which is used the most commonly in the locale.\n// For example, if the country doesn't use a.m./p.m., you can use `night`/`morning`/`afternoon`/`evening`:\n//\n// var timeOfDayValues = {\n// any: ['in the night', 'in the morning', 'in the afternoon', 'in the evening']\n// }\n//\n// And later:\n//\n// var localize = {\n// // The callback takes the hours as the argument and returns the array index\n// timeOfDay: buildLocalizeFn(timeOfDayValues, 'any', function (hours) {\n// if (hours >= 17) {\n// return 3\n// } else if (hours >= 12) {\n// return 2\n// } else if (hours >= 4) {\n// return 1\n// } else {\n// return 0\n// }\n// }),\n// timesOfDay: buildLocalizeArrayFn(timeOfDayValues, 'any')\n// }\nvar timeOfDayValues = {\n uppercase: ['AM', 'PM'],\n lowercase: ['am', 'pm'],\n long: ['a.m.', 'p.m.']\n}\n\nfunction ordinalNumber (dirtyNumber, dirtyOptions) {\n var number = Number(dirtyNumber)\n\n // 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 'month', 'quarter', 'week', 'isoWeek', 'dayOfYear',\n // 'dayOfMonth' or 'dayOfWeek'\n\n var rem100 = number % 100\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st'\n case 2:\n return number + 'nd'\n case 3:\n return number + 'rd'\n }\n }\n return number + 'th'\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n weekday: buildLocalizeFn(weekdayValues, 'long'),\n weekdays: buildLocalizeArrayFn(weekdayValues, 'long'),\n month: buildLocalizeFn(monthValues, 'long'),\n months: buildLocalizeArrayFn(monthValues, 'long'),\n timeOfDay: buildLocalizeFn(timeOfDayValues, 'long', function (hours) {\n return (hours / 12) >= 1 ? 1 : 0\n }),\n timesOfDay: buildLocalizeArrayFn(timeOfDayValues, 'long')\n}\n\nexport default localize\n","/**\n * @name buildMatchFn\n * @category Locale Helpers\n * @summary Build `match.weekdays`, `match.months` and `match.timesOfDay` properties for the locale.\n *\n * @description\n * Build `match.weekdays`, `match.months` and `match.timesOfDay` properties for the locale used by `parse` function.\n * If no `type` is supplied to the options of the resulting function, `defaultType` will be used (see example).\n * The result of the match function will be passed into corresponding parser function\n * (`match.weekday`, `match.month` or `match.timeOfDay` respectively. See `buildParseFn`).\n *\n * @param {Object} values - the object with RegExps\n * @param {String} defaultType - the default type for the match function\n * @returns {Function} the resulting function\n *\n * @example\n * var matchWeekdaysPatterns = {\n * narrow: /^(su|mo|tu|we|th|fr|sa)/i,\n * short: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n * long: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n * }\n * locale.match.weekdays = buildMatchFn(matchWeekdaysPatterns, 'long')\n * locale.match.weekdays('Sunday', {type: 'narrow'}) //=> ['Su', 'Su', ...]\n * locale.match.weekdays('Sunday') //=> ['Sunday', 'Sunday', ...]\n */\nexport default function buildMatchFn (patterns, defaultType) {\n return function (dirtyString, dirtyOptions) {\n var options = dirtyOptions || {}\n var type = options.type ? String(options.type) : defaultType\n var pattern = patterns[type] || patterns[defaultType]\n var string = String(dirtyString)\n return string.match(pattern)\n }\n}\n","/**\n * @name buildParseFn\n * @category Locale Helpers\n * @summary Build `match.weekday`, `match.month` and `match.timeOfDay` properties for the locale.\n *\n * @description\n * Build `match.weekday`, `match.month` and `match.timeOfDay` properties for the locale used by `parse` function.\n * The argument of the resulting function is the result of the corresponding match function\n * (`match.weekdays`, `match.months` or `match.timesOfDay` respectively. See `buildMatchFn`).\n *\n * @param {Object} values - the object with arrays of RegExps\n * @param {String} defaultType - the default type for the parser function\n * @returns {Function} the resulting function\n *\n * @example\n * var parseWeekdayPatterns = {\n * any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n * }\n * locale.match.weekday = buildParseFn(matchWeekdaysPatterns, 'long')\n * var matchResult = locale.match.weekdays('Friday')\n * locale.match.weekday(matchResult) //=> 5\n */\nexport default function buildParseFn (patterns, defaultType) {\n return function (matchResult, dirtyOptions) {\n var options = dirtyOptions || {}\n var type = options.type ? String(options.type) : defaultType\n var patternsArray = patterns[type] || patterns[defaultType]\n var string = matchResult[1]\n\n return patternsArray.findIndex(function (pattern) {\n return pattern.test(string)\n })\n }\n}\n","import buildMatchFn from '../../../_lib/buildMatchFn/index.js'\nimport buildParseFn from '../../../_lib/buildParseFn/index.js'\nimport buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js'\nimport parseDecimal from '../../../_lib/parseDecimal/index.js'\n\nvar matchOrdinalNumbersPattern = /^(\\d+)(th|st|nd|rd)?/i\n\nvar matchWeekdaysPatterns = {\n narrow: /^(su|mo|tu|we|th|fr|sa)/i,\n short: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n long: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n}\n\nvar parseWeekdayPatterns = {\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n}\n\nvar matchMonthsPatterns = {\n short: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n long: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n}\n\nvar parseMonthPatterns = {\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}\n\n// `timeOfDay` is used to designate which part of the day it is, when used with 12-hour clock.\n// Use the system which is used the most commonly in the locale.\n// For example, if the country doesn't use a.m./p.m., you can use `night`/`morning`/`afternoon`/`evening`:\n//\n// var matchTimesOfDayPatterns = {\n// long: /^((in the)? (night|morning|afternoon|evening?))/i\n// }\n//\n// var parseTimeOfDayPatterns = {\n// any: [/(night|morning)/i, /(afternoon|evening)/i]\n// }\nvar matchTimesOfDayPatterns = {\n short: /^(am|pm)/i,\n long: /^([ap]\\.?\\s?m\\.?)/i\n}\n\nvar parseTimeOfDayPatterns = {\n any: [/^a/i, /^p/i]\n}\n\nvar match = {\n ordinalNumbers: buildMatchPatternFn(matchOrdinalNumbersPattern),\n ordinalNumber: parseDecimal,\n weekdays: buildMatchFn(matchWeekdaysPatterns, 'long'),\n weekday: buildParseFn(parseWeekdayPatterns, 'any'),\n months: buildMatchFn(matchMonthsPatterns, 'long'),\n month: buildParseFn(parseMonthPatterns, 'any'),\n timesOfDay: buildMatchFn(matchTimesOfDayPatterns, 'long'),\n timeOfDay: buildParseFn(parseTimeOfDayPatterns, 'any')\n}\n\nexport default match\n","/**\n * @name buildMatchPatternFn\n * @category Locale Helpers\n * @summary Build match function from a single RegExp.\n *\n * @description\n * Build match function from a single RegExp.\n * Usually used for building `match.ordinalNumbers` property of the locale.\n *\n * @param {Object} pattern - the RegExp\n * @returns {Function} the resulting function\n *\n * @example\n * locale.match.ordinalNumbers = buildMatchPatternFn(/^(\\d+)(th|st|nd|rd)?/i)\n * locale.match.ordinalNumbers('3rd') //=> ['3rd', '3', 'rd', ...]\n */\nexport default function buildMatchPatternFn (pattern) {\n return function (dirtyString) {\n var string = String(dirtyString)\n return string.match(pattern)\n }\n}\n","import formatDistance from './_lib/formatDistance/index.js'\nimport formatLong from './_lib/formatLong/index.js'\nimport formatRelative from './_lib/formatRelative/index.js'\nimport localize from './_lib/localize/index.js'\nimport match from './_lib/match/index.js'\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n */\nvar locale = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n}\n\nexport default locale\n","/**\n * @name parseDecimal\n * @category Locale Helpers\n * @summary Parses the match result into decimal number.\n *\n * @description\n * Parses the match result into decimal number.\n * Uses the string matched with the first set of parentheses of match RegExp.\n *\n * @param {Array} matchResult - the object returned by matching function\n * @returns {Number} the parsed value\n *\n * @example\n * locale.match = {\n * ordinalNumbers: (dirtyString) {\n * return String(dirtyString).match(/^(\\d+)(th|st|nd|rd)?/i)\n * },\n * ordinalNumber: parseDecimal\n * }\n */\nexport default function parseDecimal (matchResult) {\n return parseInt(matchResult[1], 10)\n}\n","import toDate from '../../toDate/index.js'\n\nvar MILLISECONDS_IN_DAY = 86400000\n\n// 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\nexport default function getUTCDayOfYear (dirtyDate, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions)\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","import toDate from '../../toDate/index.js'\n\n// 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\nexport default function startOfUTCISOWeek (dirtyDate, dirtyOptions) {\n var weekStartsOn = 1\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getUTCDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setUTCDate(date.getUTCDate() - diff)\n date.setUTCHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\n\n// 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\nexport default function getUTCISOWeekYear (dirtyDate, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getUTCFullYear()\n\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, dirtyOptions)\n\n var fourthOfJanuaryOfThisYear = new Date(0)\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4)\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0)\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear, 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","import getUTCISOWeekYear from '../getUTCISOWeekYear/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\n\n// 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\nexport default function startOfUTCISOWeekYear (dirtyDate, dirtyOptions) {\n var year = getUTCISOWeekYear(dirtyDate, dirtyOptions)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setUTCFullYear(year, 0, 4)\n fourthOfJanuary.setUTCHours(0, 0, 0, 0)\n var date = startOfUTCISOWeek(fourthOfJanuary, dirtyOptions)\n return date\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n// 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\nexport default function getUTCISOWeek (dirtyDate, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = startOfUTCISOWeek(date, dirtyOptions).getTime() - startOfUTCISOWeekYear(date, dirtyOptions).getTime()\n\n // 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 return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import getUTCDayOfYear from '../../../_lib/getUTCDayOfYear/index.js'\nimport getUTCISOWeek from '../../../_lib/getUTCISOWeek/index.js'\nimport getUTCISOWeekYear from '../../../_lib/getUTCISOWeekYear/index.js'\n\nvar formatters = {\n // Month: 1, 2, ..., 12\n 'M': function (date) {\n return date.getUTCMonth() + 1\n },\n\n // Month: 1st, 2nd, ..., 12th\n 'Mo': function (date, options) {\n var month = date.getUTCMonth() + 1\n return options.locale.localize.ordinalNumber(month, {unit: 'month'})\n },\n\n // Month: 01, 02, ..., 12\n 'MM': function (date) {\n return addLeadingZeros(date.getUTCMonth() + 1, 2)\n },\n\n // Month: Jan, Feb, ..., Dec\n 'MMM': function (date, options) {\n return options.locale.localize.month(date.getUTCMonth(), {type: 'short'})\n },\n\n // Month: January, February, ..., December\n 'MMMM': function (date, options) {\n return options.locale.localize.month(date.getUTCMonth(), {type: 'long'})\n },\n\n // Quarter: 1, 2, 3, 4\n 'Q': function (date) {\n return Math.ceil((date.getUTCMonth() + 1) / 3)\n },\n\n // Quarter: 1st, 2nd, 3rd, 4th\n 'Qo': function (date, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3)\n return options.locale.localize.ordinalNumber(quarter, {unit: 'quarter'})\n },\n\n // Day of month: 1, 2, ..., 31\n 'D': function (date) {\n return date.getUTCDate()\n },\n\n // Day of month: 1st, 2nd, ..., 31st\n 'Do': function (date, options) {\n return options.locale.localize.ordinalNumber(date.getUTCDate(), {unit: 'dayOfMonth'})\n },\n\n // Day of month: 01, 02, ..., 31\n 'DD': function (date) {\n return addLeadingZeros(date.getUTCDate(), 2)\n },\n\n // Day of year: 1, 2, ..., 366\n 'DDD': function (date) {\n return getUTCDayOfYear(date)\n },\n\n // Day of year: 1st, 2nd, ..., 366th\n 'DDDo': function (date, options) {\n return options.locale.localize.ordinalNumber(getUTCDayOfYear(date), {unit: 'dayOfYear'})\n },\n\n // Day of year: 001, 002, ..., 366\n 'DDDD': function (date) {\n return addLeadingZeros(getUTCDayOfYear(date), 3)\n },\n\n // Day of week: Su, Mo, ..., Sa\n 'dd': function (date, options) {\n return options.locale.localize.weekday(date.getUTCDay(), {type: 'narrow'})\n },\n\n // Day of week: Sun, Mon, ..., Sat\n 'ddd': function (date, options) {\n return options.locale.localize.weekday(date.getUTCDay(), {type: 'short'})\n },\n\n // Day of week: Sunday, Monday, ..., Saturday\n 'dddd': function (date, options) {\n return options.locale.localize.weekday(date.getUTCDay(), {type: 'long'})\n },\n\n // Day of week: 0, 1, ..., 6\n 'd': function (date) {\n return date.getUTCDay()\n },\n\n // Day of week: 0th, 1st, 2nd, ..., 6th\n 'do': function (date, options) {\n return options.locale.localize.ordinalNumber(date.getUTCDay(), {unit: 'dayOfWeek'})\n },\n\n // Day of ISO week: 1, 2, ..., 7\n 'E': function (date) {\n return date.getUTCDay() || 7\n },\n\n // ISO week: 1, 2, ..., 53\n 'W': function (date) {\n return getUTCISOWeek(date)\n },\n\n // ISO week: 1st, 2nd, ..., 53th\n 'Wo': function (date, options) {\n return options.locale.localize.ordinalNumber(getUTCISOWeek(date), {unit: 'isoWeek'})\n },\n\n // ISO week: 01, 02, ..., 53\n 'WW': function (date) {\n return addLeadingZeros(getUTCISOWeek(date), 2)\n },\n\n // Year: 00, 01, ..., 99\n 'YY': function (date) {\n return addLeadingZeros(date.getUTCFullYear(), 4).substr(2)\n },\n\n // Year: 1900, 1901, ..., 2099\n 'YYYY': function (date) {\n return addLeadingZeros(date.getUTCFullYear(), 4)\n },\n\n // ISO week-numbering year: 00, 01, ..., 99\n 'GG': function (date) {\n return String(getUTCISOWeekYear(date)).substr(2)\n },\n\n // ISO week-numbering year: 1900, 1901, ..., 2099\n 'GGGG': function (date) {\n return getUTCISOWeekYear(date)\n },\n\n // Hour: 0, 1, ... 23\n 'H': function (date) {\n return date.getUTCHours()\n },\n\n // Hour: 00, 01, ..., 23\n 'HH': function (date) {\n return addLeadingZeros(date.getUTCHours(), 2)\n },\n\n // Hour: 1, 2, ..., 12\n 'h': function (date) {\n var hours = date.getUTCHours()\n if (hours === 0) {\n return 12\n } else if (hours > 12) {\n return hours % 12\n } else {\n return hours\n }\n },\n\n // Hour: 01, 02, ..., 12\n 'hh': function (date) {\n return addLeadingZeros(formatters['h'](date), 2)\n },\n\n // Minute: 0, 1, ..., 59\n 'm': function (date) {\n return date.getUTCMinutes()\n },\n\n // Minute: 00, 01, ..., 59\n 'mm': function (date) {\n return addLeadingZeros(date.getUTCMinutes(), 2)\n },\n\n // Second: 0, 1, ..., 59\n 's': function (date) {\n return date.getUTCSeconds()\n },\n\n // Second: 00, 01, ..., 59\n 'ss': function (date) {\n return addLeadingZeros(date.getUTCSeconds(), 2)\n },\n\n // 1/10 of second: 0, 1, ..., 9\n 'S': function (date) {\n return Math.floor(date.getUTCMilliseconds() / 100)\n },\n\n // 1/100 of second: 00, 01, ..., 99\n 'SS': function (date) {\n return addLeadingZeros(Math.floor(date.getUTCMilliseconds() / 10), 2)\n },\n\n // Millisecond: 000, 001, ..., 999\n 'SSS': function (date) {\n return addLeadingZeros(date.getUTCMilliseconds(), 3)\n },\n\n // Timezone: -01:00, +00:00, ... +12:00\n 'Z': function (date, options) {\n var originalDate = options._originalDate || date\n return formatTimezone(originalDate.getTimezoneOffset(), ':')\n },\n\n // Timezone: -0100, +0000, ... +1200\n 'ZZ': function (date, options) {\n var originalDate = options._originalDate || date\n return formatTimezone(originalDate.getTimezoneOffset())\n },\n\n // Seconds timestamp: 512969520\n 'X': function (date, options) {\n var originalDate = options._originalDate || date\n return Math.floor(originalDate.getTime() / 1000)\n },\n\n // Milliseconds timestamp: 512969520900\n 'x': function (date, options) {\n var originalDate = options._originalDate || date\n return originalDate.getTime()\n },\n\n // AM, PM\n 'A': function (date, options) {\n return options.locale.localize.timeOfDay(date.getUTCHours(), {type: 'uppercase'})\n },\n\n // am, pm\n 'a': function (date, options) {\n return options.locale.localize.timeOfDay(date.getUTCHours(), {type: 'lowercase'})\n },\n\n // a.m., p.m.\n 'aa': function (date, options) {\n return options.locale.localize.timeOfDay(date.getUTCHours(), {type: 'long'})\n }\n}\n\nfunction formatTimezone (offset, delimeter) {\n delimeter = delimeter || ''\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = Math.floor(absOffset / 60)\n var minutes = absOffset % 60\n return sign + addLeadingZeros(hours, 2) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nfunction addLeadingZeros (number, targetLength) {\n var output = Math.abs(number).toString()\n while (output.length < targetLength) {\n output = '0' + output\n }\n return output\n}\n\nexport default formatters\n","import toDate from '../toDate/index.js'\nimport isValid from '../isValid/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport formatters from './_lib/formatters/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\nimport addUTCMinutes from '../_lib/addUTCMinutes/index.js'\n\nvar longFormattingTokensRegExp = /(\\[[^[]*])|(\\\\)?(LTS|LT|LLLL|LLL|LL|L|llll|lll|ll|l)/g\nvar defaultFormattingTokensRegExp = /(\\[[^[]*])|(\\\\)?(x|ss|s|mm|m|hh|h|do|dddd|ddd|dd|d|aa|a|ZZ|Z|YYYY|YY|X|Wo|WW|W|SSS|SS|S|Qo|Q|Mo|MMMM|MMM|MM|M|HH|H|GGGG|GG|E|Do|DDDo|DDDD|DDD|DD|D|A|.)/g\n\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.\n *\n * Accepted tokens:\n * | Unit | Token | Result examples |\n * |-------------------------|-------|----------------------------------|\n * | Month | M | 1, 2, ..., 12 |\n * | | Mo | 1st, 2nd, ..., 12th |\n * | | MM | 01, 02, ..., 12 |\n * | | MMM | Jan, Feb, ..., Dec |\n * | | MMMM | January, February, ..., December |\n * | Quarter | Q | 1, 2, 3, 4 |\n * | | Qo | 1st, 2nd, 3rd, 4th |\n * | Day of month | D | 1, 2, ..., 31 |\n * | | Do | 1st, 2nd, ..., 31st |\n * | | DD | 01, 02, ..., 31 |\n * | Day of year | DDD | 1, 2, ..., 366 |\n * | | DDDo | 1st, 2nd, ..., 366th |\n * | | DDDD | 001, 002, ..., 366 |\n * | Day of week | d | 0, 1, ..., 6 |\n * | | do | 0th, 1st, ..., 6th |\n * | | dd | Su, Mo, ..., Sa |\n * | | ddd | Sun, Mon, ..., Sat |\n * | | dddd | Sunday, Monday, ..., Saturday |\n * | Day of ISO week | E | 1, 2, ..., 7 |\n * | ISO week | W | 1, 2, ..., 53 |\n * | | Wo | 1st, 2nd, ..., 53rd |\n * | | WW | 01, 02, ..., 53 |\n * | Year | YY | 00, 01, ..., 99 |\n * | | YYYY | 1900, 1901, ..., 2099 |\n * | ISO week-numbering year | GG | 00, 01, ..., 99 |\n * | | GGGG | 1900, 1901, ..., 2099 |\n * | AM/PM | A | AM, PM |\n * | | a | am, pm |\n * | | aa | a.m., p.m. |\n * | Hour | H | 0, 1, ... 23 |\n * | | HH | 00, 01, ... 23 |\n * | | h | 1, 2, ..., 12 |\n * | | hh | 01, 02, ..., 12 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | 1/10 of second | S | 0, 1, ..., 9 |\n * | 1/100 of second | SS | 00, 01, ..., 99 |\n * | Millisecond | SSS | 000, 001, ..., 999 |\n * | Timezone | Z | -01:00, +00:00, ... +12:00 |\n * | | ZZ | -0100, +0000, ..., +1200 |\n * | Seconds timestamp | X | 512969520 |\n * | Milliseconds timestamp | x | 512969520900 |\n * | Long format | LT | 05:30 a.m. |\n * | | LTS | 05:30:15 a.m. |\n * | | L | 07/02/1995 |\n * | | l | 7/2/1995 |\n * | | LL | July 2 1995 |\n * | | ll | Jul 2 1995 |\n * | | LLL | July 2 1995 05:30 a.m. |\n * | | lll | Jul 2 1995 05:30 a.m. |\n * | | LLLL | Sunday, July 2 1995 05:30 a.m. |\n * | | llll | Sun, Jul 2 1995 05:30 a.m. |\n *\n * The characters wrapped in square brackets are escaped.\n *\n * The result may vary by locale.\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/DD/YYYY'\n * )\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(\n * new Date(2014, 6, 2),\n * 'Do [de] MMMM YYYY',\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n */\nexport default function 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\n var locale = options.locale || defaultLocale\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var localeFormatters = locale.formatters || {}\n var formattingTokensRegExp = locale.formattingTokensRegExp || defaultFormattingTokensRegExp\n var formatLong = locale.formatLong\n\n var originalDate = toDate(dirtyDate, options)\n\n if (!isValid(originalDate, options)) {\n return 'Invalid Date'\n }\n\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 var timezoneOffset = originalDate.getTimezoneOffset()\n var utcDate = addUTCMinutes(originalDate, -timezoneOffset, options)\n\n var formatterOptions = cloneObject(options)\n formatterOptions.locale = locale\n formatterOptions.formatters = formatters\n\n // When UTC functions will be implemented, options._originalDate will likely be a part of public API.\n // Right now, please don't use it in locales. If you have to use an original date,\n // please restore it from `date`, adding a timezone offset to it.\n formatterOptions._originalDate = originalDate\n\n var result = formatStr\n .replace(longFormattingTokensRegExp, function (substring) {\n if (substring[0] === '[') {\n return substring\n }\n\n if (substring[0] === '\\\\') {\n return cleanEscapedString(substring)\n }\n\n return formatLong(substring)\n })\n .replace(formattingTokensRegExp, function (substring) {\n var formatter = localeFormatters[substring] || formatters[substring]\n\n if (formatter) {\n return formatter(utcDate, formatterOptions)\n } else {\n return cleanEscapedString(substring)\n }\n })\n\n return result\n}\n\nfunction cleanEscapedString (input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|]$/g, '')\n }\n return input.replace(/\\\\/g, '')\n}\n","import toDate from '../../toDate/index.js'\n\n// 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\nexport default function addUTCMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions)\n var amount = Number(dirtyAmount)\n date.setUTCMinutes(date.getUTCMinutes() + amount)\n return date\n}\n","var patterns = {\n 'M': /^(1[0-2]|0?\\d)/, // 0 to 12\n 'D': /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n 'DDD': /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n 'W': /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n 'YYYY': /^(\\d{1,4})/, // 0 to 9999\n 'H': /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n 'm': /^([0-5]?\\d)/, // 0 to 59\n 'Z': /^([+-])(\\d{2}):(\\d{2})/,\n 'ZZ': /^([+-])(\\d{2})(\\d{2})/,\n singleDigit: /^(\\d)/,\n twoDigits: /^(\\d{2})/,\n threeDigits: /^(\\d{3})/,\n fourDigits: /^(\\d{4})/,\n anyDigits: /^(\\d+)/\n}\n\nfunction parseDecimal (matchResult) {\n return parseInt(matchResult[1], 10)\n}\n\nvar parsers = {\n // Year: 00, 01, ..., 99\n 'YY': {\n unit: 'twoDigitYear',\n match: patterns.twoDigits,\n parse: function (matchResult) {\n return parseDecimal(matchResult)\n }\n },\n\n // Year: 1900, 1901, ..., 2099\n 'YYYY': {\n unit: 'year',\n match: patterns.YYYY,\n parse: parseDecimal\n },\n\n // ISO week-numbering year: 00, 01, ..., 99\n 'GG': {\n unit: 'isoYear',\n match: patterns.twoDigits,\n parse: function (matchResult) {\n return parseDecimal(matchResult) + 1900\n }\n },\n\n // ISO week-numbering year: 1900, 1901, ..., 2099\n 'GGGG': {\n unit: 'isoYear',\n match: patterns.YYYY,\n parse: parseDecimal\n },\n\n // Quarter: 1, 2, 3, 4\n 'Q': {\n unit: 'quarter',\n match: patterns.singleDigit,\n parse: parseDecimal\n },\n\n // Ordinal quarter\n 'Qo': {\n unit: 'quarter',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'quarter'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'quarter'})\n }\n },\n\n // Month: 1, 2, ..., 12\n 'M': {\n unit: 'month',\n match: patterns.M,\n parse: function (matchResult) {\n return parseDecimal(matchResult) - 1\n }\n },\n\n // Ordinal month\n 'Mo': {\n unit: 'month',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'month'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'month'}) - 1\n }\n },\n\n // Month: 01, 02, ..., 12\n 'MM': {\n unit: 'month',\n match: patterns.twoDigits,\n parse: function (matchResult) {\n return parseDecimal(matchResult) - 1\n }\n },\n\n // Month: Jan, Feb, ..., Dec\n 'MMM': {\n unit: 'month',\n match: function (string, options) {\n return options.locale.match.months(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.month(matchResult, {type: 'short'})\n }\n },\n\n // Month: January, February, ..., December\n 'MMMM': {\n unit: 'month',\n match: function (string, options) {\n return options.locale.match.months(string, {type: 'long'}) ||\n options.locale.match.months(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.month(matchResult, {type: 'long'})\n\n if (parseResult == null) {\n parseResult = options.locale.match.month(matchResult, {type: 'short'})\n }\n\n return parseResult\n }\n },\n\n // ISO week: 1, 2, ..., 53\n 'W': {\n unit: 'isoWeek',\n match: patterns.W,\n parse: parseDecimal\n },\n\n // Ordinal ISO week\n 'Wo': {\n unit: 'isoWeek',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'isoWeek'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'isoWeek'})\n }\n },\n\n // ISO week: 01, 02, ..., 53\n 'WW': {\n unit: 'isoWeek',\n match: patterns.twoDigits,\n parse: parseDecimal\n },\n\n // Day of week: 0, 1, ..., 6\n 'd': {\n unit: 'dayOfWeek',\n match: patterns.singleDigit,\n parse: parseDecimal\n },\n\n // Ordinal day of week\n 'do': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'dayOfWeek'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'dayOfWeek'})\n }\n },\n\n // Day of week: Su, Mo, ..., Sa\n 'dd': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.weekdays(string, {type: 'narrow'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.weekday(matchResult, {type: 'narrow'})\n }\n },\n\n // Day of week: Sun, Mon, ..., Sat\n 'ddd': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.weekdays(string, {type: 'short'}) ||\n options.locale.match.weekdays(string, {type: 'narrow'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.weekday(matchResult, {type: 'short'})\n\n if (parseResult == null) {\n parseResult = options.locale.match.weekday(matchResult, {type: 'narrow'})\n }\n\n return parseResult\n }\n },\n\n // Day of week: Sunday, Monday, ..., Saturday\n 'dddd': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.weekdays(string, {type: 'long'}) ||\n options.locale.match.weekdays(string, {type: 'short'}) ||\n options.locale.match.weekdays(string, {type: 'narrow'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.weekday(matchResult, {type: 'long'})\n\n if (parseResult == null) {\n parseResult = options.locale.match.weekday(matchResult, {type: 'short'})\n\n if (parseResult == null) {\n parseResult = options.locale.match.weekday(matchResult, {type: 'narrow'})\n }\n }\n\n return parseResult\n }\n },\n\n // Day of ISO week: 1, 2, ..., 7\n 'E': {\n unit: 'dayOfISOWeek',\n match: patterns.singleDigit,\n parse: function (matchResult) {\n return parseDecimal(matchResult)\n }\n },\n\n // Day of month: 1, 2, ..., 31\n 'D': {\n unit: 'dayOfMonth',\n match: patterns.D,\n parse: parseDecimal\n },\n\n // Ordinal day of month\n 'Do': {\n unit: 'dayOfMonth',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'dayOfMonth'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'dayOfMonth'})\n }\n },\n\n // Day of month: 01, 02, ..., 31\n 'DD': {\n unit: 'dayOfMonth',\n match: patterns.twoDigits,\n parse: parseDecimal\n },\n\n // Day of year: 1, 2, ..., 366\n 'DDD': {\n unit: 'dayOfYear',\n match: patterns.DDD,\n parse: parseDecimal\n },\n\n // Ordinal day of year\n 'DDDo': {\n unit: 'dayOfYear',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'dayOfYear'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'dayOfYear'})\n }\n },\n\n // Day of year: 001, 002, ..., 366\n 'DDDD': {\n unit: 'dayOfYear',\n match: patterns.threeDigits,\n parse: parseDecimal\n },\n\n // AM, PM\n 'A': {\n unit: 'timeOfDay',\n match: function (string, options) {\n return options.locale.match.timesOfDay(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.timeOfDay(matchResult, {type: 'short'})\n }\n },\n\n // a.m., p.m.\n 'aa': {\n unit: 'timeOfDay',\n match: function (string, options) {\n return options.locale.match.timesOfDay(string, {type: 'long'}) ||\n options.locale.match.timesOfDay(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.timeOfDay(matchResult, {type: 'long'})\n\n if (parseResult == null) {\n parseResult = options.locale.match.timeOfDay(matchResult, {type: 'short'})\n }\n\n return parseResult\n }\n },\n\n // Hour: 0, 1, ... 23\n 'H': {\n unit: 'hours',\n match: patterns.H,\n parse: parseDecimal\n },\n\n // Hour: 00, 01, ..., 23\n 'HH': {\n unit: 'hours',\n match: patterns.twoDigits,\n parse: parseDecimal\n },\n\n // Hour: 1, 2, ..., 12\n 'h': {\n unit: 'timeOfDayHours',\n match: patterns.M,\n parse: parseDecimal\n },\n\n // Hour: 01, 02, ..., 12\n 'hh': {\n unit: 'timeOfDayHours',\n match: patterns.twoDigits,\n parse: parseDecimal\n },\n\n // Minute: 0, 1, ..., 59\n 'm': {\n unit: 'minutes',\n match: patterns.m,\n parse: parseDecimal\n },\n\n // Minute: 00, 01, ..., 59\n 'mm': {\n unit: 'minutes',\n match: patterns.twoDigits,\n parse: parseDecimal\n },\n\n // Second: 0, 1, ..., 59\n 's': {\n unit: 'seconds',\n match: patterns.m,\n parse: parseDecimal\n },\n\n // Second: 00, 01, ..., 59\n 'ss': {\n unit: 'seconds',\n match: patterns.twoDigits,\n parse: parseDecimal\n },\n\n // 1/10 of second: 0, 1, ..., 9\n 'S': {\n unit: 'milliseconds',\n match: patterns.singleDigit,\n parse: function (matchResult) {\n return parseDecimal(matchResult) * 100\n }\n },\n\n // 1/100 of second: 00, 01, ..., 99\n 'SS': {\n unit: 'milliseconds',\n match: patterns.twoDigits,\n parse: function (matchResult) {\n return parseDecimal(matchResult) * 10\n }\n },\n\n // Millisecond: 000, 001, ..., 999\n 'SSS': {\n unit: 'milliseconds',\n match: patterns.threeDigits,\n parse: parseDecimal\n },\n\n // Timezone: -01:00, +00:00, ... +12:00\n 'Z': {\n unit: 'timezone',\n match: patterns.Z,\n parse: function (matchResult) {\n var sign = matchResult[1]\n var hours = parseInt(matchResult[2], 10)\n var minutes = parseInt(matchResult[3], 10)\n var absoluteOffset = hours * 60 + minutes\n return (sign === '+') ? absoluteOffset : -absoluteOffset\n }\n },\n\n // Timezone: -0100, +0000, ... +1200\n 'ZZ': {\n unit: 'timezone',\n match: patterns.ZZ,\n parse: function (matchResult) {\n var sign = matchResult[1]\n var hours = parseInt(matchResult[2], 10)\n var minutes = parseInt(matchResult[3], 10)\n var absoluteOffset = hours * 60 + minutes\n return (sign === '+') ? absoluteOffset : -absoluteOffset\n }\n },\n\n // Seconds timestamp: 512969520\n 'X': {\n unit: 'timestamp',\n match: patterns.anyDigits,\n parse: function (matchResult) {\n return parseDecimal(matchResult) * 1000\n }\n },\n\n // Milliseconds timestamp: 512969520900\n 'x': {\n unit: 'timestamp',\n match: patterns.anyDigits,\n parse: parseDecimal\n }\n}\n\nparsers['a'] = parsers['A']\n\nexport default parsers\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_DAY = 86400000\n\n// 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\nexport default function setUTCISOWeekYear (dirtyDate, dirtyISOYear, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions)\n var isoYear = Number(dirtyISOYear)\n var dateStartOfYear = startOfUTCISOWeekYear(date, dirtyOptions)\n var diff = Math.floor((date.getTime() - dateStartOfYear.getTime()) / MILLISECONDS_IN_DAY)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setUTCFullYear(isoYear, 0, 4)\n fourthOfJanuary.setUTCHours(0, 0, 0, 0)\n date = startOfUTCISOWeekYear(fourthOfJanuary, dirtyOptions)\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import setUTCDay from '../../../_lib/setUTCDay/index.js'\nimport setUTCISODay from '../../../_lib/setUTCISODay/index.js'\nimport setUTCISOWeek from '../../../_lib/setUTCISOWeek/index.js'\nimport setUTCISOWeekYear from '../../../_lib/setUTCISOWeekYear/index.js'\nimport startOfUTCISOWeek from '../../../_lib/startOfUTCISOWeek/index.js'\nimport startOfUTCISOWeekYear from '../../../_lib/startOfUTCISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\nfunction setTimeOfDay (hours, timeOfDay) {\n var isAM = timeOfDay === 0\n\n if (isAM) {\n if (hours === 12) {\n return 0\n }\n } else {\n if (hours !== 12) {\n return 12 + hours\n }\n }\n\n return hours\n}\n\nvar units = {\n twoDigitYear: {\n priority: 10,\n set: function (dateValues, value) {\n var century = Math.floor(dateValues.date.getUTCFullYear() / 100)\n var year = century * 100 + value\n dateValues.date.setUTCFullYear(year, 0, 1)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n year: {\n priority: 10,\n set: function (dateValues, value) {\n dateValues.date.setUTCFullYear(value, 0, 1)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n isoYear: {\n priority: 10,\n set: function (dateValues, value, options) {\n dateValues.date = startOfUTCISOWeekYear(setUTCISOWeekYear(dateValues.date, value, options), options)\n return dateValues\n }\n },\n\n quarter: {\n priority: 20,\n set: function (dateValues, value) {\n dateValues.date.setUTCMonth((value - 1) * 3, 1)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n month: {\n priority: 30,\n set: function (dateValues, value) {\n dateValues.date.setUTCMonth(value, 1)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n isoWeek: {\n priority: 40,\n set: function (dateValues, value, options) {\n dateValues.date = startOfUTCISOWeek(setUTCISOWeek(dateValues.date, value, options), options)\n return dateValues\n }\n },\n\n dayOfWeek: {\n priority: 50,\n set: function (dateValues, value, options) {\n dateValues.date = setUTCDay(dateValues.date, value, options)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n dayOfISOWeek: {\n priority: 50,\n set: function (dateValues, value, options) {\n dateValues.date = setUTCISODay(dateValues.date, value, options)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n dayOfMonth: {\n priority: 50,\n set: function (dateValues, value) {\n dateValues.date.setUTCDate(value)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n dayOfYear: {\n priority: 50,\n set: function (dateValues, value) {\n dateValues.date.setUTCMonth(0, value)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n timeOfDay: {\n priority: 60,\n set: function (dateValues, value, options) {\n dateValues.timeOfDay = value\n return dateValues\n }\n },\n\n hours: {\n priority: 70,\n set: function (dateValues, value, options) {\n dateValues.date.setUTCHours(value, 0, 0, 0)\n return dateValues\n }\n },\n\n timeOfDayHours: {\n priority: 70,\n set: function (dateValues, value, options) {\n var timeOfDay = dateValues.timeOfDay\n if (timeOfDay != null) {\n value = setTimeOfDay(value, timeOfDay)\n }\n dateValues.date.setUTCHours(value, 0, 0, 0)\n return dateValues\n }\n },\n\n minutes: {\n priority: 80,\n set: function (dateValues, value) {\n dateValues.date.setUTCMinutes(value, 0, 0)\n return dateValues\n }\n },\n\n seconds: {\n priority: 90,\n set: function (dateValues, value) {\n dateValues.date.setUTCSeconds(value, 0)\n return dateValues\n }\n },\n\n milliseconds: {\n priority: 100,\n set: function (dateValues, value) {\n dateValues.date.setUTCMilliseconds(value)\n return dateValues\n }\n },\n\n timezone: {\n priority: 110,\n set: function (dateValues, value) {\n dateValues.date = new Date(dateValues.date.getTime() - value * MILLISECONDS_IN_MINUTE)\n return dateValues\n }\n },\n\n timestamp: {\n priority: 120,\n set: function (dateValues, value) {\n dateValues.date = new Date(value)\n return dateValues\n }\n }\n}\n\nexport default units\n","import toDate from '../../toDate/index.js'\nimport getUTCISOWeek from '../getUTCISOWeek/index.js'\n\n// 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\nexport default function setUTCISOWeek (dirtyDate, dirtyISOWeek, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions)\n var isoWeek = Number(dirtyISOWeek)\n var diff = getUTCISOWeek(date, dirtyOptions) - isoWeek\n date.setUTCDate(date.getUTCDate() - diff * 7)\n return date\n}\n","import toDate from '../../toDate/index.js'\n\n// 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\nexport default function setUTCDay (dirtyDate, dirtyDay, dirtyOptions) {\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn === undefined ? 0 : Number(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn === undefined ? defaultWeekStartsOn : Number(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\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, dirtyOptions)\n var day = Number(dirtyDay)\n\n var currentDay = date.getUTCDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import toDate from '../../toDate/index.js'\n\n// 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\nexport default function setUTCISODay (dirtyDate, dirtyDay, dirtyOptions) {\n var day = Number(dirtyDay)\n\n if (day % 7 === 0) {\n day = day - 7\n }\n\n var weekStartsOn = 1\n var date = toDate(dirtyDate, dirtyOptions)\n var currentDay = date.getUTCDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import toDate from '../toDate/index.js'\nimport subMinutes from '../subMinutes/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport parsers from './_lib/parsers/index.js'\nimport units from './_lib/units/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\n\nvar TIMEZONE_UNIT_PRIORITY = 110\nvar MILLISECONDS_IN_MINUTE = 60000\n\nvar longFormattingTokensRegExp = /(\\[[^[]*])|(\\\\)?(LTS|LT|LLLL|LLL|LL|L|llll|lll|ll|l)/g\nvar defaultParsingTokensRegExp = /(\\[[^[]*])|(\\\\)?(x|ss|s|mm|m|hh|h|do|dddd|ddd|dd|d|aa|a|ZZ|Z|YYYY|YY|X|Wo|WW|W|SSS|SS|S|Qo|Q|Mo|MMMM|MMM|MM|M|HH|H|GGGG|GG|E|Do|DDDo|DDDD|DDD|DD|D|A|.)/g\n\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.\n *\n * Accepted format tokens:\n * | Unit | Priority | Token | Input examples |\n * |-------------------------|----------|-------|----------------------------------|\n * | Year | 10 | YY | 00, 01, ..., 99 |\n * | | | YYYY | 1900, 1901, ..., 2099 |\n * | ISO week-numbering year | 10 | GG | 00, 01, ..., 99 |\n * | | | GGGG | 1900, 1901, ..., 2099 |\n * | Quarter | 20 | Q | 1, 2, 3, 4 |\n * | | | Qo | 1st, 2nd, 3rd, 4th |\n * | Month | 30 | M | 1, 2, ..., 12 |\n * | | | Mo | 1st, 2nd, ..., 12th |\n * | | | MM | 01, 02, ..., 12 |\n * | | | MMM | Jan, Feb, ..., Dec |\n * | | | MMMM | January, February, ..., December |\n * | ISO week | 40 | W | 1, 2, ..., 53 |\n * | | | Wo | 1st, 2nd, ..., 53rd |\n * | | | WW | 01, 02, ..., 53 |\n * | Day of week | 50 | d | 0, 1, ..., 6 |\n * | | | do | 0th, 1st, ..., 6th |\n * | | | dd | Su, Mo, ..., Sa |\n * | | | ddd | Sun, Mon, ..., Sat |\n * | | | dddd | Sunday, Monday, ..., Saturday |\n * | Day of ISO week | 50 | E | 1, 2, ..., 7 |\n * | Day of month | 50 | D | 1, 2, ..., 31 |\n * | | | Do | 1st, 2nd, ..., 31st |\n * | | | DD | 01, 02, ..., 31 |\n * | Day of year | 50 | DDD | 1, 2, ..., 366 |\n * | | | DDDo | 1st, 2nd, ..., 366th |\n * | | | DDDD | 001, 002, ..., 366 |\n * | Time of day | 60 | A | AM, PM |\n * | | | a | am, pm |\n * | | | aa | a.m., p.m. |\n * | Hour | 70 | H | 0, 1, ... 23 |\n * | | | HH | 00, 01, ... 23 |\n * | Time of day hour | 70 | h | 1, 2, ..., 12 |\n * | | | hh | 01, 02, ..., 12 |\n * | Minute | 80 | m | 0, 1, ..., 59 |\n * | | | mm | 00, 01, ..., 59 |\n * | Second | 90 | s | 0, 1, ..., 59 |\n * | | | ss | 00, 01, ..., 59 |\n * | 1/10 of second | 100 | S | 0, 1, ..., 9 |\n * | 1/100 of second | 100 | SS | 00, 01, ..., 99 |\n * | Millisecond | 100 | SSS | 000, 001, ..., 999 |\n * | Timezone | 110 | Z | -01:00, +00:00, ... +12:00 |\n * | | | ZZ | -0100, +0000, ..., +1200 |\n * | Seconds timestamp | 120 | X | 512969520 |\n * | Milliseconds timestamp | 120 | x | 512969520900 |\n *\n * Values will be assigned to the date in the ascending 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 `baseDate` which works as a context of parsing.\n *\n * `baseDate` must be passed for correct work of the function.\n * If you're not sure which `baseDate` 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 `baseDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * Also, `parse` unfolds long formats like those in [format]{@link https://date-fns.org/docs/format}:\n * | Token | Input examples |\n * |-------|--------------------------------|\n * | LT | 05:30 a.m. |\n * | LTS | 05:30:15 a.m. |\n * | L | 07/02/1995 |\n * | l | 7/2/1995 |\n * | LL | July 2 1995 |\n * | ll | Jul 2 1995 |\n * | LLL | July 2 1995 05:30 a.m. |\n * | lll | Jul 2 1995 05:30 a.m. |\n * | LLLL | Sunday, July 2 1995 05:30 a.m. |\n * | llll | Sun, Jul 2 1995 05:30 a.m. |\n *\n * The characters wrapped in square brackets in the format string are escaped.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `baseDate` 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 * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|String|Number} baseDate - the date to took the missing higher priority values from\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\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 * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse(\n * '02/11/2014',\n * 'MM/DD/YYYY',\n * new Date()\n * )\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in English locale in the context of 2010 year:\n * import eoLocale from 'date-fns/locale/eo'\n * var result = parse(\n * '28-a de februaro',\n * 'Do [de] MMMM',\n * new Date(2010, 0, 1)\n * {locale: eoLocale}\n * )\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse (dirtyDateString, dirtyFormatString, dirtyBaseDate, 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 options = dirtyOptions || {}\n\n var weekStartsOn = options.weekStartsOn === undefined ? 0 : Number(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var locale = options.locale || defaultLocale\n var localeParsers = locale.parsers || {}\n var localeUnits = locale.units || {}\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var formatString = String(dirtyFormatString)\n .replace(longFormattingTokensRegExp, function (substring) {\n if (substring[0] === '[') {\n return substring\n }\n\n if (substring[0] === '\\\\') {\n return cleanEscapedString(substring)\n }\n\n return locale.formatLong(substring)\n })\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBaseDate, options)\n } else {\n return new Date(NaN)\n }\n }\n\n var subFnOptions = cloneObject(options)\n subFnOptions.locale = locale\n\n var tokens = formatString.match(locale.parsingTokensRegExp || defaultParsingTokensRegExp)\n var tokensLength = tokens.length\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }]\n\n var i\n for (i = 0; i < tokensLength; i++) {\n var token = tokens[i]\n var parser = localeParsers[token] || parsers[token]\n if (parser) {\n var matchResult\n\n if (parser.match instanceof RegExp) {\n matchResult = parser.match.exec(dateString)\n } else {\n matchResult = parser.match(dateString, subFnOptions)\n }\n\n if (!matchResult) {\n return new Date(NaN)\n }\n\n var unitName = parser.unit\n var unit = localeUnits[unitName] || units[unitName]\n\n setters.push({\n priority: unit.priority,\n set: unit.set,\n value: parser.parse(matchResult, subFnOptions),\n index: setters.length\n })\n\n var substring = matchResult[0]\n dateString = dateString.slice(substring.length)\n } else {\n var head = tokens[i].match(/^\\[.*]$/) ? tokens[i].replace(/^\\[|]$/g, '') : tokens[i]\n if (dateString.indexOf(head) === 0) {\n dateString = dateString.slice(head.length)\n } else {\n return new Date(NaN)\n }\n }\n }\n\n var uniquePrioritySetters = setters\n .map(function (setter) {\n return setter.priority\n })\n .sort(function (a, b) {\n return a - b\n })\n .filter(function (priority, index, array) {\n return array.indexOf(priority) === index\n })\n .map(function (priority) {\n return setters\n .filter(function (setter) {\n return setter.priority === priority\n })\n .reverse()\n })\n .map(function (setterArray) {\n return setterArray[0]\n })\n\n var date = toDate(dirtyBaseDate, options)\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\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 var utcDate = subMinutes(date, date.getTimezoneOffset())\n\n var dateValues = {date: utcDate}\n\n var settersLength = uniquePrioritySetters.length\n for (i = 0; i < settersLength; i++) {\n var setter = uniquePrioritySetters[i]\n dateValues = setter.set(dateValues, setter.value, subFnOptions)\n }\n\n return dateValues.date\n}\n\nfunction dateToSystemTimezone (dateValues) {\n var date = dateValues.date\n var time = date.getTime()\n\n // Get the system timezone offset at (moment of time - offset)\n var offset = date.getTimezoneOffset()\n\n // Get the system timezone offset at the exact moment of time\n offset = new Date(time + offset * MILLISECONDS_IN_MINUTE).getTimezoneOffset()\n\n // Convert date in timezone \"UTC+00:00\" to the system timezone\n dateValues.date = new Date(time + offset * MILLISECONDS_IN_MINUTE)\n\n return dateValues\n}\n\nfunction cleanEscapedString (input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|]$/g, '')\n }\n return input.replace(/\\\\/g, '')\n}\n","import addMinutes from '../addMinutes/index.js'\n\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the mintues subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * var result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nexport default function subMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = Number(dirtyAmount)\n return addMinutes(dirtyDate, -amount, dirtyOptions)\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 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 global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\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 * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, false, 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 = clone;\n","import { format, parse, isValid, compareAsc } from 'date-fns';\nimport clone from 'lodash.clone';\nimport def from './default';\n\nconst date = clone(def);\n\ndate.isRight = true;\n\ndate.compare = function (x, y, column) {\n function cook(d) {\n if (column && column.dateInputFormat) {\n return parse(`${d}`, `${column.dateInputFormat}`, new Date());\n }\n return d;\n }\n x = cook(x);\n y = cook(y);\n if (!isValid(x)) {\n return -1;\n }\n if (!isValid(y)) {\n return 1;\n }\n return compareAsc(x, y);\n};\n\ndate.format = function (v, column) {\n if (v === undefined || v === null) return '';\n // convert to date\n const date = parse(v, column.dateInputFormat, new Date());\n return format(date, column.dateOutputFormat);\n};\n\nexport default date;\n","import toDate from '../toDate/index.js'\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 * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\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 */\nexport default function compareAsc (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var diff = dateLeft.getTime() - dateRight.getTime()\n\n if (diff < 0) {\n return -1\n } else if (diff > 0) {\n return 1\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff\n }\n}\n","import clone from 'lodash.clone';\nimport def from './default';\n\nconst number = clone(def);\n\nnumber.isRight = true;\n\nnumber.filterPredicate = function (rowval, filter) {\n return number.compare(rowval, filter) === 0;\n};\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\nexport default number;\n","import clone from 'lodash.clone';\nimport number from './number';\n\nconst decimal = clone(number);\ndecimal.format = function (v) {\n if (v === undefined || v === null) return '';\n return parseFloat(Math.round(v * 100) / 100).toFixed(2);\n};\n\nexport default decimal;\n","import clone from 'lodash.clone';\nimport number from './number';\n\nconst percentage = clone(number);\n\npercentage.format = function (v) {\n if (v === undefined || v === null) return '';\n return `${parseFloat(v * 100).toFixed(2)}%`;\n};\n\nexport default percentage;\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//\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//\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\nimport each from 'lodash.foreach';\nimport assign from 'lodash.assign';\nimport cloneDeep from 'lodash.clonedeep';\nimport filter from 'lodash.filter';\nimport diacriticless from 'diacriticless';\nimport defaultType from './types/default';\nimport VgtPagination from './VgtPagination.vue';\nimport VgtGlobalSearch from './VgtGlobalSearch.vue';\nimport VgtFilterRow from './VgtFilterRow.vue';\n\n// here we load each data type module.\nimport * as CoreDataTypes from './types/index';\n\nconst dataTypes = {};\nconst coreDataTypes = CoreDataTypes.default;\neach(Object.keys(coreDataTypes), (key) => {\n const compName = key.replace(/^\\.\\//, '').replace(/\\.js/, '');\n dataTypes[compName] = coreDataTypes[key].default;\n});\n\nexport default {\n name: 'vue-good-table',\n props: {\n theme: { default: '' },\n mode: { default: 'local' }, // could be remote\n totalRows: { }, // required if mode = 'remote'\n styleClass: { default: 'vgt-table bordered' },\n columns: { },\n rows: { },\n lineNumbers: { default: false },\n responsive: { default: true },\n rtl: { default: false },\n rowStyleClass: { default: null, type: [Function, String] },\n\n groupOptions: {\n default() {\n return {\n enabled: false,\n };\n },\n },\n\n selectOptions: {\n default() {\n return {\n enabled: false,\n selectionInfoClass: '',\n selectionText: 'rows selected',\n clearSelectionText: 'clear',\n };\n },\n },\n\n // sort\n sortOptions: {\n default() {\n return {\n enabled: true,\n initialSortBy: {},\n };\n },\n },\n\n // pagination\n paginationOptions: {\n default() {\n return {\n enabled: false,\n perPage: 10,\n perPageDropdown: null,\n position: 'bottom',\n dropdownAllowAll: true,\n };\n },\n },\n\n searchOptions: {\n default() {\n return {\n enabled: false,\n trigger: null,\n externalQuery: null,\n searchFn: null,\n placeholder: 'Search Table',\n };\n },\n },\n },\n\n data: () => ({\n // text options\n nextText: 'Next',\n prevText: 'Prev',\n rowsPerPageText: 'Rows per page',\n ofText: 'of',\n allText: 'All',\n\n // internal select options\n selectable: false,\n selectionInfoClass: '',\n selectionText: 'rows selected',\n clearSelectionText: 'clear',\n\n // internal sort options\n sortable: true,\n defaultSortBy: null,\n\n // internal search options\n searchEnabled: false,\n searchTrigger: null,\n externalSearchQuery: null,\n searchFn: null,\n searchPlaceholder: 'Search Table',\n\n // internal pagination options\n perPage: null,\n paginate: false,\n paginateOnTop: false,\n paginateOnBottom: true,\n customRowsPerPageDropdown: [],\n paginateDropdownAllowAll: true,\n\n currentPage: 1,\n currentPerPage: 10,\n sortColumn: -1,\n sortType: 'asc',\n globalSearchTerm: '',\n filteredRows: [],\n columnFilters: {},\n forceSearch: false,\n sortChanged: false,\n dataTypes: dataTypes || {},\n\n // to keep track of select-all\n allSelected: false,\n }),\n\n watch: {\n rows: {\n handler() {\n this.filterRows(this.columnFilters, false);\n },\n deep: true,\n immediate: true,\n },\n\n selectOptions: {\n handler() {\n this.initializeSelect();\n },\n deep: true,\n immediate: true,\n },\n\n paginationOptions: {\n handler() {\n this.initializePagination();\n },\n deep: true,\n immediate: true,\n },\n\n searchOptions: {\n handler() {\n this.initializeSearch();\n },\n deep: true,\n immediate: true,\n },\n\n sortOptions: {\n handler() {\n this.initializeSort();\n },\n deep: true,\n immediate: true,\n },\n },\n\n computed: {\n showEmptySlot() {\n if (!this.paginated.length) return true;\n\n if (this.paginated[0].label === 'no groups'\n && !this.paginated[0].children.length) return true;\n\n return false;\n },\n\n selectionInfo() {\n return `${this.selectedRowCount} ${this.selectionText}`;\n },\n\n selectedRowCount() {\n return this.selectedRows.length;\n },\n\n selectedRows() {\n const selectedRows = [];\n each(this.processedRows, (headerRow) => {\n each(headerRow.children, (row) => {\n if (row.vgtSelected) {\n selectedRows.push(row);\n }\n });\n });\n return selectedRows;\n },\n\n fullColspan() {\n let fullColspan = this.columns.length;\n if (this.lineNumbers) fullColspan++;\n if (this.selectable) fullColspan++;\n return fullColspan;\n },\n groupHeaderOnTop() {\n if (this.groupOptions\n && this.groupOptions.enabled\n && this.groupOptions.headerPosition\n && this.groupOptions.headerPosition === 'bottom') {\n return false;\n }\n if (this.groupOptions && this.groupOptions.enabled) return true;\n\n // will only get here if groupOptions is false\n return false;\n },\n groupHeaderOnBottom() {\n if (this.groupOptions\n && this.groupOptions.enabled\n && this.groupOptions.headerPosition\n && this.groupOptions.headerPosition === 'bottom') {\n return true;\n }\n return false;\n },\n totalRowCount() {\n let total = 0;\n each(this.processedRows, (headerRow) => {\n total += headerRow.children ? headerRow.children.length : 0;\n });\n return total;\n },\n tableStyleClasses() {\n let classes = this.styleClass;\n classes += ` ${this.theme}`;\n return classes;\n },\n\n searchTerm() {\n return (this.externalSearchQuery != null) ? this.externalSearchQuery : this.globalSearchTerm;\n },\n\n //\n globalSearchAllowed() {\n if (this.searchEnabled\n && !!this.globalSearchTerm\n && this.searchTrigger !== 'enter') {\n return true;\n }\n\n if (this.externalSearchQuery != null\n && 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\n // this is done everytime sortColumn\n // or sort type changes\n //----------------------------------------\n processedRows() {\n // we only process rows when mode is local\n let computedRows = this.filteredRows;\n if (this.mode === 'remote') {\n return computedRows;\n }\n\n // take care of the global filter here also\n if (this.globalSearchAllowed) {\n // here also we need to de-construct and then\n // re-construct the rows.\n const allRows = [];\n each(this.filteredRows, (headerRow) => {\n allRows.push(...headerRow.children);\n });\n const filteredRows = [];\n each(allRows, (row) => {\n each(this.columns, (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 const foundMatch = this.searchFn(\n row,\n col,\n this.collectFormatted(row, col),\n this.searchTerm\n );\n if (foundMatch) {\n filteredRows.push(row);\n return false; // break the loop\n }\n } else {\n // lets get the formatted row/col value\n let tableValue = this.collectFormatted(row, col);\n if (typeof tableValue !== 'undefined' && tableValue !== null) {\n // table value\n tableValue = diacriticless(String(tableValue).toLowerCase());\n // search term\n const searchTerm = diacriticless(this.searchTerm.toLowerCase());\n\n // comparison\n if (tableValue.search(searchTerm) > -1) {\n filteredRows.push(row);\n return false; // break loop\n }\n }\n }\n }\n });\n });\n\n // this is where we emit on search\n this.$emit('on-search', {\n searchTerm: this.searchTerm,\n rowCount: filteredRows.length,\n });\n\n // here we need to reconstruct the nested structure\n // of rows\n computedRows = [];\n each(this.filteredRows, (headerRow) => {\n const i = headerRow.vgt_header_id;\n const children = filter(filteredRows, ['vgt_id', i]);\n if (children.length) {\n const newHeaderRow = cloneDeep(headerRow);\n newHeaderRow.children = children;\n computedRows.push(newHeaderRow);\n }\n });\n }\n\n // taking care of sort here only if sort has changed\n if (this.sortColumn !== -1\n && this.isSortableColumn(this.sortColumn) &&\n // if search trigger is enter then we only sort\n // when enter is hit\n (this.searchTrigger !== 'enter' || this.sortChanged)) {\n this.sortChanged = false;\n\n each(computedRows, (cRows) => {\n cRows.children.sort((x, y) => {\n if (!this.columns[this.sortColumn]) return 0;\n\n const xvalue = this.collect(x, this.columns[this.sortColumn].field);\n const yvalue = this.collect(y, this.columns[this.sortColumn].field);\n\n // if user has provided a custom sort, use that instead of\n // built-in sort\n const { sortFn } = this.columns[this.sortColumn];\n if (sortFn && typeof sortFn === 'function') {\n return sortFn(xvalue, yvalue, this.columns[this.sortColumn], x, y) * (this.sortType === 'desc' ? -1 : 1);\n }\n\n // built in sort\n const { typeDef } = this.typedColumns[this.sortColumn];\n return typeDef.compare(xvalue, yvalue, this.columns[this.sortColumn])\n * (this.sortType === 'desc' ? -1 : 1);\n });\n });\n }\n\n // if the filtering is event based, we need to maintain filter\n // rows\n if (this.searchTrigger === 'enter') {\n this.filteredRows = computedRows;\n }\n\n return computedRows;\n },\n\n paginated() {\n if (!this.processedRows.length) return [];\n\n if (this.mode === 'remote') {\n return this.processedRows;\n }\n\n // for every group, extract the child rows\n // to cater to paging\n let paginatedRows = [];\n each(this.processedRows, (childRows) => {\n paginatedRows.push(...childRows.children);\n });\n\n if (this.paginate) {\n let pageStart = (this.currentPage - 1) * this.currentPerPage;\n\n // 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 if (pageStart >= paginatedRows.length\n || this.currentPerPage === -1) {\n this.currentPage = 1;\n pageStart = 0;\n }\n\n // calculate page end now\n let pageEnd = paginatedRows.length + 1;\n\n // if the setting is set to 'all'\n if (this.currentPerPage !== -1) {\n pageEnd = this.currentPage * this.currentPerPage;\n }\n\n paginatedRows = paginatedRows.slice(pageStart, pageEnd);\n }\n // reconstruct paginated rows here\n const reconstructedRows = [];\n each(this.processedRows, (headerRow) => {\n const i = headerRow.vgt_header_id;\n const children = filter(paginatedRows, ['vgt_id', i]);\n if (children.length) {\n const newHeaderRow = cloneDeep(headerRow);\n newHeaderRow.children = children;\n reconstructedRows.push(newHeaderRow);\n }\n });\n return reconstructedRows;\n },\n\n originalRows() {\n const rows = cloneDeep(this.rows);\n let nestedRows = [];\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 }\n // we need to preserve the original index of\n // rows so lets do that\n let index = 0;\n each(nestedRows, (headerRow, i) => {\n each(headerRow.children, (row, j) => {\n row.originalIndex = index++;\n });\n });\n\n return nestedRows;\n },\n\n typedColumns() {\n const columns = assign(this.columns, []);\n for (let i = 0; i < this.columns.length; i++) {\n const column = columns[i];\n column.typeDef = this.dataTypes[column.type] || defaultType;\n }\n return columns;\n },\n\n hasRowClickListener() {\n return this.$listeners && this.$listeners['on-row-click'];\n },\n },\n\n methods: {\n emitSelectNone() {\n this.$emit('on-select-all', {\n selected: false,\n selectedRows: [],\n });\n },\n\n unselectAllInternal() {\n this.emitSelectNone();\n each(this.originalRows, (headerRow, i) => {\n each(headerRow.children, (row, j) => {\n this.$set(row, 'vgtSelected', false);\n });\n });\n // we need to call this to propagate changes to paginated\n // rows\n this.filterRows();\n },\n\n unselectAll() {\n if (this.selectable && this.allSelected) {\n this.allSelected = false;\n // this.unselectAllInternal();\n }\n },\n\n toggleSelectAll() {\n if (!this.allSelected) {\n this.unselectAllInternal();\n return;\n }\n each(this.paginated, (headerRow) => {\n each(headerRow.children, (row) => {\n this.$set(row, 'vgtSelected', true);\n });\n });\n let selectedRows = [];\n if (this.groupOptions.enabled) {\n selectedRows = cloneDeep(this.paginated);\n } else {\n selectedRows = cloneDeep(this.paginated[0].children);\n }\n this.$emit('on-select-all', {\n selected: this.allSelected,\n selectedRows,\n });\n },\n\n changePage(value) {\n if (this.paginationOptions.enabled) {\n let paginationWidget = this.$refs.paginationBottom;\n if (this.paginationOptions.position === 'top') {\n paginationWidget = this.$refs.paginationTop;\n }\n if (paginationWidget) {\n paginationWidget.currentPage = value;\n // we also need to set the currentPage\n // for table.\n this.currentPage = value;\n }\n }\n },\n\n pageChangedEvent() {\n return {\n currentPage: this.currentPage,\n currentPerPage: this.currentPerPage,\n total: Math.floor(this.totalRowCount / this.currentPerPage),\n };\n },\n\n pageChanged(pagination) {\n // every time we change page we have to unselect all\n this.unselectAll();\n this.currentPage = pagination.currentPage;\n const pageChangedEvent = this.pageChangedEvent();\n this.$emit('on-page-change', pageChangedEvent);\n },\n\n perPageChanged(pagination) {\n this.currentPerPage = pagination.currentPerPage;\n const perPageChangedEvent = this.pageChangedEvent();\n this.$emit('on-per-page-change', perPageChangedEvent);\n },\n\n sort(index) {\n if (!this.isSortableColumn(index)) return;\n\n if (this.sortColumn === index) {\n this.sortType = this.sortType === 'asc' ? 'desc' : 'asc';\n } else {\n this.sortType = 'asc';\n this.sortColumn = index;\n }\n\n this.$emit('on-sort-change', {\n sortType: this.sortType,\n columnIndex: this.sortColumn,\n });\n\n this.unselectAll();\n // every time we change sort we need to reset to page 1\n this.changePage(1);\n\n // if the mode is remote, we don't need to do anything\n // after this.\n if (this.mode === 'remote') return;\n this.sortChanged = true;\n },\n\n click(row, index) {\n let selected = false;\n if (this.selectable) {\n selected = !row.vgtSelected;\n this.$set(row, 'vgtSelected', selected);\n if (!selected) {\n // if we're unselecting a row, we need to unselect\n // selectall\n this.unselectAll();\n }\n }\n this.$emit('on-row-click', {\n row,\n pageIndex: index,\n selected,\n });\n },\n\n onCellClicked(row, column, rowIndex) {\n this.$emit('on-cell-click', {\n row,\n column,\n rowIndex,\n });\n },\n\n onMouseenter(row, index) {\n this.$emit('on-row-mouseenter', {\n row,\n pageIndex: index,\n });\n },\n\n onMouseleave(row, index) {\n this.$emit('on-row-mouseleave', {\n row,\n pageIndex: index,\n });\n },\n\n searchTableOnEnter() {\n if (this.searchTrigger === 'enter') {\n this.resetTable();\n // we reset the filteredRows here because\n // we want to search across everything.\n this.filteredRows = this.originalRows;\n this.forceSearch = true;\n this.sortChanged = true;\n }\n },\n\n searchTableOnKeyUp() {\n if (this.searchTrigger !== 'enter') {\n this.resetTable();\n }\n },\n\n resetTable() {\n this.unselectAll();\n this.unselectAllInternal();\n // every time we searchTable\n this.changePage(1);\n },\n\n // field can be:\n // 1. function\n // 2. regular property - ex: 'prop'\n // 3. nested property path - ex: 'nested.prop'\n collect(obj, field) {\n // utility function to get nested property\n function dig(obj, selector) {\n let result = obj;\n const splitter = selector.split('.');\n for (let i = 0; i < splitter.length; i++) {\n if (typeof result === 'undefined') {\n return undefined;\n }\n result = result[splitter[i]];\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\n collectFormatted(obj, column, headerRow = false) {\n let value;\n if (headerRow && column.headerField) {\n value = this.collect(obj, column.headerField);\n } else {\n value = this.collect(obj, column.field);\n }\n if (value === undefined) return '';\n\n // if user has supplied custom formatter,\n // use that here\n if (column.formatFn && typeof column.formatFn === 'function') {\n return column.formatFn(value);\n }\n\n // lets format the resultant data\n let type = column.typeDef;\n // 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 if (!type) {\n type = this.dataTypes[column.type] || defaultType;\n }\n return type.format(value, column);\n },\n\n formattedRow(row) {\n const formattedRow = {};\n for (let i = 0; i < this.typedColumns.length; i++) {\n const col = this.typedColumns[i];\n // what happens if field is\n if (col.field) {\n formattedRow[col.field] = this.collectFormatted(row, col);\n }\n }\n return formattedRow;\n },\n\n // Check if a column is sortable.\n isSortableColumn(index) {\n const { sortable } = this.columns[index];\n const isSortable = typeof sortable === 'boolean' ? sortable : this.sortable;\n return isSortable;\n },\n\n // Get classes for the given header column.\n getHeaderClasses(column, index) {\n const isSortable = this.isSortableColumn(index);\n const classes = assign({}, this.getClasses(index, 'th'), {\n sorting: isSortable,\n 'sorting-desc': isSortable && this.sortColumn === index && this.sortType === 'desc',\n 'sorting-asc': isSortable && this.sortColumn === index && this.sortType === 'asc',\n });\n return classes;\n },\n\n // Get classes for the given column index & element.\n getClasses(index, element) {\n const { typeDef, [`${element}Class`]: custom } = this.typedColumns[index];\n let { isRight } = typeDef;\n if (this.rtl) isRight = true;\n const classes = {\n 'vgt-right-align': isRight,\n 'vgt-left-align': !isRight,\n [custom]: !!custom,\n };\n return classes;\n },\n\n // method to filter rows\n filterRows(columnFilters, fromFilter = 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 let computedRows = cloneDeep(this.originalRows);\n\n // do we have a filter to care about?\n // if not we don't need to do anything\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 this.changePage(1);\n this.unselectAll();\n // if mode is remote, we don't do any filtering here.\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 if (this.mode === 'remote' && fromFilter) {\n this.$emit('on-column-filter', {\n columnFilters: this.columnFilters,\n });\n return;\n }\n\n for (let i = 0; i < this.typedColumns.length; i++) {\n const col = this.typedColumns[i];\n if (this.columnFilters[col.field]) {\n computedRows = each(computedRows, (headerRow) => {\n const newChildren = headerRow.children.filter((row) => {\n // If column has a custom filter, use that.\n if (col.filterOptions\n && typeof col.filterOptions.filterFn === 'function') {\n return col.filterOptions.filterFn(\n this.collect(row, col.field),\n this.columnFilters[col.field]\n );\n }\n // Otherwise Use default filters\n const { typeDef } = col;\n return typeDef.filterPredicate(\n this.collect(row, col.field),\n this.columnFilters[col.field]\n );\n });\n // should we remove the header?\n headerRow.children = newChildren;\n });\n }\n }\n }\n this.filteredRows = computedRows;\n },\n\n getCurrentIndex(index) {\n return ((this.currentPage - 1) * this.currentPerPage) + index + 1;\n },\n\n getRowStyleClass(row) {\n let classes = '';\n if (this.hasRowClickListener) classes += 'clickable';\n let rowStyleClasses;\n if (typeof this.rowStyleClass === 'function') {\n rowStyleClasses = this.rowStyleClass(row);\n } else {\n rowStyleClasses = this.rowStyleClass;\n }\n if (rowStyleClasses) {\n classes += ` ${rowStyleClasses}`;\n }\n return classes;\n },\n\n handleGrouped(originalRows) {\n each(originalRows, (headerRow, i) => {\n headerRow.vgt_header_id = i;\n each(headerRow.children, (childRow) => {\n childRow.vgt_id = i;\n });\n });\n return originalRows;\n },\n\n // handleRows() {\n // if (!this.groupOptions.enabled) {\n // this.filteredRows = this.handleGrouped([{\n // label: 'no groups',\n // children: this.originalRows,\n // }]);\n // } else {\n // this.filteredRows = this.handleGrouped(this.originalRows);\n // }\n // },\n\n initializePagination() {\n const {\n enabled,\n perPage,\n position,\n perPageDropdown,\n dropdownAllowAll,\n nextLabel,\n prevLabel,\n rowsPerPageLabel,\n ofLabel,\n allLabel,\n setCurrentPage,\n } = this.paginationOptions;\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 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\n if (typeof dropdownAllowAll === 'boolean') {\n this.paginateDropdownAllowAll = dropdownAllowAll;\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 allLabel === 'string') {\n this.allText = allLabel;\n }\n\n if (typeof setCurrentPage === 'number') {\n setTimeout(() => {\n this.changePage(setCurrentPage);\n }, 500);\n }\n },\n\n initializeSearch() {\n const {\n enabled,\n trigger,\n externalQuery,\n searchFn,\n placeholder,\n } = this.searchOptions;\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\n initializeSort() {\n const { enabled, initialSortBy } = this.sortOptions;\n\n if (typeof enabled === 'boolean') {\n this.sortable = enabled;\n }\n\n if (typeof initialSortBy === 'object') {\n this.defaultSortBy = initialSortBy;\n }\n },\n\n initializeSelect() {\n const {\n enabled,\n selectionInfoClass,\n selectionText,\n clearSelectionText,\n } = this.selectOptions;\n\n if (typeof enabled === 'boolean') {\n this.selectable = enabled;\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\n mounted() {\n // this.filteredRows = this.originalRows;\n\n if (this.perPage) {\n this.currentPerPage = this.perPage;\n }\n\n // take care of default sort on mount\n if (this.defaultSortBy) {\n for (let index = 0; index < this.columns.length; index++) {\n const col = this.columns[index];\n if (col.field === this.defaultSortBy.field) {\n this.sortColumn = index;\n this.sortType = this.defaultSortBy.type || 'asc';\n this.sortChanged = true;\n break;\n }\n }\n }\n },\n\n components: {\n 'vgt-pagination': VgtPagination,\n 'vgt-global-search': VgtGlobalSearch,\n 'vgt-filter-row': VgtFilterRow,\n },\n};\n","import GoodTable from './components/Table.vue';\n\nconst GoodTablePlugin = {\n install(Vue, options) {\n Vue.component(GoodTable.name, GoodTable);\n },\n};\n\n// Automatic installation if Vue has been added to the global scope.\nif (typeof window !== 'undefined' && window.Vue) {\n window.Vue.use(GoodTablePlugin);\n}\n\nexport default GoodTablePlugin;\nexport { GoodTable };\n"],"names":["MAX_SAFE_INTEGER","argsTag","funcTag","genTag","reIsUint","arrayEach","array","iteratee","index","length","func","transform","objectProto","Object","prototype","hasOwnProperty","objectToString","toString","propertyIsEnumerable","nativeKeys","keys","arg","arrayLikeKeys","value","inherited","result","isArray","isObjectLike","isArrayLike","isArrayLikeObject","call","isArguments","n","Array","baseTimes","String","skipIndexes","key","isIndex","push","eachFunc","fromRight","baseEach","object","baseFor","collection","iterable","keysFunc","props","createBaseFor","baseKeys","Ctor","constructor","proto","test","isLength","tag","type","isObject","isFunction","identity","overArg","nativeMax","Math","max","nonEnumShadows","valueOf","assignValue","objValue","eq","undefined","isPrototype","other","assigner","sources","customizer","guard","isIterateeCall","source","start","args","arguments","otherArgs","thisArg","apply","this","createAssigner","newValue","copyObject","LARGE_ARRAY_SIZE","HASH_UNDEFINED","boolTag","dateTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","symbolTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reFlags","reIsHostCtor","cloneableTags","freeGlobal","global","freeSelf","self","root","Function","freeExports","exports","nodeType","freeModule","module","moduleExports","addMapEntry","map","pair","set","addSetEntry","add","arrayReduce","accumulator","initAccum","isHostObject","e","mapToArray","size","forEach","setToArray","uid","arrayProto","funcProto","coreJsData","maskSrcKey","exec","IE_PROTO","funcToString","reIsNative","RegExp","replace","Buffer","Symbol","Uint8Array","getPrototype","getPrototypeOf","objectCreate","create","splice","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","DataView","getNative","Map","Promise","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","entries","clear","entry","ListCache","MapCache","Stack","__data__","assocIndexOf","baseClone","isDeep","isFull","stack","isArr","input","initCloneArray","copyArray","getTag","isFunc","buffer","slice","copy","cloneBuffer","initCloneObject","getSymbols","copySymbols","baseAssign","cloneFunc","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","typedArray","cloneTypedArray","cloneMap","regexp","lastIndex","cloneSet","symbol","initCloneByTag","stacked","get","symbolsFunc","values","offset","arrayPush","baseGetAllKeys","getAllKeys","subValue","baseIsNative","arrayBuffer","getMapData","data","getValue","has","pop","hash","string","cache","pairs","ArrayBuffer","resolve","ctorString","FUNC_ERROR_TEXT","UNORDERED_COMPARE_FLAG","PARTIAL_COMPARE_FLAG","INFINITY","arrayTag","errorTag","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","typedArrayTags","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arrayFilter","predicate","resIndex","arraySome","symbolToString","SetCache","baseFilter","baseGet","path","isKey","castPath","toKey","baseHasIn","baseIsEqual","bitmask","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","name","message","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","othLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIteratee","srcValue","isStrictComparable","matchesStrictComparable","defaultValue","hasFunc","hasPath","hasIn","baseMatchesProperty","matchData","getMatchData","noCustomizer","baseIsMatch","baseMatches","basePropertyDeep","stringToPath","arrLength","seen","arrValue","othIndex","isSymbol","memoize","baseToString","match","number","quote","resolver","TypeError","memoized","Cache","baseUnary","diacritics","a","A","b","B","c","C","d","D","E","f","F","g","G","h","H","i","I","j","J","k","K","l","L","m","M","N","o","O","p","P","q","Q","r","R","s","S","t","T","u","U","v","V","w","W","x","X","y","Y","z","Z","text","searchChar","charAt","foundChar","indexOf","join","rowval","filter","rowValue","diacriticless","toLowerCase","searchTerm","search","cook","handlePerPage","perPageChanged","customRowsPerPageDropdown","lenght","rowsPerPageOptions","currentPerPage","total","ofText","first","currentPage","last","min","nextIsPossible","pageChanged","$emit","event","parseInt","target","cloneDeep","defaultRowsPerPageDropdown","perPage","found","searchEnabled","$slots","populateInitialFilters","mode","globalSearchEnabled","columns","col","filterOptions","enabled","column","isFilterable","filterDropdownItems","isDropdown","_typeof","placeholder","label","timer","clearTimeout","setTimeout","updateFiltersImmediately","$set","columnFilters","field","filterValue","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","DEFAULT_ADDITIONAL_DIGITS","patterns","dateTimeDelimeter","plainTime","YY","YYY","YYYY","YYYYY","MM","DDD","MMDD","Www","WwwD","HH","HHMM","HHMMSS","timezone","timezoneZ","timezoneHH","timezoneHHMM","toDate","argument","dirtyOptions","Date","NaN","options","additionalDigits","Number","RangeError","getTime","dateStrings","dateString","timeString","split","date","token","time","splitDateString","parseYearResult","patternYYY","patternYYYYY","yearString","year","restDateString","centuryString","parseYear","month","week","setUTCFullYear","dayOfYear","day","dayOfISOYear","dayOfWeek","parseDate","timestamp","hours","minutes","parseFloat","seconds","parseTime","timezoneString","absoluteOffset","parseTimezone","getTimezoneOffset","isoYear","diff","getUTCDay","setUTCDate","getUTCDate","cloneObject","dirtyObject","property","addMinutes","dirtyDate","dirtyAmount","amount","addMilliseconds","isValid","isNaN","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","tokensToBeShortedPattern","buildShortLongFormat","format","obj","formatLongLocale","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","defaultType","indexCallback","dirtyIndex","buildLocalizeArrayFn","weekdayValues","narrow","short","long","monthValues","timeOfDayValues","uppercase","lowercase","buildMatchFn","dirtyString","pattern","buildParseFn","matchResult","patternsArray","findIndex","locale","formatDistance","count","addSuffix","comparison","formatLong","LTS","LT","LL","LLL","LLLL","ll","lll","llll","formatRelative","baseDate","localize","ordinalNumber","dirtyNumber","rem100","weekday","weekdays","months","timeOfDay","timesOfDay","ordinalNumbers","any","weekStartsOn","firstWeekContainsDate","MILLISECONDS_IN_DAY","getUTCDayOfYear","setUTCMonth","setUTCHours","difference","floor","startOfUTCISOWeek","getUTCISOWeekYear","getUTCFullYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","round","formatters","getUTCMonth","Mo","unit","addLeadingZeros","MMM","MMMM","ceil","Qo","quarter","Do","DD","DDDo","DDDD","dd","ddd","dddd","do","Wo","WW","substr","GG","GGGG","getUTCHours","hh","getUTCMinutes","mm","getUTCSeconds","ss","getUTCMilliseconds","SS","SSS","formatTimezone","_originalDate","ZZ","originalDate","aa","delimeter","sign","absOffset","abs","targetLength","output","longFormattingTokensRegExp","defaultFormattingTokensRegExp","dirtyFormatStr","formatStr","defaultLocale","localeFormatters","formattingTokensRegExp","utcDate","setUTCMinutes","addUTCMinutes","formatterOptions","substring","cleanEscapedString","formatter","singleDigit","twoDigits","threeDigits","fourDigits","anyDigits","parseDecimal","parsers","parse","parseResult","units","twoDigitYear","priority","dateValues","dirtyISOYear","dateStartOfYear","isoWeek","dirtyISOWeek","dirtyDay","localeWeekStartsOn","defaultWeekStartsOn","currentDay","setUTCDay","dayOfISOWeek","setUTCISODay","dayOfMonth","timeOfDayHours","setTimeOfDay","setUTCSeconds","milliseconds","setUTCMilliseconds","TIMEZONE_UNIT_PRIORITY","defaultParsingTokensRegExp","dirtyDateString","dirtyFormatString","dirtyBaseDate","localeParsers","localeUnits","formatString","subFnOptions","tokens","parsingTokensRegExp","tokensLength","setters","dateToSystemTimezone","parser","unitName","head","uniquePrioritySetters","setter","sort","reverse","setterArray","subMinutes","settersLength","clone","def","isRight","compare","dateInputFormat","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","compareAsc","dateOutputFormat","filterPredicate","Infinity","decimal","toFixed","percentage","dataTypes","coreDataTypes","compName","default","filterRows","initializeSelect","initializePagination","initializeSearch","initializeSort","paginated","children","selectedRowCount","selectionText","selectedRows","processedRows","headerRow","row","vgtSelected","fullColspan","lineNumbers","selectable","groupOptions","headerPosition","classes","styleClass","theme","externalSearchQuery","globalSearchTerm","searchTrigger","forceSearch","computedRows","filteredRows","globalSearchAllowed","allRows","_this","globalSearchDisabled","searchFn","collectFormatted","tableValue","vgt_header_id","newHeaderRow","sortColumn","isSortableColumn","sortChanged","cRows","xvalue","collect","yvalue","sortFn","sortType","typedColumns","typeDef","paginatedRows","childRows","paginate","pageStart","pageEnd","reconstructedRows","rows","nestedRows","handleGrouped","originalIndex","assign","$listeners","emitSelectNone","originalRows","allSelected","unselectAllInternal","paginationOptions","paginationWidget","$refs","paginationBottom","position","paginationTop","totalRowCount","pagination","unselectAll","pageChangedEvent","perPageChangedEvent","changePage","selected","rowIndex","resetTable","selector","splitter","dig","headerField","formatFn","formattedRow","sortable","isSortable","getClasses","element","custom","rtl","fromFilter","_this4","each","newChildren","filterFn","rowStyleClasses","hasRowClickListener","rowStyleClass","childRow","vgt_id","perPageDropdown","dropdownAllowAll","nextLabel","prevLabel","rowsPerPageLabel","ofLabel","allLabel","setCurrentPage","paginateOnTop","paginateOnBottom","paginateDropdownAllowAll","nextText","prevText","rowsPerPageText","allText","searchOptions","trigger","externalQuery","searchPlaceholder","sortOptions","initialSortBy","defaultSortBy","selectOptions","selectionInfoClass","clearSelectionText","VgtPagination","VgtGlobalSearch","VgtFilterRow","Vue","component","GoodTable","window","use","GoodTablePlugin"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vue-good-table.min.js","sources":["../node_modules/lodash.foreach/index.js","../node_modules/lodash.assign/index.js","../node_modules/lodash.clonedeep/index.js","../node_modules/lodash.filter/index.js","../node_modules/diacriticless/diacriticless.js","../src/components/types/default.js","../src/components/VgtPagination.vue.js?rollup_plugin_vue=%7B%22type%22%3A%22script%22%2C%22lang%22%3A%22js%22%7D","../src/components/VgtGlobalSearch.vue.js?rollup_plugin_vue=%7B%22type%22%3A%22script%22%2C%22lang%22%3A%22js%22%7D","../src/components/VgtFilterRow.vue.js?rollup_plugin_vue=%7B%22type%22%3A%22script%22%2C%22lang%22%3A%22js%22%7D","../node_modules/date-fns/esm/toDate/index.js","../node_modules/date-fns/esm/_lib/cloneObject/index.js","../node_modules/date-fns/esm/addMinutes/index.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeArrayFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildParseFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/locale/_lib/parseDecimal/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/esm/format/_lib/formatters/index.js","../node_modules/date-fns/esm/format/index.js","../node_modules/date-fns/esm/_lib/addUTCMinutes/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../node_modules/date-fns/esm/_lib/setUTCISOWeekYear/index.js","../node_modules/date-fns/esm/parse/_lib/units/index.js","../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../node_modules/date-fns/esm/parse/index.js","../node_modules/date-fns/esm/subMinutes/index.js","../node_modules/lodash.clone/index.js","../src/components/types/date.js","../node_modules/date-fns/esm/compareAsc/index.js","../src/components/types/number.js","../src/components/types/decimal.js","../src/components/types/percentage.js","../src/components/Table.vue.js?rollup_plugin_vue=%7B%22type%22%3A%22script%22%2C%22lang%22%3A%22js%22%7D","../src/index.js"],"sourcesContent":["/**\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\nmodule.exports = forEach;\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 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(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 nativeMax = Math.max;\n\n/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\nvar nonEnumShadows = !propertyIsEnumerable.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(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 * 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 `_.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(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is 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 * 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 * 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(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\n/**\n * 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\nmodule.exports = assign;\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 global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\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 * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.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, 3));\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","// 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\nmodule.exports = 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 -1);\n },\n\n compare(x, y) {\n function cook(d) {\n if (typeof d === 'undefined' || d === null) return '';\n return d.toLowerCase();\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//\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\nimport cloneDeep from 'lodash.clonedeep';\n\nexport default {\n name: 'VgtPagination',\n props: {\n styleClass: { default: 'table table-bordered' },\n total: { default: null },\n perPage: {},\n rtl: { default: false },\n customRowsPerPageDropdown: { default() { return []; } },\n paginateDropdownAllowAll: { default: true },\n\n // text options\n nextText: { default: 'Next' },\n prevText: { default: 'Prev' },\n rowsPerPageText: { default: 'Rows per page:' },\n ofText: { default: 'of' },\n allText: { default: 'All' },\n },\n\n data: () => ({\n currentPage: 1,\n currentPerPage: 10,\n rowsPerPageOptions: [],\n defaultRowsPerPageDropdown: [10, 20, 30, 40, 50],\n }),\n\n watch: {\n perPage() {\n this.handlePerPage();\n this.perPageChanged();\n },\n\n customRowsPerPageDropdown() {\n if (this.customRowsPerPageDropdown !== null\n && (Array.isArray(this.customRowsPerPageDropdown)\n && this.customRowsPerPageDropdown.lenght !== 0)) {\n this.rowsPerPageOptions = this.customRowsPerPageDropdown;\n }\n },\n\n },\n\n computed: {\n paginatedInfo() {\n if (this.currentPerPage === -1) {\n return `1 - ${this.total} ${this.ofText} ${this.total}`;\n }\n let first = ((this.currentPage - 1) * this.currentPerPage) + 1 ?\n ((this.currentPage - 1) * this.currentPerPage) + 1 : 1;\n\n if (first > this.total) {\n // this probably happened as a result of filtering\n first = 1;\n this.currentPage = 1;\n }\n\n const last = Math.min(this.total, this.currentPerPage * this.currentPage);\n return `${first} - ${last} ${this.ofText} ${this.total}`;\n },\n nextIsPossible() {\n return (this.total > this.currentPerPage * this.currentPage);\n },\n prevIsPossible() {\n return this.currentPage > 1;\n },\n },\n\n methods: {\n // optionSelected(option) {\n // return this.currentPerPage === option;\n // },\n\n reset() {\n\n },\n\n nextPage() {\n if (this.currentPerPage === -1) return;\n if (this.nextIsPossible) {\n ++this.currentPage;\n this.pageChanged();\n }\n },\n\n previousPage() {\n if (this.currentPage > 1) {\n --this.currentPage;\n this.pageChanged();\n }\n },\n\n pageChanged() {\n this.$emit('page-changed', { currentPage: this.currentPage });\n },\n\n perPageChanged(event) {\n if (event) {\n this.currentPerPage = parseInt(event.target.value, 10);\n }\n this.$emit('per-page-changed', { currentPerPage: this.currentPerPage });\n },\n\n getRowsPerPageDropdown() {\n return this.rowsPerPageOptions;\n },\n\n handlePerPage() {\n this.rowsPerPageOptions = cloneDeep(this.defaultRowsPerPageDropdown);\n if (this.perPage) {\n this.currentPerPage = this.perPage;\n // if perPage doesn't already exist, we add it\n let found = false;\n for (let i = 0; i < this.rowsPerPageOptions.length; i++) {\n if (this.rowsPerPageOptions[i] === this.perPage) {\n found = true;\n }\n }\n if (!found) this.rowsPerPageOptions.push(this.perPage);\n } else {\n // reset to default\n this.currentPerPage = 10;\n }\n\n if (this.customRowsPerPageDropdown !== null\n && (Array.isArray(this.customRowsPerPageDropdown)\n && this.customRowsPerPageDropdown.length !== 0)) {\n this.rowsPerPageOptions = this.customRowsPerPageDropdown;\n }\n },\n },\n\n mounted() {\n this.handlePerPage();\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\nexport default {\n name: 'VgtGlobalSearch',\n props: [\n 'value',\n 'searchEnabled',\n 'globalSearchPlaceholder',\n ],\n data() {\n return {\n globalSearchTerm: null,\n };\n },\n computed: {\n 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(value) {\n this.$emit('input', value);\n this.$emit('on-keyup', value);\n },\n entered(value) {\n this.$emit('on-enter', value);\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\nexport default {\n name: 'VgtFilterRow',\n props: [\n 'lineNumbers',\n 'columns',\n 'typedColumns',\n 'globalSearchEnabled',\n 'selectable',\n 'mode',\n ],\n watch: {\n columns: {\n handler() {\n this.populateInitialFilters();\n },\n deep: true,\n },\n },\n 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() {\n if (this.mode === 'remote' || !this.globalSearchEnabled) {\n for (let i = 0; i < this.columns.length; i++) {\n const col = this.columns[i];\n if (col.filterOptions && col.filterOptions.enabled) {\n return true;\n }\n }\n }\n return false;\n },\n },\n methods: {\n isFilterable(column) {\n return column.filterOptions\n && column.filterOptions.enabled;\n },\n\n isDropdown(column) {\n return this.isFilterable(column)\n && column.filterOptions.filterDropdownItems\n && column.filterOptions.filterDropdownItems.length;\n },\n\n isDropdownObjects(column) {\n return this.isDropdown(column)\n && typeof column.filterOptions.filterDropdownItems[0] === 'object';\n },\n\n isDropdownArray(column) {\n return this.isDropdown(column)\n && typeof column.filterOptions.filterDropdownItems[0] !== 'object';\n },\n\n // get column's defined placeholder or default one\n getPlaceholder(column) {\n const placeholder = (this.isFilterable(column) && column.filterOptions.placeholder) || `Filter ${column.label}`;\n return placeholder;\n },\n\n updateFiltersOnEnter(column, value) {\n this.updateFilters(column, value);\n },\n\n 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\n // since vue doesn't detect property addition and deletion, we\n // need to create helper function to set property etc\n updateFilters(column, value) {\n if (this.timer) clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n this.updateFiltersImmediately(column, value);\n }, 400);\n },\n\n updateFiltersImmediately(column, value) {\n this.$set(this.columnFilters, column.field, value);\n this.$emit('filter-changed', this.columnFilters);\n },\n\n populateInitialFilters() {\n for (let i = 0; i < this.columns.length; i++) {\n const col = this.columns[i];\n // lets see if there are initial\n // filters supplied by user\n if (this.isFilterable(col)\n && typeof col.filterOptions.filterValue !== 'undefined'\n && col.filterOptions.filterValue !== null) {\n this.updateFiltersImmediately(col, col.filterOptions.filterValue);\n this.$set(col.filterOptions, 'filterValue', undefined);\n }\n }\n },\n },\n mounted() {\n // take care of initial filters\n this.populateInitialFilters();\n },\n};\n","var MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar patterns = {\n dateTimeDelimeter: /[T ]/,\n plainTime: /:/,\n\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n ],\n\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n // timezone tokens\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-])(\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/\n}\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 an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument is null, it is treated as an invalid date.\n *\n * If all above fails, the function passes the given argument to Date constructor.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {*} argument - the value to convert\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function toDate (argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n if (argument === null) {\n return new Date(NaN)\n }\n\n var options = dirtyOptions || {}\n\n var additionalDigits = options.additionalDigits === undefined ? DEFAULT_ADDITIONAL_DIGITS : Number(options.additionalDigits)\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n // Clone the date\n if (argument instanceof 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 !== 'string') {\n return new Date(argument)\n }\n\n var dateStrings = splitDateString(argument)\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n var year = parseYearResult.year\n var restDateString = parseYearResult.restDateString\n\n var date = parseDate(restDateString, year)\n\n if (date) {\n var timestamp = date.getTime()\n var time = 0\n var offset\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time)\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone)\n } else {\n // get offset accurate to hour in timezones that change offset\n offset = new Date(timestamp + time).getTimezoneOffset()\n offset = new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE).getTimezoneOffset()\n }\n\n return new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE)\n } else {\n return new Date(argument)\n }\n}\n\nfunction splitDateString (dateString) {\n var dateStrings = {}\n var array = dateString.split(patterns.dateTimeDelimeter)\n var timeString\n\n if (patterns.plainTime.test(array[0])) {\n dateStrings.date = null\n timeString = array[0]\n } else {\n dateStrings.date = array[0]\n timeString = array[1]\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString)\n if (token) {\n dateStrings.time = timeString.replace(token[1], '')\n dateStrings.timezone = token[1]\n } else {\n dateStrings.time = timeString\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits]\n var patternYYYYY = patterns.YYYYY[additionalDigits]\n\n var token\n\n // YYYY or ±YYYYY\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString)\n if (token) {\n var yearString = token[1]\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n }\n }\n\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString)\n if (token) {\n var centuryString = token[1]\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n }\n}\n\nfunction parseDate (dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token\n var date\n var month\n var week\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0)\n date.setUTCFullYear(year)\n return date\n }\n\n // YYYY-MM\n token = patterns.MM.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n date.setUTCFullYear(year, month)\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString)\n if (token) {\n date = new Date(0)\n var dayOfYear = parseInt(token[1], 10)\n date.setUTCFullYear(year, 0, dayOfYear)\n return date\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = patterns.MMDD.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n var day = parseInt(token[2], 10)\n date.setUTCFullYear(year, month, day)\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n return dayOfISOYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n var dayOfWeek = parseInt(token[2], 10) - 1\n return dayOfISOYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime (timeString) {\n var token\n var hours\n var minutes\n\n // hh\n token = patterns.HH.exec(timeString)\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseFloat(token[2].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE\n }\n\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseInt(token[2], 10)\n var seconds = parseFloat(token[3].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction parseTimezone (timezoneString) {\n var token\n var absoluteOffset\n\n // Z\n token = patterns.timezoneZ.exec(timezoneString)\n if (token) {\n return 0\n }\n\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString)\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString)\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60 + parseInt(token[3], 10)\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n return 0\n}\n\nfunction dayOfISOYear (isoYear, week, day) {\n week = week || 0\n day = day || 0\n var date = new Date(0)\n date.setUTCFullYear(isoYear, 0, 4)\n var fourthOfJanuaryDay = date.getUTCDay() || 7\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","export default function cloneObject (dirtyObject) {\n dirtyObject = dirtyObject || {}\n var object = {}\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n object[property] = dirtyObject[property]\n }\n }\n\n return object\n}\n","import addMilliseconds from '../addMilliseconds/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = Number(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE, dirtyOptions)\n}\n","import toDate from '../toDate/index.js'\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 * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\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 */\nexport default function addMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var timestamp = toDate(dirtyDate, dirtyOptions).getTime()\n var amount = Number(dirtyAmount)\n return new Date(timestamp + amount)\n}\n","import toDate from '../toDate/index.js'\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 * @param {*} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\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('2014-02-31')\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid (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 return !isNaN(date)\n}\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n}\n\nexport default function formatDistance (token, count, options) {\n options = options || {}\n\n var result\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","var tokensToBeShortedPattern = /MMMM|MM|DD|dddd/g\n\nfunction buildShortLongFormat (format) {\n return format.replace(tokensToBeShortedPattern, function (token) {\n return token.slice(1)\n })\n}\n\n/**\n * @name buildFormatLongFn\n * @category Locale Helpers\n * @summary Build `formatLong` property for locale used by `format`, `formatRelative` and `parse` functions.\n *\n * @description\n * Build `formatLong` property for locale used by `format`, `formatRelative` and `parse` functions.\n * Returns a function which takes one of the following tokens as the argument:\n * `'LTS'`, `'LT'`, `'L'`, `'LL'`, `'LLL'`, `'l'`, `'ll'`, `'lll'`, `'llll'`\n * and returns a long format string written as `format` token strings.\n * See [format]{@link https://date-fns.org/docs/format}\n *\n * `'l'`, `'ll'`, `'lll'` and `'llll'` formats are built automatically\n * by shortening some of the tokens from corresponding unshortened formats\n * (e.g., if `LL` is `'MMMM DD YYYY'` then `ll` will be `MMM D YYYY`)\n *\n * @param {Object} obj - the object with long formats written as `format` token strings\n * @param {String} obj.LT - time format: hours and minutes\n * @param {String} obj.LTS - time format: hours, minutes and seconds\n * @param {String} obj.L - short date format: numeric day, month and year\n * @param {String} [obj.l] - short date format: numeric day, month and year (shortened)\n * @param {String} obj.LL - long date format: day, month in words, and year\n * @param {String} [obj.ll] - long date format: day, month in words, and year (shortened)\n * @param {String} obj.LLL - long date and time format\n * @param {String} [obj.lll] - long date and time format (shortened)\n * @param {String} obj.LLLL - long date, time and weekday format\n * @param {String} [obj.llll] - long date, time and weekday format (shortened)\n * @returns {Function} `formatLong` property of the locale\n *\n * @example\n * // For `en-US` locale:\n * locale.formatLong = buildFormatLongFn({\n * LT: 'h:mm aa',\n * LTS: 'h:mm:ss aa',\n * L: 'MM/DD/YYYY',\n * LL: 'MMMM D YYYY',\n * LLL: 'MMMM D YYYY h:mm aa',\n * LLLL: 'dddd, MMMM D YYYY h:mm aa'\n * })\n */\nexport default function buildFormatLongFn (obj) {\n var formatLongLocale = {\n LTS: obj.LTS,\n LT: obj.LT,\n L: obj.L,\n LL: obj.LL,\n LLL: obj.LLL,\n LLLL: obj.LLLL,\n l: obj.l || buildShortLongFormat(obj.L),\n ll: obj.ll || buildShortLongFormat(obj.LL),\n lll: obj.lll || buildShortLongFormat(obj.LLL),\n llll: obj.llll || buildShortLongFormat(obj.LLLL)\n }\n\n return function (token) {\n return formatLongLocale[token]\n }\n}\n","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js'\n\nvar formatLong = buildFormatLongFn({\n LT: 'h:mm aa',\n LTS: 'h:mm:ss aa',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D YYYY',\n LLL: 'MMMM D YYYY h:mm aa',\n LLLL: 'dddd, MMMM D YYYY h:mm aa'\n})\n\nexport default formatLong\n","var formatRelativeLocale = {\n lastWeek: '[last] dddd [at] LT',\n yesterday: '[yesterday at] LT',\n today: '[today at] LT',\n tomorrow: '[tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n other: 'L'\n}\n\nexport default function formatRelative (token, date, baseDate, options) {\n return formatRelativeLocale[token]\n}\n","/**\n * @name buildLocalizeFn\n * @category Locale Helpers\n * @summary Build `localize.weekday`, `localize.month` and `localize.timeOfDay` properties for the locale.\n *\n * @description\n * Build `localize.weekday`, `localize.month` and `localize.timeOfDay` properties for the locale\n * used by `format` function.\n * If no `type` is supplied to the options of the resulting function, `defaultType` will be used (see example).\n *\n * `localize.weekday` function takes the weekday index as argument (0 - Sunday).\n * `localize.month` takes the month index (0 - January).\n * `localize.timeOfDay` takes the hours. Use `indexCallback` to convert them to an array index (see example).\n *\n * @param {Object} values - the object with arrays of values\n * @param {String} defaultType - the default type for the localize function\n * @param {Function} [indexCallback] - the callback which takes the resulting function argument\n * and converts it into value array index\n * @returns {Function} the resulting function\n *\n * @example\n * var timeOfDayValues = {\n * uppercase: ['AM', 'PM'],\n * lowercase: ['am', 'pm'],\n * long: ['a.m.', 'p.m.']\n * }\n * locale.localize.timeOfDay = buildLocalizeFn(timeOfDayValues, 'long', function (hours) {\n * // 0 is a.m. array index, 1 is p.m. array index\n * return (hours / 12) >= 1 ? 1 : 0\n * })\n * locale.localize.timeOfDay(16, {type: 'uppercase'}) //=> 'PM'\n * locale.localize.timeOfDay(5) //=> 'a.m.'\n */\nexport default function buildLocalizeFn (values, defaultType, indexCallback) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {}\n var type = options.type ? String(options.type) : defaultType\n var valuesArray = values[type] || values[defaultType]\n var index = indexCallback ? indexCallback(Number(dirtyIndex)) : Number(dirtyIndex)\n return valuesArray[index]\n }\n}\n","/**\n * @name buildLocalizeArrayFn\n * @category Locale Helpers\n * @summary Build `localize.weekdays`, `localize.months` and `localize.timesOfDay` properties for the locale.\n *\n * @description\n * Build `localize.weekdays`, `localize.months` and `localize.timesOfDay` properties for the locale.\n * If no `type` is supplied to the options of the resulting function, `defaultType` will be used (see example).\n *\n * @param {Object} values - the object with arrays of values\n * @param {String} defaultType - the default type for the localize function\n * @returns {Function} the resulting function\n *\n * @example\n * var weekdayValues = {\n * narrow: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n * short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n * long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n * }\n * locale.localize.weekdays = buildLocalizeArrayFn(weekdayValues, 'long')\n * locale.localize.weekdays({type: 'narrow'}) //=> ['Su', 'Mo', ...]\n * locale.localize.weekdays() //=> ['Sunday', 'Monday', ...]\n */\nexport default function buildLocalizeArrayFn (values, defaultType) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {}\n var type = options.type ? String(options.type) : defaultType\n return values[type] || values[defaultType]\n }\n}\n","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'\nimport buildLocalizeArrayFn from '../../../_lib/buildLocalizeArrayFn/index.js'\n\n// 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.\nvar weekdayValues = {\n narrow: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n}\n\nvar monthValues = {\n short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n long: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n}\n\n// `timeOfDay` is used to designate which part of the day it is, when used with 12-hour clock.\n// Use the system which is used the most commonly in the locale.\n// For example, if the country doesn't use a.m./p.m., you can use `night`/`morning`/`afternoon`/`evening`:\n//\n// var timeOfDayValues = {\n// any: ['in the night', 'in the morning', 'in the afternoon', 'in the evening']\n// }\n//\n// And later:\n//\n// var localize = {\n// // The callback takes the hours as the argument and returns the array index\n// timeOfDay: buildLocalizeFn(timeOfDayValues, 'any', function (hours) {\n// if (hours >= 17) {\n// return 3\n// } else if (hours >= 12) {\n// return 2\n// } else if (hours >= 4) {\n// return 1\n// } else {\n// return 0\n// }\n// }),\n// timesOfDay: buildLocalizeArrayFn(timeOfDayValues, 'any')\n// }\nvar timeOfDayValues = {\n uppercase: ['AM', 'PM'],\n lowercase: ['am', 'pm'],\n long: ['a.m.', 'p.m.']\n}\n\nfunction ordinalNumber (dirtyNumber, dirtyOptions) {\n var number = Number(dirtyNumber)\n\n // 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 'month', 'quarter', 'week', 'isoWeek', 'dayOfYear',\n // 'dayOfMonth' or 'dayOfWeek'\n\n var rem100 = number % 100\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st'\n case 2:\n return number + 'nd'\n case 3:\n return number + 'rd'\n }\n }\n return number + 'th'\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n weekday: buildLocalizeFn(weekdayValues, 'long'),\n weekdays: buildLocalizeArrayFn(weekdayValues, 'long'),\n month: buildLocalizeFn(monthValues, 'long'),\n months: buildLocalizeArrayFn(monthValues, 'long'),\n timeOfDay: buildLocalizeFn(timeOfDayValues, 'long', function (hours) {\n return (hours / 12) >= 1 ? 1 : 0\n }),\n timesOfDay: buildLocalizeArrayFn(timeOfDayValues, 'long')\n}\n\nexport default localize\n","/**\n * @name buildMatchFn\n * @category Locale Helpers\n * @summary Build `match.weekdays`, `match.months` and `match.timesOfDay` properties for the locale.\n *\n * @description\n * Build `match.weekdays`, `match.months` and `match.timesOfDay` properties for the locale used by `parse` function.\n * If no `type` is supplied to the options of the resulting function, `defaultType` will be used (see example).\n * The result of the match function will be passed into corresponding parser function\n * (`match.weekday`, `match.month` or `match.timeOfDay` respectively. See `buildParseFn`).\n *\n * @param {Object} values - the object with RegExps\n * @param {String} defaultType - the default type for the match function\n * @returns {Function} the resulting function\n *\n * @example\n * var matchWeekdaysPatterns = {\n * narrow: /^(su|mo|tu|we|th|fr|sa)/i,\n * short: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n * long: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n * }\n * locale.match.weekdays = buildMatchFn(matchWeekdaysPatterns, 'long')\n * locale.match.weekdays('Sunday', {type: 'narrow'}) //=> ['Su', 'Su', ...]\n * locale.match.weekdays('Sunday') //=> ['Sunday', 'Sunday', ...]\n */\nexport default function buildMatchFn (patterns, defaultType) {\n return function (dirtyString, dirtyOptions) {\n var options = dirtyOptions || {}\n var type = options.type ? String(options.type) : defaultType\n var pattern = patterns[type] || patterns[defaultType]\n var string = String(dirtyString)\n return string.match(pattern)\n }\n}\n","/**\n * @name buildParseFn\n * @category Locale Helpers\n * @summary Build `match.weekday`, `match.month` and `match.timeOfDay` properties for the locale.\n *\n * @description\n * Build `match.weekday`, `match.month` and `match.timeOfDay` properties for the locale used by `parse` function.\n * The argument of the resulting function is the result of the corresponding match function\n * (`match.weekdays`, `match.months` or `match.timesOfDay` respectively. See `buildMatchFn`).\n *\n * @param {Object} values - the object with arrays of RegExps\n * @param {String} defaultType - the default type for the parser function\n * @returns {Function} the resulting function\n *\n * @example\n * var parseWeekdayPatterns = {\n * any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n * }\n * locale.match.weekday = buildParseFn(matchWeekdaysPatterns, 'long')\n * var matchResult = locale.match.weekdays('Friday')\n * locale.match.weekday(matchResult) //=> 5\n */\nexport default function buildParseFn (patterns, defaultType) {\n return function (matchResult, dirtyOptions) {\n var options = dirtyOptions || {}\n var type = options.type ? String(options.type) : defaultType\n var patternsArray = patterns[type] || patterns[defaultType]\n var string = matchResult[1]\n\n return patternsArray.findIndex(function (pattern) {\n return pattern.test(string)\n })\n }\n}\n","import buildMatchFn from '../../../_lib/buildMatchFn/index.js'\nimport buildParseFn from '../../../_lib/buildParseFn/index.js'\nimport buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js'\nimport parseDecimal from '../../../_lib/parseDecimal/index.js'\n\nvar matchOrdinalNumbersPattern = /^(\\d+)(th|st|nd|rd)?/i\n\nvar matchWeekdaysPatterns = {\n narrow: /^(su|mo|tu|we|th|fr|sa)/i,\n short: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n long: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n}\n\nvar parseWeekdayPatterns = {\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n}\n\nvar matchMonthsPatterns = {\n short: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n long: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n}\n\nvar parseMonthPatterns = {\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}\n\n// `timeOfDay` is used to designate which part of the day it is, when used with 12-hour clock.\n// Use the system which is used the most commonly in the locale.\n// For example, if the country doesn't use a.m./p.m., you can use `night`/`morning`/`afternoon`/`evening`:\n//\n// var matchTimesOfDayPatterns = {\n// long: /^((in the)? (night|morning|afternoon|evening?))/i\n// }\n//\n// var parseTimeOfDayPatterns = {\n// any: [/(night|morning)/i, /(afternoon|evening)/i]\n// }\nvar matchTimesOfDayPatterns = {\n short: /^(am|pm)/i,\n long: /^([ap]\\.?\\s?m\\.?)/i\n}\n\nvar parseTimeOfDayPatterns = {\n any: [/^a/i, /^p/i]\n}\n\nvar match = {\n ordinalNumbers: buildMatchPatternFn(matchOrdinalNumbersPattern),\n ordinalNumber: parseDecimal,\n weekdays: buildMatchFn(matchWeekdaysPatterns, 'long'),\n weekday: buildParseFn(parseWeekdayPatterns, 'any'),\n months: buildMatchFn(matchMonthsPatterns, 'long'),\n month: buildParseFn(parseMonthPatterns, 'any'),\n timesOfDay: buildMatchFn(matchTimesOfDayPatterns, 'long'),\n timeOfDay: buildParseFn(parseTimeOfDayPatterns, 'any')\n}\n\nexport default match\n","/**\n * @name buildMatchPatternFn\n * @category Locale Helpers\n * @summary Build match function from a single RegExp.\n *\n * @description\n * Build match function from a single RegExp.\n * Usually used for building `match.ordinalNumbers` property of the locale.\n *\n * @param {Object} pattern - the RegExp\n * @returns {Function} the resulting function\n *\n * @example\n * locale.match.ordinalNumbers = buildMatchPatternFn(/^(\\d+)(th|st|nd|rd)?/i)\n * locale.match.ordinalNumbers('3rd') //=> ['3rd', '3', 'rd', ...]\n */\nexport default function buildMatchPatternFn (pattern) {\n return function (dirtyString) {\n var string = String(dirtyString)\n return string.match(pattern)\n }\n}\n","import formatDistance from './_lib/formatDistance/index.js'\nimport formatLong from './_lib/formatLong/index.js'\nimport formatRelative from './_lib/formatRelative/index.js'\nimport localize from './_lib/localize/index.js'\nimport match from './_lib/match/index.js'\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n */\nvar locale = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n}\n\nexport default locale\n","/**\n * @name parseDecimal\n * @category Locale Helpers\n * @summary Parses the match result into decimal number.\n *\n * @description\n * Parses the match result into decimal number.\n * Uses the string matched with the first set of parentheses of match RegExp.\n *\n * @param {Array} matchResult - the object returned by matching function\n * @returns {Number} the parsed value\n *\n * @example\n * locale.match = {\n * ordinalNumbers: (dirtyString) {\n * return String(dirtyString).match(/^(\\d+)(th|st|nd|rd)?/i)\n * },\n * ordinalNumber: parseDecimal\n * }\n */\nexport default function parseDecimal (matchResult) {\n return parseInt(matchResult[1], 10)\n}\n","import toDate from '../../toDate/index.js'\n\nvar MILLISECONDS_IN_DAY = 86400000\n\n// 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\nexport default function getUTCDayOfYear (dirtyDate, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions)\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","import toDate from '../../toDate/index.js'\n\n// 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\nexport default function startOfUTCISOWeek (dirtyDate, dirtyOptions) {\n var weekStartsOn = 1\n\n var date = toDate(dirtyDate, dirtyOptions)\n var day = date.getUTCDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setUTCDate(date.getUTCDate() - diff)\n date.setUTCHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\n\n// 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\nexport default function getUTCISOWeekYear (dirtyDate, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getUTCFullYear()\n\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, dirtyOptions)\n\n var fourthOfJanuaryOfThisYear = new Date(0)\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4)\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0)\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear, 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","import getUTCISOWeekYear from '../getUTCISOWeekYear/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\n\n// 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\nexport default function startOfUTCISOWeekYear (dirtyDate, dirtyOptions) {\n var year = getUTCISOWeekYear(dirtyDate, dirtyOptions)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setUTCFullYear(year, 0, 4)\n fourthOfJanuary.setUTCHours(0, 0, 0, 0)\n var date = startOfUTCISOWeek(fourthOfJanuary, dirtyOptions)\n return date\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n// 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\nexport default function getUTCISOWeek (dirtyDate, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions)\n var diff = startOfUTCISOWeek(date, dirtyOptions).getTime() - startOfUTCISOWeekYear(date, dirtyOptions).getTime()\n\n // 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 return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import getUTCDayOfYear from '../../../_lib/getUTCDayOfYear/index.js'\nimport getUTCISOWeek from '../../../_lib/getUTCISOWeek/index.js'\nimport getUTCISOWeekYear from '../../../_lib/getUTCISOWeekYear/index.js'\n\nvar formatters = {\n // Month: 1, 2, ..., 12\n 'M': function (date) {\n return date.getUTCMonth() + 1\n },\n\n // Month: 1st, 2nd, ..., 12th\n 'Mo': function (date, options) {\n var month = date.getUTCMonth() + 1\n return options.locale.localize.ordinalNumber(month, {unit: 'month'})\n },\n\n // Month: 01, 02, ..., 12\n 'MM': function (date) {\n return addLeadingZeros(date.getUTCMonth() + 1, 2)\n },\n\n // Month: Jan, Feb, ..., Dec\n 'MMM': function (date, options) {\n return options.locale.localize.month(date.getUTCMonth(), {type: 'short'})\n },\n\n // Month: January, February, ..., December\n 'MMMM': function (date, options) {\n return options.locale.localize.month(date.getUTCMonth(), {type: 'long'})\n },\n\n // Quarter: 1, 2, 3, 4\n 'Q': function (date) {\n return Math.ceil((date.getUTCMonth() + 1) / 3)\n },\n\n // Quarter: 1st, 2nd, 3rd, 4th\n 'Qo': function (date, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3)\n return options.locale.localize.ordinalNumber(quarter, {unit: 'quarter'})\n },\n\n // Day of month: 1, 2, ..., 31\n 'D': function (date) {\n return date.getUTCDate()\n },\n\n // Day of month: 1st, 2nd, ..., 31st\n 'Do': function (date, options) {\n return options.locale.localize.ordinalNumber(date.getUTCDate(), {unit: 'dayOfMonth'})\n },\n\n // Day of month: 01, 02, ..., 31\n 'DD': function (date) {\n return addLeadingZeros(date.getUTCDate(), 2)\n },\n\n // Day of year: 1, 2, ..., 366\n 'DDD': function (date) {\n return getUTCDayOfYear(date)\n },\n\n // Day of year: 1st, 2nd, ..., 366th\n 'DDDo': function (date, options) {\n return options.locale.localize.ordinalNumber(getUTCDayOfYear(date), {unit: 'dayOfYear'})\n },\n\n // Day of year: 001, 002, ..., 366\n 'DDDD': function (date) {\n return addLeadingZeros(getUTCDayOfYear(date), 3)\n },\n\n // Day of week: Su, Mo, ..., Sa\n 'dd': function (date, options) {\n return options.locale.localize.weekday(date.getUTCDay(), {type: 'narrow'})\n },\n\n // Day of week: Sun, Mon, ..., Sat\n 'ddd': function (date, options) {\n return options.locale.localize.weekday(date.getUTCDay(), {type: 'short'})\n },\n\n // Day of week: Sunday, Monday, ..., Saturday\n 'dddd': function (date, options) {\n return options.locale.localize.weekday(date.getUTCDay(), {type: 'long'})\n },\n\n // Day of week: 0, 1, ..., 6\n 'd': function (date) {\n return date.getUTCDay()\n },\n\n // Day of week: 0th, 1st, 2nd, ..., 6th\n 'do': function (date, options) {\n return options.locale.localize.ordinalNumber(date.getUTCDay(), {unit: 'dayOfWeek'})\n },\n\n // Day of ISO week: 1, 2, ..., 7\n 'E': function (date) {\n return date.getUTCDay() || 7\n },\n\n // ISO week: 1, 2, ..., 53\n 'W': function (date) {\n return getUTCISOWeek(date)\n },\n\n // ISO week: 1st, 2nd, ..., 53th\n 'Wo': function (date, options) {\n return options.locale.localize.ordinalNumber(getUTCISOWeek(date), {unit: 'isoWeek'})\n },\n\n // ISO week: 01, 02, ..., 53\n 'WW': function (date) {\n return addLeadingZeros(getUTCISOWeek(date), 2)\n },\n\n // Year: 00, 01, ..., 99\n 'YY': function (date) {\n return addLeadingZeros(date.getUTCFullYear(), 4).substr(2)\n },\n\n // Year: 1900, 1901, ..., 2099\n 'YYYY': function (date) {\n return addLeadingZeros(date.getUTCFullYear(), 4)\n },\n\n // ISO week-numbering year: 00, 01, ..., 99\n 'GG': function (date) {\n return String(getUTCISOWeekYear(date)).substr(2)\n },\n\n // ISO week-numbering year: 1900, 1901, ..., 2099\n 'GGGG': function (date) {\n return getUTCISOWeekYear(date)\n },\n\n // Hour: 0, 1, ... 23\n 'H': function (date) {\n return date.getUTCHours()\n },\n\n // Hour: 00, 01, ..., 23\n 'HH': function (date) {\n return addLeadingZeros(date.getUTCHours(), 2)\n },\n\n // Hour: 1, 2, ..., 12\n 'h': function (date) {\n var hours = date.getUTCHours()\n if (hours === 0) {\n return 12\n } else if (hours > 12) {\n return hours % 12\n } else {\n return hours\n }\n },\n\n // Hour: 01, 02, ..., 12\n 'hh': function (date) {\n return addLeadingZeros(formatters['h'](date), 2)\n },\n\n // Minute: 0, 1, ..., 59\n 'm': function (date) {\n return date.getUTCMinutes()\n },\n\n // Minute: 00, 01, ..., 59\n 'mm': function (date) {\n return addLeadingZeros(date.getUTCMinutes(), 2)\n },\n\n // Second: 0, 1, ..., 59\n 's': function (date) {\n return date.getUTCSeconds()\n },\n\n // Second: 00, 01, ..., 59\n 'ss': function (date) {\n return addLeadingZeros(date.getUTCSeconds(), 2)\n },\n\n // 1/10 of second: 0, 1, ..., 9\n 'S': function (date) {\n return Math.floor(date.getUTCMilliseconds() / 100)\n },\n\n // 1/100 of second: 00, 01, ..., 99\n 'SS': function (date) {\n return addLeadingZeros(Math.floor(date.getUTCMilliseconds() / 10), 2)\n },\n\n // Millisecond: 000, 001, ..., 999\n 'SSS': function (date) {\n return addLeadingZeros(date.getUTCMilliseconds(), 3)\n },\n\n // Timezone: -01:00, +00:00, ... +12:00\n 'Z': function (date, options) {\n var originalDate = options._originalDate || date\n return formatTimezone(originalDate.getTimezoneOffset(), ':')\n },\n\n // Timezone: -0100, +0000, ... +1200\n 'ZZ': function (date, options) {\n var originalDate = options._originalDate || date\n return formatTimezone(originalDate.getTimezoneOffset())\n },\n\n // Seconds timestamp: 512969520\n 'X': function (date, options) {\n var originalDate = options._originalDate || date\n return Math.floor(originalDate.getTime() / 1000)\n },\n\n // Milliseconds timestamp: 512969520900\n 'x': function (date, options) {\n var originalDate = options._originalDate || date\n return originalDate.getTime()\n },\n\n // AM, PM\n 'A': function (date, options) {\n return options.locale.localize.timeOfDay(date.getUTCHours(), {type: 'uppercase'})\n },\n\n // am, pm\n 'a': function (date, options) {\n return options.locale.localize.timeOfDay(date.getUTCHours(), {type: 'lowercase'})\n },\n\n // a.m., p.m.\n 'aa': function (date, options) {\n return options.locale.localize.timeOfDay(date.getUTCHours(), {type: 'long'})\n }\n}\n\nfunction formatTimezone (offset, delimeter) {\n delimeter = delimeter || ''\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = Math.floor(absOffset / 60)\n var minutes = absOffset % 60\n return sign + addLeadingZeros(hours, 2) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nfunction addLeadingZeros (number, targetLength) {\n var output = Math.abs(number).toString()\n while (output.length < targetLength) {\n output = '0' + output\n }\n return output\n}\n\nexport default formatters\n","import toDate from '../toDate/index.js'\nimport isValid from '../isValid/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport formatters from './_lib/formatters/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\nimport addUTCMinutes from '../_lib/addUTCMinutes/index.js'\n\nvar longFormattingTokensRegExp = /(\\[[^[]*])|(\\\\)?(LTS|LT|LLLL|LLL|LL|L|llll|lll|ll|l)/g\nvar defaultFormattingTokensRegExp = /(\\[[^[]*])|(\\\\)?(x|ss|s|mm|m|hh|h|do|dddd|ddd|dd|d|aa|a|ZZ|Z|YYYY|YY|X|Wo|WW|W|SSS|SS|S|Qo|Q|Mo|MMMM|MMM|MM|M|HH|H|GGGG|GG|E|Do|DDDo|DDDD|DDD|DD|D|A|.)/g\n\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.\n *\n * Accepted tokens:\n * | Unit | Token | Result examples |\n * |-------------------------|-------|----------------------------------|\n * | Month | M | 1, 2, ..., 12 |\n * | | Mo | 1st, 2nd, ..., 12th |\n * | | MM | 01, 02, ..., 12 |\n * | | MMM | Jan, Feb, ..., Dec |\n * | | MMMM | January, February, ..., December |\n * | Quarter | Q | 1, 2, 3, 4 |\n * | | Qo | 1st, 2nd, 3rd, 4th |\n * | Day of month | D | 1, 2, ..., 31 |\n * | | Do | 1st, 2nd, ..., 31st |\n * | | DD | 01, 02, ..., 31 |\n * | Day of year | DDD | 1, 2, ..., 366 |\n * | | DDDo | 1st, 2nd, ..., 366th |\n * | | DDDD | 001, 002, ..., 366 |\n * | Day of week | d | 0, 1, ..., 6 |\n * | | do | 0th, 1st, ..., 6th |\n * | | dd | Su, Mo, ..., Sa |\n * | | ddd | Sun, Mon, ..., Sat |\n * | | dddd | Sunday, Monday, ..., Saturday |\n * | Day of ISO week | E | 1, 2, ..., 7 |\n * | ISO week | W | 1, 2, ..., 53 |\n * | | Wo | 1st, 2nd, ..., 53rd |\n * | | WW | 01, 02, ..., 53 |\n * | Year | YY | 00, 01, ..., 99 |\n * | | YYYY | 1900, 1901, ..., 2099 |\n * | ISO week-numbering year | GG | 00, 01, ..., 99 |\n * | | GGGG | 1900, 1901, ..., 2099 |\n * | AM/PM | A | AM, PM |\n * | | a | am, pm |\n * | | aa | a.m., p.m. |\n * | Hour | H | 0, 1, ... 23 |\n * | | HH | 00, 01, ... 23 |\n * | | h | 1, 2, ..., 12 |\n * | | hh | 01, 02, ..., 12 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | 1/10 of second | S | 0, 1, ..., 9 |\n * | 1/100 of second | SS | 00, 01, ..., 99 |\n * | Millisecond | SSS | 000, 001, ..., 999 |\n * | Timezone | Z | -01:00, +00:00, ... +12:00 |\n * | | ZZ | -0100, +0000, ..., +1200 |\n * | Seconds timestamp | X | 512969520 |\n * | Milliseconds timestamp | x | 512969520900 |\n * | Long format | LT | 05:30 a.m. |\n * | | LTS | 05:30:15 a.m. |\n * | | L | 07/02/1995 |\n * | | l | 7/2/1995 |\n * | | LL | July 2 1995 |\n * | | ll | Jul 2 1995 |\n * | | LLL | July 2 1995 05:30 a.m. |\n * | | lll | Jul 2 1995 05:30 a.m. |\n * | | LLLL | Sunday, July 2 1995 05:30 a.m. |\n * | | llll | Sun, Jul 2 1995 05:30 a.m. |\n *\n * The characters wrapped in square brackets are escaped.\n *\n * The result may vary by locale.\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/DD/YYYY'\n * )\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(\n * new Date(2014, 6, 2),\n * 'Do [de] MMMM YYYY',\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n */\nexport default function 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\n var locale = options.locale || defaultLocale\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var localeFormatters = locale.formatters || {}\n var formattingTokensRegExp = locale.formattingTokensRegExp || defaultFormattingTokensRegExp\n var formatLong = locale.formatLong\n\n var originalDate = toDate(dirtyDate, options)\n\n if (!isValid(originalDate, options)) {\n return 'Invalid Date'\n }\n\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 var timezoneOffset = originalDate.getTimezoneOffset()\n var utcDate = addUTCMinutes(originalDate, -timezoneOffset, options)\n\n var formatterOptions = cloneObject(options)\n formatterOptions.locale = locale\n formatterOptions.formatters = formatters\n\n // When UTC functions will be implemented, options._originalDate will likely be a part of public API.\n // Right now, please don't use it in locales. If you have to use an original date,\n // please restore it from `date`, adding a timezone offset to it.\n formatterOptions._originalDate = originalDate\n\n var result = formatStr\n .replace(longFormattingTokensRegExp, function (substring) {\n if (substring[0] === '[') {\n return substring\n }\n\n if (substring[0] === '\\\\') {\n return cleanEscapedString(substring)\n }\n\n return formatLong(substring)\n })\n .replace(formattingTokensRegExp, function (substring) {\n var formatter = localeFormatters[substring] || formatters[substring]\n\n if (formatter) {\n return formatter(utcDate, formatterOptions)\n } else {\n return cleanEscapedString(substring)\n }\n })\n\n return result\n}\n\nfunction cleanEscapedString (input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|]$/g, '')\n }\n return input.replace(/\\\\/g, '')\n}\n","import toDate from '../../toDate/index.js'\n\n// 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\nexport default function addUTCMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions)\n var amount = Number(dirtyAmount)\n date.setUTCMinutes(date.getUTCMinutes() + amount)\n return date\n}\n","var patterns = {\n 'M': /^(1[0-2]|0?\\d)/, // 0 to 12\n 'D': /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n 'DDD': /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n 'W': /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n 'YYYY': /^(\\d{1,4})/, // 0 to 9999\n 'H': /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n 'm': /^([0-5]?\\d)/, // 0 to 59\n 'Z': /^([+-])(\\d{2}):(\\d{2})/,\n 'ZZ': /^([+-])(\\d{2})(\\d{2})/,\n singleDigit: /^(\\d)/,\n twoDigits: /^(\\d{2})/,\n threeDigits: /^(\\d{3})/,\n fourDigits: /^(\\d{4})/,\n anyDigits: /^(\\d+)/\n}\n\nfunction parseDecimal (matchResult) {\n return parseInt(matchResult[1], 10)\n}\n\nvar parsers = {\n // Year: 00, 01, ..., 99\n 'YY': {\n unit: 'twoDigitYear',\n match: patterns.twoDigits,\n parse: function (matchResult) {\n return parseDecimal(matchResult)\n }\n },\n\n // Year: 1900, 1901, ..., 2099\n 'YYYY': {\n unit: 'year',\n match: patterns.YYYY,\n parse: parseDecimal\n },\n\n // ISO week-numbering year: 00, 01, ..., 99\n 'GG': {\n unit: 'isoYear',\n match: patterns.twoDigits,\n parse: function (matchResult) {\n return parseDecimal(matchResult) + 1900\n }\n },\n\n // ISO week-numbering year: 1900, 1901, ..., 2099\n 'GGGG': {\n unit: 'isoYear',\n match: patterns.YYYY,\n parse: parseDecimal\n },\n\n // Quarter: 1, 2, 3, 4\n 'Q': {\n unit: 'quarter',\n match: patterns.singleDigit,\n parse: parseDecimal\n },\n\n // Ordinal quarter\n 'Qo': {\n unit: 'quarter',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'quarter'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'quarter'})\n }\n },\n\n // Month: 1, 2, ..., 12\n 'M': {\n unit: 'month',\n match: patterns.M,\n parse: function (matchResult) {\n return parseDecimal(matchResult) - 1\n }\n },\n\n // Ordinal month\n 'Mo': {\n unit: 'month',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'month'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'month'}) - 1\n }\n },\n\n // Month: 01, 02, ..., 12\n 'MM': {\n unit: 'month',\n match: patterns.twoDigits,\n parse: function (matchResult) {\n return parseDecimal(matchResult) - 1\n }\n },\n\n // Month: Jan, Feb, ..., Dec\n 'MMM': {\n unit: 'month',\n match: function (string, options) {\n return options.locale.match.months(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.month(matchResult, {type: 'short'})\n }\n },\n\n // Month: January, February, ..., December\n 'MMMM': {\n unit: 'month',\n match: function (string, options) {\n return options.locale.match.months(string, {type: 'long'}) ||\n options.locale.match.months(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.month(matchResult, {type: 'long'})\n\n if (parseResult == null) {\n parseResult = options.locale.match.month(matchResult, {type: 'short'})\n }\n\n return parseResult\n }\n },\n\n // ISO week: 1, 2, ..., 53\n 'W': {\n unit: 'isoWeek',\n match: patterns.W,\n parse: parseDecimal\n },\n\n // Ordinal ISO week\n 'Wo': {\n unit: 'isoWeek',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'isoWeek'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'isoWeek'})\n }\n },\n\n // ISO week: 01, 02, ..., 53\n 'WW': {\n unit: 'isoWeek',\n match: patterns.twoDigits,\n parse: parseDecimal\n },\n\n // Day of week: 0, 1, ..., 6\n 'd': {\n unit: 'dayOfWeek',\n match: patterns.singleDigit,\n parse: parseDecimal\n },\n\n // Ordinal day of week\n 'do': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'dayOfWeek'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'dayOfWeek'})\n }\n },\n\n // Day of week: Su, Mo, ..., Sa\n 'dd': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.weekdays(string, {type: 'narrow'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.weekday(matchResult, {type: 'narrow'})\n }\n },\n\n // Day of week: Sun, Mon, ..., Sat\n 'ddd': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.weekdays(string, {type: 'short'}) ||\n options.locale.match.weekdays(string, {type: 'narrow'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.weekday(matchResult, {type: 'short'})\n\n if (parseResult == null) {\n parseResult = options.locale.match.weekday(matchResult, {type: 'narrow'})\n }\n\n return parseResult\n }\n },\n\n // Day of week: Sunday, Monday, ..., Saturday\n 'dddd': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.weekdays(string, {type: 'long'}) ||\n options.locale.match.weekdays(string, {type: 'short'}) ||\n options.locale.match.weekdays(string, {type: 'narrow'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.weekday(matchResult, {type: 'long'})\n\n if (parseResult == null) {\n parseResult = options.locale.match.weekday(matchResult, {type: 'short'})\n\n if (parseResult == null) {\n parseResult = options.locale.match.weekday(matchResult, {type: 'narrow'})\n }\n }\n\n return parseResult\n }\n },\n\n // Day of ISO week: 1, 2, ..., 7\n 'E': {\n unit: 'dayOfISOWeek',\n match: patterns.singleDigit,\n parse: function (matchResult) {\n return parseDecimal(matchResult)\n }\n },\n\n // Day of month: 1, 2, ..., 31\n 'D': {\n unit: 'dayOfMonth',\n match: patterns.D,\n parse: parseDecimal\n },\n\n // Ordinal day of month\n 'Do': {\n unit: 'dayOfMonth',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'dayOfMonth'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'dayOfMonth'})\n }\n },\n\n // Day of month: 01, 02, ..., 31\n 'DD': {\n unit: 'dayOfMonth',\n match: patterns.twoDigits,\n parse: parseDecimal\n },\n\n // Day of year: 1, 2, ..., 366\n 'DDD': {\n unit: 'dayOfYear',\n match: patterns.DDD,\n parse: parseDecimal\n },\n\n // Ordinal day of year\n 'DDDo': {\n unit: 'dayOfYear',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'dayOfYear'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'dayOfYear'})\n }\n },\n\n // Day of year: 001, 002, ..., 366\n 'DDDD': {\n unit: 'dayOfYear',\n match: patterns.threeDigits,\n parse: parseDecimal\n },\n\n // AM, PM\n 'A': {\n unit: 'timeOfDay',\n match: function (string, options) {\n return options.locale.match.timesOfDay(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.timeOfDay(matchResult, {type: 'short'})\n }\n },\n\n // a.m., p.m.\n 'aa': {\n unit: 'timeOfDay',\n match: function (string, options) {\n return options.locale.match.timesOfDay(string, {type: 'long'}) ||\n options.locale.match.timesOfDay(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.timeOfDay(matchResult, {type: 'long'})\n\n if (parseResult == null) {\n parseResult = options.locale.match.timeOfDay(matchResult, {type: 'short'})\n }\n\n return parseResult\n }\n },\n\n // Hour: 0, 1, ... 23\n 'H': {\n unit: 'hours',\n match: patterns.H,\n parse: parseDecimal\n },\n\n // Hour: 00, 01, ..., 23\n 'HH': {\n unit: 'hours',\n match: patterns.twoDigits,\n parse: parseDecimal\n },\n\n // Hour: 1, 2, ..., 12\n 'h': {\n unit: 'timeOfDayHours',\n match: patterns.M,\n parse: parseDecimal\n },\n\n // Hour: 01, 02, ..., 12\n 'hh': {\n unit: 'timeOfDayHours',\n match: patterns.twoDigits,\n parse: parseDecimal\n },\n\n // Minute: 0, 1, ..., 59\n 'm': {\n unit: 'minutes',\n match: patterns.m,\n parse: parseDecimal\n },\n\n // Minute: 00, 01, ..., 59\n 'mm': {\n unit: 'minutes',\n match: patterns.twoDigits,\n parse: parseDecimal\n },\n\n // Second: 0, 1, ..., 59\n 's': {\n unit: 'seconds',\n match: patterns.m,\n parse: parseDecimal\n },\n\n // Second: 00, 01, ..., 59\n 'ss': {\n unit: 'seconds',\n match: patterns.twoDigits,\n parse: parseDecimal\n },\n\n // 1/10 of second: 0, 1, ..., 9\n 'S': {\n unit: 'milliseconds',\n match: patterns.singleDigit,\n parse: function (matchResult) {\n return parseDecimal(matchResult) * 100\n }\n },\n\n // 1/100 of second: 00, 01, ..., 99\n 'SS': {\n unit: 'milliseconds',\n match: patterns.twoDigits,\n parse: function (matchResult) {\n return parseDecimal(matchResult) * 10\n }\n },\n\n // Millisecond: 000, 001, ..., 999\n 'SSS': {\n unit: 'milliseconds',\n match: patterns.threeDigits,\n parse: parseDecimal\n },\n\n // Timezone: -01:00, +00:00, ... +12:00\n 'Z': {\n unit: 'timezone',\n match: patterns.Z,\n parse: function (matchResult) {\n var sign = matchResult[1]\n var hours = parseInt(matchResult[2], 10)\n var minutes = parseInt(matchResult[3], 10)\n var absoluteOffset = hours * 60 + minutes\n return (sign === '+') ? absoluteOffset : -absoluteOffset\n }\n },\n\n // Timezone: -0100, +0000, ... +1200\n 'ZZ': {\n unit: 'timezone',\n match: patterns.ZZ,\n parse: function (matchResult) {\n var sign = matchResult[1]\n var hours = parseInt(matchResult[2], 10)\n var minutes = parseInt(matchResult[3], 10)\n var absoluteOffset = hours * 60 + minutes\n return (sign === '+') ? absoluteOffset : -absoluteOffset\n }\n },\n\n // Seconds timestamp: 512969520\n 'X': {\n unit: 'timestamp',\n match: patterns.anyDigits,\n parse: function (matchResult) {\n return parseDecimal(matchResult) * 1000\n }\n },\n\n // Milliseconds timestamp: 512969520900\n 'x': {\n unit: 'timestamp',\n match: patterns.anyDigits,\n parse: parseDecimal\n }\n}\n\nparsers['a'] = parsers['A']\n\nexport default parsers\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_DAY = 86400000\n\n// 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\nexport default function setUTCISOWeekYear (dirtyDate, dirtyISOYear, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions)\n var isoYear = Number(dirtyISOYear)\n var dateStartOfYear = startOfUTCISOWeekYear(date, dirtyOptions)\n var diff = Math.floor((date.getTime() - dateStartOfYear.getTime()) / MILLISECONDS_IN_DAY)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setUTCFullYear(isoYear, 0, 4)\n fourthOfJanuary.setUTCHours(0, 0, 0, 0)\n date = startOfUTCISOWeekYear(fourthOfJanuary, dirtyOptions)\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import setUTCDay from '../../../_lib/setUTCDay/index.js'\nimport setUTCISODay from '../../../_lib/setUTCISODay/index.js'\nimport setUTCISOWeek from '../../../_lib/setUTCISOWeek/index.js'\nimport setUTCISOWeekYear from '../../../_lib/setUTCISOWeekYear/index.js'\nimport startOfUTCISOWeek from '../../../_lib/startOfUTCISOWeek/index.js'\nimport startOfUTCISOWeekYear from '../../../_lib/startOfUTCISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\nfunction setTimeOfDay (hours, timeOfDay) {\n var isAM = timeOfDay === 0\n\n if (isAM) {\n if (hours === 12) {\n return 0\n }\n } else {\n if (hours !== 12) {\n return 12 + hours\n }\n }\n\n return hours\n}\n\nvar units = {\n twoDigitYear: {\n priority: 10,\n set: function (dateValues, value) {\n var century = Math.floor(dateValues.date.getUTCFullYear() / 100)\n var year = century * 100 + value\n dateValues.date.setUTCFullYear(year, 0, 1)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n year: {\n priority: 10,\n set: function (dateValues, value) {\n dateValues.date.setUTCFullYear(value, 0, 1)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n isoYear: {\n priority: 10,\n set: function (dateValues, value, options) {\n dateValues.date = startOfUTCISOWeekYear(setUTCISOWeekYear(dateValues.date, value, options), options)\n return dateValues\n }\n },\n\n quarter: {\n priority: 20,\n set: function (dateValues, value) {\n dateValues.date.setUTCMonth((value - 1) * 3, 1)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n month: {\n priority: 30,\n set: function (dateValues, value) {\n dateValues.date.setUTCMonth(value, 1)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n isoWeek: {\n priority: 40,\n set: function (dateValues, value, options) {\n dateValues.date = startOfUTCISOWeek(setUTCISOWeek(dateValues.date, value, options), options)\n return dateValues\n }\n },\n\n dayOfWeek: {\n priority: 50,\n set: function (dateValues, value, options) {\n dateValues.date = setUTCDay(dateValues.date, value, options)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n dayOfISOWeek: {\n priority: 50,\n set: function (dateValues, value, options) {\n dateValues.date = setUTCISODay(dateValues.date, value, options)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n dayOfMonth: {\n priority: 50,\n set: function (dateValues, value) {\n dateValues.date.setUTCDate(value)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n dayOfYear: {\n priority: 50,\n set: function (dateValues, value) {\n dateValues.date.setUTCMonth(0, value)\n dateValues.date.setUTCHours(0, 0, 0, 0)\n return dateValues\n }\n },\n\n timeOfDay: {\n priority: 60,\n set: function (dateValues, value, options) {\n dateValues.timeOfDay = value\n return dateValues\n }\n },\n\n hours: {\n priority: 70,\n set: function (dateValues, value, options) {\n dateValues.date.setUTCHours(value, 0, 0, 0)\n return dateValues\n }\n },\n\n timeOfDayHours: {\n priority: 70,\n set: function (dateValues, value, options) {\n var timeOfDay = dateValues.timeOfDay\n if (timeOfDay != null) {\n value = setTimeOfDay(value, timeOfDay)\n }\n dateValues.date.setUTCHours(value, 0, 0, 0)\n return dateValues\n }\n },\n\n minutes: {\n priority: 80,\n set: function (dateValues, value) {\n dateValues.date.setUTCMinutes(value, 0, 0)\n return dateValues\n }\n },\n\n seconds: {\n priority: 90,\n set: function (dateValues, value) {\n dateValues.date.setUTCSeconds(value, 0)\n return dateValues\n }\n },\n\n milliseconds: {\n priority: 100,\n set: function (dateValues, value) {\n dateValues.date.setUTCMilliseconds(value)\n return dateValues\n }\n },\n\n timezone: {\n priority: 110,\n set: function (dateValues, value) {\n dateValues.date = new Date(dateValues.date.getTime() - value * MILLISECONDS_IN_MINUTE)\n return dateValues\n }\n },\n\n timestamp: {\n priority: 120,\n set: function (dateValues, value) {\n dateValues.date = new Date(value)\n return dateValues\n }\n }\n}\n\nexport default units\n","import toDate from '../../toDate/index.js'\nimport getUTCISOWeek from '../getUTCISOWeek/index.js'\n\n// 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\nexport default function setUTCISOWeek (dirtyDate, dirtyISOWeek, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions)\n var isoWeek = Number(dirtyISOWeek)\n var diff = getUTCISOWeek(date, dirtyOptions) - isoWeek\n date.setUTCDate(date.getUTCDate() - diff * 7)\n return date\n}\n","import toDate from '../../toDate/index.js'\n\n// 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\nexport default function setUTCDay (dirtyDate, dirtyDay, dirtyOptions) {\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn = localeWeekStartsOn === undefined ? 0 : Number(localeWeekStartsOn)\n var weekStartsOn = options.weekStartsOn === undefined ? defaultWeekStartsOn : Number(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\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, dirtyOptions)\n var day = Number(dirtyDay)\n\n var currentDay = date.getUTCDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import toDate from '../../toDate/index.js'\n\n// 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\nexport default function setUTCISODay (dirtyDate, dirtyDay, dirtyOptions) {\n var day = Number(dirtyDay)\n\n if (day % 7 === 0) {\n day = day - 7\n }\n\n var weekStartsOn = 1\n var date = toDate(dirtyDate, dirtyOptions)\n var currentDay = date.getUTCDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import toDate from '../toDate/index.js'\nimport subMinutes from '../subMinutes/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport parsers from './_lib/parsers/index.js'\nimport units from './_lib/units/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\n\nvar TIMEZONE_UNIT_PRIORITY = 110\nvar MILLISECONDS_IN_MINUTE = 60000\n\nvar longFormattingTokensRegExp = /(\\[[^[]*])|(\\\\)?(LTS|LT|LLLL|LLL|LL|L|llll|lll|ll|l)/g\nvar defaultParsingTokensRegExp = /(\\[[^[]*])|(\\\\)?(x|ss|s|mm|m|hh|h|do|dddd|ddd|dd|d|aa|a|ZZ|Z|YYYY|YY|X|Wo|WW|W|SSS|SS|S|Qo|Q|Mo|MMMM|MMM|MM|M|HH|H|GGGG|GG|E|Do|DDDo|DDDD|DDD|DD|D|A|.)/g\n\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.\n *\n * Accepted format tokens:\n * | Unit | Priority | Token | Input examples |\n * |-------------------------|----------|-------|----------------------------------|\n * | Year | 10 | YY | 00, 01, ..., 99 |\n * | | | YYYY | 1900, 1901, ..., 2099 |\n * | ISO week-numbering year | 10 | GG | 00, 01, ..., 99 |\n * | | | GGGG | 1900, 1901, ..., 2099 |\n * | Quarter | 20 | Q | 1, 2, 3, 4 |\n * | | | Qo | 1st, 2nd, 3rd, 4th |\n * | Month | 30 | M | 1, 2, ..., 12 |\n * | | | Mo | 1st, 2nd, ..., 12th |\n * | | | MM | 01, 02, ..., 12 |\n * | | | MMM | Jan, Feb, ..., Dec |\n * | | | MMMM | January, February, ..., December |\n * | ISO week | 40 | W | 1, 2, ..., 53 |\n * | | | Wo | 1st, 2nd, ..., 53rd |\n * | | | WW | 01, 02, ..., 53 |\n * | Day of week | 50 | d | 0, 1, ..., 6 |\n * | | | do | 0th, 1st, ..., 6th |\n * | | | dd | Su, Mo, ..., Sa |\n * | | | ddd | Sun, Mon, ..., Sat |\n * | | | dddd | Sunday, Monday, ..., Saturday |\n * | Day of ISO week | 50 | E | 1, 2, ..., 7 |\n * | Day of month | 50 | D | 1, 2, ..., 31 |\n * | | | Do | 1st, 2nd, ..., 31st |\n * | | | DD | 01, 02, ..., 31 |\n * | Day of year | 50 | DDD | 1, 2, ..., 366 |\n * | | | DDDo | 1st, 2nd, ..., 366th |\n * | | | DDDD | 001, 002, ..., 366 |\n * | Time of day | 60 | A | AM, PM |\n * | | | a | am, pm |\n * | | | aa | a.m., p.m. |\n * | Hour | 70 | H | 0, 1, ... 23 |\n * | | | HH | 00, 01, ... 23 |\n * | Time of day hour | 70 | h | 1, 2, ..., 12 |\n * | | | hh | 01, 02, ..., 12 |\n * | Minute | 80 | m | 0, 1, ..., 59 |\n * | | | mm | 00, 01, ..., 59 |\n * | Second | 90 | s | 0, 1, ..., 59 |\n * | | | ss | 00, 01, ..., 59 |\n * | 1/10 of second | 100 | S | 0, 1, ..., 9 |\n * | 1/100 of second | 100 | SS | 00, 01, ..., 99 |\n * | Millisecond | 100 | SSS | 000, 001, ..., 999 |\n * | Timezone | 110 | Z | -01:00, +00:00, ... +12:00 |\n * | | | ZZ | -0100, +0000, ..., +1200 |\n * | Seconds timestamp | 120 | X | 512969520 |\n * | Milliseconds timestamp | 120 | x | 512969520900 |\n *\n * Values will be assigned to the date in the ascending 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 `baseDate` which works as a context of parsing.\n *\n * `baseDate` must be passed for correct work of the function.\n * If you're not sure which `baseDate` 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 `baseDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * Also, `parse` unfolds long formats like those in [format]{@link https://date-fns.org/docs/format}:\n * | Token | Input examples |\n * |-------|--------------------------------|\n * | LT | 05:30 a.m. |\n * | LTS | 05:30:15 a.m. |\n * | L | 07/02/1995 |\n * | l | 7/2/1995 |\n * | LL | July 2 1995 |\n * | ll | Jul 2 1995 |\n * | LLL | July 2 1995 05:30 a.m. |\n * | lll | Jul 2 1995 05:30 a.m. |\n * | LLLL | Sunday, July 2 1995 05:30 a.m. |\n * | llll | Sun, Jul 2 1995 05:30 a.m. |\n *\n * The characters wrapped in square brackets in the format string are escaped.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `baseDate` 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 * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|String|Number} baseDate - the date to took the missing higher priority values from\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\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 * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse(\n * '02/11/2014',\n * 'MM/DD/YYYY',\n * new Date()\n * )\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in English locale in the context of 2010 year:\n * import eoLocale from 'date-fns/locale/eo'\n * var result = parse(\n * '28-a de februaro',\n * 'Do [de] MMMM',\n * new Date(2010, 0, 1)\n * {locale: eoLocale}\n * )\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse (dirtyDateString, dirtyFormatString, dirtyBaseDate, 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 options = dirtyOptions || {}\n\n var weekStartsOn = options.weekStartsOn === undefined ? 0 : Number(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var locale = options.locale || defaultLocale\n var localeParsers = locale.parsers || {}\n var localeUnits = locale.units || {}\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var formatString = String(dirtyFormatString)\n .replace(longFormattingTokensRegExp, function (substring) {\n if (substring[0] === '[') {\n return substring\n }\n\n if (substring[0] === '\\\\') {\n return cleanEscapedString(substring)\n }\n\n return locale.formatLong(substring)\n })\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBaseDate, options)\n } else {\n return new Date(NaN)\n }\n }\n\n var subFnOptions = cloneObject(options)\n subFnOptions.locale = locale\n\n var tokens = formatString.match(locale.parsingTokensRegExp || defaultParsingTokensRegExp)\n var tokensLength = tokens.length\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }]\n\n var i\n for (i = 0; i < tokensLength; i++) {\n var token = tokens[i]\n var parser = localeParsers[token] || parsers[token]\n if (parser) {\n var matchResult\n\n if (parser.match instanceof RegExp) {\n matchResult = parser.match.exec(dateString)\n } else {\n matchResult = parser.match(dateString, subFnOptions)\n }\n\n if (!matchResult) {\n return new Date(NaN)\n }\n\n var unitName = parser.unit\n var unit = localeUnits[unitName] || units[unitName]\n\n setters.push({\n priority: unit.priority,\n set: unit.set,\n value: parser.parse(matchResult, subFnOptions),\n index: setters.length\n })\n\n var substring = matchResult[0]\n dateString = dateString.slice(substring.length)\n } else {\n var head = tokens[i].match(/^\\[.*]$/) ? tokens[i].replace(/^\\[|]$/g, '') : tokens[i]\n if (dateString.indexOf(head) === 0) {\n dateString = dateString.slice(head.length)\n } else {\n return new Date(NaN)\n }\n }\n }\n\n var uniquePrioritySetters = setters\n .map(function (setter) {\n return setter.priority\n })\n .sort(function (a, b) {\n return a - b\n })\n .filter(function (priority, index, array) {\n return array.indexOf(priority) === index\n })\n .map(function (priority) {\n return setters\n .filter(function (setter) {\n return setter.priority === priority\n })\n .reverse()\n })\n .map(function (setterArray) {\n return setterArray[0]\n })\n\n var date = toDate(dirtyBaseDate, options)\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\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 var utcDate = subMinutes(date, date.getTimezoneOffset())\n\n var dateValues = {date: utcDate}\n\n var settersLength = uniquePrioritySetters.length\n for (i = 0; i < settersLength; i++) {\n var setter = uniquePrioritySetters[i]\n dateValues = setter.set(dateValues, setter.value, subFnOptions)\n }\n\n return dateValues.date\n}\n\nfunction dateToSystemTimezone (dateValues) {\n var date = dateValues.date\n var time = date.getTime()\n\n // Get the system timezone offset at (moment of time - offset)\n var offset = date.getTimezoneOffset()\n\n // Get the system timezone offset at the exact moment of time\n offset = new Date(time + offset * MILLISECONDS_IN_MINUTE).getTimezoneOffset()\n\n // Convert date in timezone \"UTC+00:00\" to the system timezone\n dateValues.date = new Date(time + offset * MILLISECONDS_IN_MINUTE)\n\n return dateValues\n}\n\nfunction cleanEscapedString (input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|]$/g, '')\n }\n return input.replace(/\\\\/g, '')\n}\n","import addMinutes from '../addMinutes/index.js'\n\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the mintues subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * var result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nexport default function subMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = Number(dirtyAmount)\n return addMinutes(dirtyDate, -amount, dirtyOptions)\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 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 global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\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 * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, false, 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 = clone;\n","import { format, parse, isValid, compareAsc } from 'date-fns';\nimport clone from 'lodash.clone';\nimport def from './default';\n\nconst date = clone(def);\n\ndate.isRight = true;\n\ndate.compare = function (x, y, column) {\n function cook(d) {\n if (column && column.dateInputFormat) {\n return parse(`${d}`, `${column.dateInputFormat}`, new Date());\n }\n return d;\n }\n x = cook(x);\n y = cook(y);\n if (!isValid(x)) {\n return -1;\n }\n if (!isValid(y)) {\n return 1;\n }\n return compareAsc(x, y);\n};\n\ndate.format = function (v, column) {\n if (v === undefined || v === null) return '';\n // convert to date\n const date = parse(v, column.dateInputFormat, new Date());\n return format(date, column.dateOutputFormat);\n};\n\nexport default date;\n","import toDate from '../toDate/index.js'\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 * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\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 */\nexport default function compareAsc (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions)\n var dateRight = toDate(dirtyDateRight, dirtyOptions)\n\n var diff = dateLeft.getTime() - dateRight.getTime()\n\n if (diff < 0) {\n return -1\n } else if (diff > 0) {\n return 1\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff\n }\n}\n","import clone from 'lodash.clone';\nimport def from './default';\n\nconst number = clone(def);\n\nnumber.isRight = true;\n\nnumber.filterPredicate = function (rowval, filter) {\n return number.compare(rowval, filter) === 0;\n};\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\nexport default number;\n","import clone from 'lodash.clone';\nimport number from './number';\n\nconst decimal = clone(number);\ndecimal.format = function (v) {\n if (v === undefined || v === null) return '';\n return parseFloat(Math.round(v * 100) / 100).toFixed(2);\n};\n\nexport default decimal;\n","import clone from 'lodash.clone';\nimport number from './number';\n\nconst percentage = clone(number);\n\npercentage.format = function (v) {\n if (v === undefined || v === null) return '';\n return `${parseFloat(v * 100).toFixed(2)}%`;\n};\n\nexport default percentage;\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//\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//\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\nimport each from 'lodash.foreach';\nimport assign from 'lodash.assign';\nimport cloneDeep from 'lodash.clonedeep';\nimport filter from 'lodash.filter';\nimport diacriticless from 'diacriticless';\nimport defaultType from './types/default';\nimport VgtPagination from './VgtPagination.vue';\nimport VgtGlobalSearch from './VgtGlobalSearch.vue';\nimport VgtFilterRow from './VgtFilterRow.vue';\n\n// here we load each data type module.\nimport * as CoreDataTypes from './types/index';\n\nconst dataTypes = {};\nconst coreDataTypes = CoreDataTypes.default;\neach(Object.keys(coreDataTypes), (key) => {\n const compName = key.replace(/^\\.\\//, '').replace(/\\.js/, '');\n dataTypes[compName] = coreDataTypes[key].default;\n});\n\nexport default {\n name: 'vue-good-table',\n props: {\n isLoading: { default: false, type: Boolean },\n theme: { default: '' },\n mode: { default: 'local' }, // could be remote\n totalRows: { }, // required if mode = 'remote'\n styleClass: { default: 'vgt-table bordered' },\n columns: { },\n rows: { },\n lineNumbers: { default: false },\n responsive: { default: true },\n rtl: { default: false },\n rowStyleClass: { default: null, type: [Function, String] },\n\n groupOptions: {\n default() {\n return {\n enabled: false,\n };\n },\n },\n\n selectOptions: {\n default() {\n return {\n enabled: false,\n selectionInfoClass: '',\n selectionText: 'rows selected',\n clearSelectionText: 'clear',\n };\n },\n },\n\n // sort\n sortOptions: {\n default() {\n return {\n enabled: true,\n initialSortBy: {},\n };\n },\n },\n\n // pagination\n paginationOptions: {\n default() {\n return {\n enabled: false,\n perPage: 10,\n perPageDropdown: null,\n position: 'bottom',\n dropdownAllowAll: true,\n };\n },\n },\n\n searchOptions: {\n default() {\n return {\n enabled: false,\n trigger: null,\n externalQuery: null,\n searchFn: null,\n placeholder: 'Search Table',\n };\n },\n },\n },\n\n data: () => ({\n // loading state for remote mode\n tableLoading: false,\n\n // text options\n nextText: 'Next',\n prevText: 'Prev',\n rowsPerPageText: 'Rows per page',\n ofText: 'of',\n allText: 'All',\n\n // internal select options\n selectable: false,\n selectionInfoClass: '',\n selectionText: 'rows selected',\n clearSelectionText: 'clear',\n\n // internal sort options\n sortable: true,\n defaultSortBy: null,\n\n // internal search options\n searchEnabled: false,\n searchTrigger: null,\n externalSearchQuery: null,\n searchFn: null,\n searchPlaceholder: 'Search Table',\n\n // internal pagination options\n perPage: null,\n paginate: false,\n paginateOnTop: false,\n paginateOnBottom: true,\n customRowsPerPageDropdown: [],\n paginateDropdownAllowAll: true,\n\n currentPage: 1,\n currentPerPage: 10,\n sortColumn: -1,\n sortType: 'asc',\n globalSearchTerm: '',\n filteredRows: [],\n columnFilters: {},\n forceSearch: false,\n sortChanged: false,\n dataTypes: dataTypes || {},\n\n // to keep track of select-all\n allSelected: false,\n }),\n\n watch: {\n rows: {\n handler() {\n this.tableLoading = false;\n this.filterRows(this.columnFilters, false);\n },\n deep: true,\n immediate: true,\n },\n\n selectOptions: {\n handler() {\n this.initializeSelect();\n },\n deep: true,\n immediate: true,\n },\n\n paginationOptions: {\n handler() {\n this.initializePagination();\n },\n deep: true,\n immediate: true,\n },\n\n searchOptions: {\n handler() {\n this.initializeSearch();\n },\n deep: true,\n immediate: true,\n },\n\n sortOptions: {\n handler() {\n this.initializeSort();\n },\n deep: true,\n immediate: true,\n },\n },\n\n computed: {\n isTableLoading() {\n return this.isLoading || this.tableLoading;\n },\n\n showEmptySlot() {\n if (!this.paginated.length) return true;\n\n if (this.paginated[0].label === 'no groups'\n && !this.paginated[0].children.length) return true;\n\n return false;\n },\n\n selectionInfo() {\n return `${this.selectedRowCount} ${this.selectionText}`;\n },\n\n selectedRowCount() {\n return this.selectedRows.length;\n },\n\n selectedRows() {\n const selectedRows = [];\n each(this.processedRows, (headerRow) => {\n each(headerRow.children, (row) => {\n if (row.vgtSelected) {\n selectedRows.push(row);\n }\n });\n });\n return selectedRows;\n },\n\n fullColspan() {\n let fullColspan = this.columns.length;\n if (this.lineNumbers) fullColspan++;\n if (this.selectable) fullColspan++;\n return fullColspan;\n },\n groupHeaderOnTop() {\n if (this.groupOptions\n && this.groupOptions.enabled\n && this.groupOptions.headerPosition\n && this.groupOptions.headerPosition === 'bottom') {\n return false;\n }\n if (this.groupOptions && this.groupOptions.enabled) return true;\n\n // will only get here if groupOptions is false\n return false;\n },\n groupHeaderOnBottom() {\n if (this.groupOptions\n && this.groupOptions.enabled\n && this.groupOptions.headerPosition\n && this.groupOptions.headerPosition === 'bottom') {\n return true;\n }\n return false;\n },\n totalRowCount() {\n let total = 0;\n each(this.processedRows, (headerRow) => {\n total += headerRow.children ? headerRow.children.length : 0;\n });\n return total;\n },\n tableStyleClasses() {\n let classes = this.styleClass;\n classes += ` ${this.theme}`;\n return classes;\n },\n\n searchTerm() {\n return (this.externalSearchQuery != null) ? this.externalSearchQuery : this.globalSearchTerm;\n },\n\n //\n globalSearchAllowed() {\n if (this.searchEnabled\n && !!this.globalSearchTerm\n && this.searchTrigger !== 'enter') {\n return true;\n }\n\n if (this.externalSearchQuery != null\n && 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\n // this is done everytime sortColumn\n // or sort type changes\n //----------------------------------------\n processedRows() {\n // we only process rows when mode is local\n let computedRows = this.filteredRows;\n if (this.mode === 'remote') {\n return computedRows;\n }\n\n // take care of the global filter here also\n if (this.globalSearchAllowed) {\n // here also we need to de-construct and then\n // re-construct the rows.\n const allRows = [];\n each(this.filteredRows, (headerRow) => {\n allRows.push(...headerRow.children);\n });\n const filteredRows = [];\n each(allRows, (row) => {\n each(this.columns, (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 const foundMatch = this.searchFn(\n row,\n col,\n this.collectFormatted(row, col),\n this.searchTerm\n );\n if (foundMatch) {\n filteredRows.push(row);\n return false; // break the loop\n }\n } else {\n // lets get the formatted row/col value\n let tableValue = this.collectFormatted(row, col);\n if (typeof tableValue !== 'undefined' && tableValue !== null) {\n // table value\n tableValue = diacriticless(String(tableValue).toLowerCase());\n // search term\n const searchTerm = diacriticless(this.searchTerm.toLowerCase());\n\n // comparison\n if (tableValue.search(searchTerm) > -1) {\n filteredRows.push(row);\n return false; // break loop\n }\n }\n }\n }\n });\n });\n\n // this is where we emit on search\n this.$emit('on-search', {\n searchTerm: this.searchTerm,\n rowCount: filteredRows.length,\n });\n\n // here we need to reconstruct the nested structure\n // of rows\n computedRows = [];\n each(this.filteredRows, (headerRow) => {\n const i = headerRow.vgt_header_id;\n const children = filter(filteredRows, ['vgt_id', i]);\n if (children.length) {\n const newHeaderRow = cloneDeep(headerRow);\n newHeaderRow.children = children;\n computedRows.push(newHeaderRow);\n }\n });\n }\n\n // taking care of sort here only if sort has changed\n if (this.sortColumn !== -1\n && this.isSortableColumn(this.sortColumn) &&\n // if search trigger is enter then we only sort\n // when enter is hit\n (this.searchTrigger !== 'enter' || this.sortChanged)) {\n this.sortChanged = false;\n\n each(computedRows, (cRows) => {\n cRows.children.sort((x, y) => {\n if (!this.columns[this.sortColumn]) return 0;\n\n const xvalue = this.collect(x, this.columns[this.sortColumn].field);\n const yvalue = this.collect(y, this.columns[this.sortColumn].field);\n\n // if user has provided a custom sort, use that instead of\n // built-in sort\n const { sortFn } = this.columns[this.sortColumn];\n if (sortFn && typeof sortFn === 'function') {\n return sortFn(xvalue, yvalue, this.columns[this.sortColumn], x, y) * (this.sortType === 'desc' ? -1 : 1);\n }\n\n // built in sort\n const { typeDef } = this.typedColumns[this.sortColumn];\n return typeDef.compare(xvalue, yvalue, this.columns[this.sortColumn])\n * (this.sortType === 'desc' ? -1 : 1);\n });\n });\n }\n\n // if the filtering is event based, we need to maintain filter\n // rows\n if (this.searchTrigger === 'enter') {\n this.filteredRows = computedRows;\n }\n\n return computedRows;\n },\n\n paginated() {\n if (!this.processedRows.length) return [];\n\n if (this.mode === 'remote') {\n return this.processedRows;\n }\n\n // for every group, extract the child rows\n // to cater to paging\n let paginatedRows = [];\n each(this.processedRows, (childRows) => {\n paginatedRows.push(...childRows.children);\n });\n\n if (this.paginate) {\n let pageStart = (this.currentPage - 1) * this.currentPerPage;\n\n // 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 if (pageStart >= paginatedRows.length\n || this.currentPerPage === -1) {\n this.currentPage = 1;\n pageStart = 0;\n }\n\n // calculate page end now\n let pageEnd = paginatedRows.length + 1;\n\n // if the setting is set to 'all'\n if (this.currentPerPage !== -1) {\n pageEnd = this.currentPage * this.currentPerPage;\n }\n\n paginatedRows = paginatedRows.slice(pageStart, pageEnd);\n }\n // reconstruct paginated rows here\n const reconstructedRows = [];\n each(this.processedRows, (headerRow) => {\n const i = headerRow.vgt_header_id;\n const children = filter(paginatedRows, ['vgt_id', i]);\n if (children.length) {\n const newHeaderRow = cloneDeep(headerRow);\n newHeaderRow.children = children;\n reconstructedRows.push(newHeaderRow);\n }\n });\n return reconstructedRows;\n },\n\n originalRows() {\n const rows = cloneDeep(this.rows);\n let nestedRows = [];\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 }\n // we need to preserve the original index of\n // rows so lets do that\n let index = 0;\n each(nestedRows, (headerRow, i) => {\n each(headerRow.children, (row, j) => {\n row.originalIndex = index++;\n });\n });\n\n return nestedRows;\n },\n\n typedColumns() {\n const columns = assign(this.columns, []);\n for (let i = 0; i < this.columns.length; i++) {\n const column = columns[i];\n column.typeDef = this.dataTypes[column.type] || defaultType;\n }\n return columns;\n },\n\n hasRowClickListener() {\n return this.$listeners && this.$listeners['on-row-click'];\n },\n },\n\n methods: {\n emitSelectNone() {\n this.$emit('on-select-all', {\n selected: false,\n selectedRows: [],\n });\n },\n\n unselectAllInternal() {\n this.emitSelectNone();\n each(this.originalRows, (headerRow, i) => {\n each(headerRow.children, (row, j) => {\n this.$set(row, 'vgtSelected', false);\n });\n });\n // we need to call this to propagate changes to paginated\n // rows\n this.filterRows();\n },\n\n unselectAll() {\n if (this.selectable && this.allSelected) {\n this.allSelected = false;\n // this.unselectAllInternal();\n }\n },\n\n toggleSelectAll() {\n if (!this.allSelected) {\n this.unselectAllInternal();\n return;\n }\n each(this.paginated, (headerRow) => {\n each(headerRow.children, (row) => {\n this.$set(row, 'vgtSelected', true);\n });\n });\n let selectedRows = [];\n if (this.groupOptions.enabled) {\n selectedRows = cloneDeep(this.paginated);\n } else {\n selectedRows = cloneDeep(this.paginated[0].children);\n }\n this.$emit('on-select-all', {\n selected: this.allSelected,\n selectedRows,\n });\n },\n\n changePage(value) {\n if (this.paginationOptions.enabled) {\n let paginationWidget = this.$refs.paginationBottom;\n if (this.paginationOptions.position === 'top') {\n paginationWidget = this.$refs.paginationTop;\n }\n if (paginationWidget) {\n paginationWidget.currentPage = value;\n // we also need to set the currentPage\n // for table.\n this.currentPage = value;\n }\n }\n },\n\n pageChangedEvent() {\n return {\n currentPage: this.currentPage,\n currentPerPage: this.currentPerPage,\n total: Math.floor(this.totalRowCount / this.currentPerPage),\n };\n },\n\n pageChanged(pagination) {\n // every time we change page we have to unselect all\n this.unselectAll();\n this.currentPage = pagination.currentPage;\n const pageChangedEvent = this.pageChangedEvent();\n this.$emit('on-page-change', pageChangedEvent);\n if (this.mode === 'remote') {\n this.tableLoading = true;\n }\n },\n\n perPageChanged(pagination) {\n this.currentPerPage = pagination.currentPerPage;\n const perPageChangedEvent = this.pageChangedEvent();\n this.$emit('on-per-page-change', perPageChangedEvent);\n if (this.mode === 'remote') {\n this.tableLoading = true;\n }\n },\n\n sort(index) {\n if (!this.isSortableColumn(index)) return;\n\n if (this.sortColumn === index) {\n this.sortType = this.sortType === 'asc' ? 'desc' : 'asc';\n } else {\n this.sortType = 'asc';\n this.sortColumn = index;\n }\n\n this.$emit('on-sort-change', {\n sortType: this.sortType,\n columnIndex: this.sortColumn,\n });\n\n this.unselectAll();\n // every time we change sort we need to reset to page 1\n this.changePage(1);\n\n // if the mode is remote, we don't need to do anything\n // after this. just set table loading to true\n if (this.mode === 'remote') {\n this.tableLoading = true;\n return;\n }\n this.sortChanged = true;\n },\n\n click(row, index) {\n let selected = false;\n if (this.selectable) {\n selected = !row.vgtSelected;\n this.$set(row, 'vgtSelected', selected);\n if (!selected) {\n // if we're unselecting a row, we need to unselect\n // selectall\n this.unselectAll();\n }\n }\n this.$emit('on-row-click', {\n row,\n pageIndex: index,\n selected,\n });\n },\n\n onCellClicked(row, column, rowIndex) {\n this.$emit('on-cell-click', {\n row,\n column,\n rowIndex,\n });\n },\n\n onMouseenter(row, index) {\n this.$emit('on-row-mouseenter', {\n row,\n pageIndex: index,\n });\n },\n\n onMouseleave(row, index) {\n this.$emit('on-row-mouseleave', {\n row,\n pageIndex: index,\n });\n },\n\n searchTableOnEnter() {\n if (this.searchTrigger === 'enter') {\n this.resetTable();\n // we reset the filteredRows here because\n // we want to search across everything.\n this.filteredRows = this.originalRows;\n this.forceSearch = true;\n this.sortChanged = true;\n }\n },\n\n searchTableOnKeyUp() {\n if (this.searchTrigger !== 'enter') {\n this.resetTable();\n }\n },\n\n resetTable() {\n this.unselectAll();\n this.unselectAllInternal();\n // every time we searchTable\n this.changePage(1);\n },\n\n // field can be:\n // 1. function\n // 2. regular property - ex: 'prop'\n // 3. nested property path - ex: 'nested.prop'\n collect(obj, field) {\n // utility function to get nested property\n function dig(obj, selector) {\n let result = obj;\n const splitter = selector.split('.');\n for (let i = 0; i < splitter.length; i++) {\n if (typeof result === 'undefined') {\n return undefined;\n }\n result = result[splitter[i]];\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\n collectFormatted(obj, column, headerRow = false) {\n let value;\n if (headerRow && column.headerField) {\n value = this.collect(obj, column.headerField);\n } else {\n value = this.collect(obj, column.field);\n }\n if (value === undefined) return '';\n\n // if user has supplied custom formatter,\n // use that here\n if (column.formatFn && typeof column.formatFn === 'function') {\n return column.formatFn(value);\n }\n\n // lets format the resultant data\n let type = column.typeDef;\n // 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 if (!type) {\n type = this.dataTypes[column.type] || defaultType;\n }\n return type.format(value, column);\n },\n\n formattedRow(row) {\n const formattedRow = {};\n for (let i = 0; i < this.typedColumns.length; i++) {\n const col = this.typedColumns[i];\n // what happens if field is\n if (col.field) {\n formattedRow[col.field] = this.collectFormatted(row, col);\n }\n }\n return formattedRow;\n },\n\n // Check if a column is sortable.\n isSortableColumn(index) {\n const { sortable } = this.columns[index];\n const isSortable = typeof sortable === 'boolean' ? sortable : this.sortable;\n return isSortable;\n },\n\n // Get classes for the given header column.\n getHeaderClasses(column, index) {\n const isSortable = this.isSortableColumn(index);\n const classes = assign({}, this.getClasses(index, 'th'), {\n sorting: isSortable,\n 'sorting-desc': isSortable && this.sortColumn === index && this.sortType === 'desc',\n 'sorting-asc': isSortable && this.sortColumn === index && this.sortType === 'asc',\n });\n return classes;\n },\n\n // Get classes for the given column index & element.\n getClasses(index, element) {\n const { typeDef, [`${element}Class`]: custom } = this.typedColumns[index];\n let { isRight } = typeDef;\n if (this.rtl) isRight = true;\n const classes = {\n 'vgt-right-align': isRight,\n 'vgt-left-align': !isRight,\n [custom]: !!custom,\n };\n return classes;\n },\n\n // method to filter rows\n filterRows(columnFilters, fromFilter = 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 let computedRows = cloneDeep(this.originalRows);\n\n // do we have a filter to care about?\n // if not we don't need to do anything\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 this.changePage(1);\n this.unselectAll();\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 if (fromFilter) {\n this.$emit('on-column-filter', {\n columnFilters: this.columnFilters,\n });\n }\n\n // if mode is remote, we don't do any filtering here.\n if (this.mode === 'remote' && fromFilter) {\n this.tableLoading = true;\n return;\n }\n\n for (let i = 0; i < this.typedColumns.length; i++) {\n const col = this.typedColumns[i];\n if (this.columnFilters[col.field]) {\n computedRows = each(computedRows, (headerRow) => {\n const newChildren = headerRow.children.filter((row) => {\n // If column has a custom filter, use that.\n if (col.filterOptions\n && typeof col.filterOptions.filterFn === 'function') {\n return col.filterOptions.filterFn(\n this.collect(row, col.field),\n this.columnFilters[col.field]\n );\n }\n // Otherwise Use default filters\n const { typeDef } = col;\n return typeDef.filterPredicate(\n this.collect(row, col.field),\n this.columnFilters[col.field]\n );\n });\n // should we remove the header?\n headerRow.children = newChildren;\n });\n }\n }\n }\n this.filteredRows = computedRows;\n },\n\n getCurrentIndex(index) {\n return ((this.currentPage - 1) * this.currentPerPage) + index + 1;\n },\n\n getRowStyleClass(row) {\n let classes = '';\n if (this.hasRowClickListener) classes += 'clickable';\n let rowStyleClasses;\n if (typeof this.rowStyleClass === 'function') {\n rowStyleClasses = this.rowStyleClass(row);\n } else {\n rowStyleClasses = this.rowStyleClass;\n }\n if (rowStyleClasses) {\n classes += ` ${rowStyleClasses}`;\n }\n return classes;\n },\n\n handleGrouped(originalRows) {\n each(originalRows, (headerRow, i) => {\n headerRow.vgt_header_id = i;\n each(headerRow.children, (childRow) => {\n childRow.vgt_id = i;\n });\n });\n return originalRows;\n },\n\n // handleRows() {\n // if (!this.groupOptions.enabled) {\n // this.filteredRows = this.handleGrouped([{\n // label: 'no groups',\n // children: this.originalRows,\n // }]);\n // } else {\n // this.filteredRows = this.handleGrouped(this.originalRows);\n // }\n // },\n\n initializePagination() {\n const {\n enabled,\n perPage,\n position,\n perPageDropdown,\n dropdownAllowAll,\n nextLabel,\n prevLabel,\n rowsPerPageLabel,\n ofLabel,\n allLabel,\n setCurrentPage,\n } = this.paginationOptions;\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 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\n if (typeof dropdownAllowAll === 'boolean') {\n this.paginateDropdownAllowAll = dropdownAllowAll;\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 allLabel === 'string') {\n this.allText = allLabel;\n }\n\n if (typeof setCurrentPage === 'number') {\n setTimeout(() => {\n this.changePage(setCurrentPage);\n }, 500);\n }\n },\n\n initializeSearch() {\n const {\n enabled,\n trigger,\n externalQuery,\n searchFn,\n placeholder,\n } = this.searchOptions;\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\n initializeSort() {\n const { enabled, initialSortBy } = this.sortOptions;\n\n if (typeof enabled === 'boolean') {\n this.sortable = enabled;\n }\n\n if (typeof initialSortBy === 'object') {\n this.defaultSortBy = initialSortBy;\n }\n },\n\n initializeSelect() {\n const {\n enabled,\n selectionInfoClass,\n selectionText,\n clearSelectionText,\n } = this.selectOptions;\n\n if (typeof enabled === 'boolean') {\n this.selectable = enabled;\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\n mounted() {\n // this.filteredRows = this.originalRows;\n\n if (this.perPage) {\n this.currentPerPage = this.perPage;\n }\n\n // take care of default sort on mount\n if (this.defaultSortBy) {\n for (let index = 0; index < this.columns.length; index++) {\n const col = this.columns[index];\n if (col.field === this.defaultSortBy.field) {\n this.sortColumn = index;\n this.sortType = this.defaultSortBy.type || 'asc';\n this.sortChanged = true;\n break;\n }\n }\n }\n },\n\n components: {\n 'vgt-pagination': VgtPagination,\n 'vgt-global-search': VgtGlobalSearch,\n 'vgt-filter-row': VgtFilterRow,\n },\n};\n","import GoodTable from './components/Table.vue';\n\nconst GoodTablePlugin = {\n install(Vue, options) {\n Vue.component(GoodTable.name, GoodTable);\n },\n};\n\n// Automatic installation if Vue has been added to the global scope.\nif (typeof window !== 'undefined' && window.Vue) {\n window.Vue.use(GoodTablePlugin);\n}\n\nexport default GoodTablePlugin;\nexport { GoodTable };\n"],"names":["MAX_SAFE_INTEGER","argsTag","funcTag","genTag","reIsUint","arrayEach","array","iteratee","index","length","func","transform","objectProto","Object","prototype","hasOwnProperty","objectToString","toString","propertyIsEnumerable","nativeKeys","keys","arg","arrayLikeKeys","value","inherited","result","isArray","isObjectLike","isArrayLike","isArrayLikeObject","call","isArguments","n","Array","baseTimes","String","skipIndexes","key","isIndex","push","eachFunc","fromRight","baseEach","object","baseFor","collection","iterable","keysFunc","props","createBaseFor","baseKeys","Ctor","constructor","proto","test","isLength","tag","type","isObject","isFunction","identity","overArg","nativeMax","Math","max","nonEnumShadows","valueOf","assignValue","objValue","eq","undefined","isPrototype","other","assigner","sources","customizer","guard","isIterateeCall","source","start","args","arguments","otherArgs","thisArg","apply","this","createAssigner","newValue","copyObject","LARGE_ARRAY_SIZE","HASH_UNDEFINED","boolTag","dateTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","symbolTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reFlags","reIsHostCtor","cloneableTags","freeGlobal","global","freeSelf","self","root","Function","freeExports","exports","nodeType","freeModule","module","moduleExports","addMapEntry","map","pair","set","addSetEntry","add","arrayReduce","accumulator","initAccum","isHostObject","e","mapToArray","size","forEach","setToArray","uid","arrayProto","funcProto","coreJsData","maskSrcKey","exec","IE_PROTO","funcToString","reIsNative","RegExp","replace","Buffer","Symbol","Uint8Array","getPrototype","getPrototypeOf","objectCreate","create","splice","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","DataView","getNative","Map","Promise","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","entries","clear","entry","ListCache","MapCache","Stack","__data__","assocIndexOf","baseClone","isDeep","isFull","stack","isArr","input","initCloneArray","copyArray","getTag","isFunc","buffer","slice","copy","cloneBuffer","initCloneObject","getSymbols","copySymbols","baseAssign","cloneFunc","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","typedArray","cloneTypedArray","cloneMap","regexp","lastIndex","cloneSet","symbol","initCloneByTag","stacked","get","symbolsFunc","values","offset","arrayPush","baseGetAllKeys","getAllKeys","subValue","baseIsNative","arrayBuffer","getMapData","data","getValue","has","pop","hash","string","cache","pairs","ArrayBuffer","resolve","ctorString","FUNC_ERROR_TEXT","UNORDERED_COMPARE_FLAG","PARTIAL_COMPARE_FLAG","INFINITY","arrayTag","errorTag","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","typedArrayTags","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arrayFilter","predicate","resIndex","arraySome","symbolToString","SetCache","baseFilter","baseGet","path","isKey","castPath","toKey","baseHasIn","baseIsEqual","bitmask","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","name","message","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","othLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIteratee","srcValue","isStrictComparable","matchesStrictComparable","defaultValue","hasFunc","hasPath","hasIn","baseMatchesProperty","matchData","getMatchData","noCustomizer","baseIsMatch","baseMatches","basePropertyDeep","stringToPath","arrLength","seen","arrValue","othIndex","isSymbol","memoize","baseToString","match","number","quote","resolver","TypeError","memoized","Cache","baseUnary","diacritics","a","A","b","B","c","C","d","D","E","f","F","g","G","h","H","i","I","j","J","k","K","l","L","m","M","N","o","O","p","P","q","Q","r","R","s","S","t","T","u","U","v","V","w","W","x","X","y","Y","z","Z","text","searchChar","charAt","foundChar","indexOf","join","rowval","filter","rowValue","diacriticless","toLowerCase","searchTerm","search","cook","handlePerPage","perPageChanged","customRowsPerPageDropdown","lenght","rowsPerPageOptions","currentPerPage","total","ofText","first","currentPage","last","min","nextIsPossible","pageChanged","$emit","event","parseInt","target","cloneDeep","defaultRowsPerPageDropdown","perPage","found","searchEnabled","$slots","populateInitialFilters","mode","globalSearchEnabled","columns","col","filterOptions","enabled","column","isFilterable","filterDropdownItems","isDropdown","_typeof","placeholder","label","updateFilters","trigger","timer","clearTimeout","setTimeout","updateFiltersImmediately","$set","columnFilters","field","filterValue","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","DEFAULT_ADDITIONAL_DIGITS","patterns","dateTimeDelimeter","plainTime","YY","YYY","YYYY","YYYYY","MM","DDD","MMDD","Www","WwwD","HH","HHMM","HHMMSS","timezone","timezoneZ","timezoneHH","timezoneHHMM","toDate","argument","dirtyOptions","Date","NaN","options","additionalDigits","Number","RangeError","getTime","dateStrings","dateString","timeString","split","date","token","time","splitDateString","parseYearResult","patternYYY","patternYYYYY","yearString","year","restDateString","centuryString","parseYear","month","week","setUTCFullYear","dayOfYear","day","dayOfISOYear","dayOfWeek","parseDate","timestamp","hours","minutes","parseFloat","seconds","parseTime","timezoneString","absoluteOffset","parseTimezone","getTimezoneOffset","isoYear","diff","getUTCDay","setUTCDate","getUTCDate","cloneObject","dirtyObject","property","addMinutes","dirtyDate","dirtyAmount","amount","addMilliseconds","isValid","isNaN","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","tokensToBeShortedPattern","buildShortLongFormat","format","obj","formatLongLocale","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","defaultType","indexCallback","dirtyIndex","buildLocalizeArrayFn","weekdayValues","narrow","short","long","monthValues","timeOfDayValues","uppercase","lowercase","buildMatchFn","dirtyString","pattern","buildParseFn","matchResult","patternsArray","findIndex","locale","formatDistance","count","addSuffix","comparison","formatLong","LTS","LT","LL","LLL","LLLL","ll","lll","llll","formatRelative","baseDate","localize","ordinalNumber","dirtyNumber","rem100","weekday","weekdays","months","timeOfDay","timesOfDay","ordinalNumbers","any","weekStartsOn","firstWeekContainsDate","MILLISECONDS_IN_DAY","getUTCDayOfYear","setUTCMonth","setUTCHours","difference","floor","startOfUTCISOWeek","getUTCISOWeekYear","getUTCFullYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","round","formatters","getUTCMonth","Mo","unit","addLeadingZeros","MMM","MMMM","ceil","Qo","quarter","Do","DD","DDDo","DDDD","dd","ddd","dddd","do","Wo","WW","substr","GG","GGGG","getUTCHours","hh","getUTCMinutes","mm","getUTCSeconds","ss","getUTCMilliseconds","SS","SSS","formatTimezone","_originalDate","ZZ","originalDate","aa","delimeter","sign","absOffset","abs","targetLength","output","longFormattingTokensRegExp","defaultFormattingTokensRegExp","dirtyFormatStr","formatStr","defaultLocale","localeFormatters","formattingTokensRegExp","utcDate","setUTCMinutes","addUTCMinutes","formatterOptions","substring","cleanEscapedString","formatter","singleDigit","twoDigits","threeDigits","fourDigits","anyDigits","parseDecimal","parsers","parse","parseResult","units","twoDigitYear","priority","dateValues","dirtyISOYear","dateStartOfYear","isoWeek","dirtyISOWeek","dirtyDay","localeWeekStartsOn","defaultWeekStartsOn","currentDay","setUTCDay","dayOfISOWeek","setUTCISODay","dayOfMonth","timeOfDayHours","setTimeOfDay","setUTCSeconds","milliseconds","setUTCMilliseconds","TIMEZONE_UNIT_PRIORITY","defaultParsingTokensRegExp","dirtyDateString","dirtyFormatString","dirtyBaseDate","localeParsers","localeUnits","formatString","subFnOptions","tokens","parsingTokensRegExp","tokensLength","setters","dateToSystemTimezone","parser","unitName","head","uniquePrioritySetters","setter","sort","reverse","setterArray","subMinutes","settersLength","clone","def","isRight","compare","dateInputFormat","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","compareAsc","dateOutputFormat","filterPredicate","Infinity","decimal","toFixed","percentage","dataTypes","coreDataTypes","compName","default","Boolean","tableLoading","filterRows","initializeSelect","initializePagination","initializeSearch","initializeSort","isLoading","paginated","children","selectedRowCount","selectionText","selectedRows","processedRows","headerRow","row","vgtSelected","fullColspan","lineNumbers","selectable","groupOptions","headerPosition","classes","styleClass","theme","externalSearchQuery","globalSearchTerm","searchTrigger","forceSearch","computedRows","filteredRows","globalSearchAllowed","allRows","_this","globalSearchDisabled","searchFn","collectFormatted","tableValue","vgt_header_id","newHeaderRow","sortColumn","isSortableColumn","sortChanged","cRows","xvalue","collect","yvalue","sortFn","sortType","typedColumns","typeDef","paginatedRows","childRows","paginate","pageStart","pageEnd","reconstructedRows","rows","nestedRows","handleGrouped","originalIndex","assign","$listeners","emitSelectNone","originalRows","allSelected","unselectAllInternal","paginationOptions","paginationWidget","$refs","paginationBottom","position","paginationTop","totalRowCount","pagination","unselectAll","pageChangedEvent","perPageChangedEvent","changePage","selected","rowIndex","resetTable","selector","splitter","dig","headerField","formatFn","formattedRow","sortable","isSortable","getClasses","element","custom","rtl","fromFilter","_this4","each","newChildren","filterFn","rowStyleClasses","hasRowClickListener","rowStyleClass","childRow","vgt_id","perPageDropdown","dropdownAllowAll","nextLabel","prevLabel","rowsPerPageLabel","ofLabel","allLabel","setCurrentPage","paginateOnTop","paginateOnBottom","paginateDropdownAllowAll","nextText","prevText","rowsPerPageText","allText","searchOptions","externalQuery","searchPlaceholder","sortOptions","initialSortBy","defaultSortBy","selectOptions","selectionInfoClass","clearSelectionText","VgtPagination","VgtGlobalSearch","VgtFilterRow","Vue","component","GoodTable","window","use","GoodTablePlugin"],"mappings":"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"} \ No newline at end of file