{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"jQuery\"","webpack:///./vendor/assets/libs/select2/select2.js","webpack:///./node_modules/select2/dist/js/select2.full.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","_typeof","iterator","obj","constructor","jQuery","S2","fn","select2","amd","requirejs","require","define","undef","main","_req","makeMap","handlers","defined","waiting","config","defining","hasOwn","aps","slice","jsSuffixRegExp","hasProp","prop","normalize","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","j","part","baseParts","split","map","starMap","length","nodeIdCompat","test","replace","charAt","concat","splice","join","makeRequire","relName","forceSync","args","arguments","push","apply","makeLoad","depName","callDep","Error","splitPrefix","prefix","index","indexOf","substring","makeRelParts","makeConfig","relParts","plugin","parts","relResourceName","f","pr","e","id","uri","deps","callback","cjsModule","ret","usingExports","callbackType","load","undefined","alt","setTimeout","cfg","_defined","_$","$","console","error","Utils","getMethods","theClass","proto","methods","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","this","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","unshift","Array","argCount","calledConstructor","displayName","superMethod","calledMethod","originalMethod","decoratedMethod","Observable","listeners","on","event","trigger","params","_type","invoke","len","generateChars","chars","Math","floor","random","toString","func","context","_convertData","data","originalKey","keys","dataLevel","k","toLowerCase","hasScroll","el","$el","overflowX","style","overflowY","innerHeight","scrollHeight","innerWidth","scrollWidth","escapeMarkup","markup","replaceMap","'","String","match","appendMany","$element","$nodes","jquery","substr","$jqNodes","node","add","append","__cache","GetUniqueElementId","element","select2Id","getAttribute","setAttribute","StoreData","GetData","RemoveData","removeAttribute","Results","options","dataAdapter","render","$results","attr","clear","empty","displayMessage","hideLoading","$message","message","className","hideMessages","find","remove","$options","results","sort","item","$option","option","children","position","$dropdown","sorter","highlightFirstItem","$selected","filter","first","ensureHighlightVisible","setClasses","self","current","selected","selectedIds","each","inArray","showLoading","loading","disabled","text","loadingMore","$loading","prepend","document","createElement","attrs","matches","Element","msMatchesSelector","webkitMatchesSelector","_resultId","title","role","val","label","template","$children","child","$child","$childrenContainer","container","$container","isOpen","removeAttr","$highlighted","getHighlightedResults","currentIndex","nextIndex","$next","eq","currentOffset","offset","top","nextTop","nextOffset","scrollTop","outerHeight","nextBottom","addClass","mousewheel","bottom","deltaY","isAtTop","isAtBottom","height","preventDefault","stopPropagation","evt","$this","originalEvent","removeClass","destroy","offsetDelta","result","content","display","innerHTML","BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","which","update","_attachCloseHandler","_detachCloseHandler","activeElement","contains","body","$select","target","closest","off","isEnabled","isDisabled","SingleSelection","html","$rendered","selectionContainer","selection","formatted","MultipleSelection","parent","$selections","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","$remove","Search","$search","$searchContainer","_transferTabIndex","_keyUpPrevented","isDefaultPrevented","$previousChoice","prev","searchRemoveChoice","msie","documentMode","disableInputEvents","type","handleSearch","searchHadFocus","resizeSearch","input","term","css","width","EventRelay","relayEvents","preventableEvents","Event","Translation","dict","all","extend","translation","_cache","loadPath","path","translations","BaseAdapter","query","generateResultId","SelectAdapter","select","is","currentData","unselect","addOptions","textContent","innerText","normalizedData","_normalizeItem","matcher","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","defaults","q","transport","success","failure","$request","ajax","then","fail","_request","isFunction","abort","request","isArray","status","url","delay","_queryTimeout","clearTimeout","Tags","tags","createTag","insertTag","tag","_removeOldTags","page","wrapper","checkChildren","toUpperCase","trim","Tokenizer","tokenizer","dropdown","tokenData","separators","termChar","MinimumInputLength","$e","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","successCallback","count","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","documentElement","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","parents","x","scrollLeft","y","ev","$window","isCurrentlyAbove","hasClass","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","left","$offsetParent","offsetParent","parentOffset","isConnected","outerWidth","minWidth","appendTo","MinimumResultsForSearch","minimumResultsForSearch","Infinity","countResults","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","ctrlKey","metaKey","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","reset","tokenSeparators","Query","amdBase","initSelection","InitSelection","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","dropdownCssClass","dropdownCss","adaptDropdownCssClass","DropdownCSS","selectionAdapter","allowClear","containerCssClass","containerCss","adaptContainerCssClass","ContainerCSS","language","_resolveLanguage","uniqueLanguages","_processTranslations","debug","stripDiacritics","a","amdLanguageBase","dropdownAutoWidth","original","scrollAfterSelect","templateResult","templateSelection","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","isPlainObject","resolvedLanguages","baseLanguage","languageData","ex","warn","set","camelCase","convertedData","Options","fromElement","InputCompat","excludedData","dir","dataset","upperCaseLetter","letter","attributes","attributeName","dataName","dataValue","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","insertAfter","_resolveWidth","method","WIDTH","styleWidth","elementWidth","getComputedStyle","_syncA","_syncS","_syncSubtree","attachEvent","observer","MutationObserver","WebKitMutationObserver","MozMutationObserver","_observer","mutations","observe","childList","subtree","addEventListener","nonRelayEvents","toggleDropdown","focus","altKey","close","open","_isChangeMutation","changed","nodeName","addedNodes","removedNodes","mutation","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","detachEvent","disconnect","removeEventListener","removeData","syncCssClasses","$dest","$src","adapter","classes","adapted","replacements","CompatUtils","_containerAdapter","clazz","containerCssAdapter","_cssAdapter","_dropdownAdapter","dropdownCssAdapter","_isInitialized","InputData","_currentData","_valueSeparator","getSelected","allData","values","AttachContainer","StopPropagation","factory","nullLowestDeltaTimeout","lowestDelta","toFix","toBind","fixHooks","mouseHooks","special","version","setup","handler","onmousewheel","getLineHeight","getPageHeight","teardown","elem","$elem","$parent","parseInt","settings","adjustOldDeltas","normalizeOffset","orgEvent","delta","deltaX","absDelta","offsetX","offsetY","fix","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaMode","lineHeight","pageHeight","max","abs","shouldAdjustOldDeltas","getBoundingClientRect","boundingRect","clientX","clientY","deltaFactor","nullLowestDelta","dispatch","handle","unmousewheel","unbind","thisMethods","instanceOptions","instance"],"mappings":"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IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAQ,KACR,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAQ,IACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,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","file":"js/vendor/libs/select2/select2-6281bdbf851511f28421.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://optimal.seneris.com/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 912);\n","(function() { module.exports = window[\"jQuery\"]; }());","import 'select2/dist/js/select2.full.js'\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * Select2 4.0.13\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;\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 === \"undefined\" ? \"undefined\" : _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 } else {\n jQuery = require('jquery')(root);\n }\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 }\n\n var S2;\n\n (function () {\n if (!S2 || !S2.requirejs) {\n if (!S2) {\n S2 = {};\n } else {\n require = S2;\n }\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\n /*global setTimeout: false */\n\n\n var requirejs, require, define;\n\n (function (undef) {\n var main,\n _req,\n makeMap,\n 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 * 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\n\n function normalize(name, baseName) {\n var nameParts,\n nameSegment,\n mapValue,\n foundMap,\n lastIndex,\n foundI,\n foundStarMap,\n starI,\n i,\n j,\n part,\n normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = map && map['*'] || {}; //Adjust any relative paths.\n\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1; // 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\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n } // Starts with a '.' so need the baseName\n\n\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 } //start trimDots\n\n\n for (i = 0; i < name.length; i++) {\n part = name[i];\n\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 } //end trimDots\n\n\n name = name.join('/');\n } //Apply map config if available.\n\n\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('/')]; //baseName segment has config, find if it has one for\n //this name.\n\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n\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 } //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\n\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); //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\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\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\n return defined[name];\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\n\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n\n return [prefix, name];\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\n\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\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\n\n makeMap = function makeMap(name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n } //Normalize according\n\n\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\n if (prefix) {\n plugin = callDep(prefix);\n }\n } //Using ridiculous property names for space reasons\n\n\n return {\n f: prefix ? prefix + '!' + name : name,\n //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 require(name) {\n return makeRequire(name);\n },\n exports: function exports(name) {\n var e = defined[name];\n\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return defined[name] = {};\n }\n },\n module: function module(name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function main(name, deps, callback, relName) {\n var cjsModule,\n depName,\n ret,\n map,\n i,\n relParts,\n args = [],\n callbackType = _typeof(callback),\n usingExports; //Use name if no relName\n\n\n relName = relName || name;\n relParts = makeRelParts(relName); //Call the callback to define the module, if necessary.\n\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\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f; //Fast path CommonJS standard dependencies.\n\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) || hasProp(waiting, depName) || 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 && 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 req(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 } //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\n\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\n if (config.deps) {\n _req(config.deps, config.callback);\n }\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 } //Support require(['a'])\n\n\n callback = callback || function () {}; //If relName is a function, it is an errback handler,\n //so remove it.\n\n\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n } //Simulate async callback;\n\n\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 * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n\n\n _req.config = function (cfg) {\n return _req(cfg);\n };\n /**\n * Expose module registry for debugging and tooling\n */\n\n\n requirejs._defined = defined;\n\n define = function define(name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n } //This module may not have dependencies\n\n\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\n S2.requirejs = requirejs;\n S2.require = require;\n S2.define = define;\n }\n })();\n\n S2.define(\"almond\", function () {});\n /* global jQuery:false, $:false */\n\n S2.define('jquery', [], function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error('Select2: An instance of jQuery or a jQuery-compatible library was not ' + 'found. Make sure that you are including jQuery before Select2 on your ' + 'web page.');\n }\n\n return _$;\n });\n S2.define('select2/utils', ['jquery'], 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 return ChildClass;\n };\n\n function getMethods(theClass) {\n var proto = theClass.prototype;\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 var argCount = DecoratorClass.prototype.constructor.length;\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\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 DecoratedClass.prototype[superMethod] = SuperClass.prototype[superMethod];\n }\n\n var calledMethod = function calledMethod(methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function originalMethod() {};\n\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n return function () {\n var unshift = Array.prototype.unshift;\n unshift.call(arguments, originalMethod);\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function Observable() {\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 this.listeners = this.listeners || {}; // Params should always come in as an array\n\n if (params == null) {\n params = [];\n } // If there are no arguments to the event, use a temporary object\n\n\n if (params.length === 0) {\n params.push({});\n } // Set the `_type` of the first object to the event\n\n\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 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]; // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n\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 var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY; //Check both x and y declarations\n\n if (overflowX === overflowY && (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 || $el.innerWidth() < el.scrollWidth;\n };\n\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n }; // Do not try to escape the markup if it's not a string\n\n if (typeof markup !== 'string') {\n return markup;\n }\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n }; // Append an array of jQuery nodes to a given element.\n\n\n Utils.appendMany = function ($element, $nodes) {\n // jQuery 1.7.x does not support $.fn.append() with an array\n // Fall back to a jQuery object collection using $.fn.add()\n if ($.fn.jquery.substr(0, 3) === '1.7') {\n var $jqNodes = $();\n $.map($nodes, function (node) {\n $jqNodes = $jqNodes.add(node);\n });\n $nodes = $jqNodes;\n }\n\n $element.append($nodes);\n }; // Cache objects in Utils.__cache instead of $.data (see #4346)\n\n\n Utils.__cache = {};\n var id = 0;\n\n Utils.GetUniqueElementId = function (element) {\n // Get a unique element Id. If element has no id,\n // creates a new unique number, stores it in the id\n // attribute and returns the new id.\n // If an id already exists, it simply returns it.\n var select2Id = element.getAttribute('data-select2-id');\n\n if (select2Id == null) {\n // If element has id, use it.\n if (element.id) {\n select2Id = element.id;\n element.setAttribute('data-select2-id', select2Id);\n } else {\n element.setAttribute('data-select2-id', ++id);\n select2Id = id.toString();\n }\n }\n\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\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\n if (name) {\n if (Utils.__cache[id]) {\n if (Utils.__cache[id][name] != null) {\n return Utils.__cache[id][name];\n }\n\n return $(element).data(name); // Fallback to HTML5 data attribs.\n }\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\n if (Utils.__cache[id] != null) {\n delete Utils.__cache[id];\n }\n\n element.removeAttribute('data-select2-id');\n };\n\n return Utils;\n });\n S2.define('select2/results', ['jquery', './utils'], 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 if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\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 this.clear();\n this.hideLoading();\n var $message = $('
  • ');\n var message = this.options.get('translations').get(params.message);\n $message.append(escapeMarkup(message(params.args)));\n $message[0].className += ' select2-results__message';\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 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 var $option = this.option(item);\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 return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results.find('.select2-results__option[aria-selected]');\n var $selected = $options.filter('[aria-selected=true]'); // Check if there are any selected options\n\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 this.data.current(function (selected) {\n var selectedIds = $.map(selected, function (s) {\n return s.id.toString();\n });\n var $options = self.$results.find('.select2-results__option[aria-selected]');\n $options.each(function () {\n var $option = $(this);\n var item = Utils.GetData(this, 'data'); // id needs to be converted to a string when comparing\n\n var id = '' + item.id;\n\n if (item.element != null && item.element.selected || item.element == null && $.inArray(id, selectedIds) > -1) {\n $option.attr('aria-selected', 'true');\n } else {\n $option.attr('aria-selected', 'false');\n }\n });\n });\n };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n var loadingMore = this.options.get('translations').get('searching');\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 this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.className = 'select2-results__option';\n var attrs = {\n 'role': 'option',\n 'aria-selected': 'false'\n };\n var matches = window.Element.prototype.matches || window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector;\n\n if (data.element != null && matches.call(data.element, ':disabled') || data.element == null && data.disabled) {\n delete attrs['aria-selected'];\n attrs['aria-disabled'] = 'true';\n }\n\n if (data.id == null) {\n delete attrs['aria-selected'];\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n delete attrs['aria-selected'];\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n var $label = $(label);\n this.template(data, label);\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n var $child = this.option(child);\n $children.push($child);\n }\n\n var $childrenContainer = $('', {\n 'class': 'select2-results__options select2-results__options--nested'\n });\n $childrenContainer.append($children);\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n\n Utils.StoreData(option, 'data', data);\n return option;\n };\n\n Results.prototype.bind = function (container, $container) {\n var self = this;\n var id = container.id + '-results';\n this.$results.attr('id', id);\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 container.on('results:append', function (params) {\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\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 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 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 self.setClasses();\n self.ensureHighlightVisible();\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 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 container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var data = Utils.GetData($highlighted[0], 'data');\n\n if ($highlighted.attr('aria-selected') == 'true') {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n var $options = self.$results.find('[aria-selected]');\n var currentIndex = $options.index($highlighted); // If we are already at the top, don't move further\n // If no options, currentIndex will be -1\n\n if (currentIndex <= 0) {\n return;\n }\n\n var nextIndex = currentIndex - 1; // If none are highlighted, highlight the first\n\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n\n var $next = $options.eq(nextIndex);\n $next.trigger('mouseenter');\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 container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n var $options = self.$results.find('[aria-selected]');\n var currentIndex = $options.index($highlighted);\n var nextIndex = currentIndex + 1; // If we are at the last option, stay there\n\n if (nextIndex >= $options.length) {\n return;\n }\n\n var $next = $options.eq(nextIndex);\n $next.trigger('mouseenter');\n var currentOffset = self.$results.offset().top + 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 container.on('results:focus', function (params) {\n params.element.addClass('select2-results__option--highlighted');\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 var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\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 e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(self.$results.get(0).scrollHeight - self.$results.height());\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n\n this.$results.on('mouseup', '.select2-results__option[aria-selected]', function (evt) {\n var $this = $(this);\n var data = Utils.GetData(this, 'data');\n\n if ($this.attr('aria-selected') === 'true') {\n if (self.options.get('multiple')) {\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n } else {\n self.trigger('close', {});\n }\n\n return;\n }\n\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n this.$results.on('mouseenter', '.select2-results__option[aria-selected]', function (evt) {\n var data = Utils.GetData(this, 'data');\n self.getHighlightedResults().removeClass('select2-results__option--highlighted');\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.find('.select2-results__option--highlighted');\n return $highlighted;\n };\n\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var $options = this.$results.find('[aria-selected]');\n var currentIndex = $options.index($highlighted);\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\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 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 S2.define('select2/keys', [], 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 return KEYS;\n });\n S2.define('select2/selection/base', ['jquery', '../utils', '../keys'], 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 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 this.$selection = $selection;\n return $selection;\n };\n\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n var resultsId = container.id + '-results';\n this.container = container;\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\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 container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n container.on('selection:update', function (params) {\n self.update(params.data);\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 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 self.$selection.trigger('focus');\n\n self._detachCloseHandler(container);\n });\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\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; // This needs to be delayed as the active element is the body when the tab\n // key is pressed, possibly along with others.\n\n window.setTimeout(function () {\n // Don't trigger `blur` if the focus is still in the selection\n if (document.activeElement == self.$selection[0] || $.contains(self.$selection[0], document.activeElement)) {\n return;\n }\n\n self.trigger('blur', evt);\n }, 1);\n };\n\n BaseSelection.prototype._attachCloseHandler = function (container) {\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n var $select = $target.closest('.select2');\n var $all = $('.select2.select2-container--open');\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n\n var $element = Utils.GetData(this, 'element');\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 * 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\n\n BaseSelection.prototype.isEnabled = function () {\n return !this.isDisabled();\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\n\n BaseSelection.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n return BaseSelection;\n });\n S2.define('select2/selection/single', ['jquery', './base', '../utils', '../keys'], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection() {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(SingleSelection, BaseSelection);\n\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n\n $selection.addClass('select2-selection--single');\n $selection.html('' + '' + '' + '');\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 this.$selection.find('.select2-selection__rendered').attr('id', id).attr('role', 'textbox').attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\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 this.$selection.on('focus', function (evt) {// User focuses on the container\n });\n this.$selection.on('blur', function (evt) {// User exits the container\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 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 var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n $rendered.empty().append(formatted);\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 S2.define('select2/selection/multiple', ['jquery', './base', '../utils'], function ($, BaseSelection, Utils) {\n function MultipleSelection($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(MultipleSelection, BaseSelection);\n\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n\n $selection.addClass('select2-selection--multiple');\n $selection.html('');\n return $selection;\n };\n\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n MultipleSelection.__super__.bind.apply(this, arguments);\n\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n this.$selection.on('click', '.select2-selection__choice__remove', 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 var data = Utils.GetData($selection[0], 'data');\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\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 return escapeMarkup(template(data, container));\n };\n\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $('
  • ' + '' + '×' + '' + '
  • ');\n return $container;\n };\n\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var $selections = [];\n\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n $selection.append(formatted);\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\n\n Utils.StoreData($selection[0], 'data', selection);\n $selections.push($selection);\n }\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n Utils.appendMany($rendered, $selections);\n };\n\n return MultipleSelection;\n });\n S2.define('select2/selection/placeholder', ['../utils'], function (Utils) {\n function Placeholder(decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\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 $placeholder.html(this.display(placeholder));\n $placeholder.addClass('select2-selection__placeholder').removeClass('select2-selection__choice');\n return $placeholder;\n };\n\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = data.length == 1 && data[0].id != this.placeholder.id;\n var multipleSelections = data.length > 1;\n\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n\n this.clear();\n var $placeholder = this.createPlaceholder(this.placeholder);\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n\n return Placeholder;\n });\n S2.define('select2/selection/allowClear', ['jquery', '../keys', '../utils'], function ($, KEYS, Utils) {\n function AllowClear() {}\n\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\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('Select2: The `allowClear` option should be used in combination ' + 'with the `placeholder` option.');\n }\n }\n\n this.$selection.on('mousedown', '.select2-selection__clear', function (evt) {\n self._handleClear(evt);\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'); // Ignore the event if nothing has been selected\n\n if ($clear.length === 0) {\n return;\n }\n\n evt.stopPropagation();\n var data = Utils.GetData($clear[0], 'data');\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n var unselectData = {\n data: data\n };\n this.trigger('clear', unselectData);\n\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 }; // Trigger the `unselect` event, so people can prevent it from being\n // cleared.\n\n this.trigger('unselect', unselectData); // If the event was prevented, don't clear it out.\n\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n }\n\n this.$element.trigger('input').trigger('change');\n this.trigger('toggle', {});\n };\n\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 || data.length === 0) {\n return;\n }\n\n var removeAll = this.options.get('translations').get('removeAllItems');\n var $remove = $('' + '×' + '');\n Utils.StoreData($remove[0], 'data', data);\n this.$selection.find('.select2-selection__rendered').prepend($remove);\n };\n\n return AllowClear;\n });\n S2.define('select2/selection/search', ['jquery', '../utils', '../keys'], function ($, Utils, KEYS) {\n function Search(decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n Search.prototype.render = function (decorated) {\n var $search = $('');\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var resultsId = container.id + '-results';\n decorated.call(this, container, $container);\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\n container.on('close', function () {\n self.$search.val('');\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n\n self._transferTabIndex();\n });\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\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 this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n self.trigger('keypress', evt);\n self._keyUpPrevented = evt.isDefaultPrevented();\n var key = evt.which;\n\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$searchContainer.prev('.select2-selection__choice');\n\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n self.searchRemoveChoice(item);\n evt.preventDefault();\n }\n }\n });\n this.$selection.on('click', '.select2-search--inline', function (evt) {\n if (self.$search.val()) {\n evt.stopPropagation();\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\n var msie = document.documentMode;\n var disableInputEvents = msie && msie <= 11; // 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\n this.$selection.on('input.searchcheck', '.select2-search--inline', 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 } // Unbind the duplicated `keyup` event\n\n\n self.$selection.off('keyup.search');\n });\n this.$selection.on('keyup.search input.search', '.select2-search--inline', 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; // We can freely ignore events from modifier keys\n\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n return;\n } // Tabbing will be handled during the `keydown` phase\n\n\n if (key == KEYS.TAB) {\n return;\n }\n\n self.handleSearch(evt);\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\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 this.$search.attr('placeholder', '');\n decorated.call(this, data);\n this.$selection.find('.select2-selection__rendered').append(this.$searchContainer);\n this.resizeSearch();\n\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 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 this.$search.val(item.text);\n this.handleSearch();\n };\n\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n var width = '';\n\n if (this.$search.attr('placeholder') !== '') {\n width = this.$selection.find('.select2-selection__rendered').width();\n } else {\n var minimumWidth = this.$search.val().length + 1;\n width = minimumWidth * 0.75 + 'em';\n }\n\n this.$search.css('width', width);\n };\n\n return Search;\n });\n S2.define('select2/selection/eventRelay', ['jquery'], function ($) {\n function EventRelay() {}\n\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = ['open', 'opening', 'close', 'closing', 'select', 'selecting', 'unselect', 'unselecting', 'clear', 'clearing'];\n var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting', 'clearing'];\n decorated.call(this, container, $container);\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if ($.inArray(name, relayEvents) === -1) {\n return;\n } // The parameters should always be an object\n\n\n params = params || {}; // Generate the jQuery event for the Select2 event\n\n var evt = $.Event('select2:' + name, {\n params: params\n });\n self.$element.trigger(evt); // Only handle preventable events if it was one\n\n if ($.inArray(name, preventableEvents) === -1) {\n return;\n }\n\n params.prevented = evt.isDefaultPrevented();\n });\n };\n\n return EventRelay;\n });\n S2.define('select2/translation', ['jquery', 'require'], 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 }; // Static functions\n\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 S2.define('select2/diacritics', [], function () {\n var diacritics = {\n \"\\u24B6\": 'A',\n \"\\uFF21\": 'A',\n \"\\xC0\": 'A',\n \"\\xC1\": 'A',\n \"\\xC2\": 'A',\n \"\\u1EA6\": 'A',\n \"\\u1EA4\": 'A',\n \"\\u1EAA\": 'A',\n \"\\u1EA8\": 'A',\n \"\\xC3\": '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 \"\\xC4\": 'A',\n \"\\u01DE\": 'A',\n \"\\u1EA2\": 'A',\n \"\\xC5\": '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 \"\\xC6\": '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 \"\\xC7\": '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 \"\\xC8\": 'E',\n \"\\xC9\": 'E',\n \"\\xCA\": '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 \"\\xCB\": '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 \"\\xCC\": 'I',\n \"\\xCD\": 'I',\n \"\\xCE\": 'I',\n \"\\u0128\": 'I',\n \"\\u012A\": 'I',\n \"\\u012C\": 'I',\n \"\\u0130\": 'I',\n \"\\xCF\": '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 \"\\xD1\": '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 \"\\xD2\": 'O',\n \"\\xD3\": 'O',\n \"\\xD4\": 'O',\n \"\\u1ED2\": 'O',\n \"\\u1ED0\": 'O',\n \"\\u1ED6\": 'O',\n \"\\u1ED4\": 'O',\n \"\\xD5\": '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 \"\\xD6\": '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 \"\\xD8\": '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 \"\\xD9\": 'U',\n \"\\xDA\": 'U',\n \"\\xDB\": 'U',\n \"\\u0168\": 'U',\n \"\\u1E78\": 'U',\n \"\\u016A\": 'U',\n \"\\u1E7A\": 'U',\n \"\\u016C\": 'U',\n \"\\xDC\": '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 \"\\xDD\": '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 \"\\xE0\": 'a',\n \"\\xE1\": 'a',\n \"\\xE2\": 'a',\n \"\\u1EA7\": 'a',\n \"\\u1EA5\": 'a',\n \"\\u1EAB\": 'a',\n \"\\u1EA9\": 'a',\n \"\\xE3\": '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 \"\\xE4\": 'a',\n \"\\u01DF\": 'a',\n \"\\u1EA3\": 'a',\n \"\\xE5\": '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 \"\\xE6\": '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 \"\\xE7\": '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 \"\\xE8\": 'e',\n \"\\xE9\": 'e',\n \"\\xEA\": '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 \"\\xEB\": '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 \"\\xEC\": 'i',\n \"\\xED\": 'i',\n \"\\xEE\": 'i',\n \"\\u0129\": 'i',\n \"\\u012B\": 'i',\n \"\\u012D\": 'i',\n \"\\xEF\": '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 \"\\xF1\": '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 \"\\xF2\": 'o',\n \"\\xF3\": 'o',\n \"\\xF4\": 'o',\n \"\\u1ED3\": 'o',\n \"\\u1ED1\": 'o',\n \"\\u1ED7\": 'o',\n \"\\u1ED5\": 'o',\n \"\\xF5\": '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 \"\\xF6\": '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 \"\\xF8\": '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 \"\\xDF\": '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 \"\\xF9\": 'u',\n \"\\xFA\": 'u',\n \"\\xFB\": 'u',\n \"\\u0169\": 'u',\n \"\\u1E79\": 'u',\n \"\\u016B\": 'u',\n \"\\u1E7B\": 'u',\n \"\\u016D\": 'u',\n \"\\xFC\": '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 \"\\xFD\": 'y',\n \"\\u0177\": 'y',\n \"\\u1EF9\": 'y',\n \"\\u0233\": 'y',\n \"\\u1E8F\": 'y',\n \"\\xFF\": '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 return diacritics;\n });\n S2.define('select2/data/base', ['../utils'], 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) {// Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.destroy = function () {// Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\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\n return id;\n };\n\n return BaseAdapter;\n });\n S2.define('select2/data/select', ['./base', '../utils', 'jquery'], function (BaseAdapter, Utils, $) {\n function SelectAdapter($element, options) {\n this.$element = $element;\n this.options = options;\n\n SelectAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(SelectAdapter, BaseAdapter);\n\n SelectAdapter.prototype.current = function (callback) {\n var data = [];\n var self = this;\n this.$element.find(':selected').each(function () {\n var $option = $(this);\n var option = self.item($option);\n data.push(option);\n });\n callback(data);\n };\n\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n data.selected = true; // If data.element is a DOM node, use it instead\n\n if ($(data.element).is('option')) {\n data.element.selected = true;\n this.$element.trigger('input').trigger('change');\n return;\n }\n\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n data = [data];\n data.push.apply(data, currentData);\n\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n\n if ($.inArray(id, val) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n } else {\n var val = data.id;\n this.$element.val(val);\n this.$element.trigger('input').trigger('change');\n }\n };\n\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n\n if (!this.$element.prop('multiple')) {\n return;\n }\n\n data.selected = false;\n\n if ($(data.element).is('option')) {\n data.element.selected = false;\n this.$element.trigger('input').trigger('change');\n return;\n }\n\n this.current(function (currentData) {\n var val = [];\n\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n\n if (id !== data.id && $.inArray(id, val) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n };\n\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n this.container = container;\n container.on('select', function (params) {\n self.select(params.data);\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 var $options = this.$element.children();\n $options.each(function () {\n var $option = $(this);\n\n if (!$option.is('option') && !$option.is('optgroup')) {\n return;\n }\n\n var option = self.item($option);\n var matches = self.matches(params, option);\n\n if (matches !== null) {\n data.push(matches);\n }\n });\n callback({\n results: data\n });\n };\n\n SelectAdapter.prototype.addOptions = function ($options) {\n Utils.appendMany(this.$element, $options);\n };\n\n SelectAdapter.prototype.option = function (data) {\n var option;\n\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n\n if (data.id !== undefined) {\n option.value = data.id;\n }\n\n if (data.disabled) {\n option.disabled = true;\n }\n\n if (data.selected) {\n option.selected = true;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n var $option = $(option);\n\n var normalizedData = this._normalizeItem(data);\n\n normalizedData.element = option; // Override the option's data with the combined data\n\n Utils.StoreData(option, 'data', normalizedData);\n return $option;\n };\n\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n data = Utils.GetData($option[0], 'data');\n\n if (data != null) {\n return data;\n }\n\n if ($option.is('option')) {\n data = {\n id: $option.val(),\n text: $option.text(),\n disabled: $option.prop('disabled'),\n selected: $option.prop('selected'),\n title: $option.prop('title')\n };\n } else if ($option.is('optgroup')) {\n data = {\n text: $option.prop('label'),\n children: [],\n title: $option.prop('title')\n };\n var $children = $option.children('option');\n var children = [];\n\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n var child = this.item($child);\n children.push(child);\n }\n\n data.children = children;\n }\n\n data = this._normalizeItem(data);\n data.element = $option[0];\n Utils.StoreData($option[0], 'data', data);\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 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 return matcher(params, data);\n };\n\n return SelectAdapter;\n });\n S2.define('select2/data/array', ['./select', '../utils', 'jquery'], 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 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 var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n var $options = []; // Filter out all items except for the one passed in the argument\n\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]); // Skip items which were pre-loaded, only merge the data\n\n\n if ($.inArray(item.id, existingIds) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n var $newOption = this.option(newData);\n $existingOption.replaceWith($newOption);\n continue;\n }\n\n var $option = this.option(item);\n\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n Utils.appendMany($option, $children);\n }\n\n $options.push($option);\n }\n\n return $options;\n };\n\n return ArrayAdapter;\n });\n S2.define('select2/data/ajax', ['./array', '../utils', 'jquery'], 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 data(params) {\n return $.extend({}, params, {\n q: params.term\n });\n },\n transport: function transport(params, success, failure) {\n var $request = $.ajax(params);\n $request.then(success);\n $request.fail(failure);\n return $request;\n }\n };\n return $.extend({}, defaults, options, true);\n };\n\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if ($.isFunction(this._request.abort)) {\n this._request.abort();\n }\n\n this._request = null;\n }\n\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n\n function request() {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n\n if (self.options.get('debug') && window.console && console.error) {\n // Check to make sure that the response included a `results` key.\n if (!results || !results.results || !$.isArray(results.results)) {\n console.error('Select2: The AJAX results did not return an array in the ' + '`results` key of the response.');\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 && ($request.status === 0 || $request.status === '0')) {\n return;\n }\n\n self.trigger('results:message', {\n message: 'errorLoading'\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 S2.define('select2/data/tags', ['jquery'], function ($) {\n function Tags(decorated, $element, options) {\n var tags = options.get('tags');\n var createTag = options.get('createTag');\n\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n\n var insertTag = options.get('insertTag');\n\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n\n decorated.call(this, $element, options);\n\n if ($.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n\n var item = this._normalizeItem(tag);\n\n var $option = this.option(item);\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 var checkChildren = option.children != null && !wrapper({\n results: option.children\n }, true);\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\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 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 self.addOptions([$option]);\n self.insertTag(data, tag);\n }\n\n obj.results = data;\n callback(obj);\n }\n\n decorated.call(this, params, wrapper);\n };\n\n Tags.prototype.createTag = function (decorated, params) {\n var term = $.trim(params.term);\n\n if (term === '') {\n return null;\n }\n\n return {\n id: term,\n text: term\n };\n };\n\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n $options.each(function () {\n if (this.selected) {\n return;\n }\n\n $(this).remove();\n });\n };\n\n return Tags;\n });\n S2.define('select2/data/tokenizer', ['jquery'], 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 this.$search = container.dropdown.$search || container.selection.$search || $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); // Check if the data object already exists as a tag\n // Select it if it doesn't\n\n\n var $existingOptions = self.$element.find('option').filter(function () {\n return $(this).val() === item.id;\n }); // If an existing option wasn't found for it, create the option\n\n if (!$existingOptions.length) {\n var $option = self.option(item);\n $option.attr('data-select2-tag', true);\n\n self._removeOldTags();\n\n self.addOptions([$option]);\n } // Select the item, now that we know there is an option for it\n\n\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 var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n if (tokenData.term !== params.term) {\n // Replace the search term if we have the search box\n if (this.$search.length) {\n this.$search.val(tokenData.term);\n this.$search.trigger('focus');\n }\n\n params.term = tokenData.term;\n }\n\n decorated.call(this, params, callback);\n };\n\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n var separators = options.get('tokenSeparators') || [];\n var term = params.term;\n var i = 0;\n\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n\n while (i < term.length) {\n var termChar = term[i];\n\n if ($.inArray(termChar, separators) === -1) {\n i++;\n continue;\n }\n\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n var data = createTag(partParams);\n\n if (data == null) {\n i++;\n continue;\n }\n\n callback(data); // Reset the term to not include the tokenized portion\n\n term = term.substr(i + 1) || '';\n i = 0;\n }\n\n return {\n term: term\n };\n };\n\n return Tokenizer;\n });\n S2.define('select2/data/minimumInputLength', [], function () {\n function MinimumInputLength(decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\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 return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MinimumInputLength;\n });\n S2.define('select2/data/maximumInputLength', [], function () {\n function MaximumInputLength(decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\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 && 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 return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MaximumInputLength;\n });\n S2.define('select2/data/maximumSelectionLength', [], function () {\n function MaximumSelectionLength(decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n decorated.call(this, $e, options);\n }\n\n MaximumSelectionLength.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n\n MaximumSelectionLength.prototype.query = 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 = function (_, successCallback) {\n var self = this;\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n\n if (self.maximumSelectionLength > 0 && 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 S2.define('select2/dropdown', ['jquery', './utils'], 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 $dropdown.attr('dir', this.options.get('dir'));\n this.$dropdown = $dropdown;\n return $dropdown;\n };\n\n Dropdown.prototype.bind = function () {// Should be implemented in subclasses\n };\n\n Dropdown.prototype.position = function ($dropdown, $container) {// 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 S2.define('select2/dropdown/search', ['jquery', '../utils'], function ($, Utils) {\n function Search() {}\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n var $search = $('' + '' + '');\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n $rendered.prepend($search);\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var resultsId = container.id + '-results';\n decorated.call(this, container, $container);\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n self._keyUpPrevented = evt.isDefaultPrevented();\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\n this.$search.on('input', function (evt) {\n // Unbind the duplicated `keyup` event\n $(this).off('keyup');\n });\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\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 self.$search.val('');\n self.$search.trigger('blur');\n });\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\n }\n });\n container.on('results:all', function (params) {\n if (params.query.term == null || params.query.term === '') {\n var showSearch = self.showSearch(params);\n\n if (showSearch) {\n self.$searchContainer.removeClass('select2-search--hide');\n } else {\n self.$searchContainer.addClass('select2-search--hide');\n }\n }\n });\n 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 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 S2.define('select2/dropdown/hidePlaceholder', [], function () {\n function HidePlaceholder(decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n decorated.call(this, $element, options, dataAdapter);\n }\n\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\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 S2.define('select2/dropdown/infiniteScroll', ['jquery'], function ($) {\n function InfiniteScroll(decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n decorated.call(this, $element, options, dataAdapter);\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 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 decorated.call(this, container, $container);\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(document.documentElement, this.$loadingMore[0]);\n\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n\n var currentOffset = this.$results.offset().top + this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top + 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 var params = $.extend({}, {\n page: 1\n }, this.lastParams);\n params.page++;\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 var message = this.options.get('translations').get('loadingMore');\n $option.html(message(this.lastParams));\n return $option;\n };\n\n return InfiniteScroll;\n });\n S2.define('select2/dropdown/attachBody', ['jquery', '../utils'], function ($, Utils) {\n function AttachBody(decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n decorated.call(this, $element, options);\n }\n\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('open', function () {\n self._showDropdown();\n\n self._attachPositioningHandler(container); // Must bind after the results handlers to ensure correct sizing\n\n\n self._bindContainerResultHandlers(container);\n });\n container.on('close', function () {\n self._hideDropdown();\n\n self._detachPositioningHandler(container);\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 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 $dropdown.removeClass('select2');\n $dropdown.addClass('select2-container--open');\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n this.$container = $container;\n };\n\n AttachBody.prototype.render = function (decorated) {\n var $container = $('');\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n this.$dropdownContainer = $container;\n return $container;\n };\n\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n\n AttachBody.prototype._bindContainerResultHandlers = function (decorated, container) {\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n\n var self = this;\n container.on('results:all', function () {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n container.on('results:append', function () {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n container.on('results:message', function () {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n container.on('select', function () {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n container.on('unselect', function () {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n this._containerResultsHandlersBound = true;\n };\n\n AttachBody.prototype._attachPositioningHandler = function (decorated, container) {\n var self = this;\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\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 $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, function (e) {\n self._positionDropdown();\n\n self._resizeDropdown();\n });\n };\n\n AttachBody.prototype._detachPositioningHandler = 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 var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\n var newDirection = null;\n var offset = this.$container.offset();\n offset.bottom = offset.top + this.$container.outerHeight(false);\n var container = {\n height: this.$container.outerHeight(false)\n };\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n var enoughRoomAbove = viewport.top < offset.top - dropdown.height;\n var enoughRoomBelow = viewport.bottom > offset.bottom + dropdown.height;\n var css = {\n left: offset.left,\n top: container.bottom\n }; // Determine what the parent element is to use for calculating the offset\n\n var $offsetParent = this.$dropdownParent; // For statically positioned elements, we need to get the element\n // that is determining the offset\n\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 ($.contains(document.body, $offsetParent[0]) || $offsetParent[0].isConnected) {\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' || isCurrentlyAbove && newDirection !== 'below') {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\n\n if (newDirection != null) {\n this.$dropdown.removeClass('select2-dropdown--below select2-dropdown--above').addClass('select2-dropdown--' + newDirection);\n this.$container.removeClass('select2-container--below select2-container--above').addClass('select2-container--' + newDirection);\n }\n\n this.$dropdownContainer.css(css);\n };\n\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n\n this.$dropdown.css(css);\n };\n\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n this._positionDropdown();\n\n this._resizeDropdown();\n };\n\n return AttachBody;\n });\n S2.define('select2/dropdown/minimumResultsForSearch', [], 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 S2.define('select2/dropdown/selectOnClose', ['../utils'], function (Utils) {\n function SelectOnClose() {}\n\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\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; // Don't select an item if the close event was triggered from a select or\n // unselect event\n\n if (event._type === 'select' || event._type === 'unselect') {\n return;\n }\n }\n\n var $highlightedResults = this.getHighlightedResults(); // Only select highlighted results\n\n if ($highlightedResults.length < 1) {\n return;\n }\n\n var data = Utils.GetData($highlightedResults[0], 'data'); // Don't re-select already selected resulte\n\n if (data.element != null && data.element.selected || data.element == null && data.selected) {\n return;\n }\n\n this.trigger('select', {\n data: data\n });\n };\n\n return SelectOnClose;\n });\n S2.define('select2/dropdown/closeOnSelect', [], function () {\n function CloseOnSelect() {}\n\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('select', function (evt) {\n self._selectTriggered(evt);\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; // Don't close if the control key is being held\n\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 S2.define('select2/i18n/en', [], function () {\n // English\n return {\n errorLoading: function errorLoading() {\n return 'The results could not be loaded.';\n },\n inputTooLong: function inputTooLong(args) {\n var overChars = args.input.length - args.maximum;\n var message = 'Please delete ' + overChars + ' character';\n\n if (overChars != 1) {\n message += 's';\n }\n\n return message;\n },\n inputTooShort: function inputTooShort(args) {\n var remainingChars = args.minimum - args.input.length;\n var message = 'Please enter ' + remainingChars + ' or more characters';\n return message;\n },\n loadingMore: function loadingMore() {\n return 'Loading more results…';\n },\n maximumSelected: function maximumSelected(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 noResults() {\n return 'No results found';\n },\n searching: function searching() {\n return 'Searching…';\n },\n removeAllItems: function removeAllItems() {\n return 'Remove all items';\n }\n };\n });\n S2.define('select2/defaults', ['jquery', 'require', './results', './selection/single', './selection/multiple', './selection/placeholder', './selection/allowClear', './selection/search', './selection/eventRelay', './utils', './translation', './diacritics', './data/select', './data/array', './data/ajax', './data/tags', './data/tokenizer', './data/minimumInputLength', './data/maximumInputLength', './data/maximumSelectionLength', './dropdown', './dropdown/search', './dropdown/hidePlaceholder', './dropdown/infiniteScroll', './dropdown/attachBody', './dropdown/minimumResultsForSearch', './dropdown/selectOnClose', './dropdown/closeOnSelect', './i18n/en'], function ($, require, ResultsList, SingleSelection, MultipleSelection, Placeholder, AllowClear, SelectionSearch, EventRelay, Utils, Translation, DIACRITICS, SelectData, ArrayData, AjaxData, Tags, Tokenizer, MinimumInputLength, MaximumInputLength, MaximumSelectionLength, Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, 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(options.dataAdapter, MinimumInputLength);\n }\n\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumInputLength);\n }\n\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumSelectionLength);\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(options.dataAdapter, Tokenizer);\n }\n\n if (options.query != null) {\n var Query = require(options.amdBase + 'compat/query');\n\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Query);\n }\n\n if (options.initSelection != null) {\n var InitSelection = require(options.amdBase + 'compat/initSelection');\n\n options.dataAdapter = Utils.Decorate(options.dataAdapter, InitSelection);\n }\n }\n\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, InfiniteScroll);\n }\n\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, HidePlaceholder);\n }\n\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, SelectOnClose);\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 options.dropdownAdapter = SearchableDropdown;\n }\n\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, MinimumResultsForSearch);\n }\n\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, CloseOnSelect);\n }\n\n if (options.dropdownCssClass != null || options.dropdownCss != null || options.adaptDropdownCssClass != null) {\n var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\n\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, DropdownCSS);\n }\n\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, AttachBody);\n }\n\n if (options.selectionAdapter == null) {\n if (options.multiple) {\n options.selectionAdapter = MultipleSelection;\n } else {\n options.selectionAdapter = SingleSelection;\n } // Add the placeholder mixin if a placeholder was specified\n\n\n if (options.placeholder != null) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, Placeholder);\n }\n\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, AllowClear);\n }\n\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, SelectionSearch);\n }\n\n if (options.containerCssClass != null || options.containerCss != null || options.adaptContainerCssClass != null) {\n var ContainerCSS = require(options.amdBase + 'compat/containerCss');\n\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, ContainerCSS);\n }\n\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, EventRelay);\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\n\n options.language = this._resolveLanguage(options.language); // Always fall back to English since it will always be complete\n\n options.language.push('en');\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 options.translations = this._processTranslations(options.language, options.debug);\n return options;\n };\n\n Defaults.prototype.reset = function () {\n function stripDiacritics(text) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n\n function matcher(params, data) {\n // Always return the object if there is nothing to compare\n if ($.trim(params.term) === '') {\n return data;\n } // Do a recursive check for options with children\n\n\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); // Check each child of the option\n\n for (var c = data.children.length - 1; c >= 0; c--) {\n var child = data.children[c];\n var matches = matcher(params, child); // If there wasn't a match, remove the object in the array\n\n if (matches == null) {\n match.children.splice(c, 1);\n }\n } // If any children matched, return the new object\n\n\n if (match.children.length > 0) {\n return match;\n } // If there were no matching children, check just the plain object\n\n\n return matcher(params, match);\n }\n\n var original = stripDiacritics(data.text).toUpperCase();\n var term = stripDiacritics(params.term).toUpperCase(); // Check if the text contains the term\n\n if (original.indexOf(term) > -1) {\n return data;\n } // If it doesn't contain the term, don't return anything\n\n\n return null;\n }\n\n this.defaults = {\n amdBase: './',\n amdLanguageBase: './i18n/',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: {},\n matcher: matcher,\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: false,\n scrollAfterSelect: false,\n sorter: function sorter(data) {\n return data;\n },\n templateResult: function templateResult(result) {\n return result.text;\n },\n templateSelection: function templateSelection(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 var languages = Array.prototype.concat.call(this._resolveLanguage(elementLanguage), this._resolveLanguage(optionLanguage), this._resolveLanguage(defaultLanguage), this._resolveLanguage(parentLanguage));\n options.language = languages;\n return options;\n };\n\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n\n if ($.isEmptyObject(language)) {\n return [];\n }\n\n if ($.isPlainObject(language)) {\n return [language];\n }\n\n var languages;\n\n if (!$.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n\n var resolvedLanguages = [];\n\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n\n if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n // Extract the region information if it is included\n var languageParts = languages[l].split('-');\n var baseLanguage = languageParts[0];\n 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 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('Select2: The language file for \"' + language + '\" could ' + 'not be automatically loaded. A fallback will be used instead.');\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 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 return defaults;\n });\n S2.define('select2/options', ['require', 'jquery', './defaults', './utils'], function (require, $, Defaults, Utils) {\n function Options(options, $element) {\n this.options = options;\n\n if ($element != null) {\n this.fromElement($element);\n }\n\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n\n this.options = Defaults.apply(this.options);\n\n if ($element && $element.is('input')) {\n var InputCompat = require(this.get('amdBase') + 'compat/inputData');\n\n this.options.dataAdapter = Utils.Decorate(this.options.dataAdapter, InputCompat);\n }\n }\n\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n\n if (this.options.dir == null) {\n if ($e.prop('dir')) {\n this.options.dir = $e.prop('dir');\n } else if ($e.closest('[dir]').prop('dir')) {\n this.options.dir = $e.closest('[dir]').prop('dir');\n } else {\n this.options.dir = 'ltr';\n }\n }\n\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn('Select2: The `data-select2-tags` attribute has been changed to ' + 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' + 'removed in future versions of Select2.');\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('Select2: The `data-ajax-url` attribute has been changed to ' + '`data-ajax--url` and support for the old attribute will be removed' + ' in future versions of Select2.');\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 } // Pre-load all of the attributes which are prefixed with `data-`\n\n\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); // Get the data contents from the consistent source\n // This is more than likely the jQuery data helper\n\n var dataValue = Utils.GetData($e[0], dataName); // camelCase the attribute name to match the spec\n\n var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter); // Store the data attribute contents into the dataset since\n\n dataset[camelDataName] = dataValue;\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\n\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n dataset = $.extend(true, {}, $e[0].dataset, dataset);\n } // Prefer our internal data cache if it exists\n\n\n var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n data = Utils._convertData(data);\n\n for (var key in data) {\n if ($.inArray(key, excludedData) > -1) {\n continue;\n }\n\n if ($.isPlainObject(this.options[key])) {\n $.extend(this.options[key], data[key]);\n } else {\n this.options[key] = data[key];\n }\n }\n\n return this;\n };\n\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n\n return Options;\n });\n S2.define('select2/core', ['jquery', './options', './utils', './keys'], function ($, Options, Utils, KEYS) {\n var Select2 = function Select2($element, options) {\n if (Utils.GetData($element[0], 'select2') != null) {\n Utils.GetData($element[0], 'select2').destroy();\n }\n\n this.$element = $element;\n this.id = this._generateId($element);\n options = options || {};\n this.options = new Options(options, $element);\n\n Select2.__super__.constructor.call(this); // Set up the tabindex\n\n\n var tabindex = $element.attr('tabindex') || 0;\n Utils.StoreData($element[0], 'old-tabindex', tabindex);\n $element.attr('tabindex', '-1'); // Set up containers and adapters\n\n var DataAdapter = this.options.get('dataAdapter');\n this.dataAdapter = new DataAdapter($element, this.options);\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 this.selection.position(this.$selection, $container);\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n this.dropdown.position(this.$dropdown, $container);\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n this.results.position(this.$results, this.$dropdown); // Bind events\n\n var self = this; // Bind the container to all of the adapters\n\n this._bindAdapters(); // Register any DOM event handlers\n\n\n this._registerDomEvents(); // Register any internal event handlers\n\n\n this._registerDataEvents();\n\n this._registerSelectionEvents();\n\n this._registerDropdownEvents();\n\n this._registerResultsEvents();\n\n this._registerEvents(); // Set the initial state\n\n\n this.dataAdapter.current(function (initialData) {\n self.trigger('selection:update', {\n data: initialData\n });\n }); // Hide the original select\n\n $element.addClass('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true'); // Synchronize any monitored attributes\n\n this._syncAttributes();\n\n Utils.StoreData($element[0], 'select2', this); // Ensure backwards compatibility with $element.data('select2').\n\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 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 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 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 this.$element.on('change.select2', function () {\n self.dataAdapter.current(function (data) {\n self.trigger('selection:update', {\n data: data\n });\n });\n });\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n\n if (this.$element[0].attachEvent) {\n this.$element[0].attachEvent('onpropertychange', this._syncA);\n }\n\n var observer = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;\n\n if (observer != null) {\n this._observer = new observer(function (mutations) {\n self._syncA();\n\n self._syncS(null, mutations);\n });\n\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n } else if (this.$element[0].addEventListener) {\n this.$element[0].addEventListener('DOMAttrModified', self._syncA, false);\n this.$element[0].addEventListener('DOMNodeInserted', self._syncS, false);\n this.$element[0].addEventListener('DOMNodeRemoved', self._syncS, false);\n }\n };\n\n Select2.prototype._registerDataEvents = function () {\n var self = this;\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 this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n this.selection.on('*', function (name, params) {\n if ($.inArray(name, nonRelayEvents) !== -1) {\n return;\n }\n\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\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 this.on('open', function () {\n self.$container.addClass('select2-container--open');\n });\n this.on('close', function () {\n self.$container.removeClass('select2-container--open');\n });\n this.on('enable', function () {\n self.$container.removeClass('select2-container--disabled');\n });\n this.on('disable', function () {\n self.$container.addClass('select2-container--disabled');\n });\n this.on('blur', function () {\n self.$container.removeClass('select2-container--focus');\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 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 this.on('keypress', function (evt) {\n var key = evt.which;\n\n if (self.isOpen()) {\n if (key === KEYS.ESC || key === KEYS.TAB || key === KEYS.UP && evt.altKey) {\n self.close(evt);\n evt.preventDefault();\n } else if (key === KEYS.ENTER) {\n self.trigger('results:select', {});\n evt.preventDefault();\n } else if (key === KEYS.SPACE && evt.ctrlKey) {\n self.trigger('results:toggle', {});\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE || key === KEYS.DOWN && evt.altKey) {\n self.open();\n evt.preventDefault();\n }\n }\n });\n };\n\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n\n if (this.isDisabled()) {\n if (this.isOpen()) {\n this.close();\n }\n\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n\n Select2.prototype._isChangeMutation = function (evt, mutations) {\n var changed = false;\n var self = this; // Ignore any mutation events raised for elements that aren't options or\n // optgroups. This handles the case when the select element is destroyed\n\n if (evt && evt.target && evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP') {\n return;\n }\n\n if (!mutations) {\n // If mutation events aren't supported, then we can only assume that the\n // change affected the selections\n changed = true;\n } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n for (var n = 0; n < mutations.addedNodes.length; n++) {\n var node = mutations.addedNodes[n];\n\n if (node.selected) {\n changed = true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n changed = true;\n } else if ($.isArray(mutations)) {\n $.each(mutations, function (evt, mutation) {\n if (self._isChangeMutation(evt, mutation)) {\n // We've found a change mutation.\n // Let's escape from the loop and continue\n changed = true;\n return false;\n }\n });\n }\n\n return changed;\n };\n\n Select2.prototype._syncSubtree = function (evt, mutations) {\n var changed = this._isChangeMutation(evt, mutations);\n\n var self = this; // Only re-pull the data if we think there is a change\n\n if (changed) {\n this.dataAdapter.current(function (currentData) {\n self.trigger('selection:update', {\n data: currentData\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\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 actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n if (preTriggerArgs.prevented) {\n args.prevented = true;\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', {\n 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\n\n Select2.prototype.isEnabled = function () {\n return !this.isDisabled();\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\n\n Select2.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n Select2.prototype.isOpen = function () {\n return this.$container.hasClass('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container.hasClass('select2-container--focus');\n };\n\n Select2.prototype.focus = function (data) {\n // No need to re-trigger focus events if we are already focused\n if (this.hasFocus()) {\n return;\n }\n\n this.$container.addClass('select2-container--focus');\n this.trigger('focus', {});\n };\n\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn('Select2: The `select2(\"enable\")` method has been deprecated and will' + ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' + ' instead.');\n }\n\n if (args == null || args.length === 0) {\n args = [true];\n }\n\n var disabled = !args[0];\n this.$element.prop('disabled', disabled);\n };\n\n Select2.prototype.data = function () {\n if (this.options.get('debug') && arguments.length > 0 && window.console && console.warn) {\n console.warn('Select2: Data can no longer be set using `select2(\"data\")`. You ' + 'should consider setting the value instead using `$element.val()`.');\n }\n\n var data = [];\n this.dataAdapter.current(function (currentData) {\n data = currentData;\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('Select2: The `select2(\"val\")` method has been deprecated and will be' + ' removed in later Select2 versions. Use $element.val() instead.');\n }\n\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n\n var newVal = args[0];\n\n if ($.isArray(newVal)) {\n newVal = $.map(newVal, function (obj) {\n return obj.toString();\n });\n }\n\n this.$element.val(newVal).trigger('input').trigger('change');\n };\n\n Select2.prototype.destroy = function () {\n this.$container.remove();\n\n if (this.$element[0].detachEvent) {\n this.$element[0].detachEvent('onpropertychange', this._syncA);\n }\n\n if (this._observer != null) {\n this._observer.disconnect();\n\n this._observer = null;\n } else if (this.$element[0].removeEventListener) {\n this.$element[0].removeEventListener('DOMAttrModified', this._syncA, false);\n this.$element[0].removeEventListener('DOMNodeInserted', this._syncS, false);\n this.$element[0].removeEventListener('DOMNodeRemoved', this._syncS, false);\n }\n\n this._syncA = null;\n this._syncS = null;\n this.$element.off('.select2');\n this.$element.attr('tabindex', Utils.GetData(this.$element[0], 'old-tabindex'));\n this.$element.removeClass('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n Utils.RemoveData(this.$element[0]);\n this.$element.removeData('select2');\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\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 $container.attr('dir', this.options.get('dir'));\n this.$container = $container;\n this.$container.addClass('select2-container--' + this.options.get('theme'));\n Utils.StoreData($container[0], 'element', this.$element);\n return $container;\n };\n\n return Select2;\n });\n S2.define('select2/compat/utils', ['jquery'], function ($) {\n function syncCssClasses($dest, $src, adapter) {\n var classes,\n replacements = [],\n adapted;\n classes = $.trim($dest.attr('class'));\n\n if (classes) {\n classes = '' + classes; // for IE which returns object\n\n $(classes.split(/\\s+/)).each(function () {\n // Save all Select2 classes\n if (this.indexOf('select2-') === 0) {\n replacements.push(this);\n }\n });\n }\n\n classes = $.trim($src.attr('class'));\n\n if (classes) {\n classes = '' + classes; // for IE which returns object\n\n $(classes.split(/\\s+/)).each(function () {\n // Only adapt non-Select2 classes\n if (this.indexOf('select2-') !== 0) {\n adapted = adapter(this);\n\n if (adapted != null) {\n replacements.push(adapted);\n }\n }\n });\n }\n\n $dest.attr('class', replacements.join(' '));\n }\n\n return {\n syncCssClasses: syncCssClasses\n };\n });\n S2.define('select2/compat/containerCss', ['jquery', './utils'], function ($, CompatUtils) {\n // No-op CSS adapter that discards all classes by default\n function _containerAdapter(clazz) {\n return null;\n }\n\n function ContainerCSS() {}\n\n ContainerCSS.prototype.render = function (decorated) {\n var $container = decorated.call(this);\n var containerCssClass = this.options.get('containerCssClass') || '';\n\n if ($.isFunction(containerCssClass)) {\n containerCssClass = containerCssClass(this.$element);\n }\n\n var containerCssAdapter = this.options.get('adaptContainerCssClass');\n containerCssAdapter = containerCssAdapter || _containerAdapter;\n\n if (containerCssClass.indexOf(':all:') !== -1) {\n containerCssClass = containerCssClass.replace(':all:', '');\n var _cssAdapter = containerCssAdapter;\n\n containerCssAdapter = function containerCssAdapter(clazz) {\n var adapted = _cssAdapter(clazz);\n\n if (adapted != null) {\n // Append the old one along with the adapted one\n return adapted + ' ' + clazz;\n }\n\n return clazz;\n };\n }\n\n var containerCss = this.options.get('containerCss') || {};\n\n if ($.isFunction(containerCss)) {\n containerCss = containerCss(this.$element);\n }\n\n CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);\n $container.css(containerCss);\n $container.addClass(containerCssClass);\n return $container;\n };\n\n return ContainerCSS;\n });\n S2.define('select2/compat/dropdownCss', ['jquery', './utils'], function ($, CompatUtils) {\n // No-op CSS adapter that discards all classes by default\n function _dropdownAdapter(clazz) {\n return null;\n }\n\n function DropdownCSS() {}\n\n DropdownCSS.prototype.render = function (decorated) {\n var $dropdown = decorated.call(this);\n var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n if ($.isFunction(dropdownCssClass)) {\n dropdownCssClass = dropdownCssClass(this.$element);\n }\n\n var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');\n dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;\n\n if (dropdownCssClass.indexOf(':all:') !== -1) {\n dropdownCssClass = dropdownCssClass.replace(':all:', '');\n var _cssAdapter = dropdownCssAdapter;\n\n dropdownCssAdapter = function dropdownCssAdapter(clazz) {\n var adapted = _cssAdapter(clazz);\n\n if (adapted != null) {\n // Append the old one along with the adapted one\n return adapted + ' ' + clazz;\n }\n\n return clazz;\n };\n }\n\n var dropdownCss = this.options.get('dropdownCss') || {};\n\n if ($.isFunction(dropdownCss)) {\n dropdownCss = dropdownCss(this.$element);\n }\n\n CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);\n $dropdown.css(dropdownCss);\n $dropdown.addClass(dropdownCssClass);\n return $dropdown;\n };\n\n return DropdownCSS;\n });\n S2.define('select2/compat/initSelection', ['jquery'], function ($) {\n function InitSelection(decorated, $element, options) {\n if (options.get('debug') && window.console && console.warn) {\n console.warn('Select2: The `initSelection` option has been deprecated in favor' + ' of a custom data adapter that overrides the `current` method. ' + 'This method is now called multiple times instead of a single ' + 'time when the instance is initialized. Support will be removed ' + 'for the `initSelection` option in future versions of Select2');\n }\n\n this.initSelection = options.get('initSelection');\n this._isInitialized = false;\n decorated.call(this, $element, options);\n }\n\n InitSelection.prototype.current = function (decorated, callback) {\n var self = this;\n\n if (this._isInitialized) {\n decorated.call(this, callback);\n return;\n }\n\n this.initSelection.call(null, this.$element, function (data) {\n self._isInitialized = true;\n\n if (!$.isArray(data)) {\n data = [data];\n }\n\n callback(data);\n });\n };\n\n return InitSelection;\n });\n S2.define('select2/compat/inputData', ['jquery', '../utils'], function ($, Utils) {\n function InputData(decorated, $element, options) {\n this._currentData = [];\n this._valueSeparator = options.get('valueSeparator') || ',';\n\n if ($element.prop('type') === 'hidden') {\n if (options.get('debug') && console && console.warn) {\n console.warn('Select2: Using a hidden input with Select2 is no longer ' + 'supported and may stop working in the future. It is recommended ' + 'to use a `