{"version":3,"file":"scripts/common.min.js","mappings":"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EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,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","sources":["webpack:///../node_modules/jquery-match-height/dist/jquery.matchHeight.js","webpack:///../node_modules/jquery-validation/dist/jquery.validate.js","webpack:///./custom/paginator3001/paginator3000.js","webpack:///../node_modules/script-loader/addScript.js","webpack:///./custom/paginator3001/paginator3000.js?d7bf","webpack:///../node_modules/select2/dist/js/select2.js","webpack:///external var \"jQuery\"","webpack:///webpack/bootstrap","webpack:///../node_modules/autosize/dist/autosize.esm.js"],"sourcesContent":["/**\n* jquery-match-height 0.7.2 by @liabru\n* http://brm.io/jquery-match-height/\n* License: MIT\n*/\n\n;(function(factory) { // eslint-disable-line no-extra-semi\n 'use strict';\n if (typeof define === 'function' && define.amd) {\n // AMD\n define(['jquery'], factory);\n } else if (typeof module !== 'undefined' && module.exports) {\n // CommonJS\n module.exports = factory(require('jquery'));\n } else {\n // Global\n factory(jQuery);\n }\n})(function($) {\n /*\n * internal\n */\n\n var _previousResizeWidth = -1,\n _updateTimeout = -1;\n\n /*\n * _parse\n * value parse utility function\n */\n\n var _parse = function(value) {\n // parse value and convert NaN to 0\n return parseFloat(value) || 0;\n };\n\n /*\n * _rows\n * utility function returns array of jQuery selections representing each row\n * (as displayed after float wrapping applied by browser)\n */\n\n var _rows = function(elements) {\n var tolerance = 1,\n $elements = $(elements),\n lastTop = null,\n rows = [];\n\n // group elements by their top position\n $elements.each(function(){\n var $that = $(this),\n top = $that.offset().top - _parse($that.css('margin-top')),\n lastRow = rows.length > 0 ? rows[rows.length - 1] : null;\n\n if (lastRow === null) {\n // first item on the row, so just push it\n rows.push($that);\n } else {\n // if the row top is the same, add to the row group\n if (Math.floor(Math.abs(lastTop - top)) <= tolerance) {\n rows[rows.length - 1] = lastRow.add($that);\n } else {\n // otherwise start a new row group\n rows.push($that);\n }\n }\n\n // keep track of the last row top\n lastTop = top;\n });\n\n return rows;\n };\n\n /*\n * _parseOptions\n * handle plugin options\n */\n\n var _parseOptions = function(options) {\n var opts = {\n byRow: true,\n property: 'height',\n target: null,\n remove: false\n };\n\n if (typeof options === 'object') {\n return $.extend(opts, options);\n }\n\n if (typeof options === 'boolean') {\n opts.byRow = options;\n } else if (options === 'remove') {\n opts.remove = true;\n }\n\n return opts;\n };\n\n /*\n * matchHeight\n * plugin definition\n */\n\n var matchHeight = $.fn.matchHeight = function(options) {\n var opts = _parseOptions(options);\n\n // handle remove\n if (opts.remove) {\n var that = this;\n\n // remove fixed height from all selected elements\n this.css(opts.property, '');\n\n // remove selected elements from all groups\n $.each(matchHeight._groups, function(key, group) {\n group.elements = group.elements.not(that);\n });\n\n // TODO: cleanup empty groups\n\n return this;\n }\n\n if (this.length <= 1 && !opts.target) {\n return this;\n }\n\n // keep track of this group so we can re-apply later on load and resize events\n matchHeight._groups.push({\n elements: this,\n options: opts\n });\n\n // match each element's height to the tallest element in the selection\n matchHeight._apply(this, opts);\n\n return this;\n };\n\n /*\n * plugin global options\n */\n\n matchHeight.version = '0.7.2';\n matchHeight._groups = [];\n matchHeight._throttle = 80;\n matchHeight._maintainScroll = false;\n matchHeight._beforeUpdate = null;\n matchHeight._afterUpdate = null;\n matchHeight._rows = _rows;\n matchHeight._parse = _parse;\n matchHeight._parseOptions = _parseOptions;\n\n /*\n * matchHeight._apply\n * apply matchHeight to given elements\n */\n\n matchHeight._apply = function(elements, options) {\n var opts = _parseOptions(options),\n $elements = $(elements),\n rows = [$elements];\n\n // take note of scroll position\n var scrollTop = $(window).scrollTop(),\n htmlHeight = $('html').outerHeight(true);\n\n // get hidden parents\n var $hiddenParents = $elements.parents().filter(':hidden');\n\n // cache the original inline style\n $hiddenParents.each(function() {\n var $that = $(this);\n $that.data('style-cache', $that.attr('style'));\n });\n\n // temporarily must force hidden parents visible\n $hiddenParents.css('display', 'block');\n\n // get rows if using byRow, otherwise assume one row\n if (opts.byRow && !opts.target) {\n\n // must first force an arbitrary equal height so floating elements break evenly\n $elements.each(function() {\n var $that = $(this),\n display = $that.css('display');\n\n // temporarily force a usable display value\n if (display !== 'inline-block' && display !== 'flex' && display !== 'inline-flex') {\n display = 'block';\n }\n\n // cache the original inline style\n $that.data('style-cache', $that.attr('style'));\n\n $that.css({\n 'display': display,\n 'padding-top': '0',\n 'padding-bottom': '0',\n 'margin-top': '0',\n 'margin-bottom': '0',\n 'border-top-width': '0',\n 'border-bottom-width': '0',\n 'height': '100px',\n 'overflow': 'hidden'\n });\n });\n\n // get the array of rows (based on element top position)\n rows = _rows($elements);\n\n // revert original inline styles\n $elements.each(function() {\n var $that = $(this);\n $that.attr('style', $that.data('style-cache') || '');\n });\n }\n\n $.each(rows, function(key, row) {\n var $row = $(row),\n targetHeight = 0;\n\n if (!opts.target) {\n // skip apply to rows with only one item\n if (opts.byRow && $row.length <= 1) {\n $row.css(opts.property, '');\n return;\n }\n\n // iterate the row and find the max height\n $row.each(function(){\n var $that = $(this),\n style = $that.attr('style'),\n display = $that.css('display');\n\n // temporarily force a usable display value\n if (display !== 'inline-block' && display !== 'flex' && display !== 'inline-flex') {\n display = 'block';\n }\n\n // ensure we get the correct actual height (and not a previously set height value)\n var css = { 'display': display };\n css[opts.property] = '';\n $that.css(css);\n\n // find the max height (including padding, but not margin)\n if ($that.outerHeight(false) > targetHeight) {\n targetHeight = $that.outerHeight(false);\n }\n\n // revert styles\n if (style) {\n $that.attr('style', style);\n } else {\n $that.css('display', '');\n }\n });\n } else {\n // if target set, use the height of the target element\n targetHeight = opts.target.outerHeight(false);\n }\n\n // iterate the row and apply the height to all elements\n $row.each(function(){\n var $that = $(this),\n verticalPadding = 0;\n\n // don't apply to a target\n if (opts.target && $that.is(opts.target)) {\n return;\n }\n\n // handle padding and border correctly (required when not using border-box)\n if ($that.css('box-sizing') !== 'border-box') {\n verticalPadding += _parse($that.css('border-top-width')) + _parse($that.css('border-bottom-width'));\n verticalPadding += _parse($that.css('padding-top')) + _parse($that.css('padding-bottom'));\n }\n\n // set the height (accounting for padding and border)\n $that.css(opts.property, (targetHeight - verticalPadding) + 'px');\n });\n });\n\n // revert hidden parents\n $hiddenParents.each(function() {\n var $that = $(this);\n $that.attr('style', $that.data('style-cache') || null);\n });\n\n // restore scroll position if enabled\n if (matchHeight._maintainScroll) {\n $(window).scrollTop((scrollTop / htmlHeight) * $('html').outerHeight(true));\n }\n\n return this;\n };\n\n /*\n * matchHeight._applyDataApi\n * applies matchHeight to all elements with a data-match-height attribute\n */\n\n matchHeight._applyDataApi = function() {\n var groups = {};\n\n // generate groups by their groupId set by elements using data-match-height\n $('[data-match-height], [data-mh]').each(function() {\n var $this = $(this),\n groupId = $this.attr('data-mh') || $this.attr('data-match-height');\n\n if (groupId in groups) {\n groups[groupId] = groups[groupId].add($this);\n } else {\n groups[groupId] = $this;\n }\n });\n\n // apply matchHeight to each group\n $.each(groups, function() {\n this.matchHeight(true);\n });\n };\n\n /*\n * matchHeight._update\n * updates matchHeight on all current groups with their correct options\n */\n\n var _update = function(event) {\n if (matchHeight._beforeUpdate) {\n matchHeight._beforeUpdate(event, matchHeight._groups);\n }\n\n $.each(matchHeight._groups, function() {\n matchHeight._apply(this.elements, this.options);\n });\n\n if (matchHeight._afterUpdate) {\n matchHeight._afterUpdate(event, matchHeight._groups);\n }\n };\n\n matchHeight._update = function(throttle, event) {\n // prevent update if fired from a resize event\n // where the viewport width hasn't actually changed\n // fixes an event looping bug in IE8\n if (event && event.type === 'resize') {\n var windowWidth = $(window).width();\n if (windowWidth === _previousResizeWidth) {\n return;\n }\n _previousResizeWidth = windowWidth;\n }\n\n // throttle updates\n if (!throttle) {\n _update(event);\n } else if (_updateTimeout === -1) {\n _updateTimeout = setTimeout(function() {\n _update(event);\n _updateTimeout = -1;\n }, matchHeight._throttle);\n }\n };\n\n /*\n * bind events\n */\n\n // apply on DOM ready event\n $(matchHeight._applyDataApi);\n\n // use on or bind where supported\n var on = $.fn.on ? 'on' : 'bind';\n\n // update heights on load and resize events\n $(window)[on]('load', function(event) {\n matchHeight._update(false, event);\n });\n\n // throttled update heights on resize events\n $(window)[on]('resize orientationchange', function(event) {\n matchHeight._update(true, event);\n });\n\n});\n","/*!\n * jQuery Validation Plugin v1.20.0\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2023 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\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// JQuery trim is deprecated, provide a trim method based on String.prototype.trim\nvar trim = function( str ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\n\treturn str.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\" );\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// Abort any pending Ajax request from a previous call to this method.\n\t\t\tthis.abortRequest( element );\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\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t} else {\n\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t}\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\n\t\t\t\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t} else {\n\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t}\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\tif ( string === undefined ) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\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\telementAjaxPort: function( element ) {\n\t\t\treturn \"validate\" + element.name;\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() && this.pendingRequest === 0 ) {\n\t\t\t\t$( this.currentForm ).trigger( \"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\tabortRequest: function( element ) {\n\t\t\tvar port;\n\n\t\t\tif ( this.pending[ element.name ] ) {\n\t\t\t\tport = this.elementAjaxPort( element );\n\t\t\t\t$.ajaxAbort( port );\n\n\t\t\t\tthis.pendingRequest--;\n\n\t\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\t\tthis.pendingRequest = 0;\n\t\t\t\t}\n\n\t\t\t\tdelete this.pending[ element.name ];\n\t\t\t\t$( element ).removeClass( this.settings.pendingClass );\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[ type === \"date\" ? \"dateISO\" : 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 ] = typeof parameter === \"function\" && 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 ( Array.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):)?\\/\\/)(?:(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?: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-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[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 = Array.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 = Array.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 = Array.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: this.elementAjaxPort( element ),\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.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\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// $.ajaxAbort( port );\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\t$.ajaxAbort( port );\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\t$.ajaxAbort( port );\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}\n\n// Abort the previous request without sending a new one\n$.ajaxAbort = function( port ) {\n\tif ( pendingRequests[ port ] ) {\n\t\tpendingRequests[ port ].abort();\n\t\tdelete pendingRequests[ port ];\n\t}\n};\nreturn $;\n}));","module.exports = \"/*\\r\\n Paginator 3000\\r\\n - idea by ecto (ecto.ru)\\r\\n - coded by karaboz (karaboz.ru)\\r\\n\\r\\n How to implement:\\r\\n
\\r\\n \\r\\n\\r\\n Be sure that width of your paginator does not change after page is loaded\\r\\n If it happens you must call Paginator.resizePaginator(paginator_example) function to redraw paginator\\r\\n\\r\\n*/\\r\\n/*\\r\\n Paginator class\\r\\n paginatorHolderId - id of the html element where paginator will be placed as innerHTML (String): required\\r\\n pagesTotal - number of pages (Number, required)\\r\\n pagesSpan - number of pages which are visible at once (Number, required)\\r\\n pageCurrent - the number of current page (Number, required)\\r\\n baseUrl - the url of the website (String)\\r\\n if baseUrl is 'http://www.yourwebsite.com/pages/' the links on the pages will be:\\r\\n http://www.yourwebsite.com/pages/1, http://www.yourwebsite.com/pages/2, etc\\r\\n\\r\\n if baseUrl contains {page} then url will be composed by replacing it with page number\\r\\n (see paginator3000.html)\\r\\n*/\\r\\n\\r\\nvar Paginator = function (paginatorHolderId, pagesTotal, pagesSpan, pageCurrent, baseUrl) {\\r\\n if (!document.getElementById(paginatorHolderId) || !pagesTotal || !pagesSpan) return false;\\r\\n\\r\\n this.inputData = {\\r\\n paginatorHolderId: paginatorHolderId,\\r\\n pagesTotal: pagesTotal,\\r\\n pagesSpan: pagesSpan < pagesTotal ? pagesSpan : pagesTotal,\\r\\n pageCurrent: pageCurrent,\\r\\n baseUrl: baseUrl ? baseUrl : '/pages/'\\r\\n };\\r\\n\\r\\n this.html = {\\r\\n holder: null,\\r\\n\\r\\n table: null,\\r\\n trPages: null,\\r\\n trScrollBar: null,\\r\\n tdsPages: null,\\r\\n\\r\\n scrollBar: null,\\r\\n scrollThumb: null,\\r\\n\\r\\n pageCurrentMark: null\\r\\n };\\r\\n\\r\\n this.prepareHtml();\\r\\n\\r\\n this.initScrollThumb();\\r\\n this.initPageCurrentMark();\\r\\n this.initEvents();\\r\\n\\r\\n this.scrollToPageCurrent();\\r\\n};\\r\\n\\r\\n/*\\r\\n Set all .html properties (links to dom objects)\\r\\n*/\\r\\nPaginator.prototype.prepareHtml = function () {\\r\\n this.html.holder = document.getElementById(this.inputData.paginatorHolderId);\\r\\n this.html.holder.innerHTML = this.makePagesTableHtml();\\r\\n\\r\\n this.html.table = this.html.holder.getElementsByTagName('table')[0];\\r\\n\\r\\n var trPages = this.html.table.getElementsByTagName('tr')[0];\\r\\n this.html.tdsPages = trPages.getElementsByTagName('td');\\r\\n\\r\\n this.html.scrollBar = getElementsByClassName(this.html.table, 'div', 'scroll_bar')[0];\\r\\n this.html.scrollThumb = getElementsByClassName(this.html.table, 'div', 'scroll_thumb')[0];\\r\\n this.html.pageCurrentMark = getElementsByClassName(this.html.table, 'div', 'current_page_mark')[0];\\r\\n\\r\\n // hide scrollThumb if there is no scroll (we see all pages at once)\\r\\n if (this.inputData.pagesSpan == this.inputData.pagesTotal) {\\r\\n addClass(this.html.holder, 'fullsize');\\r\\n }\\r\\n};\\r\\n\\r\\n/*\\r\\n Make html for pages (table)\\r\\n*/\\r\\nPaginator.prototype.makePagesTableHtml = function () {\\r\\n var tdWidth = (100 / this.inputData.pagesSpan) + '%';\\r\\n\\r\\n var html = '' +\\r\\n '' +\\r\\n '';\\r\\n\\r\\n for (var i = 1; i <= this.inputData.pagesSpan; i++) {\\r\\n html += '';\\r\\n }\\r\\n\\r\\n html += '' +\\r\\n '' +\\r\\n '' +\\r\\n '' +\\r\\n '' +\\r\\n '
' +\\r\\n '
' +\\r\\n '
' +\\r\\n '
' +\\r\\n '
' +\\r\\n '
' +\\r\\n '
' +\\r\\n '
' +\\r\\n '
';\\r\\n\\r\\n return html;\\r\\n};\\r\\n\\r\\n/*\\r\\n Set all needed properties for scrollThumb and it's width\\r\\n*/\\r\\nPaginator.prototype.initScrollThumb = function () {\\r\\n this.html.scrollThumb.widthMin = '8'; // minimum width of the scrollThumb (px)\\r\\n this.html.scrollThumb.widthPercent = this.inputData.pagesSpan / this.inputData.pagesTotal * 100;\\r\\n\\r\\n this.html.scrollThumb.xPosPageCurrent = (this.inputData.pageCurrent - Math.round(this.inputData.pagesSpan / 2)) / this.inputData.pagesTotal * this.html.table.offsetWidth;\\r\\n this.html.scrollThumb.xPos = this.html.scrollThumb.xPosPageCurrent;\\r\\n\\r\\n this.html.scrollThumb.xPosMin = 0;\\r\\n this.html.scrollThumb.xPosMax = undefined;\\r\\n\\r\\n this.html.scrollThumb.widthActual = undefined;\\r\\n\\r\\n this.setScrollThumbWidth();\\r\\n};\\r\\n\\r\\nPaginator.prototype.setScrollThumbWidth = function () {\\r\\n // Try to set width in percents\\r\\n this.html.scrollThumb.style.width = this.html.scrollThumb.widthPercent + \\\"%\\\";\\r\\n\\r\\n // Fix the actual width in px\\r\\n this.html.scrollThumb.widthActual = this.html.scrollThumb.offsetWidth;\\r\\n\\r\\n // If actual width less then minimum which we set\\r\\n if (this.html.scrollThumb.widthActual < this.html.scrollThumb.widthMin) {\\r\\n this.html.scrollThumb.style.width = this.html.scrollThumb.widthMin + 'px';\\r\\n }\\r\\n\\r\\n this.html.scrollThumb.xPosMax = this.html.table.offsetWidth - this.html.scrollThumb.widthActual;\\r\\n};\\r\\n\\r\\nPaginator.prototype.moveScrollThumb = function () {\\r\\n this.html.scrollThumb.style.left = this.html.scrollThumb.xPos + \\\"px\\\";\\r\\n};\\r\\n\\r\\n/*\\r\\n Set all needed properties for pageCurrentMark, it's width and move it\\r\\n*/\\r\\nPaginator.prototype.initPageCurrentMark = function () {\\r\\n this.html.pageCurrentMark.widthMin = '3';\\r\\n this.html.pageCurrentMark.widthPercent = 100 / this.inputData.pagesTotal;\\r\\n this.html.pageCurrentMark.widthActual = undefined;\\r\\n\\r\\n this.setPageCurrentPointWidth();\\r\\n this.movePageCurrentPoint();\\r\\n};\\r\\n\\r\\nPaginator.prototype.setPageCurrentPointWidth = function () {\\r\\n // Try to set width in percents\\r\\n this.html.pageCurrentMark.style.width = this.html.pageCurrentMark.widthPercent + '%';\\r\\n\\r\\n // Fix the actual width in px\\r\\n this.html.pageCurrentMark.widthActual = this.html.pageCurrentMark.offsetWidth;\\r\\n\\r\\n // If actual width less then minimum which we set\\r\\n if (this.html.pageCurrentMark.widthActual < this.html.pageCurrentMark.widthMin) {\\r\\n this.html.pageCurrentMark.style.width = this.html.pageCurrentMark.widthMin + 'px';\\r\\n }\\r\\n};\\r\\n\\r\\nPaginator.prototype.movePageCurrentPoint = function () {\\r\\n if (this.html.pageCurrentMark.widthActual < this.html.pageCurrentMark.offsetWidth) {\\r\\n this.html.pageCurrentMark.style.left = (this.inputData.pageCurrent - 1) / this.inputData.pagesTotal * this.html.table.offsetWidth - this.html.pageCurrentMark.offsetWidth / 2 + \\\"px\\\";\\r\\n } else {\\r\\n this.html.pageCurrentMark.style.left = (this.inputData.pageCurrent - 1) / this.inputData.pagesTotal * this.html.table.offsetWidth + \\\"px\\\";\\r\\n }\\r\\n};\\r\\n\\r\\n/*\\r\\n Drag, click and resize events\\r\\n*/\\r\\nPaginator.prototype.initEvents = function () {\\r\\n var _this = this;\\r\\n\\r\\n this.html.scrollThumb.onmousedown = function (e) {\\r\\n if (!e) e = window.event;\\r\\n e.cancelBubble = true;\\r\\n if (e.stopPropagation) e.stopPropagation();\\r\\n\\r\\n var dx = getMousePosition(e).x - this.xPos;\\r\\n document.onmousemove = function (e) {\\r\\n if (!e) e = window.event;\\r\\n _this.html.scrollThumb.xPos = getMousePosition(e).x - dx;\\r\\n\\r\\n // the first: draw pages, the second: move scrollThumb (it was logically but ie sucks!)\\r\\n _this.moveScrollThumb();\\r\\n _this.drawPages();\\r\\n\\r\\n\\r\\n };\\r\\n\\r\\n document.onmouseup = function () {\\r\\n document.onmousemove = null;\\r\\n _this.enableSelection();\\r\\n };\\r\\n\\r\\n _this.disableSelection();\\r\\n };\\r\\n\\r\\n this.html.scrollBar.onmousedown = function (e) {\\r\\n if (!e) e = window.event;\\r\\n if (matchClass(_this.paginatorBox, 'fullsize')) return;\\r\\n\\r\\n _this.html.scrollThumb.xPos = getMousePosition(e).x - getPageX(_this.html.scrollBar) - _this.html.scrollThumb.offsetWidth / 2;\\r\\n\\r\\n _this.moveScrollThumb();\\r\\n _this.drawPages();\\r\\n };\\r\\n\\r\\n // Comment the row beneath if you set paginator width fixed\\r\\n addEvent(window, 'resize', function () {\\r\\n Paginator.resizePaginator(_this);\\r\\n });\\r\\n};\\r\\n\\r\\n/*\\r\\n Redraw current span of pages\\r\\n*/\\r\\nPaginator.prototype.drawPages = function () {\\r\\n var percentFromLeft = this.html.scrollThumb.xPos / (this.html.table.offsetWidth);\\r\\n var cellFirstValue = Math.round(percentFromLeft * this.inputData.pagesTotal);\\r\\n\\r\\n var html = \\\"\\\";\\r\\n // drawing pages control the position of the scrollThumb on the edges!\\r\\n if (cellFirstValue < 1) {\\r\\n cellFirstValue = 1;\\r\\n this.html.scrollThumb.xPos = 0;\\r\\n this.moveScrollThumb();\\r\\n } else if (cellFirstValue >= this.inputData.pagesTotal - this.inputData.pagesSpan) {\\r\\n cellFirstValue = this.inputData.pagesTotal - this.inputData.pagesSpan + 1;\\r\\n this.html.scrollThumb.xPos = this.html.table.offsetWidth - this.html.scrollThumb.offsetWidth;\\r\\n this.moveScrollThumb();\\r\\n }\\r\\n\\r\\n for (var i = 0; i < this.html.tdsPages.length; i++) {\\r\\n var cellCurrentValue = cellFirstValue + i;\\r\\n if (cellCurrentValue == this.inputData.pageCurrent) {\\r\\n html = \\\"\\\" + \\\"\\\" + cellCurrentValue + \\\"\\\" + \\\"\\\";\\r\\n } else {\\r\\n html = \\\"\\\" + \\\"\\\" + cellCurrentValue + \\\"\\\" + \\\"\\\";\\r\\n }\\r\\n this.html.tdsPages[i].innerHTML = html;\\r\\n }\\r\\n};\\r\\n\\r\\nPaginator.prototype.renderUrl = function (currentPage) {\\r\\n if (this.inputData.baseUrl.indexOf('{page}') > -1) {\\r\\n return this.inputData.baseUrl.replace('{page}', currentPage);\\r\\n }\\r\\n\\r\\n return this.inputData.baseUrl + currentPage;\\r\\n};\\r\\n\\r\\n/*\\r\\n Scroll to current page\\r\\n*/\\r\\nPaginator.prototype.scrollToPageCurrent = function () {\\r\\n this.html.scrollThumb.xPosPageCurrent = (this.inputData.pageCurrent - Math.round(this.inputData.pagesSpan / 2)) / this.inputData.pagesTotal * this.html.table.offsetWidth;\\r\\n this.html.scrollThumb.xPos = this.html.scrollThumb.xPosPageCurrent;\\r\\n\\r\\n this.moveScrollThumb();\\r\\n this.drawPages();\\r\\n};\\r\\n\\r\\nPaginator.prototype.disableSelection = function () {\\r\\n document.onselectstart = function () {\\r\\n return false;\\r\\n };\\r\\n this.html.scrollThumb.focus();\\r\\n};\\r\\n\\r\\nPaginator.prototype.enableSelection = function () {\\r\\n document.onselectstart = function () {\\r\\n return true;\\r\\n };\\r\\n};\\r\\n\\r\\n/*\\r\\n Function is used when paginator was resized (window.onresize fires it automatically)\\r\\n Use it when you change paginator with DHTML\\r\\n Do not use it if you set fixed width of paginator\\r\\n*/\\r\\nPaginator.resizePaginator = function (paginatorObj) {\\r\\n paginatorObj.setPageCurrentPointWidth();\\r\\n paginatorObj.movePageCurrentPoint();\\r\\n\\r\\n paginatorObj.setScrollThumbWidth();\\r\\n paginatorObj.scrollToPageCurrent();\\r\\n};\\r\\n\\r\\n/*\\r\\n Global functions which are used\\r\\n*/\\r\\n\\r\\nfunction getElementsByClassName(objParentNode, strNodeName, strClassName) {\\r\\n var nodes = objParentNode.getElementsByTagName(strNodeName);\\r\\n if (!strClassName) {\\r\\n return nodes;\\r\\n }\\r\\n\\r\\n var nodesWithClassName = [];\\r\\n for (var i = 0; i < nodes.length; i++) {\\r\\n if (matchClass(nodes[i], strClassName)) {\\r\\n nodesWithClassName[nodesWithClassName.length] = nodes[i];\\r\\n }\\r\\n }\\r\\n\\r\\n return nodesWithClassName;\\r\\n}\\r\\n\\r\\nfunction addClass(objNode, strNewClass) {\\r\\n replaceClass(objNode, strNewClass, '');\\r\\n}\\r\\n\\r\\nfunction removeClass(objNode, strCurrClass) {\\r\\n replaceClass(objNode, '', strCurrClass);\\r\\n}\\r\\n\\r\\nfunction replaceClass(objNode, strNewClass, strCurrClass) {\\r\\n var strOldClass = strNewClass;\\r\\n\\r\\n if (strCurrClass && strCurrClass.length) {\\r\\n strCurrClass = strCurrClass.replace(/\\\\s+(\\\\S)/g, '|$1');\\r\\n if (strOldClass.length) strOldClass += '|';\\r\\n strOldClass += strCurrClass;\\r\\n }\\r\\n\\r\\n objNode.className = objNode.className.replace(new RegExp('(^|\\\\\\\\s+)(' + strOldClass + ')($|\\\\\\\\s+)', 'g'), '$1');\\r\\n objNode.className += ((objNode.className.length) ? ' ' : '') + strNewClass;\\r\\n}\\r\\n\\r\\nfunction matchClass(objNode, strCurrClass) {\\r\\n return (objNode && objNode.className.length && objNode.className.match(new RegExp('(^|\\\\\\\\s+)(' + strCurrClass + ')($|\\\\\\\\s+)')));\\r\\n}\\r\\n\\r\\n\\r\\nfunction addEvent(objElement, strEventType, ptrEventFunc) {\\r\\n if (objElement.addEventListener)\\r\\n objElement.addEventListener(strEventType, ptrEventFunc, false);\\r\\n else if (objElement.attachEvent)\\r\\n objElement.attachEvent('on' + strEventType, ptrEventFunc);\\r\\n}\\r\\n\\r\\nfunction removeEvent(objElement, strEventType, ptrEventFunc) {\\r\\n if (objElement.removeEventListener) objElement.removeEventListener(strEventType, ptrEventFunc, false);\\r\\n else if (objElement.detachEvent) objElement.detachEvent('on' + strEventType, ptrEventFunc);\\r\\n}\\r\\n\\r\\nfunction getPageY(oElement) {\\r\\n var iPosY = oElement.offsetTop;\\r\\n\\r\\n while (oElement.offsetParent !== null) {\\r\\n oElement = oElement.offsetParent;\\r\\n iPosY += oElement.offsetTop;\\r\\n if (oElement.tagName == 'BODY') break;\\r\\n }\\r\\n\\r\\n return iPosY;\\r\\n}\\r\\n\\r\\nfunction getPageX(oElement) {\\r\\n var iPosX = oElement.offsetLeft;\\r\\n\\r\\n while (oElement.offsetParent !== null) {\\r\\n oElement = oElement.offsetParent;\\r\\n iPosX += oElement.offsetLeft;\\r\\n if (oElement.tagName == 'BODY') break;\\r\\n }\\r\\n\\r\\n return iPosX;\\r\\n}\\r\\n\\r\\nfunction getMousePosition(e) {\\r\\n var posX, posY;\\r\\n\\r\\n if (e.pageX || e.pageY) {\\r\\n posX = e.pageX;\\r\\n posY = e.pageY;\\r\\n } else if (e.clientX || e.clientY) {\\r\\n posX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\\r\\n posY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\\r\\n }\\r\\n\\r\\n return {\\r\\n x: posX,\\r\\n y: posY\\r\\n };\\r\\n}\"","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nmodule.exports = function(src) {\n\tfunction log(error) {\n\t\t(typeof console !== \"undefined\")\n\t\t&& (console.error || console.log)(\"[Script Loader]\", error);\n\t}\n\n\t// Check for IE =< 8\n\tfunction isIE() {\n\t\treturn typeof attachEvent !== \"undefined\" && typeof addEventListener === \"undefined\";\n\t}\n\n\ttry {\n\t\tif (typeof execScript !== \"undefined\" && isIE()) {\n\t\t\texecScript(src);\n\t\t} else if (typeof eval !== \"undefined\") {\n\t\t\teval.call(null, src);\n\t\t} else {\n\t\t\tlog(\"EvalError: No eval function available\");\n\t\t}\n\t} catch (error) {\n\t\tlog(error);\n\t}\n}\n","require(\"!!E:\\\\TeamcityBuildAgent2\\\\work\\\\ade9bc87bf759759\\\\Ludopoli.Flowli.Web.PsEdnet\\\\node_modules\\\\script-loader\\\\addScript.js\")(require(\"!!E:\\\\TeamcityBuildAgent2\\\\work\\\\ade9bc87bf759759\\\\Ludopoli.Flowli.Web.PsEdnet\\\\node_modules\\\\raw-loader\\\\index.js!E:\\\\TeamcityBuildAgent2\\\\work\\\\ade9bc87bf759759\\\\Ludopoli.Flowli.Web.PsEdnet\\\\src\\\\custom\\\\paginator3001\\\\paginator3000.js\"))","/*!\n * Select2 4.0.13\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = function (root, jQuery) {\n if (jQuery === undefined) {\n // require('jQuery') returns a factory that requires window to\n // build a jQuery instance, we normalize how we use modules\n // that require this pattern but the window provided is a noop\n // if it's defined (how jquery works)\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n }\n else {\n jQuery = require('jquery')(root);\n }\n }\n factory(jQuery);\n return jQuery;\n };\n } else {\n // Browser globals\n factory(jQuery);\n }\n} (function (jQuery) {\n // This is needed so we can catch the AMD loader configuration and use it\n // The inner file should be wrapped (by `banner.start.js`) in a function that\n // returns the AMD loader references.\n var S2 =(function () {\n // Restore the Select2 AMD loader so it can be used\n // Needed mostly in the language files, where the loader is not inserted\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n var S2 = jQuery.fn.select2.amd;\n }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n //start trimDots\n for (i = 0; i < name.length; i++) {\n part = name[i];\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join('/');\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i, relParts,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n relParts = makeRelParts(relName);\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error(\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n 'found. Make sure that you are including jQuery before Select2 on your ' +\n 'web page.'\n );\n }\n\n return _$;\n});\n\nS2.define('select2/utils',[\n 'jquery'\n], function ($) {\n var Utils = {};\n\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n\n function BaseConstructor () {\n this.constructor = ChildClass;\n }\n\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n\n return ChildClass;\n };\n\n function getMethods (theClass) {\n var proto = theClass.prototype;\n\n var methods = [];\n\n for (var methodName in proto) {\n var m = proto[methodName];\n\n if (typeof m !== 'function') {\n continue;\n }\n\n if (methodName === 'constructor') {\n continue;\n }\n\n methods.push(methodName);\n }\n\n return methods;\n }\n\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n\n function DecoratedClass () {\n var unshift = Array.prototype.unshift;\n\n var argCount = DecoratorClass.prototype.constructor.length;\n\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n\n calledConstructor.apply(this, arguments);\n }\n\n DecoratorClass.displayName = SuperClass.displayName;\n\n function ctr () {\n this.constructor = DecoratedClass;\n }\n\n DecoratedClass.prototype = new ctr();\n\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n\n DecoratedClass.prototype[superMethod] =\n SuperClass.prototype[superMethod];\n }\n\n var calledMethod = function (methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function () {};\n\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n\n return function () {\n var unshift = Array.prototype.unshift;\n\n unshift.call(arguments, originalMethod);\n\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function () {\n this.listeners = {};\n };\n\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n\n this.listeners = this.listeners || {};\n\n // Params should always come in as an array\n if (params == null) {\n params = [];\n }\n\n // If there are no arguments to the event, use a temporary object\n if (params.length === 0) {\n params.push({});\n }\n\n // Set the `_type` of the first object to the event\n params[0]._type = event;\n\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\n };\n\n Observable.prototype.invoke = function (listeners, params) {\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].apply(this, params);\n }\n };\n\n Utils.Observable = Observable;\n\n Utils.generateChars = function (length) {\n var chars = '';\n\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n };\n\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n\n var dataLevel = data;\n\n if (keys.length === 1) {\n continue;\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n\n // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n\n dataLevel = dataLevel[key];\n }\n\n delete data[originalKey];\n }\n\n return data;\n };\n\n Utils.hasScroll = function (index, el) {\n // Adapted from the function created by @ShadowScripter\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\n // The original code can be found at\n // http://codereview.stackexchange.com/q/13338\n // and was designed to be used with the Sizzle selector engine.\n\n var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY;\n\n //Check both x and y declarations\n if (overflowX === overflowY &&\n (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n\n return ($el.innerHeight() < el.scrollHeight ||\n $el.innerWidth() < el.scrollWidth);\n };\n\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n };\n\n // Do not try to escape the markup if it's not a string\n if (typeof markup !== 'string') {\n return markup;\n }\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n };\n\n // Append an array of jQuery nodes to a given element.\n Utils.appendMany = function ($element, $nodes) {\n // jQuery 1.7.x does not support $.fn.append() with an array\n // Fall back to a jQuery object collection using $.fn.add()\n if ($.fn.jquery.substr(0, 3) === '1.7') {\n var $jqNodes = $();\n\n $.map($nodes, function (node) {\n $jqNodes = $jqNodes.add(node);\n });\n\n $nodes = $jqNodes;\n }\n\n $element.append($nodes);\n };\n\n // Cache objects in Utils.__cache instead of $.data (see #4346)\n Utils.__cache = {};\n\n var id = 0;\n Utils.GetUniqueElementId = function (element) {\n // Get a unique element Id. If element has no id,\n // creates a new unique number, stores it in the id\n // attribute and returns the new id.\n // If an id already exists, it simply returns it.\n\n var select2Id = element.getAttribute('data-select2-id');\n if (select2Id == null) {\n // If element has id, use it.\n if (element.id) {\n select2Id = element.id;\n element.setAttribute('data-select2-id', select2Id);\n } else {\n element.setAttribute('data-select2-id', ++id);\n select2Id = id.toString();\n }\n }\n return select2Id;\n };\n\n Utils.StoreData = function (element, name, value) {\n // Stores an item in the cache for a specified element.\n // name is the cache key.\n var id = Utils.GetUniqueElementId(element);\n if (!Utils.__cache[id]) {\n Utils.__cache[id] = {};\n }\n\n Utils.__cache[id][name] = value;\n };\n\n Utils.GetData = function (element, name) {\n // Retrieves a value from the cache by its key (name)\n // name is optional. If no name specified, return\n // all cache items for the specified element.\n // and for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (name) {\n if (Utils.__cache[id]) {\n if (Utils.__cache[id][name] != null) {\n return Utils.__cache[id][name];\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\n };\n\n Utils.RemoveData = function (element) {\n // Removes all cached items for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (Utils.__cache[id] != null) {\n delete Utils.__cache[id];\n }\n\n element.removeAttribute('data-select2-id');\n };\n\n return Utils;\n});\n\nS2.define('select2/results',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Results ($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n\n Results.__super__.constructor.call(this);\n }\n\n Utils.Extend(Results, Utils.Observable);\n\n Results.prototype.render = function () {\n var $results = $(\n ''\n );\n\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\n\n return $results;\n };\n\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n\n this.clear();\n this.hideLoading();\n\n var $message = $(\n '
  • '\n );\n\n var message = this.options.get('translations').get(params.message);\n\n $message.append(\n escapeMarkup(\n message(params.args)\n )\n );\n\n $message[0].className += ' select2-results__message';\n\n this.$results.append($message);\n };\n\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n\n Results.prototype.append = function (data) {\n this.hideLoading();\n\n var $options = [];\n\n if (data.results == null || data.results.length === 0) {\n if (this.$results.children().length === 0) {\n this.trigger('results:message', {\n message: 'noResults'\n });\n }\n\n return;\n }\n\n data.results = this.sort(data.results);\n\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n\n var $option = this.option(item);\n\n $options.push($option);\n }\n\n this.$results.append($options);\n };\n\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n\n return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results\n .find('.select2-results__option[aria-selected]');\n\n var $selected = $options.filter('[aria-selected=true]');\n\n // Check if there are any selected options\n if ($selected.length > 0) {\n // If there are selected options, highlight the first\n $selected.first().trigger('mouseenter');\n } else {\n // If there are no selected options, highlight the first option\n // in the dropdown\n $options.first().trigger('mouseenter');\n }\n\n this.ensureHighlightVisible();\n };\n\n Results.prototype.setClasses = function () {\n var self = this;\n\n this.data.current(function (selected) {\n var selectedIds = $.map(selected, function (s) {\n return s.id.toString();\n });\n\n var $options = self.$results\n .find('.select2-results__option[aria-selected]');\n\n $options.each(function () {\n var $option = $(this);\n\n var item = Utils.GetData(this, 'data');\n\n // id needs to be converted to a string when comparing\n var id = '' + item.id;\n\n if ((item.element != null && item.element.selected) ||\n (item.element == null && $.inArray(id, selectedIds) > -1)) {\n $option.attr('aria-selected', 'true');\n } else {\n $option.attr('aria-selected', 'false');\n }\n });\n\n });\n };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n\n var loadingMore = this.options.get('translations').get('searching');\n\n var loading = {\n disabled: true,\n loading: true,\n text: loadingMore(params)\n };\n var $loading = this.option(loading);\n $loading.className += ' loading-results';\n\n this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.className = 'select2-results__option';\n\n var attrs = {\n 'role': 'option',\n 'aria-selected': 'false'\n };\n\n var matches = window.Element.prototype.matches ||\n window.Element.prototype.msMatchesSelector ||\n window.Element.prototype.webkitMatchesSelector;\n\n if ((data.element != null && matches.call(data.element, ':disabled')) ||\n (data.element == null && data.disabled)) {\n delete attrs['aria-selected'];\n attrs['aria-disabled'] = 'true';\n }\n\n if (data.id == null) {\n delete attrs['aria-selected'];\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n delete attrs['aria-selected'];\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n\n var $label = $(label);\n this.template(data, label);\n\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n\n var $child = this.option(child);\n\n $children.push($child);\n }\n\n var $childrenContainer = $('', {\n 'class': 'select2-results__options select2-results__options--nested'\n });\n\n $childrenContainer.append($children);\n\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n\n Utils.StoreData(option, 'data', data);\n\n return option;\n };\n\n Results.prototype.bind = function (container, $container) {\n var self = this;\n\n var id = container.id + '-results';\n\n this.$results.attr('id', id);\n\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n\n container.on('results:append', function (params) {\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expended=\"true\"\n self.$results.attr('aria-expanded', 'true');\n self.$results.attr('aria-hidden', 'false');\n\n self.setClasses();\n self.ensureHighlightVisible();\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expended=\"false\"\n self.$results.attr('aria-expanded', 'false');\n self.$results.attr('aria-hidden', 'true');\n self.$results.removeAttr('aria-activedescendant');\n });\n\n container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n $highlighted.trigger('mouseup');\n });\n\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var data = Utils.GetData($highlighted[0], 'data');\n\n if ($highlighted.attr('aria-selected') == 'true') {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('[aria-selected]');\n\n var currentIndex = $options.index($highlighted);\n\n // If we are already at the top, don't move further\n // If no options, currentIndex will be -1\n if (currentIndex <= 0) {\n return;\n }\n\n var nextIndex = currentIndex - 1;\n\n // If none are highlighted, highlight the first\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('[aria-selected]');\n\n var currentIndex = $options.index($highlighted);\n\n var nextIndex = currentIndex + 1;\n\n // If we are at the last option, stay there\n if (nextIndex >= $options.length) {\n return;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top +\n self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:focus', function (params) {\n params.element.addClass('select2-results__option--highlighted');\n });\n\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n if (isAtTop) {\n self.$results.scrollTop(0);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(\n self.$results.get(0).scrollHeight - self.$results.height()\n );\n\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n\n this.$results.on('mouseup', '.select2-results__option[aria-selected]',\n function (evt) {\n var $this = $(this);\n\n var data = Utils.GetData(this, 'data');\n\n if ($this.attr('aria-selected') === 'true') {\n if (self.options.get('multiple')) {\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n } else {\n self.trigger('close', {});\n }\n\n return;\n }\n\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n\n this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\n function (evt) {\n var data = Utils.GetData(this, 'data');\n\n self.getHighlightedResults()\n .removeClass('select2-results__option--highlighted');\n\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results\n .find('.select2-results__option--highlighted');\n\n return $highlighted;\n };\n\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var $options = this.$results.find('[aria-selected]');\n\n var currentIndex = $options.index($highlighted);\n\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\n\n if (currentIndex <= 2) {\n this.$results.scrollTop(0);\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n this.$results.scrollTop(nextOffset);\n }\n };\n\n Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n var content = template(result, container);\n\n if (content == null) {\n container.style.display = 'none';\n } else if (typeof content === 'string') {\n container.innerHTML = escapeMarkup(content);\n } else {\n $(container).append(content);\n }\n };\n\n return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n var KEYS = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n\n return KEYS;\n});\n\nS2.define('select2/selection/base',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function BaseSelection ($element, options) {\n this.$element = $element;\n this.options = options;\n\n BaseSelection.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseSelection, Utils.Observable);\n\n BaseSelection.prototype.render = function () {\n var $selection = $(\n '' +\n ''\n );\n\n this._tabindex = 0;\n\n if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n } else if (this.$element.attr('tabindex') != null) {\n this._tabindex = this.$element.attr('tabindex');\n }\n\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n $selection.attr('aria-disabled', 'false');\n\n this.$selection = $selection;\n\n return $selection;\n };\n\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n this.container = container;\n\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expanded=\"true\"\n self.$selection.attr('aria-expanded', 'true');\n self.$selection.attr('aria-owns', resultsId);\n\n self._attachCloseHandler(container);\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expanded=\"false\"\n self.$selection.attr('aria-expanded', 'false');\n self.$selection.removeAttr('aria-activedescendant');\n self.$selection.removeAttr('aria-owns');\n\n self.$selection.trigger('focus');\n\n self._detachCloseHandler(container);\n });\n\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\n });\n\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n self.$selection.attr('aria-disabled', 'true');\n });\n };\n\n BaseSelection.prototype._handleBlur = function (evt) {\n var self = this;\n\n // This needs to be delayed as the active element is the body when the tab\n // key is pressed, possibly along with others.\n window.setTimeout(function () {\n // Don't trigger `blur` if the focus is still in the selection\n if (\n (document.activeElement == self.$selection[0]) ||\n ($.contains(self.$selection[0], document.activeElement))\n ) {\n return;\n }\n\n self.trigger('blur', evt);\n }, 1);\n };\n\n BaseSelection.prototype._attachCloseHandler = function (container) {\n\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n\n var $select = $target.closest('.select2');\n\n var $all = $('.select2.select2-container--open');\n\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n\n var $element = Utils.GetData(this, 'element');\n\n $element.select2('close');\n });\n });\n };\n\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\n\n BaseSelection.prototype.update = function (data) {\n throw new Error('The `update` method must be defined in child classes.');\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n BaseSelection.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n BaseSelection.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n 'jquery',\n './base',\n '../utils',\n '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection () {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(SingleSelection, BaseSelection);\n\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n\n $selection.addClass('select2-selection--single');\n\n $selection.html(\n '' +\n '' +\n '' +\n ''\n );\n\n return $selection;\n };\n\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n SingleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n\n this.$selection.find('.select2-selection__rendered')\n .attr('id', id)\n .attr('role', 'textbox')\n .attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\n\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on('focus', function (evt) {\n // User focuses on the container\n });\n\n this.$selection.on('blur', function (evt) {\n // User exits the container\n });\n\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.trigger('focus');\n }\n });\n };\n\n SingleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title'); // clear tooltip on empty\n };\n\n SingleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n SingleSelection.prototype.selectionContainer = function () {\n return $('');\n };\n\n SingleSelection.prototype.update = function (data) {\n if (data.length === 0) {\n this.clear();\n return;\n }\n\n var selection = data[0];\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n\n $rendered.empty().append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $rendered.attr('title', title);\n } else {\n $rendered.removeAttr('title');\n }\n };\n\n return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n 'jquery',\n './base',\n '../utils'\n], function ($, BaseSelection, Utils) {\n function MultipleSelection ($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(MultipleSelection, BaseSelection);\n\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n\n $selection.addClass('select2-selection--multiple');\n\n $selection.html(\n ''\n );\n\n return $selection;\n };\n\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n MultipleSelection.__super__.bind.apply(this, arguments);\n\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on(\n 'click',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n var $remove = $(this);\n var $selection = $remove.parent();\n\n var data = Utils.GetData($selection[0], 'data');\n\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n }\n );\n };\n\n MultipleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title');\n };\n\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $(\n '
  • ' +\n '' +\n '×' +\n '' +\n '
  • '\n );\n\n return $container;\n };\n\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var $selections = [];\n\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n\n $selection.append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\n\n Utils.StoreData($selection[0], 'data', selection);\n\n $selections.push($selection);\n }\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n\n Utils.appendMany($rendered, $selections);\n };\n\n return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n '../utils'\n], function (Utils) {\n function Placeholder (decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options);\n }\n\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n\n $placeholder.html(this.display(placeholder));\n $placeholder.addClass('select2-selection__placeholder')\n .removeClass('select2-selection__choice');\n\n return $placeholder;\n };\n\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = (\n data.length == 1 && data[0].id != this.placeholder.id\n );\n var multipleSelections = data.length > 1;\n\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n\n this.clear();\n\n var $placeholder = this.createPlaceholder(this.placeholder);\n\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n\n return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n 'jquery',\n '../keys',\n '../utils'\n], function ($, KEYS, Utils) {\n function AllowClear () { }\n\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error(\n 'Select2: The `allowClear` option should be used in combination ' +\n 'with the `placeholder` option.'\n );\n }\n }\n\n this.$selection.on('mousedown', '.select2-selection__clear',\n function (evt) {\n self._handleClear(evt);\n });\n\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.isDisabled()) {\n return;\n }\n\n var $clear = this.$selection.find('.select2-selection__clear');\n\n // Ignore the event if nothing has been selected\n if ($clear.length === 0) {\n return;\n }\n\n evt.stopPropagation();\n\n var data = Utils.GetData($clear[0], 'data');\n\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n\n var unselectData = {\n data: data\n };\n this.trigger('clear', unselectData);\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n\n for (var d = 0; d < data.length; d++) {\n unselectData = {\n data: data[d]\n };\n\n // Trigger the `unselect` event, so people can prevent it from being\n // cleared.\n this.trigger('unselect', unselectData);\n\n // If the event was prevented, don't clear it out.\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n }\n\n this.$element.trigger('input').trigger('change');\n\n this.trigger('toggle', {});\n };\n\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n data.length === 0) {\n return;\n }\n\n var removeAll = this.options.get('translations').get('removeAllItems');\n\n var $remove = $(\n '' +\n '×' +\n ''\n );\n Utils.StoreData($remove[0], 'data', data);\n\n this.$selection.find('.select2-selection__rendered').prepend($remove);\n };\n\n return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function Search (decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n Search.prototype.render = function (decorated) {\n var $search = $(\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n decorated.call(this, container, $container);\n\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\n\n container.on('close', function () {\n self.$search.val('');\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n\n self._transferTabIndex();\n });\n\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n\n var key = evt.which;\n\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$searchContainer\n .prev('.select2-selection__choice');\n\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n\n self.searchRemoveChoice(item);\n\n evt.preventDefault();\n }\n }\n });\n\n this.$selection.on('click', '.select2-search--inline', function (evt) {\n if (self.$search.val()) {\n evt.stopPropagation();\n }\n });\n\n // Try to detect the IE version should the `documentMode` property that\n // is stored on the document. This is only implemented in IE and is\n // slightly cleaner than doing a user agent check.\n // This property is not available in Edge, but Edge also doesn't have\n // this bug.\n var msie = document.documentMode;\n var disableInputEvents = msie && msie <= 11;\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$selection.on(\n 'input.searchcheck',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents) {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n // Unbind the duplicated `keyup` event\n self.$selection.off('keyup.search');\n }\n );\n\n this.$selection.on(\n 'keyup.search input.search',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents && evt.type === 'input') {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n var key = evt.which;\n\n // We can freely ignore events from modifier keys\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n return;\n }\n\n // Tabbing will be handled during the `keydown` phase\n if (key == KEYS.TAB) {\n return;\n }\n\n self.handleSearch(evt);\n }\n );\n };\n\n /**\n * This method will transfer the tabindex attribute from the rendered\n * selection to the search box. This allows for the search box to be used as\n * the primary focus instead of the selection container.\n *\n * @private\n */\n Search.prototype._transferTabIndex = function (decorated) {\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n this.$selection.attr('tabindex', '-1');\n };\n\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n\n this.$search.attr('placeholder', '');\n\n decorated.call(this, data);\n\n this.$selection.find('.select2-selection__rendered')\n .append(this.$searchContainer);\n\n this.resizeSearch();\n if (searchHadFocus) {\n this.$search.trigger('focus');\n }\n };\n\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n\n this.$search.val(item.text);\n this.handleSearch();\n };\n\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n\n var width = '';\n\n if (this.$search.attr('placeholder') !== '') {\n width = this.$selection.find('.select2-selection__rendered').width();\n } else {\n var minimumWidth = this.$search.val().length + 1;\n\n width = (minimumWidth * 0.75) + 'em';\n }\n\n this.$search.css('width', width);\n };\n\n return Search;\n});\n\nS2.define('select2/selection/eventRelay',[\n 'jquery'\n], function ($) {\n function EventRelay () { }\n\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = [\n 'open', 'opening',\n 'close', 'closing',\n 'select', 'selecting',\n 'unselect', 'unselecting',\n 'clear', 'clearing'\n ];\n\n var preventableEvents = [\n 'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n ];\n\n decorated.call(this, container, $container);\n\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if ($.inArray(name, relayEvents) === -1) {\n return;\n }\n\n // The parameters should always be an object\n params = params || {};\n\n // Generate the jQuery event for the Select2 event\n var evt = $.Event('select2:' + name, {\n params: params\n });\n\n self.$element.trigger(evt);\n\n // Only handle preventable events if it was one\n if ($.inArray(name, preventableEvents) === -1) {\n return;\n }\n\n params.prevented = evt.isDefaultPrevented();\n });\n };\n\n return EventRelay;\n});\n\nS2.define('select2/translation',[\n 'jquery',\n 'require'\n], function ($, require) {\n function Translation (dict) {\n this.dict = dict || {};\n }\n\n Translation.prototype.all = function () {\n return this.dict;\n };\n\n Translation.prototype.get = function (key) {\n return this.dict[key];\n };\n\n Translation.prototype.extend = function (translation) {\n this.dict = $.extend({}, translation.all(), this.dict);\n };\n\n // Static functions\n\n Translation._cache = {};\n\n Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n\n Translation._cache[path] = translations;\n }\n\n return new Translation(Translation._cache[path]);\n };\n\n return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n var diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u0152': 'OE',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u0153': 'oe',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03CE': '\\u03C9',\n '\\u03C2': '\\u03C3',\n '\\u2019': '\\''\n };\n\n return diacritics;\n});\n\nS2.define('select2/data/base',[\n '../utils'\n], function (Utils) {\n function BaseAdapter ($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseAdapter, Utils.Observable);\n\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.bind = function (container, $container) {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.destroy = function () {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n\n id += Utils.generateChars(4);\n\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n return id;\n };\n\n return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n './base',\n '../utils',\n 'jquery'\n], function (BaseAdapter, Utils, $) {\n function SelectAdapter ($element, options) {\n this.$element = $element;\n this.options = options;\n\n SelectAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(SelectAdapter, BaseAdapter);\n\n SelectAdapter.prototype.current = function (callback) {\n var data = [];\n var self = this;\n\n this.$element.find(':selected').each(function () {\n var $option = $(this);\n\n var option = self.item($option);\n\n data.push(option);\n });\n\n callback(data);\n };\n\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n\n data.selected = true;\n\n // If data.element is a DOM node, use it instead\n if ($(data.element).is('option')) {\n data.element.selected = true;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n\n data = [data];\n data.push.apply(data, currentData);\n\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n\n if ($.inArray(id, val) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n } else {\n var val = data.id;\n\n this.$element.val(val);\n this.$element.trigger('input').trigger('change');\n }\n };\n\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n\n if (!this.$element.prop('multiple')) {\n return;\n }\n\n data.selected = false;\n\n if ($(data.element).is('option')) {\n data.element.selected = false;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n this.current(function (currentData) {\n var val = [];\n\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n\n if (id !== data.id && $.inArray(id, val) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n\n self.$element.trigger('input').trigger('change');\n });\n };\n\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n\n this.container = container;\n\n container.on('select', function (params) {\n self.select(params.data);\n });\n\n container.on('unselect', function (params) {\n self.unselect(params.data);\n });\n };\n\n SelectAdapter.prototype.destroy = function () {\n // Remove anything added to child elements\n this.$element.find('*').each(function () {\n // Remove any custom data set by Select2\n Utils.RemoveData(this);\n });\n };\n\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n\n var $options = this.$element.children();\n\n $options.each(function () {\n var $option = $(this);\n\n if (!$option.is('option') && !$option.is('optgroup')) {\n return;\n }\n\n var option = self.item($option);\n\n var matches = self.matches(params, option);\n\n if (matches !== null) {\n data.push(matches);\n }\n });\n\n callback({\n results: data\n });\n };\n\n SelectAdapter.prototype.addOptions = function ($options) {\n Utils.appendMany(this.$element, $options);\n };\n\n SelectAdapter.prototype.option = function (data) {\n var option;\n\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n\n if (data.id !== undefined) {\n option.value = data.id;\n }\n\n if (data.disabled) {\n option.disabled = true;\n }\n\n if (data.selected) {\n option.selected = true;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n var $option = $(option);\n\n var normalizedData = this._normalizeItem(data);\n normalizedData.element = option;\n\n // Override the option's data with the combined data\n Utils.StoreData(option, 'data', normalizedData);\n\n return $option;\n };\n\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n\n data = Utils.GetData($option[0], 'data');\n\n if (data != null) {\n return data;\n }\n\n if ($option.is('option')) {\n data = {\n id: $option.val(),\n text: $option.text(),\n disabled: $option.prop('disabled'),\n selected: $option.prop('selected'),\n title: $option.prop('title')\n };\n } else if ($option.is('optgroup')) {\n data = {\n text: $option.prop('label'),\n children: [],\n title: $option.prop('title')\n };\n\n var $children = $option.children('option');\n var children = [];\n\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n\n var child = this.item($child);\n\n children.push(child);\n }\n\n data.children = children;\n }\n\n data = this._normalizeItem(data);\n data.element = $option[0];\n\n Utils.StoreData($option[0], 'data', data);\n\n return data;\n };\n\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (item !== Object(item)) {\n item = {\n id: item,\n text: item\n };\n }\n\n item = $.extend({}, {\n text: ''\n }, item);\n\n var defaults = {\n selected: false,\n disabled: false\n };\n\n if (item.id != null) {\n item.id = item.id.toString();\n }\n\n if (item.text != null) {\n item.text = item.text.toString();\n }\n\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n\n return $.extend({}, defaults, item);\n };\n\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n\n return matcher(params, data);\n };\n\n return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n './select',\n '../utils',\n 'jquery'\n], function (SelectAdapter, Utils, $) {\n function ArrayAdapter ($element, options) {\n this._dataToConvert = options.get('data') || [];\n\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(ArrayAdapter, SelectAdapter);\n\n ArrayAdapter.prototype.bind = function (container, $container) {\n ArrayAdapter.__super__.bind.call(this, container, $container);\n\n this.addOptions(this.convertToOptions(this._dataToConvert));\n };\n\n ArrayAdapter.prototype.select = function (data) {\n var $option = this.$element.find('option').filter(function (i, elm) {\n return elm.value == data.id.toString();\n });\n\n if ($option.length === 0) {\n $option = this.option(data);\n\n this.addOptions($option);\n }\n\n ArrayAdapter.__super__.select.call(this, data);\n };\n\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n\n var $options = [];\n\n // Filter out all items except for the one passed in the argument\n function onlyItem (item) {\n return function () {\n return $(this).val() == item.id;\n };\n }\n\n for (var d = 0; d < data.length; d++) {\n var item = this._normalizeItem(data[d]);\n\n // Skip items which were pre-loaded, only merge the data\n if ($.inArray(item.id, existingIds) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n\n var $newOption = this.option(newData);\n\n $existingOption.replaceWith($newOption);\n\n continue;\n }\n\n var $option = this.option(item);\n\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n\n Utils.appendMany($option, $children);\n }\n\n $options.push($option);\n }\n\n return $options;\n };\n\n return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n './array',\n '../utils',\n 'jquery'\n], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter ($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n AjaxAdapter.prototype._applyDefaults = function (options) {\n var defaults = {\n data: function (params) {\n return $.extend({}, params, {\n q: params.term\n });\n },\n transport: function (params, success, failure) {\n var $request = $.ajax(params);\n\n $request.then(success);\n $request.fail(failure);\n\n return $request;\n }\n };\n\n return $.extend({}, defaults, options, true);\n };\n\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if ($.isFunction(this._request.abort)) {\n this._request.abort();\n }\n\n this._request = null;\n }\n\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n\n function request () {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n\n if (self.options.get('debug') && window.console && console.error) {\n // Check to make sure that the response included a `results` key.\n if (!results || !results.results || !$.isArray(results.results)) {\n console.error(\n 'Select2: The AJAX results did not return an array in the ' +\n '`results` key of the response.'\n );\n }\n }\n\n callback(results);\n }, function () {\n // Attempt to detect if a request was aborted\n // Only works if the transport exposes a status property\n if ('status' in $request &&\n ($request.status === 0 || $request.status === '0')) {\n return;\n }\n\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n\n self._request = $request;\n }\n\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n\n return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n 'jquery'\n], function ($) {\n function Tags (decorated, $element, options) {\n var tags = options.get('tags');\n\n var createTag = options.get('createTag');\n\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n\n var insertTag = options.get('insertTag');\n\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n\n decorated.call(this, $element, options);\n\n if ($.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n var item = this._normalizeItem(tag);\n\n var $option = this.option(item);\n\n this.$element.append($option);\n }\n }\n }\n\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._removeOldTags();\n\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n\n function wrapper (obj, child) {\n var data = obj.results;\n\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n\n var checkChildren = (\n option.children != null &&\n !wrapper({\n results: option.children\n }, true)\n );\n\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n\n var checkText = optionText === paramsTerm;\n\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n\n obj.data = data;\n callback(obj);\n\n return;\n }\n }\n\n if (child) {\n return true;\n }\n\n var tag = self.createTag(params);\n\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', true);\n\n self.addOptions([$option]);\n\n self.insertTag(data, tag);\n }\n\n obj.results = data;\n\n callback(obj);\n }\n\n decorated.call(this, params, wrapper);\n };\n\n Tags.prototype.createTag = function (decorated, params) {\n var term = $.trim(params.term);\n\n if (term === '') {\n return null;\n }\n\n return {\n id: term,\n text: term\n };\n };\n\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n\n $options.each(function () {\n if (this.selected) {\n return;\n }\n\n $(this).remove();\n });\n };\n\n return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n 'jquery'\n], function ($) {\n function Tokenizer (decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n\n decorated.call(this, $element, options);\n }\n\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n\n this.$search = container.dropdown.$search || container.selection.$search ||\n $container.find('.select2-search__field');\n };\n\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n function createAndSelect (data) {\n // Normalize the data object so we can use it for checks\n var item = self._normalizeItem(data);\n\n // Check if the data object already exists as a tag\n // Select it if it doesn't\n var $existingOptions = self.$element.find('option').filter(function () {\n return $(this).val() === item.id;\n });\n\n // If an existing option wasn't found for it, create the option\n if (!$existingOptions.length) {\n var $option = self.option(item);\n $option.attr('data-select2-tag', true);\n\n self._removeOldTags();\n self.addOptions([$option]);\n }\n\n // Select the item, now that we know there is an option for it\n select(item);\n }\n\n function select (data) {\n self.trigger('select', {\n data: data\n });\n }\n\n params.term = params.term || '';\n\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n if (tokenData.term !== params.term) {\n // Replace the search term if we have the search box\n if (this.$search.length) {\n this.$search.val(tokenData.term);\n this.$search.trigger('focus');\n }\n\n params.term = tokenData.term;\n }\n\n decorated.call(this, params, callback);\n };\n\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n var separators = options.get('tokenSeparators') || [];\n var term = params.term;\n var i = 0;\n\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n\n while (i < term.length) {\n var termChar = term[i];\n\n if ($.inArray(termChar, separators) === -1) {\n i++;\n\n continue;\n }\n\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n\n var data = createTag(partParams);\n\n if (data == null) {\n i++;\n continue;\n }\n\n callback(data);\n\n // Reset the term to not include the tokenized portion\n term = term.substr(i + 1) || '';\n i = 0;\n }\n\n return {\n term: term\n };\n };\n\n return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n function MinimumInputLength (decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (params.term.length < this.minimumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooShort',\n args: {\n minimum: this.minimumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n function MaximumInputLength (decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (this.maximumInputLength > 0 &&\n params.term.length > this.maximumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooLong',\n args: {\n maximum: this.maximumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n function MaximumSelectionLength (decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumSelectionLength.prototype.bind =\n function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n\n MaximumSelectionLength.prototype.query =\n function (decorated, params, callback) {\n var self = this;\n\n this._checkIfMaximumSelected(function () {\n decorated.call(self, params, callback);\n });\n };\n\n MaximumSelectionLength.prototype._checkIfMaximumSelected =\n function (_, successCallback) {\n var self = this;\n\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n if (self.maximumSelectionLength > 0 &&\n count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n\n if (successCallback) {\n successCallback();\n }\n });\n };\n\n return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Dropdown ($element, options) {\n this.$element = $element;\n this.options = options;\n\n Dropdown.__super__.constructor.call(this);\n }\n\n Utils.Extend(Dropdown, Utils.Observable);\n\n Dropdown.prototype.render = function () {\n var $dropdown = $(\n '' +\n '' +\n ''\n );\n\n $dropdown.attr('dir', this.options.get('dir'));\n\n this.$dropdown = $dropdown;\n\n return $dropdown;\n };\n\n Dropdown.prototype.bind = function () {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.position = function ($dropdown, $container) {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n\n return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function Search () { }\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n\n var $search = $(\n '' +\n '' +\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n $rendered.prepend($search);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n decorated.call(this, container, $container);\n\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n });\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$search.on('input', function (evt) {\n // Unbind the duplicated `keyup` event\n $(this).off('keyup');\n });\n\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n\n self.$search.trigger('focus');\n\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\n });\n\n container.on('close', function () {\n self.$search.attr('tabindex', -1);\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n\n self.$search.val('');\n self.$search.trigger('blur');\n });\n\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\n }\n });\n\n container.on('results:all', function (params) {\n if (params.query.term == null || params.query.term === '') {\n var showSearch = self.showSearch(params);\n\n if (showSearch) {\n self.$searchContainer.removeClass('select2-search--hide');\n } else {\n self.$searchContainer.addClass('select2-search--hide');\n }\n }\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n };\n\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n\n return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n\n decorated.call(this, data);\n };\n\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n\n return modifiedData;\n };\n\n return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n 'jquery'\n], function ($) {\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n\n decorated.call(this, $element, options, dataAdapter);\n\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n\n decorated.call(this, data);\n\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n this.loadMoreIfNeeded();\n }\n };\n\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(\n document.documentElement,\n this.$loadingMore[0]\n );\n\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n\n var currentOffset = this.$results.offset().top +\n this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top +\n this.$loadingMore.outerHeight(false);\n\n if (currentOffset + 50 >= loadingMoreOffset) {\n this.loadMore();\n }\n };\n\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n\n var params = $.extend({}, {page: 1}, this.lastParams);\n\n params.page++;\n\n this.trigger('query:append', params);\n };\n\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $(\n '
  • '\n );\n\n var message = this.options.get('translations').get('loadingMore');\n\n $option.html(message(this.lastParams));\n\n return $option;\n };\n\n return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function AttachBody (decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n decorated.call(this, $element, options);\n }\n\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('open', function () {\n self._showDropdown();\n self._attachPositioningHandler(container);\n\n // Must bind after the results handlers to ensure correct sizing\n self._bindContainerResultHandlers(container);\n });\n\n container.on('close', function () {\n self._hideDropdown();\n self._detachPositioningHandler(container);\n });\n\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n\n this.$dropdownContainer.remove();\n };\n\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class'));\n\n $dropdown.removeClass('select2');\n $dropdown.addClass('select2-container--open');\n\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n\n this.$container = $container;\n };\n\n AttachBody.prototype.render = function (decorated) {\n var $container = $('');\n\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n\n this.$dropdownContainer = $container;\n\n return $container;\n };\n\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n\n AttachBody.prototype._bindContainerResultHandlers =\n function (decorated, container) {\n\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n\n var self = this;\n\n container.on('results:all', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:append', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:message', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('select', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('unselect', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n this._containerResultsHandlersBound = true;\n };\n\n AttachBody.prototype._attachPositioningHandler =\n function (decorated, container) {\n var self = this;\n\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.each(function () {\n Utils.StoreData(this, 'select2-scroll-position', {\n x: $(this).scrollLeft(),\n y: $(this).scrollTop()\n });\n });\n\n $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n function (e) {\n self._positionDropdown();\n self._resizeDropdown();\n });\n };\n\n AttachBody.prototype._detachPositioningHandler =\n function (decorated, container) {\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n\n var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\n\n var newDirection = null;\n\n var offset = this.$container.offset();\n\n offset.bottom = offset.top + this.$container.outerHeight(false);\n\n var container = {\n height: this.$container.outerHeight(false)\n };\n\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n var css = {\n left: offset.left,\n top: container.bottom\n };\n\n // Determine what the parent element is to use for calculating the offset\n var $offsetParent = this.$dropdownParent;\n\n // For statically positioned elements, we need to get the element\n // that is determining the offset\n if ($offsetParent.css('position') === 'static') {\n $offsetParent = $offsetParent.offsetParent();\n }\n\n var parentOffset = {\n top: 0,\n left: 0\n };\n\n if (\n $.contains(document.body, $offsetParent[0]) ||\n $offsetParent[0].isConnected\n ) {\n parentOffset = $offsetParent.offset();\n }\n\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n\n if (newDirection == 'above' ||\n (isCurrentlyAbove && newDirection !== 'below')) {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\n\n if (newDirection != null) {\n this.$dropdown\n .removeClass('select2-dropdown--below select2-dropdown--above')\n .addClass('select2-dropdown--' + newDirection);\n this.$container\n .removeClass('select2-container--below select2-container--above')\n .addClass('select2-container--' + newDirection);\n }\n\n this.$dropdownContainer.css(css);\n };\n\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n\n this.$dropdown.css(css);\n };\n\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n this._positionDropdown();\n this._resizeDropdown();\n };\n\n return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n function countResults (data) {\n var count = 0;\n\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n\n return count;\n }\n\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n\n return decorated.call(this, params);\n };\n\n return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n '../utils'\n], function (Utils) {\n function SelectOnClose () { }\n\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\n });\n };\n\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n if (params && params.originalSelect2Event != null) {\n var event = params.originalSelect2Event;\n\n // Don't select an item if the close event was triggered from a select or\n // unselect event\n if (event._type === 'select' || event._type === 'unselect') {\n return;\n }\n }\n\n var $highlightedResults = this.getHighlightedResults();\n\n // Only select highlighted results\n if ($highlightedResults.length < 1) {\n return;\n }\n\n var data = Utils.GetData($highlightedResults[0], 'data');\n\n // Don't re-select already selected resulte\n if (\n (data.element != null && data.element.selected) ||\n (data.element == null && data.selected)\n ) {\n return;\n }\n\n this.trigger('select', {\n data: data\n });\n };\n\n return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n function CloseOnSelect () { }\n\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\n });\n };\n\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n var originalEvent = evt.originalEvent;\n\n // Don't close if the control key is being held\n if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n return;\n }\n\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n\n return CloseOnSelect;\n});\n\nS2.define('select2/i18n/en',[],function () {\n // English\n return {\n errorLoading: function () {\n return 'The results could not be loaded.';\n },\n inputTooLong: function (args) {\n var overChars = args.input.length - args.maximum;\n\n var message = 'Please delete ' + overChars + ' character';\n\n if (overChars != 1) {\n message += 's';\n }\n\n return message;\n },\n inputTooShort: function (args) {\n var remainingChars = args.minimum - args.input.length;\n\n var message = 'Please enter ' + remainingChars + ' or more characters';\n\n return message;\n },\n loadingMore: function () {\n return 'Loading more results…';\n },\n maximumSelected: function (args) {\n var message = 'You can only select ' + args.maximum + ' item';\n\n if (args.maximum != 1) {\n message += 's';\n }\n\n return message;\n },\n noResults: function () {\n return 'No results found';\n },\n searching: function () {\n return 'Searching…';\n },\n removeAllItems: function () {\n return 'Remove all items';\n }\n };\n});\n\nS2.define('select2/defaults',[\n 'jquery',\n 'require',\n\n './results',\n\n './selection/single',\n './selection/multiple',\n './selection/placeholder',\n './selection/allowClear',\n './selection/search',\n './selection/eventRelay',\n\n './utils',\n './translation',\n './diacritics',\n\n './data/select',\n './data/array',\n './data/ajax',\n './data/tags',\n './data/tokenizer',\n './data/minimumInputLength',\n './data/maximumInputLength',\n './data/maximumSelectionLength',\n\n './dropdown',\n './dropdown/search',\n './dropdown/hidePlaceholder',\n './dropdown/infiniteScroll',\n './dropdown/attachBody',\n './dropdown/minimumResultsForSearch',\n './dropdown/selectOnClose',\n './dropdown/closeOnSelect',\n\n './i18n/en'\n], function ($, require,\n\n ResultsList,\n\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\n SelectionSearch, EventRelay,\n\n Utils, Translation, DIACRITICS,\n\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n\n EnglishTranslation) {\n function Defaults () {\n this.reset();\n }\n\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\n\n if (options.dataAdapter == null) {\n if (options.ajax != null) {\n options.dataAdapter = AjaxData;\n } else if (options.data != null) {\n options.dataAdapter = ArrayData;\n } else {\n options.dataAdapter = SelectData;\n }\n\n if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MinimumInputLength\n );\n }\n\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumInputLength\n );\n }\n\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumSelectionLength\n );\n }\n\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Tokenizer\n );\n }\n\n if (options.query != null) {\n var Query = require(options.amdBase + 'compat/query');\n\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Query\n );\n }\n\n if (options.initSelection != null) {\n var InitSelection = require(options.amdBase + 'compat/initSelection');\n\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n InitSelection\n );\n }\n }\n\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n InfiniteScroll\n );\n }\n\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n HidePlaceholder\n );\n }\n\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n SelectOnClose\n );\n }\n }\n\n if (options.dropdownAdapter == null) {\n if (options.multiple) {\n options.dropdownAdapter = Dropdown;\n } else {\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n options.dropdownAdapter = SearchableDropdown;\n }\n\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n MinimumResultsForSearch\n );\n }\n\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n CloseOnSelect\n );\n }\n\n if (\n options.dropdownCssClass != null ||\n options.dropdownCss != null ||\n options.adaptDropdownCssClass != null\n ) {\n var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n DropdownCSS\n );\n }\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n AttachBody\n );\n }\n\n if (options.selectionAdapter == null) {\n if (options.multiple) {\n options.selectionAdapter = MultipleSelection;\n } else {\n options.selectionAdapter = SingleSelection;\n }\n\n // Add the placeholder mixin if a placeholder was specified\n if (options.placeholder != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n Placeholder\n );\n }\n\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n AllowClear\n );\n }\n\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionSearch\n );\n }\n\n if (\n options.containerCssClass != null ||\n options.containerCss != null ||\n options.adaptContainerCssClass != null\n ) {\n var ContainerCSS = require(options.amdBase + 'compat/containerCss');\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n ContainerCSS\n );\n }\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n EventRelay\n );\n }\n\n // If the defaults were not previously applied from an element, it is\n // possible for the language option to have not been resolved\n options.language = this._resolveLanguage(options.language);\n\n // Always fall back to English since it will always be complete\n options.language.push('en');\n\n var uniqueLanguages = [];\n\n for (var l = 0; l < options.language.length; l++) {\n var language = options.language[l];\n\n if (uniqueLanguages.indexOf(language) === -1) {\n uniqueLanguages.push(language);\n }\n }\n\n options.language = uniqueLanguages;\n\n options.translations = this._processTranslations(\n options.language,\n options.debug\n );\n\n return options;\n };\n\n Defaults.prototype.reset = function () {\n function stripDiacritics (text) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n\n function matcher (params, data) {\n // Always return the object if there is nothing to compare\n if ($.trim(params.term) === '') {\n return data;\n }\n\n // Do a recursive check for options with children\n if (data.children && data.children.length > 0) {\n // Clone the data object if there are children\n // This is required as we modify the object to remove any non-matches\n var match = $.extend(true, {}, data);\n\n // Check each child of the option\n for (var c = data.children.length - 1; c >= 0; c--) {\n var child = data.children[c];\n\n var matches = matcher(params, child);\n\n // If there wasn't a match, remove the object in the array\n if (matches == null) {\n match.children.splice(c, 1);\n }\n }\n\n // If any children matched, return the new object\n if (match.children.length > 0) {\n return match;\n }\n\n // If there were no matching children, check just the plain object\n return matcher(params, match);\n }\n\n var original = stripDiacritics(data.text).toUpperCase();\n var term = stripDiacritics(params.term).toUpperCase();\n\n // Check if the text contains the term\n if (original.indexOf(term) > -1) {\n return data;\n }\n\n // If it doesn't contain the term, don't return anything\n return null;\n }\n\n this.defaults = {\n amdBase: './',\n amdLanguageBase: './i18n/',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: {},\n matcher: matcher,\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: false,\n scrollAfterSelect: false,\n sorter: function (data) {\n return data;\n },\n templateResult: function (result) {\n return result.text;\n },\n templateSelection: function (selection) {\n return selection.text;\n },\n theme: 'default',\n width: 'resolve'\n };\n };\n\n Defaults.prototype.applyFromElement = function (options, $element) {\n var optionLanguage = options.language;\n var defaultLanguage = this.defaults.language;\n var elementLanguage = $element.prop('lang');\n var parentLanguage = $element.closest('[lang]').prop('lang');\n\n var languages = Array.prototype.concat.call(\n this._resolveLanguage(elementLanguage),\n this._resolveLanguage(optionLanguage),\n this._resolveLanguage(defaultLanguage),\n this._resolveLanguage(parentLanguage)\n );\n\n options.language = languages;\n\n return options;\n };\n\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n\n if ($.isEmptyObject(language)) {\n return [];\n }\n\n if ($.isPlainObject(language)) {\n return [language];\n }\n\n var languages;\n\n if (!$.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n\n var resolvedLanguages = [];\n\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n\n if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n // Extract the region information if it is included\n var languageParts = languages[l].split('-');\n var baseLanguage = languageParts[0];\n\n resolvedLanguages.push(baseLanguage);\n }\n }\n\n return resolvedLanguages;\n };\n\n Defaults.prototype._processTranslations = function (languages, debug) {\n var translations = new Translation();\n\n for (var l = 0; l < languages.length; l++) {\n var languageData = new Translation();\n\n var language = languages[l];\n\n if (typeof language === 'string') {\n try {\n // Try to load it with the original name\n languageData = Translation.loadPath(language);\n } catch (e) {\n try {\n // If we couldn't load it, check if it wasn't the full path\n language = this.defaults.amdLanguageBase + language;\n languageData = Translation.loadPath(language);\n } catch (ex) {\n // The translation could not be loaded at all. Sometimes this is\n // because of a configuration problem, other times this can be\n // because of how Select2 helps load all possible translation files\n if (debug && window.console && console.warn) {\n console.warn(\n 'Select2: The language file for \"' + language + '\" could ' +\n 'not be automatically loaded. A fallback will be used instead.'\n );\n }\n }\n }\n } else if ($.isPlainObject(language)) {\n languageData = new Translation(language);\n } else {\n languageData = language;\n }\n\n translations.extend(languageData);\n }\n\n return translations;\n };\n\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n\n var data = {};\n data[camelKey] = value;\n\n var convertedData = Utils._convertData(data);\n\n $.extend(true, this.defaults, convertedData);\n };\n\n var defaults = new Defaults();\n\n return defaults;\n});\n\nS2.define('select2/options',[\n 'require',\n 'jquery',\n './defaults',\n './utils'\n], function (require, $, Defaults, Utils) {\n function Options (options, $element) {\n this.options = options;\n\n if ($element != null) {\n this.fromElement($element);\n }\n\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n\n this.options = Defaults.apply(this.options);\n\n if ($element && $element.is('input')) {\n var InputCompat = require(this.get('amdBase') + 'compat/inputData');\n\n this.options.dataAdapter = Utils.Decorate(\n this.options.dataAdapter,\n InputCompat\n );\n }\n }\n\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n\n if (this.options.dir == null) {\n if ($e.prop('dir')) {\n this.options.dir = $e.prop('dir');\n } else if ($e.closest('[dir]').prop('dir')) {\n this.options.dir = $e.closest('[dir]').prop('dir');\n } else {\n this.options.dir = 'ltr';\n }\n }\n\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n 'removed in future versions of Select2.'\n );\n }\n\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n Utils.StoreData($e[0], 'tags', true);\n }\n\n if (Utils.GetData($e[0], 'ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\n '`data-ajax--url` and support for the old attribute will be removed' +\n ' in future versions of Select2.'\n );\n }\n\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n }\n\n var dataset = {};\n\n function upperCaseLetter(_, letter) {\n return letter.toUpperCase();\n }\n\n // Pre-load all of the attributes which are prefixed with `data-`\n for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n var attributeName = $e[0].attributes[attr].name;\n var prefix = 'data-';\n\n if (attributeName.substr(0, prefix.length) == prefix) {\n // Get the contents of the attribute after `data-`\n var dataName = attributeName.substring(prefix.length);\n\n // Get the data contents from the consistent source\n // This is more than likely the jQuery data helper\n var dataValue = Utils.GetData($e[0], dataName);\n\n // camelCase the attribute name to match the spec\n var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n // Store the data attribute contents into the dataset since\n dataset[camelDataName] = dataValue;\n }\n }\n\n // Prefer the element's `dataset` attribute if it exists\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n dataset = $.extend(true, {}, $e[0].dataset, dataset);\n }\n\n // Prefer our internal data cache if it exists\n var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n data = Utils._convertData(data);\n\n for (var key in data) {\n if ($.inArray(key, excludedData) > -1) {\n continue;\n }\n\n if ($.isPlainObject(this.options[key])) {\n $.extend(this.options[key], data[key]);\n } else {\n this.options[key] = data[key];\n }\n }\n\n return this;\n };\n\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n\n return Options;\n});\n\nS2.define('select2/core',[\n 'jquery',\n './options',\n './utils',\n './keys'\n], function ($, Options, Utils, KEYS) {\n var Select2 = function ($element, options) {\n if (Utils.GetData($element[0], 'select2') != null) {\n Utils.GetData($element[0], 'select2').destroy();\n }\n\n this.$element = $element;\n\n this.id = this._generateId($element);\n\n options = options || {};\n\n this.options = new Options(options, $element);\n\n Select2.__super__.constructor.call(this);\n\n // Set up the tabindex\n\n var tabindex = $element.attr('tabindex') || 0;\n Utils.StoreData($element[0], 'old-tabindex', tabindex);\n $element.attr('tabindex', '-1');\n\n // Set up containers and adapters\n\n var DataAdapter = this.options.get('dataAdapter');\n this.dataAdapter = new DataAdapter($element, this.options);\n\n var $container = this.render();\n\n this._placeContainer($container);\n\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n\n this.selection.position(this.$selection, $container);\n\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n\n this.dropdown.position(this.$dropdown, $container);\n\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n\n this.results.position(this.$results, this.$dropdown);\n\n // Bind events\n\n var self = this;\n\n // Bind the container to all of the adapters\n this._bindAdapters();\n\n // Register any DOM event handlers\n this._registerDomEvents();\n\n // Register any internal event handlers\n this._registerDataEvents();\n this._registerSelectionEvents();\n this._registerDropdownEvents();\n this._registerResultsEvents();\n this._registerEvents();\n\n // Set the initial state\n this.dataAdapter.current(function (initialData) {\n self.trigger('selection:update', {\n data: initialData\n });\n });\n\n // Hide the original select\n $element.addClass('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true');\n\n // Synchronize any monitored attributes\n this._syncAttributes();\n\n Utils.StoreData($element[0], 'select2', this);\n\n // Ensure backwards compatibility with $element.data('select2').\n $element.data('select2', this);\n };\n\n Utils.Extend(Select2, Utils.Observable);\n\n Select2.prototype._generateId = function ($element) {\n var id = '';\n\n if ($element.attr('id') != null) {\n id = $element.attr('id');\n } else if ($element.attr('name') != null) {\n id = $element.attr('name') + '-' + Utils.generateChars(2);\n } else {\n id = Utils.generateChars(4);\n }\n\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n\n return id;\n };\n\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n if (width != null) {\n $container.css('width', width);\n }\n };\n\n Select2.prototype._resolveWidth = function ($element, method) {\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n\n if (styleWidth != null) {\n return styleWidth;\n }\n\n return this._resolveWidth($element, 'element');\n }\n\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n\n if (elementWidth <= 0) {\n return 'auto';\n }\n\n return elementWidth + 'px';\n }\n\n if (method == 'style') {\n var style = $element.attr('style');\n\n if (typeof(style) !== 'string') {\n return null;\n }\n\n var attrs = style.split(';');\n\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n var attr = attrs[i].replace(/\\s/g, '');\n var matches = attr.match(WIDTH);\n\n if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n\n return null;\n }\n\n if (method == 'computedstyle') {\n var computedStyle = window.getComputedStyle($element[0]);\n\n return computedStyle.width;\n }\n\n return method;\n };\n\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n\n Select2.prototype._registerDomEvents = function () {\n var self = this;\n\n this.$element.on('change.select2', function () {\n self.dataAdapter.current(function (data) {\n self.trigger('selection:update', {\n data: data\n });\n });\n });\n\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n\n if (this.$element[0].attachEvent) {\n this.$element[0].attachEvent('onpropertychange', this._syncA);\n }\n\n var observer = window.MutationObserver ||\n window.WebKitMutationObserver ||\n window.MozMutationObserver\n ;\n\n if (observer != null) {\n this._observer = new observer(function (mutations) {\n self._syncA();\n self._syncS(null, mutations);\n });\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n } else if (this.$element[0].addEventListener) {\n this.$element[0].addEventListener(\n 'DOMAttrModified',\n self._syncA,\n false\n );\n this.$element[0].addEventListener(\n 'DOMNodeInserted',\n self._syncS,\n false\n );\n this.$element[0].addEventListener(\n 'DOMNodeRemoved',\n self._syncS,\n false\n );\n }\n };\n\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n\n this.selection.on('*', function (name, params) {\n if ($.inArray(name, nonRelayEvents) !== -1) {\n return;\n }\n\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerEvents = function () {\n var self = this;\n\n this.on('open', function () {\n self.$container.addClass('select2-container--open');\n });\n\n this.on('close', function () {\n self.$container.removeClass('select2-container--open');\n });\n\n this.on('enable', function () {\n self.$container.removeClass('select2-container--disabled');\n });\n\n this.on('disable', function () {\n self.$container.addClass('select2-container--disabled');\n });\n\n this.on('blur', function () {\n self.$container.removeClass('select2-container--focus');\n });\n\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('query:append', function (params) {\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:append', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('keypress', function (evt) {\n var key = evt.which;\n\n if (self.isOpen()) {\n if (key === KEYS.ESC || key === KEYS.TAB ||\n (key === KEYS.UP && evt.altKey)) {\n self.close(evt);\n\n evt.preventDefault();\n } else if (key === KEYS.ENTER) {\n self.trigger('results:select', {});\n\n evt.preventDefault();\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n self.trigger('results:toggle', {});\n\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\n (key === KEYS.DOWN && evt.altKey)) {\n self.open();\n\n evt.preventDefault();\n }\n }\n });\n };\n\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n\n if (this.isDisabled()) {\n if (this.isOpen()) {\n this.close();\n }\n\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n\n Select2.prototype._isChangeMutation = function (evt, mutations) {\n var changed = false;\n var self = this;\n\n // Ignore any mutation events raised for elements that aren't options or\n // optgroups. This handles the case when the select element is destroyed\n if (\n evt && evt.target && (\n evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'\n )\n ) {\n return;\n }\n\n if (!mutations) {\n // If mutation events aren't supported, then we can only assume that the\n // change affected the selections\n changed = true;\n } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n for (var n = 0; n < mutations.addedNodes.length; n++) {\n var node = mutations.addedNodes[n];\n\n if (node.selected) {\n changed = true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n changed = true;\n } else if ($.isArray(mutations)) {\n $.each(mutations, function(evt, mutation) {\n if (self._isChangeMutation(evt, mutation)) {\n // We've found a change mutation.\n // Let's escape from the loop and continue\n changed = true;\n return false;\n }\n });\n }\n return changed;\n };\n\n Select2.prototype._syncSubtree = function (evt, mutations) {\n var changed = this._isChangeMutation(evt, mutations);\n var self = this;\n\n // Only re-pull the data if we think there is a change\n if (changed) {\n this.dataAdapter.current(function (currentData) {\n self.trigger('selection:update', {\n data: currentData\n });\n });\n }\n };\n\n /**\n * Override the trigger method to automatically trigger pre-events when\n * there are events that can be prevented.\n */\n Select2.prototype.trigger = function (name, args) {\n var actualTrigger = Select2.__super__.trigger;\n var preTriggerMap = {\n 'open': 'opening',\n 'close': 'closing',\n 'select': 'selecting',\n 'unselect': 'unselecting',\n 'clear': 'clearing'\n };\n\n if (args === undefined) {\n args = {};\n }\n\n if (name in preTriggerMap) {\n var preTriggerName = preTriggerMap[name];\n var preTriggerArgs = {\n prevented: false,\n name: name,\n args: args\n };\n\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n\n return;\n }\n }\n\n actualTrigger.call(this, name, args);\n };\n\n Select2.prototype.toggleDropdown = function () {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n\n if (this.isDisabled()) {\n return;\n }\n\n this.trigger('query', {});\n };\n\n Select2.prototype.close = function (evt) {\n if (!this.isOpen()) {\n return;\n }\n\n this.trigger('close', { originalEvent : evt });\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n Select2.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n Select2.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n Select2.prototype.isOpen = function () {\n return this.$container.hasClass('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container.hasClass('select2-container--focus');\n };\n\n Select2.prototype.focus = function (data) {\n // No need to re-trigger focus events if we are already focused\n if (this.hasFocus()) {\n return;\n }\n\n this.$container.addClass('select2-container--focus');\n this.trigger('focus', {});\n };\n\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n ' instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n args = [true];\n }\n\n var disabled = !args[0];\n\n this.$element.prop('disabled', disabled);\n };\n\n Select2.prototype.data = function () {\n if (this.options.get('debug') &&\n arguments.length > 0 && window.console && console.warn) {\n console.warn(\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n 'should consider setting the value instead using `$element.val()`.'\n );\n }\n\n var data = [];\n\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n\n return data;\n };\n\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n ' removed in later Select2 versions. Use $element.val() instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n\n var newVal = args[0];\n\n if ($.isArray(newVal)) {\n newVal = $.map(newVal, function (obj) {\n return obj.toString();\n });\n }\n\n this.$element.val(newVal).trigger('input').trigger('change');\n };\n\n Select2.prototype.destroy = function () {\n this.$container.remove();\n\n if (this.$element[0].detachEvent) {\n this.$element[0].detachEvent('onpropertychange', this._syncA);\n }\n\n if (this._observer != null) {\n this._observer.disconnect();\n this._observer = null;\n } else if (this.$element[0].removeEventListener) {\n this.$element[0]\n .removeEventListener('DOMAttrModified', this._syncA, false);\n this.$element[0]\n .removeEventListener('DOMNodeInserted', this._syncS, false);\n this.$element[0]\n .removeEventListener('DOMNodeRemoved', this._syncS, false);\n }\n\n this._syncA = null;\n this._syncS = null;\n\n this.$element.off('.select2');\n this.$element.attr('tabindex',\n Utils.GetData(this.$element[0], 'old-tabindex'));\n\n this.$element.removeClass('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n Utils.RemoveData(this.$element[0]);\n this.$element.removeData('select2');\n\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n\n Select2.prototype.render = function () {\n var $container = $(\n '' +\n '' +\n '' +\n ''\n );\n\n $container.attr('dir', this.options.get('dir'));\n\n this.$container = $container;\n\n this.$container.addClass('select2-container--' + this.options.get('theme'));\n\n Utils.StoreData($container[0], 'element', this.$element);\n\n return $container;\n };\n\n return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n 'jquery'\n], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n});\n\nS2.define('jquery.select2',[\n 'jquery',\n 'jquery-mousewheel',\n\n './select2/core',\n './select2/defaults',\n './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n\n $.fn.select2 = function (options) {\n options = options || {};\n\n if (typeof options === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n\n var instance = new Select2($(this), instanceOptions);\n });\n\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n\n if (instance == null && window.console && console.error) {\n console.error(\n 'The select2(\\'' + options + '\\') method was called on an ' +\n 'element that is not using Select2.'\n );\n }\n\n ret = instance[options].apply(instance, args);\n });\n\n // Check if we should be returning `this`\n if ($.inArray(options, thisMethods) > -1) {\n return this;\n }\n\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\n }\n\n return Select2;\n});\n\n // Return the AMD loader configuration so it can be used outside of this file\n return {\n define: S2.define,\n require: S2.require\n };\n}());\n\n // Autoload the jQuery bindings\n // We know that all of the modules exist above this, so we're safe\n var select2 = S2.require('jquery.select2');\n\n // Hold the AMD module references on the jQuery function that was just loaded\n // This allows Select2 to use the internal loader outside of this file, such\n // as in the language files.\n jQuery.fn.select2.amd = S2;\n\n // Return the Select2 instance for anyone who is importing it.\n return select2;\n}));\n","module.exports = jQuery;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","var e=new Map;function t(t){var o=e.get(t);o&&o.destroy()}function o(t){var o=e.get(t);o&&o.update()}var r=null;\"undefined\"==typeof window?((r=function(e){return e}).destroy=function(e){return e},r.update=function(e){return e}):((r=function(t,o){return t&&Array.prototype.forEach.call(t.length?t:[t],function(t){return function(t){if(t&&t.nodeName&&\"TEXTAREA\"===t.nodeName&&!e.has(t)){var o,r=null,n=window.getComputedStyle(t),i=(o=t.value,function(){a({testForHeightReduction:\"\"===o||!t.value.startsWith(o),restoreTextAlign:null}),o=t.value}),l=function(o){t.removeEventListener(\"autosize:destroy\",l),t.removeEventListener(\"autosize:update\",s),t.removeEventListener(\"input\",i),window.removeEventListener(\"resize\",s),Object.keys(o).forEach(function(e){return t.style[e]=o[e]}),e.delete(t)}.bind(t,{height:t.style.height,resize:t.style.resize,textAlign:t.style.textAlign,overflowY:t.style.overflowY,overflowX:t.style.overflowX,wordWrap:t.style.wordWrap});t.addEventListener(\"autosize:destroy\",l),t.addEventListener(\"autosize:update\",s),t.addEventListener(\"input\",i),window.addEventListener(\"resize\",s),t.style.overflowX=\"hidden\",t.style.wordWrap=\"break-word\",e.set(t,{destroy:l,update:s}),s()}function a(e){var o,i,l=e.restoreTextAlign,s=void 0===l?null:l,d=e.testForHeightReduction,u=void 0===d||d,c=n.overflowY;if(0!==t.scrollHeight&&(\"vertical\"===n.resize?t.style.resize=\"none\":\"both\"===n.resize&&(t.style.resize=\"horizontal\"),u&&(o=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push([e.parentNode,e.parentNode.scrollTop]),e=e.parentNode;return function(){return t.forEach(function(e){var t=e[0],o=e[1];t.style.scrollBehavior=\"auto\",t.scrollTop=o,t.style.scrollBehavior=null})}}(t),t.style.height=\"\"),i=\"content-box\"===n.boxSizing?t.scrollHeight-(parseFloat(n.paddingTop)+parseFloat(n.paddingBottom)):t.scrollHeight+parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth),\"none\"!==n.maxHeight&&i>parseFloat(n.maxHeight)?(\"hidden\"===n.overflowY&&(t.style.overflow=\"scroll\"),i=parseFloat(n.maxHeight)):\"hidden\"!==n.overflowY&&(t.style.overflow=\"hidden\"),t.style.height=i+\"px\",s&&(t.style.textAlign=s),o&&o(),r!==i&&(t.dispatchEvent(new Event(\"autosize:resized\",{bubbles:!0})),r=i),c!==n.overflow&&!s)){var v=n.textAlign;\"hidden\"===n.overflow&&(t.style.textAlign=\"start\"===v?\"end\":\"start\"),a({restoreTextAlign:v,testForHeightReduction:!0})}}function s(){a({testForHeightReduction:!0,restoreTextAlign:null})}}(t)}),t}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],t),e},r.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e});var n=r;export default n;\n"],"names":["factory","$","_previousResizeWidth","_updateTimeout","_parse","value","parseFloat","_rows","elements","tolerance","$elements","lastTop","rows","each","$that","this","top","offset","css","lastRow","length","push","Math","floor","abs","add","_parseOptions","options","opts","byRow","property","target","remove","extend","matchHeight","fn","that","_groups","key","group","not","_apply","version","_throttle","_maintainScroll","_beforeUpdate","_afterUpdate","scrollTop","window","htmlHeight","outerHeight","$hiddenParents","parents","filter","data","attr","display","row","$row","targetHeight","style","verticalPadding","is","_applyDataApi","groups","$this","groupId","_update","event","throttle","type","windowWidth","width","setTimeout","on","validate","validator","settings","onsubmit","submitButton","currentTarget","hasClass","cancelSubmit","undefined","handle","hidden","result","submitHandler","formSubmitted","name","val","appendTo","currentForm","debug","call","preventDefault","form","pendingRequest","focusInvalid","console","warn","valid","errorList","element","concat","rules","command","argument","staticRules","existingRules","param","filtered","isContentEditable","closest","normalizeRule","messages","split","index","method","normalizeRules","classRules","attributeRules","dataRules","required","remote","called","trim","str","replace","expr","pseudos","blank","a","filled","unchecked","prop","defaults","init","format","source","params","arguments","args","makeArray","unshift","apply","constructor","Array","slice","i","n","RegExp","errorClass","pendingClass","validClass","errorElement","focusCleanup","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","excludedKeys","which","elementValue","inArray","keyCode","invalid","onclick","parentNode","highlight","findByName","addClass","removeClass","setDefaults","email","url","date","dateISO","number","digits","equalTo","maxlength","minlength","rangelength","range","max","min","step","autoCreateRanges","prototype","labelContainer","errorContext","containers","valueCache","pending","reset","delegate","eventType","invalidHandler","checkForm","errorMap","triggerHandler","showErrors","prepareForm","currentElements","check","rs","cleanElement","clean","checkElement","validationTargetFor","v","prepareElement","testgroup","numberOfInvalids","toHide","errors","map","message","successList","grep","defaultShowErrors","resetForm","hideErrors","removeData","removeAttr","resetElements","objectLength","obj","count","text","addWrapper","hide","size","findLastActive","trigger","e","rulesCache","find","error","selector","join","resetInternals","toShow","idx","$element","validity","badInput","substr","lastIndexOf","rule","normalizer","rulesCount","dependencyMismatch","abortRequest","parameters","methods","formatAndAdd","log","id","TypeError","customDataMessage","charAt","toUpperCase","substring","toLowerCase","customMessage","m","String","findDefined","defaultMessage","title","theregex","test","toToggle","wrapper","parent","showLabel","success","validElements","show","invalidElements","place","errorID","elementID","idOrName","describedBy","escapeHtml","html","wrap","append","errorPlacement","insertAfter","escapeCssMeta","match","describer","string","getLength","nodeName","depend","dependTypes","elementAjaxPort","startRequest","stopRequest","port","ajaxAbort","previousValue","old","destroy","off","classRuleSettings","creditcard","addClassRules","className","classes","normalizeAttributeRule","Number","isNaN","getAttribute","depends","keepRule","parameter","parts","isArray","transformed","addMethod","Date","toString","decimals","errorMessage","supportedTypes","re","decimalPlaces","num","toInt","round","pow","Error","optionDataString","previous","originalMessage","ajax","mode","dataType","context","response","pendingRequests","ajaxPrefilter","_","xhr","ajaxSettings","abort","module","exports","src","execScript","attachEvent","addEventListener","eval","jQuery","S2","select2","amd","requirejs","require","define","undef","main","req","makeMap","handlers","defined","waiting","config","defining","hasOwn","Object","hasOwnProperty","aps","jsSuffixRegExp","hasProp","normalize","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","j","part","baseParts","starMap","nodeIdCompat","splice","makeRequire","relName","forceSync","makeNormalize","makeLoad","depName","callDep","splitPrefix","prefix","indexOf","makeRelParts","makeConfig","relParts","plugin","relResourceName","f","pr","p","uri","deps","callback","cjsModule","ret","usingExports","callbackType","load","alt","cfg","_defined","_$","Utils","getMethods","theClass","proto","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","argCount","calledConstructor","ctr","displayName","superMethod","calledMethod","originalMethod","decoratedMethod","d","Observable","listeners","_type","invoke","len","generateChars","chars","random","bind","func","_convertData","originalKey","keys","dataLevel","k","hasScroll","el","$el","overflowX","overflowY","innerHeight","scrollHeight","innerWidth","scrollWidth","escapeMarkup","markup","replaceMap","appendMany","$nodes","jquery","$jqNodes","node","__cache","GetUniqueElementId","select2Id","setAttribute","StoreData","GetData","RemoveData","removeAttribute","Results","dataAdapter","render","$results","get","clear","empty","displayMessage","hideLoading","$message","hideMessages","$options","results","sort","item","$option","option","children","position","$dropdown","sorter","highlightFirstItem","$selected","first","ensureHighlightVisible","setClasses","self","current","selected","selectedIds","s","showLoading","loading","disabled","loadingMore","$loading","prepend","document","createElement","attrs","matches","Element","msMatchesSelector","webkitMatchesSelector","_resultId","role","label","template","$children","c","child","$child","$childrenContainer","container","$container","isOpen","$highlighted","getHighlightedResults","currentIndex","nextIndex","$next","eq","currentOffset","nextTop","nextOffset","nextBottom","mousewheel","bottom","deltaY","isAtTop","isAtBottom","height","stopPropagation","evt","originalEvent","offsetDelta","content","innerHTML","BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","update","_attachCloseHandler","_detachCloseHandler","activeElement","contains","body","$select","isEnabled","isDisabled","SingleSelection","$rendered","selectionContainer","selection","formatted","MultipleSelection","$selections","Placeholder","decorated","placeholder","normalizePlaceholder","createPlaceholder","$placeholder","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","$remove","Search","$search","$searchContainer","_transferTabIndex","_keyUpPrevented","isDefaultPrevented","$previousChoice","prev","searchRemoveChoice","msie","documentMode","disableInputEvents","handleSearch","searchHadFocus","resizeSearch","input","term","EventRelay","relayEvents","preventableEvents","Event","Translation","dict","all","translation","_cache","loadPath","path","translations","BaseAdapter","query","generateResultId","SelectAdapter","select","currentData","unselect","addOptions","textContent","innerText","normalizedData","_normalizeItem","matcher","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","q","transport","failure","$request","then","fail","_request","isFunction","request","status","delay","_queryTimeout","clearTimeout","Tags","tags","createTag","insertTag","t","tag","checkChildren","_removeOldTags","page","Tokenizer","tokenizer","dropdown","createAndSelect","tokenData","separators","termChar","MinimumInputLength","$e","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","successCallback","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","documentElement","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","x","scrollLeft","y","ev","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","left","$offsetParent","offsetParent","parentOffset","isConnected","outerWidth","minWidth","countResults","MinimumResultsForSearch","minimumResultsForSearch","Infinity","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","ctrlKey","metaKey","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","tokenSeparators","Query","amdBase","initSelection","InitSelection","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","dropdownCssClass","dropdownCss","adaptDropdownCssClass","DropdownCSS","selectionAdapter","allowClear","containerCssClass","containerCss","adaptContainerCssClass","ContainerCSS","language","_resolveLanguage","uniqueLanguages","l","_processTranslations","stripDiacritics","original","amdLanguageBase","dropdownAutoWidth","scrollAfterSelect","templateResult","templateSelection","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","isPlainObject","resolvedLanguages","baseLanguage","languageData","ex","set","camelCase","convertedData","Options","fromElement","InputCompat","excludedData","dir","dataset","upperCaseLetter","letter","attributes","attributeName","dataName","dataValue","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","_resolveWidth","WIDTH","styleWidth","elementWidth","getComputedStyle","_syncA","_syncS","_syncSubtree","observer","MutationObserver","WebKitMutationObserver","MozMutationObserver","_observer","mutations","observe","childList","subtree","nonRelayEvents","toggleDropdown","focus","altKey","close","open","_isChangeMutation","changed","addedNodes","removedNodes","mutation","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","detachEvent","disconnect","removeEventListener","thisMethods","instanceOptions","instance","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","Map","o","r","forEach","has","testForHeightReduction","startsWith","restoreTextAlign","delete","resize","textAlign","wordWrap","u","scrollBehavior","boxSizing","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","maxHeight","overflow","dispatchEvent","bubbles"],"sourceRoot":""}