{"version":3,"sources":["webpack:///./node_modules/vee-validate/dist/vee-validate.esm.js"],"names":["_typeof2","obj","Symbol","iterator","constructor","prototype","isTextInput","el","includes","type","isCheckboxOrRadioInput","getDataAttribute","name","getAttribute","isNaN$1","value","Number","isNaN","isNullOrUndefined","values","len","arguments","length","every","undefined","isEqual","lhs","rhs","RegExp","source","flags","Array","isArray","i","isObject","Object","keys","key","getForm","tagName","form","parentNode","getPath","path","target","def","split","prop","debounce","fn","wait","token","cancelled","args","clearTimeout","timeout","setTimeout","apply","appendRule","rule","rules","normalizeRules","assign","reduce","prev","curr","params","warn","parsedRule","slice","join","parseRule","message","console","createError","Error","isCallable","func","hasClass","className","classList","contains","match","toggleClass","status","add","addClass","remove","reg","replace","removeClass","forEach","item","toArray","arrayLike","from","array","push","ensureArray","concat","isEmptyArray","others","TypeError","to","arg","id","idTemplate","findIndex","predicate","find","idx","isBuiltInComponent","vnode","tag","componentOptions","test","deepParseInt","input","parseInt","map","element","merge","obj$1","fillRulesFromElement","required","multiple","pattern","regex","maxLength","minLength","min","max","isDateInput","timeFormat","step","k","collection","indexOf","arr","defineNonReactive","defineProperty","configurable","writable","LOCALE","Dictionary","dictionary","this","container","prototypeAccessors","locale","get","set","hasLocale","setDateFormat","format","dateFormat","getDateFormat","getMessage","data","hasMessage","messages","_getDefaultMessage","getFieldMessage","field","dict","custom","_default","en","fallback","hasAttribute","attributes","setMessage","setAttribute","attribute","defineProperties","drivers","currentDriver","DictionaryResolver","_checkDriverName","driver","setDriver","implementation","getDriver","ErrorBag","errorBag","vmId","items","this$1","index","next","done","error","ref","_normalizeError","e","scope","regenerate","msg","update","splice","all","filter","matchesScope","matchesVM","any","clear","collect","isSingleField","groupErrors","errors","selector","String","_makeCandidateFilters","isPrimary","isAlt","collected","primary","alt","count","firstById","first","_match","firstRule","has","firstByRule","firstNot","removeById","condition","matches","matchesRule","matchesName","pop","parts","parseSelector","isLast","currentConfig","delay","errorBagName","fieldsBagName","classes","classNames","events","inject","fastExit","aria","validity","mode","useConstraintAttrs","i18n","i18nRootKey","resolveConfig","ctx","selfConfig","getConfig","setConfig","newConf","findModel","model","directives","d","extractVNodes","children","extractChildren","nodes","node","candidates","findModelConfig","Ctor","options","mergeVNodeListeners","eventName","handler","prevHandler","addVNodeListener","listeners","addComponentNodeListener","on","addNativeNodeListener","getInputEventName","event","modifiers","lazy","attrs","createRenderless","h","Resolver","generate","binding","resolveModel","context","resolveName","listen","disable","bails","continues","resolveScope","vm","expression","component","componentInstance","getter","resolveGetter","resolveEvents","resolveDelay","resolveRules","immediate","initial","persist","initialValue","resolveInitialValue","getCtorConfig","normalized","globalDelay","$attrs","config","$options","getScope","watchable","previousPath","reducer","hasPath","bind","boundGetter","els","document","querySelectorAll","checked","checkbox","elm","files","opt","selected","RULES","RuleContainer","staticAccessors","validate","paramNames","isImmediate","isRequireRule","computesRequired","isTargetRule","hasTarget","ruleName","getParamNames","getOptions","getValidatorMethod","isEvent","evt","Event","srcElement","normalizeEvents","evts","supportsPassive","addEventListener","cb","passive","DEFAULT_OPTIONS","targetOf","touched","untouched","valid","invalid","pristine","dirty","Field","updated","forceRequired","_cacheId","_delay","validated","pending","changed","ctorConfig","prototypeAccessors$1","validator","isRequired","isDisabled","alias","rejectsFalse","$validator","Promise","resolve","disabled","_alias","call","_bails","matchesComponentId","_veeValidateId","waitFor","pendingPromise","_waitingFor","isWaitingFor","promise","delayConfig","updateDependencies","addActionListeners","resetFlag","then","addValueListeners","updateClasses","updateAriaAttrs","reset","_cancellationToken","defaults","flag","updateCustomValidity","setFlags","negated","dependencies","destroy","fields","r","$el","ref$1","$refs","$watch","$vnode","unwatch","watchers","w","isReset","applyClasses","onBlur","inputEvent","onInput","$once","$off","blurEvent","removeEventListener","checkValueChanged","_determineInputEvent","_determineEventList","defaultInputEvent","_resolveField","watchCtxVm","debouncedFn","_unwatch","$nextTick","_addComponentEventListener","_addHTMLEventListener","$on","addListener","applyAriaAttrs","setCustomValidity","FieldBag","itemsById","prototypeAccessors$2","matcher","findById","some","m","mapper","ScopedValidator","base","_uid","_base","_paused","prototypeAccessors$3","f","acc","val","localize","attach","opts","attachOpts","pause","resume","detach","extend","descriptor","verify","validateAll","validateScopes","VALIDATOR","getValidator","mixin","provide","beforeCreate","$__veeInject","$parent","$_veeValidate","injections","requested","util","defineReactive","computed","beforeDestroy","findField","directive","fieldOptions","inserted","oldValue","unbind","Validator","validations","pluginContainer","_createFields","paused","$vee","_vm","$emit","prototypeAccessors$4","staticAccessors$1","hasChanged","create","_guardExtend","mergedOpts","_merge","lang","fieldOpts","oldFieldMatcher","oldField","_validate","result","uid","fieldDescriptor","silent","matched","_handleFieldNotFound","validationPromise","_handleValidationResults","providedValues","results","t","targetRules","targetKey","ruleMap","failedRules","_getDateFormat","date_format","_formatErrorMessage","targetName","_getFieldDisplayName","_getLocalizedParams","_convertParamObjectToArray","paramName","_convertParamArrayToObj","_test","reject","isDate","allValid","_createFieldError","fieldScope","fieldName","fullName","matchers","allErrors","_shouldSkip","_shouldBail","requireRules","ruleOptions","promises","isExitEarly","v","normalizeValue","I18nDictionary","rootKey","prototypeAccessors$5","getDateTimeFormat","setDateTimeFormat","_","dataOptions","te","fallbackLocale","localeKey","clone","normalizeFormat","mergeLocaleMessage","Vue","pendingPlugins","pluginInstance","modes","aggressive","eager","VeeValidate$1","_Vue","configure","_validator","_initVM","_initI18n","prototypeAccessors$6","i18nDriver","staticAccessors$2","setI18nDriver","instance","cfg","setMode","use","plugin","Rules","install","window","detectPassiveSupport","onLocaleChanged","after","alpha","alpha_dash","alpha_num","alpha_spaces","before","between","confirmed","credit_card","date_between","decimal","decimals","digits","dimensions","email","excluded","ext","image","included","integer","ip","ip_or_fqdn","max_value","mimes","min_value","numeric","required_if","size","threshold","Math","floor","log","pow","toFixed","formatFileSize","url","toInteger","dirtyNumber","NaN","number","ceil","VeeValidate","MILLISECONDS_IN_MINUTE","getTimezoneOffsetInMilliseconds","dirtyDate","date","Date","getTime","baseTimezoneOffset","getTimezoneOffset","setSeconds","millisecondsPartOfTimezoneOffset","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE$1","DEFAULT_ADDITIONAL_DIGITS","patterns","dateTimeDelimeter","plainTime","timeZoneDelimeter","YY","YYY","YYYY","YYYYY","MM","DDD","MMDD","Www","WwwD","HH","HHMM","HHMMSS","timezone","timezoneZ","timezoneHH","timezoneHHMM","toDate","argument","dirtyOptions","additionalDigits","RangeError","toString","dateStrings","dateString","timeString","substr","exec","time","splitDateString","parseYearResult","patternYYY","patternYYYYY","yearString","year","restDateString","centuryString","parseYear","month","week","setUTCFullYear","validateDate","dayOfYear","isLeapYear","isLeapYearIndex","validateDayOfYearDate","day","validateWeekDate","dayOfISOWeekYear","dayOfWeek","parseDate","offset","timestamp","hours","minutes","validateTime","parseFloat","seconds","parseTime","timezoneString","absoluteOffset","validateTimezone","parseTimezone","isoWeekYear","diff","getUTCDay","setUTCDate","getUTCDate","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isValid","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","width","defaultWidth","formats","formatLong","full","medium","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","formattingValues","defaultFormattingWidth","argumentCallback","ordinalNumber","rem100","era","narrow","abbreviated","wide","quarter","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","defaulFormattingWidth","buildMatchFn","dirtyString","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","object","hasOwnProperty","findKey","valueCallback","rest","parsePattern","parseResult","locale$1","formatDistance","addSuffix","comparison","formatRelative","baseDate","weekStartsOn","firstWeekContainsDate","startOfUTCISOWeek","setUTCHours","getUTCISOWeekYear","getUTCFullYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","MILLISECONDS_IN_WEEK","getUTCISOWeek","fourthOfJanuary","startOfUTCISOWeekYear","round","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","MILLISECONDS_IN_WEEK$1","getUTCWeek","firstWeek","startOfUTCWeekYear","dayPeriodEnum","formatters","G","y","signedYear","addLeadingZeros","unit","Y","signedWeekYear","weekYear","R","u","Q","getUTCMonth","q","M","L","I","isoWeek","dayOfMonth","D","setUTCMonth","difference","getUTCDayOfYear","E","localDayOfWeek","c","isoDayOfWeek","a","dayPeriodEnumValue","getUTCHours","b","B","H","K","getUTCMinutes","s","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","X","timezoneOffset","_originalDate","formatTimezoneWithOptionalMinutes","formatTimezone","x","O","formatTimezoneShort","z","originalDate","T","targetLength","sign","output","abs","dirtyDelimeter","delimeter","absOffset","dateLongFormatter","timeLongFormatter","longFormatters","p","P","dateTimeFormat","datePattern","timePattern","subMilliseconds","dirtyAmount","amount","addMilliseconds","protectedTokens","isProtectedToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","dirtyFormatStr","formatStr","utcDate","formatterOptions","substring","firstCharacter","longFormatter","formatter","awareOfUnicodeTokens","isAfter","dirtyDateToCompare","dateToCompare","isBefore","isEqual$1","dirtyLeftDate","dirtyRightDate","dateLeft","dateRight","setUTCDay","dirtyDay","numericPatterns","timezonePatterns","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","n","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","DAYS_IN_MONTH$1","DAYS_IN_MONTH_LEAP_YEAR$1","isLeapYearIndex$1","parsers","priority","parse","isTwoDigitYear","normalizedTwoDigitYear","firstWeekOfYear","dirtyWeek","setUTCWeek","dirtyISOWeek","setUTCISOWeek","wholeWeekDays","setUTCISODay","isPM","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","TIMEZONE_UNIT_PRIORITY","formattingTokensRegExp$1","escapedStringRegExp$1","doubleQuoteRegExp$1","notWhitespaceRegExp","dateToSystemTimezone","convertedDate","setFullYear","setHours","parseDate$1","format$1","parsed","dirtyDateString","dirtyFormatString","dirtyBaseDate","formatString","subFnOptions","setters","tokens","parser","uniquePrioritySetters","setter","sort","reverse","setterArray","targetValue","inclusion","cs","da","de","es","fa","fr","it","lt","nl","hu","pl","pt","ru","sk","sr","sv","tr","uk","ar","az","alphaSpaces","alphanumeric","alphaDash","alpha$1","loc","validate$1","validate$2","validate$3","validate$5","unwrapExports","__esModule","createCommonjsModule","module","exports","assertString_1","_typeof","invalidType","isCreditCard_1","str","_assertString","sanitized","creditCard","digit","tmpNum","shouldDouble","sum","_interopRequireDefault","isCreditCard","inclusivity","minDate","maxDate","dateVal","validate$a","separator","parsedValue","validate$b","strVal","imageRegex","height","images","file","URL","webkitURL","Image","onerror","onload","src","createObjectURL","validateImage","merge_1","isByteLength_1","encodeURI","isFQDN_1","default_fqdn_options","allow_trailing_dot","require_tld","tld","part","_i","allow_underscores","isFQDN","isIP_1","isIP","version","ipv4Maybe","blocks","foundOmissionBlock","foundIPv4TransitionBlock","expectedNumberOfBlocks","shift","ipv6Block","isEmail_1","default_email_options","require_display_name","allow_display_name","display_email","displayName","domain","user","lower_domain","toLowerCase","domain_specific_validation","username","_isByteLength","_user_parts","gmailUserPart","_isFQDN","allow_ip_domain","_isIP","startsWith","endsWith","noBracketdomain","allow_utf8_local_part","quotedEmailUserUtf8","quotedEmailUser","emailUserUtf8Part","emailUserPart","user_parts","isEmail","exclude","objectWithoutProperties","emailStr","trim","validatorOptions","validate$e","extensions","is","is_not","compare","validate$o","validate$p","validate$r","validate$s","testValue","strValue","validate$u","invalidateFalse","otherFieldVal","nSize","isURL_1","protocol","auth","host","hostname","port","port_str","ipv6","default_url_options","require_valid_protocol","protocols","require_protocol","allow_protocol_relative_urls","require_host","disallow_auth","ipv6_match","wrapped_ipv6","host_whitelist","checkHost","host_blacklist","isRegExp","isURL","freeze","combine","mapScope","deep","isScope","PROVIDER_COUNTER","ValidationProvider","$_veeObserver","refs","subscribe","vid","unsubscribe","props","Function","Boolean","slim","watch","oldVal","_needsValidation","initialized","isDeactivated","fieldDeps","depName","watchCrossFieldDep","normalizedEvents","computeModeSetting","_inputEventName","names","render","registerField","createValidationCtx","slot","$scopedSlots","$slots","addListeners","activated","deactivated","methods","syncValue","normalizeValue$1","_pendingValidation","validateSilent","applyResult","providers","updateRenderingContextRefs","onRenderUpdate","validateNow","_ignoreImmediate","shouldValidate","createCommonHandlers","onValidate","$veeHandler","$veeDebounce","withHooks","_veeWatchers","flagMergingStrategy","OBSERVER_COUNTER","ValidationObserver","observers","persistedStore","thenable","success","provider","errs","obsErrors","created","slots","$listeners","subscriber","kind","restoreProviderState","removeProvider","o","obs","$delete","state","mapFields","normalize","withValidation","ctxToProps","hoc","vctx"],"mappings":"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","file":"js/vendors~account/edit_eft~account/setup_eft~admin/addy-plus-account-eft-account~admin/corporation-eft~ea034306-8773f1ed7919b6d96efd.chunk.js","sourcesContent":["function _typeof2(obj) { \"@babel/helpers - typeof\"; return _typeof2 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof2(obj); }\n/**\n * vee-validate v2.2.15\n * (c) 2019 Abdelrahman Awad\n * @license MIT\n */\n// \n\nvar isTextInput = function isTextInput(el) {\n return includes(['text', 'password', 'search', 'email', 'tel', 'url', 'textarea', 'number'], el.type);\n};\nvar isCheckboxOrRadioInput = function isCheckboxOrRadioInput(el) {\n return includes(['radio', 'checkbox'], el.type);\n};\nvar isDateInput = function isDateInput(el) {\n return includes(['date', 'week', 'month', 'datetime-local', 'time'], el.type);\n};\n\n/**\n * Gets the data attribute. the name must be kebab-case.\n */\nvar getDataAttribute = function getDataAttribute(el, name) {\n return el.getAttribute(\"data-vv-\" + name);\n};\nvar isNaN$1 = function isNaN$1(value) {\n if ('isNaN' in Number) {\n return Number.isNaN(value);\n }\n\n // eslint-disable-next-line\n return typeof value === 'number' && value !== value;\n};\n\n/**\n * Checks if the values are either null or undefined.\n */\nvar isNullOrUndefined = function isNullOrUndefined() {\n var values = [],\n len = arguments.length;\n while (len--) values[len] = arguments[len];\n return values.every(function (value) {\n return value === null || value === undefined;\n });\n};\n\n/**\n * Creates the default flags object.\n */\nvar createFlags = function createFlags() {\n return {\n untouched: true,\n touched: false,\n dirty: false,\n pristine: true,\n valid: null,\n invalid: null,\n validated: false,\n pending: false,\n required: false,\n changed: false\n };\n};\n\n/**\n * Shallow object comparison.\n */\nvar isEqual = function isEqual(lhs, rhs) {\n if (lhs instanceof RegExp && rhs instanceof RegExp) {\n return isEqual(lhs.source, rhs.source) && isEqual(lhs.flags, rhs.flags);\n }\n if (Array.isArray(lhs) && Array.isArray(rhs)) {\n if (lhs.length !== rhs.length) {\n return false;\n }\n for (var i = 0; i < lhs.length; i++) {\n if (!isEqual(lhs[i], rhs[i])) {\n return false;\n }\n }\n return true;\n }\n\n // if both are objects, compare each key recursively.\n if (isObject(lhs) && isObject(rhs)) {\n return Object.keys(lhs).every(function (key) {\n return isEqual(lhs[key], rhs[key]);\n }) && Object.keys(rhs).every(function (key) {\n return isEqual(lhs[key], rhs[key]);\n });\n }\n if (isNaN$1(lhs) && isNaN$1(rhs)) {\n return true;\n }\n return lhs === rhs;\n};\n\n/**\n * Determines the input field scope.\n */\nvar getScope = function getScope(el) {\n var scope = getDataAttribute(el, 'scope');\n if (isNullOrUndefined(scope)) {\n var form = getForm(el);\n if (form) {\n scope = getDataAttribute(form, 'scope');\n }\n }\n return !isNullOrUndefined(scope) ? scope : null;\n};\n\n/**\n * Get the closest form element.\n */\nvar getForm = function getForm(el) {\n if (isNullOrUndefined(el)) {\n return null;\n }\n if (el.tagName === 'FORM') {\n return el;\n }\n if (!isNullOrUndefined(el.form)) {\n return el.form;\n }\n return !isNullOrUndefined(el.parentNode) ? getForm(el.parentNode) : null;\n};\n\n/**\n * Gets the value in an object safely.\n */\nvar getPath = function getPath(path, target, def) {\n if (def === void 0) def = undefined;\n if (!path || !target) {\n return def;\n }\n var value = target;\n path.split('.').every(function (prop) {\n if (prop in value) {\n value = value[prop];\n return true;\n }\n value = def;\n return false;\n });\n return value;\n};\n\n/**\n * Checks if path exists within an object.\n */\nvar hasPath = function hasPath(path, target) {\n var obj = target;\n var previousPath = null;\n var isNullOrNonObject = false;\n var isValidPath = path.split('.').reduce(function (reducer, prop) {\n if (obj == null || _typeof2(obj) !== 'object') {\n isNullOrNonObject = true;\n return reducer && false;\n }\n if (prop in obj) {\n obj = obj[prop];\n previousPath = previousPath === null ? prop : previousPath + '.' + prop;\n return reducer && true;\n }\n return reducer && false;\n }, true);\n if (process.env.NODE_ENV !== 'production') {\n if (isNullOrNonObject) {\n throw new Error(previousPath + ' is not an object');\n }\n }\n return isValidPath;\n};\n\n/**\n * Parses a rule string expression.\n */\nvar parseRule = function parseRule(rule) {\n var params = [];\n var name = rule.split(':')[0];\n if (includes(rule, ':')) {\n params = rule.split(':').slice(1).join(':').split(',');\n }\n return {\n name: name,\n params: params\n };\n};\n\n/**\n * Debounces a function.\n */\nvar debounce = function debounce(fn, wait, token) {\n if (wait === void 0) wait = 0;\n if (token === void 0) token = {\n cancelled: false\n };\n if (wait === 0) {\n return fn;\n }\n var timeout;\n return function () {\n var args = [],\n len = arguments.length;\n while (len--) args[len] = arguments[len];\n var later = function later() {\n timeout = null;\n\n // check if the fn call was cancelled.\n if (!token.cancelled) {\n fn.apply(void 0, args);\n }\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (!timeout) {\n fn.apply(void 0, args);\n }\n };\n};\n\n/**\n * Appends a rule definition to a list of rules.\n */\nvar appendRule = function appendRule(rule, rules) {\n if (!rules) {\n return normalizeRules(rule);\n }\n if (!rule) {\n return normalizeRules(rules);\n }\n if (typeof rules === 'string') {\n rules = normalizeRules(rules);\n }\n return assign({}, rules, normalizeRules(rule));\n};\n\n/**\n * Normalizes the given rules expression.\n */\nvar normalizeRules = function normalizeRules(rules) {\n // if falsy value return an empty object.\n if (!rules) {\n return {};\n }\n if (isObject(rules)) {\n // $FlowFixMe\n return Object.keys(rules).reduce(function (prev, curr) {\n var params = [];\n // $FlowFixMe\n if (rules[curr] === true) {\n params = [];\n } else if (Array.isArray(rules[curr])) {\n params = rules[curr];\n } else if (isObject(rules[curr])) {\n params = rules[curr];\n } else {\n params = [rules[curr]];\n }\n\n // $FlowFixMe\n if (rules[curr] !== false) {\n prev[curr] = params;\n }\n return prev;\n }, {});\n }\n if (typeof rules !== 'string') {\n warn('rules must be either a string or an object.');\n return {};\n }\n return rules.split('|').reduce(function (prev, rule) {\n var parsedRule = parseRule(rule);\n if (!parsedRule.name) {\n return prev;\n }\n prev[parsedRule.name] = parsedRule.params;\n return prev;\n }, {});\n};\n\n/**\n * Emits a warning to the console.\n */\nvar warn = function warn(message) {\n console.warn(\"[vee-validate] \" + message); // eslint-disable-line\n};\n\n/**\n * Creates a branded error object.\n */\nvar createError = function createError(message) {\n return new Error(\"[vee-validate] \" + message);\n};\n\n/**\n * Checks if the value is an object.\n */\nvar isObject = function isObject(obj) {\n return obj !== null && obj && _typeof2(obj) === 'object' && !Array.isArray(obj);\n};\n\n/**\n * Checks if a function is callable.\n */\nvar isCallable = function isCallable(func) {\n return typeof func === 'function';\n};\n\n/**\n * Check if element has the css class on it.\n */\nvar hasClass = function hasClass(el, className) {\n if (el.classList) {\n return el.classList.contains(className);\n }\n return !!el.className.match(new RegExp(\"(\\\\s|^)\" + className + \"(\\\\s|$)\"));\n};\n\n/**\n * Adds the provided css className to the element.\n */\nvar addClass = function addClass(el, className) {\n if (el.classList) {\n el.classList.add(className);\n return;\n }\n if (!hasClass(el, className)) {\n el.className += \" \" + className;\n }\n};\n\n/**\n * Remove the provided css className from the element.\n */\nvar removeClass = function removeClass(el, className) {\n if (el.classList) {\n el.classList.remove(className);\n return;\n }\n if (hasClass(el, className)) {\n var reg = new RegExp(\"(\\\\s|^)\" + className + \"(\\\\s|$)\");\n el.className = el.className.replace(reg, ' ');\n }\n};\n\n/**\n * Adds or removes a class name on the input depending on the status flag.\n */\nvar toggleClass = function toggleClass(el, className, status) {\n if (!el || !className) {\n return;\n }\n if (Array.isArray(className)) {\n className.forEach(function (item) {\n return toggleClass(el, item, status);\n });\n return;\n }\n if (status) {\n return addClass(el, className);\n }\n removeClass(el, className);\n};\n\n/**\n * Converts an array-like object to array, provides a simple polyfill for Array.from\n */\nvar toArray = function toArray(arrayLike) {\n if (isCallable(Array.from)) {\n return Array.from(arrayLike);\n }\n var array = [];\n var length = arrayLike.length;\n /* istanbul ignore next */\n for (var i = 0; i < length; i++) {\n array.push(arrayLike[i]);\n }\n\n /* istanbul ignore next */\n return array;\n};\n\n/**\n * Converts an array-like object to array and place other elements in an array\n */\nvar ensureArray = function ensureArray(arrayLike) {\n if (Array.isArray(arrayLike)) {\n return [].concat(arrayLike);\n }\n var array = toArray(arrayLike);\n return isEmptyArray(array) ? [arrayLike] : array;\n};\n\n/**\n * Assign polyfill from the mdn.\n */\nvar assign = function assign(target) {\n var others = [],\n len = arguments.length - 1;\n while (len-- > 0) others[len] = arguments[len + 1];\n\n /* istanbul ignore else */\n if (isCallable(Object.assign)) {\n return Object.assign.apply(Object, [target].concat(others));\n }\n\n /* istanbul ignore next */\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n /* istanbul ignore next */\n var to = Object(target);\n /* istanbul ignore next */\n others.forEach(function (arg) {\n // Skip over if undefined or null\n if (arg != null) {\n Object.keys(arg).forEach(function (key) {\n to[key] = arg[key];\n });\n }\n });\n /* istanbul ignore next */\n return to;\n};\nvar id = 0;\nvar idTemplate = '{id}';\n\n/**\n * Generates a unique id.\n */\nvar uniqId = function uniqId() {\n // handle too many uses of uniqId, although unlikely.\n if (id >= 9999) {\n id = 0;\n // shift the template.\n idTemplate = idTemplate.replace('{id}', '_{id}');\n }\n id++;\n var newId = idTemplate.replace('{id}', String(id));\n return newId;\n};\nvar findIndex = function findIndex(arrayLike, predicate) {\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\n for (var i = 0; i < array.length; i++) {\n if (predicate(array[i])) {\n return i;\n }\n }\n return -1;\n};\n\n/**\n * finds the first element that satisfies the predicate callback, polyfills array.find\n */\nvar find = function find(arrayLike, predicate) {\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\n var idx = findIndex(array, predicate);\n return idx === -1 ? undefined : array[idx];\n};\nvar isBuiltInComponent = function isBuiltInComponent(vnode) {\n if (!vnode) {\n return false;\n }\n var tag = vnode.componentOptions.tag;\n return /^(keep-alive|transition|transition-group)$/.test(tag);\n};\nvar makeDelayObject = function makeDelayObject(events, delay, delayConfig) {\n if (typeof delay === 'number') {\n return events.reduce(function (prev, e) {\n prev[e] = delay;\n return prev;\n }, {});\n }\n return events.reduce(function (prev, e) {\n if (_typeof2(delay) === 'object' && e in delay) {\n prev[e] = delay[e];\n return prev;\n }\n if (typeof delayConfig === 'number') {\n prev[e] = delayConfig;\n return prev;\n }\n prev[e] = delayConfig && delayConfig[e] || 0;\n return prev;\n }, {});\n};\nvar deepParseInt = function deepParseInt(input) {\n if (typeof input === 'number') {\n return input;\n }\n if (typeof input === 'string') {\n return parseInt(input);\n }\n var map = {};\n for (var element in input) {\n map[element] = parseInt(input[element]);\n }\n return map;\n};\nvar merge = function merge(target, source) {\n if (!(isObject(target) && isObject(source))) {\n return target;\n }\n Object.keys(source).forEach(function (key) {\n var obj, obj$1;\n if (isObject(source[key])) {\n if (!target[key]) {\n assign(target, (obj = {}, obj[key] = {}, obj));\n }\n merge(target[key], source[key]);\n return;\n }\n assign(target, (obj$1 = {}, obj$1[key] = source[key], obj$1));\n });\n return target;\n};\nvar fillRulesFromElement = function fillRulesFromElement(el, rules) {\n if (el.required) {\n rules = appendRule('required', rules);\n }\n if (isTextInput(el)) {\n if (el.type === 'email') {\n rules = appendRule(\"email\" + (el.multiple ? ':multiple' : ''), rules);\n }\n if (el.pattern) {\n rules = appendRule({\n regex: el.pattern\n }, rules);\n }\n\n // 524288 is the max on some browsers and test environments.\n if (el.maxLength >= 0 && el.maxLength < 524288) {\n rules = appendRule(\"max:\" + el.maxLength, rules);\n }\n if (el.minLength > 0) {\n rules = appendRule(\"min:\" + el.minLength, rules);\n }\n if (el.type === 'number') {\n rules = appendRule('decimal', rules);\n if (el.min !== '') {\n rules = appendRule(\"min_value:\" + el.min, rules);\n }\n if (el.max !== '') {\n rules = appendRule(\"max_value:\" + el.max, rules);\n }\n }\n return rules;\n }\n if (isDateInput(el)) {\n var timeFormat = el.step && Number(el.step) < 60 ? 'HH:mm:ss' : 'HH:mm';\n if (el.type === 'date') {\n return appendRule('date_format:yyyy-MM-dd', rules);\n }\n if (el.type === 'datetime-local') {\n return appendRule(\"date_format:yyyy-MM-ddT\" + timeFormat, rules);\n }\n if (el.type === 'month') {\n return appendRule('date_format:yyyy-MM', rules);\n }\n if (el.type === 'week') {\n return appendRule('date_format:yyyy-[W]WW', rules);\n }\n if (el.type === 'time') {\n return appendRule(\"date_format:\" + timeFormat, rules);\n }\n }\n return rules;\n};\nvar values = function values(obj) {\n if (isCallable(Object.values)) {\n return Object.values(obj);\n }\n\n // fallback to keys()\n /* istanbul ignore next */\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\nvar parseSelector = function parseSelector(selector) {\n var rule = null;\n if (includes(selector, ':')) {\n rule = selector.split(':').pop();\n selector = selector.replace(\":\" + rule, '');\n }\n if (selector[0] === '#') {\n return {\n id: selector.slice(1),\n rule: rule,\n name: null,\n scope: null\n };\n }\n var scope = null;\n var name = selector;\n if (includes(selector, '.')) {\n var parts = selector.split('.');\n scope = parts[0];\n name = parts.slice(1).join('.');\n }\n return {\n id: null,\n scope: scope,\n name: name,\n rule: rule\n };\n};\nvar includes = function includes(collection, item) {\n return collection.indexOf(item) !== -1;\n};\nvar isEmptyArray = function isEmptyArray(arr) {\n return Array.isArray(arr) && arr.length === 0;\n};\nvar defineNonReactive = function defineNonReactive(obj, prop, value) {\n Object.defineProperty(obj, prop, {\n configurable: false,\n writable: true,\n value: value\n });\n};\n\n// \n\nvar LOCALE = 'en';\nvar Dictionary = function Dictionary(dictionary) {\n if (dictionary === void 0) dictionary = {};\n this.container = {};\n this.merge(dictionary);\n};\nvar prototypeAccessors = {\n locale: {\n configurable: true\n }\n};\nprototypeAccessors.locale.get = function () {\n return LOCALE;\n};\nprototypeAccessors.locale.set = function (value) {\n LOCALE = value || 'en';\n};\nDictionary.prototype.hasLocale = function hasLocale(locale) {\n return !!this.container[locale];\n};\nDictionary.prototype.setDateFormat = function setDateFormat(locale, format) {\n if (!this.container[locale]) {\n this.container[locale] = {};\n }\n this.container[locale].dateFormat = format;\n};\nDictionary.prototype.getDateFormat = function getDateFormat(locale) {\n if (!this.container[locale] || !this.container[locale].dateFormat) {\n return null;\n }\n return this.container[locale].dateFormat;\n};\nDictionary.prototype.getMessage = function getMessage(locale, key, data) {\n var message = null;\n if (!this.hasMessage(locale, key)) {\n message = this._getDefaultMessage(locale);\n } else {\n message = this.container[locale].messages[key];\n }\n return isCallable(message) ? message.apply(void 0, data) : message;\n};\n\n/**\n * Gets a specific message for field. falls back to the rule message.\n */\nDictionary.prototype.getFieldMessage = function getFieldMessage(locale, field, key, data) {\n if (!this.hasLocale(locale)) {\n return this.getMessage(locale, key, data);\n }\n var dict = this.container[locale].custom && this.container[locale].custom[field];\n if (!dict || !dict[key]) {\n return this.getMessage(locale, key, data);\n }\n var message = dict[key];\n return isCallable(message) ? message.apply(void 0, data) : message;\n};\nDictionary.prototype._getDefaultMessage = function _getDefaultMessage(locale) {\n if (this.hasMessage(locale, '_default')) {\n return this.container[locale].messages._default;\n }\n return this.container.en.messages._default;\n};\nDictionary.prototype.getAttribute = function getAttribute(locale, key, fallback) {\n if (fallback === void 0) fallback = '';\n if (!this.hasAttribute(locale, key)) {\n return fallback;\n }\n return this.container[locale].attributes[key];\n};\nDictionary.prototype.hasMessage = function hasMessage(locale, key) {\n return !!(this.hasLocale(locale) && this.container[locale].messages && this.container[locale].messages[key]);\n};\nDictionary.prototype.hasAttribute = function hasAttribute(locale, key) {\n return !!(this.hasLocale(locale) && this.container[locale].attributes && this.container[locale].attributes[key]);\n};\nDictionary.prototype.merge = function merge$1(dictionary) {\n merge(this.container, dictionary);\n};\nDictionary.prototype.setMessage = function setMessage(locale, key, message) {\n if (!this.hasLocale(locale)) {\n this.container[locale] = {\n messages: {},\n attributes: {}\n };\n }\n if (!this.container[locale].messages) {\n this.container[locale].messages = {};\n }\n this.container[locale].messages[key] = message;\n};\nDictionary.prototype.setAttribute = function setAttribute(locale, key, attribute) {\n if (!this.hasLocale(locale)) {\n this.container[locale] = {\n messages: {},\n attributes: {}\n };\n }\n this.container[locale].attributes[key] = attribute;\n};\nObject.defineProperties(Dictionary.prototype, prototypeAccessors);\nvar drivers = {\n \"default\": new Dictionary({\n en: {\n messages: {},\n attributes: {},\n custom: {}\n }\n })\n};\nvar currentDriver = 'default';\nvar DictionaryResolver = function DictionaryResolver() {};\nDictionaryResolver._checkDriverName = function _checkDriverName(driver) {\n if (!driver) {\n throw createError('you must provide a name to the dictionary driver');\n }\n};\nDictionaryResolver.setDriver = function setDriver(driver, implementation) {\n if (implementation === void 0) implementation = null;\n this._checkDriverName(driver);\n if (implementation) {\n drivers[driver] = implementation;\n }\n currentDriver = driver;\n};\nDictionaryResolver.getDriver = function getDriver() {\n return drivers[currentDriver];\n};\n\n// \n\nvar ErrorBag = function ErrorBag(errorBag, id) {\n if (errorBag === void 0) errorBag = null;\n if (id === void 0) id = null;\n this.vmId = id || null;\n // make this bag a mirror of the provided one, sharing the same items reference.\n if (errorBag && errorBag instanceof ErrorBag) {\n this.items = errorBag.items;\n } else {\n this.items = [];\n }\n};\nErrorBag.prototype[typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'] = function () {\n var this$1 = this;\n var index = 0;\n return {\n next: function next() {\n return {\n value: this$1.items[index++],\n done: index > this$1.items.length\n };\n }\n };\n};\n\n/**\n * Adds an error to the internal array.\n */\nErrorBag.prototype.add = function add(error) {\n var ref;\n (ref = this.items).push.apply(ref, this._normalizeError(error));\n};\n\n/**\n * Normalizes passed errors to an error array.\n */\nErrorBag.prototype._normalizeError = function _normalizeError(error) {\n var this$1 = this;\n if (Array.isArray(error)) {\n return error.map(function (e) {\n e.scope = !isNullOrUndefined(e.scope) ? e.scope : null;\n e.vmId = !isNullOrUndefined(e.vmId) ? e.vmId : this$1.vmId || null;\n return e;\n });\n }\n error.scope = !isNullOrUndefined(error.scope) ? error.scope : null;\n error.vmId = !isNullOrUndefined(error.vmId) ? error.vmId : this.vmId || null;\n return [error];\n};\n\n/**\n * Regenrates error messages if they have a generator function.\n */\nErrorBag.prototype.regenerate = function regenerate() {\n this.items.forEach(function (i) {\n i.msg = isCallable(i.regenerate) ? i.regenerate() : i.msg;\n });\n};\n\n/**\n * Updates a field error with the new field scope.\n */\nErrorBag.prototype.update = function update(id, error) {\n var item = find(this.items, function (i) {\n return i.id === id;\n });\n if (!item) {\n return;\n }\n var idx = this.items.indexOf(item);\n this.items.splice(idx, 1);\n item.scope = error.scope;\n this.items.push(item);\n};\n\n/**\n * Gets all error messages from the internal array.\n */\nErrorBag.prototype.all = function all(scope) {\n var this$1 = this;\n var filterFn = function filterFn(item) {\n var matchesScope = true;\n var matchesVM = true;\n if (!isNullOrUndefined(scope)) {\n matchesScope = item.scope === scope;\n }\n if (!isNullOrUndefined(this$1.vmId)) {\n matchesVM = item.vmId === this$1.vmId;\n }\n return matchesVM && matchesScope;\n };\n return this.items.filter(filterFn).map(function (e) {\n return e.msg;\n });\n};\n\n/**\n * Checks if there are any errors in the internal array.\n */\nErrorBag.prototype.any = function any(scope) {\n var this$1 = this;\n var filterFn = function filterFn(item) {\n var matchesScope = true;\n var matchesVM = true;\n if (!isNullOrUndefined(scope)) {\n matchesScope = item.scope === scope;\n }\n if (!isNullOrUndefined(this$1.vmId)) {\n matchesVM = item.vmId === this$1.vmId;\n }\n return matchesVM && matchesScope;\n };\n return !!this.items.filter(filterFn).length;\n};\n\n/**\n * Removes all items from the internal array.\n */\nErrorBag.prototype.clear = function clear(scope) {\n var this$1 = this;\n var matchesVM = isNullOrUndefined(this.vmId) ? function () {\n return true;\n } : function (i) {\n return i.vmId === this$1.vmId;\n };\n var matchesScope = function matchesScope(i) {\n return i.scope === scope;\n };\n if (arguments.length === 0) {\n matchesScope = function matchesScope() {\n return true;\n };\n } else if (isNullOrUndefined(scope)) {\n scope = null;\n }\n for (var i = 0; i < this.items.length; ++i) {\n if (matchesVM(this.items[i]) && matchesScope(this.items[i])) {\n this.items.splice(i, 1);\n --i;\n }\n }\n};\n\n/**\n * Collects errors into groups or for a specific field.\n */\nErrorBag.prototype.collect = function collect(field, scope, map) {\n var this$1 = this;\n if (map === void 0) map = true;\n var isSingleField = !isNullOrUndefined(field) && !field.includes('*');\n var groupErrors = function groupErrors(items) {\n var errors = items.reduce(function (collection, error) {\n if (!isNullOrUndefined(this$1.vmId) && error.vmId !== this$1.vmId) {\n return collection;\n }\n if (!collection[error.field]) {\n collection[error.field] = [];\n }\n collection[error.field].push(map ? error.msg : error);\n return collection;\n }, {});\n\n // reduce the collection to be a single array.\n if (isSingleField) {\n return values(errors)[0] || [];\n }\n return errors;\n };\n if (isNullOrUndefined(field)) {\n return groupErrors(this.items);\n }\n var selector = isNullOrUndefined(scope) ? String(field) : scope + \".\" + field;\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\n var collected = this.items.reduce(function (prev, curr) {\n if (isPrimary(curr)) {\n prev.primary.push(curr);\n }\n if (isAlt(curr)) {\n prev.alt.push(curr);\n }\n return prev;\n }, {\n primary: [],\n alt: []\n });\n collected = collected.primary.length ? collected.primary : collected.alt;\n return groupErrors(collected);\n};\n\n/**\n * Gets the internal array length.\n */\nErrorBag.prototype.count = function count() {\n var this$1 = this;\n if (this.vmId) {\n return this.items.filter(function (e) {\n return e.vmId === this$1.vmId;\n }).length;\n }\n return this.items.length;\n};\n\n/**\n * Finds and fetches the first error message for the specified field id.\n */\nErrorBag.prototype.firstById = function firstById(id) {\n var error = find(this.items, function (i) {\n return i.id === id;\n });\n return error ? error.msg : undefined;\n};\n\n/**\n * Gets the first error message for a specific field.\n */\nErrorBag.prototype.first = function first(field, scope) {\n if (scope === void 0) scope = null;\n var selector = isNullOrUndefined(scope) ? field : scope + \".\" + field;\n var match = this._match(selector);\n return match && match.msg;\n};\n\n/**\n * Returns the first error rule for the specified field\n */\nErrorBag.prototype.firstRule = function firstRule(field, scope) {\n var errors = this.collect(field, scope, false);\n return errors.length && errors[0].rule || undefined;\n};\n\n/**\n * Checks if the internal array has at least one error for the specified field.\n */\nErrorBag.prototype.has = function has(field, scope) {\n if (scope === void 0) scope = null;\n return !!this.first(field, scope);\n};\n\n/**\n * Gets the first error message for a specific field and a rule.\n */\nErrorBag.prototype.firstByRule = function firstByRule(name, rule, scope) {\n if (scope === void 0) scope = null;\n var error = this.collect(name, scope, false).filter(function (e) {\n return e.rule === rule;\n })[0];\n return error && error.msg || undefined;\n};\n\n/**\n * Gets the first error message for a specific field that not match the rule.\n */\nErrorBag.prototype.firstNot = function firstNot(name, rule, scope) {\n if (rule === void 0) rule = 'required';\n if (scope === void 0) scope = null;\n var error = this.collect(name, scope, false).filter(function (e) {\n return e.rule !== rule;\n })[0];\n return error && error.msg || undefined;\n};\n\n/**\n * Removes errors by matching against the id or ids.\n */\nErrorBag.prototype.removeById = function removeById(id) {\n var condition = function condition(item) {\n return item.id === id;\n };\n if (Array.isArray(id)) {\n condition = function condition(item) {\n return id.indexOf(item.id) !== -1;\n };\n }\n for (var i = 0; i < this.items.length; ++i) {\n if (condition(this.items[i])) {\n this.items.splice(i, 1);\n --i;\n }\n }\n};\n\n/**\n * Removes all error messages associated with a specific field.\n */\nErrorBag.prototype.remove = function remove(field, scope, vmId) {\n if (isNullOrUndefined(field)) {\n return;\n }\n var selector = isNullOrUndefined(scope) ? String(field) : scope + \".\" + field;\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\n var matches = function matches(item) {\n return isPrimary(item) || isAlt(item);\n };\n var shouldRemove = function shouldRemove(item) {\n if (isNullOrUndefined(vmId)) {\n return matches(item);\n }\n return matches(item) && item.vmId === vmId;\n };\n for (var i = 0; i < this.items.length; ++i) {\n if (shouldRemove(this.items[i])) {\n this.items.splice(i, 1);\n --i;\n }\n }\n};\nErrorBag.prototype._makeCandidateFilters = function _makeCandidateFilters(selector) {\n var this$1 = this;\n var matchesRule = function matchesRule() {\n return true;\n };\n var matchesScope = function matchesScope() {\n return true;\n };\n var matchesName = function matchesName() {\n return true;\n };\n var matchesVM = function matchesVM() {\n return true;\n };\n var ref = parseSelector(selector);\n var id = ref.id;\n var rule = ref.rule;\n var scope = ref.scope;\n var name = ref.name;\n if (rule) {\n matchesRule = function matchesRule(item) {\n return item.rule === rule;\n };\n }\n\n // match by id, can be combined with rule selection.\n if (id) {\n return {\n isPrimary: function isPrimary(item) {\n return matchesRule(item) && function (item) {\n return id === item.id;\n };\n },\n isAlt: function isAlt() {\n return false;\n }\n };\n }\n if (isNullOrUndefined(scope)) {\n // if no scope specified, make sure the found error has no scope.\n matchesScope = function matchesScope(item) {\n return isNullOrUndefined(item.scope);\n };\n } else {\n matchesScope = function matchesScope(item) {\n return item.scope === scope;\n };\n }\n if (!isNullOrUndefined(name) && name !== '*') {\n matchesName = function matchesName(item) {\n return item.field === name;\n };\n }\n if (!isNullOrUndefined(this.vmId)) {\n matchesVM = function matchesVM(item) {\n return item.vmId === this$1.vmId;\n };\n }\n\n // matches the first candidate.\n var isPrimary = function isPrimary(item) {\n return matchesVM(item) && matchesName(item) && matchesRule(item) && matchesScope(item);\n };\n\n // matches a second candidate, which is a field with a name containing the '.' character.\n var isAlt = function isAlt(item) {\n return matchesVM(item) && matchesRule(item) && item.field === scope + \".\" + name;\n };\n return {\n isPrimary: isPrimary,\n isAlt: isAlt\n };\n};\nErrorBag.prototype._match = function _match(selector) {\n if (isNullOrUndefined(selector)) {\n return undefined;\n }\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\n return this.items.reduce(function (prev, item, idx, arr) {\n var isLast = idx === arr.length - 1;\n if (prev.primary) {\n return isLast ? prev.primary : prev;\n }\n if (isPrimary(item)) {\n prev.primary = item;\n }\n if (isAlt(item)) {\n prev.alt = item;\n }\n\n // keep going.\n if (!isLast) {\n return prev;\n }\n return prev.primary || prev.alt;\n }, {});\n};\nvar DEFAULT_CONFIG = {\n locale: 'en',\n delay: 0,\n errorBagName: 'errors',\n dictionary: null,\n fieldsBagName: 'fields',\n classes: false,\n classNames: null,\n events: 'input',\n inject: true,\n fastExit: true,\n aria: true,\n validity: false,\n mode: 'aggressive',\n useConstraintAttrs: true,\n i18n: null,\n i18nRootKey: 'validation'\n};\nvar currentConfig = assign({}, DEFAULT_CONFIG);\nvar resolveConfig = function resolveConfig(ctx) {\n var selfConfig = getPath('$options.$_veeValidate', ctx, {});\n return assign({}, currentConfig, selfConfig);\n};\nvar getConfig = function getConfig() {\n return currentConfig;\n};\nvar setConfig = function setConfig(newConf) {\n currentConfig = assign({}, currentConfig, newConf);\n};\n\n// VNode Utils\n\n// Gets the model object on the vnode.\nfunction findModel(vnode) {\n if (!vnode.data) {\n return null;\n }\n\n // Component Model\n if (vnode.data.model) {\n return vnode.data.model;\n }\n return !!vnode.data.directives && find(vnode.data.directives, function (d) {\n return d.name === 'model';\n });\n}\nfunction extractChildren(vnode) {\n if (Array.isArray(vnode)) {\n return vnode;\n }\n if (Array.isArray(vnode.children)) {\n return vnode.children;\n }\n if (vnode.componentOptions && Array.isArray(vnode.componentOptions.children)) {\n return vnode.componentOptions.children;\n }\n return [];\n}\nfunction extractVNodes(vnode) {\n if (findModel(vnode)) {\n return [vnode];\n }\n var children = extractChildren(vnode);\n return children.reduce(function (nodes, node) {\n var candidates = extractVNodes(node);\n if (candidates.length) {\n nodes.push.apply(nodes, candidates);\n }\n return nodes;\n }, []);\n}\n\n// Resolves v-model config if exists.\nfunction findModelConfig(vnode) {\n if (!vnode.componentOptions) {\n return null;\n }\n return vnode.componentOptions.Ctor.options.model;\n}\n// Adds a listener to vnode listener object.\nfunction mergeVNodeListeners(obj, eventName, handler) {\n // Has a single listener, convert to array.\n if (isCallable(obj[eventName])) {\n var prevHandler = obj[eventName];\n obj[eventName] = [prevHandler];\n }\n\n // no listeners, create the array.\n if (isNullOrUndefined(obj[eventName])) {\n obj[eventName] = [];\n }\n obj[eventName].push(handler);\n}\n\n// Adds a listener to a native HTML vnode.\nfunction addNativeNodeListener(node, eventName, handler) {\n if (isNullOrUndefined(node.data.on)) {\n node.data.on = {};\n }\n mergeVNodeListeners(node.data.on, eventName, handler);\n}\n\n// Adds a listener to a Vue component vnode.\nfunction addComponentNodeListener(node, eventName, handler) {\n /* istanbul ignore next */\n if (!node.componentOptions.listeners) {\n node.componentOptions.listeners = {};\n }\n mergeVNodeListeners(node.componentOptions.listeners, eventName, handler);\n}\nfunction addVNodeListener(vnode, eventName, handler) {\n if (vnode.componentOptions) {\n addComponentNodeListener(vnode, eventName, handler);\n return;\n }\n addNativeNodeListener(vnode, eventName, handler);\n}\n// Determines if `change` should be used over `input` for listeners.\nfunction getInputEventName(vnode, model) {\n // Is a component.\n if (vnode.componentOptions) {\n var ref = findModelConfig(vnode) || {\n event: 'input'\n };\n var event = ref.event;\n return event;\n }\n\n // Lazy Models and select tag typically use change event\n if (model && model.modifiers && model.modifiers.lazy || vnode.tag === 'select') {\n return 'change';\n }\n\n // is a textual-type input.\n if (vnode.data.attrs && isTextInput({\n type: vnode.data.attrs.type || 'text'\n })) {\n return 'input';\n }\n return 'change';\n}\nfunction normalizeSlots(slots, ctx) {\n return Object.keys(slots).reduce(function (arr, key) {\n slots[key].forEach(function (vnode) {\n if (!vnode.context) {\n slots[key].context = ctx;\n if (!vnode.data) {\n vnode.data = {};\n }\n vnode.data.slot = key;\n }\n });\n return arr.concat(slots[key]);\n }, []);\n}\nfunction createRenderless(h, children) {\n // Only render the first item of the node.\n if (Array.isArray(children) && children[0]) {\n return children[0];\n }\n\n // a single node.\n if (children) {\n return children;\n }\n\n // No slots, render nothing.\n return h();\n}\n\n/**\n * Generates the options required to construct a field.\n */\nvar Resolver = function Resolver() {};\nResolver.generate = function generate(el, binding, vnode) {\n var model = Resolver.resolveModel(binding, vnode);\n var options = resolveConfig(vnode.context);\n return {\n name: Resolver.resolveName(el, vnode),\n el: el,\n listen: !binding.modifiers.disable,\n bails: binding.modifiers.bails ? true : binding.modifiers.continues === true ? false : undefined,\n scope: Resolver.resolveScope(el, binding, vnode),\n vm: vnode.context,\n expression: binding.value,\n component: vnode.componentInstance,\n classes: options.classes,\n classNames: options.classNames,\n getter: Resolver.resolveGetter(el, vnode, model),\n events: Resolver.resolveEvents(el, vnode) || options.events,\n model: model,\n delay: Resolver.resolveDelay(el, vnode, options),\n rules: Resolver.resolveRules(el, binding, vnode),\n immediate: !!binding.modifiers.initial || !!binding.modifiers.immediate,\n persist: !!binding.modifiers.persist,\n validity: options.validity && !vnode.componentInstance,\n aria: options.aria && !vnode.componentInstance,\n initialValue: Resolver.resolveInitialValue(vnode)\n };\n};\nResolver.getCtorConfig = function getCtorConfig(vnode) {\n if (!vnode.componentInstance) {\n return null;\n }\n var config = getPath('componentInstance.$options.$_veeValidate', vnode);\n return config;\n};\n\n/**\n * Resolves the rules defined on an element.\n */\nResolver.resolveRules = function resolveRules(el, binding, vnode) {\n var rules = '';\n if (!binding.value && (!binding || !binding.expression)) {\n rules = getDataAttribute(el, 'rules');\n }\n if (binding.value && includes(['string', 'object'], _typeof2(binding.value.rules))) {\n rules = binding.value.rules;\n } else if (binding.value) {\n rules = binding.value;\n }\n if (vnode.componentInstance) {\n return rules;\n }\n\n // If validity is disabled, ignore field rules.\n var normalized = normalizeRules(rules);\n if (!getConfig().useConstraintAttrs) {\n return normalized;\n }\n return assign({}, fillRulesFromElement(el, {}), normalized);\n};\n\n/**\n * @param {*} vnode\n */\nResolver.resolveInitialValue = function resolveInitialValue(vnode) {\n var model = vnode.data.model || find(vnode.data.directives, function (d) {\n return d.name === 'model';\n });\n return model && model.value;\n};\n\n/**\n * Resolves the delay value.\n * @param {*} el\n * @param {*} vnode\n * @param {Object} options\n */\nResolver.resolveDelay = function resolveDelay(el, vnode, options) {\n var delay = getDataAttribute(el, 'delay');\n var globalDelay = options && 'delay' in options ? options.delay : 0;\n if (!delay && vnode.componentInstance && vnode.componentInstance.$attrs) {\n delay = vnode.componentInstance.$attrs['data-vv-delay'];\n }\n if (!isObject(globalDelay)) {\n return deepParseInt(delay || globalDelay);\n }\n if (!isNullOrUndefined(delay)) {\n globalDelay.input = delay;\n }\n return deepParseInt(globalDelay);\n};\n\n/**\n * Resolves the events to validate in response to.\n * @param {*} el\n * @param {*} vnode\n */\nResolver.resolveEvents = function resolveEvents(el, vnode) {\n // resolve it from the root element.\n var events = getDataAttribute(el, 'validate-on');\n\n // resolve from data-vv-validate-on if its a vue component.\n if (!events && vnode.componentInstance && vnode.componentInstance.$attrs) {\n events = vnode.componentInstance.$attrs['data-vv-validate-on'];\n }\n\n // resolve it from $_veeValidate options.\n if (!events && vnode.componentInstance) {\n var config = Resolver.getCtorConfig(vnode);\n events = config && config.events;\n }\n if (!events && getConfig().events) {\n events = getConfig().events;\n }\n\n // resolve the model event if its configured for custom components.\n if (events && vnode.componentInstance && includes(events, 'input')) {\n var ref = vnode.componentInstance.$options.model || {\n event: 'input'\n };\n var event = ref.event;\n // if the prop was configured but not the model.\n if (!event) {\n return events;\n }\n events = events.replace('input', event);\n }\n return events;\n};\n\n/**\n * Resolves the scope for the field.\n * @param {*} el\n * @param {*} binding\n */\nResolver.resolveScope = function resolveScope(el, binding, vnode) {\n if (vnode === void 0) vnode = {};\n var scope = null;\n if (vnode.componentInstance && isNullOrUndefined(scope)) {\n scope = vnode.componentInstance.$attrs && vnode.componentInstance.$attrs['data-vv-scope'];\n }\n return !isNullOrUndefined(scope) ? scope : getScope(el);\n};\n\n/**\n * Checks if the node directives contains a v-model or a specified arg.\n * Args take priority over models.\n *\n * @return {Object}\n */\nResolver.resolveModel = function resolveModel(binding, vnode) {\n if (binding.arg) {\n return {\n expression: binding.arg\n };\n }\n var model = findModel(vnode);\n if (!model) {\n return null;\n }\n\n // https://github.com/vuejs/vue/blob/dev/src/core/util/lang.js#L26\n var watchable = !/[^\\w.$]/.test(model.expression) && hasPath(model.expression, vnode.context);\n var lazy = !!(model.modifiers && model.modifiers.lazy);\n if (!watchable) {\n return {\n expression: null,\n lazy: lazy\n };\n }\n return {\n expression: model.expression,\n lazy: lazy\n };\n};\n\n/**\n * Resolves the field name to trigger validations.\n * @return {String} The field name.\n */\nResolver.resolveName = function resolveName(el, vnode) {\n var name = getDataAttribute(el, 'name');\n if (!name && !vnode.componentInstance) {\n return el.name;\n }\n if (!name && vnode.componentInstance && vnode.componentInstance.$attrs) {\n name = vnode.componentInstance.$attrs['data-vv-name'] || vnode.componentInstance.$attrs['name'];\n }\n if (!name && vnode.componentInstance) {\n var config = Resolver.getCtorConfig(vnode);\n if (config && isCallable(config.name)) {\n var boundGetter = config.name.bind(vnode.componentInstance);\n return boundGetter();\n }\n return vnode.componentInstance.name;\n }\n return name;\n};\n\n/**\n * Returns a value getter input type.\n */\nResolver.resolveGetter = function resolveGetter(el, vnode, model) {\n if (model && model.expression) {\n return function () {\n return getPath(model.expression, vnode.context);\n };\n }\n if (vnode.componentInstance) {\n var path = getDataAttribute(el, 'value-path') || vnode.componentInstance.$attrs && vnode.componentInstance.$attrs['data-vv-value-path'];\n if (path) {\n return function () {\n return getPath(path, vnode.componentInstance);\n };\n }\n var config = Resolver.getCtorConfig(vnode);\n if (config && isCallable(config.value)) {\n var boundGetter = config.value.bind(vnode.componentInstance);\n return function () {\n return boundGetter();\n };\n }\n var ref = vnode.componentInstance.$options.model || {\n prop: 'value'\n };\n var prop = ref.prop;\n return function () {\n return vnode.componentInstance[prop];\n };\n }\n switch (el.type) {\n case 'checkbox':\n return function () {\n var els = document.querySelectorAll(\"input[name=\\\"\" + el.name + \"\\\"]\");\n els = toArray(els).filter(function (el) {\n return el.checked;\n });\n if (!els.length) {\n return undefined;\n }\n return els.map(function (checkbox) {\n return checkbox.value;\n });\n };\n case 'radio':\n return function () {\n var els = document.querySelectorAll(\"input[name=\\\"\" + el.name + \"\\\"]\");\n var elm = find(els, function (el) {\n return el.checked;\n });\n return elm && elm.value;\n };\n case 'file':\n return function (context) {\n return toArray(el.files);\n };\n case 'select-multiple':\n return function () {\n return toArray(el.options).filter(function (opt) {\n return opt.selected;\n }).map(function (opt) {\n return opt.value;\n });\n };\n default:\n return function () {\n return el && el.value;\n };\n }\n};\nvar RULES = {};\nvar RuleContainer = function RuleContainer() {};\nvar staticAccessors = {\n rules: {\n configurable: true\n }\n};\nRuleContainer.add = function add(name, ref) {\n var validate = ref.validate;\n var options = ref.options;\n var paramNames = ref.paramNames;\n RULES[name] = {\n validate: validate,\n options: options,\n paramNames: paramNames\n };\n};\nstaticAccessors.rules.get = function () {\n return RULES;\n};\nRuleContainer.has = function has(name) {\n return !!RULES[name];\n};\nRuleContainer.isImmediate = function isImmediate(name) {\n return !!(RULES[name] && RULES[name].options.immediate);\n};\nRuleContainer.isRequireRule = function isRequireRule(name) {\n return !!(RULES[name] && RULES[name].options.computesRequired);\n};\nRuleContainer.isTargetRule = function isTargetRule(name) {\n return !!(RULES[name] && RULES[name].options.hasTarget);\n};\nRuleContainer.remove = function remove(ruleName) {\n delete RULES[ruleName];\n};\nRuleContainer.getParamNames = function getParamNames(ruleName) {\n return RULES[ruleName] && RULES[ruleName].paramNames;\n};\nRuleContainer.getOptions = function getOptions(ruleName) {\n return RULES[ruleName] && RULES[ruleName].options;\n};\nRuleContainer.getValidatorMethod = function getValidatorMethod(ruleName) {\n return RULES[ruleName] ? RULES[ruleName].validate : null;\n};\nObject.defineProperties(RuleContainer, staticAccessors);\n\n// \n\nvar isEvent = function isEvent(evt) {\n return typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event || evt && evt.srcElement;\n};\nvar normalizeEvents = function normalizeEvents(evts) {\n if (!evts) {\n return [];\n }\n return typeof evts === 'string' ? evts.split('|') : evts;\n};\nvar supportsPassive = true;\nvar detectPassiveSupport = function detectPassiveSupport() {\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {\n supportsPassive = false;\n }\n return supportsPassive;\n};\nvar addEventListener = function addEventListener(el, eventName, cb) {\n el.addEventListener(eventName, cb, supportsPassive ? {\n passive: true\n } : false);\n};\n\n// \n\nvar DEFAULT_OPTIONS = {\n targetOf: null,\n immediate: false,\n persist: false,\n scope: null,\n listen: true,\n name: null,\n rules: {},\n vm: null,\n classes: false,\n validity: true,\n aria: true,\n events: 'input|blur',\n delay: 0,\n classNames: {\n touched: 'touched',\n // the control has been blurred\n untouched: 'untouched',\n // the control hasn't been blurred\n valid: 'valid',\n // model is valid\n invalid: 'invalid',\n // model is invalid\n pristine: 'pristine',\n // control has not been interacted with\n dirty: 'dirty' // control has been interacted with\n }\n};\n\nvar Field = function Field(options) {\n if (options === void 0) options = {};\n this.id = uniqId();\n this.el = options.el;\n this.updated = false;\n this.vmId = options.vmId;\n defineNonReactive(this, 'dependencies', []);\n defineNonReactive(this, 'watchers', []);\n defineNonReactive(this, 'events', []);\n this.delay = 0;\n this.rules = {};\n this.forceRequired = false;\n this._cacheId(options);\n this.classNames = assign({}, DEFAULT_OPTIONS.classNames);\n options = assign({}, DEFAULT_OPTIONS, options);\n this._delay = !isNullOrUndefined(options.delay) ? options.delay : 0; // cache initial delay\n this.validity = options.validity;\n this.aria = options.aria;\n this.flags = options.flags || createFlags();\n defineNonReactive(this, 'vm', options.vm);\n defineNonReactive(this, 'componentInstance', options.component);\n this.ctorConfig = this.componentInstance ? getPath('$options.$_veeValidate', this.componentInstance) : undefined;\n this.update(options);\n // set initial value.\n this.initialValue = this.value;\n this.updated = false;\n};\nvar prototypeAccessors$1 = {\n validator: {\n configurable: true\n },\n isRequired: {\n configurable: true\n },\n isDisabled: {\n configurable: true\n },\n alias: {\n configurable: true\n },\n value: {\n configurable: true\n },\n bails: {\n configurable: true\n },\n rejectsFalse: {\n configurable: true\n }\n};\nprototypeAccessors$1.validator.get = function () {\n if (!this.vm || !this.vm.$validator) {\n return {\n validate: function validate() {\n return Promise.resolve(true);\n }\n };\n }\n return this.vm.$validator;\n};\nprototypeAccessors$1.isRequired.get = function () {\n return !!this.rules.required || this.forceRequired;\n};\nprototypeAccessors$1.isDisabled.get = function () {\n return !!(this.el && this.el.disabled);\n};\n\n/**\n * Gets the display name (user-friendly name).\n */\nprototypeAccessors$1.alias.get = function () {\n if (this._alias) {\n return this._alias;\n }\n var alias = null;\n if (this.ctorConfig && this.ctorConfig.alias) {\n alias = isCallable(this.ctorConfig.alias) ? this.ctorConfig.alias.call(this.componentInstance) : this.ctorConfig.alias;\n }\n if (!alias && this.el) {\n alias = getDataAttribute(this.el, 'as');\n }\n if (!alias && this.componentInstance) {\n return this.componentInstance.$attrs && this.componentInstance.$attrs['data-vv-as'];\n }\n return alias;\n};\n\n/**\n * Gets the input value.\n */\n\nprototypeAccessors$1.value.get = function () {\n if (!isCallable(this.getter)) {\n return undefined;\n }\n return this.getter();\n};\nprototypeAccessors$1.bails.get = function () {\n return this._bails;\n};\n\n/**\n * If the field rejects false as a valid value for the required rule.\n */\n\nprototypeAccessors$1.rejectsFalse.get = function () {\n if (this.componentInstance && this.ctorConfig) {\n return !!this.ctorConfig.rejectsFalse;\n }\n if (!this.el) {\n return false;\n }\n return this.el.type === 'checkbox';\n};\n\n/**\n * Determines if the instance matches the options provided.\n */\nField.prototype.matches = function matches(options) {\n var this$1 = this;\n if (!options) {\n return true;\n }\n if (options.id) {\n return this.id === options.id;\n }\n var matchesComponentId = isNullOrUndefined(options.vmId) ? function () {\n return true;\n } : function (id) {\n return id === this$1.vmId;\n };\n if (!matchesComponentId(options.vmId)) {\n return false;\n }\n if (options.name === undefined && options.scope === undefined) {\n return true;\n }\n if (options.scope === undefined) {\n return this.name === options.name;\n }\n if (options.name === undefined) {\n return this.scope === options.scope;\n }\n return options.name === this.name && options.scope === this.scope;\n};\n\n/**\n * Caches the field id.\n */\nField.prototype._cacheId = function _cacheId(options) {\n if (this.el && !options.targetOf) {\n this.el._veeValidateId = this.id;\n }\n};\n\n/**\n * Keeps a reference of the most current validation run.\n */\nField.prototype.waitFor = function waitFor(pendingPromise) {\n this._waitingFor = pendingPromise;\n};\nField.prototype.isWaitingFor = function isWaitingFor(promise) {\n return this._waitingFor === promise;\n};\n\n/**\n * Updates the field with changed data.\n */\nField.prototype.update = function update(options) {\n var this$1 = this;\n this.targetOf = options.targetOf || null;\n this.immediate = options.immediate || this.immediate || false;\n this.persist = options.persist || this.persist || false;\n\n // update errors scope if the field scope was changed.\n if (!isNullOrUndefined(options.scope) && options.scope !== this.scope && isCallable(this.validator.update)) {\n this.validator.update(this.id, {\n scope: options.scope\n });\n }\n this.scope = !isNullOrUndefined(options.scope) ? options.scope : !isNullOrUndefined(this.scope) ? this.scope : null;\n this.name = (!isNullOrUndefined(options.name) ? String(options.name) : options.name) || this.name || null;\n this.rules = options.rules !== undefined ? normalizeRules(options.rules) : this.rules;\n this._bails = options.bails !== undefined ? options.bails : this._bails;\n this.model = options.model || this.model;\n this.listen = options.listen !== undefined ? options.listen : this.listen;\n this.classes = (options.classes || this.classes || false) && !this.componentInstance;\n this.classNames = isObject(options.classNames) ? merge(this.classNames, options.classNames) : this.classNames;\n this.getter = isCallable(options.getter) ? options.getter : this.getter;\n this._alias = options.alias || this._alias;\n this.events = options.events ? normalizeEvents(options.events) : this.events;\n this.delay = makeDelayObject(this.events, options.delay || this.delay, this._delay);\n this.updateDependencies();\n this.addActionListeners();\n if (process.env.NODE_ENV !== 'production' && !this.name && !this.targetOf) {\n warn('A field is missing a \"name\" or \"data-vv-name\" attribute');\n }\n\n // update required flag flags\n if (options.rules !== undefined) {\n this.flags.required = this.isRequired;\n }\n if (Object.keys(options.rules || {}).length === 0 && this.updated) {\n var resetFlag = this.flags.validated;\n this.validator.validate(\"#\" + this.id).then(function () {\n this$1.flags.validated = resetFlag;\n });\n }\n\n // validate if it was validated before and field was updated and there was a rules mutation.\n if (this.flags.validated && options.rules !== undefined && this.updated) {\n this.validator.validate(\"#\" + this.id);\n }\n this.updated = true;\n this.addValueListeners();\n\n // no need to continue.\n if (!this.el) {\n return;\n }\n this.updateClasses();\n this.updateAriaAttrs();\n};\n\n/**\n * Resets field flags and errors.\n */\nField.prototype.reset = function reset() {\n var this$1 = this;\n if (this._cancellationToken) {\n this._cancellationToken.cancelled = true;\n delete this._cancellationToken;\n }\n var defaults = createFlags();\n Object.keys(this.flags).filter(function (flag) {\n return flag !== 'required';\n }).forEach(function (flag) {\n this$1.flags[flag] = defaults[flag];\n });\n\n // update initial value\n this.initialValue = this.value;\n this.flags.changed = false;\n this.addValueListeners();\n this.addActionListeners();\n this.updateClasses(true);\n this.updateAriaAttrs();\n this.updateCustomValidity();\n};\n\n/**\n * Sets the flags and their negated counterparts, and updates the classes and re-adds action listeners.\n */\nField.prototype.setFlags = function setFlags(flags) {\n var this$1 = this;\n var negated = {\n pristine: 'dirty',\n dirty: 'pristine',\n valid: 'invalid',\n invalid: 'valid',\n touched: 'untouched',\n untouched: 'touched'\n };\n Object.keys(flags).forEach(function (flag) {\n this$1.flags[flag] = flags[flag];\n // if it has a negation and was not specified, set it as well.\n if (negated[flag] && flags[negated[flag]] === undefined) {\n this$1.flags[negated[flag]] = !flags[flag];\n }\n });\n if (flags.untouched !== undefined || flags.touched !== undefined || flags.dirty !== undefined || flags.pristine !== undefined) {\n this.addActionListeners();\n }\n this.updateClasses();\n this.updateAriaAttrs();\n this.updateCustomValidity();\n};\n\n/**\n * Determines if the field requires references to target fields.\n*/\nField.prototype.updateDependencies = function updateDependencies() {\n var this$1 = this;\n\n // reset dependencies.\n this.dependencies.forEach(function (d) {\n return d.field.destroy();\n });\n this.dependencies = [];\n\n // we get the selectors for each field.\n var fields = Object.keys(this.rules).reduce(function (prev, r) {\n if (RuleContainer.isTargetRule(r)) {\n prev.push({\n selector: this$1.rules[r][0],\n name: r\n });\n }\n return prev;\n }, []);\n if (!fields.length || !this.vm || !this.vm.$el) {\n return;\n }\n\n // must be contained within the same component, so we use the vm root element constrain our dom search.\n fields.forEach(function (ref$1) {\n var selector = ref$1.selector;\n var name = ref$1.name;\n var ref = this$1.vm.$refs[selector];\n var el = Array.isArray(ref) ? ref[0] : ref;\n if (!el) {\n return;\n }\n var options = {\n vm: this$1.vm,\n classes: this$1.classes,\n classNames: this$1.classNames,\n delay: this$1.delay,\n scope: this$1.scope,\n events: this$1.events.join('|'),\n immediate: this$1.immediate,\n targetOf: this$1.id\n };\n\n // probably a component.\n if (isCallable(el.$watch)) {\n options.component = el;\n options.el = el.$el;\n options.getter = Resolver.resolveGetter(el.$el, el.$vnode);\n } else {\n options.el = el;\n options.getter = Resolver.resolveGetter(el, {});\n }\n this$1.dependencies.push({\n name: name,\n field: new Field(options)\n });\n });\n};\n\n/**\n * Removes listeners.\n */\nField.prototype.unwatch = function unwatch(tag) {\n if (tag === void 0) tag = null;\n if (!tag) {\n this.watchers.forEach(function (w) {\n return w.unwatch();\n });\n this.watchers = [];\n return;\n }\n this.watchers.filter(function (w) {\n return tag.test(w.tag);\n }).forEach(function (w) {\n return w.unwatch();\n });\n this.watchers = this.watchers.filter(function (w) {\n return !tag.test(w.tag);\n });\n};\n\n/**\n * Updates the element classes depending on each field flag status.\n */\nField.prototype.updateClasses = function updateClasses(isReset) {\n var this$1 = this;\n if (isReset === void 0) isReset = false;\n if (!this.classes || this.isDisabled) {\n return;\n }\n var applyClasses = function applyClasses(el) {\n toggleClass(el, this$1.classNames.dirty, this$1.flags.dirty);\n toggleClass(el, this$1.classNames.pristine, this$1.flags.pristine);\n toggleClass(el, this$1.classNames.touched, this$1.flags.touched);\n toggleClass(el, this$1.classNames.untouched, this$1.flags.untouched);\n\n // remove valid/invalid classes on reset.\n if (isReset) {\n toggleClass(el, this$1.classNames.valid, false);\n toggleClass(el, this$1.classNames.invalid, false);\n }\n\n // make sure we don't set any classes if the state is undetermined.\n if (!isNullOrUndefined(this$1.flags.valid) && this$1.flags.validated) {\n toggleClass(el, this$1.classNames.valid, this$1.flags.valid);\n }\n if (!isNullOrUndefined(this$1.flags.invalid) && this$1.flags.validated) {\n toggleClass(el, this$1.classNames.invalid, this$1.flags.invalid);\n }\n };\n if (!isCheckboxOrRadioInput(this.el)) {\n applyClasses(this.el);\n return;\n }\n var els = document.querySelectorAll(\"input[name=\\\"\" + this.el.name + \"\\\"]\");\n toArray(els).forEach(applyClasses);\n};\n\n/**\n * Adds the listeners required for automatic classes and some flags.\n */\nField.prototype.addActionListeners = function addActionListeners() {\n var this$1 = this;\n\n // remove previous listeners.\n this.unwatch(/class/);\n if (!this.el) {\n return;\n }\n var onBlur = function onBlur() {\n this$1.flags.touched = true;\n this$1.flags.untouched = false;\n if (this$1.classes) {\n toggleClass(this$1.el, this$1.classNames.touched, true);\n toggleClass(this$1.el, this$1.classNames.untouched, false);\n }\n\n // only needed once.\n this$1.unwatch(/^class_blur$/);\n };\n var inputEvent = isTextInput(this.el) ? 'input' : 'change';\n var onInput = function onInput() {\n this$1.flags.dirty = true;\n this$1.flags.pristine = false;\n if (this$1.classes) {\n toggleClass(this$1.el, this$1.classNames.pristine, false);\n toggleClass(this$1.el, this$1.classNames.dirty, true);\n }\n\n // only needed once.\n this$1.unwatch(/^class_input$/);\n };\n if (this.componentInstance && isCallable(this.componentInstance.$once)) {\n this.componentInstance.$once('input', onInput);\n this.componentInstance.$once('blur', onBlur);\n this.watchers.push({\n tag: 'class_input',\n unwatch: function unwatch() {\n this$1.componentInstance.$off('input', onInput);\n }\n });\n this.watchers.push({\n tag: 'class_blur',\n unwatch: function unwatch() {\n this$1.componentInstance.$off('blur', onBlur);\n }\n });\n return;\n }\n if (!this.el) {\n return;\n }\n addEventListener(this.el, inputEvent, onInput);\n // Checkboxes and radio buttons on Mac don't emit blur naturally, so we listen on click instead.\n var blurEvent = isCheckboxOrRadioInput(this.el) ? 'change' : 'blur';\n addEventListener(this.el, blurEvent, onBlur);\n this.watchers.push({\n tag: 'class_input',\n unwatch: function unwatch() {\n this$1.el.removeEventListener(inputEvent, onInput);\n }\n });\n this.watchers.push({\n tag: 'class_blur',\n unwatch: function unwatch() {\n this$1.el.removeEventListener(blurEvent, onBlur);\n }\n });\n};\nField.prototype.checkValueChanged = function checkValueChanged() {\n // handle some people initialize the value to null, since text inputs have empty string value.\n if (this.initialValue === null && this.value === '' && isTextInput(this.el)) {\n return false;\n }\n return this.value !== this.initialValue;\n};\n\n/**\n * Determines the suitable primary event to listen for.\n */\nField.prototype._determineInputEvent = function _determineInputEvent() {\n // if its a custom component, use the customized model event or the input event.\n if (this.componentInstance) {\n return this.componentInstance.$options.model && this.componentInstance.$options.model.event || 'input';\n }\n if (this.model && this.model.lazy) {\n return 'change';\n }\n if (isTextInput(this.el)) {\n return 'input';\n }\n return 'change';\n};\n\n/**\n * Determines the list of events to listen to.\n */\nField.prototype._determineEventList = function _determineEventList(defaultInputEvent) {\n var this$1 = this;\n\n // if no event is configured, or it is a component or a text input then respect the user choice.\n if (!this.events.length || this.componentInstance || isTextInput(this.el)) {\n return [].concat(this.events).map(function (evt) {\n if (evt === 'input' && this$1.model && this$1.model.lazy) {\n return 'change';\n }\n return evt;\n });\n }\n\n // force suitable event for non-text type fields.\n return this.events.map(function (e) {\n if (e === 'input') {\n return defaultInputEvent;\n }\n return e;\n });\n};\n\n/**\n * Adds the listeners required for validation.\n */\nField.prototype.addValueListeners = function addValueListeners() {\n var this$1 = this;\n this.unwatch(/^input_.+/);\n if (!this.listen || !this.el) {\n return;\n }\n var token = {\n cancelled: false\n };\n var fn = this.targetOf ? function () {\n var target = this$1.validator._resolveField(\"#\" + this$1.targetOf);\n if (target && target.flags.validated) {\n this$1.validator.validate(\"#\" + this$1.targetOf);\n }\n } : function () {\n var args = [],\n len = arguments.length;\n while (len--) args[len] = arguments[len];\n\n // if its a DOM event, resolve the value, otherwise use the first parameter as the value.\n if (args.length === 0 || isEvent(args[0])) {\n args[0] = this$1.value;\n }\n this$1.flags.pending = true;\n this$1._cancellationToken = token;\n this$1.validator.validate(\"#\" + this$1.id, args[0]);\n };\n var inputEvent = this._determineInputEvent();\n var events = this._determineEventList(inputEvent);\n\n // if on input validation is requested.\n if (includes(events, inputEvent)) {\n var ctx = null;\n var expression = null;\n var watchCtxVm = false;\n // if its watchable from the context vm.\n if (this.model && this.model.expression) {\n ctx = this.vm;\n expression = this.model.expression;\n watchCtxVm = true;\n }\n\n // watch it from the custom component vm instead.\n if (!expression && this.componentInstance && this.componentInstance.$options.model) {\n ctx = this.componentInstance;\n expression = this.componentInstance.$options.model.prop || 'value';\n }\n if (ctx && expression) {\n var debouncedFn = debounce(fn, this.delay[inputEvent], token);\n var _unwatch = ctx.$watch(expression, debouncedFn);\n this.watchers.push({\n tag: 'input_model',\n unwatch: function unwatch() {\n this$1.vm.$nextTick(function () {\n _unwatch();\n });\n }\n });\n\n // filter out input event when we are watching from the context vm.\n if (watchCtxVm) {\n events = events.filter(function (e) {\n return e !== inputEvent;\n });\n }\n }\n }\n\n // Add events.\n events.forEach(function (e) {\n var debouncedFn = debounce(fn, this$1.delay[e], token);\n this$1._addComponentEventListener(e, debouncedFn);\n this$1._addHTMLEventListener(e, debouncedFn);\n });\n};\nField.prototype._addComponentEventListener = function _addComponentEventListener(evt, validate) {\n var this$1 = this;\n if (!this.componentInstance) {\n return;\n }\n this.componentInstance.$on(evt, validate);\n this.watchers.push({\n tag: 'input_vue',\n unwatch: function unwatch() {\n this$1.componentInstance.$off(evt, validate);\n }\n });\n};\nField.prototype._addHTMLEventListener = function _addHTMLEventListener(evt, validate) {\n var this$1 = this;\n if (!this.el || this.componentInstance) {\n return;\n }\n\n // listen for the current element.\n var addListener = function addListener(el) {\n addEventListener(el, evt, validate);\n this$1.watchers.push({\n tag: 'input_native',\n unwatch: function unwatch() {\n el.removeEventListener(evt, validate);\n }\n });\n };\n addListener(this.el);\n if (!isCheckboxOrRadioInput(this.el)) {\n return;\n }\n var els = document.querySelectorAll(\"input[name=\\\"\" + this.el.name + \"\\\"]\");\n toArray(els).forEach(function (el) {\n // skip if it is added by v-validate and is not the current element.\n if (el._veeValidateId && el !== this$1.el) {\n return;\n }\n addListener(el);\n });\n};\n\n/**\n * Updates aria attributes on the element.\n */\nField.prototype.updateAriaAttrs = function updateAriaAttrs() {\n var this$1 = this;\n if (!this.aria || !this.el || !isCallable(this.el.setAttribute)) {\n return;\n }\n var applyAriaAttrs = function applyAriaAttrs(el) {\n el.setAttribute('aria-required', this$1.isRequired ? 'true' : 'false');\n el.setAttribute('aria-invalid', this$1.flags.invalid ? 'true' : 'false');\n };\n if (!isCheckboxOrRadioInput(this.el)) {\n applyAriaAttrs(this.el);\n return;\n }\n var els = document.querySelectorAll(\"input[name=\\\"\" + this.el.name + \"\\\"]\");\n toArray(els).forEach(applyAriaAttrs);\n};\n\n/**\n * Updates the custom validity for the field.\n */\nField.prototype.updateCustomValidity = function updateCustomValidity() {\n if (!this.validity || !this.el || !isCallable(this.el.setCustomValidity) || !this.validator.errors) {\n return;\n }\n this.el.setCustomValidity(this.flags.valid ? '' : this.validator.errors.firstById(this.id) || '');\n};\n\n/**\n * Removes all listeners.\n */\nField.prototype.destroy = function destroy() {\n // ignore the result of any ongoing validation.\n if (this._cancellationToken) {\n this._cancellationToken.cancelled = true;\n }\n this.unwatch();\n this.dependencies.forEach(function (d) {\n return d.field.destroy();\n });\n this.dependencies = [];\n};\nObject.defineProperties(Field.prototype, prototypeAccessors$1);\n\n// \n\nvar FieldBag = function FieldBag(items) {\n if (items === void 0) items = [];\n this.items = items || [];\n this.itemsById = this.items.reduce(function (itemsById, item) {\n itemsById[item.id] = item;\n return itemsById;\n }, {});\n};\nvar prototypeAccessors$2 = {\n length: {\n configurable: true\n }\n};\nFieldBag.prototype[typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'] = function () {\n var this$1 = this;\n var index = 0;\n return {\n next: function next() {\n return {\n value: this$1.items[index++],\n done: index > this$1.items.length\n };\n }\n };\n};\n\n/**\n * Gets the current items length.\n */\n\nprototypeAccessors$2.length.get = function () {\n return this.items.length;\n};\n\n/**\n * Finds the first field that matches the provided matcher object.\n */\nFieldBag.prototype.find = function find$1(matcher) {\n return find(this.items, function (item) {\n return item.matches(matcher);\n });\n};\n\n/**\n * Finds the field with the given id, using a plain object as a map to link\n * ids to items faster than by looping over the array and matching.\n */\nFieldBag.prototype.findById = function findById(id) {\n return this.itemsById[id] || null;\n};\n\n/**\n * Filters the items down to the matched fields.\n */\nFieldBag.prototype.filter = function filter(matcher) {\n // multiple matchers to be tried.\n if (Array.isArray(matcher)) {\n return this.items.filter(function (item) {\n return matcher.some(function (m) {\n return item.matches(m);\n });\n });\n }\n return this.items.filter(function (item) {\n return item.matches(matcher);\n });\n};\n\n/**\n * Maps the field items using the mapping function.\n */\nFieldBag.prototype.map = function map(mapper) {\n return this.items.map(mapper);\n};\n\n/**\n * Finds and removes the first field that matches the provided matcher object, returns the removed item.\n */\nFieldBag.prototype.remove = function remove(matcher) {\n var item = null;\n if (matcher instanceof Field) {\n item = matcher;\n } else {\n item = this.find(matcher);\n }\n if (!item) {\n return null;\n }\n var index = this.items.indexOf(item);\n this.items.splice(index, 1);\n delete this.itemsById[item.id];\n return item;\n};\n\n/**\n * Adds a field item to the list.\n */\nFieldBag.prototype.push = function push(item) {\n if (!(item instanceof Field)) {\n throw createError('FieldBag only accepts instances of Field that has an id defined.');\n }\n if (!item.id) {\n throw createError('Field id must be defined.');\n }\n if (this.findById(item.id)) {\n throw createError(\"Field with id \" + item.id + \" is already added.\");\n }\n this.items.push(item);\n this.itemsById[item.id] = item;\n};\nObject.defineProperties(FieldBag.prototype, prototypeAccessors$2);\nvar ScopedValidator = function ScopedValidator(base, vm) {\n this.id = vm._uid;\n this._base = base;\n this._paused = false;\n\n // create a mirror bag with limited component scope.\n this.errors = new ErrorBag(base.errors, this.id);\n};\nvar prototypeAccessors$3 = {\n flags: {\n configurable: true\n },\n rules: {\n configurable: true\n },\n fields: {\n configurable: true\n },\n dictionary: {\n configurable: true\n },\n locale: {\n configurable: true\n }\n};\nprototypeAccessors$3.flags.get = function () {\n var this$1 = this;\n return this._base.fields.items.filter(function (f) {\n return f.vmId === this$1.id;\n }).reduce(function (acc, field) {\n if (field.scope) {\n if (!acc[\"$\" + field.scope]) {\n acc[\"$\" + field.scope] = {};\n }\n acc[\"$\" + field.scope][field.name] = field.flags;\n }\n acc[field.name] = field.flags;\n return acc;\n }, {});\n};\nprototypeAccessors$3.rules.get = function () {\n return this._base.rules;\n};\nprototypeAccessors$3.fields.get = function () {\n return new FieldBag(this._base.fields.filter({\n vmId: this.id\n }));\n};\nprototypeAccessors$3.dictionary.get = function () {\n return this._base.dictionary;\n};\nprototypeAccessors$3.locale.get = function () {\n return this._base.locale;\n};\nprototypeAccessors$3.locale.set = function (val) {\n this._base.locale = val;\n};\nScopedValidator.prototype.localize = function localize() {\n var ref;\n var args = [],\n len = arguments.length;\n while (len--) args[len] = arguments[len];\n return (ref = this._base).localize.apply(ref, args);\n};\nScopedValidator.prototype.update = function update() {\n var ref;\n var args = [],\n len = arguments.length;\n while (len--) args[len] = arguments[len];\n return (ref = this._base).update.apply(ref, args);\n};\nScopedValidator.prototype.attach = function attach(opts) {\n var attachOpts = assign({}, opts, {\n vmId: this.id\n });\n return this._base.attach(attachOpts);\n};\nScopedValidator.prototype.pause = function pause() {\n this._paused = true;\n};\nScopedValidator.prototype.resume = function resume() {\n this._paused = false;\n};\nScopedValidator.prototype.remove = function remove(ruleName) {\n return this._base.remove(ruleName);\n};\nScopedValidator.prototype.detach = function detach(name, scope) {\n return this._base.detach(name, scope, this.id);\n};\nScopedValidator.prototype.extend = function extend() {\n var ref;\n var args = [],\n len = arguments.length;\n while (len--) args[len] = arguments[len];\n return (ref = this._base).extend.apply(ref, args);\n};\nScopedValidator.prototype.validate = function validate(descriptor, value, opts) {\n if (opts === void 0) opts = {};\n if (this._paused) {\n return Promise.resolve(true);\n }\n return this._base.validate(descriptor, value, assign({}, {\n vmId: this.id\n }, opts || {}));\n};\nScopedValidator.prototype.verify = function verify() {\n var ref;\n var args = [],\n len = arguments.length;\n while (len--) args[len] = arguments[len];\n return (ref = this._base).verify.apply(ref, args);\n};\nScopedValidator.prototype.validateAll = function validateAll(values, opts) {\n if (opts === void 0) opts = {};\n if (this._paused) {\n return Promise.resolve(true);\n }\n return this._base.validateAll(values, assign({}, {\n vmId: this.id\n }, opts || {}));\n};\nScopedValidator.prototype.validateScopes = function validateScopes(opts) {\n if (opts === void 0) opts = {};\n if (this._paused) {\n return Promise.resolve(true);\n }\n return this._base.validateScopes(assign({}, {\n vmId: this.id\n }, opts || {}));\n};\nScopedValidator.prototype.destroy = function destroy() {\n delete this.id;\n delete this._base;\n};\nScopedValidator.prototype.reset = function reset(matcher) {\n return this._base.reset(Object.assign({}, matcher || {}, {\n vmId: this.id\n }));\n};\nScopedValidator.prototype.flag = function flag() {\n var ref;\n var args = [],\n len = arguments.length;\n while (len--) args[len] = arguments[len];\n return (ref = this._base).flag.apply(ref, args.concat([this.id]));\n};\nScopedValidator.prototype._resolveField = function _resolveField() {\n var ref;\n var args = [],\n len = arguments.length;\n while (len--) args[len] = arguments[len];\n return (ref = this._base)._resolveField.apply(ref, args);\n};\nObject.defineProperties(ScopedValidator.prototype, prototypeAccessors$3);\nvar VALIDATOR = null;\nvar getValidator = function getValidator() {\n return VALIDATOR;\n};\nvar setValidator = function setValidator(value) {\n VALIDATOR = value;\n return value;\n};\n\n// \n\n/**\n * Checks if a parent validator instance was requested.\n */\nvar requestsValidator = function requestsValidator(injections) {\n if (isObject(injections) && injections.$validator) {\n return true;\n }\n return false;\n};\nvar mixin = {\n provide: function provide() {\n if (this.$validator && !isBuiltInComponent(this.$vnode)) {\n return {\n $validator: this.$validator\n };\n }\n return {};\n },\n beforeCreate: function beforeCreate() {\n // if built in do nothing.\n if (isBuiltInComponent(this.$vnode) || this.$options.$__veeInject === false) {\n return;\n }\n\n // if its a root instance set the config if it exists.\n if (!this.$parent) {\n setConfig(this.$options.$_veeValidate || {});\n }\n var options = resolveConfig(this);\n\n // if its a root instance, inject anyways, or if it requested a new instance.\n if (!this.$parent || this.$options.$_veeValidate && /new/.test(this.$options.$_veeValidate.validator)) {\n this.$validator = new ScopedValidator(getValidator(), this);\n }\n var requested = requestsValidator(this.$options.inject);\n\n // if automatic injection is enabled and no instance was requested.\n if (!this.$validator && options.inject && !requested) {\n this.$validator = new ScopedValidator(getValidator(), this);\n }\n\n // don't inject errors or fieldBag as no validator was resolved.\n if (!requested && !this.$validator) {\n return;\n }\n\n // There is a validator but it isn't injected, mark as reactive.\n if (!requested && this.$validator) {\n var Vue = this.$options._base; // the vue constructor.\n Vue.util.defineReactive(this.$validator, 'errors', this.$validator.errors);\n }\n if (!this.$options.computed) {\n this.$options.computed = {};\n }\n this.$options.computed[options.errorBagName || 'errors'] = function errorBagGetter() {\n return this.$validator.errors;\n };\n this.$options.computed[options.fieldsBagName || 'fields'] = function fieldBagGetter() {\n return this.$validator.fields.items.reduce(function (acc, field) {\n if (field.scope) {\n if (!acc[\"$\" + field.scope]) {\n acc[\"$\" + field.scope] = {};\n }\n acc[\"$\" + field.scope][field.name] = field.flags;\n return acc;\n }\n acc[field.name] = field.flags;\n return acc;\n }, {});\n };\n },\n beforeDestroy: function beforeDestroy() {\n if (this.$validator && this._uid === this.$validator.id) {\n this.$validator.errors.clear(); // remove errors generated by this component.\n }\n }\n};\n\n// \n\n/**\n * Finds the requested field by id from the context object.\n */\nfunction findField(el, context) {\n if (!context || !context.$validator) {\n return null;\n }\n return context.$validator.fields.findById(el._veeValidateId);\n}\nvar directive = {\n bind: function bind(el, binding, vnode) {\n var validator = vnode.context.$validator;\n if (!validator) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"No validator instance is present on vm, did you forget to inject '$validator'?\");\n }\n return;\n }\n var fieldOptions = Resolver.generate(el, binding, vnode);\n validator.attach(fieldOptions);\n },\n inserted: function inserted(el, binding, vnode) {\n var field = findField(el, vnode.context);\n var scope = Resolver.resolveScope(el, binding, vnode);\n\n // skip if scope hasn't changed.\n if (!field || scope === field.scope) {\n return;\n }\n\n // only update scope.\n field.update({\n scope: scope\n });\n\n // allows the field to re-evaluated once more in the update hook.\n field.updated = false;\n },\n update: function update(el, binding, vnode) {\n var field = findField(el, vnode.context);\n\n // make sure we don't do unneccasary work if no important change was done.\n if (!field || field.updated && isEqual(binding.value, binding.oldValue)) {\n return;\n }\n var scope = Resolver.resolveScope(el, binding, vnode);\n var rules = Resolver.resolveRules(el, binding, vnode);\n field.update({\n scope: scope,\n rules: rules\n });\n },\n unbind: function unbind(el, binding, ref) {\n var context = ref.context;\n var field = findField(el, context);\n if (!field) {\n return;\n }\n context.$validator.detach(field);\n }\n};\n\n// \n\nvar Validator = function Validator(validations, options, pluginContainer) {\n if (options === void 0) options = {\n fastExit: true\n };\n if (pluginContainer === void 0) pluginContainer = null;\n this.errors = new ErrorBag();\n this.fields = new FieldBag();\n this._createFields(validations);\n this.paused = false;\n this.fastExit = !isNullOrUndefined(options && options.fastExit) ? options.fastExit : true;\n this.$vee = pluginContainer || {\n _vm: {\n $nextTick: function $nextTick(cb) {\n return isCallable(cb) ? cb() : Promise.resolve();\n },\n $emit: function $emit() {},\n $off: function $off() {}\n }\n };\n};\nvar prototypeAccessors$4 = {\n rules: {\n configurable: true\n },\n dictionary: {\n configurable: true\n },\n flags: {\n configurable: true\n },\n locale: {\n configurable: true\n }\n};\nvar staticAccessors$1 = {\n rules: {\n configurable: true\n },\n dictionary: {\n configurable: true\n },\n locale: {\n configurable: true\n }\n};\n\n/**\n * @deprecated\n */\nstaticAccessors$1.rules.get = function () {\n if (process.env.NODE_ENV !== 'production') {\n warn('this accessor will be deprecated, use `import { rules } from \"vee-validate\"` instead.');\n }\n return RuleContainer.rules;\n};\n\n/**\n * @deprecated\n */\nprototypeAccessors$4.rules.get = function () {\n if (process.env.NODE_ENV !== 'production') {\n warn('this accessor will be deprecated, use `import { rules } from \"vee-validate\"` instead.');\n }\n return RuleContainer.rules;\n};\nprototypeAccessors$4.dictionary.get = function () {\n return DictionaryResolver.getDriver();\n};\nstaticAccessors$1.dictionary.get = function () {\n return DictionaryResolver.getDriver();\n};\nprototypeAccessors$4.flags.get = function () {\n return this.fields.items.reduce(function (acc, field) {\n var obj;\n if (field.scope) {\n acc[\"$\" + field.scope] = (obj = {}, obj[field.name] = field.flags, obj);\n return acc;\n }\n acc[field.name] = field.flags;\n return acc;\n }, {});\n};\n\n/**\n * Getter for the current locale.\n */\nprototypeAccessors$4.locale.get = function () {\n return Validator.locale;\n};\n\n/**\n * Setter for the validator locale.\n */\nprototypeAccessors$4.locale.set = function (value) {\n Validator.locale = value;\n};\nstaticAccessors$1.locale.get = function () {\n return DictionaryResolver.getDriver().locale;\n};\n\n/**\n * Setter for the validator locale.\n */\nstaticAccessors$1.locale.set = function (value) {\n var hasChanged = value !== DictionaryResolver.getDriver().locale;\n DictionaryResolver.getDriver().locale = value;\n if (hasChanged && Validator.$vee && Validator.$vee._vm) {\n Validator.$vee._vm.$emit('localeChanged');\n }\n};\n\n/**\n * Static constructor.\n * @deprecated\n */\nValidator.create = function create(validations, options) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Please use `new` to create new validator instances.');\n }\n return new Validator(validations, options);\n};\n\n/**\n * Adds a custom validator to the list of validation rules.\n */\nValidator.extend = function extend(name, validator, options) {\n if (options === void 0) options = {};\n Validator._guardExtend(name, validator);\n // rules imported from the minimal bundle\n // will have the options embedded in them\n var mergedOpts = validator.options || {};\n Validator._merge(name, {\n validator: validator,\n paramNames: options && options.paramNames || validator.paramNames,\n options: assign({\n hasTarget: false,\n immediate: true\n }, mergedOpts, options || {})\n });\n};\n\n/**\n * Removes a rule from the list of validators.\n * @deprecated\n */\nValidator.remove = function remove(name) {\n if (process.env.NODE_ENV !== 'production') {\n warn('this method will be deprecated, you can still override your rules with `extend`');\n }\n RuleContainer.remove(name);\n};\n\n/**\n * Adds and sets the current locale for the validator.\n*/\nValidator.prototype.localize = function localize(lang, dictionary) {\n Validator.localize(lang, dictionary);\n};\n\n/**\n * Adds and sets the current locale for the validator.\n */\nValidator.localize = function localize(lang, dictionary) {\n var obj;\n if (isObject(lang)) {\n DictionaryResolver.getDriver().merge(lang);\n return;\n }\n\n // merge the dictionary.\n if (dictionary) {\n var locale = lang || dictionary.name;\n dictionary = assign({}, dictionary);\n DictionaryResolver.getDriver().merge((obj = {}, obj[locale] = dictionary, obj));\n }\n if (lang) {\n // set the locale.\n Validator.locale = lang;\n }\n};\n\n/**\n * Registers a field to be validated.\n */\nValidator.prototype.attach = function attach(fieldOpts) {\n var this$1 = this;\n\n // We search for a field with the same name & scope, having persist enabled\n var oldFieldMatcher = {\n name: fieldOpts.name,\n scope: fieldOpts.scope,\n persist: true\n };\n var oldField = fieldOpts.persist ? this.fields.find(oldFieldMatcher) : null;\n if (oldField) {\n // We keep the flags of the old field, then we remove its instance\n fieldOpts.flags = oldField.flags;\n oldField.destroy();\n this.fields.remove(oldField);\n }\n\n // fixes initial value detection with v-model and select elements.\n var value = fieldOpts.initialValue;\n var field = new Field(fieldOpts);\n this.fields.push(field);\n\n // validate the field initially\n if (field.immediate) {\n this.$vee._vm.$nextTick(function () {\n return this$1.validate(\"#\" + field.id, value || field.value, {\n vmId: fieldOpts.vmId\n });\n });\n } else {\n this._validate(field, value || field.value, {\n initial: true\n }).then(function (result) {\n field.flags.valid = result.valid;\n field.flags.invalid = !result.valid;\n });\n }\n return field;\n};\n\n/**\n * Sets the flags on a field.\n */\nValidator.prototype.flag = function flag(name, flags, uid) {\n if (uid === void 0) uid = null;\n var field = this._resolveField(name, undefined, uid);\n if (!field || !flags) {\n return;\n }\n field.setFlags(flags);\n};\n\n/**\n * Removes a field from the validator.\n */\nValidator.prototype.detach = function detach(name, scope, uid) {\n var field = isCallable(name.destroy) ? name : this._resolveField(name, scope, uid);\n if (!field) {\n return;\n }\n\n // We destroy/remove the field & error instances if it's not a `persist` one\n if (!field.persist) {\n field.destroy();\n this.errors.remove(field.name, field.scope, field.vmId);\n this.fields.remove(field);\n }\n};\n\n/**\n * Adds a custom validator to the list of validation rules.\n */\nValidator.prototype.extend = function extend(name, validator, options) {\n if (options === void 0) options = {};\n Validator.extend(name, validator, options);\n};\nValidator.prototype.reset = function reset(matcher) {\n var this$1 = this;\n\n // two ticks\n return this.$vee._vm.$nextTick().then(function () {\n return this$1.$vee._vm.$nextTick();\n }).then(function () {\n this$1.fields.filter(matcher).forEach(function (field) {\n field.waitFor(null);\n field.reset(); // reset field flags.\n this$1.errors.remove(field.name, field.scope, matcher && matcher.vmId);\n });\n });\n};\n\n/**\n * Updates a field, updating both errors and flags.\n */\nValidator.prototype.update = function update(id, ref) {\n var scope = ref.scope;\n var field = this._resolveField(\"#\" + id);\n if (!field) {\n return;\n }\n\n // remove old scope.\n this.errors.update(id, {\n scope: scope\n });\n};\n\n/**\n * Removes a rule from the list of validators.\n * @deprecated\n */\nValidator.prototype.remove = function remove(name) {\n Validator.remove(name);\n};\n\n/**\n * Validates a value against a registered field validations.\n */\nValidator.prototype.validate = function validate(fieldDescriptor, value, ref) {\n var this$1 = this;\n if (ref === void 0) ref = {};\n var silent = ref.silent;\n var vmId = ref.vmId;\n if (this.paused) {\n return Promise.resolve(true);\n }\n\n // overload to validate all.\n if (isNullOrUndefined(fieldDescriptor)) {\n return this.validateScopes({\n silent: silent,\n vmId: vmId\n });\n }\n\n // overload to validate scope-less fields.\n if (fieldDescriptor === '*') {\n return this.validateAll(undefined, {\n silent: silent,\n vmId: vmId\n });\n }\n\n // if scope validation was requested.\n if (/^(.+)\\.\\*$/.test(fieldDescriptor)) {\n var matched = fieldDescriptor.match(/^(.+)\\.\\*$/)[1];\n return this.validateAll(matched);\n }\n var field = this._resolveField(fieldDescriptor);\n if (!field) {\n return this._handleFieldNotFound(fieldDescriptor);\n }\n if (!silent) {\n field.flags.pending = true;\n }\n if (value === undefined) {\n value = field.value;\n }\n var validationPromise = this._validate(field, value);\n field.waitFor(validationPromise);\n return validationPromise.then(function (result) {\n if (!silent && field.isWaitingFor(validationPromise)) {\n // allow next validation to mutate the state.\n field.waitFor(null);\n this$1._handleValidationResults([result], vmId);\n }\n return result.valid;\n });\n};\n\n/**\n * Pauses the validator.\n */\nValidator.prototype.pause = function pause() {\n this.paused = true;\n return this;\n};\n\n/**\n * Resumes the validator.\n */\nValidator.prototype.resume = function resume() {\n this.paused = false;\n return this;\n};\n\n/**\n * Validates each value against the corresponding field validations.\n */\nValidator.prototype.validateAll = function validateAll(values, ref) {\n var this$1 = this;\n if (ref === void 0) ref = {};\n var silent = ref.silent;\n var vmId = ref.vmId;\n if (this.paused) {\n return Promise.resolve(true);\n }\n var matcher = null;\n var providedValues = false;\n if (typeof values === 'string') {\n matcher = {\n scope: values,\n vmId: vmId\n };\n } else if (isObject(values)) {\n matcher = Object.keys(values).map(function (key) {\n return {\n name: key,\n vmId: vmId,\n scope: null\n };\n });\n providedValues = true;\n } else if (Array.isArray(values)) {\n matcher = values.map(function (key) {\n return _typeof2(key) === 'object' ? Object.assign({\n vmId: vmId\n }, key) : {\n name: key,\n vmId: vmId\n };\n });\n } else {\n matcher = {\n scope: null,\n vmId: vmId\n };\n }\n return Promise.all(this.fields.filter(matcher).map(function (field) {\n return this$1._validate(field, providedValues ? values[field.name] : field.value);\n })).then(function (results) {\n if (!silent) {\n this$1._handleValidationResults(results, vmId);\n }\n return results.every(function (t) {\n return t.valid;\n });\n });\n};\n\n/**\n * Validates all scopes.\n */\nValidator.prototype.validateScopes = function validateScopes(ref) {\n var this$1 = this;\n if (ref === void 0) ref = {};\n var silent = ref.silent;\n var vmId = ref.vmId;\n if (this.paused) {\n return Promise.resolve(true);\n }\n return Promise.all(this.fields.filter({\n vmId: vmId\n }).map(function (field) {\n return this$1._validate(field, field.value);\n })).then(function (results) {\n if (!silent) {\n this$1._handleValidationResults(results, vmId);\n }\n return results.every(function (t) {\n return t.valid;\n });\n });\n};\n\n/**\n * Validates a value against the rules.\n */\nValidator.prototype.verify = function verify(value, rules, options) {\n if (options === void 0) options = {};\n var field = {\n name: options && options.name || '{field}',\n rules: normalizeRules(rules),\n bails: getPath('bails', options, true),\n forceRequired: false,\n get isRequired() {\n return !!this.rules.required || this.forceRequired;\n }\n };\n var targetRules = Object.keys(field.rules).filter(RuleContainer.isTargetRule);\n if (targetRules.length && options && isObject(options.values)) {\n field.dependencies = targetRules.map(function (rule) {\n var ref = field.rules[rule];\n var targetKey = ref[0];\n return {\n name: rule,\n field: {\n value: options.values[targetKey]\n }\n };\n });\n }\n return this._validate(field, value).then(function (result) {\n var errors = [];\n var ruleMap = {};\n result.errors.forEach(function (e) {\n errors.push(e.msg);\n ruleMap[e.rule] = e.msg;\n });\n return {\n valid: result.valid,\n errors: errors,\n failedRules: ruleMap\n };\n });\n};\n\n/**\n * Perform cleanup.\n */\nValidator.prototype.destroy = function destroy() {\n this.$vee._vm.$off('localeChanged');\n};\n\n/**\n * Creates the fields to be validated.\n */\nValidator.prototype._createFields = function _createFields(validations) {\n var this$1 = this;\n if (!validations) {\n return;\n }\n Object.keys(validations).forEach(function (field) {\n var options = assign({}, {\n name: field,\n rules: validations[field]\n });\n this$1.attach(options);\n });\n};\n\n/**\n * Date rules need the existence of a format, so date_format must be supplied.\n */\nValidator.prototype._getDateFormat = function _getDateFormat(validations) {\n var format = null;\n if (validations.date_format && Array.isArray(validations.date_format)) {\n format = validations.date_format[0];\n }\n return format || DictionaryResolver.getDriver().getDateFormat(this.locale);\n};\n\n/**\n * Formats an error message for field and a rule.\n */\nValidator.prototype._formatErrorMessage = function _formatErrorMessage(field, rule, data, targetName) {\n if (data === void 0) data = {};\n if (targetName === void 0) targetName = null;\n var name = this._getFieldDisplayName(field);\n var params = this._getLocalizedParams(rule, targetName);\n return DictionaryResolver.getDriver().getFieldMessage(this.locale, field.name, rule.name, [name, params, data]);\n};\n\n/**\n * We need to convert any object param to an array format since the locales do not handle params as objects yet.\n */\nValidator.prototype._convertParamObjectToArray = function _convertParamObjectToArray(obj, ruleName) {\n if (Array.isArray(obj)) {\n return obj;\n }\n var paramNames = RuleContainer.getParamNames(ruleName);\n if (!paramNames || !isObject(obj)) {\n return obj;\n }\n return paramNames.reduce(function (prev, paramName) {\n if (paramName in obj) {\n prev.push(obj[paramName]);\n }\n return prev;\n }, []);\n};\n\n/**\n * Translates the parameters passed to the rule (mainly for target fields).\n */\nValidator.prototype._getLocalizedParams = function _getLocalizedParams(rule, targetName) {\n if (targetName === void 0) targetName = null;\n var params = this._convertParamObjectToArray(rule.params, rule.name);\n if (rule.options.hasTarget && params && params[0]) {\n var localizedName = targetName || DictionaryResolver.getDriver().getAttribute(this.locale, params[0], params[0]);\n return [localizedName].concat(params.slice(1));\n }\n return params;\n};\n\n/**\n * Resolves an appropriate display name, first checking 'data-as' or the registered 'prettyName'\n */\nValidator.prototype._getFieldDisplayName = function _getFieldDisplayName(field) {\n return field.alias || DictionaryResolver.getDriver().getAttribute(this.locale, field.name, field.name);\n};\n\n/**\n * Converts an array of params to an object with named properties.\n * Only works if the rule is configured with a paramNames array.\n * Returns the same params if it cannot convert it.\n */\nValidator.prototype._convertParamArrayToObj = function _convertParamArrayToObj(params, ruleName) {\n var paramNames = RuleContainer.getParamNames(ruleName);\n if (!paramNames) {\n return params;\n }\n if (isObject(params)) {\n // check if the object is either a config object or a single parameter that is an object.\n var hasKeys = paramNames.some(function (name) {\n return Object.keys(params).indexOf(name) !== -1;\n });\n // if it has some of the keys, return it as is.\n if (hasKeys) {\n return params;\n }\n // otherwise wrap the object in an array.\n params = [params];\n }\n\n // Reduce the paramsNames to a param object.\n return params.reduce(function (prev, value, idx) {\n prev[paramNames[idx]] = value;\n return prev;\n }, {});\n};\n\n/**\n * Tests a single input value against a rule.\n */\nValidator.prototype._test = function _test(field, value, rule) {\n var this$1 = this;\n var validator = RuleContainer.getValidatorMethod(rule.name);\n var params = Array.isArray(rule.params) ? toArray(rule.params) : rule.params;\n if (!params) {\n params = [];\n }\n var targetName = null;\n if (!validator || typeof validator !== 'function') {\n return Promise.reject(createError(\"No such validator '\" + rule.name + \"' exists.\"));\n }\n\n // has field dependencies.\n if (rule.options.hasTarget && field.dependencies) {\n var target = find(field.dependencies, function (d) {\n return d.name === rule.name;\n });\n if (target) {\n targetName = target.field.alias;\n params = [target.field.value].concat(params.slice(1));\n }\n } else if (rule.name === 'required' && field.rejectsFalse) {\n // invalidate false if no args were specified and the field rejects false by default.\n params = params.length ? params : [true];\n }\n if (rule.options.isDate) {\n var dateFormat = this._getDateFormat(field.rules);\n if (rule.name !== 'date_format') {\n params.push(dateFormat);\n }\n }\n var result = validator(value, this._convertParamArrayToObj(params, rule.name));\n\n // If it is a promise.\n if (isCallable(result.then)) {\n return result.then(function (values) {\n var allValid = true;\n var data = {};\n if (Array.isArray(values)) {\n allValid = values.every(function (t) {\n return isObject(t) ? t.valid : t;\n });\n } else {\n // Is a single object/boolean.\n allValid = isObject(values) ? values.valid : values;\n data = values.data;\n }\n return {\n valid: allValid,\n data: result.data,\n errors: allValid ? [] : [this$1._createFieldError(field, rule, data, targetName)]\n };\n });\n }\n if (!isObject(result)) {\n result = {\n valid: result,\n data: {}\n };\n }\n return {\n valid: result.valid,\n data: result.data,\n errors: result.valid ? [] : [this._createFieldError(field, rule, result.data, targetName)]\n };\n};\n\n/**\n * Merges a validator object into the RULES and Messages.\n */\nValidator._merge = function _merge(name, ref) {\n var validator = ref.validator;\n var options = ref.options;\n var paramNames = ref.paramNames;\n var validate = isCallable(validator) ? validator : validator.validate;\n if (validator.getMessage) {\n DictionaryResolver.getDriver().setMessage(Validator.locale, name, validator.getMessage);\n }\n RuleContainer.add(name, {\n validate: validate,\n options: options,\n paramNames: paramNames\n });\n};\n\n/**\n * Guards from extension violations.\n */\nValidator._guardExtend = function _guardExtend(name, validator) {\n if (isCallable(validator)) {\n return;\n }\n if (!isCallable(validator.validate)) {\n throw createError(\"Extension Error: The validator '\" + name + \"' must be a function or have a 'validate' method.\");\n }\n};\n\n/**\n * Creates a Field Error Object.\n */\nValidator.prototype._createFieldError = function _createFieldError(field, rule, data, targetName) {\n var this$1 = this;\n return {\n id: field.id,\n vmId: field.vmId,\n field: field.name,\n msg: this._formatErrorMessage(field, rule, data, targetName),\n rule: rule.name,\n scope: field.scope,\n regenerate: function regenerate() {\n return this$1._formatErrorMessage(field, rule, data, targetName);\n }\n };\n};\n\n/**\n * Tries different strategies to find a field.\n */\nValidator.prototype._resolveField = function _resolveField(name, scope, uid) {\n if (name[0] === '#') {\n return this.fields.findById(name.slice(1));\n }\n if (!isNullOrUndefined(scope)) {\n return this.fields.find({\n name: name,\n scope: scope,\n vmId: uid\n });\n }\n if (includes(name, '.')) {\n var ref = name.split('.');\n var fieldScope = ref[0];\n var fieldName = ref.slice(1);\n var field = this.fields.find({\n name: fieldName.join('.'),\n scope: fieldScope,\n vmId: uid\n });\n if (field) {\n return field;\n }\n }\n return this.fields.find({\n name: name,\n scope: null,\n vmId: uid\n });\n};\n\n/**\n * Handles when a field is not found.\n */\nValidator.prototype._handleFieldNotFound = function _handleFieldNotFound(name, scope) {\n var fullName = isNullOrUndefined(scope) ? name : \"\" + (!isNullOrUndefined(scope) ? scope + '.' : '') + name;\n return Promise.reject(createError(\"Validating a non-existent field: \\\"\" + fullName + \"\\\". Use \\\"attach()\\\" first.\"));\n};\n\n/**\n * Handles validation results.\n */\nValidator.prototype._handleValidationResults = function _handleValidationResults(results, vmId) {\n var this$1 = this;\n var matchers = results.map(function (result) {\n return {\n id: result.id\n };\n });\n this.errors.removeById(matchers.map(function (m) {\n return m.id;\n }));\n // remove by name and scope to remove any custom errors added.\n results.forEach(function (result) {\n this$1.errors.remove(result.field, result.scope, vmId);\n });\n var allErrors = results.reduce(function (prev, curr) {\n prev.push.apply(prev, curr.errors);\n return prev;\n }, []);\n this.errors.add(allErrors);\n\n // handle flags.\n this.fields.filter(matchers).forEach(function (field) {\n var result = find(results, function (r) {\n return r.id === field.id;\n });\n field.setFlags({\n pending: false,\n valid: result.valid,\n validated: true\n });\n });\n};\nValidator.prototype._shouldSkip = function _shouldSkip(field, value) {\n // field is configured to run through the pipeline regardless\n if (field.bails === false) {\n return false;\n }\n\n // disabled fields are skipped if useConstraintAttrs is enabled in config\n if (field.isDisabled && getConfig().useConstraintAttrs) {\n return true;\n }\n\n // skip if the field is not required and has an empty value.\n return !field.isRequired && (isNullOrUndefined(value) || value === '' || isEmptyArray(value));\n};\nValidator.prototype._shouldBail = function _shouldBail(field) {\n // if the field was configured explicitly.\n if (field.bails !== undefined) {\n return field.bails;\n }\n return this.fastExit;\n};\n\n/**\n * Starts the validation process.\n */\nValidator.prototype._validate = function _validate(field, value, ref) {\n var this$1 = this;\n if (ref === void 0) ref = {};\n var initial = ref.initial;\n var requireRules = Object.keys(field.rules).filter(RuleContainer.isRequireRule);\n field.forceRequired = false;\n requireRules.forEach(function (rule) {\n var ruleOptions = RuleContainer.getOptions(rule);\n var result = this$1._test(field, value, {\n name: rule,\n params: field.rules[rule],\n options: ruleOptions\n });\n if (isCallable(result.then)) {\n throw createError('Require rules cannot be async');\n }\n if (!isObject(result)) {\n throw createError('Require rules has to return an object (see docs)');\n }\n if (result.data.required === true) {\n field.forceRequired = true;\n }\n });\n if (this._shouldSkip(field, value)) {\n return Promise.resolve({\n valid: true,\n id: field.id,\n field: field.name,\n scope: field.scope,\n errors: []\n });\n }\n var promises = [];\n var errors = [];\n var isExitEarly = false;\n if (isCallable(field.checkValueChanged)) {\n field.flags.changed = field.checkValueChanged();\n }\n\n // use of '.some()' is to break iteration in middle by returning true\n Object.keys(field.rules).filter(function (rule) {\n if (!initial || !RuleContainer.has(rule)) {\n return true;\n }\n return RuleContainer.isImmediate(rule);\n }).some(function (rule) {\n var ruleOptions = RuleContainer.getOptions(rule);\n var result = this$1._test(field, value, {\n name: rule,\n params: field.rules[rule],\n options: ruleOptions\n });\n if (isCallable(result.then)) {\n promises.push(result);\n } else if (!result.valid && this$1._shouldBail(field)) {\n errors.push.apply(errors, result.errors);\n isExitEarly = true;\n } else {\n // promisify the result.\n promises.push(new Promise(function (resolve) {\n return resolve(result);\n }));\n }\n return isExitEarly;\n });\n if (isExitEarly) {\n return Promise.resolve({\n valid: false,\n errors: errors,\n id: field.id,\n field: field.name,\n scope: field.scope\n });\n }\n return Promise.all(promises).then(function (results) {\n return results.reduce(function (prev, v) {\n var ref;\n if (!v.valid) {\n (ref = prev.errors).push.apply(ref, v.errors);\n }\n prev.valid = prev.valid && v.valid;\n return prev;\n }, {\n valid: true,\n errors: errors,\n id: field.id,\n field: field.name,\n scope: field.scope\n });\n });\n};\nObject.defineProperties(Validator.prototype, prototypeAccessors$4);\nObject.defineProperties(Validator, staticAccessors$1);\n\n// \n\nvar normalizeValue = function normalizeValue(value) {\n if (isObject(value)) {\n return Object.keys(value).reduce(function (prev, key) {\n prev[key] = normalizeValue(value[key]);\n return prev;\n }, {});\n }\n if (isCallable(value)) {\n return value('{0}', ['{1}', '{2}', '{3}']);\n }\n return value;\n};\nvar normalizeFormat = function normalizeFormat(locale) {\n // normalize messages\n var dictionary = {};\n if (locale.messages) {\n dictionary.messages = normalizeValue(locale.messages);\n }\n if (locale.custom) {\n dictionary.custom = normalizeValue(locale.custom);\n }\n if (locale.attributes) {\n dictionary.attributes = locale.attributes;\n }\n if (!isNullOrUndefined(locale.dateFormat)) {\n dictionary.dateFormat = locale.dateFormat;\n }\n return dictionary;\n};\nvar I18nDictionary = function I18nDictionary(i18n, rootKey) {\n this.i18n = i18n;\n this.rootKey = rootKey;\n};\nvar prototypeAccessors$5 = {\n locale: {\n configurable: true\n }\n};\nprototypeAccessors$5.locale.get = function () {\n return this.i18n.locale;\n};\nprototypeAccessors$5.locale.set = function (value) {\n warn('Cannot set locale from the validator when using vue-i18n, use i18n.locale setter instead');\n};\nI18nDictionary.prototype.getDateFormat = function getDateFormat(locale) {\n return this.i18n.getDateTimeFormat(locale || this.locale);\n};\nI18nDictionary.prototype.setDateFormat = function setDateFormat(locale, value) {\n this.i18n.setDateTimeFormat(locale || this.locale, value);\n};\nI18nDictionary.prototype.getMessage = function getMessage(_, key, data) {\n var path = this.rootKey + \".messages.\" + key;\n var dataOptions = data;\n if (Array.isArray(data)) {\n dataOptions = [].concat.apply([], data);\n }\n if (this.i18n.te(path)) {\n return this.i18n.t(path, dataOptions);\n }\n\n // fallback to the fallback message\n if (this.i18n.te(path, this.i18n.fallbackLocale)) {\n return this.i18n.t(path, this.i18n.fallbackLocale, dataOptions);\n }\n\n // fallback to the root message\n return this.i18n.t(this.rootKey + \".messages._default\", dataOptions);\n};\nI18nDictionary.prototype.getAttribute = function getAttribute(_, key, fallback) {\n if (fallback === void 0) fallback = '';\n var path = this.rootKey + \".attributes.\" + key;\n if (this.i18n.te(path)) {\n return this.i18n.t(path);\n }\n return fallback;\n};\nI18nDictionary.prototype.getFieldMessage = function getFieldMessage(_, field, key, data) {\n var path = this.rootKey + \".custom.\" + field + \".\" + key;\n if (this.i18n.te(path)) {\n return this.i18n.t(path, data);\n }\n return this.getMessage(_, key, data);\n};\nI18nDictionary.prototype.merge = function merge$1(dictionary) {\n var this$1 = this;\n Object.keys(dictionary).forEach(function (localeKey) {\n var obj;\n\n // i18n doesn't deep merge\n // first clone the existing locale (avoid mutations to locale)\n var clone = merge({}, getPath(localeKey + \".\" + this$1.rootKey, this$1.i18n.messages, {}));\n // Merge cloned locale with new one\n var locale = merge(clone, normalizeFormat(dictionary[localeKey]));\n this$1.i18n.mergeLocaleMessage(localeKey, (obj = {}, obj[this$1.rootKey] = locale, obj));\n if (locale.dateFormat) {\n this$1.i18n.setDateTimeFormat(localeKey, locale.dateFormat);\n }\n });\n};\nI18nDictionary.prototype.setMessage = function setMessage(locale, key, value) {\n var obj, obj$1;\n this.merge((obj$1 = {}, obj$1[locale] = {\n messages: (obj = {}, obj[key] = value, obj)\n }, obj$1));\n};\nI18nDictionary.prototype.setAttribute = function setAttribute(locale, key, value) {\n var obj, obj$1;\n this.merge((obj$1 = {}, obj$1[locale] = {\n attributes: (obj = {}, obj[key] = value, obj)\n }, obj$1));\n};\nObject.defineProperties(I18nDictionary.prototype, prototypeAccessors$5);\nvar aggressive = function aggressive() {\n return {\n on: ['input']\n };\n};\nvar lazy = function lazy() {\n return {\n on: ['change']\n };\n};\nvar eager = function eager(ref) {\n var errors = ref.errors;\n if (errors.length) {\n return {\n on: ['input']\n };\n }\n return {\n on: ['change', 'blur']\n };\n};\nvar passive = function passive() {\n return {\n on: []\n };\n};\nvar modes = {\n aggressive: aggressive,\n eager: eager,\n passive: passive,\n lazy: lazy\n};\n\n// \n\nvar Vue;\nvar pendingPlugins;\nvar pluginInstance;\nvar VeeValidate$1 = function VeeValidate(config, _Vue) {\n this.configure(config);\n pluginInstance = this;\n if (_Vue) {\n Vue = _Vue;\n }\n this._validator = setValidator(new Validator(null, {\n fastExit: config && config.fastExit\n }, this));\n this._initVM(this.config);\n this._initI18n(this.config);\n};\nvar prototypeAccessors$6 = {\n i18nDriver: {\n configurable: true\n },\n config: {\n configurable: true\n }\n};\nvar staticAccessors$2 = {\n i18nDriver: {\n configurable: true\n },\n config: {\n configurable: true\n }\n};\nVeeValidate$1.setI18nDriver = function setI18nDriver(driver, instance) {\n DictionaryResolver.setDriver(driver, instance);\n};\nVeeValidate$1.configure = function configure(cfg) {\n setConfig(cfg);\n};\nVeeValidate$1.setMode = function setMode(mode, implementation) {\n setConfig({\n mode: mode\n });\n if (!implementation) {\n return;\n }\n if (!isCallable(implementation)) {\n throw new Error('A mode implementation must be a function');\n }\n modes[mode] = implementation;\n};\nVeeValidate$1.use = function use(plugin, options) {\n if (options === void 0) options = {};\n if (!isCallable(plugin)) {\n return warn('The plugin must be a callable function');\n }\n\n // Don't install plugins until vee-validate is installed.\n if (!pluginInstance) {\n if (!pendingPlugins) {\n pendingPlugins = [];\n }\n pendingPlugins.push({\n plugin: plugin,\n options: options\n });\n return;\n }\n plugin({\n Validator: Validator,\n ErrorBag: ErrorBag,\n Rules: Validator.rules\n }, options);\n};\nVeeValidate$1.install = function install(_Vue, opts) {\n if (Vue && _Vue === Vue) {\n if (process.env.NODE_ENV !== 'production') {\n warn('already installed, Vue.use(VeeValidate) should only be called once.');\n }\n return;\n }\n Vue = _Vue;\n pluginInstance = new VeeValidate$1(opts);\n // inject the plugin container statically into the validator class\n Validator.$vee = pluginInstance;\n detectPassiveSupport();\n Vue.mixin(mixin);\n Vue.directive('validate', directive);\n if (pendingPlugins) {\n pendingPlugins.forEach(function (ref) {\n var plugin = ref.plugin;\n var options = ref.options;\n VeeValidate$1.use(plugin, options);\n });\n pendingPlugins = null;\n }\n};\nprototypeAccessors$6.i18nDriver.get = function () {\n return DictionaryResolver.getDriver();\n};\nstaticAccessors$2.i18nDriver.get = function () {\n return DictionaryResolver.getDriver();\n};\nprototypeAccessors$6.config.get = function () {\n return getConfig();\n};\nstaticAccessors$2.config.get = function () {\n return getConfig();\n};\nVeeValidate$1.prototype._initVM = function _initVM(config) {\n var this$1 = this;\n this._vm = new Vue({\n data: function data() {\n return {\n errors: this$1._validator.errors,\n fields: this$1._validator.fields\n };\n }\n });\n};\nVeeValidate$1.prototype._initI18n = function _initI18n(config) {\n var this$1 = this;\n var dictionary = config.dictionary;\n var i18n = config.i18n;\n var i18nRootKey = config.i18nRootKey;\n var locale = config.locale;\n var onLocaleChanged = function onLocaleChanged() {\n if (dictionary) {\n this$1.i18nDriver.merge(dictionary);\n }\n this$1._validator.errors.regenerate();\n };\n\n // i18 is being used for localization.\n if (i18n) {\n VeeValidate$1.setI18nDriver('i18n', new I18nDictionary(i18n, i18nRootKey));\n i18n._vm.$watch('locale', onLocaleChanged);\n } else if (typeof window !== 'undefined') {\n this._vm.$on('localeChanged', onLocaleChanged);\n }\n if (dictionary) {\n this.i18nDriver.merge(dictionary);\n }\n if (locale && !i18n) {\n this._validator.localize(locale);\n }\n};\nVeeValidate$1.prototype.configure = function configure(cfg) {\n setConfig(cfg);\n};\nObject.defineProperties(VeeValidate$1.prototype, prototypeAccessors$6);\nObject.defineProperties(VeeValidate$1, staticAccessors$2);\nVeeValidate$1.mixin = mixin;\nVeeValidate$1.directive = directive;\nVeeValidate$1.Validator = Validator;\nVeeValidate$1.ErrorBag = ErrorBag;\n\n/**\n * Formates file size.\n *\n * @param {Number|String} size\n */\nvar formatFileSize = function formatFileSize(size) {\n var units = ['Byte', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n var threshold = 1024;\n size = Number(size) * threshold;\n var i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(threshold));\n return (size / Math.pow(threshold, i)).toFixed(2) * 1 + \" \" + units[i];\n};\n\n/**\n * Checks if vee-validate is defined globally.\n */\nvar isDefinedGlobally = function isDefinedGlobally() {\n return typeof VeeValidate !== 'undefined';\n};\nvar obj;\nvar messages = {\n _default: function _default(field) {\n return \"The \" + field + \" value is not valid\";\n },\n after: function after(field, ref) {\n var target = ref[0];\n var inclusion = ref[1];\n return \"The \" + field + \" must be after \" + (inclusion ? 'or equal to ' : '') + target;\n },\n alpha: function alpha(field) {\n return \"The \" + field + \" field may only contain alphabetic characters\";\n },\n alpha_dash: function alpha_dash(field) {\n return \"The \" + field + \" field may contain alpha-numeric characters as well as dashes and underscores\";\n },\n alpha_num: function alpha_num(field) {\n return \"The \" + field + \" field may only contain alpha-numeric characters\";\n },\n alpha_spaces: function alpha_spaces(field) {\n return \"The \" + field + \" field may only contain alphabetic characters as well as spaces\";\n },\n before: function before(field, ref) {\n var target = ref[0];\n var inclusion = ref[1];\n return \"The \" + field + \" must be before \" + (inclusion ? 'or equal to ' : '') + target;\n },\n between: function between(field, ref) {\n var min = ref[0];\n var max = ref[1];\n return \"The \" + field + \" field must be between \" + min + \" and \" + max;\n },\n confirmed: function confirmed(field) {\n return \"The \" + field + \" confirmation does not match\";\n },\n credit_card: function credit_card(field) {\n return \"The \" + field + \" field is invalid\";\n },\n date_between: function date_between(field, ref) {\n var min = ref[0];\n var max = ref[1];\n return \"The \" + field + \" must be between \" + min + \" and \" + max;\n },\n date_format: function date_format(field, ref) {\n var format = ref[0];\n return \"The \" + field + \" must be in the format \" + format;\n },\n decimal: function decimal(field, ref) {\n if (ref === void 0) ref = [];\n var decimals = ref[0];\n if (decimals === void 0) decimals = '*';\n return \"The \" + field + \" field must be numeric and may contain\" + (!decimals || decimals === '*' ? '' : ' ' + decimals) + \" decimal points\";\n },\n digits: function digits(field, ref) {\n var length = ref[0];\n return \"The \" + field + \" field must be numeric and contains exactly \" + length + \" digits\";\n },\n dimensions: function dimensions(field, ref) {\n var width = ref[0];\n var height = ref[1];\n return \"The \" + field + \" field must be \" + width + \" pixels by \" + height + \" pixels\";\n },\n email: function email(field) {\n return \"The \" + field + \" field must be a valid email\";\n },\n excluded: function excluded(field) {\n return \"The \" + field + \" field must be a valid value\";\n },\n ext: function ext(field) {\n return \"The \" + field + \" field must be a valid file\";\n },\n image: function image(field) {\n return \"The \" + field + \" field must be an image\";\n },\n included: function included(field) {\n return \"The \" + field + \" field must be a valid value\";\n },\n integer: function integer(field) {\n return \"The \" + field + \" field must be an integer\";\n },\n ip: function ip(field) {\n return \"The \" + field + \" field must be a valid ip address\";\n },\n ip_or_fqdn: function ip_or_fqdn(field) {\n return \"The \" + field + \" field must be a valid ip address or FQDN\";\n },\n length: function length(field, ref) {\n var length = ref[0];\n var max = ref[1];\n if (max) {\n return \"The \" + field + \" length must be between \" + length + \" and \" + max;\n }\n return \"The \" + field + \" length must be \" + length;\n },\n max: function max(field, ref) {\n var length = ref[0];\n return \"The \" + field + \" field may not be greater than \" + length + \" characters\";\n },\n max_value: function max_value(field, ref) {\n var max = ref[0];\n return \"The \" + field + \" field must be \" + max + \" or less\";\n },\n mimes: function mimes(field) {\n return \"The \" + field + \" field must have a valid file type\";\n },\n min: function min(field, ref) {\n var length = ref[0];\n return \"The \" + field + \" field must be at least \" + length + \" characters\";\n },\n min_value: function min_value(field, ref) {\n var min = ref[0];\n return \"The \" + field + \" field must be \" + min + \" or more\";\n },\n numeric: function numeric(field) {\n return \"The \" + field + \" field may only contain numeric characters\";\n },\n regex: function regex(field) {\n return \"The \" + field + \" field format is invalid\";\n },\n required: function required(field) {\n return \"The \" + field + \" field is required\";\n },\n required_if: function required_if(field, ref) {\n var target = ref[0];\n return \"The \" + field + \" field is required when the \" + target + \" field has this value\";\n },\n size: function size(field, ref) {\n var size = ref[0];\n return \"The \" + field + \" size must be less than \" + formatFileSize(size);\n },\n url: function url(field) {\n return \"The \" + field + \" field is not a valid URL\";\n }\n};\nvar locale = {\n name: 'en',\n messages: messages,\n attributes: {}\n};\nif (isDefinedGlobally()) {\n // eslint-disable-next-line\n VeeValidate.Validator.localize((obj = {}, obj[locale.name] = locale, obj));\n}\nfunction toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds(dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = date.getTimezoneOffset();\n date.setSeconds(0, 0);\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE;\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset;\n}\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE$1 = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\nvar patterns = {\n dateTimeDelimeter: /[T ]/,\n plainTime: /:/,\n timeZoneDelimeter: /[Z ]/i,\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [/^([+-]\\d{2})$/,\n // 0 additional digits\n /^([+-]\\d{3})$/,\n // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n ],\n\n YYYY: /^(\\d{4})/,\n YYYYY: [/^([+-]\\d{4})/,\n // 0 additional digits\n /^([+-]\\d{5})/,\n // 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 HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\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 * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} 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 */\nfunction toDate(argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n if (argument === null) {\n return new Date(NaN);\n }\n var options = dirtyOptions || {};\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(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 || _typeof2(argument) === 'object' && Object.prototype.toString.call(argument) === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || Object.prototype.toString.call(argument) === '[object Number]') {\n return new Date(argument);\n } else if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n var year = parseYearResult.year;\n var restDateString = parseYearResult.restDateString;\n var date = parseDate(restDateString, year);\n if (isNaN(date)) {\n return new Date(NaN);\n }\n if (date) {\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n // get offset accurate to hour in timezones that change offset\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time));\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset));\n }\n return new Date(timestamp + time + offset);\n } else {\n return new Date(NaN);\n }\n}\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimeter);\n var timeString;\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 if (patterns.timeZoneDelimeter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimeter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\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 return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits];\n var patternYYYYY = patterns.YYYYY[additionalDigits];\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}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null;\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 if (!validateDate(year, month)) {\n return new Date(NaN);\n }\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 if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\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 if (!validateDate(year, month, day)) {\n return new Date(NaN);\n }\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 if (!validateWeekDate(year, week)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(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 if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n }\n\n // Invalid ISO-formatted date\n return null;\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 if (!validateTime(hours)) {\n return NaN;\n }\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 if (!validateTime(hours, minutes)) {\n return NaN;\n }\n return hours % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE$1;\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 if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE$1 + seconds * 1000;\n }\n\n // Invalid ISO-formatted time\n return null;\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 var hours;\n\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString);\n if (token) {\n hours = parseInt(token[2], 10);\n if (!validateTimezone()) {\n return NaN;\n }\n absoluteOffset = hours * MILLISECONDS_IN_HOUR;\n return token[1] === '+' ? -absoluteOffset : absoluteOffset;\n }\n\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString);\n if (token) {\n hours = parseInt(token[2], 10);\n var minutes = parseInt(token[3], 10);\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n absoluteOffset = hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE$1;\n return token[1] === '+' ? -absoluteOffset : absoluteOffset;\n }\n return 0;\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n week = week || 0;\n day = day || 0;\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 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\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n if (month < 0 || month > 11) {\n return false;\n }\n if (date != null) {\n if (date < 1) {\n return false;\n }\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false;\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false;\n }\n }\n return true;\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n if (dayOfYear < 1) {\n return false;\n }\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && dayOfYear > 366) {\n return false;\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false;\n }\n return true;\n}\nfunction validateWeekDate(year, week, day) {\n if (week < 0 || week > 52) {\n return false;\n }\n if (day != null && (day < 0 || day > 6)) {\n return false;\n }\n return true;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours != null && (hours < 0 || hours >= 25)) {\n return false;\n }\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false;\n }\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false;\n }\n return true;\n}\nfunction validateTimezone(hours, minutes) {\n if (minutes != null && (minutes < 0 || minutes > 59)) {\n return false;\n }\n return true;\n}\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @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 */\nfunction addMilliseconds(dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n var timestamp = toDate(dirtyDate, dirtyOptions).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @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 */\nfunction isValid(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n var date = toDate(dirtyDate, dirtyOptions);\n return !isNaN(date);\n}\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nfunction formatDistance(token, count, options) {\n options = options || {};\n var result;\n 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 if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n}\nfunction buildFormatLongFn(args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n \"long\": 'MMMM do, y',\n medium: 'MMM d, y',\n \"short\": 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n \"long\": 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n \"short\": 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n \"long\": \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n \"short\": '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nvar formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nfunction formatRelative(token, date, baseDate, options) {\n return formatRelativeLocale[token];\n}\nfunction buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n valuesArray = args.formattingValues[width] || args.formattingValues[args.defaultFormattingWidth];\n } else {\n valuesArray = args.values[width] || args.values[args.defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index];\n };\n}\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\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 monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n \"short\": ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\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 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\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}\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaulFormattingWidth: 'wide'\n })\n};\nfunction buildMatchPatternFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) {\n return null;\n }\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\nfunction buildMatchFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var value;\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = parsePatterns.findIndex(function (pattern) {\n return pattern.test(string);\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(string);\n });\n }\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n}\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n \"short\": /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale$1 = {\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};\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\nfunction getUTCDayOfYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\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\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\nfunction startOfUTCISOWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n var weekStartsOn = 1;\n var date = toDate(dirtyDate, dirtyOptions);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\n\n// 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\nfunction getUTCISOWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions);\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 if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// 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\nfunction startOfUTCISOWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\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}\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\nfunction getUTCISOWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\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\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\nfunction startOfUTCWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);\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 var date = toDate(dirtyDate, options);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\n\n// 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\nfunction getUTCWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// 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\nfunction startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}\nvar MILLISECONDS_IN_WEEK$1 = 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\nfunction getUTCWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n var date = toDate(dirtyDate, dirtyOptions);\n var diff = startOfUTCWeek(date, dirtyOptions).getTime() - startOfUTCWeekYear(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) + 1;\n}\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize, options) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n\n // Two digit year\n if (token === 'yy') {\n var twoDigitYear = year % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'yo') {\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(year, token.length);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token, localize, options) {\n var isoWeekYear = getUTCISOWeekYear(date, options);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token, localize, options) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize, options) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'MM':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize, options) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize, options) {\n var isoWeek = getUTCISOWeek(date, options);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize, options) {\n var dayOfMonth = date.getUTCDate();\n if (token === 'do') {\n return localize.ordinalNumber(dayOfMonth, {\n unit: 'date'\n });\n }\n return addLeadingZeros(dayOfMonth, token.length);\n },\n // Day of year\n D: function D(date, token, localize, options) {\n var dayOfYear = getUTCDayOfYear(date, options);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numberical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize, options) {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) {\n hours = 12;\n }\n if (token === 'ho') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [0-23]\n H: function H(date, token, localize, options) {\n var hours = date.getUTCHours();\n if (token === 'Ho') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [0-11]\n K: function K(date, token, localize, options) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize, options) {\n var hours = date.getUTCHours();\n if (hours === 0) {\n hours = 24;\n }\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize, options) {\n var minutes = date.getUTCMinutes();\n if (token === 'mo') {\n return localize.ordinalNumber(minutes, {\n unit: 'minute'\n });\n }\n return addLeadingZeros(minutes, token.length);\n },\n // Second\n s: function s(date, token, localize, options) {\n var seconds = date.getUTCSeconds();\n if (token === 'so') {\n return localize.ordinalNumber(seconds, {\n unit: 'second'\n });\n }\n return addLeadingZeros(seconds, token.length);\n },\n // Fraction of second\n S: function S(date, token, localize, options) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, numberOfDigits);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}\nfunction formatTimezone(offset, dirtyDelimeter) {\n var delimeter = dirtyDelimeter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimeter + minutes;\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimeter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimeter);\n}\nfunction formatTimezoneShort(offset, dirtyDelimeter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimeter = dirtyDelimeter || '';\n return sign + String(hours) + delimeter + addLeadingZeros(minutes, 2);\n}\nfunction dateLongFormatter(pattern, formatLong, options) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\nfunction timeLongFormatter(pattern, formatLong, options) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\nfunction dateTimeLongFormatter(pattern, formatLong, options) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\n\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds 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 milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds(dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount, dirtyOptions);\n}\nvar protectedTokens = ['D', 'DD', 'YY', 'YYYY'];\nfunction isProtectedToken(token) {\n return protectedTokens.indexOf(token) !== -1;\n}\nfunction throwProtectedError(token) {\n throw new RangeError('`options.awareOfUnicodeTokens` must be set to `true` to use `' + token + '` token; see: https://git.io/fxCyr');\n}\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'(.*?)'?$/;\nvar doubleQuoteRegExp = /''/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. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\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 {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\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 * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\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 *\n * @example\n * // Escape string by single quote characters:\n * var result = format(\n * new Date(2014, 6, 2, 15),\n * \"h 'o''clock'\"\n * )\n * //=> \"3 o'clock\"\n */\nfunction format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || locale$1;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(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 if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate, options);\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 = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset, options);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!options.awareOfUnicodeTokens && isProtectedToken(substring)) {\n throwProtectedError(substring);\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|String|Number} date - the date that should be after the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\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 first date is after the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nfunction isAfter(dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n var date = toDate(dirtyDate, dirtyOptions);\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n return date.getTime() > dateToCompare.getTime();\n}\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|String|Number} date - the date that should be before the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\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 first date is before the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nfunction isBefore(dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n var date = toDate(dirtyDate, dirtyOptions);\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n return date.getTime() < dateToCompare.getTime();\n}\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates 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 {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0)\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nfunction isEqual$1(dirtyLeftDate, dirtyRightDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n var dateLeft = toDate(dirtyLeftDate, dirtyOptions);\n var dateRight = toDate(dirtyRightDate, dirtyOptions);\n return dateLeft.getTime() === dateRight.getTime();\n}\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\nfunction setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);\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 var date = toDate(dirtyDate, dirtyOptions);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// 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\nfunction setUTCWeek(dirtyDate, dirtyWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n var date = toDate(dirtyDate, dirtyOptions);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, dirtyOptions) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}\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\nfunction setUTCISODay(dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n var day = toInteger(dirtyDay);\n if (day % 7 === 0) {\n day = day - 7;\n }\n var weekStartsOn = 1;\n var date = toDate(dirtyDate, dirtyOptions);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// 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\nfunction setUTCISOWeek(dirtyDate, dirtyISOWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n var date = toDate(dirtyDate, dirtyOptions);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date, dirtyOptions) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}\nvar MILLISECONDS_IN_HOUR$1 = 3600000;\nvar MILLISECONDS_IN_MINUTE$2 = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n if (!matchResult) {\n return null;\n }\n var value = parseInt(matchResult[0], 10);\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n };\n}\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern);\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n };\n }\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * MILLISECONDS_IN_HOUR$1 + minutes * MILLISECONDS_IN_MINUTE$2 + seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n };\n}\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4;\n case 'evening':\n return 17;\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n return isCommonEra ? result : 1 - result;\n}\nvar DAYS_IN_MONTH$1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR$1 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// User for validation\nfunction isLeapYearIndex$1(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function parse(string, token, match, options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n // A, B\n case 'GGGGG':\n return match.era(string, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(string, {\n width: 'wide'\n }) || match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n }\n },\n set: function set(date, value, options) {\n // Sets year 10 BC if BC, or 10 AC if AC\n date.setUTCFullYear(value === 1 ? 10 : -9, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n },\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n priority: 130,\n parse: function parse(string, token, match, options) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback);\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function validate(date, value, options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function set(date, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n var year = currentYear > 0 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n },\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function parse(string, token, match, options) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback);\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function validate(date, value, options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function set(date, value, options) {\n var currentYear = date.getUTCFullYear();\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n var year = currentYear > 0 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n },\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function parse(string, token, match, options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string);\n }\n return parseNDigitsSigned(token.length, string);\n },\n set: function set(date, value, options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n }\n },\n // Extended year\n u: {\n priority: 130,\n parse: function parse(string, token, match, options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string);\n }\n return parseNDigitsSigned(token.length, string);\n },\n set: function set(date, value, options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n },\n // Quarter\n Q: {\n priority: 120,\n parse: function parse(string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function validate(date, value, options) {\n return value >= 1 && value <= 4;\n },\n set: function set(date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n },\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function parse(string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function validate(date, value, options) {\n return value >= 1 && value <= 4;\n },\n set: function set(date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n },\n // Month\n M: {\n priority: 110,\n parse: function parse(string, token, match, options) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n case 'MM':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function validate(date, value, options) {\n return value >= 0 && value <= 11;\n },\n set: function set(date, value, options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n },\n // Stand-alone month\n L: {\n priority: 110,\n parse: function parse(string, token, match, options) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n case 'LL':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function validate(date, value, options) {\n return value >= 0 && value <= 11;\n },\n set: function set(date, value, options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n },\n // Local week of year\n w: {\n priority: 100,\n parse: function parse(string, token, match, options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string);\n case 'wo':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(date, value, options) {\n return value >= 1 && value <= 53;\n },\n set: function set(date, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n }\n },\n // ISO week of year\n I: {\n priority: 100,\n parse: function parse(string, token, match, options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string);\n case 'Io':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(date, value, options) {\n return value >= 1 && value <= 53;\n },\n set: function set(date, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n }\n },\n // Day of the month\n d: {\n priority: 90,\n parse: function parse(string, token, match, options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string);\n case 'do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(date, value, options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex$1(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR$1[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH$1[month];\n }\n },\n set: function set(date, value, options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n },\n // Day of year\n D: {\n priority: 90,\n parse: function parse(string, token, match, options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string);\n case 'Do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(date, value, options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex$1(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n },\n set: function set(date, value, options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n },\n // Day of week\n E: {\n priority: 90,\n parse: function parse(string, token, match, options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function validate(date, value, options) {\n return value >= 0 && value <= 6;\n },\n set: function set(date, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n },\n // Local day of week\n e: {\n priority: 90,\n parse: function parse(string, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n case 'eee':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function validate(date, value, options) {\n return value >= 0 && value <= 6;\n },\n set: function set(date, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n },\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function parse(string, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n case 'ccc':\n return match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function validate(date, value, options) {\n return value >= 0 && value <= 6;\n },\n set: function set(date, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n },\n // ISO day of week\n i: {\n priority: 90,\n parse: function parse(string, token, match, options) {\n var valueCallback = function valueCallback(value) {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, string);\n // 2nd\n case 'io':\n return match.ordinalNumber(string, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // T\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tu\n case 'iiiiii':\n return match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tuesday\n case 'iiii':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n }\n },\n validate: function validate(date, value, options) {\n return value >= 1 && value <= 7;\n },\n set: function set(date, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n },\n // AM or PM\n a: {\n priority: 80,\n parse: function parse(string, token, match, options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function set(date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n },\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function parse(string, token, match, options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function set(date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function parse(string, token, match, options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function set(date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n },\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function parse(string, token, match, options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string);\n case 'ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(date, value, options) {\n return value >= 1 && value <= 12;\n },\n set: function set(date, value, options) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n },\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function parse(string, token, match, options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string);\n case 'Ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(date, value, options) {\n return value >= 0 && value <= 23;\n },\n set: function set(date, value, options) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n }\n },\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function parse(string, token, match, options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string);\n case 'Ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(date, value, options) {\n return value >= 0 && value <= 11;\n },\n set: function set(date, value, options) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n },\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function parse(string, token, match, options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string);\n case 'ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(date, value, options) {\n return value >= 1 && value <= 24;\n },\n set: function set(date, value, options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n }\n },\n // Minute\n m: {\n priority: 60,\n parse: function parse(string, token, match, options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string);\n case 'mo':\n return match.ordinalNumber(string, {\n unit: 'minute'\n });\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(date, value, options) {\n return value >= 0 && value <= 59;\n },\n set: function set(date, value, options) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n }\n },\n // Second\n s: {\n priority: 50,\n parse: function parse(string, token, match, options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string);\n case 'so':\n return match.ordinalNumber(string, {\n unit: 'second'\n });\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(date, value, options) {\n return value >= 0 && value <= 59;\n },\n set: function set(date, value, options) {\n date.setUTCSeconds(value, 0);\n return date;\n }\n },\n // Fraction of second\n S: {\n priority: 40,\n parse: function parse(string, token, match, options) {\n var valueCallback = function valueCallback(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n return parseNDigits(token.length, string, valueCallback);\n },\n set: function set(date, value, options) {\n date.setUTCMilliseconds(value);\n return date;\n }\n },\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 20,\n parse: function parse(string, token, match, options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string);\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function set(date, value, options) {\n return new Date(date.getTime() - value);\n }\n },\n // Timezone (ISO-8601)\n x: {\n priority: 20,\n parse: function parse(string, token, match, options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string);\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function set(date, value, options) {\n return new Date(date.getTime() - value);\n }\n },\n // Seconds timestamp\n t: {\n priority: 10,\n parse: function parse(string, token, match, options) {\n return parseAnyDigitsSigned(string);\n },\n set: function set(date, value, options) {\n return new Date(value * 1000);\n }\n },\n // Milliseconds timestamp\n T: {\n priority: 10,\n parse: function parse(string, token, match, options) {\n return parseAnyDigitsSigned(string);\n },\n set: function set(date, value, options) {\n return new Date(value);\n }\n }\n};\nvar TIMEZONE_UNIT_PRIORITY = 20;\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp$1 = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp$1 = /^'(.*?)'?$/;\nvar doubleQuoteRegExp$1 = /''/g;\nvar notWhitespaceRegExp = /\\S/;\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 string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 6 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 6 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | 40 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 20 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 20 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Seconds timestamp | 10 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Milliseconds timestamp | 10 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `baseDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n *\n * 6. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `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 * 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 - defines values missing from the parsed dateString\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 * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\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.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\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 Esperanto locale in the context of 2010 year:\n * import eo 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: eo}\n * )\n * //=> Sun Feb 28 2010 00:00:00\n */\nfunction parse(dirtyDateString, dirtyFormatString, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 3) {\n throw new TypeError('3 arguments required, but only ' + arguments.length + ' present');\n }\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n var locale = options.locale || locale$1;\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(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 if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBaseDate, options);\n } else {\n return new Date(NaN);\n }\n }\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\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 var i;\n var tokens = formatString.match(formattingTokensRegExp$1);\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (!options.awareOfUnicodeTokens && isProtectedToken(token)) {\n throwProtectedError(token);\n }\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);\n if (!parseResult) {\n return new Date(NaN);\n }\n setters.push({\n priority: parser.priority,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n dateString = parseResult.rest;\n } else {\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString$1(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN);\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).reverse();\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyBaseDate, options);\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 = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n return new Date(NaN);\n }\n utcDate = setter.set(utcDate, setter.value, subFnOptions);\n }\n return utcDate;\n}\nfunction dateToSystemTimezone(date) {\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n}\nfunction cleanEscapedString$1(input) {\n return input.match(escapedStringRegExp$1)[1].replace(doubleQuoteRegExp$1, \"'\");\n}\n\n// \n\n/**\n * Custom parse behavior on top of date-fns parse function.\n */\nfunction parseDate$1(date, format$1) {\n if (typeof date !== 'string') {\n return isValid(date) ? date : null;\n }\n var parsed = parse(date, format$1, new Date());\n\n // if date is not valid or the formatted output after parsing does not match\n // the string value passed in (avoids overflows)\n if (!isValid(parsed) || format(parsed, format$1) !== date) {\n return null;\n }\n return parsed;\n}\nvar afterValidator = function afterValidator(value, ref) {\n if (ref === void 0) ref = {};\n var targetValue = ref.targetValue;\n var inclusion = ref.inclusion;\n if (inclusion === void 0) inclusion = false;\n var format = ref.format;\n if (typeof format === 'undefined') {\n format = inclusion;\n inclusion = false;\n }\n value = parseDate$1(value, format);\n targetValue = parseDate$1(targetValue, format);\n\n // if either is not valid.\n if (!value || !targetValue) {\n return false;\n }\n return isAfter(value, targetValue) || inclusion && isEqual$1(value, targetValue);\n};\nvar options = {\n hasTarget: true,\n isDate: true\n};\n\n// required to convert from a list of array values to an object.\nvar paramNames = ['targetValue', 'inclusion', 'format'];\nvar after = {\n validate: afterValidator,\n options: options,\n paramNames: paramNames\n};\n\n/**\n * Some Alpha Regex helpers.\n * https://github.com/chriso/validator.js/blob/master/src/lib/alpha.js\n */\n\nvar alpha = {\n en: /^[A-Z]*$/i,\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\n da: /^[A-ZÆØÅ]*$/i,\n de: /^[A-ZÄÖÜß]*$/i,\n es: /^[A-ZÁÉÍÑÓÚÜ]*$/i,\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\n it: /^[A-Z\\xC0-\\xFF]*$/i,\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,\n nl: /^[A-ZÉËÏÓÖÜ]*$/i,\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\n ru: /^[А-ЯЁ]*$/i,\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\n sr: /^[A-ZČĆŽŠĐ]*$/i,\n sv: /^[A-ZÅÄÖ]*$/i,\n tr: /^[A-ZÇĞİıÖŞÜ]*$/i,\n uk: /^[А-ЩЬЮЯЄІЇҐ]*$/i,\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\n az: /^[A-ZÇƏĞİıÖŞÜ]*$/i\n};\nvar alphaSpaces = {\n en: /^[A-Z\\s]*$/i,\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\\s]*$/i,\n da: /^[A-ZÆØÅ\\s]*$/i,\n de: /^[A-ZÄÖÜß\\s]*$/i,\n es: /^[A-ZÁÉÍÑÓÚÜ\\s]*$/i,\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی\\s]*$/,\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\\s]*$/i,\n it: /^[A-Z\\xC0-\\xFF\\s]*$/i,\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ\\s]*$/i,\n nl: /^[A-ZÉËÏÓÖÜ\\s]*$/i,\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ\\s]*$/i,\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ\\s]*$/i,\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\\s]*$/i,\n ru: /^[А-ЯЁ\\s]*$/i,\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\\s]*$/i,\n sr: /^[A-ZČĆŽŠĐ\\s]*$/i,\n sv: /^[A-ZÅÄÖ\\s]*$/i,\n tr: /^[A-ZÇĞİıÖŞÜ\\s]*$/i,\n uk: /^[А-ЩЬЮЯЄІЇҐ\\s]*$/i,\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\\s]*$/,\n az: /^[A-ZÇƏĞİıÖŞÜ\\s]*$/i\n};\nvar alphanumeric = {\n en: /^[0-9A-Z]*$/i,\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\n da: /^[0-9A-ZÆØÅ]$/i,\n de: /^[0-9A-ZÄÖÜß]*$/i,\n es: /^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,\n fa: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\n it: /^[0-9A-Z\\xC0-\\xFF]*$/i,\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\n nl: /^[0-9A-ZÉËÏÓÖÜ]*$/i,\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\n ru: /^[0-9А-ЯЁ]*$/i,\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\n sr: /^[0-9A-ZČĆŽŠĐ]*$/i,\n sv: /^[0-9A-ZÅÄÖ]*$/i,\n tr: /^[0-9A-ZÇĞİıÖŞÜ]*$/i,\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\n az: /^[0-9A-ZÇƏĞİıÖŞÜ]*$/i\n};\nvar alphaDash = {\n en: /^[0-9A-Z_-]*$/i,\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,\n da: /^[0-9A-ZÆØÅ_-]*$/i,\n de: /^[0-9A-ZÄÖÜß_-]*$/i,\n es: /^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,\n fa: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی_-]*$/,\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,\n it: /^[0-9A-Z\\xC0-\\xFF_-]*$/i,\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,\n nl: /^[0-9A-ZÉËÏÓÖÜ_-]*$/i,\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,\n ru: /^[0-9А-ЯЁ_-]*$/i,\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,\n sr: /^[0-9A-ZČĆŽŠĐ_-]*$/i,\n sv: /^[0-9A-ZÅÄÖ_-]*$/i,\n tr: /^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/,\n az: /^[0-9A-ZÇƏĞİıÖŞÜ_-]*$/i\n};\nvar validate = function validate(value, ref) {\n if (ref === void 0) ref = {};\n var locale = ref.locale;\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return validate(val, [locale]);\n });\n }\n\n // Match at least one locale.\n if (!locale) {\n return Object.keys(alpha).some(function (loc) {\n return alpha[loc].test(value);\n });\n }\n return (alpha[locale] || alpha.en).test(value);\n};\nvar paramNames$1 = ['locale'];\nvar alpha$1 = {\n validate: validate,\n paramNames: paramNames$1\n};\nvar validate$1 = function validate$1(value, ref) {\n if (ref === void 0) ref = {};\n var locale = ref.locale;\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return validate$1(val, [locale]);\n });\n }\n\n // Match at least one locale.\n if (!locale) {\n return Object.keys(alphaDash).some(function (loc) {\n return alphaDash[loc].test(value);\n });\n }\n return (alphaDash[locale] || alphaDash.en).test(value);\n};\nvar paramNames$2 = ['locale'];\nvar alpha_dash = {\n validate: validate$1,\n paramNames: paramNames$2\n};\nvar validate$2 = function validate$2(value, ref) {\n if (ref === void 0) ref = {};\n var locale = ref.locale;\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return validate$2(val, [locale]);\n });\n }\n\n // Match at least one locale.\n if (!locale) {\n return Object.keys(alphanumeric).some(function (loc) {\n return alphanumeric[loc].test(value);\n });\n }\n return (alphanumeric[locale] || alphanumeric.en).test(value);\n};\nvar paramNames$3 = ['locale'];\nvar alpha_num = {\n validate: validate$2,\n paramNames: paramNames$3\n};\nvar validate$3 = function validate$3(value, ref) {\n if (ref === void 0) ref = {};\n var locale = ref.locale;\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return validate$3(val, [locale]);\n });\n }\n\n // Match at least one locale.\n if (!locale) {\n return Object.keys(alphaSpaces).some(function (loc) {\n return alphaSpaces[loc].test(value);\n });\n }\n return (alphaSpaces[locale] || alphaSpaces.en).test(value);\n};\nvar paramNames$4 = ['locale'];\nvar alpha_spaces = {\n validate: validate$3,\n paramNames: paramNames$4\n};\nvar validate$4 = function validate$4(value, ref) {\n if (ref === void 0) ref = {};\n var targetValue = ref.targetValue;\n var inclusion = ref.inclusion;\n if (inclusion === void 0) inclusion = false;\n var format = ref.format;\n if (typeof format === 'undefined') {\n format = inclusion;\n inclusion = false;\n }\n value = parseDate$1(value, format);\n targetValue = parseDate$1(targetValue, format);\n\n // if either is not valid.\n if (!value || !targetValue) {\n return false;\n }\n return isBefore(value, targetValue) || inclusion && isEqual$1(value, targetValue);\n};\nvar options$1 = {\n hasTarget: true,\n isDate: true\n};\nvar paramNames$5 = ['targetValue', 'inclusion', 'format'];\nvar before = {\n validate: validate$4,\n options: options$1,\n paramNames: paramNames$5\n};\nvar validate$5 = function validate$5(value, ref) {\n if (ref === void 0) ref = {};\n var min = ref.min;\n var max = ref.max;\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return validate$5(val, {\n min: min,\n max: max\n });\n });\n }\n return Number(min) <= value && Number(max) >= value;\n};\nvar paramNames$6 = ['min', 'max'];\nvar between = {\n validate: validate$5,\n paramNames: paramNames$6\n};\nvar validate$6 = function validate$6(value, ref) {\n var targetValue = ref.targetValue;\n return String(value) === String(targetValue);\n};\nvar options$2 = {\n hasTarget: true\n};\nvar paramNames$7 = ['targetValue'];\nvar confirmed = {\n validate: validate$6,\n options: options$2,\n paramNames: paramNames$7\n};\nfunction unwrapExports(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\nfunction createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n}\nvar assertString_1 = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = assertString;\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n return _typeof(obj);\n }\n function assertString(input) {\n var isString = typeof input === 'string' || input instanceof String;\n if (!isString) {\n var invalidType;\n if (input === null) {\n invalidType = 'null';\n } else {\n invalidType = _typeof(input);\n if (invalidType === 'object' && input.constructor && input.constructor.hasOwnProperty('name')) {\n invalidType = input.constructor.name;\n } else {\n invalidType = \"a \".concat(invalidType);\n }\n }\n throw new TypeError(\"Expected string but received \".concat(invalidType, \".\"));\n }\n }\n module.exports = exports[\"default\"];\n module.exports[\"default\"] = exports[\"default\"];\n});\nunwrapExports(assertString_1);\nvar isCreditCard_1 = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = isCreditCard;\n var _assertString = _interopRequireDefault(assertString_1);\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n /* eslint-disable max-len */\n var creditCard = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11}|6[27][0-9]{14})$/;\n /* eslint-enable max-len */\n\n function isCreditCard(str) {\n (0, _assertString[\"default\"])(str);\n var sanitized = str.replace(/[- ]+/g, '');\n if (!creditCard.test(sanitized)) {\n return false;\n }\n var sum = 0;\n var digit;\n var tmpNum;\n var shouldDouble;\n for (var i = sanitized.length - 1; i >= 0; i--) {\n digit = sanitized.substring(i, i + 1);\n tmpNum = parseInt(digit, 10);\n if (shouldDouble) {\n tmpNum *= 2;\n if (tmpNum >= 10) {\n sum += tmpNum % 10 + 1;\n } else {\n sum += tmpNum;\n }\n } else {\n sum += tmpNum;\n }\n shouldDouble = !shouldDouble;\n }\n return !!(sum % 10 === 0 ? sanitized : false);\n }\n module.exports = exports[\"default\"];\n module.exports[\"default\"] = exports[\"default\"];\n});\nvar isCreditCard = unwrapExports(isCreditCard_1);\nvar validate$7 = function validate$7(value) {\n return isCreditCard(String(value));\n};\nvar credit_card = {\n validate: validate$7\n};\nvar validate$8 = function validate$8(value, ref) {\n if (ref === void 0) ref = {};\n var min = ref.min;\n var max = ref.max;\n var inclusivity = ref.inclusivity;\n if (inclusivity === void 0) inclusivity = '()';\n var format = ref.format;\n if (typeof format === 'undefined') {\n format = inclusivity;\n inclusivity = '()';\n }\n var minDate = parseDate$1(String(min), format);\n var maxDate = parseDate$1(String(max), format);\n var dateVal = parseDate$1(String(value), format);\n if (!minDate || !maxDate || !dateVal) {\n return false;\n }\n if (inclusivity === '()') {\n return isAfter(dateVal, minDate) && isBefore(dateVal, maxDate);\n }\n if (inclusivity === '(]') {\n return isAfter(dateVal, minDate) && (isEqual$1(dateVal, maxDate) || isBefore(dateVal, maxDate));\n }\n if (inclusivity === '[)') {\n return isBefore(dateVal, maxDate) && (isEqual$1(dateVal, minDate) || isAfter(dateVal, minDate));\n }\n return isEqual$1(dateVal, maxDate) || isEqual$1(dateVal, minDate) || isBefore(dateVal, maxDate) && isAfter(dateVal, minDate);\n};\nvar options$3 = {\n isDate: true\n};\nvar paramNames$8 = ['min', 'max', 'inclusivity', 'format'];\nvar date_between = {\n validate: validate$8,\n options: options$3,\n paramNames: paramNames$8\n};\nvar validate$9 = function validate$9(value, ref) {\n var format = ref.format;\n return !!parseDate$1(value, format);\n};\nvar options$4 = {\n isDate: true\n};\nvar paramNames$9 = ['format'];\nvar date_format = {\n validate: validate$9,\n options: options$4,\n paramNames: paramNames$9\n};\nvar validate$a = function validate$a(value, ref) {\n if (ref === void 0) ref = {};\n var decimals = ref.decimals;\n if (decimals === void 0) decimals = '*';\n var separator = ref.separator;\n if (separator === void 0) separator = '.';\n if (isNullOrUndefined(value) || value === '') {\n return false;\n }\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return validate$a(val, {\n decimals: decimals,\n separator: separator\n });\n });\n }\n\n // if is 0.\n if (Number(decimals) === 0) {\n return /^-?\\d*$/.test(value);\n }\n var regexPart = decimals === '*' ? '+' : \"{1,\" + decimals + \"}\";\n var regex = new RegExp(\"^[-+]?\\\\d*(\\\\\" + separator + \"\\\\d\" + regexPart + \")?([eE]{1}[-]?\\\\d+)?$\");\n if (!regex.test(value)) {\n return false;\n }\n var parsedValue = parseFloat(value);\n\n // eslint-disable-next-line\n return parsedValue === parsedValue;\n};\nvar paramNames$a = ['decimals', 'separator'];\nvar decimal = {\n validate: validate$a,\n paramNames: paramNames$a\n};\nvar validate$b = function validate$b(value, ref) {\n var length = ref[0];\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return validate$b(val, [length]);\n });\n }\n var strVal = String(value);\n return /^[0-9]*$/.test(strVal) && strVal.length === Number(length);\n};\nvar digits = {\n validate: validate$b\n};\nvar imageRegex = /\\.(jpg|svg|jpeg|png|bmp|gif)$/i;\nvar validateImage = function validateImage(file, width, height) {\n var URL = window.URL || window.webkitURL;\n return new Promise(function (resolve) {\n var image = new Image();\n image.onerror = function () {\n return resolve({\n valid: false\n });\n };\n image.onload = function () {\n return resolve({\n valid: image.width === Number(width) && image.height === Number(height)\n });\n };\n image.src = URL.createObjectURL(file);\n });\n};\nvar validate$c = function validate$c(files, ref) {\n var width = ref[0];\n var height = ref[1];\n var images = ensureArray(files).filter(function (file) {\n return imageRegex.test(file.name);\n });\n if (images.length === 0) {\n return false;\n }\n return Promise.all(images.map(function (image) {\n return validateImage(image, width, height);\n }));\n};\nvar dimensions = {\n validate: validate$c\n};\nvar merge_1 = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = merge;\n function merge() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaults = arguments.length > 1 ? arguments[1] : undefined;\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n return obj;\n }\n module.exports = exports[\"default\"];\n module.exports[\"default\"] = exports[\"default\"];\n});\nunwrapExports(merge_1);\nvar isByteLength_1 = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = isByteLength;\n var _assertString = _interopRequireDefault(assertString_1);\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n return _typeof(obj);\n }\n\n /* eslint-disable prefer-rest-params */\n function isByteLength(str, options) {\n (0, _assertString[\"default\"])(str);\n var min;\n var max;\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isByteLength(str, min [, max])\n min = arguments[1];\n max = arguments[2];\n }\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n }\n module.exports = exports[\"default\"];\n module.exports[\"default\"] = exports[\"default\"];\n});\nunwrapExports(isByteLength_1);\nvar isFQDN_1 = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = isFQDN;\n var _assertString = _interopRequireDefault(assertString_1);\n var _merge = _interopRequireDefault(merge_1);\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n var default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false\n };\n function isFQDN(str, options) {\n (0, _assertString[\"default\"])(str);\n options = (0, _merge[\"default\"])(options, default_fqdn_options);\n /* Remove the optional trailing dot before checking validity */\n\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n var parts = str.split('.');\n for (var i = 0; i < parts.length; i++) {\n if (parts[i].length > 63) {\n return false;\n }\n }\n if (options.require_tld) {\n var tld = parts.pop();\n if (!parts.length || !/^([a-z\\u00a1-\\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n } // disallow spaces\n\n if (/[\\s\\u2002-\\u200B\\u202F\\u205F\\u3000\\uFEFF\\uDB40\\uDC20]/.test(tld)) {\n return false;\n }\n }\n for (var part, _i = 0; _i < parts.length; _i++) {\n part = parts[_i];\n if (options.allow_underscores) {\n part = part.replace(/_/g, '');\n }\n if (!/^[a-z\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n } // disallow full-width chars\n\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n }\n if (part[0] === '-' || part[part.length - 1] === '-') {\n return false;\n }\n }\n return true;\n }\n module.exports = exports[\"default\"];\n module.exports[\"default\"] = exports[\"default\"];\n});\nvar isFQDN = unwrapExports(isFQDN_1);\nvar isIP_1 = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = isIP;\n var _assertString = _interopRequireDefault(assertString_1);\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n var ipv4Maybe = /^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$/;\n var ipv6Block = /^[0-9A-F]{1,4}$/i;\n function isIP(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (0, _assertString[\"default\"])(str);\n version = String(version);\n if (!version) {\n return isIP(str, 4) || isIP(str, 6);\n } else if (version === '4') {\n if (!ipv4Maybe.test(str)) {\n return false;\n }\n var parts = str.split('.').sort(function (a, b) {\n return a - b;\n });\n return parts[3] <= 255;\n } else if (version === '6') {\n var blocks = str.split(':');\n var foundOmissionBlock = false; // marker to indicate ::\n // At least some OS accept the last 32 bits of an IPv6 address\n // (i.e. 2 of the blocks) in IPv4 notation, and RFC 3493 says\n // that '::ffff:a.b.c.d' is valid for IPv4-mapped IPv6 addresses,\n // and '::a.b.c.d' is deprecated, but also valid.\n\n var foundIPv4TransitionBlock = isIP(blocks[blocks.length - 1], 4);\n var expectedNumberOfBlocks = foundIPv4TransitionBlock ? 7 : 8;\n if (blocks.length > expectedNumberOfBlocks) {\n return false;\n } // initial or final ::\n\n if (str === '::') {\n return true;\n } else if (str.substr(0, 2) === '::') {\n blocks.shift();\n blocks.shift();\n foundOmissionBlock = true;\n } else if (str.substr(str.length - 2) === '::') {\n blocks.pop();\n blocks.pop();\n foundOmissionBlock = true;\n }\n for (var i = 0; i < blocks.length; ++i) {\n // test for a :: which can not be at the string start/end\n // since those cases have been handled above\n if (blocks[i] === '' && i > 0 && i < blocks.length - 1) {\n if (foundOmissionBlock) {\n return false; // multiple :: in address\n }\n\n foundOmissionBlock = true;\n } else if (foundIPv4TransitionBlock && i === blocks.length - 1) ;else if (!ipv6Block.test(blocks[i])) {\n return false;\n }\n }\n if (foundOmissionBlock) {\n return blocks.length >= 1;\n }\n return blocks.length === expectedNumberOfBlocks;\n }\n return false;\n }\n module.exports = exports[\"default\"];\n module.exports[\"default\"] = exports[\"default\"];\n});\nvar isIP = unwrapExports(isIP_1);\nvar isEmail_1 = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = isEmail;\n var _assertString = _interopRequireDefault(assertString_1);\n var _merge = _interopRequireDefault(merge_1);\n var _isByteLength = _interopRequireDefault(isByteLength_1);\n var _isFQDN = _interopRequireDefault(isFQDN_1);\n var _isIP = _interopRequireDefault(isIP_1);\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n var default_email_options = {\n allow_display_name: false,\n require_display_name: false,\n allow_utf8_local_part: true,\n require_tld: true\n };\n /* eslint-disable max-len */\n\n /* eslint-disable no-control-regex */\n\n var displayName = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\,\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF\\s]*<(.+)>$/i;\n var emailUserPart = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]+$/i;\n var gmailUserPart = /^[a-z\\d]+$/;\n var quotedEmailUser = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]))*$/i;\n var emailUserUtf8Part = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+$/i;\n var quotedEmailUserUtf8 = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))*$/i;\n /* eslint-enable max-len */\n\n /* eslint-enable no-control-regex */\n\n function isEmail(str, options) {\n (0, _assertString[\"default\"])(str);\n options = (0, _merge[\"default\"])(options, default_email_options);\n if (options.require_display_name || options.allow_display_name) {\n var display_email = str.match(displayName);\n if (display_email) {\n str = display_email[1];\n } else if (options.require_display_name) {\n return false;\n }\n }\n var parts = str.split('@');\n var domain = parts.pop();\n var user = parts.join('@');\n var lower_domain = domain.toLowerCase();\n if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {\n /*\n Previously we removed dots for gmail addresses before validating.\n This was removed because it allows `multiple..dots@gmail.com`\n to be reported as valid, but it is not.\n Gmail only normalizes single dots, removing them from here is pointless,\n should be done in normalizeEmail\n */\n user = user.toLowerCase(); // Removing sub-address from username before gmail validation\n\n var username = user.split('+')[0]; // Dots are not included in gmail length restriction\n\n if (!(0, _isByteLength[\"default\"])(username.replace('.', ''), {\n min: 6,\n max: 30\n })) {\n return false;\n }\n var _user_parts = username.split('.');\n for (var i = 0; i < _user_parts.length; i++) {\n if (!gmailUserPart.test(_user_parts[i])) {\n return false;\n }\n }\n }\n if (!(0, _isByteLength[\"default\"])(user, {\n max: 64\n }) || !(0, _isByteLength[\"default\"])(domain, {\n max: 254\n })) {\n return false;\n }\n if (!(0, _isFQDN[\"default\"])(domain, {\n require_tld: options.require_tld\n })) {\n if (!options.allow_ip_domain) {\n return false;\n }\n if (!(0, _isIP[\"default\"])(domain)) {\n if (!domain.startsWith('[') || !domain.endsWith(']')) {\n return false;\n }\n var noBracketdomain = domain.substr(1, domain.length - 2);\n if (noBracketdomain.length === 0 || !(0, _isIP[\"default\"])(noBracketdomain)) {\n return false;\n }\n }\n }\n if (user[0] === '\"') {\n user = user.slice(1, user.length - 1);\n return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);\n }\n var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;\n var user_parts = user.split('.');\n for (var _i = 0; _i < user_parts.length; _i++) {\n if (!pattern.test(user_parts[_i])) {\n return false;\n }\n }\n return true;\n }\n module.exports = exports[\"default\"];\n module.exports[\"default\"] = exports[\"default\"];\n});\nvar isEmail = unwrapExports(isEmail_1);\nfunction objectWithoutProperties(obj, exclude) {\n var target = {};\n for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n return target;\n}\nvar validate$d = function validate$d(value, ref) {\n if (ref === void 0) ref = {};\n var multiple = ref.multiple;\n if (multiple === void 0) multiple = false;\n var rest = objectWithoutProperties(ref, [\"multiple\"]);\n var options = rest;\n if (multiple && !Array.isArray(value)) {\n value = String(value).split(',').map(function (emailStr) {\n return emailStr.trim();\n });\n }\n var validatorOptions = assign({}, options);\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return isEmail(String(val), validatorOptions);\n });\n }\n return isEmail(String(value), validatorOptions);\n};\nvar email = {\n validate: validate$d\n};\nvar validate$e = function validate$e(value, options) {\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return validate$e(val, options);\n });\n }\n return toArray(options).some(function (item) {\n // eslint-disable-next-line\n return item == value;\n });\n};\nvar included = {\n validate: validate$e\n};\nvar validate$f = function validate$f() {\n var args = [],\n len = arguments.length;\n while (len--) args[len] = arguments[len];\n return !validate$e.apply(void 0, args);\n};\nvar excluded = {\n validate: validate$f\n};\nvar validate$g = function validate$g(files, extensions) {\n var regex = new RegExp(\".(\" + extensions.join('|') + \")$\", 'i');\n return ensureArray(files).every(function (file) {\n return regex.test(file.name);\n });\n};\nvar ext = {\n validate: validate$g\n};\nvar validate$h = function validate$h(files) {\n return (Array.isArray(files) ? files : [files]).every(function (file) {\n return /\\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(file.name);\n });\n};\nvar image = {\n validate: validate$h\n};\nvar validate$i = function validate$i(value) {\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return /^-?[0-9]+$/.test(String(val));\n });\n }\n return /^-?[0-9]+$/.test(String(value));\n};\nvar integer = {\n validate: validate$i\n};\nvar validate$j = function validate$j(value, ref) {\n if (ref === void 0) ref = {};\n var version = ref.version;\n if (version === void 0) version = 4;\n if (isNullOrUndefined(value)) {\n value = '';\n }\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return isIP(val, version);\n });\n }\n return isIP(value, version);\n};\nvar paramNames$b = ['version'];\nvar ip = {\n validate: validate$j,\n paramNames: paramNames$b\n};\nvar validate$k = function validate$k(value) {\n if (isNullOrUndefined(value)) {\n value = '';\n }\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return isIP(val, '') || isFQDN(val);\n });\n }\n return isIP(value, '') || isFQDN(value);\n};\nvar ip_or_fqdn = {\n validate: validate$k\n};\nvar validate$l = function validate$l(value, ref) {\n if (ref === void 0) ref = [];\n var other = ref[0];\n return value === other;\n};\nvar is = {\n validate: validate$l\n};\nvar validate$m = function validate$m(value, ref) {\n if (ref === void 0) ref = [];\n var other = ref[0];\n return value !== other;\n};\nvar is_not = {\n validate: validate$m\n};\n\n/**\n * @param {Array|String} value\n * @param {Number} length\n * @param {Number} max\n */\nvar compare = function compare(value, length, max) {\n if (max === undefined) {\n return value.length === length;\n }\n\n // cast to number.\n max = Number(max);\n return value.length >= length && value.length <= max;\n};\nvar validate$n = function validate$n(value, ref) {\n var length = ref[0];\n var max = ref[1];\n if (max === void 0) max = undefined;\n if (isNullOrUndefined(value)) {\n return false;\n }\n length = Number(length);\n if (typeof value === 'number') {\n value = String(value);\n }\n if (!value.length) {\n value = toArray(value);\n }\n return compare(value, length, max);\n};\nvar length = {\n validate: validate$n\n};\nvar validate$o = function validate$o(value, ref) {\n var length = ref[0];\n if (isNullOrUndefined(value)) {\n return length >= 0;\n }\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return validate$o(val, [length]);\n });\n }\n return String(value).length <= length;\n};\nvar max = {\n validate: validate$o\n};\nvar validate$p = function validate$p(value, ref) {\n var max = ref[0];\n if (isNullOrUndefined(value) || value === '') {\n return false;\n }\n if (Array.isArray(value)) {\n return value.length > 0 && value.every(function (val) {\n return validate$p(val, [max]);\n });\n }\n return Number(value) <= max;\n};\nvar max_value = {\n validate: validate$p\n};\nvar validate$q = function validate$q(files, mimes) {\n var regex = new RegExp(mimes.join('|').replace('*', '.+') + \"$\", 'i');\n return ensureArray(files).every(function (file) {\n return regex.test(file.type);\n });\n};\nvar mimes = {\n validate: validate$q\n};\nvar validate$r = function validate$r(value, ref) {\n var length = ref[0];\n if (isNullOrUndefined(value)) {\n return false;\n }\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return validate$r(val, [length]);\n });\n }\n return String(value).length >= length;\n};\nvar min = {\n validate: validate$r\n};\nvar validate$s = function validate$s(value, ref) {\n var min = ref[0];\n if (isNullOrUndefined(value) || value === '') {\n return false;\n }\n if (Array.isArray(value)) {\n return value.length > 0 && value.every(function (val) {\n return validate$s(val, [min]);\n });\n }\n return Number(value) >= min;\n};\nvar min_value = {\n validate: validate$s\n};\nvar ar = /^[٠١٢٣٤٥٦٧٨٩]+$/;\nvar en = /^[0-9]+$/;\nvar validate$t = function validate$t(value) {\n var testValue = function testValue(val) {\n var strValue = String(val);\n return en.test(strValue) || ar.test(strValue);\n };\n if (Array.isArray(value)) {\n return value.every(testValue);\n }\n return testValue(value);\n};\nvar numeric = {\n validate: validate$t\n};\nvar validate$u = function validate$u(value, ref) {\n var expression = ref.expression;\n if (typeof expression === 'string') {\n expression = new RegExp(expression);\n }\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return validate$u(val, {\n expression: expression\n });\n });\n }\n return expression.test(String(value));\n};\nvar paramNames$c = ['expression'];\nvar regex = {\n validate: validate$u,\n paramNames: paramNames$c\n};\nvar validate$v = function validate$v(value, ref) {\n if (ref === void 0) ref = [];\n var invalidateFalse = ref[0];\n if (invalidateFalse === void 0) invalidateFalse = false;\n if (isNullOrUndefined(value) || isEmptyArray(value)) {\n return false;\n }\n\n // incase a field considers `false` as an empty value like checkboxes.\n if (value === false && invalidateFalse) {\n return false;\n }\n return !!String(value).trim().length;\n};\nvar required = {\n validate: validate$v\n};\nvar validate$w = function validate$w(value, ref) {\n if (ref === void 0) ref = [];\n var otherFieldVal = ref[0];\n var possibleVals = ref.slice(1);\n var required = possibleVals.includes(String(otherFieldVal).trim());\n if (!required) {\n return {\n valid: true,\n data: {\n required: required\n }\n };\n }\n var invalid = isEmptyArray(value) || [false, null, undefined].includes(value);\n invalid = invalid || !String(value).trim().length;\n return {\n valid: !invalid,\n data: {\n required: required\n }\n };\n};\nvar options$5 = {\n hasTarget: true,\n computesRequired: true\n};\nvar required_if = {\n validate: validate$w,\n options: options$5\n};\nvar validate$x = function validate$x(files, ref) {\n var size = ref[0];\n if (isNaN(size)) {\n return false;\n }\n var nSize = Number(size) * 1024;\n return ensureArray(files).every(function (file) {\n return file.size <= nSize;\n });\n};\nvar size = {\n validate: validate$x\n};\nvar isURL_1 = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = isURL;\n var _assertString = _interopRequireDefault(assertString_1);\n var _isFQDN = _interopRequireDefault(isFQDN_1);\n var _isIP = _interopRequireDefault(isIP_1);\n var _merge = _interopRequireDefault(merge_1);\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n var default_url_options = {\n protocols: ['http', 'https', 'ftp'],\n require_tld: true,\n require_protocol: false,\n require_host: true,\n require_valid_protocol: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_protocol_relative_urls: false\n };\n var wrapped_ipv6 = /^\\[([^\\]]+)\\](?::([0-9]+))?$/;\n function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n }\n function checkHost(host, matches) {\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i];\n if (host === match || isRegExp(match) && match.test(host)) {\n return true;\n }\n }\n return false;\n }\n function isURL(url, options) {\n (0, _assertString[\"default\"])(url);\n if (!url || url.length >= 2083 || /[\\s<>]/.test(url)) {\n return false;\n }\n if (url.indexOf('mailto:') === 0) {\n return false;\n }\n options = (0, _merge[\"default\"])(options, default_url_options);\n var protocol, auth, host, hostname, port, port_str, split, ipv6;\n split = url.split('#');\n url = split.shift();\n split = url.split('?');\n url = split.shift();\n split = url.split('://');\n if (split.length > 1) {\n protocol = split.shift().toLowerCase();\n if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n return false;\n }\n } else if (options.require_protocol) {\n return false;\n } else if (url.substr(0, 2) === '//') {\n if (!options.allow_protocol_relative_urls) {\n return false;\n }\n split[0] = url.substr(2);\n }\n url = split.join('://');\n if (url === '') {\n return false;\n }\n split = url.split('/');\n url = split.shift();\n if (url === '' && !options.require_host) {\n return true;\n }\n split = url.split('@');\n if (split.length > 1) {\n if (options.disallow_auth) {\n return false;\n }\n auth = split.shift();\n if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n return false;\n }\n }\n hostname = split.join('@');\n port_str = null;\n ipv6 = null;\n var ipv6_match = hostname.match(wrapped_ipv6);\n if (ipv6_match) {\n host = '';\n ipv6 = ipv6_match[1];\n port_str = ipv6_match[2] || null;\n } else {\n split = hostname.split(':');\n host = split.shift();\n if (split.length) {\n port_str = split.join(':');\n }\n }\n if (port_str !== null) {\n port = parseInt(port_str, 10);\n if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n return false;\n }\n }\n if (!(0, _isIP[\"default\"])(host) && !(0, _isFQDN[\"default\"])(host, options) && (!ipv6 || !(0, _isIP[\"default\"])(ipv6, 6))) {\n return false;\n }\n host = host || ipv6;\n if (options.host_whitelist && !checkHost(host, options.host_whitelist)) {\n return false;\n }\n if (options.host_blacklist && checkHost(host, options.host_blacklist)) {\n return false;\n }\n return true;\n }\n module.exports = exports[\"default\"];\n module.exports[\"default\"] = exports[\"default\"];\n});\nvar isURL = unwrapExports(isURL_1);\nvar validate$y = function validate$y(value, options) {\n if (options === void 0) options = {};\n if (isNullOrUndefined(value)) {\n value = '';\n }\n var validatorOptions = assign({}, options);\n if (Array.isArray(value)) {\n return value.every(function (val) {\n return isURL(val, validatorOptions);\n });\n }\n return isURL(value, validatorOptions);\n};\nvar url = {\n validate: validate$y\n};\n\n/* eslint-disable camelcase */\n\nvar Rules = /*#__PURE__*/Object.freeze({\n after: after,\n alpha_dash: alpha_dash,\n alpha_num: alpha_num,\n alpha_spaces: alpha_spaces,\n alpha: alpha$1,\n before: before,\n between: between,\n confirmed: confirmed,\n credit_card: credit_card,\n date_between: date_between,\n date_format: date_format,\n decimal: decimal,\n digits: digits,\n dimensions: dimensions,\n email: email,\n ext: ext,\n image: image,\n included: included,\n integer: integer,\n length: length,\n ip: ip,\n ip_or_fqdn: ip_or_fqdn,\n is_not: is_not,\n is: is,\n max: max,\n max_value: max_value,\n mimes: mimes,\n min: min,\n min_value: min_value,\n excluded: excluded,\n numeric: numeric,\n regex: regex,\n required: required,\n required_if: required_if,\n size: size,\n url: url\n});\n\n// \n\nvar normalize = function normalize(fields) {\n if (Array.isArray(fields)) {\n return fields.reduce(function (prev, curr) {\n if (includes(curr, '.')) {\n prev[curr.split('.')[1]] = curr;\n } else {\n prev[curr] = curr;\n }\n return prev;\n }, {});\n }\n return fields;\n};\n\n// Combines two flags using either AND or OR depending on the flag type.\nvar combine = function combine(lhs, rhs) {\n var mapper = {\n pristine: function pristine(lhs, rhs) {\n return lhs && rhs;\n },\n dirty: function dirty(lhs, rhs) {\n return lhs || rhs;\n },\n touched: function touched(lhs, rhs) {\n return lhs || rhs;\n },\n untouched: function untouched(lhs, rhs) {\n return lhs && rhs;\n },\n valid: function valid(lhs, rhs) {\n return lhs && rhs;\n },\n invalid: function invalid(lhs, rhs) {\n return lhs || rhs;\n },\n pending: function pending(lhs, rhs) {\n return lhs || rhs;\n },\n required: function required(lhs, rhs) {\n return lhs || rhs;\n },\n validated: function validated(lhs, rhs) {\n return lhs && rhs;\n }\n };\n return Object.keys(mapper).reduce(function (flags, flag) {\n flags[flag] = mapper[flag](lhs[flag], rhs[flag]);\n return flags;\n }, {});\n};\nvar mapScope = function mapScope(scope, deep) {\n if (deep === void 0) deep = true;\n return Object.keys(scope).reduce(function (flags, field) {\n if (!flags) {\n flags = assign({}, scope[field]);\n return flags;\n }\n\n // scope.\n var isScope = field.indexOf('$') === 0;\n if (deep && isScope) {\n return combine(mapScope(scope[field]), flags);\n } else if (!deep && isScope) {\n return flags;\n }\n flags = combine(flags, scope[field]);\n return flags;\n }, null);\n};\n\n/**\n * Maps fields to computed functions.\n */\nvar mapFields = function mapFields(fields) {\n if (!fields) {\n return function () {\n return mapScope(this.$validator.flags);\n };\n }\n var normalized = normalize(fields);\n return Object.keys(normalized).reduce(function (prev, curr) {\n var field = normalized[curr];\n prev[curr] = function mappedField() {\n // if field exists\n if (this.$validator.flags[field]) {\n return this.$validator.flags[field];\n }\n\n // scopeless fields were selected.\n if (normalized[curr] === '*') {\n return mapScope(this.$validator.flags, false);\n }\n\n // if it has a scope defined\n var index = field.indexOf('.');\n if (index <= 0) {\n return {};\n }\n var ref = field.split('.');\n var scope = ref[0];\n var name = ref.slice(1);\n scope = this.$validator.flags[\"$\" + scope];\n name = name.join('.');\n\n // an entire scope was selected: scope.*\n if (name === '*' && scope) {\n return mapScope(scope);\n }\n if (scope && scope[name]) {\n return scope[name];\n }\n return {};\n };\n return prev;\n }, {});\n};\nvar $validator = null;\nvar PROVIDER_COUNTER = 0;\nvar ValidationProvider = {\n $__veeInject: false,\n inject: {\n $_veeObserver: {\n from: '$_veeObserver',\n \"default\": function default$1() {\n if (!this.$vnode.context.$_veeObserver) {\n this.$vnode.context.$_veeObserver = createObserver();\n }\n return this.$vnode.context.$_veeObserver;\n }\n }\n },\n props: {\n vid: {\n type: [String, Number],\n \"default\": function _default() {\n PROVIDER_COUNTER++;\n return \"_vee_\" + PROVIDER_COUNTER;\n }\n },\n name: {\n type: String,\n \"default\": null\n },\n mode: {\n type: [String, Function],\n \"default\": function _default() {\n return getConfig().mode;\n }\n },\n events: {\n type: Array,\n validate: function validate() {\n /* istanbul ignore next */\n if (process.env.NODE_ENV !== 'production') {\n warn('events prop and config will be deprecated in future version please use the interaction modes instead');\n }\n return true;\n },\n \"default\": function _default() {\n var events = getConfig().events;\n if (typeof events === 'string') {\n return events.split('|');\n }\n return events;\n }\n },\n rules: {\n type: [Object, String],\n \"default\": null\n },\n immediate: {\n type: Boolean,\n \"default\": false\n },\n persist: {\n type: Boolean,\n \"default\": false\n },\n bails: {\n type: Boolean,\n \"default\": function _default() {\n return getConfig().fastExit;\n }\n },\n debounce: {\n type: Number,\n \"default\": function _default() {\n return getConfig().delay || 0;\n }\n },\n tag: {\n type: String,\n \"default\": 'span'\n },\n slim: {\n type: Boolean,\n \"default\": false\n }\n },\n watch: {\n rules: {\n deep: true,\n handler: function handler(val, oldVal) {\n this._needsValidation = !isEqual(val, oldVal);\n }\n }\n },\n data: function data() {\n return {\n messages: [],\n value: undefined,\n initialized: false,\n initialValue: undefined,\n flags: createFlags(),\n failedRules: {},\n forceRequired: false,\n isDeactivated: false,\n id: null\n };\n },\n computed: {\n isValid: function isValid() {\n return this.flags.valid;\n },\n fieldDeps: function fieldDeps() {\n var this$1 = this;\n var rules = normalizeRules(this.rules);\n return Object.keys(rules).filter(RuleContainer.isTargetRule).map(function (rule) {\n var depName = rules[rule][0];\n watchCrossFieldDep(this$1, depName);\n return depName;\n });\n },\n normalizedEvents: function normalizedEvents() {\n var this$1 = this;\n var ref = computeModeSetting(this);\n var on = ref.on;\n return normalizeEvents(on || this.events || []).map(function (e) {\n if (e === 'input') {\n return this$1._inputEventName;\n }\n return e;\n });\n },\n isRequired: function isRequired() {\n var rules = normalizeRules(this.rules);\n var forceRequired = this.forceRequired;\n var isRequired = rules.required || forceRequired;\n this.flags.required = isRequired;\n return isRequired;\n },\n classes: function classes() {\n var this$1 = this;\n var names = getConfig().classNames;\n return Object.keys(this.flags).reduce(function (classes, flag) {\n var className = names && names[flag] || flag;\n if (isNullOrUndefined(this$1.flags[flag])) {\n return classes;\n }\n if (className) {\n classes[className] = this$1.flags[flag];\n }\n return classes;\n }, {});\n }\n },\n render: function render(h) {\n var this$1 = this;\n this.registerField();\n var ctx = createValidationCtx(this);\n\n // Gracefully handle non-existent scoped slots.\n var slot = this.$scopedSlots[\"default\"];\n /* istanbul ignore next */\n if (!isCallable(slot)) {\n if (process.env.NODE_ENV !== 'production') {\n warn('ValidationProvider expects a scoped slot. Did you forget to add \"v-slot\" to your slot?');\n }\n return h(this.tag, this.$slots[\"default\"]);\n }\n var nodes = slot(ctx);\n // Handle single-root slot.\n extractVNodes(nodes).forEach(function (input) {\n addListeners.call(this$1, input);\n });\n return this.slim ? createRenderless(h, nodes) : h(this.tag, nodes);\n },\n beforeDestroy: function beforeDestroy() {\n // cleanup reference.\n this.$_veeObserver.unsubscribe(this);\n },\n activated: function activated() {\n this.$_veeObserver.subscribe(this);\n this.isDeactivated = false;\n },\n deactivated: function deactivated() {\n this.$_veeObserver.unsubscribe(this);\n this.isDeactivated = true;\n },\n methods: {\n setFlags: function setFlags(flags) {\n var this$1 = this;\n Object.keys(flags).forEach(function (flag) {\n this$1.flags[flag] = flags[flag];\n });\n },\n syncValue: function syncValue(e) {\n var value = normalizeValue$1(e);\n this.value = value;\n this.flags.changed = this.initialValue !== value;\n },\n reset: function reset() {\n this.messages = [];\n this._pendingValidation = null;\n this.initialValue = this.value;\n var flags = createFlags();\n this.setFlags(flags);\n },\n validate: function validate() {\n var this$1 = this;\n var args = [],\n len = arguments.length;\n while (len--) args[len] = arguments[len];\n if (args.length > 0) {\n this.syncValue(args[0]);\n }\n return this.validateSilent().then(function (result) {\n this$1.applyResult(result);\n return result;\n });\n },\n validateSilent: function validateSilent() {\n var this$1 = this;\n this.setFlags({\n pending: true\n });\n return $validator.verify(this.value, this.rules, {\n name: this.name,\n values: createValuesLookup(this),\n bails: this.bails\n }).then(function (result) {\n this$1.setFlags({\n pending: false\n });\n if (!this$1.isRequired) {\n this$1.setFlags({\n valid: result.valid,\n invalid: !result.valid\n });\n }\n return result;\n });\n },\n applyResult: function applyResult(ref) {\n var errors = ref.errors;\n var failedRules = ref.failedRules;\n this.messages = errors;\n this.failedRules = assign({}, failedRules);\n this.setFlags({\n valid: !errors.length,\n changed: this.value !== this.initialValue,\n invalid: !!errors.length,\n validated: true\n });\n },\n registerField: function registerField() {\n if (!$validator) {\n $validator = getValidator() || new Validator(null, {\n fastExit: getConfig().fastExit\n });\n }\n updateRenderingContextRefs(this);\n }\n }\n};\nfunction createValidationCtx(ctx) {\n return {\n errors: ctx.messages,\n flags: ctx.flags,\n classes: ctx.classes,\n valid: ctx.isValid,\n failedRules: ctx.failedRules,\n reset: function reset() {\n return ctx.reset();\n },\n validate: function validate() {\n var args = [],\n len = arguments.length;\n while (len--) args[len] = arguments[len];\n return ctx.validate.apply(ctx, args);\n },\n aria: {\n 'aria-invalid': ctx.flags.invalid ? 'true' : 'false',\n 'aria-required': ctx.isRequired ? 'true' : 'false'\n }\n };\n}\nfunction normalizeValue$1(value) {\n if (isEvent(value)) {\n return value.target.type === 'file' ? toArray(value.target.files) : value.target.value;\n }\n return value;\n}\n\n/**\n * Determines if a provider needs to run validation.\n */\nfunction shouldValidate(ctx, model) {\n // when an immediate/initial validation is needed and wasn't done before.\n if (!ctx._ignoreImmediate && ctx.immediate) {\n return true;\n }\n\n // when the value changes for whatever reason.\n if (ctx.value !== model.value) {\n return true;\n }\n\n // when it needs validation due to props/cross-fields changes.\n if (ctx._needsValidation) {\n return true;\n }\n\n // when the initial value is undefined and the field wasn't rendered yet.\n if (!ctx.initialized && model.value === undefined) {\n return true;\n }\n return false;\n}\nfunction computeModeSetting(ctx) {\n var compute = isCallable(ctx.mode) ? ctx.mode : modes[ctx.mode];\n return compute({\n errors: ctx.messages,\n value: ctx.value,\n flags: ctx.flags\n });\n}\nfunction onRenderUpdate(model) {\n if (!this.initialized) {\n this.initialValue = model.value;\n }\n var validateNow = shouldValidate(this, model);\n this._needsValidation = false;\n this.value = model.value;\n this._ignoreImmediate = true;\n if (!validateNow) {\n return;\n }\n this.validateSilent().then(this.immediate || this.flags.validated ? this.applyResult : function (x) {\n return x;\n });\n}\n\n// Creates the common handlers for a validatable context.\nfunction createCommonHandlers(ctx) {\n var onInput = function onInput(e) {\n ctx.syncValue(e); // track and keep the value updated.\n ctx.setFlags({\n dirty: true,\n pristine: false\n });\n };\n\n // Blur event listener.\n var onBlur = function onBlur() {\n ctx.setFlags({\n touched: true,\n untouched: false\n });\n };\n var onValidate = ctx.$veeHandler;\n var mode = computeModeSetting(ctx);\n\n // Handle debounce changes.\n if (!onValidate || ctx.$veeDebounce !== ctx.debounce) {\n onValidate = debounce(function () {\n ctx.$nextTick(function () {\n var pendingPromise = ctx.validateSilent();\n // avoids race conditions between successive validations.\n ctx._pendingValidation = pendingPromise;\n pendingPromise.then(function (result) {\n if (pendingPromise === ctx._pendingValidation) {\n ctx.applyResult(result);\n ctx._pendingValidation = null;\n }\n });\n });\n }, mode.debounce || ctx.debounce);\n\n // Cache the handler so we don't create it each time.\n ctx.$veeHandler = onValidate;\n // cache the debounce value so we detect if it was changed.\n ctx.$veeDebounce = ctx.debounce;\n }\n return {\n onInput: onInput,\n onBlur: onBlur,\n onValidate: onValidate\n };\n}\n\n// Adds all plugin listeners to the vnode.\nfunction addListeners(node) {\n var model = findModel(node);\n // cache the input eventName.\n this._inputEventName = this._inputEventName || getInputEventName(node, model);\n onRenderUpdate.call(this, model);\n var ref = createCommonHandlers(this);\n var onInput = ref.onInput;\n var onBlur = ref.onBlur;\n var onValidate = ref.onValidate;\n addVNodeListener(node, this._inputEventName, onInput);\n addVNodeListener(node, 'blur', onBlur);\n\n // add the validation listeners.\n this.normalizedEvents.forEach(function (evt) {\n addVNodeListener(node, evt, onValidate);\n });\n this.initialized = true;\n}\nfunction createValuesLookup(ctx) {\n var providers = ctx.$_veeObserver.refs;\n return ctx.fieldDeps.reduce(function (acc, depName) {\n if (!providers[depName]) {\n return acc;\n }\n acc[depName] = providers[depName].value;\n return acc;\n }, {});\n}\nfunction updateRenderingContextRefs(ctx) {\n // IDs should not be nullable.\n if (isNullOrUndefined(ctx.id) && ctx.id === ctx.vid) {\n ctx.id = PROVIDER_COUNTER;\n PROVIDER_COUNTER++;\n }\n var id = ctx.id;\n var vid = ctx.vid;\n // Nothing has changed.\n if (ctx.isDeactivated || id === vid && ctx.$_veeObserver.refs[id]) {\n return;\n }\n\n // vid was changed.\n if (id !== vid && ctx.$_veeObserver.refs[id] === ctx) {\n ctx.$_veeObserver.unsubscribe({\n vid: id\n });\n }\n ctx.$_veeObserver.subscribe(ctx);\n ctx.id = vid;\n}\nfunction createObserver() {\n return {\n refs: {},\n subscribe: function subscribe(ctx) {\n this.refs[ctx.vid] = ctx;\n },\n unsubscribe: function unsubscribe(ctx) {\n delete this.refs[ctx.vid];\n }\n };\n}\nfunction watchCrossFieldDep(ctx, depName, withHooks) {\n if (withHooks === void 0) withHooks = true;\n var providers = ctx.$_veeObserver.refs;\n if (!ctx._veeWatchers) {\n ctx._veeWatchers = {};\n }\n if (!providers[depName] && withHooks) {\n return ctx.$once('hook:mounted', function () {\n watchCrossFieldDep(ctx, depName, false);\n });\n }\n if (!isCallable(ctx._veeWatchers[depName]) && providers[depName]) {\n ctx._veeWatchers[depName] = providers[depName].$watch('value', function () {\n if (ctx.flags.validated) {\n ctx._needsValidation = true;\n ctx.validate();\n }\n });\n }\n}\nvar flagMergingStrategy = {\n pristine: 'every',\n dirty: 'some',\n touched: 'some',\n untouched: 'every',\n valid: 'every',\n invalid: 'some',\n pending: 'some',\n validated: 'every'\n};\nfunction mergeFlags(lhs, rhs, strategy) {\n var stratName = flagMergingStrategy[strategy];\n return [lhs, rhs][stratName](function (f) {\n return f;\n });\n}\nvar OBSERVER_COUNTER = 0;\nvar ValidationObserver = {\n name: 'ValidationObserver',\n provide: function provide() {\n return {\n $_veeObserver: this\n };\n },\n inject: {\n $_veeObserver: {\n from: '$_veeObserver',\n \"default\": function default$1() {\n if (!this.$vnode.context.$_veeObserver) {\n return null;\n }\n return this.$vnode.context.$_veeObserver;\n }\n }\n },\n props: {\n tag: {\n type: String,\n \"default\": 'span'\n },\n slim: {\n type: Boolean,\n \"default\": false\n }\n },\n data: function data() {\n return {\n vid: \"obs_\" + OBSERVER_COUNTER++,\n refs: {},\n observers: [],\n persistedStore: {}\n };\n },\n computed: {\n ctx: function ctx() {\n var this$1 = this;\n var ctx = {\n errors: {},\n validate: function validate(arg) {\n var promise = this$1.validate(arg);\n return {\n then: function then(thenable) {\n return promise.then(function (success) {\n if (success && isCallable(thenable)) {\n return Promise.resolve(thenable());\n }\n return Promise.resolve(success);\n });\n }\n };\n },\n reset: function reset() {\n return this$1.reset();\n }\n };\n return values(this.refs).concat(Object.keys(this.persistedStore).map(function (key) {\n return {\n vid: key,\n flags: this$1.persistedStore[key].flags,\n messages: this$1.persistedStore[key].errors\n };\n }), this.observers).reduce(function (acc, provider) {\n Object.keys(flagMergingStrategy).forEach(function (flag) {\n var flags = provider.flags || provider.ctx;\n if (!(flag in acc)) {\n acc[flag] = flags[flag];\n return;\n }\n acc[flag] = mergeFlags(acc[flag], flags[flag], flag);\n });\n acc.errors[provider.vid] = provider.messages || values(provider.ctx.errors).reduce(function (errs, obsErrors) {\n return errs.concat(obsErrors);\n }, []);\n return acc;\n }, ctx);\n }\n },\n created: function created() {\n if (this.$_veeObserver) {\n this.$_veeObserver.subscribe(this, 'observer');\n }\n },\n activated: function activated() {\n if (this.$_veeObserver) {\n this.$_veeObserver.subscribe(this, 'observer');\n }\n },\n deactivated: function deactivated() {\n if (this.$_veeObserver) {\n this.$_veeObserver.unsubscribe(this, 'observer');\n }\n },\n beforeDestroy: function beforeDestroy() {\n if (this.$_veeObserver) {\n this.$_veeObserver.unsubscribe(this, 'observer');\n }\n },\n render: function render(h) {\n var slots = this.$slots[\"default\"] || this.$scopedSlots[\"default\"] || [];\n if (isCallable(slots)) {\n slots = slots(this.ctx);\n }\n return this.slim ? createRenderless(h, slots) : h(this.tag, {\n on: this.$listeners,\n attrs: this.$attrs\n }, slots);\n },\n methods: {\n subscribe: function subscribe(subscriber, kind) {\n var obj;\n if (kind === void 0) kind = 'provider';\n if (kind === 'observer') {\n this.observers.push(subscriber);\n return;\n }\n this.refs = Object.assign({}, this.refs, (obj = {}, obj[subscriber.vid] = subscriber, obj));\n if (subscriber.persist && this.persistedStore[subscriber.vid]) {\n this.restoreProviderState(subscriber);\n }\n },\n unsubscribe: function unsubscribe(ref, kind) {\n var vid = ref.vid;\n if (kind === void 0) kind = 'provider';\n if (kind === 'provider') {\n this.removeProvider(vid);\n }\n var idx = findIndex(this.observers, function (o) {\n return o.vid === vid;\n });\n if (idx !== -1) {\n this.observers.splice(idx, 1);\n }\n },\n validate: function validate(ref) {\n if (ref === void 0) ref = {\n silent: false\n };\n var silent = ref.silent;\n return Promise.all(values(this.refs).map(function (ref) {\n return ref[silent ? 'validateSilent' : 'validate']().then(function (r) {\n return r.valid;\n });\n }).concat(this.observers.map(function (obs) {\n return obs.validate({\n silent: silent\n });\n }))).then(function (results) {\n return results.every(function (r) {\n return r;\n });\n });\n },\n reset: function reset() {\n var this$1 = this;\n Object.keys(this.persistedStore).forEach(function (key) {\n this$1.$delete(this$1.persistedStore, key);\n });\n return values(this.refs).concat(this.observers).forEach(function (ref) {\n return ref.reset();\n });\n },\n restoreProviderState: function restoreProviderState(provider) {\n var state = this.persistedStore[provider.vid];\n provider.setFlags(state.flags);\n provider.applyResult(state);\n this.$delete(this.persistedStore, provider.vid);\n },\n removeProvider: function removeProvider(vid) {\n var obj;\n var provider = this.refs[vid];\n // save it for the next time.\n if (provider && provider.persist) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n if (vid.indexOf('_vee_') === 0) {\n warn('Please provide a `vid` prop when using `persist`, there might be unexpected issues otherwise.');\n }\n }\n this.persistedStore = assign({}, this.persistedStore, (obj = {}, obj[vid] = {\n flags: provider.flags,\n errors: provider.messages,\n failedRules: provider.failedRules\n }, obj));\n }\n this.$delete(this.refs, vid);\n }\n }\n};\nfunction withValidation(component, ctxToProps) {\n if (ctxToProps === void 0) ctxToProps = null;\n var options = isCallable(component) ? component.options : component;\n options.$__veeInject = false;\n var hoc = {\n name: (options.name || 'AnonymousHoc') + \"WithValidation\",\n props: assign({}, ValidationProvider.props),\n data: ValidationProvider.data,\n computed: assign({}, ValidationProvider.computed),\n methods: assign({}, ValidationProvider.methods),\n $__veeInject: false,\n beforeDestroy: ValidationProvider.beforeDestroy,\n inject: ValidationProvider.inject\n };\n\n // Default ctx converts ctx props to component props.\n if (!ctxToProps) {\n ctxToProps = function ctxToProps(ctx) {\n return ctx;\n };\n }\n var eventName = options.model && options.model.event || 'input';\n hoc.render = function (h) {\n var obj;\n this.registerField();\n var vctx = createValidationCtx(this);\n var listeners = assign({}, this.$listeners);\n var model = findModel(this.$vnode);\n this._inputEventName = this._inputEventName || getInputEventName(this.$vnode, model);\n onRenderUpdate.call(this, model);\n var ref = createCommonHandlers(this);\n var onInput = ref.onInput;\n var onBlur = ref.onBlur;\n var onValidate = ref.onValidate;\n mergeVNodeListeners(listeners, eventName, onInput);\n mergeVNodeListeners(listeners, 'blur', onBlur);\n this.normalizedEvents.forEach(function (evt, idx) {\n mergeVNodeListeners(listeners, evt, onValidate);\n });\n\n // Props are any attrs not associated with ValidationProvider Plus the model prop.\n // WARNING: Accidental prop overwrite will probably happen.\n var ref$1 = findModelConfig(this.$vnode) || {\n prop: 'value'\n };\n var prop = ref$1.prop;\n var props = assign({}, this.$attrs, (obj = {}, obj[prop] = model.value, obj), ctxToProps(vctx));\n return h(options, {\n attrs: this.$attrs,\n props: props,\n on: listeners\n }, normalizeSlots(this.$slots, this.$vnode.context));\n };\n return hoc;\n}\nvar version = '2.2.15';\nObject.keys(Rules).forEach(function (rule) {\n Validator.extend(rule, Rules[rule].validate, assign({}, Rules[rule].options, {\n paramNames: Rules[rule].paramNames\n }));\n});\n\n// Merge the english messages.\nValidator.localize({\n en: locale\n});\nvar install = VeeValidate$1.install;\nVeeValidate$1.version = version;\nVeeValidate$1.mapFields = mapFields;\nVeeValidate$1.ValidationProvider = ValidationProvider;\nVeeValidate$1.ValidationObserver = ValidationObserver;\nVeeValidate$1.withValidation = withValidation;\nexport default VeeValidate$1;\nexport { ErrorBag, Rules, ValidationObserver, ValidationProvider, Validator, directive, install, mapFields, mixin, version, withValidation };"],"sourceRoot":""}