label-print-design
Version:
操作简单,组件丰富的一站式打印解决方案打印设计器
1,288 lines (1,277 loc) • 2.77 MB
JavaScript
import { defineComponent, reactive, ref, computed, onMounted, onUnmounted, watch, openBlock, createElementBlock, Fragment, createElementVNode, mergeProps, unref, createVNode, nextTick as nextTick$1, renderList, normalizeStyle, createBlock, resolveComponent, withCtx, createCommentVNode, toDisplayString as toDisplayString$1, createTextVNode, h as h$3, getCurrentInstance, effectScope, inject, shallowRef, onBeforeMount, isRef, Text as Text$1, markRaw, toRaw, hasInjectionContext, isReactive, getCurrentScope, onScopeDispose, toRefs, render, readonly, provide, useSlots, normalizeClass, withDirectives, vModelText, vShow, renderSlot, resolveDynamicComponent, Teleport as Teleport$1, pushScopeId, popScopeId, watchEffect, customRef, warn as warn$1, Transition, toRef, useAttrs as useAttrs$1, withModifiers, onBeforeUnmount, onActivated, onUpdated, cloneVNode, Comment, onDeactivated, withKeys, createSlots, normalizeProps, guardReactiveProps, isVNode as isVNode$1, vModelCheckbox, vModelRadio, onBeforeUpdate, toHandlers, TransitionGroup, resolveDirective, toHandlerKey, createApp, shallowReactive } from 'vue';
import widget from '..../components/content/widget/index.vue';
import PanelView from '..../components/content/panel/index.vue';
import { mitt as mitt$2, to as to$2, downloadImg2Base64, replaceSpacesOutsideHTMLTags, parse as parse$2, stringify as stringify$1, generateUUID as generateUUID$1, download as download$1 } from '..../utils/utils';
import { init } from '..../utils/historyUtil';
import { useAppStoreHook as useAppStoreHook$1 } from '..../stores/app';
import MyMouseTips from '..../components/my/mouse-tips/my-mouse-tips.vue';
import { setCurrentPanel, setPreviewData, setProvider, initPanel as initPanel$1, parentInitElement as parentInitElement$1, defaultPreviewData, getCurrentPanelUnit as getCurrentPanelUnit$1, valueUnit, getRecursionParentPanel, element2PreviewWrapper, formatter as formatter$1 } from '..../utils/elementUtil';
import { newSelecto } from '..../plugins/moveable/selecto';
import { MyMessage } from '..../components/my/message/my-message';
import { MyPrinter as MyPrinter$1 } from '..../printer';
import { i18n as i18n$1 } from '..../locales';
import Preview$1 from '..../components/preview/preview.vue';
import { autoPage as autoPage$1 } from '..../components/preview/autoPage';
import { chrome2Img, toPdf } from '..../utils/pdfUtil';
import { unit2px as unit2px$1, unit2unit as unit2unit$1, px2unit as px2unit$1 } from '..../utils/devicePixelRatio';
import { downloadImg, downloadPdf } from '..../api/pdfServer';
import { getPrintElementHtml, iFramePrint } from '..../utils/myprint';
import { handleTimeOut, printResult, myPrintClientService as myPrintClientService$1, handleClientResult } from '..../plugins/myprintClientService';
import ElementView from '..../components/design/element.vue';
import DataTable from '..../components/design/table/data-table/data-table.vue';
import { MyContainer } from '..../components/design/container';
import { useConfigStore as useConfigStore$1 } from '..../stores/config';
import numberUtil from '..../utils/numberUtil';
import { lastHeadList, previewTableStatisticsList, previewRowStatisticsList, statisticsData } from '..../utils/table/dataTable';
import MyScrollbar from '..../components/my/scrollbar/my-scrollbar.vue';
import MyButton from '..../components/my/button/my-Button.vue';
import MyDialog from '..../components/my/dialog/my-dialog.vue';
import MySelect from '..../components/my/select/my-select.vue';
import '..../plugins/moveable/moveable_js';
import 'vue3-colorpicker/style.css';
import 'vue-cropper/dist/index.css';
import MessageView from '....../components/my/message/my-message.vue';
import 'element-plus/dist/index.css';
var isVue2 = false;
const _hoisted_1$2 = ["data-rotation"];
const _hoisted_2$2 = { class: "my-main design-container-root_main" };
const _hoisted_3$2 = {
class: "my-aside display-flex-column",
style: { "border-right": "1px #e9e9e9 solid", "background": "#f8f8f8" }
};
var _sfc_main$2B = /* @__PURE__ */ defineComponent({
__name: "index",
props: {
module: {},
template: {},
height: {},
saveTemplate: {},
generateImg: { type: Boolean },
showBackButton: { type: Boolean, default: true },
showPrintButton: { type: Boolean, default: true },
showDownloadPdfButton: { type: Boolean, default: true },
showPreviewButton: { type: Boolean, default: true },
showClearButton: { type: Boolean, default: true },
showSaveButton: { type: Boolean, default: true }
},
emits: ["back", "panelImg"],
setup(__props, { emit: __emit }) {
const appStore = useAppStoreHook$1();
const $emit = __emit;
const data = reactive({
buildImgIs: false
});
const provider = ref({});
const panel = reactive({
runtimeOption: {
dragInIs: false
},
type: "Panel",
dragSnapPanelIs: 1,
dragSnapIs: 1
});
const previewData = ref([]);
setCurrentPanel(panel);
const props = __props;
const style = computed(() => {
return {
height: props.height
};
});
onMounted(() => {
mitt$2.on("saveTemplate", saveTemplate);
initModule();
initTemplate();
newSelecto();
});
onUnmounted(() => {
mitt$2.off("saveTemplate", saveTemplate);
});
const moduleWatchStop = watch(() => props.module, (_n, _o) => {
if (props.module) {
initModule();
moduleWatchStop();
}
});
function initModule() {
if (!props.module) {
return;
}
provider.value = JSON.parse(props.module.provider);
previewData.value = JSON.parse(props.module.previewData);
setPreviewData(previewData.value);
setProvider(provider.value);
initPanel$1(panel, provider);
setCurrentPanel(panel);
}
const templateWatchStop = watch(() => props.template, (_n, _o) => {
if (props.template) {
initTemplate();
templateWatchStop();
}
});
function initTemplate() {
if (!props.template) {
return;
}
to$2(JSON.parse(props.template.content), panel);
setCurrentPanel(panel);
if (!panel.watermarkContent) ;
if (!panel.groupList) {
panel.groupList = [];
}
if (!panel.auxiliaryLineList) {
panel.auxiliaryLineList = [];
}
for (let myAuxiliaryLine of panel.auxiliaryLineList) {
myAuxiliaryLine.runtimeOption = { x: 0, y: 0, auxiliaryLineStatus: "SHOW" };
}
panel.runtimeOption = {};
for (let i = 0; i < panel.elementList.length; i++) {
const element = panel.elementList[i];
parentInitElement$1(panel, panel, element, i);
}
panel.pageHeader && parentInitElement$1(panel, panel, panel.pageHeader, 0);
panel.pageFooter && parentInitElement$1(panel, panel, panel.pageFooter, 0);
init();
if (provider.value.pageUnit == void 0) {
provider.value.pageUnit = "px";
}
mitt$2.emit("updatePanel");
mitt$2.emit("changePageSize");
}
function back() {
$emit("back");
}
function saveTemplate() {
if (props.generateImg) {
if (!data.buildImgIs) {
data.buildImgIs = true;
MyPrinter$1.imgChrome({ previewDataList: [defaultPreviewData(previewData.value)[0]] }).then((res) => {
$emit("panelImg", res.blobList);
data.buildImgIs = false;
}).catch((_e) => {
data.buildImgIs = false;
});
}
}
const template = {};
template.name = panel.name;
template.content = JSON.stringify(panel, (key, value) => {
if ("runtimeOption" == key) return void 0;
return value;
});
if (props.saveTemplate != null) {
props.saveTemplate(template).then((_res) => {
MyMessage.success(i18n$1("common.save.success"));
}).catch((e) => {
let failMsg = i18n$1("common.save.fail");
if (e.msg) {
failMsg = failMsg + ": " + e.msg;
}
MyMessage.success(failMsg);
});
}
}
return (_ctx, _cache) => {
var _a;
return openBlock(), createElementBlock(
Fragment,
null,
[
createElementVNode("section", mergeProps({ class: "design-container-root cursor-resize" }, _ctx.$attrs, {
style: unref(style),
"data-rotation": unref(appStore).dataRotation
}), [
createElementVNode("main", _hoisted_2$2, [
createVNode(PanelView, { designProps: props })
]),
createElementVNode("aside", _hoisted_3$2, [
createVNode(widget, {
"module-name": (_a = props.module) == null ? void 0 : _a.name,
showBackButton: _ctx.showBackButton,
onBack: back
}, null, 8, ["module-name", "showBackButton"])
])
], 16, _hoisted_1$2),
createVNode(MyMouseTips)
],
64
/* STABLE_FRAGMENT */
);
};
}
});
var _export_sfc$1 = (sfc, props) => {
const target = sfc.__vccOpts || sfc;
for (const [key, val] of props) {
target[key] = val;
}
return target;
};
var DesignPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$2B, [["__file", "index.vue"]]);
const _hoisted_1$1 = { class: "my-print-preview-panel__wrap my-print-print_hidden" };
const _hoisted_2$1 = { class: "preview-panel__model" };
const _hoisted_3$1 = { class: "my-print-preview-panel__content" };
var _sfc_main$2A = /* @__PURE__ */ defineComponent({
__name: "print",
setup(__props, { expose: __expose }) {
__expose({
handleChromePrint,
handleClientPrint,
handleChromeDownloadImg,
handleServerDownloadImg,
handleChromeDownloadPdf,
handleClientDownloadPdf,
handleServerDownloadPdf
});
const data = reactive({
dialogVisible: false,
pageList: [],
resolveMap: {},
previewTimeOutMap: {},
panel: null
});
const previewContentRef = ref();
let itemRefs = {};
function setItemRef(el, item) {
itemRefs[item.id] = el;
}
function handleChromePrint(printProps) {
return new Promise(async (resolve, _reject) => {
data.resolveMap[printProps.taskId] = resolve;
data.panel = printProps.panel;
await nextTick$1();
await autoPage$1(previewContentRef, data.pageList, data.panel, printProps.previewDataList);
await nextTick$1();
handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);
printArea();
data.pageList.length = 0;
printResult(printProps.taskId, {
status: "SUCCESS",
type: "CHROME_PRINT"
}, data.previewTimeOutMap, data.resolveMap);
});
}
function handleClientPrint(printProps) {
return new Promise(async (resolve, _reject) => {
data.resolveMap[printProps.taskId] = resolve;
if (printProps.panel) {
data.panel = printProps.panel;
await nextTick$1();
await autoPage$1(previewContentRef, data.pageList, data.panel, printProps.previewDataList);
await nextTick$1();
}
handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);
if (!myPrintClientService$1.connectIs()) {
printResult(printProps.taskId, {
status: "ERROR",
msg: "\u5BA2\u6237\u7AEF\u672A\u8FDE\u63A5",
type: "CLIENT_PRINT"
}, data.previewTimeOutMap, data.resolveMap);
return;
}
myPrintClientService$1.print({
cmd: "print",
taskId: printProps.taskId,
options: {
...printProps,
title: printProps.title ? printProps.title : printProps.panel ? printProps.panel.name : void 0,
html: printProps.panel ? getPrintElementHtml(previewContentRef.value, data.pageList) : void 0,
file: printProps.file ? printProps.file : void 0,
panel: void 0,
previewDataList: void 0
}
}, data.panel).then((clientCmd) => {
handleClientResult(clientCmd, printResult, data.previewTimeOutMap, data.resolveMap);
});
});
}
function handleChromeDownloadImg(printProps) {
return new Promise(async (resolve, _reject) => {
data.resolveMap[printProps.taskId] = resolve;
handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);
data.panel = printProps.panel;
await nextTick$1();
await autoPage$1(previewContentRef, data.pageList, data.panel, printProps.previewDataList);
chrome2Img(previewContentRef.value, {
width: unit2px$1(data.panel.width, data.panel),
height: unit2px$1(data.panel.height, data.panel)
}).then((blobList) => {
data.pageList = [];
printResult(printProps.taskId, {
status: "SUCCESS",
blobList,
type: "CHROME_GENERATE_IMG"
}, data.previewTimeOutMap, data.resolveMap);
});
});
}
function handleServerDownloadImg(printProps) {
return new Promise(async (resolve, reject) => {
data.resolveMap[printProps.taskId] = resolve;
handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);
data.panel = printProps.panel;
await nextTick$1();
await autoPage$1(previewContentRef, data.pageList, data.panel, printProps.previewDataList);
const html = getPrintElementHtml(previewContentRef.value, data.pageList);
downloadImg({
content: html,
height: unit2unit$1(getCurrentPanelUnit$1(data.panel), "mm", data.panel.height),
width: unit2unit$1(getCurrentPanelUnit$1(data.panel), "mm", data.panel.width)
}).then((blob) => {
printResult(printProps.taskId, {
status: "SUCCESS",
blob,
type: "SERVER_GENERATE_IMG"
}, data.previewTimeOutMap, data.resolveMap);
}).catch((e) => {
reject({
status: "SUCCESS",
msg: e.msg,
type: "SERVER_GENERATE_IMG"
});
});
});
}
function handleChromeDownloadPdf(printProps) {
return new Promise(async (resolve, reject) => {
data.resolveMap[printProps.taskId] = resolve;
handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);
data.panel = printProps.panel;
await nextTick$1();
await autoPage$1(previewContentRef, data.pageList, data.panel, printProps.previewDataList);
toPdf(previewContentRef.value, {
width: unit2px$1(data.panel.width, data.panel),
height: unit2px$1(data.panel.height, data.panel)
}).then((blob) => {
data.pageList.length = 0;
printResult(printProps.taskId, {
status: "SUCCESS",
blob,
type: "CHROME_GENERATE_PDF"
}, data.previewTimeOutMap, data.resolveMap);
}).catch((e) => {
data.pageList.length = 0;
reject({
status: "ERROR",
msg: e.msg,
type: "CHROME_GENERATE_PDF"
});
});
});
}
function handleClientDownloadPdf(printProps) {
return new Promise(async (resolve, reject) => {
data.resolveMap[printProps.taskId] = resolve;
handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);
data.panel = printProps.panel;
await nextTick$1();
await autoPage$1(previewContentRef, data.pageList, data.panel, printProps.previewDataList);
myPrintClientService$1.print({
options: { html: getPrintElementHtml(previewContentRef.value, data.pageList) },
cmd: "generatePdf",
taskId: printProps.taskId
}, data.panel).then((res) => {
handleClientResult(res, printResult, data.previewTimeOutMap, data.resolveMap);
}).catch((e) => {
reject({
status: "ERROR",
msg: e.msg,
type: "CLIENT_GENERATE_PDF"
});
});
});
}
function handleServerDownloadPdf(printProps) {
return new Promise(async (resolve, reject) => {
data.resolveMap[printProps.taskId] = resolve;
handleTimeOut(printProps, data.previewTimeOutMap, data.resolveMap);
data.panel = printProps.panel;
await nextTick$1();
await autoPage$1(previewContentRef, data.pageList, data.panel, printProps.previewDataList);
const html = getPrintElementHtml(previewContentRef.value, data.pageList);
downloadPdf({
content: html,
height: unit2unit$1(getCurrentPanelUnit$1(data.panel), "mm", data.panel.height),
width: unit2unit$1(getCurrentPanelUnit$1(data.panel), "mm", data.panel.width)
}).then((blob) => {
printResult(printProps.taskId, {
status: "SUCCESS",
blob,
type: "SERVER_GENERATE_PDF"
}, data.previewTimeOutMap, data.resolveMap);
}).catch((e) => {
reject({
status: "ERROR",
msg: e.msg,
type: "SERVER_GENERATE_PDF"
});
});
});
}
function printArea() {
const html = getPrintElementHtml(previewContentRef.value, data.pageList);
iFramePrint(data.panel, html);
}
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", _hoisted_1$1, [
createElementVNode("div", _hoisted_2$1, [
createElementVNode("div", _hoisted_3$1, [
(openBlock(true), createElementBlock(
Fragment,
null,
renderList(unref(data).pageList, (page, index) => {
return openBlock(), createElementBlock(
"div",
{
ref_for: true,
ref_key: "previewContentRef",
ref: previewContentRef,
key: index,
class: "my-print-preview-panel__content_page preview-page-top",
style: normalizeStyle({
width: unref(valueUnit)(page.width, unref(data).panel),
minHeight: unref(valueUnit)(page.height, unref(data).panel)
})
},
[
(openBlock(true), createElementBlock(
Fragment,
null,
renderList(page.previewWrapperList, (element, index2) => {
return openBlock(), createBlock(Preview$1, {
ref_for: true,
ref: (el) => setItemRef(el, element),
key: index2,
preview: element
}, null, 8, ["preview"]);
}),
128
/* KEYED_FRAGMENT */
))
],
4
/* STYLE */
);
}),
128
/* KEYED_FRAGMENT */
))
])
])
]);
};
}
});
var PrintView = /* @__PURE__ */ _export_sfc$1(_sfc_main$2A, [["__file", "print.vue"]]);
var _sfc_main$2z = /* @__PURE__ */ defineComponent({
__name: "preview",
props: {
preview: { default: () => ({}) }
},
setup(__props) {
const style = computed(() => {
const _style = {
width: valueUnit(props.preview.width, getRecursionParentPanel(props.preview)),
left: valueUnit(props.preview.x, getRecursionParentPanel(props.preview)),
top: valueUnit(props.preview.y, getRecursionParentPanel(props.preview)),
zIndex: props.preview.runtimeOption.index
};
if (props.preview.option.rotate != null) {
_style.transform = `rotate(${props.preview.option.rotate}deg)`;
}
if (props.preview.heightIs) {
_style.height = valueUnit(props.preview.height, getRecursionParentPanel(props.preview));
}
return _style;
});
const props = __props;
const previewWrapRef = ref();
onMounted(() => {
props.preview.target = previewWrapRef.value;
});
onUnmounted(() => {
props.preview.target = void 0;
});
return (_ctx, _cache) => {
const _component_Preview = resolveComponent("Preview", true);
return openBlock(), createElementBlock(
"div",
{
class: "my-print-preview-wrap",
ref_key: "previewWrapRef",
ref: previewWrapRef,
style: normalizeStyle(unref(style))
},
[
createVNode(ElementView, { element: _ctx.preview }, null, 8, ["element"]),
_ctx.preview.type === "DataTable" ? (openBlock(), createBlock(DataTable, {
key: 0,
element: _ctx.preview
}, null, 8, ["element"])) : _ctx.preview.type === "PageHeader" ? (openBlock(), createBlock(unref(MyContainer), { key: 1 }, {
default: withCtx(() => [
(openBlock(true), createElementBlock(
Fragment,
null,
renderList(_ctx.preview.previewWrapperList, (item, index) => {
return openBlock(), createBlock(_component_Preview, {
preview: item,
key: index
}, null, 8, ["preview"]);
}),
128
/* KEYED_FRAGMENT */
))
]),
_: 1
/* STABLE */
})) : _ctx.preview.type === "PageFooter" ? (openBlock(), createBlock(unref(MyContainer), { key: 2 }, {
default: withCtx(() => [
(openBlock(true), createElementBlock(
Fragment,
null,
renderList(_ctx.preview.previewWrapperList, (item, index) => {
return openBlock(), createBlock(_component_Preview, {
preview: item,
key: index
}, null, 8, ["preview"]);
}),
128
/* KEYED_FRAGMENT */
))
]),
_: 1
/* STABLE */
})) : _ctx.preview.type === "Container" ? (openBlock(), createBlock(unref(MyContainer), { key: 3 }, {
default: withCtx(() => [
(openBlock(true), createElementBlock(
Fragment,
null,
renderList(_ctx.preview.previewWrapperList, (item, index) => {
return openBlock(), createBlock(_component_Preview, {
preview: item,
key: index
}, null, 8, ["preview"]);
}),
128
/* KEYED_FRAGMENT */
))
]),
_: 1
/* STABLE */
})) : createCommentVNode("v-if", true)
],
4
/* STYLE */
);
};
}
});
var Preview = /* @__PURE__ */ _export_sfc$1(_sfc_main$2z, [["__file", "preview.vue"]]);
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
var lodashExports = {};
var lodash = {
get exports(){ return lodashExports; },
set exports(v){ lodashExports = v; },
};
(function(module, exports) {
(function() {
var undefined$1;
var VERSION = "4.17.21";
var LARGE_ARRAY_SIZE = 200;
var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`";
var HASH_UNDEFINED = "__lodash_hash_undefined__";
var MAX_MEMOIZE_SIZE = 500;
var PLACEHOLDER = "__lodash_placeholder__";
var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;
var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512;
var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "...";
var HOT_COUNT = 800, HOT_SPAN = 16;
var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3;
var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0;
var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
var wrapFlags = [
["ary", WRAP_ARY_FLAG],
["bind", WRAP_BIND_FLAG],
["bindKey", WRAP_BIND_KEY_FLAG],
["curry", WRAP_CURRY_FLAG],
["curryRight", WRAP_CURRY_RIGHT_FLAG],
["flip", WRAP_FLIP_FLAG],
["partial", WRAP_PARTIAL_FLAG],
["partialRight", WRAP_PARTIAL_RIGHT_FLAG],
["rearg", WRAP_REARG_FLAG]
];
var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]";
var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g;
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source);
var reTrimStart = /^\s+/;
var reWhitespace = /\s/;
var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /;
var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
var reEscapeChar = /\\(\\)?/g;
var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
var reFlags = /\w*$/;
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
var reIsBinary = /^0b[01]+$/i;
var reIsHostCtor = /^\[object .+?Constructor\]$/;
var reIsOctal = /^0o[0-7]+$/i;
var reIsUint = /^(?:0|[1-9]\d*)$/;
var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
var reNoMatch = /($^)/;
var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
var rsApos = "['\u2019]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d";
var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")";
var reApos = RegExp(rsApos, "g");
var reComboMark = RegExp(rsCombo, "g");
var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
var reUnicodeWord = RegExp([
rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")",
rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")",
rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower,
rsUpper + "+" + rsOptContrUpper,
rsOrdUpper,
rsOrdLower,
rsDigits,
rsEmoji
].join("|"), "g");
var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]");
var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
var contextProps = [
"Array",
"Buffer",
"DataView",
"Date",
"Error",
"Float32Array",
"Float64Array",
"Function",
"Int8Array",
"Int16Array",
"Int32Array",
"Map",
"Math",
"Object",
"Promise",
"RegExp",
"Set",
"String",
"Symbol",
"TypeError",
"Uint8Array",
"Uint8ClampedArray",
"Uint16Array",
"Uint32Array",
"WeakMap",
"_",
"clearTimeout",
"isFinite",
"parseInt",
"setTimeout"
];
var templateCounter = -1;
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
var cloneableTags = {};
cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
var deburredLetters = {
// Latin-1 Supplement block.
"\xC0": "A",
"\xC1": "A",
"\xC2": "A",
"\xC3": "A",
"\xC4": "A",
"\xC5": "A",
"\xE0": "a",
"\xE1": "a",
"\xE2": "a",
"\xE3": "a",
"\xE4": "a",
"\xE5": "a",
"\xC7": "C",
"\xE7": "c",
"\xD0": "D",
"\xF0": "d",
"\xC8": "E",
"\xC9": "E",
"\xCA": "E",
"\xCB": "E",
"\xE8": "e",
"\xE9": "e",
"\xEA": "e",
"\xEB": "e",
"\xCC": "I",
"\xCD": "I",
"\xCE": "I",
"\xCF": "I",
"\xEC": "i",
"\xED": "i",
"\xEE": "i",
"\xEF": "i",
"\xD1": "N",
"\xF1": "n",
"\xD2": "O",
"\xD3": "O",
"\xD4": "O",
"\xD5": "O",
"\xD6": "O",
"\xD8": "O",
"\xF2": "o",
"\xF3": "o",
"\xF4": "o",
"\xF5": "o",
"\xF6": "o",
"\xF8": "o",
"\xD9": "U",
"\xDA": "U",
"\xDB": "U",
"\xDC": "U",
"\xF9": "u",
"\xFA": "u",
"\xFB": "u",
"\xFC": "u",
"\xDD": "Y",
"\xFD": "y",
"\xFF": "y",
"\xC6": "Ae",
"\xE6": "ae",
"\xDE": "Th",
"\xFE": "th",
"\xDF": "ss",
// Latin Extended-A block.
"\u0100": "A",
"\u0102": "A",
"\u0104": "A",
"\u0101": "a",
"\u0103": "a",
"\u0105": "a",
"\u0106": "C",
"\u0108": "C",
"\u010A": "C",
"\u010C": "C",
"\u0107": "c",
"\u0109": "c",
"\u010B": "c",
"\u010D": "c",
"\u010E": "D",
"\u0110": "D",
"\u010F": "d",
"\u0111": "d",
"\u0112": "E",
"\u0114": "E",
"\u0116": "E",
"\u0118": "E",
"\u011A": "E",
"\u0113": "e",
"\u0115": "e",
"\u0117": "e",
"\u0119": "e",
"\u011B": "e",
"\u011C": "G",
"\u011E": "G",
"\u0120": "G",
"\u0122": "G",
"\u011D": "g",
"\u011F": "g",
"\u0121": "g",
"\u0123": "g",
"\u0124": "H",
"\u0126": "H",
"\u0125": "h",
"\u0127": "h",
"\u0128": "I",
"\u012A": "I",
"\u012C": "I",
"\u012E": "I",
"\u0130": "I",
"\u0129": "i",
"\u012B": "i",
"\u012D": "i",
"\u012F": "i",
"\u0131": "i",
"\u0134": "J",
"\u0135": "j",
"\u0136": "K",
"\u0137": "k",
"\u0138": "k",
"\u0139": "L",
"\u013B": "L",
"\u013D": "L",
"\u013F": "L",
"\u0141": "L",
"\u013A": "l",
"\u013C": "l",
"\u013E": "l",
"\u0140": "l",
"\u0142": "l",
"\u0143": "N",
"\u0145": "N",
"\u0147": "N",
"\u014A": "N",
"\u0144": "n",
"\u0146": "n",
"\u0148": "n",
"\u014B": "n",
"\u014C": "O",
"\u014E": "O",
"\u0150": "O",
"\u014D": "o",
"\u014F": "o",
"\u0151": "o",
"\u0154": "R",
"\u0156": "R",
"\u0158": "R",
"\u0155": "r",
"\u0157": "r",
"\u0159": "r",
"\u015A": "S",
"\u015C": "S",
"\u015E": "S",
"\u0160": "S",
"\u015B": "s",
"\u015D": "s",
"\u015F": "s",
"\u0161": "s",
"\u0162": "T",
"\u0164": "T",
"\u0166": "T",
"\u0163": "t",
"\u0165": "t",
"\u0167": "t",
"\u0168": "U",
"\u016A": "U",
"\u016C": "U",
"\u016E": "U",
"\u0170": "U",
"\u0172": "U",
"\u0169": "u",
"\u016B": "u",
"\u016D": "u",
"\u016F": "u",
"\u0171": "u",
"\u0173": "u",
"\u0174": "W",
"\u0175": "w",
"\u0176": "Y",
"\u0177": "y",
"\u0178": "Y",
"\u0179": "Z",
"\u017B": "Z",
"\u017D": "Z",
"\u017A": "z",
"\u017C": "z",
"\u017E": "z",
"\u0132": "IJ",
"\u0133": "ij",
"\u0152": "Oe",
"\u0153": "oe",
"\u0149": "'n",
"\u017F": "s"
};
var htmlEscapes = {
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'"
};
var htmlUnescapes = {
"&": "&",
"<": "<",
">": ">",
""": '"',
"'": "'"
};
var stringEscapes = {
"\\": "\\",
"'": "'",
"\n": "n",
"\r": "r",
"\u2028": "u2028",
"\u2029": "u2029"
};
var freeParseFloat = parseFloat, freeParseInt = parseInt;
var freeGlobal = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
var freeSelf = typeof self == "object" && self && self.Object === Object && self;
var root = freeGlobal || freeSelf || Function("return this")();
var freeExports = exports && !exports.nodeType && exports;
var freeModule = freeExports && true && module && !module.nodeType && module;
var moduleExports = freeModule && freeModule.exports === freeExports;
var freeProcess = moduleExports && freeGlobal.process;
var nodeUtil = function() {
try {
var types = freeModule && freeModule.require && freeModule.require("util").types;
if (types) {
return types;
}
return freeProcess && freeProcess.binding && freeProcess.binding("util");
} catch (e) {
}
}();
var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
function apply(func, thisArg, args) {
switch (args.length) {
case 0:
return func.call(thisArg);
case 1:
return func.call(thisArg, args[0]);
case 2:
return func.call(thisArg, args[0], args[1]);
case 3:
return func.call(thisArg, args[0], args[1], args[2]);
}
return func.apply(thisArg, args);
}
function arrayAggregator(array, setter, iteratee, accumulator) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
var value = array[index];
setter(accumulator, value, iteratee(value), array);
}
return accumulator;
}
function arrayEach(array, iteratee) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
if (iteratee(array[index], index, array) === false) {
break;
}
}
return array;
}
function arrayEachRight(array, iteratee) {
var length = array == null ? 0 : array.length;
while (length--) {
if (iteratee(array[length], length, array) === false) {
break;
}
}
return array;
}
function arrayEvery(array, predicate) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
if (!predicate(array[index], index, array)) {
return false;
}
}
return true;
}
function arrayFilter(array, predicate) {
var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];
while (++index < length) {
var value = array[index];
if (predicate(value, index, array)) {
result[resIndex++] = value;
}
}
return result;
}
function arrayIncludes(array, value) {
var length = array == null ? 0 : array.length;
return !!length && baseIndexOf(array, value, 0) > -1;
}
function arrayIncludesWith(array, value, comparator) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
if (comparator(value, array[index])) {
return true;
}
}
return false;
}
function arrayMap(array, iteratee) {
var index = -1, length = array == null ? 0 : array.length, result = Array(length);
while (++index < length) {
result[index] = iteratee(array[index], index, array);
}
return result;
}
function arrayPush(array, values) {
var index = -1, length = values.length, offset = array.length;
while (++index < length) {
array[offset + index] = values[index];
}
return array;
}
function arrayReduce(array, iteratee, accumulator, initAccum) {
var index = -1, length = array == null ? 0 : array.length;
if (initAccum && length) {
accumulator = array[++index];
}
while (++index < length) {
accumulator = iteratee(accumulator, array[index], index, array);
}
return accumulator;
}
function arrayReduceRight(array, iteratee, accumulator, initAccum) {
var length = array == null ? 0 : array.length;
if (initAccum && length) {
accumulator = array[--length];
}
while (length--) {
accumulator = iteratee(accumulator, array[length], length, array);
}
return accumulator;
}
function arraySome(array, predicate) {
var index = -1, length = array == null ? 0 : array.length;
while (++index < length) {
if (predicate(array[index], index, array)) {
return true;
}
}
return false;
}
var asciiSize = baseProperty("length");
function asciiToArray(string) {
return string.split("");
}
function asciiWords(string) {
return string.match(reAsciiWord) || [];
}
function baseFindKey(collection, predicate, eachFunc) {
var result;
eachFunc(collection, function(value, key, collection2) {
if (predicate(value, key, collection2)) {
result = key;
return false;
}
});
return result;
}
function baseFindIndex(array, predicate, fromIndex, fromRight) {
var length = array.length, index = fromIndex + (fromRight ? 1 : -1);
while (fromRight ? index-- : ++index < length) {
if (predicate(array[index], index, array)) {
return index;
}
}
return -1;
}
function baseIndexOf(array, value, fromIndex) {
return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);
}
function baseIndexOfWith(array, value, fromIndex, comparator) {
var index = fromIndex - 1, length = array.length;
while (++index < length) {
if (comparator(array[index], value)) {
return index;
}
}
return -1;
}
function baseIsNaN(value) {
return value !== value;
}
function baseMean(array, iteratee) {
var length = array == null ? 0 : array.length;
return length ? baseSum(array, iteratee) / length : NAN;
}
function baseProperty(key) {
return function(object) {
return object == null ? undefined$1 : object[key];
};
}
function basePropertyOf(object) {
return function(key) {
return object == null ? undefined$1 : object[key];
};
}
function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
eachFunc(collection, function(value, index, collection2) {
accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection2);
});
return accumulator;
}
function baseSortBy(array, comparer) {
var length = array.length;
array.sort(comparer);
while (length--) {
array[length] = array[length].value;
}
return array;
}
function baseSum(array, iteratee) {
var result, index = -1, length = array.length;
while (++index < length) {
var current = iteratee(array[index]);
if (current !== undefined$1) {
result = result === undefined$1 ? current : result + current;
}
}
return result;
}
function baseTimes(n, iteratee) {
var index = -1, result = Array(n);
while (++index < n) {
result[index] = iteratee(index);
}
return result;
}
function baseToPairs(object, props) {
return arrayMap(props, function(key) {
return [key, object[key]];
});
}
function baseTrim(string) {
return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string;
}
function baseUnary(func) {
return function(value) {
return func(value);
};
}
function baseValues(object, props) {
return arrayMap(props, function(key) {
return object[key];
});
}
function cacheHas(cache, key) {
return cache.has(key);
}
function charsStartIndex(strSymbols, chrSymbols) {
var index = -1, length = strSymbols.length;
while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {
}
return index;
}
function charsEndIndex(strSymbols, chrSymbols) {
var index = strSymbols.length;
while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {
}
return index;
}
function countHolders(array, placeholder) {
var length = array.length, result = 0;
while (length--) {
if (array[length] === placeholder) {
++result;
}
}
return result;
}
var deburrLetter = basePropertyOf(deburredLetters);
var escapeHtmlChar = basePropertyOf(htmlEscapes);
function escapeStringChar(chr) {
return "\\" + stringEscapes[chr];
}
function getValue(object, key) {
return object == null ? undefined$1 : object[key];
}
function hasUnicode(string) {
return reHasUnicode.test(string);
}
function hasUnicodeWord(string) {
return reHasUnicodeWord.test(string);
}
function iteratorToArray(iterator) {
var data, result = [];
while (!(data = iterator.next()).done) {
result.push(data.value);
}
return result;
}
function mapToArray(map) {
var index = -1, result = Array(map.size);
map.forEach(function(value, key) {
result[++index] = [key, value];
});
return result;
}
function overArg(func, transform) {
return function(arg) {
return func(transform(arg));
};
}
function replaceHolders(array, placeholder) {
var index = -1, length = array.length, resIndex = 0, result = [];
while (++index < length) {
var value = array[index];
if (value === placeholder || value === PLACEHOLDER) {
array[index] = PLACEHOLDER;
result[resIndex++] = index;
}
}
return result;
}
function setToArray(set) {
var index = -1, result = Array(set.size);
set.forEach(function(value) {
result[++index] = value;
});
return result;
}
function setToPairs(set) {
var index = -1, result = Array(set.size);
set.forEach(function(value) {
result[++index] = [value, value];
});
return result;
}
function strictIndexOf(array, value, fromIndex) {
var index = fromIndex - 1, length = array.length;
while (++index < length) {
if (array[index] === value) {
return index;
}
}
return -1;
}
function strictLastIndexOf(array, value, fromIndex) {
var index = fromIndex + 1;
while (index--) {
if (array[index] === value) {
return index;
}
}
return index;
}
function stringSize(string) {
return hasUnicode(string) ? unicodeSize(string) : asciiSize(string);
}
function stringToArray(string) {
return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);
}
function trimmedEndIndex(string) {
var index = string.length;
while (index-- && reWhitespace.test(string.charAt(index))) {
}
return index;
}
var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
function unicodeSize(string) {
var result = reUnicode.lastIndex = 0;
while (reUnicode.test(string)) {
++result;
}
return result;
}
function unicodeToArray(string) {
return string.match(reUnicode) || [];
}
function unicodeWords(string) {
return string.match(reUnicodeWord) || [];
}
var runInContext = function runInContext2(context) {
context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
var Array2 = context.Array, Date = context.Date, Error = context.Error, Function2 = context.Function, Math = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String = context.String, TypeError = context.TypeError;
var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype;
var coreJsData = context["__core-js_shared__"];
var funcToString = funcProto.toString;
var hasOwnProperty = objectProto.hasOwnProperty;
var idCounter = 0;
var maskSrcKey = function() {
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
return uid ? "Symbol(src)_1." + uid : "";
}();
var nativeObjectToString = objectProto.toString;