{"version":3,"file":"vendor-node_modules_jquery-validation-unobtrusive_dist_jquery_validate_unobtrusive_js.min.js?v=e8b6e19007d558dde2b1","mappings":"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","sources":["webpack://ui-toolkit/./node_modules/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.js","webpack://ui-toolkit/./node_modules/jquery-validation/dist/jquery.validate.js"],"sourcesContent":["// Unobtrusive validation support library for jQuery and jQuery Validate\n// Copyright (c) .NET Foundation. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\n// @version v3.2.11\n\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\n/*global document: false, jQuery: false */\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(\"jquery.validate.unobtrusive\", ['jquery-validation'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // CommonJS-like environments that support module.exports \n module.exports = factory(require('jquery-validation'));\n } else {\n // Browser global\n jQuery.validator.unobtrusive = factory(jQuery);\n }\n}(function ($) {\n var $jQval = $.validator,\n adapters,\n data_validation = \"unobtrusiveValidation\";\n\n function setValidationValues(options, ruleName, value) {\n options.rules[ruleName] = value;\n if (options.message) {\n options.messages[ruleName] = options.message;\n }\n }\n\n function splitAndTrim(value) {\n return value.replace(/^\\s+|\\s+$/g, \"\").split(/\\s*,\\s*/g);\n }\n\n function escapeAttributeValue(value) {\n // As mentioned on http://api.jquery.com/category/selectors/\n return value.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n }\n\n function getModelPrefix(fieldName) {\n return fieldName.substr(0, fieldName.lastIndexOf(\".\") + 1);\n }\n\n function appendModelPrefix(value, prefix) {\n if (value.indexOf(\"*.\") === 0) {\n value = value.replace(\"*.\", prefix);\n }\n return value;\n }\n\n function onError(error, inputElement) { // 'this' is the form element\n var container = $(this).find(\"[data-valmsg-for='\" + escapeAttributeValue(inputElement[0].name) + \"']\"),\n replaceAttrValue = container.attr(\"data-valmsg-replace\"),\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;\n\n container.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");\n error.data(\"unobtrusiveContainer\", container);\n\n if (replace) {\n container.empty();\n error.removeClass(\"input-validation-error\").appendTo(container);\n }\n else {\n error.hide();\n }\n }\n\n function onErrors(event, validator) { // 'this' is the form element\n var container = $(this).find(\"[data-valmsg-summary=true]\"),\n list = container.find(\"ul\");\n\n if (list && list.length && validator.errorList.length) {\n list.empty();\n container.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\n\n $.each(validator.errorList, function () {\n $(\"
  • \").html(this.message).appendTo(list);\n });\n }\n }\n\n function onSuccess(error) { // 'this' is the form element\n var container = error.data(\"unobtrusiveContainer\");\n\n if (container) {\n var replaceAttrValue = container.attr(\"data-valmsg-replace\"),\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;\n\n container.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");\n error.removeData(\"unobtrusiveContainer\");\n\n if (replace) {\n container.empty();\n }\n }\n }\n\n function onReset(event) { // 'this' is the form element\n var $form = $(this),\n key = '__jquery_unobtrusive_validation_form_reset';\n if ($form.data(key)) {\n return;\n }\n // Set a flag that indicates we're currently resetting the form.\n $form.data(key, true);\n try {\n $form.data(\"validator\").resetForm();\n } finally {\n $form.removeData(key);\n }\n\n $form.find(\".validation-summary-errors\")\n .addClass(\"validation-summary-valid\")\n .removeClass(\"validation-summary-errors\");\n $form.find(\".field-validation-error\")\n .addClass(\"field-validation-valid\")\n .removeClass(\"field-validation-error\")\n .removeData(\"unobtrusiveContainer\")\n .find(\">*\") // If we were using valmsg-replace, get the underlying error\n .removeData(\"unobtrusiveContainer\");\n }\n\n function validationInfo(form) {\n var $form = $(form),\n result = $form.data(data_validation),\n onResetProxy = $.proxy(onReset, form),\n defaultOptions = $jQval.unobtrusive.options || {},\n execInContext = function (name, args) {\n var func = defaultOptions[name];\n func && $.isFunction(func) && func.apply(form, args);\n };\n\n if (!result) {\n result = {\n options: { // options structure passed to jQuery Validate's validate() method\n errorClass: defaultOptions.errorClass || \"input-validation-error\",\n errorElement: defaultOptions.errorElement || \"span\",\n errorPlacement: function () {\n onError.apply(form, arguments);\n execInContext(\"errorPlacement\", arguments);\n },\n invalidHandler: function () {\n onErrors.apply(form, arguments);\n execInContext(\"invalidHandler\", arguments);\n },\n messages: {},\n rules: {},\n success: function () {\n onSuccess.apply(form, arguments);\n execInContext(\"success\", arguments);\n }\n },\n attachValidation: function () {\n $form\n .off(\"reset.\" + data_validation, onResetProxy)\n .on(\"reset.\" + data_validation, onResetProxy)\n .validate(this.options);\n },\n validate: function () { // a validation function that is called by unobtrusive Ajax\n $form.validate();\n return $form.valid();\n }\n };\n $form.data(data_validation, result);\n }\n\n return result;\n }\n\n $jQval.unobtrusive = {\n adapters: [],\n\n parseElement: function (element, skipAttach) {\n /// \n /// Parses a single HTML element for unobtrusive validation attributes.\n /// \n /// The HTML element to be parsed.\n /// [Optional] true to skip attaching the\n /// validation to the form. If parsing just this single element, you should specify true.\n /// If parsing several elements, you should specify false, and manually attach the validation\n /// to the form when you are finished. The default is false.\n var $element = $(element),\n form = $element.parents(\"form\")[0],\n valInfo, rules, messages;\n\n if (!form) { // Cannot do client-side validation without a form\n return;\n }\n\n valInfo = validationInfo(form);\n valInfo.options.rules[element.name] = rules = {};\n valInfo.options.messages[element.name] = messages = {};\n\n $.each(this.adapters, function () {\n var prefix = \"data-val-\" + this.name,\n message = $element.attr(prefix),\n paramValues = {};\n\n if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)\n prefix += \"-\";\n\n $.each(this.params, function () {\n paramValues[this] = $element.attr(prefix + this);\n });\n\n this.adapt({\n element: element,\n form: form,\n message: message,\n params: paramValues,\n rules: rules,\n messages: messages\n });\n }\n });\n\n $.extend(rules, { \"__dummy__\": true });\n\n if (!skipAttach) {\n valInfo.attachValidation();\n }\n },\n\n parse: function (selector) {\n /// \n /// Parses all the HTML elements in the specified selector. It looks for input elements decorated\n /// with the [data-val=true] attribute value and enables validation according to the data-val-*\n /// attribute values.\n /// \n /// Any valid jQuery selector.\n\n // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one\n // element with data-val=true\n var $selector = $(selector),\n $forms = $selector.parents()\n .addBack()\n .filter(\"form\")\n .add($selector.find(\"form\"))\n .has(\"[data-val=true]\");\n\n $selector.find(\"[data-val=true]\").each(function () {\n $jQval.unobtrusive.parseElement(this, true);\n });\n\n $forms.each(function () {\n var info = validationInfo(this);\n if (info) {\n info.attachValidation();\n }\n });\n }\n };\n\n adapters = $jQval.unobtrusive.adapters;\n\n adapters.add = function (adapterName, params, fn) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\n /// [Optional] An array of parameter names (strings) that will\n /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and\n /// mmmm is the parameter name).\n /// The function to call, which adapts the values from the HTML\n /// attributes into jQuery Validate rules and/or messages.\n /// \n if (!fn) { // Called with no params, just a function\n fn = params;\n params = [];\n }\n this.push({ name: adapterName, params: params, adapt: fn });\n return this;\n };\n\n adapters.addBool = function (adapterName, ruleName) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n /// the jQuery Validate validation rule has no parameter values.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\n /// of adapterName will be used instead.\n /// \n return this.add(adapterName, function (options) {\n setValidationValues(options, ruleName || adapterName, true);\n });\n };\n\n adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and\n /// one for min-and-max). The HTML parameters are expected to be named -min and -max.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\n /// The name of the jQuery Validate rule to be used when you only\n /// have a minimum value.\n /// The name of the jQuery Validate rule to be used when you only\n /// have a maximum value.\n /// The name of the jQuery Validate rule to be used when you\n /// have both a minimum and maximum value.\n /// [Optional] The name of the HTML attribute that\n /// contains the minimum value. The default is \"min\".\n /// [Optional] The name of the HTML attribute that\n /// contains the maximum value. The default is \"max\".\n /// \n return this.add(adapterName, [minAttribute || \"min\", maxAttribute || \"max\"], function (options) {\n var min = options.params.min,\n max = options.params.max;\n\n if (min && max) {\n setValidationValues(options, minMaxRuleName, [min, max]);\n }\n else if (min) {\n setValidationValues(options, minRuleName, min);\n }\n else if (max) {\n setValidationValues(options, maxRuleName, max);\n }\n });\n };\n\n adapters.addSingleVal = function (adapterName, attribute, ruleName) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n /// the jQuery Validate validation rule has a single value.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).\n /// [Optional] The name of the HTML attribute that contains the value.\n /// The default is \"val\".\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\n /// of adapterName will be used instead.\n /// \n return this.add(adapterName, [attribute || \"val\"], function (options) {\n setValidationValues(options, ruleName || adapterName, options.params[attribute]);\n });\n };\n\n $jQval.addMethod(\"__dummy__\", function (value, element, params) {\n return true;\n });\n\n $jQval.addMethod(\"regex\", function (value, element, params) {\n var match;\n if (this.optional(element)) {\n return true;\n }\n\n match = new RegExp(params).exec(value);\n return (match && (match.index === 0) && (match[0].length === value.length));\n });\n\n $jQval.addMethod(\"nonalphamin\", function (value, element, nonalphamin) {\n var match;\n if (nonalphamin) {\n match = value.match(/\\W/g);\n match = match && match.length >= nonalphamin;\n }\n return match;\n });\n\n if ($jQval.methods.extension) {\n adapters.addSingleVal(\"accept\", \"mimtype\");\n adapters.addSingleVal(\"extension\", \"extension\");\n } else {\n // for backward compatibility, when the 'extension' validation method does not exist, such as with versions\n // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for\n // validating the extension, and ignore mime-type validations as they are not supported.\n adapters.addSingleVal(\"extension\", \"extension\", \"accept\");\n }\n\n adapters.addSingleVal(\"regex\", \"pattern\");\n adapters.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");\n adapters.addMinMax(\"length\", \"minlength\", \"maxlength\", \"rangelength\").addMinMax(\"range\", \"min\", \"max\", \"range\");\n adapters.addMinMax(\"minlength\", \"minlength\").addMinMax(\"maxlength\", \"minlength\", \"maxlength\");\n adapters.add(\"equalto\", [\"other\"], function (options) {\n var prefix = getModelPrefix(options.element.name),\n other = options.params.other,\n fullOtherName = appendModelPrefix(other, prefix),\n element = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(fullOtherName) + \"']\")[0];\n\n setValidationValues(options, \"equalTo\", element);\n });\n adapters.add(\"required\", function (options) {\n // jQuery Validate equates \"required\" with \"mandatory\" for checkbox elements\n if (options.element.tagName.toUpperCase() !== \"INPUT\" || options.element.type.toUpperCase() !== \"CHECKBOX\") {\n setValidationValues(options, \"required\", true);\n }\n });\n adapters.add(\"remote\", [\"url\", \"type\", \"additionalfields\"], function (options) {\n var value = {\n url: options.params.url,\n type: options.params.type || \"GET\",\n data: {}\n },\n prefix = getModelPrefix(options.element.name);\n\n $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {\n var paramName = appendModelPrefix(fieldName, prefix);\n value.data[paramName] = function () {\n var field = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(paramName) + \"']\");\n // For checkboxes and radio buttons, only pick up values from checked fields.\n if (field.is(\":checkbox\")) {\n return field.filter(\":checked\").val() || field.filter(\":hidden\").val() || '';\n }\n else if (field.is(\":radio\")) {\n return field.filter(\":checked\").val() || '';\n }\n return field.val();\n };\n });\n\n setValidationValues(options, \"remote\", value);\n });\n adapters.add(\"password\", [\"min\", \"nonalphamin\", \"regex\"], function (options) {\n if (options.params.min) {\n setValidationValues(options, \"minlength\", options.params.min);\n }\n if (options.params.nonalphamin) {\n setValidationValues(options, \"nonalphamin\", options.params.nonalphamin);\n }\n if (options.params.regex) {\n setValidationValues(options, \"regex\", options.params.regex);\n }\n });\n adapters.add(\"fileextensions\", [\"extensions\"], function (options) {\n setValidationValues(options, \"extension\", options.params.extensions);\n });\n\n $(function () {\n $jQval.unobtrusive.parse(document);\n });\n\n return $jQval.unobtrusive;\n}));\n","/*!\r\n * jQuery Validation Plugin v1.19.1\r\n *\r\n * https://jqueryvalidation.org/\r\n *\r\n * Copyright (c) 2019 Jörn Zaefferer\r\n * Released under the MIT license\r\n */\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\t\tdefine( [\"jquery\"], factory );\r\n\t} else if (typeof module === \"object\" && module.exports) {\r\n\t\tmodule.exports = factory( require( \"jquery\" ) );\r\n\t} else {\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n\r\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !$.trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!$.trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$( this.currentForm ).submit();\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = $.isFunction( parameter ) && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( $.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})).?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.resetInternals();\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\r\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\nreturn $;\r\n}));"],"names":["define","$","adapters","$jQval","validator","data_validation","setValidationValues","options","ruleName","value","rules","message","messages","escapeAttributeValue","replace","getModelPrefix","fieldName","substr","lastIndexOf","appendModelPrefix","prefix","indexOf","onError","error","inputElement","container","this","find","name","replaceAttrValue","attr","parseJSON","removeClass","addClass","data","empty","appendTo","hide","onErrors","event","list","length","errorList","each","html","onSuccess","removeData","onReset","$form","key","resetForm","validationInfo","form","result","onResetProxy","proxy","defaultOptions","unobtrusive","execInContext","args","func","isFunction","apply","errorClass","errorElement","errorPlacement","arguments","invalidHandler","success","attachValidation","off","on","validate","valid","parseElement","element","skipAttach","valInfo","$element","parents","paramValues","undefined","params","adapt","extend","parse","selector","$selector","$forms","addBack","filter","add","has","info","adapterName","fn","push","addBool","addMinMax","minRuleName","maxRuleName","minMaxRuleName","minAttribute","maxAttribute","min","max","addSingleVal","attribute","addMethod","match","optional","RegExp","exec","index","nonalphamin","methods","extension","fullOtherName","other","tagName","toUpperCase","type","url","split","splitAndTrim","additionalfields","i","paramName","field","is","val","regex","extensions","document","called","settings","onsubmit","submitButton","currentTarget","hasClass","cancelSubmit","handle","hidden","submitHandler","formSubmitted","currentForm","debug","call","remove","preventDefault","pendingRequest","focusInvalid","window","console","warn","concat","command","argument","staticRules","existingRules","param","filtered","isContentEditable","closest","normalizeRule","method","normalizeRules","classRules","attributeRules","dataRules","required","remote","expr","pseudos","blank","a","trim","filled","unchecked","prop","defaults","init","format","source","makeArray","unshift","constructor","Array","slice","n","groups","pendingClass","validClass","focusCleanup","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","onkeyup","which","elementValue","inArray","keyCode","invalid","onclick","parentNode","highlight","findByName","setDefaults","email","date","dateISO","number","digits","equalTo","maxlength","minlength","rangelength","range","step","autoCreateRanges","prototype","labelContainer","errorContext","containers","valueCache","pending","reset","delegate","eventType","checkForm","errorMap","triggerHandler","showErrors","prepareForm","elements","currentElements","check","rs","group","cleanElement","clean","checkElement","validationTargetFor","v","prepareElement","testgroup","numberOfInvalids","toHide","errors","map","successList","grep","defaultShowErrors","hideErrors","removeAttr","resetElements","objectLength","obj","count","not","text","addWrapper","size","findLastActive","trigger","e","rulesCache","join","resetInternals","toShow","idx","validity","badInput","rule","normalizer","rulesCount","dependencyMismatch","parameters","formatAndAdd","log","id","TypeError","customDataMessage","charAt","substring","toLowerCase","customMessage","m","String","findDefined","defaultMessage","title","theregex","test","toToggle","wrapper","parent","showLabel","validElements","show","invalidElements","place","errorID","elementID","idOrName","describedBy","wrap","append","insertAfter","escapeCssMeta","describer","string","getLength","nodeName","depend","dependTypes","_typeof","startRequest","stopRequest","submit","previousValue","old","destroy","classRuleSettings","creditcard","addClassRules","className","classes","normalizeAttributeRule","Number","isNaN","getAttribute","depends","keepRule","parameter","parts","isArray","transformed","Date","toString","decimals","errorMessage","re","decimalPlaces","num","toInt","Math","round","pow","Error","target","optionDataString","previous","originalMessage","ajax","mode","port","dataType","context","response","pendingRequests","ajaxPrefilter","_","xhr","abort","ajaxSettings"],"sourceRoot":""}