{"version":3,"file":"application_admin-BjjQCICt.js","sources":["../../../app/javascript/modules/admin-navigation.js","../../../app/javascript/modules/admin-school-content.js","../../../node_modules/select2/dist/js/select2.js","../../../app/javascript/modules/article-category.js","../../../app/javascript/modules/course-progress.js","../../../app/javascript/modules/iframe-size-to-content.js","../../../app/javascript/modules/interactive-forms.js","../../../app/javascript/modules/pagination.js","../../../app/javascript/modules/school-switcher.js","../../../app/javascript/modules/course-select.js","../../../app/javascript/modules/teacher-dashboard.js","../../../app/javascript/modules/textarea-character-count.js","../../../app/javascript/modules/user-form.js","../../../app/javascript/entrypoints/application_admin.js"],"sourcesContent":["import $ from 'jquery';\n\n// NOTE: This is not perfect because it may run before the font is loaded, which\n// leads to slightly different sizes. However, it is generally close\n// enough (the currently selected item is in view) and avoids the vertical\n// scrolling associated with `.scrollIntoView({ inline: center })`.\n\nfunction scrollToSelected(scrollableNavSelector, selectedItemSelector) {\n const $nav = $(scrollableNavSelector);\n const $selected = $(selectedItemSelector, $nav);\n\n if (!$nav?.get(0) || !$selected?.get(0)) {\n return;\n }\n\n const selectedLeft = $selected[0].offsetLeft;\n const selectedWidth = $selected[0].offsetWidth;\n const parentWidth = $nav[0].offsetWidth;\n const desiredLeft = (parentWidth - selectedWidth) / 2;\n\n $nav[0].scrollLeft = selectedLeft - desiredLeft;\n}\n\nscrollToSelected('.masthead__nav', 'li.selected');\nscrollToSelected('.sub-nav', 'li.selected');\n","import $ from 'jquery';\n\n$('input[name=\"school[layout]\"]').on('change', () => {\n const layout = $('input[name=\"school[layout]\"]:checked').get(0).value;\n\n $('form.edit_school').attr('data-layout', layout);\n});\n","/*!\n * Select2 4.1.0-rc.0\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 // 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 with a prefix.\n // If an id already exists, it simply returns it with a prefix.\n\n var select2Id = element.getAttribute('data-select2-id');\n\n if (select2Id != null) {\n return select2Id;\n }\n\n // If element has id, use it.\n if (element.id) {\n select2Id = 'select2-data-' + element.id;\n } else {\n select2Id = 'select2-data-' + (++id).toString() +\n '-' + Utils.generateChars(4);\n }\n\n element.setAttribute('data-select2-id', select2Id);\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 Utils.copyNonInternalCssClasses = function (dest, src) {\n var classes;\n\n var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n\n destinationClasses = destinationClasses.filter(function (clazz) {\n // Save all Select2 classes\n return clazz.indexOf('select2-') === 0;\n });\n\n var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n\n sourceClasses = sourceClasses.filter(function (clazz) {\n // Only copy non-Select2 classes\n return clazz.indexOf('select2-') !== 0;\n });\n\n var replacements = destinationClasses.concat(sourceClasses);\n\n dest.setAttribute('class', replacements.join(' '));\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--selectable');\n\n var $selected = $options.filter('.select2-results__option--selected');\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 = selected.map(function (s) {\n return s.id.toString();\n });\n\n var $options = self.$results\n .find('.select2-results__option--selectable');\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 && selectedIds.indexOf(id) > -1)) {\n this.classList.add('select2-results__option--selected');\n $option.attr('aria-selected', 'true');\n } else {\n this.classList.remove('select2-results__option--selected');\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.classList.add('select2-results__option');\n option.classList.add('select2-results__option--selectable');\n\n var attrs = {\n 'role': 'option'\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 attrs['aria-disabled'] = 'true';\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--disabled');\n }\n\n if (data.id == null) {\n option.classList.remove('select2-results__option--selectable');\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\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--group');\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 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 'role': 'none'\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.hasClass('select2-results__option--selected')) {\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('.select2-results__option--selectable');\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('.select2-results__option--selectable');\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[0].classList.add('select2-results__option--highlighted');\n params.element[0].setAttribute('aria-selected', 'true');\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--selectable',\n function (evt) {\n var $this = $(this);\n\n var data = Utils.GetData(this, 'data');\n\n if ($this.hasClass('select2-results__option--selected')) {\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--selectable',\n function (evt) {\n var data = Utils.GetData(this, 'data');\n\n self.getHighlightedResults()\n .removeClass('select2-results__option--highlighted')\n .attr('aria-selected', 'false');\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('.select2-results__option--selectable');\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[0].classList.add('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 this.$selection.attr('aria-controls', 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[0].classList.add('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 var id = container.id + '-container';\n this.$selection.find('.select2-selection__rendered').attr('id', id);\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 this.$selection.on(\n 'keydown',\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 evt.stopPropagation();\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 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 var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')\n .attr('id') + '-choice-';\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 var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n if (selection.id) {\n selectionId += selection.id;\n } else {\n selectionId += Utils.generateChars(4);\n }\n\n $selection.find('.select2-selection__choice__display')\n .append(formatted)\n .attr('id', selectionId);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\n\n var removeItem = this.options.get('translations').get('removeItem');\n\n var $remove = $selection.find('.select2-selection__choice__remove');\n\n $remove.attr('title', removeItem());\n $remove.attr('aria-label', removeItem());\n $remove.attr('aria-describedby', selectionId);\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 $rendered.append($selections);\n };\n\n return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n\n], function () {\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[0].classList.add('select2-selection__placeholder');\n $placeholder[0].classList.remove('select2-selection__choice');\n\n var placeholderTitle = placeholder.title ||\n placeholder.text ||\n $placeholder.text();\n\n this.$selection.find('.select2-selection__rendered').attr(\n 'title',\n placeholderTitle\n );\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 this.$selection.find('.select2-selection__clear').remove();\n this.$selection[0].classList.remove('select2-selection--clearable');\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n data.length === 0) {\n return;\n }\n\n var selectionId = this.$selection.find('.select2-selection__rendered')\n .attr('id');\n\n var removeAll = this.options.get('translations').get('removeAllItems');\n\n var $remove = $(\n ''\n );\n $remove.attr('title', removeAll());\n $remove.attr('aria-label', removeAll());\n $remove.attr('aria-describedby', selectionId);\n Utils.StoreData($remove[0], 'data', data);\n\n this.$selection.prepend($remove);\n this.$selection[0].classList.add('select2-selection--clearable');\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 searchLabel = this.options.get('translations').get('search');\n var $search = $(\n '' +\n '' +\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('textarea');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n $rendered.append(this.$searchContainer);\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 var selectionId = container.id + '-container';\n\n decorated.call(this, container, $container);\n\n self.$search.attr('aria-describedby', selectionId);\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.resizeSearch();\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.$selection\n .find('.select2-selection__choice').last();\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.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 = '100%';\n\n if (this.$search.attr('placeholder') === '') {\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/selectionCss',[\n '../utils'\n], function (Utils) {\n function SelectionCSS () { }\n\n SelectionCSS.prototype.render = function (decorated) {\n var $selection = decorated.call(this);\n\n var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n if (selectionCssClass.indexOf(':all:') !== -1) {\n selectionCssClass = selectionCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n }\n\n $selection.addClass(selectionCssClass);\n\n return $selection;\n };\n\n return SelectionCSS;\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 (relayEvents.indexOf(name) === -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 (preventableEvents.indexOf(name) === -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 self = this;\n\n var data = Array.prototype.map.call(\n this.$element[0].querySelectorAll(':checked'),\n function (selectedElement) {\n return self.item($(selectedElement));\n }\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 (\n data.element != null && data.element.tagName.toLowerCase() === 'option'\n ) {\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 (val.indexOf(id) === -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 (\n data.element != null &&\n data.element.tagName.toLowerCase() === 'option'\n ) {\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 && val.indexOf(id) === -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 if (\n this.tagName.toLowerCase() !== 'option' &&\n this.tagName.toLowerCase() !== 'optgroup'\n ) {\n return;\n }\n\n var $option = $(this);\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 this.$element.append($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 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 var option = $option[0];\n\n if (option.tagName.toLowerCase() === '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.tagName.toLowerCase() === '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 (existingIds.indexOf(item.id) >= 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 $option.append($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 (typeof this._request.abort === 'function') {\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 || !Array.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 (Array.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 if (params.term == null) {\n return null;\n }\n\n var term = params.term.trim();\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 (separators.indexOf(termChar) === -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], function ($) {\n function Search () { }\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n var searchLabel = this.options.get('translations').get('search');\n\n var $search = $(\n '' +\n '' +\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\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[0].classList.remove('select2-search--hide');\n } else {\n self.$searchContainer[0].classList.add('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[0].classList.remove('select2');\n $dropdown[0].classList.add('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[0].classList\n .contains('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown[0].classList\n .contains('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[0].classList.remove('select2-dropdown--below');\n this.$dropdown[0].classList.remove('select2-dropdown--above');\n this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);\n\n this.$container[0].classList.remove('select2-container--below');\n this.$container[0].classList.remove('select2-container--above');\n this.$container[0].classList.add('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/dropdown/dropdownCss',[\n '../utils'\n], function (Utils) {\n function DropdownCSS () { }\n\n DropdownCSS.prototype.render = function (decorated) {\n var $dropdown = decorated.call(this);\n\n var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n if (dropdownCssClass.indexOf(':all:') !== -1) {\n dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n }\n\n $dropdown.addClass(dropdownCssClass);\n\n return $dropdown;\n };\n\n return DropdownCSS;\n});\n\nS2.define('select2/dropdown/tagsSearchHighlight',[\n '../utils'\n], function (Utils) {\n function TagsSearchHighlight () { }\n\n TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n var $options = this.$results\n .find(\n '.select2-results__option--selectable' +\n ':not(.select2-results__option--selected)'\n );\n\n if ($options.length > 0) {\n var $firstOption = $options.first();\n var data = Utils.GetData($firstOption[0], 'data');\n var firstElement = data.element;\n\n if (firstElement && firstElement.getAttribute) {\n if (firstElement.getAttribute('data-select2-tag') === 'true') {\n $firstOption.trigger('mouseenter');\n\n return;\n }\n }\n }\n\n decorated.call(this);\n };\n\n return TagsSearchHighlight;\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 removeItem: function () {\n return 'Remove item';\n },\n search: function() {\n return 'Search';\n }\n };\n});\n\nS2.define('select2/defaults',[\n 'jquery',\n\n './results',\n\n './selection/single',\n './selection/multiple',\n './selection/placeholder',\n './selection/allowClear',\n './selection/search',\n './selection/selectionCss',\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 './dropdown/dropdownCss',\n './dropdown/tagsSearchHighlight',\n\n './i18n/en'\n], function ($,\n\n ResultsList,\n\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\n SelectionSearch, SelectionCSS, 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 DropdownCSS, TagsSearchHighlight,\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\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 if (options.tags) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n TagsSearchHighlight\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 (options.dropdownCssClass != null) {\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 (options.selectionCssClass != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionCSS\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 (params.term == null || params.term.trim() === '') {\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 amdLanguageBase: './i18n/',\n autocomplete: 'off',\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 (!Array.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 'jquery',\n './defaults',\n './utils'\n], function ($, 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\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.autocomplete == null && $e.prop('autocomplete')) {\n this.options.autocomplete = $e.prop('autocomplete');\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 (excludedData.indexOf(key) > -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[0].classList.add('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 this._observer = new window.MutationObserver(function (mutations) {\n self._syncA();\n self._syncS(mutations);\n });\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\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 (nonRelayEvents.indexOf(name) !== -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[0].classList.add('select2-container--open');\n });\n\n this.on('close', function () {\n self.$container[0].classList.remove('select2-container--open');\n });\n\n this.on('enable', function () {\n self.$container[0].classList.remove('select2-container--disabled');\n });\n\n this.on('disable', function () {\n self.$container[0].classList.add('select2-container--disabled');\n });\n\n this.on('blur', function () {\n self.$container[0].classList.remove('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.UP && evt.altKey)) {\n self.close(evt);\n\n evt.preventDefault();\n } else if (key === KEYS.ENTER || key === KEYS.TAB) {\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 (mutations) {\n var self = this;\n\n 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 return true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n return true;\n } else if (Array.isArray(mutations)) {\n return mutations.some(function (mutation) {\n return self._isChangeMutation(mutation);\n });\n }\n\n return false;\n };\n\n Select2.prototype._syncSubtree = function (mutations) {\n var changed = this._isChangeMutation(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[0].classList.contains('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container[0].classList.contains('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[0].classList.add('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 (Array.isArray(newVal)) {\n newVal = newVal.map(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 Utils.RemoveData(this.$container[0]);\n this.$container.remove();\n\n this._observer.disconnect();\n this._observer = null;\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[0].classList.remove('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[0].classList\n .add('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 (thisMethods.indexOf(options) > -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","import $ from 'jquery';\nimport select2 from 'select2';\n\nselect2(); // Sort of a hack to get \"side-effect\" import working with vite\n\n$('.js-article-category').select2({\n allowClear: true,\n dropdownCssClass: 'selectTwo__dropdown',\n tags: true,\n // NOTE: non-breaking space to prevent input height from collapsing\n placeholder: ' ',\n selectionCssClass: 'selectTwo__input form-control',\n width: 'resolve',\n});\n\n$('.select2').attr('data-refresh-dir', 'true');\n","import $ from 'jquery';\n\n$('button.grading__question-summary-row').on('click', event => {\n const group = event.currentTarget.closest('.grading__question');\n\n $('.grading__icon-group', group).toggleClass('grading__icon-group--collapsed');\n $('.grading__details-row', group).slideToggle(200);\n});\n","document.addEventListener('DOMContentLoaded', () => {\n document.querySelectorAll('.iframe-size-to-content').forEach(iframe => {\n iframe.addEventListener('load', () => {\n // eslint-disable-next-line no-param-reassign\n iframe.style.height = `${iframe.contentDocument.body.scrollHeight}px`;\n });\n });\n});\n","/* global CKEDITOR */\nimport $ from 'jquery';\n\n// TODO: Get from Rails, since it is the main source.\nconst rtlLocales = ['ar'];\n\nconst reloadCkeditor = (input, locale, dir) => {\n if (typeof CKEDITOR !== 'undefined') {\n if (CKEDITOR.instances[input.id]) {\n CKEDITOR.instances[input.id].destroy();\n }\n CKEDITOR.replace(input.id, {\n ...input.dataset,\n contentsLangDirection: dir,\n contentsLanguage: locale,\n });\n }\n};\n\n/** Load ckeditors on startup */\n$('[data-ckeditor]').each((_index, input) => {\n reloadCkeditor(\n input,\n input.dataset.contentsLanguage,\n input.dataset.contentsLangDirection,\n );\n});\n\n/**\n * Switch direction on inputs when the locale input changes.\n * In the HTML form, add 'data-locale-input' attribute to locale inputs and\n * 'data-refresh-dir' to any inputs which should update their direction based on\n * the locale.\n */\n$('[data-locale-input]').on('change', event => {\n const locale = event.target.value;\n const dir = rtlLocales.includes(locale) ? 'rtl' : null;\n\n $('[data-refresh-dir]').each((_index, input) => {\n $(input).attr('dir', dir);\n });\n\n $('[data-ckeditor][data-refresh-dir]').each((_index, input) => {\n reloadCkeditor(input, locale, dir);\n });\n});\n","import $ from 'jquery';\n\nconst $paginationRowsSelect = $('.pagination-rows-select');\n\nif ($paginationRowsSelect.length > 0) {\n // Set value shown in dropdown to match search params\n const perPage = (new URL(window.location)).searchParams.get('per_page') || '20';\n $paginationRowsSelect.find(`option[value=\"${perPage}\"]`).attr('selected', true);\n\n // Handle 'rows per page' change\n $paginationRowsSelect.on('change', 'select', event => {\n const uri = new URL(window.location);\n const search = (new URL(window.location)).searchParams;\n\n search.set('per_page', event.target.value);\n uri.search = search.toString();\n\n window.location.href = uri.toString();\n });\n}\n","const form = document.forms.school_switcher;\n\nif (form) {\n const field = document.getElementById('school_switch_id');\n field.addEventListener('change', () => form.submit());\n}\n","import $ from 'jquery';\n\nconst $form = $('.js-course-select');\n\n$form.on('change', 'select', () => $form.submit());\n","import $ from 'jquery';\n\n$('button.dashboard-list__summary').on('click', event => {\n const group = event.currentTarget.closest('.dashboard-list__group');\n\n $('.dashboard-list__icon-group', event.currentTarget)\n .toggleClass('dashboard-list__icon-group--collapsed');\n $('.dashboard-list__details', group).slideToggle(200);\n});\n","import $ from 'jquery';\n\n$('[data-count-characters]').each((_, input) => {\n const $target = $('[data-count-characters-template]', input.parentElement);\n const setText = length => $target.text(\n $target[0].dataset.countCharactersTemplate.replace('{{count}}', length),\n );\n\n // Set initial value\n setText(input.value.length);\n\n $(input).on('keyup', event => setText(event.target.value.length));\n});\n","import $ from 'jquery';\n\nconst changeAuthorizationVisibility = value => {\n const authorizationsElement = $('.users__course-authorizations');\n\n if (value === 'editor') {\n authorizationsElement.show();\n } else {\n authorizationsElement.hide();\n }\n};\n\n$('#user_role')\n .each((_index, el) => changeAuthorizationVisibility(el.value))\n .on('change', event => changeAuthorizationVisibility(event.target.value));\n","import Rails from '@rails/ujs';\nimport '../modules/bootstrap';\nimport '../modules/admin-navigation';\nimport '../modules/admin-school-content';\nimport '../modules/article-category';\nimport '../modules/course-progress';\nimport '../modules/date-converter';\nimport '../modules/iframe-size-to-content';\nimport '../modules/interactive-forms';\nimport '../modules/pagination';\nimport '../modules/school-switcher';\nimport '../modules/course-select';\nimport '../modules/teacher-dashboard';\nimport '../modules/textarea-character-count';\nimport '../modules/user-form';\n\nif (!window.Rails) Rails.start();\n"],"names":["scrollToSelected","scrollableNavSelector","selectedItemSelector","$nav","$","$selected","selectedLeft","selectedWidth","desiredLeft","layout","factory","module","root","jQuery","require$$0","S2","require","requirejs","define","undef","main","req","makeMap","handlers","defined","waiting","config","defining","hasOwn","aps","jsSuffixRegExp","hasProp","obj","prop","normalize","name","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","i","j","part","normalizedBaseParts","baseParts","map","starMap","makeRequire","relName","forceSync","args","makeNormalize","makeLoad","depName","value","callDep","splitPrefix","prefix","index","makeRelParts","relParts","plugin","parts","relResourceName","makeConfig","e","deps","callback","cjsModule","ret","callbackType","usingExports","alt","cfg","_$","Utils","ChildClass","SuperClass","__hasProp","BaseConstructor","key","getMethods","theClass","proto","methods","methodName","m","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","unshift","argCount","calledConstructor","ctr","superMethod","calledMethod","originalMethod","decoratedMethod","d","Observable","event","slice","params","listeners","len","length","chars","randomChar","func","context","data","originalKey","keys","dataLevel","k","el","$el","overflowX","overflowY","markup","replaceMap","match","id","element","select2Id","dest","src","destinationClasses","clazz","sourceClasses","replacements","Results","$element","options","dataAdapter","$results","escapeMarkup","$message","message","$options","item","$option","$dropdown","$resultsContainer","sorter","self","selected","selectedIds","s","loadingMore","loading","$loading","option","attrs","matches","attr","val","label","$children","c","child","$child","$childrenContainer","container","$container","$highlighted","currentIndex","nextIndex","$next","currentOffset","nextTop","nextOffset","nextBottom","top","bottom","isAtTop","isAtBottom","evt","$this","offsetDelta","result","template","content","KEYS","BaseSelection","$selection","resultsId","$target","$select","$all","$selectionContainer","SingleSelection","$rendered","selection","formatted","title","MultipleSelection","$remove","$selections","selectionIdPrefix","selectionId","removeItem","Placeholder","decorated","_","placeholder","$placeholder","placeholderTitle","singlePlaceholder","multipleSelections","AllowClear","$clear","previousVal","unselectData","removeAll","Search","searchLabel","$search","$previousChoice","msie","disableInputEvents","searchHadFocus","input","width","minimumWidth","SelectionCSS","selectionCssClass","EventRelay","relayEvents","preventableEvents","Translation","dict","translation","path","translations","diacritics","BaseAdapter","SelectAdapter","selectedElement","currentData","normalizedData","children","defaults","matcher","ArrayAdapter","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","AjaxAdapter","success","failure","$request","results","request","Tags","tags","createTag","insertTag","t","tag","wrapper","checkChildren","optionText","paramsTerm","checkText","term","Tokenizer","tokenizer","createAndSelect","$existingOptions","select","tokenData","separators","termChar","partParams","MinimumInputLength","$e","MaximumInputLength","MaximumSelectionLength","successCallback","count","Dropdown","showSearch","HidePlaceholder","modifiedData","InfiniteScroll","isLoadMoreVisible","loadingMoreOffset","AttachBody","scrollEvent","resizeEvent","orientationEvent","$watchers","ev","position","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","offset","dropdown","viewport","enoughRoomAbove","enoughRoomBelow","css","$offsetParent","parentOffset","countResults","MinimumResultsForSearch","SelectOnClose","$highlightedResults","CloseOnSelect","originalEvent","DropdownCSS","dropdownCssClass","TagsSearchHighlight","$firstOption","firstElement","overChars","remainingChars","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","SearchableDropdown","uniqueLanguages","l","language","stripDiacritics","text","a","original","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","resolvedLanguages","languageParts","baseLanguage","debug","languageData","ex","camelKey","convertedData","Options","excludedData","dataset","upperCaseLetter","letter","attributeName","dataName","dataValue","camelDataName","Select2","tabindex","DataAdapter","SelectionAdapter","DropdownAdapter","ResultsAdapter","initialData","method","WIDTH","styleWidth","elementWidth","style","computedStyle","mutations","nonRelayEvents","n","node","mutation","changed","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","disabled","newVal","thisMethods","instanceOptions","instance","select2","group","iframe","rtlLocales","reloadCkeditor","locale","dir","_index","$paginationRowsSelect","perPage","uri","search","form","$form","setText","changeAuthorizationVisibility","authorizationsElement","Rails"],"mappings":"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,CACf,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,IAAU,IACV,IAAU,IACV,IAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,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,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,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,IAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,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,IAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,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,IAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,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,IAAU,IACV,IAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,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,IAAU,IACV,IAAU,IACV,IAAU,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,IAAU,IACV,IAAU,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,IAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,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,IAAU,IACV,IAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,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,IAAU,IACV,EAAU,IACV,IAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,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,IAAU,IACV,IAAU,IACV,IAAU,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,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,IAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,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,IAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,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,IAAU,IACV,IAAU,IACV,IAAU,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,IAAU,IACV,IAAU,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,IAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,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,IAAU,IACV,IAAU,IACV,IAAU,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,IAAU,IACV,IAAU,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,IAAU,IACV,IAAU,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,IAAU,IACV,EAAU,IACV,IAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,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,IAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,IAAU,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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","x_google_ignoreList":[2]}