{"version":3,"sources":["webpack:///./node_modules/inputmask/dist/inputmask/inputmask.extensions.js","webpack:///./node_modules/inputmask/dist/inputmask/dependencyLibs/inputmask.dependencyLib.js","webpack:///./node_modules/inputmask/dist/inputmask/inputmask.date.extensions.js","webpack:///./node_modules/inputmask/dist/inputmask/inputmask.numeric.extensions.js","webpack:///./node_modules/inputmask/dist/inputmask/inputmask.js","webpack:///./node_modules/inputmask/dist/inputmask/global/window.js","webpack:///./node_modules/inputmask/index.js"],"names":["Inputmask","extendDefinitions","A","validator","casing","extendAliases","cssunit","regex","url","autoUnmask","ip","mask","definitions","i","chrs","maskset","pos","strict","opts","buffer","RegExp","test","onUnMask","maskedValue","unmaskedValue","inputmode","email","greedy","onBeforePaste","pastedValue","toLowerCase","replace","mac","vin","V","clearIncomplete","window","document","isWindow","obj","isValidElement","elem","Element","DependencyLib","this","nodeName","undefined","querySelector","eventRegistry","prototype","on","events","handler","addEvent","ev","namespace","addEventListener","attachEvent","push","_events","split","endx","length","nsEvent","off","removeEvent","removeEventListener","detachEvent","nmsp","splice","indexOf","resolveNamespace","hndx","hndL","evts","evNdx","offEvents","offEventsL","trigger","type","evnt","params","bubbles","cancelable","detail","arguments","createEvent","CustomEvent","e","initCustomEvent","extend","dispatchEvent","createEventObject","eventType","fireEvent","Event","apply","isFunction","noop","isArray","Array","inArray","arr","list","len","valHooks","isPlainObject","nodeType","constructor","Object","hasOwnProperty","call","options","name","src","copy","copyIsArray","clone","target","deep","each","callback","ltype","isArraylike","data","owner","key","value","__data","event","evt","$","dependencyLib","formatCode","d","Date","setDate","getDate","dd","pad","ddd","dddd","m","setMonth","getMonth","mm","mmm","mmmm","yy","setFullYear","getFullYear","yyyy","h","setHours","getHours","hh","hhh","H","HH","HHH","M","setMinutes","getMinutes","MM","ss","setSeconds","getSeconds","l","setMilliseconds","getMilliseconds","L","t","tt","T","TT","Z","o","S","formatAlias","isoDate","isoTime","isoDateTime","isoUtcDateTime","getTokenizer","tokenizer","tokens","ndx","join","parse","format","dateObjValue","raw","match","exec","escapeRegex","date","val","String","analyseMask","maskString","targetProp","dateOperation","dateObj","extendProperty","correctedValue","enteredPart","min","toString","max","slice","setValue","parseInt","datetime","i18n","ordinalSuffix","inputFormat","displayFormat","outputFormat","placeholder","dayNames","monthNames","postValidation","currentResult","result","dateParts","getTime","isFinite","rawday","day","rawyear","rawmonth","month","isValidDate","rawYear","minYear","year","substr","isDateInRange","refreshFromBuffer","start","end","onKeyDown","caretPos","ctrlKey","keyCode","RIGHT","today","charAt","getYear","inputmask","_valueSet","validPositions","nativeDef","toUpperCase","insertMode","shiftPositions","autoEscape","txt","escapedTxt","optionalmarker","quantifiermarker","groupmarker","alternatormarker","numeric","repeat","isNaN","integerDigits","groupSeparator","radixPoint","digits","skipOptionalPartCharacter","autoGroup","groupSize","seps","Math","floor","mod","positionCaretOnClick","integerOptional","definitionSymbol","numericInput","digitsOptional","decimalProtect","prefix","radixDef","dq","suffix","enforceDigitsOnBlur","allowMinus","negationSymbol","front","back","rightAlign","step","unmaskAsNumber","inputType","preValidation","c","isSelection","isNegative","caret","dopost","radixPos","reverse","charAtPos","processValue","radixPosition","rpb","addRadix","postMask","radixSplit","buildPostMask","jitMasking","cardinality","newCaretPos","rslt","onBeforeWrite","unmasked","parseMinMaxOptions","parseFloat","NaN","Number","MIN_VALUE","MAX_VALUE","integerPart","emptyCheck","integerNPart","isValid","insert","def","pvRadixSplit","bufferTemplate","_buffer","remove","radix","nullable","isComplete","onBeforeMask","initialValue","valueParts","decimalPart","digitsFactor","pow","round","substring","alignDigits","$input","UP","unmaskedvalue","DOWN","currency","alias","clearMaskOnLostFocus","decimal","integer","percentage","ua","navigator","userAgent","ie","mobile","isInputEventSupported","iemobile","iphone","internal","el","refreshValue","defaults","noMasksCache","userOptions","isRTL","resolveAlias","aliasStr","aliasDefinition","aliases","generateMaskSet","nocache","generateMask","metadata","regexMask","repeatStart","masksetDefinition","maskdefKey","masksCache","maskToken","tests","excludes","maskLength","jitOffset","keepStatic","altMask","msk","pop","eventName","createElement","evName","isSupported","setAttribute","maskScope","actionObj","undoValue","$el","maxLength","colorMask","originalPlaceholder","skipKeyPressEvent","skipInputEvent","ignorable","mouseEnter","getMaskTemplate","baseOnInput","minimalPos","includeMode","noJit","clearOptionalTail","ndxIntlzr","testPos","maskTemplate","getLastValidPosition","getMaskSet","optionality","generatedInput","input","determineTestTemplate","getTests","locator","getPlaceholder","getTestTemplate","jit","newBlockMarker","fn","resetMaskSet","soft","p","closestTo","before","after","valids","posNdx","psNdx","getDecisionTaker","tst","decisionTaker","alternation","getLocator","align","mloc","tstLocator","closest","bestMatch","targetLocator","getTest","distance","abs","optionalQuantifier","tstPs","positionCanMatchDefinition","valid","tndx","latestMatch","maskTokens","ndxInitializer","matches","insertStop","cacheDependency","resolveTestFromToken","loopNdx","quantifierRecurse","handleMatch","isFirstMatch","tokenGroup","firstMatch","isQuantifier","resolveNdxInitializer","alternateNdx","targetAlternation","indexPos","lmnt","ndxPos","bestMatchAltIndex","isSubsetOf","source","expand","pattern","expanded","charCodeAt","fromCharCode","setMergeLocators","targetMatch","altMatch","locNdx","keys","cd","isGroup","isOptional","optionalToken","mtch","isAlternator","maltMatches","alternateToken","malternateMatches","currentMatches","loopNdxCnt","altIndex","shift","amndx","currentPos","ndxInitializerClone","altIndexArr","altIndexArrClone","unMatchedAlternation","concat","ndx1","dropMatch","ndx2","altMatch2","qt","qndx","quantifier","previousPos","mergeLocators","mtndx","getBufferTemplate","getBuffer","noCache","valResult","posBefore","SPACE","args","checkAlternationMatch","altArr1","altArr2","na","naNdx","altArrC","isMatch","naArr","alndx","alternate","fromSetValid","rAltPos","lastAlt","altPos","prevAltPos","validPos","decisionPos","validPsClone","isValidRslt","lAltPos","validInputsClone","staticInputsBeforePos","posOffset","validInputs","targetLvp","fromAlternate","validateOnly","posObj","begin","maskPos","_isValid","position","validatedPos","sort","a","b","revalidateMask","positionsClone","trackbackPositions","currentPosValid","seekNext","isMask","nPos","snPos","postResult","refresh","originalPos","newPos","fillOnly","ps","cvpInput","validTest","IsEnclosedStatic","selection","posMatch","prevMatch","nextMatch","lvp","j","needsValidation","newBlock","seekPrevious","writeBuffer","triggerEvents","renderColorMask","nptVal","_valueGet","setTimeout","returnPL","prevTest","staticAlternations","HandleNativePlaceholder","npt","nptValue","removeAttribute","valueBuffer","EventRuler","eventHandler","that","imOpts","disabled","readOnly","tabThrough","TAB","preventDefault","returnVal","stopPropagation","form","evArr","EventHandlers","keydownEvent","k","BACKSPACE","DELETE","BACKSPACE_SAFARI","X","handleRemove","END","PAGE_DOWN","shiftKey","HOME","PAGE_UP","undoOnEscape","ESCAPE","altKey","checkVal","INSERT","ignorables","keypressEvent","checkval","writeOut","which","charCode","metaKey","ENTER","forwardPosition","offset","_radixDance","writeOutBuffer","onKeyValidation","pasteEvent","tempValue","originalEvent","inputValue","valueBeforeCaret","valueAfterCaret","clipboardData","getData","pasteValue","inputFallBackEvent","inputChar","iv","ieMobileHandler","radixPointHandler","frontPart","backPart","frontBufferPart","backBufferPart","entries","isEntry","fpl","entry","keypress","keydown","beforeInputEvent","setValueEvent","focusEvent","showMaskOnFocus","positionCaretOnTab","clickEvent","mouseleaveEvent","activeElement","tabbed","selectedCaret","clickPos","vps","vp","doRadixFocus","clickPosition","lvclickPosition","lastPosition","cutEvent","clipData","setData","execCommand","blurEvent","mouseenterEvent","showMaskOnHover","submitEvent","removeMaskOnSubmit","resetEvent","nptvl","initiatingEvent","charCodes","initialNdx","staticInput","isTemplateMatch","umValue","pndx","bufferValue","notranslate","translatePosition","range","selectionStart","selectionEnd","getSelection","getRangeAt","commonAncestorContainer","parentNode","startOffset","endOffset","createRange","duplicate","moveStart","text","scrollCalc","ownerDocument","defaultView","getComputedStyle","currentStyle","fontSize","scrollLeft","scrollWidth","firstChild","textNode","createTextNode","appendChild","setStart","setEnd","collapse","sel","removeAllRanges","addRange","createTextRange","moveEnd","select","determineLastRequiredPosition","returnDefinition","bl","positions","lvTest","lvTestAlt","template","complete","lrp","aml","fromIsValid","pend","initializeColorMask","computedStyle","style","width","textAlign","className","insertBefore","removeChild","left","offsetLeft","clientx","textTransform","letterSpacing","height","visibility","whiteSpace","body","itl","inputText","previousWidth","innerHTML","offsetWidth","offset1","offset2","findCaretPos","clientX","clear","isStatic","setEntry","mtl","getElementsByTagName","positionColorMask","action","elementType","getAttribute","tagName","supportsInputType","isContentEditable","valueGet","valueSet","getter","setter","__valueGet","noValuePatching","getOwnPropertyDescriptor","getPrototypeOf","__proto__","object","valueProperty","get","set","defineProperty","configurable","textContent","__lookupGetter__","__lookupSetter__","__defineGetter__","__defineSetter__","__valueSet","overruleRTL","inputmaskpatch","valhookGet","valhookSet","$elem","patchValhook","installNativeValueSetFallback","patchValueProperty","isElementTypeSupported","disablePredictiveText","autocorrect","oncomplete","onincomplete","oncleared","inputEventOnly","rl","lmib","maskTarget","mtdt","dataAttribute","escapeChar","staticDefinitionSymbol","importDataAttributes","9","elems","getElementById","querySelectorAll","scopedOpts","option","dataoptions","optionData","attrOptions","importOption","JSON","dir","importAttributeOptions","noremask","getemptymask","hasMaskedValue","getmetadata","openingToken","currentOpeningToken","alternator","lastMatch","regexTokenizer","escaped","currentToken","MaskToken","openenings","openGroup","alternatorGroup","insertTestDefinition","mtoken","element","maskdef","defaultCase","mndx","groupify","groupToken","mqj","mq","mq0","mq1","tmpMatch","groupQuantifier","subToken","verifyGroupMarker","token","nextToken","reverseTokens","intMatch","st","extendDefaults","definition","unmask","str","LEFT","CONTROL","eval","module","exports"],"mappings":"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","file":"npm.inputmask.fc0e8e1a6e018dc3515f.js","sourcesContent":["/*!\n* inputmask.extensions.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.8\n*/\n\n(function(factory) {\n if (typeof define === \"function\" && define.amd) {\n define([ \"./inputmask\" ], factory);\n } else if (typeof exports === \"object\") {\n module.exports = factory(require(\"./inputmask\"));\n } else {\n factory(window.Inputmask);\n }\n})(function(Inputmask) {\n Inputmask.extendDefinitions({\n A: {\n validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n casing: \"upper\"\n },\n \"&\": {\n validator: \"[0-9A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n casing: \"upper\"\n },\n \"#\": {\n validator: \"[0-9A-Fa-f]\",\n casing: \"upper\"\n }\n });\n Inputmask.extendAliases({\n cssunit: {\n regex: \"[+-]?[0-9]+\\\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)\"\n },\n url: {\n regex: \"(https?|ftp)//.*\",\n autoUnmask: false\n },\n ip: {\n mask: \"i[i[i]].i[i[i]].i[i[i]].i[i[i]]\",\n definitions: {\n i: {\n validator: function(chrs, maskset, pos, strict, opts) {\n if (pos - 1 > -1 && maskset.buffer[pos - 1] !== \".\") {\n chrs = maskset.buffer[pos - 1] + chrs;\n if (pos - 2 > -1 && maskset.buffer[pos - 2] !== \".\") {\n chrs = maskset.buffer[pos - 2] + chrs;\n } else chrs = \"0\" + chrs;\n } else chrs = \"00\" + chrs;\n return new RegExp(\"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\").test(chrs);\n }\n }\n },\n onUnMask: function(maskedValue, unmaskedValue, opts) {\n return maskedValue;\n },\n inputmode: \"numeric\"\n },\n email: {\n mask: \"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]\",\n greedy: false,\n casing: \"lower\",\n onBeforePaste: function(pastedValue, opts) {\n pastedValue = pastedValue.toLowerCase();\n return pastedValue.replace(\"mailto:\", \"\");\n },\n definitions: {\n \"*\": {\n validator: \"[0-9\\uff11-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5!#$%&'*+/=?^_`{|}~-]\"\n },\n \"-\": {\n validator: \"[0-9A-Za-z-]\"\n }\n },\n onUnMask: function(maskedValue, unmaskedValue, opts) {\n return maskedValue;\n },\n inputmode: \"email\"\n },\n mac: {\n mask: \"##:##:##:##:##:##\"\n },\n vin: {\n mask: \"V{13}9{4}\",\n definitions: {\n V: {\n validator: \"[A-HJ-NPR-Za-hj-npr-z\\\\d]\",\n casing: \"upper\"\n }\n },\n clearIncomplete: true,\n autoUnmask: true\n }\n });\n return Inputmask;\n});","/*!\n* dependencyLibs/inputmask.dependencyLib.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.8\n*/\n\n(function(factory) {\n if (typeof define === \"function\" && define.amd) {\n define([ \"../global/window\" ], factory);\n } else if (typeof exports === \"object\") {\n module.exports = factory(require(\"../global/window\"));\n } else {\n window.dependencyLib = factory(window);\n }\n})(function(window) {\n var document = window.document;\n function indexOf(list, elem) {\n var i = 0, len = list.length;\n for (;i < len; i++) {\n if (list[i] === elem) {\n return i;\n }\n }\n return -1;\n }\n function isWindow(obj) {\n return obj != null && obj === obj.window;\n }\n function isArraylike(obj) {\n var length = \"length\" in obj && obj.length, ltype = typeof obj;\n if (ltype === \"function\" || isWindow(obj)) {\n return false;\n }\n if (obj.nodeType === 1 && length) {\n return true;\n }\n return ltype === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n function isValidElement(elem) {\n return elem instanceof Element;\n }\n function DependencyLib(elem) {\n if (elem instanceof DependencyLib) {\n return elem;\n }\n if (!(this instanceof DependencyLib)) {\n return new DependencyLib(elem);\n }\n if (elem !== undefined && elem !== null && elem !== window) {\n this[0] = elem.nodeName ? elem : elem[0] !== undefined && elem[0].nodeName ? elem[0] : document.querySelector(elem);\n if (this[0] !== undefined && this[0] !== null) {\n this[0].eventRegistry = this[0].eventRegistry || {};\n }\n }\n }\n function getWindow(elem) {\n return isWindow(elem) ? elem : elem.nodeType === 9 ? elem.defaultView || elem.parentWindow : false;\n }\n DependencyLib.prototype = {\n on: function(events, handler) {\n if (isValidElement(this[0])) {\n var eventRegistry = this[0].eventRegistry, elem = this[0];\n var addEvent = function(ev, namespace) {\n if (elem.addEventListener) {\n elem.addEventListener(ev, handler, false);\n } else if (elem.attachEvent) {\n elem.attachEvent(\"on\" + ev, handler);\n }\n eventRegistry[ev] = eventRegistry[ev] || {};\n eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || [];\n eventRegistry[ev][namespace].push(handler);\n };\n var _events = events.split(\" \");\n for (var endx = 0; endx < _events.length; endx++) {\n var nsEvent = _events[endx].split(\".\"), ev = nsEvent[0], namespace = nsEvent[1] || \"global\";\n addEvent(ev, namespace);\n }\n }\n return this;\n },\n off: function(events, handler) {\n if (isValidElement(this[0])) {\n var eventRegistry = this[0].eventRegistry, elem = this[0];\n var removeEvent = function(ev, namespace, handler) {\n if (ev in eventRegistry === true) {\n if (elem.removeEventListener) {\n elem.removeEventListener(ev, handler, false);\n } else if (elem.detachEvent) {\n elem.detachEvent(\"on\" + ev, handler);\n }\n if (namespace === \"global\") {\n for (var nmsp in eventRegistry[ev]) {\n eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler), 1);\n }\n } else {\n eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler), 1);\n }\n }\n };\n var resolveNamespace = function(ev, namespace) {\n var evts = [], hndx, hndL;\n if (ev.length > 0) {\n if (handler === undefined) {\n for (hndx = 0, hndL = eventRegistry[ev][namespace].length; hndx < hndL; hndx++) {\n evts.push({\n ev: ev,\n namespace: namespace && namespace.length > 0 ? namespace : \"global\",\n handler: eventRegistry[ev][namespace][hndx]\n });\n }\n } else {\n evts.push({\n ev: ev,\n namespace: namespace && namespace.length > 0 ? namespace : \"global\",\n handler: handler\n });\n }\n } else if (namespace.length > 0) {\n for (var evNdx in eventRegistry) {\n for (var nmsp in eventRegistry[evNdx]) {\n if (nmsp === namespace) {\n if (handler === undefined) {\n for (hndx = 0, hndL = eventRegistry[evNdx][nmsp].length; hndx < hndL; hndx++) {\n evts.push({\n ev: evNdx,\n namespace: nmsp,\n handler: eventRegistry[evNdx][nmsp][hndx]\n });\n }\n } else {\n evts.push({\n ev: evNdx,\n namespace: nmsp,\n handler: handler\n });\n }\n }\n }\n }\n }\n return evts;\n };\n var _events = events.split(\" \");\n for (var endx = 0; endx < _events.length; endx++) {\n var nsEvent = _events[endx].split(\".\"), offEvents = resolveNamespace(nsEvent[0], nsEvent[1]);\n for (var i = 0, offEventsL = offEvents.length; i < offEventsL; i++) {\n removeEvent(offEvents[i].ev, offEvents[i].namespace, offEvents[i].handler);\n }\n }\n }\n return this;\n },\n trigger: function(events) {\n if (isValidElement(this[0])) {\n var eventRegistry = this[0].eventRegistry, elem = this[0];\n var _events = typeof events === \"string\" ? events.split(\" \") : [ events.type ];\n for (var endx = 0; endx < _events.length; endx++) {\n var nsEvent = _events[endx].split(\".\"), ev = nsEvent[0], namespace = nsEvent[1] || \"global\";\n if (document !== undefined && namespace === \"global\") {\n var evnt, i, params = {\n bubbles: true,\n cancelable: true,\n detail: arguments[1]\n };\n if (document.createEvent) {\n try {\n evnt = new CustomEvent(ev, params);\n } catch (e) {\n evnt = document.createEvent(\"CustomEvent\");\n evnt.initCustomEvent(ev, params.bubbles, params.cancelable, params.detail);\n }\n if (events.type) DependencyLib.extend(evnt, events);\n elem.dispatchEvent(evnt);\n } else {\n evnt = document.createEventObject();\n evnt.eventType = ev;\n evnt.detail = arguments[1];\n if (events.type) DependencyLib.extend(evnt, events);\n elem.fireEvent(\"on\" + evnt.eventType, evnt);\n }\n } else if (eventRegistry[ev] !== undefined) {\n arguments[0] = arguments[0].type ? arguments[0] : DependencyLib.Event(arguments[0]);\n if (namespace === \"global\") {\n for (var nmsp in eventRegistry[ev]) {\n for (i = 0; i < eventRegistry[ev][nmsp].length; i++) {\n eventRegistry[ev][nmsp][i].apply(elem, arguments);\n }\n }\n } else {\n for (i = 0; i < eventRegistry[ev][namespace].length; i++) {\n eventRegistry[ev][namespace][i].apply(elem, arguments);\n }\n }\n }\n }\n }\n return this;\n }\n };\n DependencyLib.isFunction = function(obj) {\n return typeof obj === \"function\";\n };\n DependencyLib.noop = function() {};\n DependencyLib.isArray = Array.isArray;\n DependencyLib.inArray = function(elem, arr, i) {\n return arr == null ? -1 : indexOf(arr, elem, i);\n };\n DependencyLib.valHooks = undefined;\n DependencyLib.isPlainObject = function(obj) {\n if (typeof obj !== \"object\" || obj.nodeType || isWindow(obj)) {\n return false;\n }\n if (obj.constructor && !Object.hasOwnProperty.call(obj.constructor.prototype, \"isPrototypeOf\")) {\n return false;\n }\n return true;\n };\n DependencyLib.extend = function() {\n var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false;\n if (typeof target === \"boolean\") {\n deep = target;\n target = arguments[i] || {};\n i++;\n }\n if (typeof target !== \"object\" && !DependencyLib.isFunction(target)) {\n target = {};\n }\n if (i === length) {\n target = this;\n i--;\n }\n for (;i < length; i++) {\n if ((options = arguments[i]) != null) {\n for (name in options) {\n src = target[name];\n copy = options[name];\n if (target === copy) {\n continue;\n }\n if (deep && copy && (DependencyLib.isPlainObject(copy) || (copyIsArray = DependencyLib.isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && DependencyLib.isArray(src) ? src : [];\n } else {\n clone = src && DependencyLib.isPlainObject(src) ? src : {};\n }\n target[name] = DependencyLib.extend(deep, clone, copy);\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n };\n DependencyLib.each = function(obj, callback) {\n var value, i = 0;\n if (isArraylike(obj)) {\n for (var length = obj.length; i < length; i++) {\n value = callback.call(obj[i], i, obj[i]);\n if (value === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n value = callback.call(obj[i], i, obj[i]);\n if (value === false) {\n break;\n }\n }\n }\n return obj;\n };\n DependencyLib.data = function(owner, key, value) {\n if (value === undefined) {\n return owner.__data ? owner.__data[key] : null;\n } else {\n owner.__data = owner.__data || {};\n owner.__data[key] = value;\n }\n };\n if (typeof window.CustomEvent === \"function\") {\n DependencyLib.Event = window.CustomEvent;\n } else {\n DependencyLib.Event = function(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n DependencyLib.Event.prototype = window.Event.prototype;\n }\n return DependencyLib;\n});","/*!\n* inputmask.date.extensions.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.8\n*/\n\n(function(factory) {\n if (typeof define === \"function\" && define.amd) {\n define([ \"./inputmask\" ], factory);\n } else if (typeof exports === \"object\") {\n module.exports = factory(require(\"./inputmask\"));\n } else {\n factory(window.Inputmask);\n }\n})(function(Inputmask) {\n var $ = Inputmask.dependencyLib;\n var formatCode = {\n d: [ \"[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", Date.prototype.getDate ],\n dd: [ \"0[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", function() {\n return pad(Date.prototype.getDate.call(this), 2);\n } ],\n ddd: [ \"\" ],\n dddd: [ \"\" ],\n m: [ \"[1-9]|1[012]\", Date.prototype.setMonth, \"month\", function() {\n return Date.prototype.getMonth.call(this) + 1;\n } ],\n mm: [ \"0[1-9]|1[012]\", Date.prototype.setMonth, \"month\", function() {\n return pad(Date.prototype.getMonth.call(this) + 1, 2);\n } ],\n mmm: [ \"\" ],\n mmmm: [ \"\" ],\n yy: [ \"[0-9]{2}\", Date.prototype.setFullYear, \"year\", function() {\n return pad(Date.prototype.getFullYear.call(this), 2);\n } ],\n yyyy: [ \"[0-9]{4}\", Date.prototype.setFullYear, \"year\", function() {\n return pad(Date.prototype.getFullYear.call(this), 4);\n } ],\n h: [ \"[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n hh: [ \"0[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", function() {\n return pad(Date.prototype.getHours.call(this), 2);\n } ],\n hhh: [ \"[0-9]+\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n H: [ \"1?[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n HH: [ \"0[0-9]|1[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", function() {\n return pad(Date.prototype.getHours.call(this), 2);\n } ],\n HHH: [ \"[0-9]+\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n M: [ \"[1-5]?[0-9]\", Date.prototype.setMinutes, \"minutes\", Date.prototype.getMinutes ],\n MM: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setMinutes, \"minutes\", function() {\n return pad(Date.prototype.getMinutes.call(this), 2);\n } ],\n ss: [ \"[0-5][0-9]\", Date.prototype.setSeconds, \"seconds\", function() {\n return pad(Date.prototype.getSeconds.call(this), 2);\n } ],\n l: [ \"[0-9]{3}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n return pad(Date.prototype.getMilliseconds.call(this), 3);\n } ],\n L: [ \"[0-9]{2}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n return pad(Date.prototype.getMilliseconds.call(this), 2);\n } ],\n t: [ \"[ap]\" ],\n tt: [ \"[ap]m\" ],\n T: [ \"[AP]\" ],\n TT: [ \"[AP]M\" ],\n Z: [ \"\" ],\n o: [ \"\" ],\n S: [ \"\" ]\n }, formatAlias = {\n isoDate: \"yyyy-mm-dd\",\n isoTime: \"HH:MM:ss\",\n isoDateTime: \"yyyy-mm-dd'T'HH:MM:ss\",\n isoUtcDateTime: \"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\"\n };\n function getTokenizer(opts) {\n if (!opts.tokenizer) {\n var tokens = [];\n for (var ndx in formatCode) {\n if (tokens.indexOf(ndx[0]) === -1) tokens.push(ndx[0]);\n }\n opts.tokenizer = \"(\" + tokens.join(\"+|\") + \")+?|.\";\n opts.tokenizer = new RegExp(opts.tokenizer, \"g\");\n }\n return opts.tokenizer;\n }\n function isValidDate(dateParts, currentResult) {\n return !isFinite(dateParts.rawday) || dateParts.day == \"29\" && !isFinite(dateParts.rawyear) || new Date(dateParts.date.getFullYear(), isFinite(dateParts.rawmonth) ? dateParts.month : dateParts.date.getMonth() + 1, 0).getDate() >= dateParts.day ? currentResult : false;\n }\n function isDateInRange(dateParts, opts) {\n var result = true;\n if (opts.min) {\n if (dateParts[\"rawyear\"]) {\n var rawYear = dateParts[\"rawyear\"].replace(/[^0-9]/g, \"\"), minYear = opts.min.year.substr(0, rawYear.length);\n result = minYear <= rawYear;\n }\n if (dateParts[\"year\"] === dateParts[\"rawyear\"]) {\n if (opts.min.date.getTime() === opts.min.date.getTime()) {\n result = opts.min.date.getTime() <= dateParts.date.getTime();\n }\n }\n }\n if (result && opts.max && opts.max.date.getTime() === opts.max.date.getTime()) {\n result = opts.max.date.getTime() >= dateParts.date.getTime();\n }\n return result;\n }\n function parse(format, dateObjValue, opts, raw) {\n var mask = \"\", match;\n while (match = getTokenizer(opts).exec(format)) {\n if (dateObjValue === undefined) {\n if (formatCode[match[0]]) {\n mask += \"(\" + formatCode[match[0]][0] + \")\";\n } else {\n switch (match[0]) {\n case \"[\":\n mask += \"(\";\n break;\n\n case \"]\":\n mask += \")?\";\n break;\n\n default:\n mask += Inputmask.escapeRegex(match[0]);\n }\n }\n } else {\n if (formatCode[match[0]]) {\n if (raw !== true && formatCode[match[0]][3]) {\n var getFn = formatCode[match[0]][3];\n mask += getFn.call(dateObjValue.date);\n } else if (formatCode[match[0]][2]) mask += dateObjValue[\"raw\" + formatCode[match[0]][2]]; else mask += match[0];\n } else mask += match[0];\n }\n }\n return mask;\n }\n function pad(val, len) {\n val = String(val);\n len = len || 2;\n while (val.length < len) val = \"0\" + val;\n return val;\n }\n function analyseMask(maskString, format, opts) {\n var dateObj = {\n date: new Date(1, 0, 1)\n }, targetProp, mask = maskString, match, dateOperation, targetValidator;\n function extendProperty(value) {\n var correctedValue = value.replace(/[^0-9]/g, \"0\");\n if (correctedValue != value) {\n var enteredPart = value.replace(/[^0-9]/g, \"\"), min = (opts.min && opts.min[targetProp] || value).toString(), max = (opts.max && opts.max[targetProp] || value).toString();\n correctedValue = enteredPart + (enteredPart < min.slice(0, enteredPart.length) ? min.slice(enteredPart.length) : enteredPart > max.slice(0, enteredPart.length) ? max.slice(enteredPart.length) : correctedValue.toString().slice(enteredPart.length));\n }\n return correctedValue;\n }\n function setValue(dateObj, value, opts) {\n dateObj[targetProp] = extendProperty(value);\n dateObj[\"raw\" + targetProp] = value;\n if (dateOperation !== undefined) dateOperation.call(dateObj.date, targetProp == \"month\" ? parseInt(dateObj[targetProp]) - 1 : dateObj[targetProp]);\n }\n if (typeof mask === \"string\") {\n while (match = getTokenizer(opts).exec(format)) {\n var value = mask.slice(0, match[0].length);\n if (formatCode.hasOwnProperty(match[0])) {\n targetValidator = formatCode[match[0]][0];\n targetProp = formatCode[match[0]][2];\n dateOperation = formatCode[match[0]][1];\n setValue(dateObj, value, opts);\n }\n mask = mask.slice(value.length);\n }\n return dateObj;\n } else if (mask && typeof mask === \"object\" && mask.hasOwnProperty(\"date\")) {\n return mask;\n }\n return undefined;\n }\n Inputmask.extendAliases({\n datetime: {\n mask: function(opts) {\n formatCode.S = opts.i18n.ordinalSuffix.join(\"|\");\n opts.inputFormat = formatAlias[opts.inputFormat] || opts.inputFormat;\n opts.displayFormat = formatAlias[opts.displayFormat] || opts.displayFormat || opts.inputFormat;\n opts.outputFormat = formatAlias[opts.outputFormat] || opts.outputFormat || opts.inputFormat;\n opts.placeholder = opts.placeholder !== \"\" ? opts.placeholder : opts.inputFormat.replace(/[\\[\\]]/, \"\");\n opts.regex = parse(opts.inputFormat, undefined, opts);\n return null;\n },\n placeholder: \"\",\n inputFormat: \"isoDateTime\",\n displayFormat: undefined,\n outputFormat: undefined,\n min: null,\n max: null,\n i18n: {\n dayNames: [ \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\" ],\n monthNames: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\", \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n ordinalSuffix: [ \"st\", \"nd\", \"rd\", \"th\" ]\n },\n postValidation: function(buffer, pos, currentResult, opts) {\n opts.min = analyseMask(opts.min, opts.inputFormat, opts);\n opts.max = analyseMask(opts.max, opts.inputFormat, opts);\n var result = currentResult, dateParts = analyseMask(buffer.join(\"\"), opts.inputFormat, opts);\n if (result && dateParts.date.getTime() === dateParts.date.getTime()) {\n result = isValidDate(dateParts, result);\n result = result && isDateInRange(dateParts, opts);\n }\n if (pos && result && currentResult.pos !== pos) {\n return {\n buffer: parse(opts.inputFormat, dateParts, opts),\n refreshFromBuffer: {\n start: pos,\n end: currentResult.pos\n }\n };\n }\n return result;\n },\n onKeyDown: function(e, buffer, caretPos, opts) {\n var input = this;\n if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {\n var today = new Date(), match, date = \"\";\n while (match = getTokenizer(opts).exec(opts.inputFormat)) {\n if (match[0].charAt(0) === \"d\") {\n date += pad(today.getDate(), match[0].length);\n } else if (match[0].charAt(0) === \"m\") {\n date += pad(today.getMonth() + 1, match[0].length);\n } else if (match[0] === \"yyyy\") {\n date += today.getFullYear().toString();\n } else if (match[0].charAt(0) === \"y\") {\n date += pad(today.getYear(), match[0].length);\n }\n }\n input.inputmask._valueSet(date);\n $(input).trigger(\"setvalue\");\n }\n },\n onUnMask: function(maskedValue, unmaskedValue, opts) {\n return parse(opts.outputFormat, analyseMask(maskedValue, opts.inputFormat, opts), opts, true);\n },\n casing: function(elem, test, pos, validPositions) {\n if (test.nativeDef.indexOf(\"[ap]\") == 0) return elem.toLowerCase();\n if (test.nativeDef.indexOf(\"[AP]\") == 0) return elem.toUpperCase();\n return elem;\n },\n insertMode: false,\n shiftPositions: false\n }\n });\n return Inputmask;\n});","/*!\n* inputmask.numeric.extensions.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.8\n*/\n\n(function(factory) {\n if (typeof define === \"function\" && define.amd) {\n define([ \"./inputmask\" ], factory);\n } else if (typeof exports === \"object\") {\n module.exports = factory(require(\"./inputmask\"));\n } else {\n factory(window.Inputmask);\n }\n})(function(Inputmask) {\n var $ = Inputmask.dependencyLib;\n function autoEscape(txt, opts) {\n var escapedTxt = \"\";\n for (var i = 0; i < txt.length; i++) {\n if (Inputmask.prototype.definitions[txt.charAt(i)] || opts.definitions[txt.charAt(i)] || opts.optionalmarker.start === txt.charAt(i) || opts.optionalmarker.end === txt.charAt(i) || opts.quantifiermarker.start === txt.charAt(i) || opts.quantifiermarker.end === txt.charAt(i) || opts.groupmarker.start === txt.charAt(i) || opts.groupmarker.end === txt.charAt(i) || opts.alternatormarker === txt.charAt(i)) {\n escapedTxt += \"\\\\\" + txt.charAt(i);\n } else escapedTxt += txt.charAt(i);\n }\n return escapedTxt;\n }\n function alignDigits(buffer, digits, opts) {\n if (digits > 0) {\n var radixPosition = $.inArray(opts.radixPoint, buffer);\n if (radixPosition === -1) {\n buffer.push(opts.radixPoint);\n radixPosition = buffer.length - 1;\n }\n for (var i = 1; i <= digits; i++) {\n buffer[radixPosition + i] = buffer[radixPosition + i] || \"0\";\n }\n }\n return buffer;\n }\n Inputmask.extendAliases({\n numeric: {\n mask: function(opts) {\n if (opts.repeat !== 0 && isNaN(opts.integerDigits)) {\n opts.integerDigits = opts.repeat;\n }\n opts.repeat = 0;\n if (opts.groupSeparator === opts.radixPoint && opts.digits && opts.digits !== \"0\") {\n if (opts.radixPoint === \".\") {\n opts.groupSeparator = \",\";\n } else if (opts.radixPoint === \",\") {\n opts.groupSeparator = \".\";\n } else opts.groupSeparator = \"\";\n }\n if (opts.groupSeparator === \" \") {\n opts.skipOptionalPartCharacter = undefined;\n }\n opts.autoGroup = opts.autoGroup && opts.groupSeparator !== \"\";\n if (opts.autoGroup) {\n if (typeof opts.groupSize == \"string\" && isFinite(opts.groupSize)) opts.groupSize = parseInt(opts.groupSize);\n if (isFinite(opts.integerDigits)) {\n var seps = Math.floor(opts.integerDigits / opts.groupSize);\n var mod = opts.integerDigits % opts.groupSize;\n opts.integerDigits = parseInt(opts.integerDigits) + (mod === 0 ? seps - 1 : seps);\n if (opts.integerDigits < 1) {\n opts.integerDigits = \"*\";\n }\n }\n }\n if (opts.placeholder.length > 1) {\n opts.placeholder = opts.placeholder.charAt(0);\n }\n if (opts.positionCaretOnClick === \"radixFocus\" && (opts.placeholder === \"\" && opts.integerOptional === false)) {\n opts.positionCaretOnClick = \"lvp\";\n }\n opts.definitions[\";\"] = opts.definitions[\"~\"];\n opts.definitions[\";\"].definitionSymbol = \"~\";\n if (opts.numericInput === true) {\n opts.positionCaretOnClick = opts.positionCaretOnClick === \"radixFocus\" ? \"lvp\" : opts.positionCaretOnClick;\n opts.digitsOptional = false;\n if (isNaN(opts.digits)) opts.digits = 2;\n opts.decimalProtect = false;\n }\n var mask = \"[+]\";\n mask += autoEscape(opts.prefix, opts);\n if (opts.integerOptional === true) {\n mask += \"~{1,\" + opts.integerDigits + \"}\";\n } else mask += \"~{\" + opts.integerDigits + \"}\";\n if (opts.digits !== undefined) {\n var radixDef = opts.decimalProtect ? \":\" : opts.radixPoint;\n var dq = opts.digits.toString().split(\",\");\n if (isFinite(dq[0]) && dq[1] && isFinite(dq[1])) {\n mask += radixDef + \";{\" + opts.digits + \"}\";\n } else if (isNaN(opts.digits) || parseInt(opts.digits) > 0) {\n if (opts.digitsOptional) {\n mask += \"[\" + radixDef + \";{1,\" + opts.digits + \"}]\";\n } else mask += radixDef + \";{\" + opts.digits + \"}\";\n }\n }\n mask += autoEscape(opts.suffix, opts);\n mask += \"[-]\";\n opts.greedy = false;\n return mask;\n },\n placeholder: \"\",\n greedy: false,\n digits: \"*\",\n digitsOptional: true,\n enforceDigitsOnBlur: false,\n radixPoint: \".\",\n positionCaretOnClick: \"radixFocus\",\n groupSize: 3,\n groupSeparator: \"\",\n autoGroup: false,\n allowMinus: true,\n negationSymbol: {\n front: \"-\",\n back: \"\"\n },\n integerDigits: \"+\",\n integerOptional: true,\n prefix: \"\",\n suffix: \"\",\n rightAlign: true,\n decimalProtect: true,\n min: null,\n max: null,\n step: 1,\n insertMode: true,\n autoUnmask: false,\n unmaskAsNumber: false,\n inputType: \"text\",\n inputmode: \"numeric\",\n preValidation: function(buffer, pos, c, isSelection, opts, maskset) {\n if (c === \"-\" || c === opts.negationSymbol.front) {\n if (opts.allowMinus !== true) return false;\n opts.isNegative = opts.isNegative === undefined ? true : !opts.isNegative;\n if (buffer.join(\"\") === \"\") return true;\n return {\n caret: maskset.validPositions[pos] ? pos : undefined,\n dopost: true\n };\n }\n if (isSelection === false && c === opts.radixPoint && (opts.digits !== undefined && (isNaN(opts.digits) || parseInt(opts.digits) > 0))) {\n var radixPos = $.inArray(opts.radixPoint, buffer);\n if (radixPos !== -1 && maskset.validPositions[radixPos] !== undefined) {\n if (opts.numericInput === true) {\n return pos === radixPos;\n }\n return {\n caret: radixPos + 1\n };\n }\n }\n return true;\n },\n postValidation: function(buffer, pos, currentResult, opts) {\n function buildPostMask(buffer, opts) {\n var postMask = \"\";\n postMask += \"(\" + opts.groupSeparator + \"*{\" + opts.groupSize + \"}){*}\";\n if (opts.radixPoint !== \"\") {\n var radixSplit = buffer.join(\"\").split(opts.radixPoint);\n if (radixSplit[1]) {\n postMask += opts.radixPoint + \"*{\" + radixSplit[1].match(/^\\d*\\??\\d*/)[0].length + \"}\";\n }\n }\n return postMask;\n }\n var suffix = opts.suffix.split(\"\"), prefix = opts.prefix.split(\"\");\n if (currentResult.pos === undefined && currentResult.caret !== undefined && currentResult.dopost !== true) return currentResult;\n var caretPos = currentResult.caret !== undefined ? currentResult.caret : currentResult.pos;\n var maskedValue = buffer.slice();\n if (opts.numericInput) {\n caretPos = maskedValue.length - caretPos - 1;\n maskedValue = maskedValue.reverse();\n }\n var charAtPos = maskedValue[caretPos];\n if (charAtPos === opts.groupSeparator) {\n caretPos += 1;\n charAtPos = maskedValue[caretPos];\n }\n if (caretPos === maskedValue.length - opts.suffix.length - 1 && charAtPos === opts.radixPoint) return currentResult;\n if (charAtPos !== undefined) {\n if (charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back) {\n maskedValue[caretPos] = \"?\";\n if (opts.prefix.length > 0 && caretPos >= (opts.isNegative === false ? 1 : 0) && caretPos < opts.prefix.length - 1 + (opts.isNegative === false ? 1 : 0)) {\n prefix[caretPos - (opts.isNegative === false ? 1 : 0)] = \"?\";\n } else if (opts.suffix.length > 0 && caretPos >= maskedValue.length - opts.suffix.length - (opts.isNegative === false ? 1 : 0)) {\n suffix[caretPos - (maskedValue.length - opts.suffix.length - (opts.isNegative === false ? 1 : 0))] = \"?\";\n }\n }\n }\n prefix = prefix.join(\"\");\n suffix = suffix.join(\"\");\n var processValue = maskedValue.join(\"\").replace(prefix, \"\");\n processValue = processValue.replace(suffix, \"\");\n processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\");\n processValue = processValue.replace(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"), \"\");\n processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\");\n if (isNaN(opts.placeholder)) {\n processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.placeholder), \"g\"), \"\");\n }\n if (processValue.length > 1 && processValue.indexOf(opts.radixPoint) !== 1) {\n if (charAtPos === \"0\") {\n processValue = processValue.replace(/^\\?/g, \"\");\n }\n processValue = processValue.replace(/^0/g, \"\");\n }\n if (processValue.charAt(0) === opts.radixPoint && opts.radixPoint !== \"\" && opts.numericInput !== true) {\n processValue = \"0\" + processValue;\n }\n if (processValue !== \"\") {\n processValue = processValue.split(\"\");\n if ((!opts.digitsOptional || opts.enforceDigitsOnBlur && currentResult.event === \"blur\") && isFinite(opts.digits)) {\n var radixPosition = $.inArray(opts.radixPoint, processValue);\n var rpb = $.inArray(opts.radixPoint, maskedValue);\n if (radixPosition === -1) {\n processValue.push(opts.radixPoint);\n radixPosition = processValue.length - 1;\n }\n for (var i = 1; i <= opts.digits; i++) {\n if ((!opts.digitsOptional || opts.enforceDigitsOnBlur && currentResult.event === \"blur\") && (processValue[radixPosition + i] === undefined || processValue[radixPosition + i] === opts.placeholder.charAt(0))) {\n processValue[radixPosition + i] = currentResult.placeholder || opts.placeholder.charAt(0);\n } else if (rpb !== -1 && maskedValue[rpb + i] !== undefined) {\n processValue[radixPosition + i] = processValue[radixPosition + i] || maskedValue[rpb + i];\n }\n }\n }\n if (opts.autoGroup === true && opts.groupSeparator !== \"\" && (charAtPos !== opts.radixPoint || currentResult.pos !== undefined || currentResult.dopost)) {\n var addRadix = processValue[processValue.length - 1] === opts.radixPoint && currentResult.c === opts.radixPoint;\n processValue = Inputmask(buildPostMask(processValue, opts), {\n numericInput: true,\n jitMasking: true,\n definitions: {\n \"*\": {\n validator: \"[0-9?]\",\n cardinality: 1\n }\n }\n }).format(processValue.join(\"\"));\n if (addRadix) processValue += opts.radixPoint;\n if (processValue.charAt(0) === opts.groupSeparator) {\n processValue.substr(1);\n }\n } else processValue = processValue.join(\"\");\n }\n if (opts.isNegative && currentResult.event === \"blur\") {\n opts.isNegative = processValue !== \"0\";\n }\n processValue = prefix + processValue;\n processValue += suffix;\n if (opts.isNegative) {\n processValue = opts.negationSymbol.front + processValue;\n processValue += opts.negationSymbol.back;\n }\n processValue = processValue.split(\"\");\n if (charAtPos !== undefined) {\n if (charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back) {\n caretPos = $.inArray(\"?\", processValue);\n if (caretPos > -1) {\n processValue[caretPos] = charAtPos;\n } else caretPos = currentResult.caret || 0;\n } else if (charAtPos === opts.radixPoint || charAtPos === opts.negationSymbol.front || charAtPos === opts.negationSymbol.back) {\n var newCaretPos = $.inArray(charAtPos, processValue);\n if (newCaretPos !== -1) caretPos = newCaretPos;\n }\n }\n if (opts.numericInput) {\n caretPos = processValue.length - caretPos - 1;\n processValue = processValue.reverse();\n }\n var rslt = {\n caret: (charAtPos === undefined || currentResult.pos !== undefined) && caretPos !== undefined ? caretPos + (opts.numericInput ? -1 : 1) : caretPos,\n buffer: processValue,\n refreshFromBuffer: currentResult.dopost || buffer.join(\"\") !== processValue.join(\"\")\n };\n return rslt.refreshFromBuffer ? rslt : currentResult;\n },\n onBeforeWrite: function(e, buffer, caretPos, opts) {\n function parseMinMaxOptions(opts) {\n if (opts.parseMinMaxOptions === undefined) {\n if (opts.min !== null) {\n opts.min = opts.min.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\");\n if (opts.radixPoint === \",\") opts.min = opts.min.replace(opts.radixPoint, \".\");\n opts.min = isFinite(opts.min) ? parseFloat(opts.min) : NaN;\n if (isNaN(opts.min)) opts.min = Number.MIN_VALUE;\n }\n if (opts.max !== null) {\n opts.max = opts.max.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\");\n if (opts.radixPoint === \",\") opts.max = opts.max.replace(opts.radixPoint, \".\");\n opts.max = isFinite(opts.max) ? parseFloat(opts.max) : NaN;\n if (isNaN(opts.max)) opts.max = Number.MAX_VALUE;\n }\n opts.parseMinMaxOptions = \"done\";\n }\n }\n if (e) {\n switch (e.type) {\n case \"keydown\":\n return opts.postValidation(buffer, caretPos, {\n caret: caretPos,\n dopost: true\n }, opts);\n\n case \"blur\":\n case \"checkval\":\n var unmasked;\n parseMinMaxOptions(opts);\n if (opts.min !== null || opts.max !== null) {\n unmasked = opts.onUnMask(buffer.join(\"\"), undefined, $.extend({}, opts, {\n unmaskAsNumber: true\n }));\n if (opts.min !== null && unmasked < opts.min) {\n opts.isNegative = opts.min < 0;\n return opts.postValidation(opts.min.toString().replace(\".\", opts.radixPoint).split(\"\"), caretPos, {\n caret: caretPos,\n dopost: true,\n placeholder: \"0\"\n }, opts);\n } else if (opts.max !== null && unmasked > opts.max) {\n opts.isNegative = opts.max < 0;\n return opts.postValidation(opts.max.toString().replace(\".\", opts.radixPoint).split(\"\"), caretPos, {\n caret: caretPos,\n dopost: true,\n placeholder: \"0\"\n }, opts);\n }\n }\n return opts.postValidation(buffer, caretPos, {\n caret: caretPos,\n placeholder: \"0\",\n event: \"blur\"\n }, opts);\n\n case \"_checkval\":\n return {\n caret: caretPos\n };\n\n default:\n break;\n }\n }\n },\n regex: {\n integerPart: function(opts, emptyCheck) {\n return emptyCheck ? new RegExp(\"[\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"+]?\") : new RegExp(\"[\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"+]?\\\\d+\");\n },\n integerNPart: function(opts) {\n return new RegExp(\"[\\\\d\" + Inputmask.escapeRegex(opts.groupSeparator) + Inputmask.escapeRegex(opts.placeholder.charAt(0)) + \"]+\");\n }\n },\n definitions: {\n \"~\": {\n validator: function(chrs, maskset, pos, strict, opts, isSelection) {\n var isValid, l;\n if (chrs === \"k\" || chrs === \"m\") {\n isValid = {\n insert: [],\n c: 0\n };\n for (var i = 0, l = chrs === \"k\" ? 2 : 5; i < l; i++) {\n isValid.insert.push({\n pos: pos + i,\n c: 0\n });\n }\n isValid.pos = pos + l;\n return isValid;\n }\n isValid = strict ? new RegExp(\"[0-9\" + Inputmask.escapeRegex(opts.groupSeparator) + \"]\").test(chrs) : new RegExp(\"[0-9]\").test(chrs);\n if (isValid === true) {\n if (opts.numericInput !== true && maskset.validPositions[pos] !== undefined && maskset.validPositions[pos].match.def === \"~\" && !isSelection) {\n var processValue = maskset.buffer.join(\"\");\n processValue = processValue.replace(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"), \"\");\n processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\");\n var pvRadixSplit = processValue.split(opts.radixPoint);\n if (pvRadixSplit.length > 1) {\n pvRadixSplit[1] = pvRadixSplit[1].replace(/0/g, opts.placeholder.charAt(0));\n }\n if (pvRadixSplit[0] === \"0\") {\n pvRadixSplit[0] = pvRadixSplit[0].replace(/0/g, opts.placeholder.charAt(0));\n }\n processValue = pvRadixSplit[0] + opts.radixPoint + pvRadixSplit[1] || \"\";\n var bufferTemplate = maskset._buffer.join(\"\");\n if (processValue === opts.radixPoint) {\n processValue = bufferTemplate;\n }\n while (processValue.match(Inputmask.escapeRegex(bufferTemplate) + \"$\") === null) {\n bufferTemplate = bufferTemplate.slice(1);\n }\n processValue = processValue.replace(bufferTemplate, \"\");\n processValue = processValue.split(\"\");\n if (processValue[pos] === undefined) {\n isValid = {\n pos: pos,\n remove: pos\n };\n } else {\n isValid = {\n pos: pos\n };\n }\n }\n } else if (!strict && chrs === opts.radixPoint && maskset.validPositions[pos - 1] === undefined) {\n isValid = {\n insert: {\n pos: pos,\n c: 0\n },\n pos: pos + 1\n };\n }\n return isValid;\n },\n cardinality: 1\n },\n \"+\": {\n validator: function(chrs, maskset, pos, strict, opts) {\n return opts.allowMinus && (chrs === \"-\" || chrs === opts.negationSymbol.front);\n },\n cardinality: 1,\n placeholder: \"\"\n },\n \"-\": {\n validator: function(chrs, maskset, pos, strict, opts) {\n return opts.allowMinus && chrs === opts.negationSymbol.back;\n },\n cardinality: 1,\n placeholder: \"\"\n },\n \":\": {\n validator: function(chrs, maskset, pos, strict, opts) {\n var radix = \"[\" + Inputmask.escapeRegex(opts.radixPoint) + \"]\";\n var isValid = new RegExp(radix).test(chrs);\n if (isValid && maskset.validPositions[pos] && maskset.validPositions[pos].match.placeholder === opts.radixPoint) {\n isValid = {\n caret: pos + 1\n };\n }\n return isValid;\n },\n cardinality: 1,\n placeholder: function(opts) {\n return opts.radixPoint;\n }\n }\n },\n onUnMask: function(maskedValue, unmaskedValue, opts) {\n if (unmaskedValue === \"\" && opts.nullable === true) {\n return unmaskedValue;\n }\n var processValue = maskedValue.replace(opts.prefix, \"\");\n processValue = processValue.replace(opts.suffix, \"\");\n processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\");\n if (opts.placeholder.charAt(0) !== \"\") {\n processValue = processValue.replace(new RegExp(opts.placeholder.charAt(0), \"g\"), \"0\");\n }\n if (opts.unmaskAsNumber) {\n if (opts.radixPoint !== \"\" && processValue.indexOf(opts.radixPoint) !== -1) processValue = processValue.replace(Inputmask.escapeRegex.call(this, opts.radixPoint), \".\");\n processValue = processValue.replace(new RegExp(\"^\" + Inputmask.escapeRegex(opts.negationSymbol.front)), \"-\");\n processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\");\n return Number(processValue);\n }\n return processValue;\n },\n isComplete: function(buffer, opts) {\n var maskedValue = (opts.numericInput ? buffer.slice().reverse() : buffer).join(\"\");\n maskedValue = maskedValue.replace(new RegExp(\"^\" + Inputmask.escapeRegex(opts.negationSymbol.front)), \"-\");\n maskedValue = maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\");\n maskedValue = maskedValue.replace(opts.prefix, \"\");\n maskedValue = maskedValue.replace(opts.suffix, \"\");\n maskedValue = maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator) + \"([0-9]{3})\", \"g\"), \"$1\");\n if (opts.radixPoint === \",\") maskedValue = maskedValue.replace(Inputmask.escapeRegex(opts.radixPoint), \".\");\n return isFinite(maskedValue);\n },\n onBeforeMask: function(initialValue, opts) {\n opts.isNegative = undefined;\n var radixPoint = opts.radixPoint || \",\";\n if ((typeof initialValue == \"number\" || opts.inputType === \"number\") && radixPoint !== \"\") {\n initialValue = initialValue.toString().replace(\".\", radixPoint);\n }\n var valueParts = initialValue.split(radixPoint), integerPart = valueParts[0].replace(/[^\\-0-9]/g, \"\"), decimalPart = valueParts.length > 1 ? valueParts[1].replace(/[^0-9]/g, \"\") : \"\";\n initialValue = integerPart + (decimalPart !== \"\" ? radixPoint + decimalPart : decimalPart);\n var digits = 0;\n if (radixPoint !== \"\") {\n digits = decimalPart.length;\n if (decimalPart !== \"\") {\n var digitsFactor = Math.pow(10, digits || 1);\n if (isFinite(opts.digits)) {\n digits = parseInt(opts.digits);\n digitsFactor = Math.pow(10, digits);\n }\n initialValue = initialValue.replace(Inputmask.escapeRegex(radixPoint), \".\");\n if (isFinite(initialValue)) initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor;\n initialValue = initialValue.toString().replace(\".\", radixPoint);\n }\n }\n if (opts.digits === 0 && initialValue.indexOf(Inputmask.escapeRegex(radixPoint)) !== -1) {\n initialValue = initialValue.substring(0, initialValue.indexOf(Inputmask.escapeRegex(radixPoint)));\n }\n return alignDigits(initialValue.toString().split(\"\"), digits, opts).join(\"\");\n },\n onKeyDown: function(e, buffer, caretPos, opts) {\n var $input = $(this);\n if (e.ctrlKey) {\n switch (e.keyCode) {\n case Inputmask.keyCode.UP:\n $input.val(parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step));\n $input.trigger(\"setvalue\");\n break;\n\n case Inputmask.keyCode.DOWN:\n $input.val(parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step));\n $input.trigger(\"setvalue\");\n break;\n }\n }\n }\n },\n currency: {\n prefix: \"$ \",\n groupSeparator: \",\",\n alias: \"numeric\",\n placeholder: \"0\",\n autoGroup: true,\n digits: 2,\n digitsOptional: false,\n clearMaskOnLostFocus: false\n },\n decimal: {\n alias: \"numeric\"\n },\n integer: {\n alias: \"numeric\",\n digits: 0,\n radixPoint: \"\"\n },\n percentage: {\n alias: \"numeric\",\n digits: 2,\n digitsOptional: true,\n radixPoint: \".\",\n placeholder: \"0\",\n autoGroup: false,\n min: 0,\n max: 100,\n suffix: \" %\",\n allowMinus: false\n }\n });\n return Inputmask;\n});","/*!\n* inputmask.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.8\n*/\n\n(function(factory) {\n if (typeof define === \"function\" && define.amd) {\n define([ \"./dependencyLibs/inputmask.dependencyLib\", \"./global/window\" ], factory);\n } else if (typeof exports === \"object\") {\n module.exports = factory(require(\"./dependencyLibs/inputmask.dependencyLib\"), require(\"./global/window\"));\n } else {\n window.Inputmask = factory(window.dependencyLib || jQuery, window);\n }\n})(function($, window, undefined) {\n var document = window.document, ua = navigator.userAgent, ie = ua.indexOf(\"MSIE \") > 0 || ua.indexOf(\"Trident/\") > 0, mobile = isInputEventSupported(\"touchstart\"), iemobile = /iemobile/i.test(ua), iphone = /iphone/i.test(ua) && !iemobile;\n function Inputmask(alias, options, internal) {\n if (!(this instanceof Inputmask)) {\n return new Inputmask(alias, options, internal);\n }\n this.el = undefined;\n this.events = {};\n this.maskset = undefined;\n this.refreshValue = false;\n if (internal !== true) {\n if ($.isPlainObject(alias)) {\n options = alias;\n } else {\n options = options || {};\n if (alias) options.alias = alias;\n }\n this.opts = $.extend(true, {}, this.defaults, options);\n this.noMasksCache = options && options.definitions !== undefined;\n this.userOptions = options || {};\n this.isRTL = this.opts.numericInput;\n resolveAlias(this.opts.alias, options, this.opts);\n }\n }\n Inputmask.prototype = {\n dataAttribute: \"data-inputmask\",\n defaults: {\n placeholder: \"_\",\n optionalmarker: [ \"[\", \"]\" ],\n quantifiermarker: [ \"{\", \"}\" ],\n groupmarker: [ \"(\", \")\" ],\n alternatormarker: \"|\",\n escapeChar: \"\\\\\",\n mask: null,\n regex: null,\n oncomplete: $.noop,\n onincomplete: $.noop,\n oncleared: $.noop,\n repeat: 0,\n greedy: false,\n autoUnmask: false,\n removeMaskOnSubmit: false,\n clearMaskOnLostFocus: true,\n insertMode: true,\n clearIncomplete: false,\n alias: null,\n onKeyDown: $.noop,\n onBeforeMask: null,\n onBeforePaste: function(pastedValue, opts) {\n return $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(this, pastedValue, opts) : pastedValue;\n },\n onBeforeWrite: null,\n onUnMask: null,\n showMaskOnFocus: true,\n showMaskOnHover: true,\n onKeyValidation: $.noop,\n skipOptionalPartCharacter: \" \",\n numericInput: false,\n rightAlign: false,\n undoOnEscape: true,\n radixPoint: \"\",\n _radixDance: false,\n groupSeparator: \"\",\n keepStatic: null,\n positionCaretOnTab: true,\n tabThrough: false,\n supportsInputType: [ \"text\", \"tel\", \"url\", \"password\", \"search\" ],\n ignorables: [ 8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 0, 229 ],\n isComplete: null,\n preValidation: null,\n postValidation: null,\n staticDefinitionSymbol: undefined,\n jitMasking: false,\n nullable: true,\n inputEventOnly: false,\n noValuePatching: false,\n positionCaretOnClick: \"lvp\",\n casing: null,\n inputmode: \"verbatim\",\n colorMask: false,\n disablePredictiveText: false,\n importDataAttributes: true,\n shiftPositions: true\n },\n definitions: {\n 9: {\n validator: \"[0-9\\uff11-\\uff19]\",\n definitionSymbol: \"*\"\n },\n a: {\n validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n definitionSymbol: \"*\"\n },\n \"*\": {\n validator: \"[0-9\\uff11-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\"\n }\n },\n aliases: {},\n masksCache: {},\n mask: function(elems) {\n var that = this;\n function importAttributeOptions(npt, opts, userOptions, dataAttribute) {\n if (opts.importDataAttributes === true) {\n var attrOptions = npt.getAttribute(dataAttribute), option, dataoptions, optionData, p;\n var importOption = function(option, optionData) {\n optionData = optionData !== undefined ? optionData : npt.getAttribute(dataAttribute + \"-\" + option);\n if (optionData !== null) {\n if (typeof optionData === \"string\") {\n if (option.indexOf(\"on\") === 0) optionData = window[optionData]; else if (optionData === \"false\") optionData = false; else if (optionData === \"true\") optionData = true;\n }\n userOptions[option] = optionData;\n }\n };\n if (attrOptions && attrOptions !== \"\") {\n attrOptions = attrOptions.replace(/'/g, '\"');\n dataoptions = JSON.parse(\"{\" + attrOptions + \"}\");\n }\n if (dataoptions) {\n optionData = undefined;\n for (p in dataoptions) {\n if (p.toLowerCase() === \"alias\") {\n optionData = dataoptions[p];\n break;\n }\n }\n }\n importOption(\"alias\", optionData);\n if (userOptions.alias) {\n resolveAlias(userOptions.alias, userOptions, opts);\n }\n for (option in opts) {\n if (dataoptions) {\n optionData = undefined;\n for (p in dataoptions) {\n if (p.toLowerCase() === option.toLowerCase()) {\n optionData = dataoptions[p];\n break;\n }\n }\n }\n importOption(option, optionData);\n }\n }\n $.extend(true, opts, userOptions);\n if (npt.dir === \"rtl\" || opts.rightAlign) {\n npt.style.textAlign = \"right\";\n }\n if (npt.dir === \"rtl\" || opts.numericInput) {\n npt.dir = \"ltr\";\n npt.removeAttribute(\"dir\");\n opts.isRTL = true;\n }\n return Object.keys(userOptions).length;\n }\n if (typeof elems === \"string\") {\n elems = document.getElementById(elems) || document.querySelectorAll(elems);\n }\n elems = elems.nodeName ? [ elems ] : elems;\n $.each(elems, function(ndx, el) {\n var scopedOpts = $.extend(true, {}, that.opts);\n if (importAttributeOptions(el, scopedOpts, $.extend(true, {}, that.userOptions), that.dataAttribute)) {\n var maskset = generateMaskSet(scopedOpts, that.noMasksCache);\n if (maskset !== undefined) {\n if (el.inputmask !== undefined) {\n el.inputmask.opts.autoUnmask = true;\n el.inputmask.remove();\n }\n el.inputmask = new Inputmask(undefined, undefined, true);\n el.inputmask.opts = scopedOpts;\n el.inputmask.noMasksCache = that.noMasksCache;\n el.inputmask.userOptions = $.extend(true, {}, that.userOptions);\n el.inputmask.isRTL = scopedOpts.isRTL || scopedOpts.numericInput;\n el.inputmask.el = el;\n el.inputmask.maskset = maskset;\n $.data(el, \"_inputmask_opts\", scopedOpts);\n maskScope.call(el.inputmask, {\n action: \"mask\"\n });\n }\n }\n });\n return elems && elems[0] ? elems[0].inputmask || this : this;\n },\n option: function(options, noremask) {\n if (typeof options === \"string\") {\n return this.opts[options];\n } else if (typeof options === \"object\") {\n $.extend(this.userOptions, options);\n if (this.el && noremask !== true) {\n this.mask(this.el);\n }\n return this;\n }\n },\n unmaskedvalue: function(value) {\n this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n return maskScope.call(this, {\n action: \"unmaskedvalue\",\n value: value\n });\n },\n remove: function() {\n return maskScope.call(this, {\n action: \"remove\"\n });\n },\n getemptymask: function() {\n this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n return maskScope.call(this, {\n action: \"getemptymask\"\n });\n },\n hasMaskedValue: function() {\n return !this.opts.autoUnmask;\n },\n isComplete: function() {\n this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n return maskScope.call(this, {\n action: \"isComplete\"\n });\n },\n getmetadata: function() {\n this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n return maskScope.call(this, {\n action: \"getmetadata\"\n });\n },\n isValid: function(value) {\n this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n return maskScope.call(this, {\n action: \"isValid\",\n value: value\n });\n },\n format: function(value, metadata) {\n this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n return maskScope.call(this, {\n action: \"format\",\n value: value,\n metadata: metadata\n });\n },\n setValue: function(value) {\n if (this.el) {\n $(this.el).trigger(\"setvalue\", [ value ]);\n }\n },\n analyseMask: function(mask, regexMask, opts) {\n var tokenizer = /(?:[?*+]|\\{[0-9\\+\\*]+(?:,[0-9\\+\\*]*)?(?:\\|[0-9\\+\\*]*)?\\})|[^.?*+^${[]()|\\\\]+|./g, regexTokenizer = /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g, escaped = false, currentToken = new MaskToken(), match, m, openenings = [], maskTokens = [], openingToken, currentOpeningToken, alternator, lastMatch, groupToken;\n function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) {\n this.matches = [];\n this.openGroup = isGroup || false;\n this.alternatorGroup = false;\n this.isGroup = isGroup || false;\n this.isOptional = isOptional || false;\n this.isQuantifier = isQuantifier || false;\n this.isAlternator = isAlternator || false;\n this.quantifier = {\n min: 1,\n max: 1\n };\n }\n function insertTestDefinition(mtoken, element, position) {\n position = position !== undefined ? position : mtoken.matches.length;\n var prevMatch = mtoken.matches[position - 1];\n if (regexMask) {\n if (element.indexOf(\"[\") === 0 || escaped && /\\\\d|\\\\s|\\\\w]/i.test(element) || element === \".\") {\n mtoken.matches.splice(position++, 0, {\n fn: new RegExp(element, opts.casing ? \"i\" : \"\"),\n optionality: false,\n newBlockMarker: prevMatch === undefined ? \"master\" : prevMatch.def !== element,\n casing: null,\n def: element,\n placeholder: undefined,\n nativeDef: element\n });\n } else {\n if (escaped) element = element[element.length - 1];\n $.each(element.split(\"\"), function(ndx, lmnt) {\n prevMatch = mtoken.matches[position - 1];\n mtoken.matches.splice(position++, 0, {\n fn: null,\n optionality: false,\n newBlockMarker: prevMatch === undefined ? \"master\" : prevMatch.def !== lmnt && prevMatch.fn !== null,\n casing: null,\n def: opts.staticDefinitionSymbol || lmnt,\n placeholder: opts.staticDefinitionSymbol !== undefined ? lmnt : undefined,\n nativeDef: (escaped ? \"'\" : \"\") + lmnt\n });\n });\n }\n escaped = false;\n } else {\n var maskdef = (opts.definitions ? opts.definitions[element] : undefined) || Inputmask.prototype.definitions[element];\n if (maskdef && !escaped) {\n mtoken.matches.splice(position++, 0, {\n fn: maskdef.validator ? typeof maskdef.validator == \"string\" ? new RegExp(maskdef.validator, opts.casing ? \"i\" : \"\") : new function() {\n this.test = maskdef.validator;\n }() : new RegExp(\".\"),\n optionality: false,\n newBlockMarker: prevMatch === undefined ? \"master\" : prevMatch.def !== (maskdef.definitionSymbol || element),\n casing: maskdef.casing,\n def: maskdef.definitionSymbol || element,\n placeholder: maskdef.placeholder,\n nativeDef: element\n });\n } else {\n mtoken.matches.splice(position++, 0, {\n fn: null,\n optionality: false,\n newBlockMarker: prevMatch === undefined ? \"master\" : prevMatch.def !== element && prevMatch.fn !== null,\n casing: null,\n def: opts.staticDefinitionSymbol || element,\n placeholder: opts.staticDefinitionSymbol !== undefined ? element : undefined,\n nativeDef: (escaped ? \"'\" : \"\") + element\n });\n escaped = false;\n }\n }\n }\n function verifyGroupMarker(maskToken) {\n if (maskToken && maskToken.matches) {\n $.each(maskToken.matches, function(ndx, token) {\n var nextToken = maskToken.matches[ndx + 1];\n if ((nextToken === undefined || (nextToken.matches === undefined || nextToken.isQuantifier === false)) && token && token.isGroup) {\n token.isGroup = false;\n if (!regexMask) {\n insertTestDefinition(token, opts.groupmarker[0], 0);\n if (token.openGroup !== true) {\n insertTestDefinition(token, opts.groupmarker[1]);\n }\n }\n }\n verifyGroupMarker(token);\n });\n }\n }\n function defaultCase() {\n if (openenings.length > 0) {\n currentOpeningToken = openenings[openenings.length - 1];\n insertTestDefinition(currentOpeningToken, m);\n if (currentOpeningToken.isAlternator) {\n alternator = openenings.pop();\n for (var mndx = 0; mndx < alternator.matches.length; mndx++) {\n if (alternator.matches[mndx].isGroup) alternator.matches[mndx].isGroup = false;\n }\n if (openenings.length > 0) {\n currentOpeningToken = openenings[openenings.length - 1];\n currentOpeningToken.matches.push(alternator);\n } else {\n currentToken.matches.push(alternator);\n }\n }\n } else {\n insertTestDefinition(currentToken, m);\n }\n }\n function reverseTokens(maskToken) {\n function reverseStatic(st) {\n if (st === opts.optionalmarker[0]) st = opts.optionalmarker[1]; else if (st === opts.optionalmarker[1]) st = opts.optionalmarker[0]; else if (st === opts.groupmarker[0]) st = opts.groupmarker[1]; else if (st === opts.groupmarker[1]) st = opts.groupmarker[0];\n return st;\n }\n maskToken.matches = maskToken.matches.reverse();\n for (var match in maskToken.matches) {\n if (maskToken.matches.hasOwnProperty(match)) {\n var intMatch = parseInt(match);\n if (maskToken.matches[match].isQuantifier && maskToken.matches[intMatch + 1] && maskToken.matches[intMatch + 1].isGroup) {\n var qt = maskToken.matches[match];\n maskToken.matches.splice(match, 1);\n maskToken.matches.splice(intMatch + 1, 0, qt);\n }\n if (maskToken.matches[match].matches !== undefined) {\n maskToken.matches[match] = reverseTokens(maskToken.matches[match]);\n } else {\n maskToken.matches[match] = reverseStatic(maskToken.matches[match]);\n }\n }\n }\n return maskToken;\n }\n function groupify(matches) {\n var groupToken = new MaskToken(true);\n groupToken.openGroup = false;\n groupToken.matches = matches;\n return groupToken;\n }\n if (regexMask) {\n opts.optionalmarker[0] = undefined;\n opts.optionalmarker[1] = undefined;\n }\n while (match = regexMask ? regexTokenizer.exec(mask) : tokenizer.exec(mask)) {\n m = match[0];\n if (regexMask) {\n switch (m.charAt(0)) {\n case \"?\":\n m = \"{0,1}\";\n break;\n\n case \"+\":\n case \"*\":\n m = \"{\" + m + \"}\";\n break;\n }\n }\n if (escaped) {\n defaultCase();\n continue;\n }\n switch (m.charAt(0)) {\n case \"(?=\":\n break;\n\n case \"(?!\":\n break;\n\n case \"(?<=\":\n break;\n\n case \"(? 0) {\n currentOpeningToken = openenings[openenings.length - 1];\n currentOpeningToken.matches.push(openingToken);\n if (currentOpeningToken.isAlternator) {\n alternator = openenings.pop();\n for (var mndx = 0; mndx < alternator.matches.length; mndx++) {\n alternator.matches[mndx].isGroup = false;\n alternator.matches[mndx].alternatorGroup = false;\n }\n if (openenings.length > 0) {\n currentOpeningToken = openenings[openenings.length - 1];\n currentOpeningToken.matches.push(alternator);\n } else {\n currentToken.matches.push(alternator);\n }\n }\n } else {\n currentToken.matches.push(openingToken);\n }\n } else defaultCase();\n break;\n\n case opts.optionalmarker[0]:\n openenings.push(new MaskToken(false, true));\n break;\n\n case opts.groupmarker[0]:\n openenings.push(new MaskToken(true));\n break;\n\n case opts.quantifiermarker[0]:\n var quantifier = new MaskToken(false, false, true);\n m = m.replace(/[{}]/g, \"\");\n var mqj = m.split(\"|\"), mq = mqj[0].split(\",\"), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = mq.length === 1 ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);\n if (mq0 === \"*\" || mq0 === \"+\") {\n mq0 = mq1 === \"*\" ? 0 : 1;\n }\n quantifier.quantifier = {\n min: mq0,\n max: mq1,\n jit: mqj[1]\n };\n var matches = openenings.length > 0 ? openenings[openenings.length - 1].matches : currentToken.matches;\n match = matches.pop();\n if (match.isAlternator) {\n matches.push(match);\n matches = match.matches;\n var groupToken = new MaskToken(true);\n var tmpMatch = matches.pop();\n matches.push(groupToken);\n matches = groupToken.matches;\n match = tmpMatch;\n }\n if (!match.isGroup) {\n match = groupify([ match ]);\n }\n matches.push(match);\n matches.push(quantifier);\n break;\n\n case opts.alternatormarker:\n var groupQuantifier = function(matches) {\n var lastMatch = matches.pop();\n if (lastMatch.isQuantifier) {\n lastMatch = groupify([ matches.pop(), lastMatch ]);\n }\n return lastMatch;\n };\n if (openenings.length > 0) {\n currentOpeningToken = openenings[openenings.length - 1];\n var subToken = currentOpeningToken.matches[currentOpeningToken.matches.length - 1];\n if (currentOpeningToken.openGroup && (subToken.matches === undefined || subToken.isGroup === false && subToken.isAlternator === false)) {\n lastMatch = openenings.pop();\n } else {\n lastMatch = groupQuantifier(currentOpeningToken.matches);\n }\n } else {\n lastMatch = groupQuantifier(currentToken.matches);\n }\n if (lastMatch.isAlternator) {\n openenings.push(lastMatch);\n } else {\n if (lastMatch.alternatorGroup) {\n alternator = openenings.pop();\n lastMatch.alternatorGroup = false;\n } else {\n alternator = new MaskToken(false, false, false, true);\n }\n alternator.matches.push(lastMatch);\n openenings.push(alternator);\n if (lastMatch.openGroup) {\n lastMatch.openGroup = false;\n var alternatorGroup = new MaskToken(true);\n alternatorGroup.alternatorGroup = true;\n openenings.push(alternatorGroup);\n }\n }\n break;\n\n default:\n defaultCase();\n }\n }\n while (openenings.length > 0) {\n openingToken = openenings.pop();\n currentToken.matches.push(openingToken);\n }\n if (currentToken.matches.length > 0) {\n verifyGroupMarker(currentToken);\n maskTokens.push(currentToken);\n }\n if (opts.numericInput || opts.isRTL) {\n reverseTokens(maskTokens[0]);\n }\n return maskTokens;\n },\n positionColorMask: function(input, template) {\n input.style.left = template.offsetLeft + \"px\";\n }\n };\n Inputmask.extendDefaults = function(options) {\n $.extend(true, Inputmask.prototype.defaults, options);\n };\n Inputmask.extendDefinitions = function(definition) {\n $.extend(true, Inputmask.prototype.definitions, definition);\n };\n Inputmask.extendAliases = function(alias) {\n $.extend(true, Inputmask.prototype.aliases, alias);\n };\n Inputmask.format = function(value, options, metadata) {\n return Inputmask(options).format(value, metadata);\n };\n Inputmask.unmask = function(value, options) {\n return Inputmask(options).unmaskedvalue(value);\n };\n Inputmask.isValid = function(value, options) {\n return Inputmask(options).isValid(value);\n };\n Inputmask.remove = function(elems) {\n if (typeof elems === \"string\") {\n elems = document.getElementById(elems) || document.querySelectorAll(elems);\n }\n elems = elems.nodeName ? [ elems ] : elems;\n $.each(elems, function(ndx, el) {\n if (el.inputmask) el.inputmask.remove();\n });\n };\n Inputmask.setValue = function(elems, value) {\n if (typeof elems === \"string\") {\n elems = document.getElementById(elems) || document.querySelectorAll(elems);\n }\n elems = elems.nodeName ? [ elems ] : elems;\n $.each(elems, function(ndx, el) {\n if (el.inputmask) el.inputmask.setValue(value); else $(el).trigger(\"setvalue\", [ value ]);\n });\n };\n Inputmask.escapeRegex = function(str) {\n var specials = [ \"/\", \".\", \"*\", \"+\", \"?\", \"|\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"\\\\\", \"$\", \"^\" ];\n return str.replace(new RegExp(\"(\\\\\" + specials.join(\"|\\\\\") + \")\", \"gim\"), \"\\\\$1\");\n };\n Inputmask.keyCode = {\n BACKSPACE: 8,\n BACKSPACE_SAFARI: 127,\n DELETE: 46,\n DOWN: 40,\n END: 35,\n ENTER: 13,\n ESCAPE: 27,\n HOME: 36,\n INSERT: 45,\n LEFT: 37,\n PAGE_DOWN: 34,\n PAGE_UP: 33,\n RIGHT: 39,\n SPACE: 32,\n TAB: 9,\n UP: 38,\n X: 88,\n CONTROL: 17\n };\n Inputmask.dependencyLib = $;\n function resolveAlias(aliasStr, options, opts) {\n var aliasDefinition = Inputmask.prototype.aliases[aliasStr];\n if (aliasDefinition) {\n if (aliasDefinition.alias) resolveAlias(aliasDefinition.alias, undefined, opts);\n $.extend(true, opts, aliasDefinition);\n $.extend(true, opts, options);\n return true;\n } else if (opts.mask === null) {\n opts.mask = aliasStr;\n }\n return false;\n }\n function generateMaskSet(opts, nocache) {\n function generateMask(mask, metadata, opts) {\n var regexMask = false;\n if (mask === null || mask === \"\") {\n regexMask = opts.regex !== null;\n if (regexMask) {\n mask = opts.regex;\n mask = mask.replace(/^(\\^)(.*)(\\$)$/, \"$2\");\n } else {\n regexMask = true;\n mask = \".*\";\n }\n }\n if (mask.length === 1 && opts.greedy === false && opts.repeat !== 0) {\n opts.placeholder = \"\";\n }\n if (opts.repeat > 0 || opts.repeat === \"*\" || opts.repeat === \"+\") {\n var repeatStart = opts.repeat === \"*\" ? 0 : opts.repeat === \"+\" ? 1 : opts.repeat;\n mask = opts.groupmarker[0] + mask + opts.groupmarker[1] + opts.quantifiermarker[0] + repeatStart + \",\" + opts.repeat + opts.quantifiermarker[1];\n }\n var masksetDefinition, maskdefKey = regexMask ? \"regex_\" + opts.regex : opts.numericInput ? mask.split(\"\").reverse().join(\"\") : mask;\n if (Inputmask.prototype.masksCache[maskdefKey] === undefined || nocache === true) {\n masksetDefinition = {\n mask: mask,\n maskToken: Inputmask.prototype.analyseMask(mask, regexMask, opts),\n validPositions: {},\n _buffer: undefined,\n buffer: undefined,\n tests: {},\n excludes: {},\n metadata: metadata,\n maskLength: undefined,\n jitOffset: {}\n };\n if (nocache !== true) {\n Inputmask.prototype.masksCache[maskdefKey] = masksetDefinition;\n masksetDefinition = $.extend(true, {}, Inputmask.prototype.masksCache[maskdefKey]);\n }\n } else masksetDefinition = $.extend(true, {}, Inputmask.prototype.masksCache[maskdefKey]);\n return masksetDefinition;\n }\n var ms;\n if ($.isFunction(opts.mask)) {\n opts.mask = opts.mask(opts);\n }\n if ($.isArray(opts.mask)) {\n if (opts.mask.length > 1) {\n if (opts.keepStatic === null) {\n opts.keepStatic = \"auto\";\n for (var i = 0; i < opts.mask.length; i++) {\n if (opts.mask[i].charAt(0) !== opts.mask[0].charAt(0)) {\n opts.keepStatic = true;\n break;\n }\n }\n }\n var altMask = opts.groupmarker[0];\n $.each(opts.isRTL ? opts.mask.reverse() : opts.mask, function(ndx, msk) {\n if (altMask.length > 1) {\n altMask += opts.groupmarker[1] + opts.alternatormarker + opts.groupmarker[0];\n }\n if (msk.mask !== undefined && !$.isFunction(msk.mask)) {\n altMask += msk.mask;\n } else {\n altMask += msk;\n }\n });\n altMask += opts.groupmarker[1];\n return generateMask(altMask, opts.mask, opts);\n } else opts.mask = opts.mask.pop();\n }\n if (opts.mask && opts.mask.mask !== undefined && !$.isFunction(opts.mask.mask)) {\n ms = generateMask(opts.mask.mask, opts.mask, opts);\n } else {\n ms = generateMask(opts.mask, opts.mask, opts);\n }\n return ms;\n }\n function isInputEventSupported(eventName) {\n var el = document.createElement(\"input\"), evName = \"on\" + eventName, isSupported = evName in el;\n if (!isSupported) {\n el.setAttribute(evName, \"return;\");\n isSupported = typeof el[evName] === \"function\";\n }\n el = null;\n return isSupported;\n }\n function maskScope(actionObj, maskset, opts) {\n maskset = maskset || this.maskset;\n opts = opts || this.opts;\n var inputmask = this, el = this.el, isRTL = this.isRTL, undoValue, $el, skipKeyPressEvent = false, skipInputEvent = false, ignorable = false, maxLength, mouseEnter = false, colorMask, originalPlaceholder;\n var getMaskTemplate = function(baseOnInput, minimalPos, includeMode, noJit, clearOptionalTail) {\n var greedy = opts.greedy;\n if (clearOptionalTail) opts.greedy = false;\n minimalPos = minimalPos || 0;\n var maskTemplate = [], ndxIntlzr, pos = 0, test, testPos, lvp = getLastValidPosition();\n do {\n if (baseOnInput === true && getMaskSet().validPositions[pos]) {\n testPos = clearOptionalTail && getMaskSet().validPositions[pos].match.optionality === true && getMaskSet().validPositions[pos + 1] === undefined && (getMaskSet().validPositions[pos].generatedInput === true || getMaskSet().validPositions[pos].input == opts.skipOptionalPartCharacter && pos > 0) ? determineTestTemplate(pos, getTests(pos, ndxIntlzr, pos - 1)) : getMaskSet().validPositions[pos];\n test = testPos.match;\n ndxIntlzr = testPos.locator.slice();\n maskTemplate.push(includeMode === true ? testPos.input : includeMode === false ? test.nativeDef : getPlaceholder(pos, test));\n } else {\n testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);\n test = testPos.match;\n ndxIntlzr = testPos.locator.slice();\n var jitMasking = noJit === true ? false : opts.jitMasking !== false ? opts.jitMasking : test.jit;\n if (jitMasking === false || jitMasking === undefined || typeof jitMasking === \"number\" && isFinite(jitMasking) && jitMasking > pos) {\n maskTemplate.push(includeMode === false ? test.nativeDef : getPlaceholder(pos, test));\n }\n }\n if (opts.keepStatic === \"auto\") {\n if (test.newBlockMarker && test.fn !== null) {\n opts.keepStatic = pos - 1;\n }\n }\n pos++;\n } while ((maxLength === undefined || pos < maxLength) && (test.fn !== null || test.def !== \"\") || minimalPos > pos);\n if (maskTemplate[maskTemplate.length - 1] === \"\") {\n maskTemplate.pop();\n }\n if (includeMode !== false || getMaskSet().maskLength === undefined) getMaskSet().maskLength = pos - 1;\n opts.greedy = greedy;\n return maskTemplate;\n };\n function getMaskSet() {\n return maskset;\n }\n function resetMaskSet(soft) {\n var maskset = getMaskSet();\n maskset.buffer = undefined;\n if (soft !== true) {\n maskset.validPositions = {};\n maskset.p = 0;\n }\n }\n function getLastValidPosition(closestTo, strict, validPositions) {\n var before = -1, after = -1, valids = validPositions || getMaskSet().validPositions;\n if (closestTo === undefined) closestTo = -1;\n for (var posNdx in valids) {\n var psNdx = parseInt(posNdx);\n if (valids[psNdx] && (strict || valids[psNdx].generatedInput !== true)) {\n if (psNdx <= closestTo) before = psNdx;\n if (psNdx >= closestTo) after = psNdx;\n }\n }\n return before === -1 || before == closestTo ? after : after == -1 ? before : closestTo - before < after - closestTo ? before : after;\n }\n function getDecisionTaker(tst) {\n var decisionTaker = tst.locator[tst.alternation];\n if (typeof decisionTaker == \"string\" && decisionTaker.length > 0) {\n decisionTaker = decisionTaker.split(\",\")[0];\n }\n return decisionTaker !== undefined ? decisionTaker.toString() : \"\";\n }\n function getLocator(tst, align) {\n var locator = (tst.alternation != undefined ? tst.mloc[getDecisionTaker(tst)] : tst.locator).join(\"\");\n if (locator !== \"\") while (locator.length < align) locator += \"0\";\n return locator;\n }\n function determineTestTemplate(pos, tests) {\n pos = pos > 0 ? pos - 1 : 0;\n var altTest = getTest(pos), targetLocator = getLocator(altTest), tstLocator, closest, bestMatch;\n for (var ndx = 0; ndx < tests.length; ndx++) {\n var tst = tests[ndx];\n tstLocator = getLocator(tst, targetLocator.length);\n var distance = Math.abs(tstLocator - targetLocator);\n if (closest === undefined || tstLocator !== \"\" && distance < closest || bestMatch && !opts.greedy && bestMatch.match.optionality && bestMatch.match.newBlockMarker === \"master\" && (!tst.match.optionality || !tst.match.newBlockMarker) || bestMatch && bestMatch.match.optionalQuantifier && !tst.match.optionalQuantifier) {\n closest = distance;\n bestMatch = tst;\n }\n }\n return bestMatch;\n }\n function getTestTemplate(pos, ndxIntlzr, tstPs) {\n return getMaskSet().validPositions[pos] || determineTestTemplate(pos, getTests(pos, ndxIntlzr ? ndxIntlzr.slice() : ndxIntlzr, tstPs));\n }\n function getTest(pos, tests) {\n if (getMaskSet().validPositions[pos]) {\n return getMaskSet().validPositions[pos];\n }\n return (tests || getTests(pos))[0];\n }\n function positionCanMatchDefinition(pos, def) {\n var valid = false, tests = getTests(pos);\n for (var tndx = 0; tndx < tests.length; tndx++) {\n if (tests[tndx].match && tests[tndx].match.def === def) {\n valid = true;\n break;\n }\n }\n return valid;\n }\n function getTests(pos, ndxIntlzr, tstPs) {\n var maskTokens = getMaskSet().maskToken, testPos = ndxIntlzr ? tstPs : 0, ndxInitializer = ndxIntlzr ? ndxIntlzr.slice() : [ 0 ], matches = [], insertStop = false, latestMatch, cacheDependency = ndxIntlzr ? ndxIntlzr.join(\"\") : \"\";\n function resolveTestFromToken(maskToken, ndxInitializer, loopNdx, quantifierRecurse) {\n function handleMatch(match, loopNdx, quantifierRecurse) {\n function isFirstMatch(latestMatch, tokenGroup) {\n var firstMatch = $.inArray(latestMatch, tokenGroup.matches) === 0;\n if (!firstMatch) {\n $.each(tokenGroup.matches, function(ndx, match) {\n if (match.isQuantifier === true) firstMatch = isFirstMatch(latestMatch, tokenGroup.matches[ndx - 1]); else if (match.hasOwnProperty(\"matches\")) firstMatch = isFirstMatch(latestMatch, match);\n if (firstMatch) return false;\n });\n }\n return firstMatch;\n }\n function resolveNdxInitializer(pos, alternateNdx, targetAlternation) {\n var bestMatch, indexPos;\n if (getMaskSet().tests[pos] || getMaskSet().validPositions[pos]) {\n $.each(getMaskSet().tests[pos] || [ getMaskSet().validPositions[pos] ], function(ndx, lmnt) {\n if (lmnt.mloc[alternateNdx]) {\n bestMatch = lmnt;\n return false;\n }\n var alternation = targetAlternation !== undefined ? targetAlternation : lmnt.alternation, ndxPos = lmnt.locator[alternation] !== undefined ? lmnt.locator[alternation].toString().indexOf(alternateNdx) : -1;\n if ((indexPos === undefined || ndxPos < indexPos) && ndxPos !== -1) {\n bestMatch = lmnt;\n indexPos = ndxPos;\n }\n });\n }\n if (bestMatch) {\n var bestMatchAltIndex = bestMatch.locator[bestMatch.alternation];\n var locator = bestMatch.mloc[alternateNdx] || bestMatch.mloc[bestMatchAltIndex] || bestMatch.locator;\n return locator.slice((targetAlternation !== undefined ? targetAlternation : bestMatch.alternation) + 1);\n } else {\n return targetAlternation !== undefined ? resolveNdxInitializer(pos, alternateNdx) : undefined;\n }\n }\n function isSubsetOf(source, target) {\n function expand(pattern) {\n var expanded = [], start, end;\n for (var i = 0, l = pattern.length; i < l; i++) {\n if (pattern.charAt(i) === \"-\") {\n end = pattern.charCodeAt(i + 1);\n while (++start < end) expanded.push(String.fromCharCode(start));\n } else {\n start = pattern.charCodeAt(i);\n expanded.push(pattern.charAt(i));\n }\n }\n return expanded.join(\"\");\n }\n if (opts.regex && source.match.fn !== null && target.match.fn !== null) {\n return expand(target.match.def.replace(/[\\[\\]]/g, \"\")).indexOf(expand(source.match.def.replace(/[\\[\\]]/g, \"\"))) !== -1;\n }\n return source.match.def === target.match.nativeDef;\n }\n function staticCanMatchDefinition(source, target) {\n var sloc = source.locator.slice(source.alternation).join(\"\"), tloc = target.locator.slice(target.alternation).join(\"\"), canMatch = sloc == tloc;\n canMatch = canMatch && source.match.fn === null && target.match.fn !== null ? target.match.fn.test(source.match.def, getMaskSet(), pos, false, opts, false) : false;\n return canMatch;\n }\n function setMergeLocators(targetMatch, altMatch) {\n if (altMatch === undefined || targetMatch.alternation === altMatch.alternation && targetMatch.locator[targetMatch.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) === -1) {\n targetMatch.mloc = targetMatch.mloc || {};\n var locNdx = targetMatch.locator[targetMatch.alternation];\n if (locNdx === undefined) targetMatch.alternation = undefined; else {\n if (typeof locNdx === \"string\") locNdx = locNdx.split(\",\")[0];\n if (targetMatch.mloc[locNdx] === undefined) targetMatch.mloc[locNdx] = targetMatch.locator.slice();\n if (altMatch !== undefined) {\n for (var ndx in altMatch.mloc) {\n if (typeof ndx === \"string\") ndx = ndx.split(\",\")[0];\n if (targetMatch.mloc[ndx] === undefined) targetMatch.mloc[ndx] = altMatch.mloc[ndx];\n }\n targetMatch.locator[targetMatch.alternation] = Object.keys(targetMatch.mloc).join(\",\");\n }\n return true;\n }\n }\n return false;\n }\n if (testPos > 500 && quantifierRecurse !== undefined) {\n throw \"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. \" + getMaskSet().mask;\n }\n if (testPos === pos && match.matches === undefined) {\n matches.push({\n match: match,\n locator: loopNdx.reverse(),\n cd: cacheDependency,\n mloc: {}\n });\n return true;\n } else if (match.matches !== undefined) {\n if (match.isGroup && quantifierRecurse !== match) {\n match = handleMatch(maskToken.matches[$.inArray(match, maskToken.matches) + 1], loopNdx, quantifierRecurse);\n if (match) return true;\n } else if (match.isOptional) {\n var optionalToken = match;\n match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse);\n if (match) {\n $.each(matches, function(ndx, mtch) {\n mtch.match.optionality = true;\n });\n latestMatch = matches[matches.length - 1].match;\n if (quantifierRecurse === undefined && isFirstMatch(latestMatch, optionalToken)) {\n insertStop = true;\n testPos = pos;\n } else return true;\n }\n } else if (match.isAlternator) {\n var alternateToken = match, malternateMatches = [], maltMatches, currentMatches = matches.slice(), loopNdxCnt = loopNdx.length;\n var altIndex = ndxInitializer.length > 0 ? ndxInitializer.shift() : -1;\n if (altIndex === -1 || typeof altIndex === \"string\") {\n var currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr = [], amndx;\n if (typeof altIndex == \"string\") {\n altIndexArr = altIndex.split(\",\");\n } else {\n for (amndx = 0; amndx < alternateToken.matches.length; amndx++) {\n altIndexArr.push(amndx.toString());\n }\n }\n if (getMaskSet().excludes[pos]) {\n var altIndexArrClone = altIndexArr.slice();\n for (var i = 0, el = getMaskSet().excludes[pos].length; i < el; i++) {\n altIndexArr.splice(altIndexArr.indexOf(getMaskSet().excludes[pos][i].toString()), 1);\n }\n if (altIndexArr.length === 0) {\n getMaskSet().excludes[pos] = undefined;\n altIndexArr = altIndexArrClone;\n }\n }\n if (opts.keepStatic === true || isFinite(parseInt(opts.keepStatic)) && currentPos >= opts.keepStatic) altIndexArr = altIndexArr.slice(0, 1);\n var unMatchedAlternation = false;\n for (var ndx = 0; ndx < altIndexArr.length; ndx++) {\n amndx = parseInt(altIndexArr[ndx]);\n matches = [];\n ndxInitializer = typeof altIndex === \"string\" ? resolveNdxInitializer(testPos, amndx, loopNdxCnt) || ndxInitializerClone.slice() : ndxInitializerClone.slice();\n if (alternateToken.matches[amndx] && handleMatch(alternateToken.matches[amndx], [ amndx ].concat(loopNdx), quantifierRecurse)) match = true; else if (ndx === 0) {\n unMatchedAlternation = true;\n }\n maltMatches = matches.slice();\n testPos = currentPos;\n matches = [];\n for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) {\n var altMatch = maltMatches[ndx1], dropMatch = false;\n altMatch.match.jit = altMatch.match.jit || unMatchedAlternation;\n altMatch.alternation = altMatch.alternation || loopNdxCnt;\n setMergeLocators(altMatch);\n for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) {\n var altMatch2 = malternateMatches[ndx2];\n if (typeof altIndex !== \"string\" || altMatch.alternation !== undefined && $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr) !== -1) {\n if (altMatch.match.nativeDef === altMatch2.match.nativeDef) {\n dropMatch = true;\n setMergeLocators(altMatch2, altMatch);\n break;\n } else if (isSubsetOf(altMatch, altMatch2)) {\n if (setMergeLocators(altMatch, altMatch2)) {\n dropMatch = true;\n malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch);\n }\n break;\n } else if (isSubsetOf(altMatch2, altMatch)) {\n setMergeLocators(altMatch2, altMatch);\n break;\n } else if (staticCanMatchDefinition(altMatch, altMatch2)) {\n if (setMergeLocators(altMatch, altMatch2)) {\n dropMatch = true;\n malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch);\n }\n break;\n }\n }\n }\n if (!dropMatch) {\n malternateMatches.push(altMatch);\n }\n }\n }\n matches = currentMatches.concat(malternateMatches);\n testPos = pos;\n insertStop = matches.length > 0;\n match = malternateMatches.length > 0;\n ndxInitializer = ndxInitializerClone.slice();\n } else match = handleMatch(alternateToken.matches[altIndex] || maskToken.matches[altIndex], [ altIndex ].concat(loopNdx), quantifierRecurse);\n if (match) return true;\n } else if (match.isQuantifier && quantifierRecurse !== maskToken.matches[$.inArray(match, maskToken.matches) - 1]) {\n var qt = match;\n for (var qndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) && testPos <= pos; qndx++) {\n var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1];\n match = handleMatch(tokenGroup, [ qndx ].concat(loopNdx), tokenGroup);\n if (match) {\n latestMatch = matches[matches.length - 1].match;\n latestMatch.optionalQuantifier = qndx >= qt.quantifier.min;\n latestMatch.jit = (qndx || 1) * tokenGroup.matches.indexOf(latestMatch) >= qt.quantifier.jit;\n if (latestMatch.optionalQuantifier && isFirstMatch(latestMatch, tokenGroup)) {\n insertStop = true;\n testPos = pos;\n break;\n }\n if (latestMatch.jit) {\n getMaskSet().jitOffset[pos] = tokenGroup.matches.indexOf(latestMatch);\n }\n return true;\n }\n }\n } else {\n match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse);\n if (match) return true;\n }\n } else {\n testPos++;\n }\n }\n for (var tndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; tndx < maskToken.matches.length; tndx++) {\n if (maskToken.matches[tndx].isQuantifier !== true) {\n var match = handleMatch(maskToken.matches[tndx], [ tndx ].concat(loopNdx), quantifierRecurse);\n if (match && testPos === pos) {\n return match;\n } else if (testPos > pos) {\n break;\n }\n }\n }\n }\n function mergeLocators(pos, tests) {\n var locator = [];\n if (!$.isArray(tests)) tests = [ tests ];\n if (tests.length > 0) {\n if (tests[0].alternation === undefined) {\n locator = determineTestTemplate(pos, tests.slice()).locator.slice();\n if (locator.length === 0) locator = tests[0].locator.slice();\n } else {\n $.each(tests, function(ndx, tst) {\n if (tst.def !== \"\") {\n if (locator.length === 0) locator = tst.locator.slice(); else {\n for (var i = 0; i < locator.length; i++) {\n if (tst.locator[i] && locator[i].toString().indexOf(tst.locator[i]) === -1) {\n locator[i] += \",\" + tst.locator[i];\n }\n }\n }\n }\n });\n }\n }\n return locator;\n }\n if (pos > -1) {\n if (ndxIntlzr === undefined) {\n var previousPos = pos - 1, test;\n while ((test = getMaskSet().validPositions[previousPos] || getMaskSet().tests[previousPos]) === undefined && previousPos > -1) {\n previousPos--;\n }\n if (test !== undefined && previousPos > -1) {\n ndxInitializer = mergeLocators(previousPos, test);\n cacheDependency = ndxInitializer.join(\"\");\n testPos = previousPos;\n }\n }\n if (getMaskSet().tests[pos] && getMaskSet().tests[pos][0].cd === cacheDependency) {\n return getMaskSet().tests[pos];\n }\n for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length; mtndx++) {\n var match = resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [ mtndx ]);\n if (match && testPos === pos || testPos > pos) {\n break;\n }\n }\n }\n if (matches.length === 0 || insertStop) {\n matches.push({\n match: {\n fn: null,\n optionality: false,\n casing: null,\n def: \"\",\n placeholder: \"\"\n },\n locator: [],\n mloc: {},\n cd: cacheDependency\n });\n }\n if (ndxIntlzr !== undefined && getMaskSet().tests[pos]) {\n return $.extend(true, [], matches);\n }\n getMaskSet().tests[pos] = $.extend(true, [], matches);\n return getMaskSet().tests[pos];\n }\n function getBufferTemplate() {\n if (getMaskSet()._buffer === undefined) {\n getMaskSet()._buffer = getMaskTemplate(false, 1);\n if (getMaskSet().buffer === undefined) getMaskSet().buffer = getMaskSet()._buffer.slice();\n }\n return getMaskSet()._buffer;\n }\n function getBuffer(noCache) {\n if (getMaskSet().buffer === undefined || noCache === true) {\n getMaskSet().buffer = getMaskTemplate(true, getLastValidPosition(), true);\n if (getMaskSet()._buffer === undefined) getMaskSet()._buffer = getMaskSet().buffer.slice();\n }\n return getMaskSet().buffer;\n }\n function refreshFromBuffer(start, end, buffer) {\n var i, p;\n if (start === true) {\n resetMaskSet();\n start = 0;\n end = buffer.length;\n } else {\n for (i = start; i < end; i++) {\n delete getMaskSet().validPositions[i];\n }\n }\n p = start;\n for (i = start; i < end; i++) {\n resetMaskSet(true);\n if (buffer[i] !== opts.skipOptionalPartCharacter) {\n var valResult = isValid(p, buffer[i], true, true);\n if (valResult !== false) {\n resetMaskSet(true);\n p = valResult.caret !== undefined ? valResult.caret : valResult.pos + 1;\n }\n }\n }\n }\n function casing(elem, test, pos) {\n switch (opts.casing || test.casing) {\n case \"upper\":\n elem = elem.toUpperCase();\n break;\n\n case \"lower\":\n elem = elem.toLowerCase();\n break;\n\n case \"title\":\n var posBefore = getMaskSet().validPositions[pos - 1];\n if (pos === 0 || posBefore && posBefore.input === String.fromCharCode(Inputmask.keyCode.SPACE)) {\n elem = elem.toUpperCase();\n } else {\n elem = elem.toLowerCase();\n }\n break;\n\n default:\n if ($.isFunction(opts.casing)) {\n var args = Array.prototype.slice.call(arguments);\n args.push(getMaskSet().validPositions);\n elem = opts.casing.apply(this, args);\n }\n }\n return elem;\n }\n function checkAlternationMatch(altArr1, altArr2, na) {\n var altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1), isMatch = false, naArr = na !== undefined ? na.split(\",\") : [], naNdx;\n for (var i = 0; i < naArr.length; i++) {\n if ((naNdx = altArr1.indexOf(naArr[i])) !== -1) {\n altArr1.splice(naNdx, 1);\n }\n }\n for (var alndx = 0; alndx < altArr1.length; alndx++) {\n if ($.inArray(altArr1[alndx], altArrC) !== -1) {\n isMatch = true;\n break;\n }\n }\n return isMatch;\n }\n function alternate(pos, c, strict, fromSetValid, rAltPos) {\n var validPsClone = $.extend(true, {}, getMaskSet().validPositions), lastAlt, alternation, isValidRslt = false, altPos, prevAltPos, i, validPos, decisionPos, lAltPos = rAltPos !== undefined ? rAltPos : getLastValidPosition();\n if (lAltPos === -1 && rAltPos === undefined) {\n lastAlt = 0;\n prevAltPos = getTest(lastAlt);\n alternation = prevAltPos.alternation;\n } else {\n for (;lAltPos >= 0; lAltPos--) {\n altPos = getMaskSet().validPositions[lAltPos];\n if (altPos && altPos.alternation !== undefined) {\n if (prevAltPos && prevAltPos.locator[altPos.alternation] !== altPos.locator[altPos.alternation]) {\n break;\n }\n lastAlt = lAltPos;\n alternation = getMaskSet().validPositions[lastAlt].alternation;\n prevAltPos = altPos;\n }\n }\n }\n if (alternation !== undefined) {\n decisionPos = parseInt(lastAlt);\n getMaskSet().excludes[decisionPos] = getMaskSet().excludes[decisionPos] || [];\n if (pos !== true) {\n getMaskSet().excludes[decisionPos].push(getDecisionTaker(prevAltPos));\n }\n var validInputsClone = [], staticInputsBeforePos = 0;\n for (i = decisionPos; i < getLastValidPosition(undefined, true) + 1; i++) {\n validPos = getMaskSet().validPositions[i];\n if (validPos && validPos.generatedInput !== true) {\n validInputsClone.push(validPos.input);\n } else if (i < pos) staticInputsBeforePos++;\n delete getMaskSet().validPositions[i];\n }\n while (getMaskSet().excludes[decisionPos] && getMaskSet().excludes[decisionPos].length < 10) {\n var posOffset = staticInputsBeforePos * -1, validInputs = validInputsClone.slice();\n getMaskSet().tests[decisionPos] = undefined;\n resetMaskSet(true);\n isValidRslt = true;\n while (validInputs.length > 0) {\n var input = validInputs.shift();\n if (!(isValidRslt = isValid(getLastValidPosition(undefined, true) + 1, input, false, fromSetValid, true))) {\n break;\n }\n }\n if (isValidRslt && c !== undefined) {\n var targetLvp = getLastValidPosition(pos) + 1;\n for (i = decisionPos; i < getLastValidPosition() + 1; i++) {\n validPos = getMaskSet().validPositions[i];\n if ((validPos === undefined || validPos.match.fn == null) && i < pos + posOffset) {\n posOffset++;\n }\n }\n pos = pos + posOffset;\n isValidRslt = isValid(pos > targetLvp ? targetLvp : pos, c, strict, fromSetValid, true);\n }\n if (!isValidRslt) {\n resetMaskSet();\n prevAltPos = getTest(decisionPos);\n getMaskSet().validPositions = $.extend(true, {}, validPsClone);\n if (getMaskSet().excludes[decisionPos]) {\n var decisionTaker = getDecisionTaker(prevAltPos);\n if (getMaskSet().excludes[decisionPos].indexOf(decisionTaker) !== -1) {\n isValidRslt = alternate(pos, c, strict, fromSetValid, decisionPos - 1);\n break;\n }\n getMaskSet().excludes[decisionPos].push(decisionTaker);\n for (i = decisionPos; i < getLastValidPosition(undefined, true) + 1; i++) delete getMaskSet().validPositions[i];\n } else {\n isValidRslt = alternate(pos, c, strict, fromSetValid, decisionPos - 1);\n break;\n }\n } else break;\n }\n }\n getMaskSet().excludes[decisionPos] = undefined;\n return isValidRslt;\n }\n function isValid(pos, c, strict, fromSetValid, fromAlternate, validateOnly) {\n function isSelection(posObj) {\n return isRTL ? posObj.begin - posObj.end > 1 || posObj.begin - posObj.end === 1 : posObj.end - posObj.begin > 1 || posObj.end - posObj.begin === 1;\n }\n strict = strict === true;\n var maskPos = pos;\n if (pos.begin !== undefined) {\n maskPos = isRTL ? pos.end : pos.begin;\n }\n function _isValid(position, c, strict) {\n var rslt = false;\n $.each(getTests(position), function(ndx, tst) {\n var test = tst.match;\n getBuffer(true);\n rslt = test.fn != null ? test.fn.test(c, getMaskSet(), position, strict, opts, isSelection(pos)) : (c === test.def || c === opts.skipOptionalPartCharacter) && test.def !== \"\" ? {\n c: getPlaceholder(position, test, true) || test.def,\n pos: position\n } : false;\n if (rslt !== false) {\n var elem = rslt.c !== undefined ? rslt.c : c, validatedPos = position;\n elem = elem === opts.skipOptionalPartCharacter && test.fn === null ? getPlaceholder(position, test, true) || test.def : elem;\n if (rslt.remove !== undefined) {\n if (!$.isArray(rslt.remove)) rslt.remove = [ rslt.remove ];\n $.each(rslt.remove.sort(function(a, b) {\n return b - a;\n }), function(ndx, lmnt) {\n revalidateMask({\n begin: lmnt,\n end: lmnt + 1\n });\n });\n }\n if (rslt.insert !== undefined) {\n if (!$.isArray(rslt.insert)) rslt.insert = [ rslt.insert ];\n $.each(rslt.insert.sort(function(a, b) {\n return a - b;\n }), function(ndx, lmnt) {\n isValid(lmnt.pos, lmnt.c, true, fromSetValid);\n });\n }\n if (rslt !== true && rslt.pos !== undefined && rslt.pos !== position) {\n validatedPos = rslt.pos;\n }\n if (rslt !== true && rslt.pos === undefined && rslt.c === undefined) {\n return false;\n }\n if (!revalidateMask(pos, $.extend({}, tst, {\n input: casing(elem, test, validatedPos)\n }), fromSetValid, validatedPos)) {\n rslt = false;\n }\n return false;\n }\n });\n return rslt;\n }\n var result = true, positionsClone = $.extend(true, {}, getMaskSet().validPositions);\n if ($.isFunction(opts.preValidation) && !strict && fromSetValid !== true && validateOnly !== true) {\n result = opts.preValidation(getBuffer(), maskPos, c, isSelection(pos), opts, getMaskSet());\n }\n if (result === true) {\n trackbackPositions(undefined, maskPos, true);\n if (maxLength === undefined || maskPos < maxLength) {\n result = _isValid(maskPos, c, strict);\n if ((!strict || fromSetValid === true) && result === false && validateOnly !== true) {\n var currentPosValid = getMaskSet().validPositions[maskPos];\n if (currentPosValid && currentPosValid.match.fn === null && (currentPosValid.match.def === c || c === opts.skipOptionalPartCharacter)) {\n result = {\n caret: seekNext(maskPos)\n };\n } else {\n if ((opts.insertMode || getMaskSet().validPositions[seekNext(maskPos)] === undefined) && (!isMask(maskPos, true) || getMaskSet().jitOffset[maskPos])) {\n if (getMaskSet().jitOffset[maskPos] && getMaskSet().validPositions[seekNext(maskPos)] === undefined) {\n result = isValid(maskPos + getMaskSet().jitOffset[maskPos], c, strict);\n if (result !== false) result.caret = maskPos;\n } else for (var nPos = maskPos + 1, snPos = seekNext(maskPos); nPos <= snPos; nPos++) {\n result = _isValid(nPos, c, strict);\n if (result !== false) {\n result = trackbackPositions(maskPos, result.pos !== undefined ? result.pos : nPos) || result;\n maskPos = nPos;\n break;\n }\n }\n }\n }\n }\n }\n if (result === false && opts.keepStatic !== false && (opts.regex == null || isComplete(getBuffer())) && !strict && fromAlternate !== true) {\n result = alternate(maskPos, c, strict, fromSetValid);\n }\n if (result === true) {\n result = {\n pos: maskPos\n };\n }\n }\n if ($.isFunction(opts.postValidation) && result !== false && !strict && fromSetValid !== true && validateOnly !== true) {\n var postResult = opts.postValidation(getBuffer(true), pos.begin !== undefined ? isRTL ? pos.end : pos.begin : pos, result, opts);\n if (postResult !== undefined) {\n if (postResult.refreshFromBuffer && postResult.buffer) {\n var refresh = postResult.refreshFromBuffer;\n refreshFromBuffer(refresh === true ? refresh : refresh.start, refresh.end, postResult.buffer);\n }\n result = postResult === true ? result : postResult;\n }\n }\n if (result && result.pos === undefined) {\n result.pos = maskPos;\n }\n if (result === false || validateOnly === true) {\n resetMaskSet(true);\n getMaskSet().validPositions = $.extend(true, {}, positionsClone);\n }\n return result;\n }\n function trackbackPositions(originalPos, newPos, fillOnly) {\n var result;\n if (originalPos === undefined) {\n for (originalPos = newPos - 1; originalPos > 0; originalPos--) {\n if (getMaskSet().validPositions[originalPos]) break;\n }\n }\n for (var ps = originalPos; ps < newPos; ps++) {\n if (getMaskSet().validPositions[ps] === undefined && !isMask(ps, true)) {\n var vp = ps == 0 ? getTest(ps) : getMaskSet().validPositions[ps - 1];\n if (vp) {\n var tests = getTests(ps).slice();\n if (tests[tests.length - 1].match.def === \"\") tests.pop();\n var bestMatch = determineTestTemplate(ps, tests);\n bestMatch = $.extend({}, bestMatch, {\n input: getPlaceholder(ps, bestMatch.match, true) || bestMatch.match.def\n });\n bestMatch.generatedInput = true;\n revalidateMask(ps, bestMatch, true);\n if (fillOnly !== true) {\n var cvpInput = getMaskSet().validPositions[newPos].input;\n getMaskSet().validPositions[newPos] = undefined;\n result = isValid(newPos, cvpInput, true, true);\n }\n }\n }\n }\n return result;\n }\n function revalidateMask(pos, validTest, fromSetValid, validatedPos) {\n function IsEnclosedStatic(pos, valids, selection) {\n var posMatch = valids[pos];\n if (posMatch !== undefined && (posMatch.match.fn === null && posMatch.match.optionality !== true || posMatch.input === opts.radixPoint)) {\n var prevMatch = selection.begin <= pos - 1 ? valids[pos - 1] && valids[pos - 1].match.fn === null && valids[pos - 1] : valids[pos - 1], nextMatch = selection.end > pos + 1 ? valids[pos + 1] && valids[pos + 1].match.fn === null && valids[pos + 1] : valids[pos + 1];\n return prevMatch && nextMatch;\n }\n return false;\n }\n var begin = pos.begin !== undefined ? pos.begin : pos, end = pos.end !== undefined ? pos.end : pos;\n if (pos.begin > pos.end) {\n begin = pos.end;\n end = pos.begin;\n }\n validatedPos = validatedPos !== undefined ? validatedPos : begin;\n if (begin !== end || opts.insertMode && getMaskSet().validPositions[validatedPos] !== undefined && fromSetValid === undefined) {\n var positionsClone = $.extend(true, {}, getMaskSet().validPositions), lvp = getLastValidPosition(undefined, true), i;\n getMaskSet().p = begin;\n for (i = lvp; i >= begin; i--) {\n if (getMaskSet().validPositions[i] && getMaskSet().validPositions[i].match.nativeDef === \"+\") {\n opts.isNegative = false;\n }\n delete getMaskSet().validPositions[i];\n }\n var valid = true, j = validatedPos, vps = getMaskSet().validPositions, needsValidation = false, posMatch = j, i = j;\n if (validTest) {\n getMaskSet().validPositions[validatedPos] = $.extend(true, {}, validTest);\n posMatch++;\n j++;\n if (begin < end) i++;\n }\n for (;i <= lvp; i++) {\n var t = positionsClone[i];\n if (t !== undefined && (i >= end || i >= begin && t.generatedInput !== true && IsEnclosedStatic(i, positionsClone, {\n begin: begin,\n end: end\n }))) {\n while (getTest(posMatch).match.def !== \"\") {\n if (needsValidation === false && positionsClone[posMatch] && positionsClone[posMatch].match.nativeDef === t.match.nativeDef) {\n getMaskSet().validPositions[posMatch] = $.extend(true, {}, positionsClone[posMatch]);\n getMaskSet().validPositions[posMatch].input = t.input;\n trackbackPositions(undefined, posMatch, true);\n j = posMatch + 1;\n valid = true;\n } else if (opts.shiftPositions && positionCanMatchDefinition(posMatch, t.match.def)) {\n var result = isValid(posMatch, t.input, true, true);\n valid = result !== false;\n j = result.caret || result.insert ? getLastValidPosition() : posMatch + 1;\n needsValidation = true;\n } else {\n valid = t.generatedInput === true || t.input === opts.radixPoint && opts.numericInput === true;\n }\n if (valid) break;\n if (!valid && posMatch > end && isMask(posMatch, true) && (t.match.fn !== null || posMatch > getMaskSet().maskLength)) {\n break;\n }\n posMatch++;\n }\n if (getTest(posMatch).match.def == \"\") valid = false;\n posMatch = j;\n }\n if (!valid) break;\n }\n if (!valid) {\n getMaskSet().validPositions = $.extend(true, {}, positionsClone);\n resetMaskSet(true);\n return false;\n }\n } else if (validTest) {\n getMaskSet().validPositions[validatedPos] = $.extend(true, {}, validTest);\n }\n resetMaskSet(true);\n return true;\n }\n function isMask(pos, strict) {\n var test = getTestTemplate(pos).match;\n if (test.def === \"\") test = getTest(pos).match;\n if (test.fn != null) {\n return test.fn;\n }\n if (strict !== true && pos > -1) {\n var tests = getTests(pos);\n return tests.length > 1 + (tests[tests.length - 1].match.def === \"\" ? 1 : 0);\n }\n return false;\n }\n function seekNext(pos, newBlock) {\n var position = pos + 1;\n while (getTest(position).match.def !== \"\" && (newBlock === true && (getTest(position).match.newBlockMarker !== true || !isMask(position)) || newBlock !== true && !isMask(position))) {\n position++;\n }\n return position;\n }\n function seekPrevious(pos, newBlock) {\n var position = pos, tests;\n if (position <= 0) return 0;\n while (--position > 0 && (newBlock === true && getTest(position).match.newBlockMarker !== true || newBlock !== true && !isMask(position) && (tests = getTests(position), \n tests.length < 2 || tests.length === 2 && tests[1].match.def === \"\"))) {}\n return position;\n }\n function writeBuffer(input, buffer, caretPos, event, triggerEvents) {\n if (event && $.isFunction(opts.onBeforeWrite)) {\n var result = opts.onBeforeWrite.call(inputmask, event, buffer, caretPos, opts);\n if (result) {\n if (result.refreshFromBuffer) {\n var refresh = result.refreshFromBuffer;\n refreshFromBuffer(refresh === true ? refresh : refresh.start, refresh.end, result.buffer || buffer);\n buffer = getBuffer(true);\n }\n if (caretPos !== undefined) caretPos = result.caret !== undefined ? result.caret : caretPos;\n }\n }\n if (input !== undefined) {\n input.inputmask._valueSet(buffer.join(\"\"));\n if (caretPos !== undefined && (event === undefined || event.type !== \"blur\")) {\n caret(input, caretPos);\n } else renderColorMask(input, caretPos, buffer.length === 0);\n if (triggerEvents === true) {\n var $input = $(input), nptVal = input.inputmask._valueGet();\n skipInputEvent = true;\n $input.trigger(\"input\");\n setTimeout(function() {\n if (nptVal === getBufferTemplate().join(\"\")) {\n $input.trigger(\"cleared\");\n } else if (isComplete(buffer) === true) {\n $input.trigger(\"complete\");\n }\n }, 0);\n }\n }\n }\n function getPlaceholder(pos, test, returnPL) {\n test = test || getTest(pos).match;\n if (test.placeholder !== undefined || returnPL === true) {\n return $.isFunction(test.placeholder) ? test.placeholder(opts) : test.placeholder;\n } else if (test.fn === null) {\n if (pos > -1 && getMaskSet().validPositions[pos] === undefined) {\n var tests = getTests(pos), staticAlternations = [], prevTest;\n if (tests.length > 1 + (tests[tests.length - 1].match.def === \"\" ? 1 : 0)) {\n for (var i = 0; i < tests.length; i++) {\n if (tests[i].match.optionality !== true && tests[i].match.optionalQuantifier !== true && (tests[i].match.fn === null || (prevTest === undefined || tests[i].match.fn.test(prevTest.match.def, getMaskSet(), pos, true, opts) !== false))) {\n staticAlternations.push(tests[i]);\n if (tests[i].match.fn === null) prevTest = tests[i];\n if (staticAlternations.length > 1) {\n if (/[0-9a-bA-Z]/.test(staticAlternations[0].match.def)) {\n return opts.placeholder.charAt(pos % opts.placeholder.length);\n }\n }\n }\n }\n }\n }\n return test.def;\n }\n return opts.placeholder.charAt(pos % opts.placeholder.length);\n }\n function HandleNativePlaceholder(npt, value) {\n if (ie) {\n if (npt.inputmask._valueGet() !== value && (npt.placeholder !== value || npt.placeholder === \"\")) {\n var buffer = getBuffer().slice(), nptValue = npt.inputmask._valueGet();\n if (nptValue !== value) {\n var lvp = getLastValidPosition();\n if (lvp === -1 && nptValue === getBufferTemplate().join(\"\")) {\n buffer = [];\n } else if (lvp !== -1) {\n clearOptionalTail(buffer);\n }\n writeBuffer(npt, buffer);\n }\n }\n } else if (npt.placeholder !== value) {\n npt.placeholder = value;\n if (npt.placeholder === \"\") npt.removeAttribute(\"placeholder\");\n }\n }\n var EventRuler = {\n on: function(input, eventName, eventHandler) {\n var ev = function(e) {\n var that = this;\n if (that.inputmask === undefined && this.nodeName !== \"FORM\") {\n var imOpts = $.data(that, \"_inputmask_opts\");\n if (imOpts) new Inputmask(imOpts).mask(that); else EventRuler.off(that);\n } else if (e.type !== \"setvalue\" && this.nodeName !== \"FORM\" && (that.disabled || that.readOnly && !(e.type === \"keydown\" && (e.ctrlKey && e.keyCode === 67) || opts.tabThrough === false && e.keyCode === Inputmask.keyCode.TAB))) {\n e.preventDefault();\n } else {\n switch (e.type) {\n case \"input\":\n if (skipInputEvent === true) {\n skipInputEvent = false;\n return e.preventDefault();\n }\n if (mobile) {\n var args = arguments;\n setTimeout(function() {\n eventHandler.apply(that, args);\n caret(that, that.inputmask.caretPos, undefined, true);\n }, 0);\n return false;\n }\n break;\n\n case \"keydown\":\n skipKeyPressEvent = false;\n skipInputEvent = false;\n break;\n\n case \"keypress\":\n if (skipKeyPressEvent === true) {\n return e.preventDefault();\n }\n skipKeyPressEvent = true;\n break;\n\n case \"click\":\n if (iemobile || iphone) {\n var args = arguments;\n setTimeout(function() {\n eventHandler.apply(that, args);\n }, 0);\n return false;\n }\n break;\n }\n var returnVal = eventHandler.apply(that, arguments);\n if (returnVal === false) {\n e.preventDefault();\n e.stopPropagation();\n }\n return returnVal;\n }\n };\n input.inputmask.events[eventName] = input.inputmask.events[eventName] || [];\n input.inputmask.events[eventName].push(ev);\n if ($.inArray(eventName, [ \"submit\", \"reset\" ]) !== -1) {\n if (input.form !== null) $(input.form).on(eventName, ev);\n } else {\n $(input).on(eventName, ev);\n }\n },\n off: function(input, event) {\n if (input.inputmask && input.inputmask.events) {\n var events;\n if (event) {\n events = [];\n events[event] = input.inputmask.events[event];\n } else {\n events = input.inputmask.events;\n }\n $.each(events, function(eventName, evArr) {\n while (evArr.length > 0) {\n var ev = evArr.pop();\n if ($.inArray(eventName, [ \"submit\", \"reset\" ]) !== -1) {\n if (input.form !== null) $(input.form).off(eventName, ev);\n } else {\n $(input).off(eventName, ev);\n }\n }\n delete input.inputmask.events[eventName];\n });\n }\n }\n };\n var EventHandlers = {\n keydownEvent: function(e) {\n var input = this, $input = $(input), k = e.keyCode, pos = caret(input);\n if (k === Inputmask.keyCode.BACKSPACE || k === Inputmask.keyCode.DELETE || iphone && k === Inputmask.keyCode.BACKSPACE_SAFARI || e.ctrlKey && k === Inputmask.keyCode.X && !isInputEventSupported(\"cut\")) {\n e.preventDefault();\n handleRemove(input, k, pos);\n writeBuffer(input, getBuffer(true), getMaskSet().p, e, input.inputmask._valueGet() !== getBuffer().join(\"\"));\n } else if (k === Inputmask.keyCode.END || k === Inputmask.keyCode.PAGE_DOWN) {\n e.preventDefault();\n var caretPos = seekNext(getLastValidPosition());\n caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, true);\n } else if (k === Inputmask.keyCode.HOME && !e.shiftKey || k === Inputmask.keyCode.PAGE_UP) {\n e.preventDefault();\n caret(input, 0, e.shiftKey ? pos.begin : 0, true);\n } else if ((opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE || k === 90 && e.ctrlKey) && e.altKey !== true) {\n checkVal(input, true, false, undoValue.split(\"\"));\n $input.trigger(\"click\");\n } else if (k === Inputmask.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) {\n opts.insertMode = !opts.insertMode;\n input.setAttribute(\"im-insert\", opts.insertMode);\n } else if (opts.tabThrough === true && k === Inputmask.keyCode.TAB) {\n if (e.shiftKey === true) {\n if (getTest(pos.begin).match.fn === null) {\n pos.begin = seekNext(pos.begin);\n }\n pos.end = seekPrevious(pos.begin, true);\n pos.begin = seekPrevious(pos.end, true);\n } else {\n pos.begin = seekNext(pos.begin, true);\n pos.end = seekNext(pos.begin, true);\n if (pos.end < getMaskSet().maskLength) pos.end--;\n }\n if (pos.begin < getMaskSet().maskLength) {\n e.preventDefault();\n caret(input, pos.begin, pos.end);\n }\n }\n opts.onKeyDown.call(this, e, getBuffer(), caret(input).begin, opts);\n ignorable = $.inArray(k, opts.ignorables) !== -1;\n },\n keypressEvent: function(e, checkval, writeOut, strict, ndx) {\n var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode;\n if (checkval !== true && (!(e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable))) {\n if (k === Inputmask.keyCode.ENTER && undoValue !== getBuffer().join(\"\")) {\n undoValue = getBuffer().join(\"\");\n setTimeout(function() {\n $input.trigger(\"change\");\n }, 0);\n }\n return true;\n } else {\n if (k) {\n if (k === 46 && e.shiftKey === false && opts.radixPoint !== \"\") k = opts.radixPoint.charCodeAt(0);\n var pos = checkval ? {\n begin: ndx,\n end: ndx\n } : caret(input), forwardPosition, c = String.fromCharCode(k), offset = 0;\n if (opts._radixDance && opts.numericInput) {\n var caretPos = getBuffer().indexOf(opts.radixPoint.charAt(0)) + 1;\n if (pos.begin <= caretPos) {\n if (k === opts.radixPoint.charCodeAt(0)) offset = 1;\n pos.begin -= 1;\n pos.end -= 1;\n }\n }\n getMaskSet().writeOutBuffer = true;\n var valResult = isValid(pos, c, strict);\n if (valResult !== false) {\n resetMaskSet(true);\n forwardPosition = valResult.caret !== undefined ? valResult.caret : seekNext(valResult.pos.begin ? valResult.pos.begin : valResult.pos);\n getMaskSet().p = forwardPosition;\n }\n forwardPosition = (opts.numericInput && valResult.caret === undefined ? seekPrevious(forwardPosition) : forwardPosition) + offset;\n if (writeOut !== false) {\n setTimeout(function() {\n opts.onKeyValidation.call(input, k, valResult, opts);\n }, 0);\n if (getMaskSet().writeOutBuffer && valResult !== false) {\n var buffer = getBuffer();\n writeBuffer(input, buffer, forwardPosition, e, checkval !== true);\n }\n }\n e.preventDefault();\n if (checkval) {\n if (valResult !== false) valResult.forwardPosition = forwardPosition;\n return valResult;\n }\n }\n }\n },\n pasteEvent: function(e) {\n var input = this, ev = e.originalEvent || e, $input = $(input), inputValue = input.inputmask._valueGet(true), caretPos = caret(input), tempValue;\n if (isRTL) {\n tempValue = caretPos.end;\n caretPos.end = caretPos.begin;\n caretPos.begin = tempValue;\n }\n var valueBeforeCaret = inputValue.substr(0, caretPos.begin), valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length);\n if (valueBeforeCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(0, caretPos.begin).join(\"\")) valueBeforeCaret = \"\";\n if (valueAfterCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(caretPos.end).join(\"\")) valueAfterCaret = \"\";\n if (window.clipboardData && window.clipboardData.getData) {\n inputValue = valueBeforeCaret + window.clipboardData.getData(\"Text\") + valueAfterCaret;\n } else if (ev.clipboardData && ev.clipboardData.getData) {\n inputValue = valueBeforeCaret + ev.clipboardData.getData(\"text/plain\") + valueAfterCaret;\n } else return true;\n var pasteValue = inputValue;\n if ($.isFunction(opts.onBeforePaste)) {\n pasteValue = opts.onBeforePaste.call(inputmask, inputValue, opts);\n if (pasteValue === false) {\n return e.preventDefault();\n }\n if (!pasteValue) {\n pasteValue = inputValue;\n }\n }\n checkVal(input, false, false, pasteValue.toString().split(\"\"));\n writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()), e, undoValue !== getBuffer().join(\"\"));\n return e.preventDefault();\n },\n inputFallBackEvent: function(e) {\n function radixPointHandler(input, inputValue, caretPos) {\n if (inputValue.charAt(caretPos.begin - 1) === \".\" && opts.radixPoint !== \"\") {\n inputValue = inputValue.split(\"\");\n inputValue[caretPos.begin - 1] = opts.radixPoint.charAt(0);\n inputValue = inputValue.join(\"\");\n }\n return inputValue;\n }\n function ieMobileHandler(input, inputValue, caretPos) {\n if (iemobile) {\n var inputChar = inputValue.replace(getBuffer().join(\"\"), \"\");\n if (inputChar.length === 1) {\n var iv = inputValue.split(\"\");\n iv.splice(caretPos.begin, 0, inputChar);\n inputValue = iv.join(\"\");\n }\n }\n return inputValue;\n }\n var input = this, inputValue = input.inputmask._valueGet();\n if (getBuffer().join(\"\") !== inputValue) {\n var caretPos = caret(input);\n inputValue = radixPointHandler(input, inputValue, caretPos);\n inputValue = ieMobileHandler(input, inputValue, caretPos);\n if (getBuffer().join(\"\") !== inputValue) {\n var buffer = getBuffer().join(\"\"), offset = !opts.numericInput && inputValue.length > buffer.length ? -1 : 0, frontPart = inputValue.substr(0, caretPos.begin), backPart = inputValue.substr(caretPos.begin), frontBufferPart = buffer.substr(0, caretPos.begin + offset), backBufferPart = buffer.substr(caretPos.begin + offset);\n var selection = caretPos, entries = \"\", isEntry = false;\n if (frontPart !== frontBufferPart) {\n var fpl = (isEntry = frontPart.length >= frontBufferPart.length) ? frontPart.length : frontBufferPart.length, i;\n for (i = 0; frontPart.charAt(i) === frontBufferPart.charAt(i) && i < fpl; i++) ;\n if (isEntry) {\n selection.begin = i - offset;\n entries += frontPart.slice(i, selection.end);\n }\n }\n if (backPart !== backBufferPart) {\n if (backPart.length > backBufferPart.length) {\n entries += backPart.slice(0, 1);\n } else {\n if (backPart.length < backBufferPart.length) {\n selection.end += backBufferPart.length - backPart.length;\n if (!isEntry && opts.radixPoint !== \"\" && backPart === \"\" && frontPart.charAt(selection.begin + offset - 1) === opts.radixPoint) {\n selection.begin--;\n entries = opts.radixPoint;\n }\n }\n }\n }\n writeBuffer(input, getBuffer(), {\n begin: selection.begin + offset,\n end: selection.end + offset\n });\n if (entries.length > 0) {\n $.each(entries.split(\"\"), function(ndx, entry) {\n var keypress = new $.Event(\"keypress\");\n keypress.which = entry.charCodeAt(0);\n ignorable = false;\n EventHandlers.keypressEvent.call(input, keypress);\n });\n } else {\n if (selection.begin === selection.end - 1) {\n selection.begin = seekPrevious(selection.begin + 1);\n if (selection.begin === selection.end - 1) {\n caret(input, selection.begin);\n } else {\n caret(input, selection.begin, selection.end);\n }\n }\n var keydown = new $.Event(\"keydown\");\n keydown.keyCode = opts.numericInput ? Inputmask.keyCode.BACKSPACE : Inputmask.keyCode.DELETE;\n EventHandlers.keydownEvent.call(input, keydown);\n }\n e.preventDefault();\n }\n }\n },\n beforeInputEvent: function(e) {\n if (e.cancelable) {\n var input = this;\n switch (e.inputType) {\n case \"insertText\":\n $.each(e.data.split(\"\"), function(ndx, entry) {\n var keypress = new $.Event(\"keypress\");\n keypress.which = entry.charCodeAt(0);\n ignorable = false;\n EventHandlers.keypressEvent.call(input, keypress);\n });\n return e.preventDefault();\n\n case \"deleteContentBackward\":\n var keydown = new $.Event(\"keydown\");\n keydown.keyCode = Inputmask.keyCode.BACKSPACE;\n EventHandlers.keydownEvent.call(input, keydown);\n return e.preventDefault();\n\n case \"deleteContentForward\":\n var keydown = new $.Event(\"keydown\");\n keydown.keyCode = Inputmask.keyCode.DELETE;\n EventHandlers.keydownEvent.call(input, keydown);\n return e.preventDefault();\n }\n }\n },\n setValueEvent: function(e) {\n this.inputmask.refreshValue = false;\n var input = this, value = e && e.detail ? e.detail[0] : arguments[1], value = value || input.inputmask._valueGet(true);\n if ($.isFunction(opts.onBeforeMask)) value = opts.onBeforeMask.call(inputmask, value, opts) || value;\n value = value.toString().split(\"\");\n checkVal(input, true, false, value);\n undoValue = getBuffer().join(\"\");\n if ((opts.clearMaskOnLostFocus || opts.clearIncomplete) && input.inputmask._valueGet() === getBufferTemplate().join(\"\")) {\n input.inputmask._valueSet(\"\");\n }\n },\n focusEvent: function(e) {\n var input = this, nptValue = input.inputmask._valueGet();\n if (opts.showMaskOnFocus) {\n if (nptValue !== getBuffer().join(\"\")) {\n writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()));\n } else if (mouseEnter === false) {\n caret(input, seekNext(getLastValidPosition()));\n }\n }\n if (opts.positionCaretOnTab === true && mouseEnter === false) {\n EventHandlers.clickEvent.apply(input, [ e, true ]);\n }\n undoValue = getBuffer().join(\"\");\n },\n mouseleaveEvent: function(e) {\n var input = this;\n mouseEnter = false;\n if (opts.clearMaskOnLostFocus && document.activeElement !== input) {\n HandleNativePlaceholder(input, originalPlaceholder);\n }\n },\n clickEvent: function(e, tabbed) {\n function doRadixFocus(clickPos) {\n if (opts.radixPoint !== \"\") {\n var vps = getMaskSet().validPositions;\n if (vps[clickPos] === undefined || vps[clickPos].input === getPlaceholder(clickPos)) {\n if (clickPos < seekNext(-1)) return true;\n var radixPos = $.inArray(opts.radixPoint, getBuffer());\n if (radixPos !== -1) {\n for (var vp in vps) {\n if (radixPos < vp && vps[vp].input !== getPlaceholder(vp)) {\n return false;\n }\n }\n return true;\n }\n }\n }\n return false;\n }\n var input = this;\n setTimeout(function() {\n if (document.activeElement === input) {\n var selectedCaret = caret(input);\n if (tabbed) {\n if (isRTL) {\n selectedCaret.end = selectedCaret.begin;\n } else {\n selectedCaret.begin = selectedCaret.end;\n }\n }\n if (selectedCaret.begin === selectedCaret.end) {\n switch (opts.positionCaretOnClick) {\n case \"none\":\n break;\n\n case \"select\":\n caret(input, 0, getBuffer().length);\n break;\n\n case \"ignore\":\n caret(input, seekNext(getLastValidPosition()));\n break;\n\n case \"radixFocus\":\n if (doRadixFocus(selectedCaret.begin)) {\n var radixPos = getBuffer().join(\"\").indexOf(opts.radixPoint);\n caret(input, opts.numericInput ? seekNext(radixPos) : radixPos);\n break;\n }\n\n default:\n var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, true), lastPosition = seekNext(lvclickPosition);\n if (clickPosition < lastPosition) {\n caret(input, !isMask(clickPosition, true) && !isMask(clickPosition - 1, true) ? seekNext(clickPosition) : clickPosition);\n } else {\n var lvp = getMaskSet().validPositions[lvclickPosition], tt = getTestTemplate(lastPosition, lvp ? lvp.match.locator : undefined, lvp), placeholder = getPlaceholder(lastPosition, tt.match);\n if (placeholder !== \"\" && getBuffer()[lastPosition] !== placeholder && tt.match.optionalQuantifier !== true && tt.match.newBlockMarker !== true || !isMask(lastPosition, opts.keepStatic) && tt.match.def === placeholder) {\n var newPos = seekNext(lastPosition);\n if (clickPosition >= newPos || clickPosition === lastPosition) {\n lastPosition = newPos;\n }\n }\n caret(input, lastPosition);\n }\n break;\n }\n }\n }\n }, 0);\n },\n cutEvent: function(e) {\n var input = this, $input = $(input), pos = caret(input), ev = e.originalEvent || e;\n var clipboardData = window.clipboardData || ev.clipboardData, clipData = isRTL ? getBuffer().slice(pos.end, pos.begin) : getBuffer().slice(pos.begin, pos.end);\n clipboardData.setData(\"text\", isRTL ? clipData.reverse().join(\"\") : clipData.join(\"\"));\n if (document.execCommand) document.execCommand(\"copy\");\n handleRemove(input, Inputmask.keyCode.DELETE, pos);\n writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join(\"\"));\n },\n blurEvent: function(e) {\n var $input = $(this), input = this;\n if (input.inputmask) {\n HandleNativePlaceholder(input, originalPlaceholder);\n var nptValue = input.inputmask._valueGet(), buffer = getBuffer().slice();\n if (nptValue !== \"\" || colorMask !== undefined) {\n if (opts.clearMaskOnLostFocus) {\n if (getLastValidPosition() === -1 && nptValue === getBufferTemplate().join(\"\")) {\n buffer = [];\n } else {\n clearOptionalTail(buffer);\n }\n }\n if (isComplete(buffer) === false) {\n setTimeout(function() {\n $input.trigger(\"incomplete\");\n }, 0);\n if (opts.clearIncomplete) {\n resetMaskSet();\n if (opts.clearMaskOnLostFocus) {\n buffer = [];\n } else {\n buffer = getBufferTemplate().slice();\n }\n }\n }\n writeBuffer(input, buffer, undefined, e);\n }\n if (undoValue !== getBuffer().join(\"\")) {\n undoValue = buffer.join(\"\");\n $input.trigger(\"change\");\n }\n }\n },\n mouseenterEvent: function(e) {\n var input = this;\n mouseEnter = true;\n if (document.activeElement !== input && opts.showMaskOnHover) {\n HandleNativePlaceholder(input, (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(\"\"));\n }\n },\n submitEvent: function(e) {\n if (undoValue !== getBuffer().join(\"\")) {\n $el.trigger(\"change\");\n }\n if (opts.clearMaskOnLostFocus && getLastValidPosition() === -1 && el.inputmask._valueGet && el.inputmask._valueGet() === getBufferTemplate().join(\"\")) {\n el.inputmask._valueSet(\"\");\n }\n if (opts.clearIncomplete && isComplete(getBuffer()) === false) {\n el.inputmask._valueSet(\"\");\n }\n if (opts.removeMaskOnSubmit) {\n el.inputmask._valueSet(el.inputmask.unmaskedvalue(), true);\n setTimeout(function() {\n writeBuffer(el, getBuffer());\n }, 0);\n }\n },\n resetEvent: function(e) {\n el.inputmask.refreshValue = true;\n setTimeout(function() {\n $el.trigger(\"setvalue\");\n }, 0);\n }\n };\n function checkVal(input, writeOut, strict, nptvl, initiatingEvent) {\n var inputmask = this || input.inputmask, inputValue = nptvl.slice(), charCodes = \"\", initialNdx = -1, result = undefined;\n function isTemplateMatch(ndx, charCodes) {\n var charCodeNdx = getMaskTemplate(true, 0, false).slice(ndx, seekNext(ndx)).join(\"\").replace(/'/g, \"\").indexOf(charCodes);\n return charCodeNdx !== -1 && !isMask(ndx) && (getTest(ndx).match.nativeDef === charCodes.charAt(0) || getTest(ndx).match.fn === null && getTest(ndx).match.nativeDef === \"'\" + charCodes.charAt(0) || getTest(ndx).match.nativeDef === \" \" && (getTest(ndx + 1).match.nativeDef === charCodes.charAt(0) || getTest(ndx + 1).match.fn === null && getTest(ndx + 1).match.nativeDef === \"'\" + charCodes.charAt(0)));\n }\n resetMaskSet();\n if (!strict && opts.autoUnmask !== true) {\n var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(\"\"), matches = inputValue.join(\"\").match(new RegExp(\"^\" + Inputmask.escapeRegex(staticInput), \"g\"));\n if (matches && matches.length > 0) {\n inputValue.splice(0, matches.length * staticInput.length);\n initialNdx = seekNext(initialNdx);\n }\n } else {\n initialNdx = seekNext(initialNdx);\n }\n if (initialNdx === -1) {\n getMaskSet().p = seekNext(initialNdx);\n initialNdx = 0;\n } else getMaskSet().p = initialNdx;\n inputmask.caretPos = {\n begin: initialNdx\n };\n $.each(inputValue, function(ndx, charCode) {\n if (charCode !== undefined) {\n if (getMaskSet().validPositions[ndx] === undefined && inputValue[ndx] === getPlaceholder(ndx) && isMask(ndx, true) && isValid(ndx, inputValue[ndx], true, undefined, undefined, true) === false) {\n getMaskSet().p++;\n } else {\n var keypress = new $.Event(\"_checkval\");\n keypress.which = charCode.charCodeAt(0);\n charCodes += charCode;\n var lvp = getLastValidPosition(undefined, true);\n if (!isTemplateMatch(initialNdx, charCodes)) {\n result = EventHandlers.keypressEvent.call(input, keypress, true, false, strict, inputmask.caretPos.begin);\n if (result) {\n initialNdx = inputmask.caretPos.begin + 1;\n charCodes = \"\";\n }\n } else {\n result = EventHandlers.keypressEvent.call(input, keypress, true, false, strict, lvp + 1);\n }\n if (result) {\n writeBuffer(undefined, getBuffer(), result.forwardPosition, keypress, false);\n inputmask.caretPos = {\n begin: result.forwardPosition,\n end: result.forwardPosition\n };\n }\n }\n }\n });\n if (writeOut) writeBuffer(input, getBuffer(), result ? result.forwardPosition : undefined, initiatingEvent || new $.Event(\"checkval\"), initiatingEvent && initiatingEvent.type === \"input\");\n }\n function unmaskedvalue(input) {\n if (input) {\n if (input.inputmask === undefined) {\n return input.value;\n }\n if (input.inputmask && input.inputmask.refreshValue) {\n EventHandlers.setValueEvent.call(input);\n }\n }\n var umValue = [], vps = getMaskSet().validPositions;\n for (var pndx in vps) {\n if (vps[pndx].match && vps[pndx].match.fn != null) {\n umValue.push(vps[pndx].input);\n }\n }\n var unmaskedValue = umValue.length === 0 ? \"\" : (isRTL ? umValue.reverse() : umValue).join(\"\");\n if ($.isFunction(opts.onUnMask)) {\n var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(\"\");\n unmaskedValue = opts.onUnMask.call(inputmask, bufferValue, unmaskedValue, opts);\n }\n return unmaskedValue;\n }\n function caret(input, begin, end, notranslate) {\n function translatePosition(pos) {\n if (isRTL && typeof pos === \"number\" && (!opts.greedy || opts.placeholder !== \"\") && el) {\n pos = el.inputmask._valueGet().length - pos;\n }\n return pos;\n }\n var range;\n if (begin !== undefined) {\n if ($.isArray(begin)) {\n end = isRTL ? begin[0] : begin[1];\n begin = isRTL ? begin[1] : begin[0];\n }\n if (begin.begin !== undefined) {\n end = isRTL ? begin.begin : begin.end;\n begin = isRTL ? begin.end : begin.begin;\n }\n if (typeof begin === \"number\") {\n begin = notranslate ? begin : translatePosition(begin);\n end = notranslate ? end : translatePosition(end);\n end = typeof end == \"number\" ? end : begin;\n var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end;\n input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0;\n input.inputmask.caretPos = {\n begin: begin,\n end: end\n };\n if (input === document.activeElement) {\n if (\"selectionStart\" in input) {\n input.selectionStart = begin;\n input.selectionEnd = end;\n } else if (window.getSelection) {\n range = document.createRange();\n if (input.firstChild === undefined || input.firstChild === null) {\n var textNode = document.createTextNode(\"\");\n input.appendChild(textNode);\n }\n range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length);\n range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length);\n range.collapse(true);\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (input.createTextRange) {\n range = input.createTextRange();\n range.collapse(true);\n range.moveEnd(\"character\", end);\n range.moveStart(\"character\", begin);\n range.select();\n }\n renderColorMask(input, {\n begin: begin,\n end: end\n });\n }\n }\n } else {\n if (\"selectionStart\" in input) {\n begin = input.selectionStart;\n end = input.selectionEnd;\n } else if (window.getSelection) {\n range = window.getSelection().getRangeAt(0);\n if (range.commonAncestorContainer.parentNode === input || range.commonAncestorContainer === input) {\n begin = range.startOffset;\n end = range.endOffset;\n }\n } else if (document.selection && document.selection.createRange) {\n range = document.selection.createRange();\n begin = 0 - range.duplicate().moveStart(\"character\", -input.inputmask._valueGet().length);\n end = begin + range.text.length;\n }\n return {\n begin: notranslate ? begin : translatePosition(begin),\n end: notranslate ? end : translatePosition(end)\n };\n }\n }\n function determineLastRequiredPosition(returnDefinition) {\n var buffer = getMaskTemplate(true, getLastValidPosition(), true, true), bl = buffer.length, pos, lvp = getLastValidPosition(), positions = {}, lvTest = getMaskSet().validPositions[lvp], ndxIntlzr = lvTest !== undefined ? lvTest.locator.slice() : undefined, testPos;\n for (pos = lvp + 1; pos < buffer.length; pos++) {\n testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);\n ndxIntlzr = testPos.locator.slice();\n positions[pos] = $.extend(true, {}, testPos);\n }\n var lvTestAlt = lvTest && lvTest.alternation !== undefined ? lvTest.locator[lvTest.alternation] : undefined;\n for (pos = bl - 1; pos > lvp; pos--) {\n testPos = positions[pos];\n if ((testPos.match.optionality || testPos.match.optionalQuantifier && testPos.match.newBlockMarker || lvTestAlt && (lvTestAlt !== positions[pos].locator[lvTest.alternation] && testPos.match.fn != null || testPos.match.fn === null && testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(\",\"), lvTestAlt.toString().split(\",\")) && getTests(pos)[0].def !== \"\")) && buffer[pos] === getPlaceholder(pos, testPos.match)) {\n bl--;\n } else break;\n }\n return returnDefinition ? {\n l: bl,\n def: positions[bl] ? positions[bl].match : undefined\n } : bl;\n }\n function clearOptionalTail(buffer) {\n buffer.length = 0;\n var template = getMaskTemplate(true, 0, true, undefined, true), lmnt, validPos;\n while (lmnt = template.shift(), lmnt !== undefined) buffer.push(lmnt);\n return buffer;\n }\n function isComplete(buffer) {\n if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts);\n if (opts.repeat === \"*\") return undefined;\n var complete = false, lrp = determineLastRequiredPosition(true), aml = seekPrevious(lrp.l);\n if (lrp.def === undefined || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) {\n complete = true;\n for (var i = 0; i <= aml; i++) {\n var test = getTestTemplate(i).match;\n if (test.fn !== null && getMaskSet().validPositions[i] === undefined && test.optionality !== true && test.optionalQuantifier !== true || test.fn === null && buffer[i] !== getPlaceholder(i, test)) {\n complete = false;\n break;\n }\n }\n }\n return complete;\n }\n function handleRemove(input, k, pos, strict, fromIsValid) {\n if (opts.numericInput || isRTL) {\n if (k === Inputmask.keyCode.BACKSPACE) {\n k = Inputmask.keyCode.DELETE;\n } else if (k === Inputmask.keyCode.DELETE) {\n k = Inputmask.keyCode.BACKSPACE;\n }\n if (isRTL) {\n var pend = pos.end;\n pos.end = pos.begin;\n pos.begin = pend;\n }\n }\n if (k === Inputmask.keyCode.BACKSPACE && pos.end - pos.begin < 1) {\n pos.begin = seekPrevious(pos.begin);\n if (getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator) {\n pos.begin--;\n }\n } else if (k === Inputmask.keyCode.DELETE && pos.begin === pos.end) {\n pos.end = isMask(pos.end, true) && (getMaskSet().validPositions[pos.end] && getMaskSet().validPositions[pos.end].input !== opts.radixPoint) ? pos.end + 1 : seekNext(pos.end) + 1;\n if (getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator) {\n pos.end++;\n }\n }\n revalidateMask(pos);\n if (strict !== true && opts.keepStatic !== false || opts.regex !== null) {\n var result = alternate(true);\n if (result) {\n var newPos = result.caret !== undefined ? result.caret : result.pos ? seekNext(result.pos.begin ? result.pos.begin : result.pos) : getLastValidPosition(-1, true);\n if (k !== Inputmask.keyCode.DELETE || pos.begin > newPos) {\n pos.begin == newPos;\n }\n }\n }\n var lvp = getLastValidPosition(pos.begin, true);\n if (lvp < pos.begin || pos.begin === -1) {\n getMaskSet().p = seekNext(lvp);\n } else if (strict !== true) {\n getMaskSet().p = pos.begin;\n if (fromIsValid !== true) {\n while (getMaskSet().p < lvp && getMaskSet().validPositions[getMaskSet().p] === undefined) {\n getMaskSet().p++;\n }\n }\n }\n }\n function initializeColorMask(input) {\n var computedStyle = (input.ownerDocument.defaultView || window).getComputedStyle(input, null);\n function findCaretPos(clientx) {\n var e = document.createElement(\"span\"), caretPos;\n for (var style in computedStyle) {\n if (isNaN(style) && style.indexOf(\"font\") !== -1) {\n e.style[style] = computedStyle[style];\n }\n }\n e.style.textTransform = computedStyle.textTransform;\n e.style.letterSpacing = computedStyle.letterSpacing;\n e.style.position = \"absolute\";\n e.style.height = \"auto\";\n e.style.width = \"auto\";\n e.style.visibility = \"hidden\";\n e.style.whiteSpace = \"nowrap\";\n document.body.appendChild(e);\n var inputText = input.inputmask._valueGet(), previousWidth = 0, itl;\n for (caretPos = 0, itl = inputText.length; caretPos <= itl; caretPos++) {\n e.innerHTML += inputText.charAt(caretPos) || \"_\";\n if (e.offsetWidth >= clientx) {\n var offset1 = clientx - previousWidth;\n var offset2 = e.offsetWidth - clientx;\n e.innerHTML = inputText.charAt(caretPos);\n offset1 -= e.offsetWidth / 3;\n caretPos = offset1 < offset2 ? caretPos - 1 : caretPos;\n break;\n }\n previousWidth = e.offsetWidth;\n }\n document.body.removeChild(e);\n return caretPos;\n }\n var template = document.createElement(\"div\");\n template.style.width = computedStyle.width;\n template.style.textAlign = computedStyle.textAlign;\n colorMask = document.createElement(\"div\");\n input.inputmask.colorMask = colorMask;\n colorMask.className = \"im-colormask\";\n input.parentNode.insertBefore(colorMask, input);\n input.parentNode.removeChild(input);\n colorMask.appendChild(input);\n colorMask.appendChild(template);\n input.style.left = template.offsetLeft + \"px\";\n $(colorMask).on(\"mouseleave\", function(e) {\n return EventHandlers.mouseleaveEvent.call(input, [ e ]);\n });\n $(colorMask).on(\"mouseenter\", function(e) {\n return EventHandlers.mouseenterEvent.call(input, [ e ]);\n });\n $(colorMask).on(\"click\", function(e) {\n caret(input, findCaretPos(e.clientX));\n return EventHandlers.clickEvent.call(input, [ e ]);\n });\n }\n function renderColorMask(input, caretPos, clear) {\n var maskTemplate = [], isStatic = false, test, testPos, ndxIntlzr, pos = 0;\n function setEntry(entry) {\n if (entry === undefined) entry = \"\";\n if (!isStatic && (test.fn === null || testPos.input === undefined)) {\n isStatic = true;\n maskTemplate.push(\"\" + entry);\n } else if (isStatic && (test.fn !== null && testPos.input !== undefined || test.def === \"\")) {\n isStatic = false;\n var mtl = maskTemplate.length;\n maskTemplate[mtl - 1] = maskTemplate[mtl - 1] + \"\";\n maskTemplate.push(entry);\n } else maskTemplate.push(entry);\n }\n function setCaret() {\n if (document.activeElement === input) {\n maskTemplate.splice(caretPos.begin, 0, caretPos.begin === caretPos.end || caretPos.end > getMaskSet().maskLength ? '' : '');\n maskTemplate.splice(caretPos.end + 1, 0, \"\");\n }\n }\n if (colorMask !== undefined) {\n var buffer = getBuffer();\n if (caretPos === undefined) {\n caretPos = caret(input);\n } else if (caretPos.begin === undefined) {\n caretPos = {\n begin: caretPos,\n end: caretPos\n };\n }\n if (clear !== true) {\n var lvp = getLastValidPosition();\n do {\n if (getMaskSet().validPositions[pos]) {\n testPos = getMaskSet().validPositions[pos];\n test = testPos.match;\n ndxIntlzr = testPos.locator.slice();\n setEntry(buffer[pos]);\n } else {\n testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);\n test = testPos.match;\n ndxIntlzr = testPos.locator.slice();\n if (opts.jitMasking === false || pos < lvp || typeof opts.jitMasking === \"number\" && isFinite(opts.jitMasking) && opts.jitMasking > pos) {\n setEntry(getPlaceholder(pos, test));\n } else isStatic = false;\n }\n pos++;\n } while ((maxLength === undefined || pos < maxLength) && (test.fn !== null || test.def !== \"\") || lvp > pos || isStatic);\n if (isStatic) setEntry();\n setCaret();\n }\n var template = colorMask.getElementsByTagName(\"div\")[0];\n template.innerHTML = maskTemplate.join(\"\");\n input.inputmask.positionColorMask(input, template);\n }\n }\n function mask(elem) {\n function isElementTypeSupported(input, opts) {\n function patchValueProperty(npt) {\n var valueGet;\n var valueSet;\n function patchValhook(type) {\n if ($.valHooks && ($.valHooks[type] === undefined || $.valHooks[type].inputmaskpatch !== true)) {\n var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function(elem) {\n return elem.value;\n };\n var valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function(elem, value) {\n elem.value = value;\n return elem;\n };\n $.valHooks[type] = {\n get: function(elem) {\n if (elem.inputmask) {\n if (elem.inputmask.opts.autoUnmask) {\n return elem.inputmask.unmaskedvalue();\n } else {\n var result = valhookGet(elem);\n return getLastValidPosition(undefined, undefined, elem.inputmask.maskset.validPositions) !== -1 || opts.nullable !== true ? result : \"\";\n }\n } else return valhookGet(elem);\n },\n set: function(elem, value) {\n var $elem = $(elem), result;\n result = valhookSet(elem, value);\n if (elem.inputmask) {\n $elem.trigger(\"setvalue\", [ value ]);\n }\n return result;\n },\n inputmaskpatch: true\n };\n }\n }\n function getter() {\n if (this.inputmask) {\n return this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : getLastValidPosition() !== -1 || opts.nullable !== true ? document.activeElement === this && opts.clearMaskOnLostFocus ? (isRTL ? clearOptionalTail(getBuffer().slice()).reverse() : clearOptionalTail(getBuffer().slice())).join(\"\") : valueGet.call(this) : \"\";\n } else return valueGet.call(this);\n }\n function setter(value) {\n valueSet.call(this, value);\n if (this.inputmask) {\n $(this).trigger(\"setvalue\", [ value ]);\n }\n }\n function installNativeValueSetFallback(npt) {\n EventRuler.on(npt, \"mouseenter\", function(event) {\n var $input = $(this), input = this, value = input.inputmask._valueGet();\n if (value !== getBuffer().join(\"\")) {\n $input.trigger(\"setvalue\");\n }\n });\n }\n if (!npt.inputmask.__valueGet) {\n if (opts.noValuePatching !== true) {\n if (Object.getOwnPropertyDescriptor) {\n if (typeof Object.getPrototypeOf !== \"function\") {\n Object.getPrototypeOf = typeof \"test\".__proto__ === \"object\" ? function(object) {\n return object.__proto__;\n } : function(object) {\n return object.constructor.prototype;\n };\n }\n var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), \"value\") : undefined;\n if (valueProperty && valueProperty.get && valueProperty.set) {\n valueGet = valueProperty.get;\n valueSet = valueProperty.set;\n Object.defineProperty(npt, \"value\", {\n get: getter,\n set: setter,\n configurable: true\n });\n } else if (npt.tagName !== \"INPUT\") {\n valueGet = function() {\n return this.textContent;\n };\n valueSet = function(value) {\n this.textContent = value;\n };\n Object.defineProperty(npt, \"value\", {\n get: getter,\n set: setter,\n configurable: true\n });\n }\n } else if (document.__lookupGetter__ && npt.__lookupGetter__(\"value\")) {\n valueGet = npt.__lookupGetter__(\"value\");\n valueSet = npt.__lookupSetter__(\"value\");\n npt.__defineGetter__(\"value\", getter);\n npt.__defineSetter__(\"value\", setter);\n }\n npt.inputmask.__valueGet = valueGet;\n npt.inputmask.__valueSet = valueSet;\n }\n npt.inputmask._valueGet = function(overruleRTL) {\n return isRTL && overruleRTL !== true ? valueGet.call(this.el).split(\"\").reverse().join(\"\") : valueGet.call(this.el);\n };\n npt.inputmask._valueSet = function(value, overruleRTL) {\n valueSet.call(this.el, value === null || value === undefined ? \"\" : overruleRTL !== true && isRTL ? value.split(\"\").reverse().join(\"\") : value);\n };\n if (valueGet === undefined) {\n valueGet = function() {\n return this.value;\n };\n valueSet = function(value) {\n this.value = value;\n };\n patchValhook(npt.type);\n installNativeValueSetFallback(npt);\n }\n }\n }\n var elementType = input.getAttribute(\"type\");\n var isSupported = input.tagName === \"INPUT\" && $.inArray(elementType, opts.supportsInputType) !== -1 || input.isContentEditable || input.tagName === \"TEXTAREA\";\n if (!isSupported) {\n if (input.tagName === \"INPUT\") {\n var el = document.createElement(\"input\");\n el.setAttribute(\"type\", elementType);\n isSupported = el.type === \"text\";\n el = null;\n } else isSupported = \"partial\";\n }\n if (isSupported !== false) {\n patchValueProperty(input);\n } else input.inputmask = undefined;\n return isSupported;\n }\n EventRuler.off(elem);\n var isSupported = isElementTypeSupported(elem, opts);\n if (isSupported !== false) {\n el = elem;\n $el = $(el);\n originalPlaceholder = el.placeholder;\n maxLength = el !== undefined ? el.maxLength : undefined;\n if (maxLength === -1) maxLength = undefined;\n if (opts.colorMask === true) {\n initializeColorMask(el);\n }\n if (mobile) {\n if (\"inputmode\" in el) {\n el.inputmode = opts.inputmode;\n el.setAttribute(\"inputmode\", opts.inputmode);\n }\n if (opts.disablePredictiveText === true) {\n if (\"autocorrect\" in el) {\n el.autocorrect = false;\n } else {\n if (opts.colorMask !== true) {\n initializeColorMask(el);\n }\n el.type = \"password\";\n }\n }\n }\n if (isSupported === true) {\n el.setAttribute(\"im-insert\", opts.insertMode);\n EventRuler.on(el, \"submit\", EventHandlers.submitEvent);\n EventRuler.on(el, \"reset\", EventHandlers.resetEvent);\n EventRuler.on(el, \"blur\", EventHandlers.blurEvent);\n EventRuler.on(el, \"focus\", EventHandlers.focusEvent);\n if (opts.colorMask !== true) {\n EventRuler.on(el, \"click\", EventHandlers.clickEvent);\n EventRuler.on(el, \"mouseleave\", EventHandlers.mouseleaveEvent);\n EventRuler.on(el, \"mouseenter\", EventHandlers.mouseenterEvent);\n }\n EventRuler.on(el, \"paste\", EventHandlers.pasteEvent);\n EventRuler.on(el, \"cut\", EventHandlers.cutEvent);\n EventRuler.on(el, \"complete\", opts.oncomplete);\n EventRuler.on(el, \"incomplete\", opts.onincomplete);\n EventRuler.on(el, \"cleared\", opts.oncleared);\n if (!mobile && opts.inputEventOnly !== true) {\n EventRuler.on(el, \"keydown\", EventHandlers.keydownEvent);\n EventRuler.on(el, \"keypress\", EventHandlers.keypressEvent);\n } else {\n el.removeAttribute(\"maxLength\");\n }\n EventRuler.on(el, \"input\", EventHandlers.inputFallBackEvent);\n EventRuler.on(el, \"beforeinput\", EventHandlers.beforeInputEvent);\n }\n EventRuler.on(el, \"setvalue\", EventHandlers.setValueEvent);\n undoValue = getBufferTemplate().join(\"\");\n if (el.inputmask._valueGet(true) !== \"\" || opts.clearMaskOnLostFocus === false || document.activeElement === el) {\n var initialValue = $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, el.inputmask._valueGet(true), opts) || el.inputmask._valueGet(true) : el.inputmask._valueGet(true);\n if (initialValue !== \"\") checkVal(el, true, false, initialValue.split(\"\"));\n var buffer = getBuffer().slice();\n undoValue = buffer.join(\"\");\n if (isComplete(buffer) === false) {\n if (opts.clearIncomplete) {\n resetMaskSet();\n }\n }\n if (opts.clearMaskOnLostFocus && document.activeElement !== el) {\n if (getLastValidPosition() === -1) {\n buffer = [];\n } else {\n clearOptionalTail(buffer);\n }\n }\n if (opts.clearMaskOnLostFocus === false || opts.showMaskOnFocus && document.activeElement === el || el.inputmask._valueGet(true) !== \"\") writeBuffer(el, buffer);\n if (document.activeElement === el) {\n caret(el, seekNext(getLastValidPosition()));\n }\n }\n }\n }\n var valueBuffer;\n if (actionObj !== undefined) {\n switch (actionObj.action) {\n case \"isComplete\":\n el = actionObj.el;\n return isComplete(getBuffer());\n\n case \"unmaskedvalue\":\n if (el === undefined || actionObj.value !== undefined) {\n valueBuffer = actionObj.value;\n valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, valueBuffer, opts) || valueBuffer : valueBuffer).split(\"\");\n checkVal.call(this, undefined, false, false, valueBuffer);\n if ($.isFunction(opts.onBeforeWrite)) opts.onBeforeWrite.call(inputmask, undefined, getBuffer(), 0, opts);\n }\n return unmaskedvalue(el);\n\n case \"mask\":\n mask(el);\n break;\n\n case \"format\":\n valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, actionObj.value, opts) || actionObj.value : actionObj.value).split(\"\");\n checkVal.call(this, undefined, true, false, valueBuffer);\n if (actionObj.metadata) {\n return {\n value: isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\"),\n metadata: maskScope.call(this, {\n action: \"getmetadata\"\n }, maskset, opts)\n };\n }\n return isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\");\n\n case \"isValid\":\n if (actionObj.value) {\n valueBuffer = actionObj.value.split(\"\");\n checkVal.call(this, undefined, true, true, valueBuffer);\n } else {\n actionObj.value = getBuffer().join(\"\");\n }\n var buffer = getBuffer();\n var rl = determineLastRequiredPosition(), lmib = buffer.length - 1;\n for (;lmib > rl; lmib--) {\n if (isMask(lmib)) break;\n }\n buffer.splice(rl, lmib + 1 - rl);\n return isComplete(buffer) && actionObj.value === getBuffer().join(\"\");\n\n case \"getemptymask\":\n return getBufferTemplate().join(\"\");\n\n case \"remove\":\n if (el && el.inputmask) {\n $.data(el, \"_inputmask_opts\", null);\n $el = $(el);\n el.inputmask._valueSet(opts.autoUnmask ? unmaskedvalue(el) : el.inputmask._valueGet(true));\n EventRuler.off(el);\n if (el.inputmask.colorMask) {\n colorMask = el.inputmask.colorMask;\n colorMask.removeChild(el);\n colorMask.parentNode.insertBefore(el, colorMask);\n colorMask.parentNode.removeChild(colorMask);\n }\n var valueProperty;\n if (Object.getOwnPropertyDescriptor && Object.getPrototypeOf) {\n valueProperty = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), \"value\");\n if (valueProperty) {\n if (el.inputmask.__valueGet) {\n Object.defineProperty(el, \"value\", {\n get: el.inputmask.__valueGet,\n set: el.inputmask.__valueSet,\n configurable: true\n });\n }\n }\n } else if (document.__lookupGetter__ && el.__lookupGetter__(\"value\")) {\n if (el.inputmask.__valueGet) {\n el.__defineGetter__(\"value\", el.inputmask.__valueGet);\n el.__defineSetter__(\"value\", el.inputmask.__valueSet);\n }\n }\n el.inputmask = undefined;\n }\n return el;\n break;\n\n case \"getmetadata\":\n if ($.isArray(maskset.metadata)) {\n var maskTarget = getMaskTemplate(true, 0, false).join(\"\");\n $.each(maskset.metadata, function(ndx, mtdt) {\n if (mtdt.mask === maskTarget) {\n maskTarget = mtdt;\n return false;\n }\n });\n return maskTarget;\n }\n return maskset.metadata;\n }\n }\n }\n return Inputmask;\n});","/*!\n* global/window.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.8\n*/\n\nif (typeof define === \"function\" && define.amd) define(function() {\n return typeof window !== \"undefined\" ? window : new (eval(\"require('jsdom').JSDOM\"))(\"\").window;\n}); else if (typeof exports === \"object\") module.exports = typeof window !== \"undefined\" ? window : new (eval(\"require('jsdom').JSDOM\"))(\"\").window;","require(\"./dist/inputmask/inputmask.extensions\");\r\nrequire(\"./dist/inputmask/inputmask.date.extensions\");\r\nrequire(\"./dist/inputmask/inputmask.numeric.extensions\");\r\n\r\nmodule.exports = require(\"./dist/inputmask/inputmask.js\");\r\n"],"sourceRoot":""}