Merge remote-tracking branch 'origin/6.0'
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / js / WCF.Combined.min.js
index a41118c3fde55208ce97b52784d52597a3bf4ed4..72a62c6d4f8fce636d5e462b1750c0d5c893d3a0 100755 (executable)
@@ -16,7 +16,7 @@
 (function (window, undefined) { !function(){var t=!1,e=/xyz/.test((function(){xyz}))?/\b_super\b/:/.*/;this.Class=function(){},Class.extend=function(n){function i(){!t&&this.init&&this.init.apply(this,arguments)}var r,o,l=this.prototype;for(o in t=!0,r=new this,t=!1,n)r[o]="function"==typeof n[o]&&"function"==typeof l[o]&&e.test(n[o])?function(t,e){return function(){var n,i=this._super;return this._super=l[t],n=e.apply(this,arguments),this._super=i,n}}(o,n[o]):n[o];return i.prototype=r,i.prototype.constructor=i,i.extend=arguments.callee,i}}(),function(t){"function"==typeof define&&define.amd&&define.amd.jQuery?define(["jquery"],t):t(jQuery)}((function(t){function e(e){return!e||void 0!==e.allowPageScroll||void 0===e.swipe&&void 0===e.swipeStatus||(e.allowPageScroll=s),void 0!==e.click&&void 0===e.tap&&(e.tap=e.click),e||(e={}),e=t.extend({},t.fn.swipe.defaults,e),this.each((function(){var i=t(this),r=i.data(P);r||(r=new n(this,e),i.data(P,r))}))}function n(e,n){function L(e){var u,a,s;if(!0!==yt.data(P+"_intouch")&&!(t(e.target).closest(n.excludedElements,yt).length>0))return u=e.originalEvent?e.originalEvent:e,s=x?u.touches[0]:u,St=y,x?Et=u.touches.length:e.preventDefault(),pt=0,ht=null,Tt=null,ft=0,dt=0,gt=0,wt=1,vt=0,mt=function(){for(var t=[],e=0;e<=5;e++)t.push({start:{x:0,y:0},end:{x:0,y:0},identifier:0});return t}(),bt=function(){var t={};return t[i]=et(i),t[r]=et(r),t[o]=et(o),t[l]=et(l),t}(),Z(),!x||Et===n.fingers||n.fingers===T||X()?(K(0,s),xt=rt(),2==Et&&(K(1,u.touches[1]),dt=gt=it(mt[0].start,mt[1].start)),(n.swipeStatus||n.pinchStatus)&&(a=U(u,St))):a=!1,!1===a?(U(u,St=m),a):(n.hold&&(Rt=setTimeout(t.proxy((function(){yt.trigger("hold",[u.target]),n.hold&&(a=n.hold.call(yt,u,u.target))}),this),n.longTapThreshold)),J(!0),null)}function D(e){var p,h,f,d,g=e.originalEvent?e.originalEvent:e;St===E||St===m||B()||(h=$(x?g.touches[0]:g),Ot=rt(),x&&(Et=g.touches.length),n.hold&&clearTimeout(Rt),St=S,2==Et&&(0==dt?(K(1,g.touches[1]),dt=gt=it(mt[0].start,mt[1].start)):($(g.touches[1]),gt=it(mt[0].end,mt[1].end),mt[0].end,mt[1].end,Tt=wt<1?a:u),wt=function(t,e){return(e/t*1).toFixed(2)}(dt,gt),vt=Math.abs(dt-gt)),Et===n.fingers||n.fingers===T||!x||X()?(ht=function(t,e){var n=function(t,e){var n=t.x-e.x,i=e.y-t.y,r=Math.atan2(i,n),o=Math.round(180*r/Math.PI);return o<0&&(o=360-Math.abs(o)),o}(t,e);return n<=45&&n>=0||n<=360&&n>=315?i:n>=135&&n<=225?r:n>45&&n<135?l:o}(h.start,h.end),function(t,e){if(n.allowPageScroll===s||X())t.preventDefault();else{var u=n.allowPageScroll===c;switch(e){case i:(n.swipeLeft&&u||!u&&n.allowPageScroll!=w)&&t.preventDefault();break;case r:(n.swipeRight&&u||!u&&n.allowPageScroll!=w)&&t.preventDefault();break;case o:(n.swipeUp&&u||!u&&n.allowPageScroll!=v)&&t.preventDefault();break;case l:(n.swipeDown&&u||!u&&n.allowPageScroll!=v)&&t.preventDefault()}}}(e,ht),pt=function(t,e){return Math.round(Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)))}(h.start,h.end),ft=nt(),function(t,e){e=Math.max(e,tt(t)),bt[t].distance=e}(ht,pt),(n.swipeStatus||n.pinchStatus)&&(p=U(g,St)),n.triggerOnTouchEnd&&!n.triggerOnTouchLeave||(f=!0,n.triggerOnTouchLeave&&(d=function(e){var n=(e=t(e)).offset();return{left:n.left,right:n.left+e.outerWidth(),top:n.top,bottom:n.top+e.outerHeight()}}(this),f=function(t,e){return t.x>e.left&&t.x<e.right&&t.y>e.top&&t.y<e.bottom}(h.end,d)),!n.triggerOnTouchEnd&&f?St=N(S):n.triggerOnTouchLeave&&!f&&(St=N(E)),St!=m&&St!=E||U(g,St))):U(g,St=m),!1===p&&U(g,St=m))}function R(t){var e=t.originalEvent;return x&&e.touches.length>0?(Mt=rt(),Pt=event.touches.length+1,!0):(B()&&(Et=Pt),Ot=rt(),ft=nt(),j()||!H()?U(e,St=m):n.triggerOnTouchEnd||0==n.triggerOnTouchEnd&&St===S?(t.preventDefault(),U(e,St=E)):!n.triggerOnTouchEnd&&F()?_(e,St=E,f):St===S&&U(e,St=m),J(!1),null)}function k(){Et=0,Ot=0,xt=0,dt=0,gt=0,wt=1,Z(),J(!1)}function A(t){var e=t.originalEvent;n.triggerOnTouchLeave&&U(e,St=N(E))}function I(){yt.unbind(lt,L),yt.unbind(ct,k),yt.unbind(ut,D),yt.unbind(at,R),st&&yt.unbind(st,A),J(!1)}function N(t){var e=t,i=C(),r=H(),o=j();return!i||o?e=m:!r||t!=S||n.triggerOnTouchEnd&&!n.triggerOnTouchLeave?!r&&t==E&&n.triggerOnTouchLeave&&(e=m):e=E,e}function U(t,e){var i=void 0;return Y()&&q()||q()?i=_(t,e,p):(Q()&&X()||X())&&!1!==i&&(i=_(t,e,h)),G()&&V()&&!1!==i?i=_(t,e,d):ft>n.longTapThreshold&&pt<b&&n.longTap&&!1!==i?i=_(t,e,g):1!==Et&&x||!(isNaN(pt)||pt<n.threshold)||!F()||!1===i||(i=_(t,e,f)),e===m&&k(),e===E&&(x?0==t.touches.length&&k():k()),i}function _(e,s,c){var w=void 0;if(c==p){if(yt.trigger("swipeStatus",[s,ht||null,pt||0,ft||0,Et,mt]),n.swipeStatus&&!1===(w=n.swipeStatus.call(yt,e,s,ht||null,pt||0,ft||0,Et,mt)))return!1;if(s==E&&Y()){if(yt.trigger("swipe",[ht,pt,ft,Et,mt]),n.swipe&&!1===(w=n.swipe.call(yt,e,ht,pt,ft,Et,mt)))return!1;switch(ht){case i:yt.trigger("swipeLeft",[ht,pt,ft,Et,mt]),n.swipeLeft&&(w=n.swipeLeft.call(yt,e,ht,pt,ft,Et,mt));break;case r:yt.trigger("swipeRight",[ht,pt,ft,Et,mt]),n.swipeRight&&(w=n.swipeRight.call(yt,e,ht,pt,ft,Et,mt));break;case o:yt.trigger("swipeUp",[ht,pt,ft,Et,mt]),n.swipeUp&&(w=n.swipeUp.call(yt,e,ht,pt,ft,Et,mt));break;case l:yt.trigger("swipeDown",[ht,pt,ft,Et,mt]),n.swipeDown&&(w=n.swipeDown.call(yt,e,ht,pt,ft,Et,mt))}}}if(c==h){if(yt.trigger("pinchStatus",[s,Tt||null,vt||0,ft||0,Et,wt,mt]),n.pinchStatus&&!1===(w=n.pinchStatus.call(yt,e,s,Tt||null,vt||0,ft||0,Et,wt,mt)))return!1;if(s==E&&Q())switch(Tt){case u:yt.trigger("pinchIn",[Tt||null,vt||0,ft||0,Et,wt,mt]),n.pinchIn&&(w=n.pinchIn.call(yt,e,Tt||null,vt||0,ft||0,Et,wt,mt));break;case a:yt.trigger("pinchOut",[Tt||null,vt||0,ft||0,Et,wt,mt]),n.pinchOut&&(w=n.pinchOut.call(yt,e,Tt||null,vt||0,ft||0,Et,wt,mt))}}return c==f?s!==m&&s!==E||(clearTimeout(Dt),clearTimeout(Rt),V()&&!G()?(Lt=rt(),Dt=setTimeout(t.proxy((function(){Lt=null,yt.trigger("tap",[e.target]),n.tap&&(w=n.tap.call(yt,e,e.target))}),this),n.doubleTapThreshold)):(Lt=null,yt.trigger("tap",[e.target]),n.tap&&(w=n.tap.call(yt,e,e.target)))):c==d?s!==m&&s!==E||(clearTimeout(Dt),Lt=null,yt.trigger("doubletap",[e.target]),n.doubleTap&&(w=n.doubleTap.call(yt,e,e.target))):c==g&&(s!==m&&s!==E||(clearTimeout(Dt),Lt=null,yt.trigger("longtap",[e.target]),n.longTap&&(w=n.longTap.call(yt,e,e.target)))),w}function H(){var t=!0;return null!==n.threshold&&(t=pt>=n.threshold),t}function j(){var t=!1;return null!==n.cancelThreshold&&null!==ht&&(t=tt(ht)-pt>=n.cancelThreshold),t}function C(){return!(n.maxTimeThreshold&&ft>=n.maxTimeThreshold)}function Q(){var t=z(),e=W(),i=null===n.pinchThreshold||vt>=n.pinchThreshold;return t&&e&&i}function X(){return!!(n.pinchStatus||n.pinchIn||n.pinchOut)}function Y(){var t=C(),e=H(),n=z(),i=W();return!j()&&i&&n&&e&&t}function q(){return!!(n.swipe||n.swipeStatus||n.swipeLeft||n.swipeRight||n.swipeUp||n.swipeDown)}function z(){return Et===n.fingers||n.fingers===T||!x}function W(){return 0!==mt[0].end.x}function F(){return!!n.tap}function V(){return!!n.doubleTap}function G(){if(null==Lt)return!1;var t=rt();return V()&&t-Lt<=n.doubleTapThreshold}function Z(){Mt=0,Pt=0}function B(){var t=!1;return Mt&&rt()-Mt<=n.fingerReleaseThreshold&&(t=!0),t}function J(t){!0===t?(yt.bind(ut,D),yt.bind(at,R),st&&yt.bind(st,A)):(yt.unbind(ut,D,!1),yt.unbind(at,R,!1),st&&yt.unbind(st,A,!1)),yt.data(P+"_intouch",!0===t)}function K(t,e){var n=void 0!==e.identifier?e.identifier:0;return mt[t].identifier=n,mt[t].start.x=mt[t].end.x=e.pageX||e.clientX,mt[t].start.y=mt[t].end.y=e.pageY||e.clientY,mt[t]}function $(t){var e=function(t){for(var e=0;e<mt.length;e++)if(mt[e].identifier==t)return mt[e]}(void 0!==t.identifier?t.identifier:0);return e.end.x=t.pageX||t.clientX,e.end.y=t.pageY||t.clientY,e}function tt(t){if(bt[t])return bt[t].distance}function et(t){return{direction:t,distance:0}}function nt(){return Ot-xt}function it(t,e){var n=Math.abs(t.x-e.x),i=Math.abs(t.y-e.y);return Math.round(Math.sqrt(n*n+i*i))}function rt(){return(new Date).getTime()}var ot=x||M||!n.fallbackToMouseEvents,lt=ot?M?O?"MSPointerDown":"pointerdown":"touchstart":"mousedown",ut=ot?M?O?"MSPointerMove":"pointermove":"touchmove":"mousemove",at=ot?M?O?"MSPointerUp":"pointerup":"touchend":"mouseup",st=ot?null:"mouseleave",ct=M?O?"MSPointerCancel":"pointercancel":"touchcancel",pt=0,ht=null,ft=0,dt=0,gt=0,wt=1,vt=0,Tt=0,bt=null,yt=t(e),St="start",Et=0,mt=null,xt=0,Ot=0,Mt=0,Pt=0,Lt=0,Dt=null,Rt=null;try{yt.bind(lt,L),yt.bind(ct,k)}catch(e){t.error("events not supported "+lt+","+ct+" on jQuery.swipe")}this.enable=function(){return yt.bind(lt,L),yt.bind(ct,k),yt},this.disable=function(){return I(),yt},this.destroy=function(){return I(),yt.data(P,null),yt},this.option=function(e,i){if(void 0!==n[e]){if(void 0===i)return n[e];n[e]=i}else t.error("Option "+e+" does not exist on jQuery.swipe.options");return null}}var i="left",r="right",o="up",l="down",u="in",a="out",s="none",c="auto",p="swipe",h="pinch",f="tap",d="doubletap",g="longtap",w="horizontal",v="vertical",T="all",b=10,y="start",S="move",E="end",m="cancel",x="ontouchstart"in window,O=window.navigator.msPointerEnabled&&!window.navigator.pointerEnabled,M=window.navigator.pointerEnabled||window.navigator.msPointerEnabled,P="TouchSwipe";t.fn.swipe=function(n){var i=t(this),r=i.data(P);if(r&&"string"==typeof n){if(r[n])return r[n].apply(this,Array.prototype.slice.call(arguments,1));t.error("Method "+n+" does not exist on jQuery.swipe")}else if(!(r||"object"!=typeof n&&n))return e.apply(this,arguments);return i},t.fn.swipe.defaults={fingers:1,threshold:75,cancelThreshold:null,pinchThreshold:20,maxTimeThreshold:null,fingerReleaseThreshold:250,longTapThreshold:500,doubleTapThreshold:200,swipe:null,swipeLeft:null,swipeRight:null,swipeUp:null,swipeDown:null,swipeStatus:null,pinchIn:null,pinchOut:null,pinchStatus:null,click:null,tap:null,doubleTap:null,longTap:null,hold:null,triggerOnTouchEnd:!0,triggerOnTouchLeave:!1,allowPageScroll:"auto",fallbackToMouseEvents:!0,excludedElements:"label, button, input, select, textarea, a, .noSwipe"},t.fn.swipe.phases={PHASE_START:y,PHASE_MOVE:S,PHASE_END:E,PHASE_CANCEL:m},t.fn.swipe.directions={LEFT:i,RIGHT:r,UP:o,DOWN:l,IN:u,OUT:a},t.fn.swipe.pageScroll={NONE:s,HORIZONTAL:w,VERTICAL:v,AUTO:c},t.fn.swipe.fingers={ONE:1,TWO:2,THREE:3,ALL:T}})); })(this);
 
 // WCF.js
-(function (window, undefined) { "use strict";function wcfEval(expression){return eval(expression)}!function(){var t=jQuery.fn.data;jQuery.fn.data=function(e,i){var n,s,a,o=[].slice.call(arguments);if(e)switch(typeof e){case"object":for(n in e)n.match(/ID$/)&&(s=e[n],delete e[n],e[n=n.replace(/ID$/,"-id")]=s);o[0]=e;break;case"string":e.match(/ID$/)&&(o[0]=e.replace(/ID$/,"-id"))}if(a=t.apply(this,o),void 0===e)for(n in a)n.match(/Id$/)&&(a[n.replace(/Id$/,"ID")]=a[n],delete a[n]);return a},void 0===console.debug&&(console.debug=function(t){console.log(t)})}(),function(t){var e=navigator.userAgent.toLowerCase(),i=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[],n={browser:i[1]||"",version:i[2]||"0"},s={};n.browser&&(s[n.browser]=!0,s.version=n.version),s.chrome?s.webkit=!0:s.webkit&&(s.safari=!0),t.browser=t.browser||{},t.browser=$.extend(t.browser,s),t.browser.touch=!!("ontouchstart"in window)||!!("msMaxTouchPoints"in window.navigator)&&window.navigator.msMaxTouchPoints>0,t.browser.mozilla&&e.match(/trident/)&&(t.browser.mozilla=!1,t.browser.msie=!0),t.browser.iOS=/\((ipad|iphone|ipod);/.test(e),t.browser.iOS&&$("html").addClass("iOS"),t.browser.android=-1!==e.indexOf("android"),t.browser.iOS&&(t.fn.focus=function(t,e){return arguments.length>0?this.on("focus",null,t,e):this.trigger("focus")})}(jQuery),null==window.WCF&&(window.WCF={}),$.extend(!0,{removeArrayValue:function(t,e){return $.grep(t,(function(t,i){return e!==t}))},wcfEscapeID:function(t){return t.replace(/(:|\.)/g,"\\$1")},wcfIsset:function(t){return!!$("#"+$.wcfEscapeID(t)).length},getLength:function(t){var e,i=0;for(e in t)t.hasOwnProperty(e)&&i++;return i}}),$.fn.extend({getTagName:function(){return this.length?this.get(0).tagName.toLowerCase():""},getDimensions:function(t){var e={},i={},n=!1;switch(this.is(":hidden")&&(e=WCF.getInlineCSS(this),n=!0,this.css({display:"block",visibility:"hidden"})),t){case"inner":i={height:this.innerHeight(),width:this.innerWidth()};break;case"outer":i={height:this.outerHeight(),width:this.outerWidth()};break;default:i={height:this.height(),width:this.width()}}return n&&WCF.revertInlineCSS(this,e,["display","visibility"]),i},getOffsets:function(t){var e={},i={},n=!1;return this.is(":hidden")&&(e=WCF.getInlineCSS(this),n=!0,this.css({display:"block",visibility:"hidden"})),i="offset"===t?this.offset():this.position(),n&&WCF.revertInlineCSS(this,e,["display","visibility"]),i},makePositioned:function(t,e){"absolute"!=t&&"fixed"!=t&&(t="absolute");var i=this.getOffsets("position");return this.css({position:t,left:i.left,margin:0,top:i.top}),e&&this.remove().appentTo("body"),this},disable:function(){return this.attr("disabled","disabled")},enable:function(){return this.removeAttr("disabled")},wcfIdentify:function(){return window.bc_wcfDomUtil.identify(this[0])},getCaret:function(){var t,e,i;if(this.is("input")){if("text"!=this.attr("type")&&"password"!=this.attr("type"))return-1}else if(!this.is("textarea"))return-1;return t=0,e=this.get(0),document.selection?(this.focus(),(i=document.selection.createRange()).moveStart("character",-this.val().length),t=i.text.length):(e.selectionStart||"0"==e.selectionStart)&&(t=parseInt(e.selectionStart)),t},setCaret:function(t){var e,i;if(this.is("input")){if("text"!=this.attr("type")&&"password"!=this.attr("type"))return!1}else if(!this.is("textarea"))return!1;return e=this.get(0),this.focus(),document.selection?((i=document.selection.createRange()).moveStart("character",t),i.moveEnd("character",0),i.select()):(e.selectionStart||"0"==e.selectionStart)&&(e.selectionStart=t,e.selectionEnd=t),!0},wcfDropIn:function(t,e,i){return t||(t="up"),i&&parseInt(i)||(i=200),this.show(WCF.getEffect(this,"drop"),{direction:t},i,e)},wcfDropOut:function(t,e,i){return t||(t="down"),i&&parseInt(i)||(i=200),this.hide(WCF.getEffect(this,"drop"),{direction:t},i,e)},wcfBlindIn:function(t,e,i){return t||(t="vertical"),i&&parseInt(i)||(i=200),this.show(WCF.getEffect(this,"blind"),{direction:t},i,e)},wcfBlindOut:function(t,e,i){return t||(t="vertical"),i&&parseInt(i)||(i=200),this.hide(WCF.getEffect(this,"blind"),{direction:t},i,e)},wcfHighlight:function(t,e){return this.effect("highlight",t,600,e)},wcfFadeIn:function(t,e){return e&&parseInt(e)||(e=200),this.show(WCF.getEffect(this,"fade"),{},e,t)},wcfFadeOut:function(t,e){return e&&parseInt(e)||(e=200),this.hide(WCF.getEffect(this,"fade"),{},e,t)},cssAsNumber:function(t){if(this.length){var e=this.css(t);if(void 0!==e)return parseInt(e.replace(/px$/,""))}return 0},perfectScrollbar:function(t){var e=require("perfect-scrollbar");return this.each((function(){var i,n;return"object"==typeof t||void 0===t?(i=t,$(this).data("psID")||e.initialize(this,i)):"update"===(n=t)?e.update(this):"destroy"===n&&e.destroy(this),jQuery(this)}))}}),$.extend(WCF,{activeDialogs:0,_idCounter:0,getRandomID:function(){return window.bc_wcfDomUtil.getUniqueId()},inArray:function(t,e){return-1!=$.inArray(t,e)},getEffect:function(t,e){return t.is("tr")?"highlight":e},getInlineCSS:function(t){var e,i,n,s={},a=t.attr("style");if(!a)return{};for(e=0,i=(a=a.split(";")).length;e<i;e++)""!=(n=$.trim(a[e]))&&(n=n.split(":"),s[$.trim(n[0])]=$.trim(n[1]));return s},revertInlineCSS:function(t,e,i){var n,s,a;for(n=0,s=i.length;n<s;n++)e[a=i[n]]?t.css(a,e[a]):t.css(a,"")},getUUID:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var e=16*Math.random()|0;return("x"==t?e:3&e|8).toString(16)}))},base64toBlob:function(t,e,i){var n,s,a,o,r,l,c;for(e=e||"",i=i||512,n=atob(t),s=[],a=0;a<n.length;a+=i){for(o=n.slice(a,a+i),r=new Array(o.length),l=0;l<o.length;l++)r[l]=o.charCodeAt(l);c=new Uint8Array(r),s.push(c)}return new Blob(s,{type:e})},convertLegacyURL:function(t){return t.replace(/^index\.php\/(.*?)\/\?/,(function(t,e){var i,n,s,a=e.split(/([A-Z][a-z0-9]+)/),o="";for(i=0,n=a.length;i<n;i++)(s=a[i].trim()).length&&(o.length&&(o+="-"),o+=s.toLowerCase());return"index.php?"+o+"/&"}))}}),WCF.Browser={_isChrome:null,isChrome:function(){return null===this._isChrome&&(this._isChrome=!1,/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())&&(this._isChrome=!0)),this._isChrome}},WCF.Dropdown={init:function(t){window.bc_wcfSimpleDropdown.initAll()},initDropdown:function(t,e){window.bc_wcfSimpleDropdown.init(t[0],e)},removeDropdown:function(t){window.bc_wcfSimpleDropdown.destroy(t)},initDropdownFragment:function(t,e){window.bc_wcfSimpleDropdown.initFragment(t[0],e[0])},registerCallback:function(t,e){window.bc_wcfSimpleDropdown.registerCallback(t,e)},_toggle:function(t,e){window.bc_wcfSimpleDropdown._toggle(t,e)},toggleDropdown:function(t,e){window.bc_wcfSimpleDropdown._toggle(null,t,null,e)},getDropdown:function(t){var e=window.bc_wcfSimpleDropdown.getDropdown(t);return e?$(e):null},getDropdownMenu:function(t){var e=window.bc_wcfSimpleDropdown.getDropdownMenu(t);return e?$(e):null},setAlignmentByID:function(t){window.bc_wcfSimpleDropdown.setAlignmentById(t)},setAlignment:function(t,e){window.bc_wcfSimpleDropdown.setAlignment(t[0],e[0])},_closeAll:function(){window.bc_wcfSimpleDropdown.closeAll()},close:function(t){window.bc_wcfSimpleDropdown.close(t)},destroy:function(t){window.bc_wcfSimpleDropdown.destroy(t)}},WCF.Clipboard={init:function(t,e,i,n){require(["EventHandler","WoltLabSuite/Core/Controller/Clipboard"],(function(s,a){for(var o in a.setup({hasMarkedItems:e>0,pageClassName:t,pageObjectId:n}),i)i.hasOwnProperty(o)&&function(t){s.add("com.woltlab.wcf.clipboard",t,(function(e){null!==e.responseData&&i[t].hasOwnProperty(e.responseData.actionName)&&i[t][e.responseData.actionName].triggerEffect(e.responseData.objectIDs)}))}(o)}))},reload:function(){require(["WoltLabSuite/Core/Controller/Clipboard"],(function(t){t.reload()}))}},WCF.PeriodicalExecuter=Class.extend({_callback:null,_delay:0,_intervalID:null,_isExecuting:!1,init:function(t,e){$.isFunction(t)?(this._callback=t,this._interval=e,this.resume()):console.debug("[WCF.PeriodicalExecuter] Given callback is invalid, aborting.")},_execute:function(){if(!this._isExecuting)try{this._isExecuting=!0,this._callback(this),this._isExecuting=!1}catch(t){throw this._isExecuting=!1,t}},stop:function(){this._intervalID&&clearInterval(this._intervalID)},resume:function(){this.restart()},restart:function(){this._intervalID&&this.stop(),this._intervalID=setInterval($.proxy(this._execute,this),this._interval)},setInterval:function(t){this._interval=t,this.restart()}}),WCF.LoadingOverlayHandler={show:function(){require(["WoltLabSuite/Core/Ajax/Status"],(function(t){t.show()}))},hide:function(){require(["WoltLabSuite/Core/Ajax/Status"],(function(t){t.hide()}))},updateIcon:function(t,e){}},WCF.Action={},WCF.Action.Proxy=Class.extend({_ajaxRequest:null,init:function(t){this._ajaxRequest=null,"jsonp"===(t=$.extend(!0,{autoSend:!1,data:{},dataType:"json",after:null,init:null,jsonp:"callback",async:!0,failure:null,showLoadingOverlay:!0,success:null,suppressErrors:!1,type:"POST",url:"index.php?ajax-proxy/&t="+SECURITY_TOKEN,aborted:null,autoAbortPrevious:!1},t)).dataType?require(["AjaxJsonp"],(function(e){e.send(t.url,t.success,t.failure,{parameterName:t.jsonp})})):require(["AjaxRequest"],function(e){this._ajaxRequest=new e({data:t.data,type:t.type,url:t.url,withCredentials:t.url==="index.php?ajax-proxy/&t="+SECURITY_TOKEN,responseType:"json"===t.dataType?"application/json":"",autoAbort:t.autoAbortPrevious,ignoreError:t.suppressErrors,silent:!t.showLoadingOverlay,failure:t.failure,finalize:t.after,success:t.success}),t.autoSend&&this._ajaxRequest.sendRequest()}.bind(this))},sendRequest:function(t){require(["AjaxRequest"],function(e){null!==this._ajaxRequest&&this._ajaxRequest.sendRequest(t)}.bind(this))},abortPrevious:function(){require(["AjaxRequest"],function(t){null!==this._ajaxRequest&&this._ajaxRequest.abortPrevious()}.bind(this))},setOption:function(t,e){require(["AjaxRequest"],function(i){null!==this._ajaxRequest&&this._ajaxRequest.setOption(t,e)}.bind(this))},showLoadingOverlayOnce:function(){},suppressErrors:function(){},_failure:function(t,e,i){},_success:function(t,e,i){},_after:function(){}}),WCF.Action.SimpleProxy=Class.extend({init:function(t,e){this.options=$.extend(!0,{action:"",className:"",elements:null,eventName:"click"},t),this.callbacks=$.extend(!0,{after:null,failure:null,init:null,success:null},e),this.options.elements&&(this.proxy=new WCF.Action.Proxy(this.callbacks),this.options.elements.each($.proxy((function(t,e){$(e).bind(this.options.eventName,$.proxy(this._handleEvent,this))}),this)))},_handleEvent:function(t){this.proxy.setOption("data",{actionName:this.options.action,className:this.options.className,objectIDs:[$(t.target).data("objectID")]}),this.proxy.sendRequest()}}),WCF.Action.Delete=Class.extend({_buttonSelector:"",_callback:null,_className:"",_containerSelector:"",_containers:[],init:function(t,e,i){this._containerSelector=e,this._className=t,this._buttonSelector=i||".jsDeleteButton",this._callback=null,this.proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._initElements(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Action.Delete"+this._className.hashCode(),$.proxy(this._initElements,this))},_initElements:function(){$(this._containerSelector).each(function(t,e){var i,n=$(e),s=n.wcfIdentify();WCF.inArray(s,this._containers)||(i=n.find(this._buttonSelector)).length&&(this._containers.push(s),i.click($.proxy(this._click,this)))}.bind(this))},_click:function(t){var e=$(t.currentTarget);t.preventDefault(),e.data("confirmMessageHtml")||e.data("confirmMessage")?WCF.System.Confirmation.show(e.data("confirmMessageHtml")?e.data("confirmMessageHtml"):e.data("confirmMessage"),$.proxy(this._execute,this),{target:e},void 0,!!e.data("confirmMessageHtml")):(WCF.LoadingOverlayHandler.updateIcon(e),this._sendRequest(e))},_didTriggerEffect:function(t){},_execute:function(t,e){"cancel"!==t&&(WCF.LoadingOverlayHandler.updateIcon(e.target),this._sendRequest(e.target))},_sendRequest:function(t){this.proxy.setOption("data",{actionName:"delete",className:this._className,interfaceName:"wcf\\data\\IDeleteAction",objectIDs:[$(t).data("objectID")]}),this.proxy.sendRequest()},_success:function(t,e,i){this._callback&&this._callback(t.objectIDs),this.triggerEffect(t.objectIDs)},setCallback:function(t){if("function"!=typeof t)throw new TypeError("[WCF.Action.Delete] Expected a valid callback for '"+this._className+"'.");this._callback=t},triggerEffect:function(t){this._containers.forEach(function(e){var i,n=$("#"+e),s=n.find(this._buttonSelector);WCF.inArray(s.data("objectID"),t)&&(i=this,n.wcfBlindOut("up",(function(){var t=$(this).remove();i._containers.splice(i._containers.indexOf(t.wcfIdentify()),1),i._didTriggerEffect(t),s.data("eventName")&&WCF.System.Event.fireEvent("com.woltlab.wcf.action.delete",s.data("eventName"),{button:s,container:t})})))}.bind(this))}}),WCF.Action.NestedDelete=WCF.Action.Delete.extend({triggerEffect:function(t){var e,i,n;for(e in this._containers)i=$("#"+this._containers[e]),WCF.inArray(i.find(this._buttonSelector).data("objectID"),t)&&(i.has("ol").has("li").length?(i.is(":only-child")?i.parent().replaceWith(i.find("> ol")):i.replaceWith(i.find("> ol > li")),this._containers.splice(this._containers.indexOf(i.wcfIdentify()),1),this._didTriggerEffect(i)):(n=this,i.wcfBlindOut("up",(function(){$(this).remove(),n._containers.splice(n._containers.indexOf($(this).wcfIdentify()),1),n._didTriggerEffect($(this))}))))}}),WCF.Action.Toggle=Class.extend({_buttonSelector:".jsToggleButton",_className:"",_containerSelector:"",_containers:[],init:function(t,e,i){this._containerSelector=e,this._className=t,this._buttonSelector=i||".jsToggleButton",this._containers=[];var n={success:$.proxy(this._success,this)};this.proxy=new WCF.Action.Proxy(n),this._initElements(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Action.Toggle"+this._className.hashCode(),$.proxy(this._initElements,this))},_initElements:function(){$(this._containerSelector).each($.proxy((function(t,e){var i=$(e),n=i.wcfIdentify();WCF.inArray(n,this._containers)||(this._containers.push(n),i.find(this._buttonSelector).click($.proxy(this._click,this)))}),this))},_click:function(t){var e=$(t.currentTarget);t.preventDefault(),e.data("confirmMessageHtml")||e.data("confirmMessage")?WCF.System.Confirmation.show(e.data("confirmMessageHtml")?e.data("confirmMessageHtml"):e.data("confirmMessage"),$.proxy(this._execute,this),{target:e},void 0,!!e.data("confirmMessageHtml")):(WCF.LoadingOverlayHandler.updateIcon(e),this._sendRequest(e))},_execute:function(t,e){"cancel"!==t&&(WCF.LoadingOverlayHandler.updateIcon(e.target),this._sendRequest(e.target))},_sendRequest:function(t){this.proxy.setOption("data",{actionName:"toggle",className:this._className,interfaceName:"wcf\\data\\IToggleAction",objectIDs:[$(t).data("objectID")]}),this.proxy.sendRequest()},_success:function(t,e,i){this.triggerEffect(t.objectIDs)},triggerEffect:function(t){var e,i,n;for(e in this._containers)n=(i=$("#"+this._containers[e])).find(this._buttonSelector),WCF.inArray(n.data("objectID"),t)&&(i.wcfHighlight(),this._toggleButton(i,n))},_toggleButton:function(t,e){var i="";const n=e[0].querySelector("fa-icon");"square"===n.name?(n.setIcon("square-check"),i=e.data("disableTitle")?e.data("disableTitle"):WCF.Language.get("wcf.global.button.disable"),e.attr("title",i)):(n.setIcon("square"),i=e.data("enableTitle")?e.data("enableTitle"):WCF.Language.get("wcf.global.button.enable"),e.attr("title",i)),t.toggleClass("disabled")}}),WCF.Date={},WCF.Dictionary=Class.extend({_variables:{},init:function(){this._variables={}},add:function(t,e){this._variables[t]=e},addObject:function(t){for(var e in t)this.add(e,t[e])},addDictionary:function(t){t.each($.proxy((function(t){this.add(t.key,t.value)}),this))},get:function(t){return this.isset(t)?this._variables[t]:null},isset:function(t){return this._variables.hasOwnProperty(t)},remove:function(t){delete this._variables[t]},each:function(t){var e;if($.isFunction(t))for(e in this._variables)t({key:e,value:this._variables[e]})},count:function(){return $.getLength(this._variables)},isEmpty:function(){return!this.count()}}),null==window.WCF.Language&&(WCF.Language={add:function(t,e){require(["Language"],(function(i){i.add(t,e)}))},addObject:function(t){require(["Language"],(function(e){e.addObject(t)}))},get:function(t,e){throw new Error('Call to deprecated WCF.Language.get("'+t+'")')}}),WCF.Number={round:function(t,e){return e=Math.pow(10,e||0),Math.round(t*e)/e}},WCF.String={addThousandsSeparator:function(t){return Number(t).toLocaleString(document.documentElement.lang)},escapeHTML:function(t){return String(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},escapeRegExp:function(t){return String(t).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")},formatNumeric:function(t,e){var i=e||2;return Number(t).toLocaleString(document.documentElement.lang,{maximumFractionDigits:i}).replace("-","−")},lcfirst:function(t){return String(t).substring(0,1).toLowerCase()+t.substring(1)},ucfirst:function(t){return String(t).substring(0,1).toUpperCase()+t.substring(1)},unescapeHTML:function(t){return String(t).replace(/&amp;/g,"&").replace(/&quot;/g,'"').replace(/&lt;/g,"<").replace(/&gt;/g,">")}},WCF.TabMenu={init:function(){require(["WoltLabSuite/Core/Ui/TabMenu"],(function(t){t.setup()}))},reload:function(){this.init()}},WCF.Collapsible={},WCF.Collapsible.Simple={init:function(){$(".jsCollapsible").each($.proxy((function(t,e){this._initButton(e)}),this))},_initButton:function(t){var e=$(t);e.data("isOpen")||$("#"+e.data("collapsibleContainer")).hide(),e.click($.proxy(this._toggle,this))},_toggle:function(t){var e=$(t.currentTarget),i=e.data("isOpen"),n=$("#"+$.wcfEscapeID(e.data("collapsibleContainer")));return i?(n.stop().wcfBlindOut("vertical",$.proxy((function(){this._toggleImage(e)}),this)),i=!1):(n.stop().wcfBlindIn("vertical",$.proxy((function(){this._toggleImage(e)}),this)),i=!0),e.data("isOpen",i),t.stopPropagation(),!1},_toggleImage:function(t){const e=t[0].querySelector("fa-icon");t.data("isOpen")?e.setIcon("chevron-down"):e.setIcon("chevron-right")}},WCF.Collapsible.Remote=Class.extend({_className:"",_containers:{},_containerData:{},_proxy:null,init:function(t){this._className=t,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._init(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Collapsible.Remote",$.proxy(this._init,this))},_init:function(t){this._getContainers().each($.proxy((function(t,e){var i=$(e),n=i.wcfIdentify();void 0===this._containers[n]&&(this._containers[n]=i,this._initContainer(n))}),this))},_initContainer:function(t){var e=this._getTarget(t),i=this._getButtonContainer(t),n=this._createButton(t,i);this._containerData[t]={button:n,buttonContainer:i,isOpen:this._containers[t].data("isOpen"),target:e},this._containers[t].data("isOpen")||$("#"+t).addClass("jsCollapsed")},_getContainers:function(){},_getTarget:function(t){},_getButtonContainer:function(t){},_createButton:function(t,e){var i=elBySel(".jsStaticCollapsibleButton",e[0]);return null!==i&&i.parentNode===e[0]?(i.classList.remove("jsStaticCollapsibleButton"),i=$(i)):i=$(`<button type="button" class="collapsibleButton jsToolti" title="${WCF.Language.get("wcf.global.button.collapsible")}">\n\t\t\t\t<fa-icon size="16" name="chevron-down"></fa-icon>\n\t\t\t</button>`).prependTo(e),i.data("containerID",t).click($.proxy(this._toggleContainer,this)),i},_toggleContainer:function(t){var e=$(t.currentTarget).data("containerID"),i=this._containerData[e].isOpen,n=i?"open":"close",s=i?"close":"open";this._proxy.setOption("data",{actionName:"loadContainer",className:this._className,interfaceName:"wcf\\data\\ILoadableContainerAction",objectIDs:[this._getObjectID(e)],parameters:$.extend(!0,{containerID:e,currentState:n,newState:s},this._getAdditionalParameters(e))}),this._proxy.sendRequest(),$("#"+e).toggleClass("jsCollapsed")},_exchangeIcon:function(t,e){e=e||"spinner",t[0].querySelector("fa-icon").setIcon(e)},_getObjectID:function(t){return $("#"+t).data("objectID")},_getAdditionalParameters:function(t){return{}},_updateContent:function(t,e,i){this._containerData[t].target.html(e)},_success:function(t,e,i){var n,s;t.returnValues.containerID&&(n=t.returnValues.containerID,this._containers[n]&&(this._containerData[n].isOpen=!!t.returnValues.isOpen,s=t.returnValues.isOpen?"open":"close",this._updateContent(n,$.trim(t.returnValues.content),s)))}}),WCF.Collapsible.SimpleRemote=WCF.Collapsible.Remote.extend({init:function(t){this._super(t),this._proxy=new WCF.Action.Proxy({showLoadingOverlay:!1})},_initContainer:function(t){this._super(t),this._containerData[t].isOpen||(this._containerData[t].target.hide(),this._exchangeIcon(this._containerData[t].button,"chevron-right"))},_toggleContainer:function(t){var e=$(t.currentTarget).data("containerID"),i=this._containerData[e].isOpen,n=i?"open":"close",s=i?"close":"open";this._proxy.setOption("data",{actionName:"toggleContainer",className:this._className,interfaceName:"wcf\\data\\IToggleContainerAction",objectIDs:[this._getObjectID(e)],parameters:$.extend(!0,{containerID:e,currentState:n,newState:s},this._getAdditionalParameters(e))}),this._proxy.sendRequest(),this._exchangeIcon(this._containerData[e].button,"open"===s?"chevron-down":"chevron-right"),"open"===s?this._containerData[e].target.show():this._containerData[e].target.hide(),$("#"+e).toggleClass("jsCollapsed"),this._containerData[e].isOpen="open"===s}}),WCF.User={userID:0,username:"",init:function(t,e){this.userID=t,this.username=e}},WCF.Effect={},WCF.Effect.Scroll=Class.extend({scrollTo:function(t,e,i){var n,s,a;return!t.length||((n=t.getOffsets("offset").top)>(s=$(document).height())-(a=$(window).height())&&(n=s-a)<0&&(n=0),!0===i?$("html,body").scrollTop(n):$("html,body").animate({scrollTop:n},400,(function(t,e,i,n,s){return-n*((e=e/s-1)*e*e*e-1)+i})),!1)}}),WCF.CloseOverlayHandler={addCallback:function(t,e){require(["Ui/CloseOverlay"],(function(i){i.add(t,e)}))},removeCallback:function(t){require(["Ui/CloseOverlay"],(function(e){e.remove(t)}))},forceExecution:function(){require(["Ui/CloseOverlay"],(function(t){t.execute()}))}},WCF.DOMNodeInsertedHandler={addCallback:function(t,e){require(["WoltLabSuite/Core/Dom/Change/Listener"],(function(t){t.add("__legacy__",e)}))},_executeCallbacks:function(){require(["WoltLabSuite/Core/Dom/Change/Listener"],(function(t){t.trigger()}))},execute:function(){this._executeCallbacks()}},WCF.DOMNodeRemovedHandler={_callbacks:new WCF.Dictionary,_isExecuting:!1,_isListening:!1,addCallback:function(t,e){if(this._bindListener(),this._callbacks.isset(t))return console.debug("[WCF.DOMNodeRemovedHandler] identifier '"+t+"' is already bound to a callback"),!1;this._callbacks.add(t,e)},removeCallback:function(t){this._callbacks.isset(t)&&this._callbacks.remove(t)},_bindListener:function(){this._isListening||(window.MutationObserver?new MutationObserver(function(t){var e=!1;t.forEach(function(t){t.removedNodes.length&&(e=!0)}.bind(this)),e&&this._executeCallbacks({})}.bind(this)).observe(document.body,{childList:!0,subtree:!0}):$(document).bind("DOMNodeRemoved",$.proxy(this._executeCallbacks,this)),this._isListening=!0)},_executeCallbacks:function(t){this._isExecuting||(this._isExecuting=!0,this._callbacks.each((function(e){e.value(t)})),this._isExecuting=!1)}},WCF.Option={},WCF.Option.Handler=Class.extend({init:function(){this._initOptions(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Option.Handler",$.proxy(this._initOptions,this))},_initOptions:function(){$(".jsEnablesOptions").each($.proxy(this._initOption,this))},_initOption:function(t,e){this._change(e),$(e).change($.proxy(this._handleChange,this))},_handleChange:function(t){this._change($(t.target))},_change:function(option){var disableOptions,enableOptions,isActive,$value,relevantDisableOptions,relevantEnableOptions,$index,$item;switch(option=$(option),disableOptions=eval(option.data("disableOptions")),enableOptions=eval(option.data("enableOptions")),option.getTagName()){case"input":switch(option.attr("type")){case"checkbox":this._execute(option.prop("checked"),disableOptions,enableOptions);break;case"radio":option.prop("checked")&&(isActive=!0,option.data("isBoolean")&&1!=option.val()&&(isActive=!1),this._execute(isActive,disableOptions,enableOptions))}break;case"select":if($value=option.val(),relevantDisableOptions=[],relevantEnableOptions=[],disableOptions.length>0)for($index in disableOptions)$item=disableOptions[$index],$item.value==$value?relevantDisableOptions.push($item.option):relevantEnableOptions.push($item.option);if(enableOptions.length>0)for($index in enableOptions)$item=enableOptions[$index],$item.value==$value?relevantEnableOptions.push($item.option):relevantDisableOptions.push($item.option);this._execute(!0,relevantDisableOptions,relevantEnableOptions)}},_execute:function(t,e,i){var n,s,a,o;if(e.length>0)for(n=0,s=e.length;n<s;n++)a=e[n],$.wcfIsset(a)?this._enableOption(a,!t):(o=$("."+$.wcfEscapeID(a)+"Input")).length&&this._enableOptions(o.children("dd").find("input, select, textarea"),!t);if(i.length>0)for(n=0,s=i.length;n<s;n++)a=i[n],$.wcfIsset(a)?this._enableOption(a,t):(o=$("."+$.wcfEscapeID(a)+"Input")).length&&this._enableOptions(o.children("dd").find("input, select, textarea"),t)},_enableOption:function(t,e){this._enableOptionElement($("#"+$.wcfEscapeID(t)),e)},_enableOptionElement:function(t,e){var i,n,s,a;"select"==(i=(t=$(t)).getTagName())||"input"==i&&("checkbox"==t.attr("type")||"file"==t.attr("type")||"radio"==t.attr("type"))?("input"===i&&"radio"===t[0].type&&t[0].checked||(e?t.enable():t.disable()),t.parents(".optionTypeBoolean:eq(0)")&&(n=t.wcfIdentify().replace(/\./g,"\\."),s=$("#"+n+"_no"),e?s.enable():s.disable(),(a=$("#"+n+"_never")).length&&(e?a.enable():a.disable()))):e?t.removeAttr("readonly"):t.attr("readonly",!0),e?t.closest("dl").removeClass("disabled"):t.closest("dl").addClass("disabled")},_enableOptions:function(t,e){for(var i=0,n=t.length;i<n;i++)this._enableOptionElement(t[i],e)}}),WCF.PageVisibilityHandler={_callbacks:new WCF.Dictionary,_isListening:!1,_hiddenFieldName:"",addCallback:function(t,e){if(this._bindListener(),this._callbacks.isset(t))return console.debug("[WCF.PageVisibilityHandler] identifier '"+t+"' is already bound to a callback"),!1;this._callbacks.add(t,e)},removeCallback:function(t){this._callbacks.isset(t)&&this._callbacks.remove(t)},_bindListener:function(){if(!this._isListening){var t=null;void 0!==document.hidden?(this._hiddenFieldName="hidden",t="visibilitychange"):void 0!==document.mozHidden?(this._hiddenFieldName="mozHidden",t="mozvisibilitychange"):void 0!==document.msHidden?(this._hiddenFieldName="msHidden",t="msvisibilitychange"):void 0!==document.webkitHidden&&(this._hiddenFieldName="webkitHidden",t="webkitvisibilitychange"),null===t?console.debug("[WCF.PageVisibilityHandler] This browser does not support the page visibility API."):$(document).on(t,$.proxy(this._executeCallbacks,this)),this._isListening=!0}},_executeCallbacks:function(t){if(!this._isExecuting){this._isExecuting=!0;var e=document[this._hiddenFieldName];this._callbacks.each((function(t){t.value(e)})),this._isExecuting=!1}}},WCF.Table={},WCF.Table.EmptyTableHandler=Class.extend({_options:{},_rowClassName:"",init:function(t,e,i){this._rowClassName=e,this._tableContainer=t,this._options=$.extend(!0,{emptyMessage:null,emptyMessageHtml:null,messageType:"info",refreshPage:!1,updatePageNumber:!1,isTable:0!==this._tableContainer.find("table").length},i||{}),WCF.DOMNodeRemovedHandler.addCallback("WCF.Table.EmptyTableHandler."+e,$.proxy(this._remove,this))},_getRowCount:function(){return this._tableContainer.find((this._options.isTable?"table tr.":".tabularList .")+this._rowClassName).length},_handleEmptyTable:function(){var t,e;this._options.emptyMessage?this._tableContainer.replaceWith($("<p />").addClass(this._options.messageType).text(this._options.emptyMessage)):this._options.emptyMessageHtml?this._tableContainer.replaceWith($("<p />").addClass(this._options.messageType).html(this._options.emptyMessageHtml)):this._options.refreshPage?this._options.updatePageNumber?(t=window.location.href.match(/(\?|&)pageNo=(\d+)/g))&&(e=t[t.length-1].match(/\d+/g),this._options.updatePageNumber>0?e++:e--,window.location=window.location.href.replace(t[t.length-1],t[t.length-1][0]+"pageNo="+e)):window.location.reload():this._tableContainer.remove()},_remove:function(t){var e;$.getLength(t)?(e=$(t.target)).hasClass(this._rowClassName)&&(this._options.isTable?1==e.parents("tbody:eq(0)").children("tr").length&&this._handleEmptyTable():1===this._getRowCount()&&this._handleEmptyTable()):this._getRowCount()||this._handleEmptyTable()}}),WCF.Search={},WCF.Search.Base=Class.extend({_callback:null,_caretAt:-1,_className:"",_commaSeperated:!1,_delay:0,_excludedSearchValues:[],_itemCount:0,_itemIndex:-1,_lastValue:"",_list:null,_oldSearchString:[],_proxy:null,_searchInput:null,_triggerLength:3,_timer:null,init:function(t,e,i,n,s){null==e||$.isFunction(e)?(this._callback=e||null,this._caretAt=-1,this._delay=0,this._excludedSearchValues=[],this._lastValue="",i&&(this._excludedSearchValues=i),this._searchInput=$(t),this._searchInput.length?(this._searchInput.keydown($.proxy(this._keyDown,this)).keyup($.proxy(this._keyUp,this)).wrap('<span class="dropdown" />'),$.browser.mozilla&&$.browser.touch&&this._searchInput.on("input",$.proxy(this._keyUp,this)),this._list=$('<ul class="dropdownMenu" />').insertAfter(this._searchInput),this._commaSeperated=!!n,this._oldSearchString=[],this._itemCount=0,this._itemIndex=-1,this._proxy=new WCF.Action.Proxy({showLoadingOverlay:!0===s,success:$.proxy(this._success,this),autoAbortPrevious:!0}),this._searchInput.is("input")&&this._searchInput.attr("autocomplete","off"),this._searchInput.blur($.proxy(this._blur,this)),WCF.Dropdown.initDropdownFragment(this._searchInput.parent(),this._list)):console.debug("[WCF.Search.Base] Selector '"+t+"' for search input is invalid, aborting.")):console.debug("[WCF.Search.Base] The given callback is invalid, aborting.")},_blur:function(){var t=this;new WCF.PeriodicalExecuter((function(e){t._list.is(":visible")&&t._clearList(!1),e.stop()}),250)},_keyDown:function(t){if(t.which===$.ui.keyCode.ENTER){var e=this._searchInput.parents(".dropdown");e.data("disableAutoFocus")?-1!==this._itemIndex&&t.preventDefault():(e.data("preventSubmit")||-1!==this._itemIndex)&&t.preventDefault()}},_keyUp:function(t){var e,i,n;switch(t.which){case 37:case 39:return;case 38:return void this._selectPreviousItem();case 40:return void this._selectNextItem();case 13:return this._selectElement(t)}if(""===(e=this._getSearchString(t)))this._clearList(!1);else if(e.length>=this._triggerLength){if(this._lastValue===e)return;this._lastValue=e,i={data:{excludedSearchValues:this._excludedSearchValues,searchString:e}},this._delay?(null!==this._timer&&this._timer.stop(),n=this,this._timer=new WCF.PeriodicalExecuter((function(){n._queryServer(i),n._timer.stop(),n._timer=null}),this._delay)):this._queryServer(i)}else this._clearList(!1)},_queryServer:function(t){this._searchInput.parents(".searchBar").addClass("loading"),this._proxy.setOption("data",{actionName:"getSearchResultList",className:this._className,interfaceName:"wcf\\data\\ISearchAction",parameters:this._getParameters(t)}),this._proxy.sendRequest()},setDelay:function(t){this._delay=t},_selectNextItem:function(){0!==this._itemCount&&(this._itemIndex++,this._itemIndex===this._itemCount&&(this._itemIndex=0),this._highlightSelectedElement())},_selectPreviousItem:function(){0!==this._itemCount&&(this._itemIndex--,-1===this._itemIndex&&(this._itemIndex=this._itemCount-1),this._highlightSelectedElement())},_highlightSelectedElement:function(){this._list.find("li").removeClass("dropdownNavigationItem"),this._list.find("li:eq("+this._itemIndex+")").addClass("dropdownNavigationItem")},_selectElement:function(t){return 0===this._itemCount||(this._list.find("li.dropdownNavigationItem").trigger("click"),!1)},_getSearchString:function(t){var e,i,n,s,a=$.trim(this._searchInput.val());if(this._commaSeperated){if((t.keyCode||t.which)==$.ui.keyCode.COMMA)return"";for(i=(e=a.split(",")).length,n=0;n<i;n++)e[n]=$.trim(e[n]);for(n=0;n<i;n++){if(s=e[n],!this._oldSearchString[n]){a=s;break}if(s!=this._oldSearchString[n]){a=s,this._caretAt=n;break}}this._oldSearchString=e}return a},_getParameters:function(t){return t},_success:function(t,e,i){var n,s,a;if(this._clearList(!1),this._searchInput.parents(".searchBar").removeClass("loading"),$.getLength(t.returnValues))for(n in t.returnValues)s=t.returnValues[n],this._createListItem(s);else if(!this._handleEmptyResult())return;WCF.CloseOverlayHandler.addCallback("WCF.Search.Base",((t,e)=>{"dropdown"===t&&e===this._searchInput[0].parentElement.id||this._clearList()})),a=this._searchInput.parents(".dropdown").wcfIdentify(),WCF.Dropdown.getDropdownMenu(a).hasClass("dropdownOpen")||(WCF.Dropdown.toggleDropdown(a,!0),this._openDropdown()),this._itemIndex=-1,WCF.Dropdown.getDropdown(a).data("disableAutoFocus")||this._selectNextItem()},_openDropdown:function(){},_handleEmptyResult:function(){return!1},_createListItem:function(t){var e=$("<li><span>"+WCF.String.escapeHTML(t.label)+"</span></li>").appendTo(this._list);return e.data("objectID",t.objectID).data("label",t.label).click($.proxy(this._executeCallback,this)),this._itemCount++,e},_executeCallback:function(t){var e,i,n=!1,s=$(t.currentTarget);this._commaSeperated?(e=s.data("label"),this._oldSearchString[this._caretAt]=e,this._searchInput.val(this._oldSearchString.join(", ")),$.browser.webkit&&this._searchInput.css({display:"block"}),i=this._searchInput.val().toLowerCase().indexOf(e.toLowerCase())+e.length,this._searchInput.focus().setCaret(i)):null===this._callback?this._searchInput.val(s.data("label")):n=!0===this._callback(s.data()),this._clearList(n)},_clearList:function(t){t&&!this._commaSeperated&&this._searchInput.val(""),WCF.Dropdown.getDropdown(this._searchInput.parents(".dropdown").wcfIdentify()).removeClass("dropdownOpen"),WCF.Dropdown.getDropdownMenu(this._searchInput.parents(".dropdown").wcfIdentify()).removeClass("dropdownOpen"),this._list.end().empty(),WCF.CloseOverlayHandler.removeCallback("WCF.Search.Base"),this._itemCount=0,this._itemIndex=-1},addExcludedSearchValue:function(t){WCF.inArray(t,this._excludedSearchValues)||this._excludedSearchValues.push(t)},removeExcludedSearchValue:function(t){var e=$.inArray(t,this._excludedSearchValues);-1!=e&&this._excludedSearchValues.splice(e,1)}}),WCF.Search.User=WCF.Search.Base.extend({_className:"wcf\\data\\user\\UserAction",_includeUserGroups:!1,init:function(t,e,i,n,s){this._includeUserGroups=i,this._super(t,e,n,s)},_getParameters:function(t){return t.data.includeUserGroups=this._includeUserGroups?1:0,t},_createListItem:function(t){var e,i,n=this._super(t),s=null;return t.icon?s=$(t.icon):this._includeUserGroups&&"group"===t.type&&(s=$('<fa-icon size="16" name="users"></fa-icon>')),s&&(e=n.find("span").detach(),(i=$("<div />").addClass("box16").appendTo(n)).append(s),i.append($("<div />").append(e))),n.data("type",t.type),n}}),WCF.System={},WCF.System.Dependency={},WCF.System.Dependency.Manager={_callbacks:{},_loaded:[],_setupCallbacks:{},register:function(t,e){$.isFunction(e)?WCF.inArray(t,this._loaded)?setTimeout((function(){e()}),1):(this._callbacks[t]||(this._callbacks[t]=[]),this._callbacks[t].push(e)):console.debug("[WCF.System.Dependency.Manager] Callback for identifier '"+t+"' is invalid, aborting.")},setup:function(t,e){$.isFunction(e)?(this._setupCallbacks[t]||(this._setupCallbacks[t]=[]),this._setupCallbacks[t].push(e)):console.debug("[WCF.System.Dependency.Manager] Setup callback for identifier '"+t+"' is invalid, aborting.")},invoke:function(t){var e,i;if(this._setupCallbacks[t]){for(e=0,i=this._setupCallbacks[t].length;e<i;e++)this._setupCallbacks[t][e]();delete this._setupCallbacks[t]}if(this._loaded.push(t),this._callbacks[t]){for(e=0,i=this._callbacks[t].length;e<i;e++)this._callbacks[t][e]();delete this._callbacks[t]}},reset:function(t){var e=this._loaded.indexOf(t);-1!==e&&this._loaded.splice(e,1)}},WCF.System.ObjectStore={_objects:{},add:function(t,e){void 0===this._objects[t]&&(this._objects[t]=[]),this._objects[t].push(e)},invoke:function(t,e){if(this._objects[t])for(var i=0;i<this._objects[t].length;i++)e(this._objects[t][i])}},WCF.System.Captcha={_registeredCaptchas:[],addCallback:function(t,e){require(["WoltLabSuite/Core/Controller/Captcha"],function(i){try{i.add(t,e),this._registeredCaptchas.push(t)}catch(t){if(t instanceof TypeError)return void console.debug("[WCF.System.Captcha] Given callback is no function")}}.bind(this))},getData:function(t){var e,i;if(-1===this._registeredCaptchas.indexOf(t))return e;i=require("WoltLabSuite/Core/Controller/Captcha");try{e=i.getData(t)}catch(e){console.debug('[WCF.System.Captcha] Unknow captcha id "'+t+'"')}return e},removeCallback:function(t){require(["WoltLabSuite/Core/Controller/Captcha"],function(e){try{e.delete(t),this._registeredCaptchas.splice(this._registeredCaptchas.indexOf(item),1)}catch(t){}}.bind(this))}},WCF.System.Page={},WCF.System.Notification=Class.extend({_cssClassNames:"",_message:"",init:function(t,e){this._cssClassNames=e||"",this._message=t||""},show:function(t,e,i,n){require(["Ui/Notification"],function(e){e.show(i||this._message,t,n||this._cssClassNames)}.bind(this))}}),WCF.System.Confirmation={show:function(t,e,i,n,s){if("object"==typeof n){var a=$("<div />");a.append(n),n=a.html()}require(["Ui/Confirmation"],(function(a){a.show({legacyCallback:e,message:t,parameters:i,template:n||"",messageIsHtml:!0===s})}))}},WCF.System.DisableScrolling={_depth:0,_oldOverflow:null,disable:function(){$.browser.touch||(0===this._depth&&(this._oldOverflow=$(document.body).css("overflow"),$(document.body).css("overflow","hidden")),this._depth++)},enable:function(){0!==this._depth&&(this._depth--,0===this._depth&&$(document.body).css("overflow",this._oldOverflow))}},WCF.System.DisableZoom={_depth:0,_oldViewportSettings:null,disable:function(){if(0===this._depth){var t=$("meta[name=viewport]");this._oldViewportSettings=t.attr("content"),t.attr("content",this._oldViewportSettings+",maximum-scale=1")}this._depth++},enable:function(){0!==this._depth&&(this._depth--,0===this._depth&&$("meta[name=viewport]").attr("content",this._oldViewportSettings))}},WCF.System.PushNotification={_callbacks:{},addCallback:function(t,e){void 0===this._callbacks[t]&&(this._callbacks[t]=[]),this._callbacks[t].push(e)},executeCallbacks:function(t){var e,i;for(e in t.returnValues)if(void 0!==this._callbacks[e])for(i=0;i<this._callbacks[e].length;i++)this._callbacks[e][i](t.returnValues[e])}},WCF.System.Event={addListener:function(t,e,i){return window.__wcf_bc_eventHandler.add(t,e,i)},removeListener:function(t,e,i){return window.__wcf_bc_eventHandler.remove(t,e,i)},removeAllListeners:function(t,e){return window.__wcf_bc_eventHandler.removeAll(t,e)},fireEvent:function(t,e,i){window.__wcf_bc_eventHandler.fire(t,e,i)}},WCF.System.Worker=Class.extend({_aborted:!1,_actionName:"",_callback:null,_className:"",_dialog:null,_proxy:null,_title:"",init:function(t,e,i,n,s){this._aborted=!1,this._actionName=t,this._callback=s||null,this._className=e,this._dialog=null,this._proxy=new WCF.Action.Proxy({autoSend:!0,data:{actionName:this._actionName,className:this._className,parameters:n||{}},showLoadingOverlay:!1,success:$.proxy(this._success,this)}),this._title=i},_success:function(t){var e,i;null===this._dialog&&(this._dialog=$("<div />").hide().appendTo(document.body),this._dialog.wcfDialog({closeConfirmMessage:WCF.Language.get("wcf.worker.abort.confirmMessage"),closeViaModal:!1,onClose:$.proxy((function(){this._aborted=!0,this._proxy.abortPrevious(),window.location.reload()}),this),title:this._title})),this._aborted||(t.returnValues.template&&this._dialog.html(t.returnValues.template),this._dialog.find("progress").attr("value",t.returnValues.progress).text(t.returnValues.progress+"%").next("span").text(t.returnValues.progress+"%"),t.returnValues.progress<100?((e=t.returnValues.parameters||{}).loopCount=t.returnValues.loopCount,this._proxy.setOption("data",{actionName:this._actionName,className:this._className,parameters:e}),this._proxy.sendRequest()):null!==this._callback?this._callback(this,t):(this._dialog[0].querySelector("fa-icon").setIcon("check"),this._dialog.find(".contentHeader h1").text(WCF.Language.get("wcf.global.worker.completed")),i=$('<div class="formSubmit" />').appendTo(this._dialog),$('<button type="button" class="button buttonPrimary">'+WCF.Language.get("wcf.global.button.next")+"</button>").appendTo(i).focus().click((function(){t.returnValues.redirectURL?window.location=t.returnValues.redirectURL:window.location.reload()})),this._dialog.wcfDialog("render")))}}),WCF.InlineEditor=Class.extend({_callbacks:[],_dropdowns:{},_elements:{},_notification:null,_options:[],_proxy:null,_triggerElements:{},_updateData:[],_elementSelector:null,_quickOption:null,_dropDownIdToElementId:new Map,init:function(t){var e,i;if(this._elementSelector=t,$(t).length){for(this._setOptions(),e=0,i=this._options.length;e<i;e++)if(this._options[e].isQuickOption){this._quickOption=this._options[e].optionName;break}this.rebuild(),WCF.DOMNodeInsertedHandler.addCallback("WCF.InlineEditor"+this._elementSelector.hashCode(),$.proxy(this.rebuild,this)),this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),WCF.CloseOverlayHandler.addCallback("WCF.InlineEditor",$.proxy(this._closeAll,this)),this._notification=new WCF.System.Notification(WCF.Language.get("wcf.global.success"),"success")}},rebuild:function(){var t=$(this._elementSelector),e=this;t.each((function(t,i){var n,s=$(i),a=s.wcfIdentify();if(void 0===e._elements[a]){if(null===(n=e._getTriggerElement(s))||1!==n.length)return;n[0].addEventListener("keydown",(t=>{"Enter"===t.key&&(t.preventDefault(),n[0].dataset.isKeyboardClick="true",e._show(t))})),n.on("click",$.proxy(e._show,e)).data("elementID",a),n[0].dataset.requiresSynthethicClick=!0,e._quickOption&&n.disableSelection().data("optionName",e._quickOption).dblclick($.proxy(e._click,e)),e._elements[a]=s}}))},_closeAll:function(t,e){let i="";"dropdown"===t&&(i=this._dropDownIdToElementId.get(e||"")||""),Object.keys(this._elements).forEach((t=>{t!==i&&this._hide(t)}))},_setOptions:function(){this._options=[]},registerCallback:function(t){$.isFunction(t)&&this._callbacks.push(t)},_getTriggerElement:function(t){return null},_show:function(t){var e,i,n,s,a,o,r,l,c,h,u;for(t.preventDefault(),e=$(t.currentTarget).data("elementID"),i=null,this._dropdowns[e]||(this._triggerElements[e]=i=this._getTriggerElement(this._elements[e]).addClass("dropdownToggle"),(n=i[0].parentNode)&&"LI"===n.nodeName&&1===n.childElementCount||n&&n.classList.contains("contentInteractionButton")?n.classList.add("dropdown"):i.wrap('<span class="dropdown" />'),this._dropdowns[e]=$('<ul class="dropdownMenu" />').insertAfter(i)),this._dropdowns[e].empty(),this._dropDownIdToElementId.has(e)||(null===i&&(i=this._getTriggerElement(this._elements[e])),this._dropDownIdToElementId.set(i.parent().wcfIdentify(),e)),s=!1,a="",o=0,r=this._options.length;o<r;o++)"divider"===(l=this._options[o]).optionName?""!==a&&"divider"!==a&&($('<li class="dropdownDivider" />').appendTo(this._dropdowns[e]),a=l.optionName):(this._validate(e,l.optionName)||this._validateCallbacks(e,l.optionName))&&($("<li><span>"+l.label+"</span></li>").appendTo(this._dropdowns[e]).data("elementID",e).data("optionName",l.optionName).data("isQuickOption",!!l.isQuickOption).click($.proxy(this._click,this)),s=!0,a=l.optionName);return s&&((c=this._dropdowns[e].children().last()).hasClass("dropdownDivider")&&c.remove(),h=null,u=0,this._dropdowns[e].children().each((function(t,e){var i=$(e);i.hasClass("dropdownDivider")||(i.data("isQuickOption")?h=i:u++)})),!u)?(h.trigger("click"),this._triggerElements[e]&&WCF.Dropdown.close(this._triggerElements[e].parents(".dropdown").wcfIdentify()),!1):(null!==i&&WCF.Dropdown.initDropdown(i,t.originalEvent||t),!1)},_validate:function(t,e){return!1},_validateCallbacks:function(t,e){var i,n=this._callbacks.length;if(n)for(i=0;i<n;i++)if(this._callbacks[i].validate(this._elements[t],e))return!0;return!1},_success:function(t,e,i){this._updateData.length&&(this._updateState(t),this._updateData=[])},_updateState:function(t){},_click:function(t){var e=$(t.currentTarget),i=e.data("elementID"),n=e.data("optionName");this._execute(i,n)||this._executeCallback(i,n),this._hide(i)},_execute:function(t,e){return!1},_executeCallback:function(t,e){var i,n=this._callbacks.length;if(n)for(i=0;i<n;i++)if(this._callbacks[i].execute(this._elements[t],e))return!0;return!1},_hide:function(t){this._dropdowns[t]&&this._dropdowns[t].empty().removeClass("dropdownOpen")}}),WCF.Upload=Class.extend({_name:"__files[]",_buttonSelector:null,_fileListSelector:null,_fileUpload:null,_className:"",_iframe:null,_internalFileID:0,_options:{},_uploadMatrix:[],_supportsAJAXUpload:!0,_overlay:null,init:function(t,e,i,n){this._buttonSelector=t,this._fileListSelector=e,this._className=i,this._internalFileID=0,this._options=$.extend(!0,{action:"upload",multiple:!1,url:"index.php?ajax-upload/&t="+SECURITY_TOKEN},n||{}),this._options.url=WCF.convertLegacyURL(this._options.url),0===this._options.url.indexOf("index.php")&&(this._options.url=WSC_API_URL+this._options.url);var s=new XMLHttpRequest;this._supportsAJAXUpload=s&&"upload"in s&&"onprogress"in s.upload,this._createButton()},_createButton:function(){var t;this._supportsAJAXUpload?(this._fileUpload=$('<input type="file" name="'+this._name+'" '+(this._options.multiple?'multiple="true" ':"")+"/>"),this._fileUpload.change($.proxy(this._upload,this)),t=$('<p class="button uploadButton"><span>'+WCF.Language.get("wcf.global.button.upload")+"</span></p>"),elAttr(t[0],"role","button"),t.prepend(this._fileUpload),this._fileUpload[0].addEventListener("focus",(function(){this.matches(":focus-visible")&&t[0].classList.add("active")})),this._fileUpload[0].addEventListener("blur",(function(){t[0].classList.remove("active")}))):(t=$('<p class="button uploadFallbackButton"><span>'+WCF.Language.get("wcf.global.button.upload")+"</span></p>"),elAttr(t[0],"role","button"),elAttr(t[0],"tabindex","0"),t.click($.proxy(this._showOverlay,this))),this._insertButton(t)},_insertButton:function(t){this._buttonSelector.prepend(t)},_removeButton:function(){var t=".uploadButton";this._supportsAJAXUpload||(t=".uploadFallbackButton"),this._buttonSelector.find(t).remove()},_upload:function(t,e,i,n){var s,a,o,r,l,c,h,u,d=null,p=[];if(void 0!==n)p=n;else if(e)p.push(e);else if(i){switch(s="",i.type){case"image/png":s=".png";break;case"image/jpeg":s=".jpg";break;case"image/gif":s=".gif";break;case"image/webp":s=".webp"}p.push({name:"pasted-from-clipboard"+s})}else p=this._fileUpload.prop("files");if(p.length){if(a=new FormData,d=this._createUploadMatrix(p),!this._uploadMatrix[d].length)return null;for(o=0,r=p.length;o<r;o++)this._uploadMatrix[d][o]&&(l=this._uploadMatrix[d][o].data("internalFileID"),i?a.append("__files["+l+"]",i,p[o].name):a.append("__files["+l+"]",p[o],p[o].name));for(h in a.append("actionName",this._options.action),a.append("className",this._className),c=this._getParameters())a.append("parameters["+h+"]",c[h]);u=this,$.ajax({type:"POST",url:this._options.url,enctype:"multipart/form-data",data:a,contentType:!1,processData:!1,success:function(t,e,i){u._success(d,t)},error:$.proxy(this._error,this),xhr:function(){var t=$.ajaxSettings.xhr();return t&&t.upload.addEventListener("progress",(function(t){u._progress(d,t)}),!1),t},xhrFields:{withCredentials:!0}})}return d},_createUploadMatrix:function(t){var e,i,n,s,a;if(t.length){for(e=this._uploadMatrix.length,this._uploadMatrix[e]=[],i=0,n=t.length;i<n;i++)s=t[i],(a=this._initFile(s)).hasClass("uploadFailed")||(a.data("filename",s.name).data("internalFileID",this._internalFileID++),this._uploadMatrix[e][i]=a);return e}return null},_success:function(t,e){},_error:function(t,e,i){},_progress:function(t,e){var i,n=Math.round(100*e.loaded/e.total);for(i in this._uploadMatrix[t])this._uploadMatrix[t][i].find("progress").attr("value",n)},_getParameters:function(){return{}},_initFile:function(t){return $("<li>"+t.name+" ("+t.size+')<progress max="100" /></li>').appendTo(this._fileListSelector)},_showOverlay:function(){var t,e,i;if(null===this._iframe&&(this._iframe=$('<iframe name="__fileUploadIFrame" />').hide().appendTo(document.body)),!this._overlay){for(i in this._overlay=$('<div><form enctype="multipart/form-data" method="post" action="'+this._options.url+'" target="__fileUploadIFrame" /></div>').hide().appendTo(document.body),t=this._overlay.find("form"),$('<dl class="wide"><dd><input type="file" id="__fileUpload" name="'+this._name+'" '+(this._options.multiple?'multiple="true" ':"")+"/></dd></dl>").appendTo(t),$('<div class="formSubmit"><input type="submit" value="Upload" accesskey="s" /></div></form>').appendTo(t),$('<input type="hidden" name="isFallback" value="1" />').appendTo(t),$('<input type="hidden" name="actionName" value="'+this._options.action+'" />').appendTo(t),$('<input type="hidden" name="className" value="'+this._className+'" />').appendTo(t),e=this._getParameters())$('<input type="hidden" name="'+i+'" value="'+e[i]+'" />').appendTo(t);t.submit($.proxy((function(){var t={name:this._getFilename(),size:""},e=this._createUploadMatrix([t]),i=this;this._iframe.data("loading",!0).off("load").load((function(){i._evaluateResponse(e)})),this._overlay.wcfDialog("close")}),this))}this._overlay.wcfDialog({title:WCF.Language.get("wcf.global.button.upload")})},_evaluateResponse:function(t){var e=$.parseJSON(this._iframe.contents().find("pre").html());this._success(t,e)},_getFilename:function(){return $("#__fileUpload").val().split("\\").pop()}}),WCF.Upload.Parallel=WCF.Upload.extend({init:function(t,e,i,n){n=$.extend(!0,n||{},{multiple:!0}),this._super(t,e,i,n)},_upload:function(){var t,e,i,n,s,a,o,r=this._fileUpload.prop("files");for(t=0,e=r.length;t<e;t++)if(i=r[t],n=new FormData,s=this._createUploadMatrix(i),this._uploadMatrix[s].length){for(o in n.append("__files["+s+"]",i),n.append("actionName",this._options.action),n.append("className",this._className),a=this._getParameters())n.append("parameters["+o+"]",a[o]);this._sendRequest(s,n)}},_sendRequest:function(t,e){var i=this;return $.ajax({type:"POST",url:this._options.url,enctype:"multipart/form-data",data:e,contentType:!1,processData:!1,success:function(e,n,s){i._success(t,e)},error:$.proxy(this._error,this),xhr:function(){var e=$.ajaxSettings.xhr();return e&&e.upload.addEventListener("progress",(function(e){i._progress(t,e)}),!1),e}})},_createUploadMatrix:function(t){var e=this._initFile(t);return e.hasClass("uploadFailed")?null:(e.data("filename",t.name).data("internalFileID",this._internalFileID),this._uploadMatrix[this._internalFileID++]=e,this._internalFileID-1)},_success:function(t,e){},_progress:function(t,e){var i=Math.round(100*e.loaded/e.total);this._uploadMatrix[t].find("progress").attr("value",i)},_showOverlay:function(){var t,e,i;if(null===this._iframe&&(this._iframe=$('<iframe name="__fileUploadIFrame" />').hide().appendTo(document.body)),!this._overlay){for(i in this._overlay=$('<div><form enctype="multipart/form-data" method="post" action="'+this._options.url+'" target="__fileUploadIFrame" /></div>').hide().appendTo(document.body),t=this._overlay.find("form"),$('<dl class="wide"><dd><input type="file" id="__fileUpload" name="'+this._name+'" '+(this._options.multiple?'multiple="true" ':"")+"/></dd></dl>").appendTo(t),$('<div class="formSubmit"><input type="submit" value="Upload" accesskey="s" /></div></form>').appendTo(t),$('<input type="hidden" name="isFallback" value="1" />').appendTo(t),$('<input type="hidden" name="actionName" value="'+this._options.action+'" />').appendTo(t),$('<input type="hidden" name="className" value="'+this._className+'" />').appendTo(t),e=this._getParameters())$('<input type="hidden" name="'+i+'" value="'+e[i]+'" />').appendTo(t);t.submit($.proxy((function(){var t={name:this._getFilename(),size:""},e=this._createUploadMatrix(t),i=this;this._iframe.data("loading",!0).off("load").load((function(){i._evaluateResponse(e)})),this._overlay.wcfDialog("close")}),this))}this._overlay.wcfDialog({title:WCF.Language.get("wcf.global.button.upload")})},_evaluateResponse:function(t){var e=$.parseJSON(this._iframe.contents().find("pre").html());this._success(t,e)}}),WCF.Sortable={},WCF.Sortable.List=Class.extend({_additionalParameters:{},_className:"",_containerID:"",_container:null,_notification:null,_offset:0,_options:{},_proxy:null,_structure:{},init:function(t,e,i,n,s,a){var o,r,l;if(this._additionalParameters=a||{},this._containerID=$.wcfEscapeID(t),this._container=$("#"+this._containerID),this._className=e,this._offset=i||0,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._structure={},this._options=$.extend(!0,{axis:"y",connectWith:"#"+this._containerID+" .sortableList",disableNesting:"sortableNoNesting",doNotClear:!0,errorClass:"sortableInvalidTarget",forcePlaceholderSize:!0,handle:"",helper:"clone",items:"li:not(.sortableNoSorting)",opacity:.6,placeholder:"sortablePlaceholder",tolerance:"pointer",toleranceElement:"> span"},n||{}),(o=$("#"+this._containerID+" .sortableList")).is("tbody")&&("li:not(.sortableNoSorting)"===this._options.items&&(this._options.items="tr:not(.sortableNoSorting)",this._options.toleranceElement=""),"clone"===this._options.helper&&(this._options.helper=this._tableRowHelper.bind(this),(r=o.prev("thead"))&&r.find("th").each((function(t,e){(e=$(e)).width(e.width())})))),s?o.sortable(this._options):o.nestedSortable(this._options),this._className){if(!(l=this._container.find(".formSubmit")).length&&!(l=this._container.next(".formSubmit")).length)return void console.debug("[WCF.Sortable.Simple] Unable to find form submit for saving, aborting.");l.children('button[data-type="submit"]').click($.proxy(this._submit,this))}},_tableRowHelper:function(t,e){return e.children("td").each((function(t,e){(e=$(e)).width(e.width())})),e},_submit:function(){this._structure={},this._container.find(".sortableList").each($.proxy((function(t,e){var i=$(e),n=i.data("objectID");void 0!==n&&i.children(this._options.items).each($.proxy((function(t,e){var i=$(e).data("objectID");this._structure[n]||(this._structure[n]=[]),this._structure[n].push(i)}),this))}),this));var t=$.extend(!0,{data:{offset:this._offset,structure:this._structure}},this._additionalParameters);this._proxy.setOption("data",{actionName:"updatePosition",className:this._className,interfaceName:"wcf\\data\\ISortableAction",parameters:t}),this._proxy.sendRequest()},_success:function(t,e,i){null===this._notification&&(this._notification=new WCF.System.Notification(WCF.Language.get("wcf.global.success.edit"))),this._notification.show()}}),WCF.Popover=Class.extend({_activeElementID:"",_identifier:"",_popoverObj:null,init:function(t){var e=!1;require(["Environment"],function(t){"desktop"!==t.platform()&&(e=!0)}.bind(this)),e||(this._activeElementID="",this._identifier=t,require(["WoltLabSuite/Core/Controller/Popover"],function(e){e.init({attributeName:"legacy",className:t,identifier:this._identifier,legacy:!0,loadCallback:this._legacyLoad.bind(this)})}.bind(this)))},_initContainers:function(){},_legacyLoad:function(t,e){this._activeElementID=t,this._popoverObj=e,this._loadContent()},_insertContent:function(t,e){this._popoverObj.setContent(this._identifier,t,e)}}),WCF.EditableItemList=Class.extend({_allowCustomInput:!1,_className:"",_data:{},_form:null,_itemList:null,_objectID:0,_objectTypeID:0,_search:null,_searchInput:null,init:function(t,e){if(this._itemList=$(t),this._searchInput=$(e),this._data={},this._itemList.length&&this._searchInput.length){if(this._objectID=this._getObjectID(),this._objectTypeID=this._getObjectTypeID(),this._itemList.find(".jsEditableItem").click($.proxy(this._click,this)),this._itemList.children("ul").length||$("<ul />").appendTo(this._itemList),this._itemList=this._itemList.children("ul"),this._form=this._itemList.parents("form").submit($.proxy(this._submit,this)),this._allowCustomInput){var i=this;this._searchInput.keydown($.proxy(this._keyDown,this)).keypress($.proxy(this._keyPress,this)).on("paste",(function(){setTimeout((function(){i._onPaste()}),100)}))}this._searchInput.parents(".dropdown").data("preventSubmit",!0)}else console.debug("[WCF.EditableItemList] Item list and/or search input do not exist, aborting.")},_keyDown:function(t){return null!==t||this._keyPress(null)},_keyPress:function(t){if(null===t||44===t.charCode||t.charCode===$.ui.keyCode.ENTER||$.browser.mozilla&&t.keyCode===$.ui.keyCode.ENTER){if(null!==t&&t.charCode===$.ui.keyCode.ENTER&&this._search&&-1!==this._search._itemIndex)return!1;var e=$.trim(this._searchInput.val());return t&&44===t.charCode&&(e=e.substring(0,this._searchInput.getCaret())),""===e||(this.addItem({objectID:0,label:e}),t&&44===t.charCode?this._searchInput.val($.trim(this._searchInput.val().substr(this._searchInput.getCaret()))):this._searchInput.val(""),null!==t&&t.stopPropagation(),!1)}return!0},_onPaste:function(){var t,e,i,n=$.trim(this._searchInput.val());for(t=0,e=(n=n.split(",")).length;t<e;t++)""!==(i=$.trim(n[t]))&&this.addItem({objectID:0,label:i});this._searchInput.val("")},load:function(t){},_click:function(t){var e=$(t.currentTarget),i=e.data("objectID"),n=e.data("label");return this._search&&this._search.removeExcludedSearchValue(n),this._removeItem(i,n),e.remove(),t.stopPropagation(),!1},_getObjectID:function(){return 0},_getObjectTypeID:function(){return 0},addItem:function(t){return!(!this._data[t.objectID]||0===t.objectID&&this._allowCustomInput)||($('<li class="badge">'+WCF.String.escapeHTML(t.label)+"</li>").data("objectID",t.objectID).data("label",t.label).appendTo(this._itemList).click($.proxy(this._click,this)),this._search&&this._search.addExcludedSearchValue(t.label),this._addItem(t.objectID,t.label),!0)},clearList:function(){this._itemList.children("li").each($.proxy((function(t,e){var i=$(e);this._search&&this._search.removeExcludedSearchValue(i.data("label")),i.remove(),this._removeItem(i.data("objectID"),i.data("label"))}),this))},_submit:function(){this._keyDown(null)},_addItem:function(t,e){this._data[t]=e},_removeItem:function(t,e){delete this._data[t]},getSearchInput:function(){return this._searchInput}}),WCF.Language.Chooser=Class.extend({init:function(t,e,i,n,s,a){require(["WoltLabSuite/Core/Language/Chooser"],(function(o){o.init(t,e,i,n,s,a)}))}}),WCF.Style={},jQuery.fn.extend({wcfDialog:function(t){var e=arguments;return require(["Dom/Util","Ui/Dialog"],function(i,n){var s,a=i.identify(this[0]);"close"===t?n.close(a):"render"===t?n.rebuild(a):"option"===t?3===e.length&&("title"===e[1]&&"string"==typeof e[2]?n.setTitle(a,e[2]):0===e[1].indexOf("on")?n.setCallback(a,e[1],e[2]):"closeConfirmMessage"===e[1]&&null===e[2]&&n.setCallback(a,"onBeforeClose",null)):(this[0].parentNode.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&document.body.appendChild(this[0]),s=1===e.length&&"object"==typeof e[0]?e[0]:{},n.openStatic(a,null,s),s.hasOwnProperty("title")&&n.setTitle(a,s.title))}.bind(this)),this}}),$.widget("ui.wcfSlideshow",{_buttonList:null,_count:0,_index:0,_itemList:null,_items:null,_timer:null,_width:0,options:{cycle:!0,cycleInterval:5,itemGap:50},_create:function(){this._itemList=this.element.children("ul"),this._items=this._itemList.children("li"),this._count=this._items.length,this._index=0,this._count>1&&this._initSlideshow()},_initSlideshow:function(){var t,e,i=$(this._items.get(0)).outerHeight();for(this._items.addClass("slideshowItem"),this._width=this.element.css("height",i).innerWidth(),this._itemList.addClass("slideshowItemList").css("left",0),this._items.each($.proxy((function(t,e){$(e).show().css({height:i,left:(this._width+this.options.itemGap)*t,width:this._width})}),this)),this.element.css({height:i,width:this._width}).hover($.proxy(this._hoverIn,this),$.proxy(this._hoverOut,this)),this._buttonList=$('<ul class="slideshowButtonList" />').appendTo(this.element),t=0;t<this._count;t++)e=$('<li><a><fa-icon size="16" name="circle"></fa-icon></a></li>').data("index",t).click($.proxy(this._click,this)).appendTo(this._buttonList),0==t&&e.find(".icon").addClass("active");this._resetTimer(),$(window).resize($.proxy(this._resize,this))},rebuildHeight:function(){var t=$(this._items.get(0)).css("height","auto").outerHeight();this._items.css("height",t+"px"),this.element.css("height",t+"px")},_resize:function(){this._width=this.element.css("width","auto").innerWidth(),this._items.each($.proxy((function(t,e){$(e).css({left:(this._width+this.options.itemGap)*t,width:this._width})}),this)),this._index--,this.moveTo(null)},_hoverIn:function(){null!==this._timer&&this._timer.stop()},_hoverOut:function(){this._resetTimer()},_resetTimer:function(){if(this.options.cycle){null!==this._timer&&this._timer.stop();var t=this;this._timer=new WCF.PeriodicalExecuter((function(){t.moveTo(null)}),1e3*this.options.cycleInterval)}},_click:function(t){this.moveTo($(t.currentTarget).data("index")),this._resetTimer()},moveTo:function(t){this._index=null===t?this._index+1:t,this._index==this._count&&(this._index=0),$(this._buttonList.find(".icon").removeClass("active").get(this._index)).addClass("active"),this._itemList.css("left",this._index*(this._width+this.options.itemGap)*-1),this._trigger("moveTo",null,{index:this._index})},getItem:function(t){return this._items[t]?this._items[t]:null}}),jQuery.fn.extend({datepicker:function(t){var e=this[0],i=Array.prototype.slice.call(arguments,1);switch(t){case"destroy":window.__wcf_bc_datePicker.destroy(e);break;case"getDate":return window.__wcf_bc_datePicker.getDate(e);case"option":if("onClose"===i[0])return i.length>1?this.datepicker("setOption","onClose",i[1]):function(){};console.warn("datepicker('option') supports only 'onClose'.");break;case"setDate":window.__wcf_bc_datePicker.setDate(e,i[0]);break;case"setOption":"onClose"===i[0]?window.__wcf_bc_datePicker.setCloseCallback(e,i[1]):console.warn("datepicker('setOption') supports only 'onClose'.");break;default:console.debug("Unsupported method '"+t+"' for datepicker()")}return this}}),jQuery.fn.extend({wcfTabs:function(t){var e=this[0],i=Array.prototype.slice.call(arguments,1);require(["Dom/Util","WoltLabSuite/Core/Ui/TabMenu"],(function(n,s){var a=s.getTabMenu(n.identify(e));null!==a&&a[t].apply(a,i)}))}}),$.widget("ui.wcfPages",{_api:null,SHOW_LINKS:11,SHOW_SUB_LINKS:20,options:{activePage:1,maxPage:1},_create:function(){require(["WoltLabSuite/Core/Ui/Pagination"],function(t){this._api=new t(this.element[0],{activePage:this.options.activePage,maxPage:this.options.maxPage,callbackShouldSwitch:function(t){return!1!==this._trigger("shouldSwitch",void 0,{nextPage:t})}.bind(this),callbackSwitch:function(t){this._trigger("switched",void 0,{activePage:t})}.bind(this)})}.bind(this))},destroy:function(){$.Widget.prototype.destroy.apply(this,arguments),this._api=null,this.element[0].innerHTML=""},_setOption:function(t,e){if("activePage"==t&&e!=this.options[t]&&e>0&&e<=this.options.maxPage){var i=this._trigger("shouldSwitch",void 0,{nextPage:e});i||void 0!==i?this._api.switchPage(e):this._trigger("notSwitched",void 0,{activePage:e})}return this}}),WCF.Category={},WCF.Category.NestedList=Class.extend({_categories:{},init:function(){var t=this;$(".jsCategory").each((function(e,i){var n,s=$(i).data("parentCategoryID",null).change($.proxy(t._updateSelection,t));t._categories[s.val()]=s,n=[],s.parents("li").find(".jsChildCategory").each((function(e,i){var a=$(i).data("parentCategoryID",s.val()).change($.proxy(t._updateSelection,t));t._categories[a.val()]=a,n.push(a.val()),a.is(":checked")&&s.prop("checked","checked")})),s.data("childCategoryIDs",n)}))},_updateSelection:function(t){var e,i,n,s=$(t.currentTarget),a=s.data("parentCategoryID");if(s.is(":checked"))null!==a&&this._categories[a].prop("checked","checked");else if(null===a)for(i=0,n=(e=s.data("childCategoryIDs")).length;i<n;i++)this._categories[e[i]].prop("checked",!1)}}),WCF.Category.FlexibleCategoryList=Class.extend({_list:null,_categories:{},init:function(t){this._list=$("#"+t),this._buildStructure(),this._list.find("input:checked").each((function(){$(this).trigger("change")})),this._list.children("li").length<2&&this._list.addClass("flexibleCategoryListDisabled")},_buildStructure:function(){var t=this;this._list.find(".jsCategory").each((function(e,i){var n=$(i).change(t._updateSelection.bind(t)),s=parseInt(n.val()),a=[];n.parents("li:eq(0)").find(".jsChildCategory").each((function(e,i){var s,o,r=$(i);r.data("parentCategory",n).change(t._updateSelection.bind(t)),s=parseInt(r.val()),a.push(r),o=[],r.parents("li:eq(0)").find(".jsSubChildCategory").each((function(e,i){var n=$(i);n.data("parentCategory",r).change(t._updateSelection.bind(t)),o.push(n)})),t._categories[s]=o})),t._categories[s]=a}))},_updateSelection:function(t){var e,i,n,s,a,o,r,l=$(t.currentTarget),c=parseInt(l.val()),h=l.data("parentCategory");if(l.is(":checked"))h&&(h.prop("checked","checked"),(h=h.data("parentCategory"))&&h.prop("checked","checked"));else{if(this._categories[c])for(e=0,i=this._categories[c].length;e<i;e++)if((n=this._categories[c][e]).prop("checked",!1),s=parseInt(n.val()),this._categories[s])for(a=0,o=this._categories[s].length;a<o;a++)this._categories[s][a].prop("checked",!1);if(h){for(r=parseInt(h.val()),e=0,i=this._categories[r].length;e<i;e++)if(this._categories[r][e].prop("checked"))return;if(h=h.data("parentCategory"))for(r=parseInt(h.val()),e=0,i=this._categories[r].length;e<i;e++)if(this._categories[r][e].prop("checked"))return}}}}),WCF.Condition={},WCF.Notice={}; })(this);
+(function (window, undefined) { "use strict";function wcfEval(expression){return eval(expression)}!function(){var t=jQuery.fn.data;jQuery.fn.data=function(e,i){var n,s,a,o=[].slice.call(arguments);if(e)switch(typeof e){case"object":for(n in e)n.match(/ID$/)&&(s=e[n],delete e[n],e[n=n.replace(/ID$/,"-id")]=s);o[0]=e;break;case"string":e.match(/ID$/)&&(o[0]=e.replace(/ID$/,"-id"))}if(a=t.apply(this,o),void 0===e)for(n in a)n.match(/Id$/)&&(a[n.replace(/Id$/,"ID")]=a[n],delete a[n]);return a},void 0===console.debug&&(console.debug=function(t){console.log(t)})}(),function(t){var e=navigator.userAgent.toLowerCase(),i=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[],n={browser:i[1]||"",version:i[2]||"0"},s={};n.browser&&(s[n.browser]=!0,s.version=n.version),s.chrome?s.webkit=!0:s.webkit&&(s.safari=!0),t.browser=t.browser||{},t.browser=$.extend(t.browser,s),t.browser.touch=!!("ontouchstart"in window)||!!("msMaxTouchPoints"in window.navigator)&&window.navigator.msMaxTouchPoints>0,t.browser.mozilla&&e.match(/trident/)&&(t.browser.mozilla=!1,t.browser.msie=!0),t.browser.iOS=/\((ipad|iphone|ipod);/.test(e),t.browser.iOS&&$("html").addClass("iOS"),t.browser.android=-1!==e.indexOf("android"),t.browser.iOS&&(t.fn.focus=function(t,e){return arguments.length>0?this.on("focus",null,t,e):this.trigger("focus")})}(jQuery),null==window.WCF&&(window.WCF={}),$.extend(!0,{removeArrayValue:function(t,e){return $.grep(t,(function(t,i){return e!==t}))},wcfEscapeID:function(t){return t.replace(/(:|\.)/g,"\\$1")},wcfIsset:function(t){return!!$("#"+$.wcfEscapeID(t)).length},getLength:function(t){var e,i=0;for(e in t)t.hasOwnProperty(e)&&i++;return i}}),$.fn.extend({getTagName:function(){return this.length?this.get(0).tagName.toLowerCase():""},getDimensions:function(t){var e={},i={},n=!1;switch(this.is(":hidden")&&(e=WCF.getInlineCSS(this),n=!0,this.css({display:"block",visibility:"hidden"})),t){case"inner":i={height:this.innerHeight(),width:this.innerWidth()};break;case"outer":i={height:this.outerHeight(),width:this.outerWidth()};break;default:i={height:this.height(),width:this.width()}}return n&&WCF.revertInlineCSS(this,e,["display","visibility"]),i},getOffsets:function(t){var e={},i={},n=!1;return this.is(":hidden")&&(e=WCF.getInlineCSS(this),n=!0,this.css({display:"block",visibility:"hidden"})),i="offset"===t?this.offset():this.position(),n&&WCF.revertInlineCSS(this,e,["display","visibility"]),i},makePositioned:function(t,e){"absolute"!=t&&"fixed"!=t&&(t="absolute");var i=this.getOffsets("position");return this.css({position:t,left:i.left,margin:0,top:i.top}),e&&this.remove().appentTo("body"),this},disable:function(){return this.attr("disabled","disabled")},enable:function(){return this.removeAttr("disabled")},wcfIdentify:function(){return window.bc_wcfDomUtil.identify(this[0])},getCaret:function(){var t,e,i;if(this.is("input")){if("text"!=this.attr("type")&&"password"!=this.attr("type"))return-1}else if(!this.is("textarea"))return-1;return t=0,e=this.get(0),document.selection?(this.focus(),(i=document.selection.createRange()).moveStart("character",-this.val().length),t=i.text.length):(e.selectionStart||"0"==e.selectionStart)&&(t=parseInt(e.selectionStart)),t},setCaret:function(t){var e,i;if(this.is("input")){if("text"!=this.attr("type")&&"password"!=this.attr("type"))return!1}else if(!this.is("textarea"))return!1;return e=this.get(0),this.focus(),document.selection?((i=document.selection.createRange()).moveStart("character",t),i.moveEnd("character",0),i.select()):(e.selectionStart||"0"==e.selectionStart)&&(e.selectionStart=t,e.selectionEnd=t),!0},wcfDropIn:function(t,e,i){return t||(t="up"),i&&parseInt(i)||(i=200),this.show(WCF.getEffect(this,"drop"),{direction:t},i,e)},wcfDropOut:function(t,e,i){return t||(t="down"),i&&parseInt(i)||(i=200),this.hide(WCF.getEffect(this,"drop"),{direction:t},i,e)},wcfBlindIn:function(t,e,i){return t||(t="vertical"),i&&parseInt(i)||(i=200),this.show(WCF.getEffect(this,"blind"),{direction:t},i,e)},wcfBlindOut:function(t,e,i){return t||(t="vertical"),i&&parseInt(i)||(i=200),this.hide(WCF.getEffect(this,"blind"),{direction:t},i,e)},wcfHighlight:function(t,e){return this.effect("highlight",t,600,e)},wcfFadeIn:function(t,e){return e&&parseInt(e)||(e=200),this.show(WCF.getEffect(this,"fade"),{},e,t)},wcfFadeOut:function(t,e){return e&&parseInt(e)||(e=200),this.hide(WCF.getEffect(this,"fade"),{},e,t)},cssAsNumber:function(t){if(this.length){var e=this.css(t);if(void 0!==e)return parseInt(e.replace(/px$/,""))}return 0},perfectScrollbar:function(t){var e=require("perfect-scrollbar");return this.each((function(){var i,n;return"object"==typeof t||void 0===t?(i=t,$(this).data("psID")||e.initialize(this,i)):"update"===(n=t)?e.update(this):"destroy"===n&&e.destroy(this),jQuery(this)}))}}),$.extend(WCF,{activeDialogs:0,_idCounter:0,getRandomID:function(){return window.bc_wcfDomUtil.getUniqueId()},inArray:function(t,e){return-1!=$.inArray(t,e)},getEffect:function(t,e){return t.is("tr")?"highlight":e},getInlineCSS:function(t){var e,i,n,s={},a=t.attr("style");if(!a)return{};for(e=0,i=(a=a.split(";")).length;e<i;e++)""!=(n=$.trim(a[e]))&&(n=n.split(":"),s[$.trim(n[0])]=$.trim(n[1]));return s},revertInlineCSS:function(t,e,i){var n,s,a;for(n=0,s=i.length;n<s;n++)e[a=i[n]]?t.css(a,e[a]):t.css(a,"")},getUUID:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var e=16*Math.random()|0;return("x"==t?e:3&e|8).toString(16)}))},base64toBlob:function(t,e,i){var n,s,a,o,r,l,c;for(e=e||"",i=i||512,n=atob(t),s=[],a=0;a<n.length;a+=i){for(o=n.slice(a,a+i),r=new Array(o.length),l=0;l<o.length;l++)r[l]=o.charCodeAt(l);c=new Uint8Array(r),s.push(c)}return new Blob(s,{type:e})},convertLegacyURL:function(t){return t.replace(/^index\.php\/(.*?)\/\?/,(function(t,e){var i,n,s,a=e.split(/([A-Z][a-z0-9]+)/),o="";for(i=0,n=a.length;i<n;i++)(s=a[i].trim()).length&&(o.length&&(o+="-"),o+=s.toLowerCase());return"index.php?"+o+"/&"}))}}),WCF.Browser={_isChrome:null,isChrome:function(){return null===this._isChrome&&(this._isChrome=!1,/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())&&(this._isChrome=!0)),this._isChrome}},WCF.Dropdown={init:function(t){window.bc_wcfSimpleDropdown.initAll()},initDropdown:function(t,e){window.bc_wcfSimpleDropdown.init(t[0],e)},removeDropdown:function(t){window.bc_wcfSimpleDropdown.destroy(t)},initDropdownFragment:function(t,e){window.bc_wcfSimpleDropdown.initFragment(t[0],e[0])},registerCallback:function(t,e){window.bc_wcfSimpleDropdown.registerCallback(t,e)},_toggle:function(t,e){window.bc_wcfSimpleDropdown._toggle(t,e)},toggleDropdown:function(t,e){window.bc_wcfSimpleDropdown._toggle(null,t,null,e)},getDropdown:function(t){var e=window.bc_wcfSimpleDropdown.getDropdown(t);return e?$(e):null},getDropdownMenu:function(t){var e=window.bc_wcfSimpleDropdown.getDropdownMenu(t);return e?$(e):null},setAlignmentByID:function(t){window.bc_wcfSimpleDropdown.setAlignmentById(t)},setAlignment:function(t,e){window.bc_wcfSimpleDropdown.setAlignment(t[0],e[0])},_closeAll:function(){window.bc_wcfSimpleDropdown.closeAll()},close:function(t){window.bc_wcfSimpleDropdown.close(t)},destroy:function(t){window.bc_wcfSimpleDropdown.destroy(t)}},WCF.Clipboard={init:function(t,e,i,n){require(["EventHandler","WoltLabSuite/Core/Controller/Clipboard"],(function(s,a){for(var o in a.setup({hasMarkedItems:e>0,pageClassName:t,pageObjectId:n}),i)i.hasOwnProperty(o)&&function(t){s.add("com.woltlab.wcf.clipboard",t,(function(e){null!==e.responseData&&i[t].hasOwnProperty(e.responseData.actionName)&&i[t][e.responseData.actionName].triggerEffect(e.responseData.objectIDs)}))}(o)}))},reload:function(){require(["WoltLabSuite/Core/Controller/Clipboard"],(function(t){t.reload()}))}},WCF.PeriodicalExecuter=Class.extend({_callback:null,_delay:0,_intervalID:null,_isExecuting:!1,init:function(t,e){$.isFunction(t)?(this._callback=t,this._interval=e,this.resume()):console.debug("[WCF.PeriodicalExecuter] Given callback is invalid, aborting.")},_execute:function(){if(!this._isExecuting)try{this._isExecuting=!0,this._callback(this),this._isExecuting=!1}catch(t){throw this._isExecuting=!1,t}},stop:function(){this._intervalID&&clearInterval(this._intervalID)},resume:function(){this.restart()},restart:function(){this._intervalID&&this.stop(),this._intervalID=setInterval($.proxy(this._execute,this),this._interval)},setInterval:function(t){this._interval=t,this.restart()}}),WCF.LoadingOverlayHandler={show:function(){require(["WoltLabSuite/Core/Ajax/Status"],(function(t){t.show()}))},hide:function(){require(["WoltLabSuite/Core/Ajax/Status"],(function(t){t.hide()}))},updateIcon:function(t,e){}},WCF.Action={},WCF.Action.Proxy=Class.extend({_ajaxRequest:null,init:function(t){this._ajaxRequest=null,"jsonp"===(t=$.extend(!0,{autoSend:!1,data:{},dataType:"json",after:null,init:null,jsonp:"callback",async:!0,failure:null,showLoadingOverlay:!0,success:null,suppressErrors:!1,type:"POST",url:"index.php?ajax-proxy/&t="+SECURITY_TOKEN,aborted:null,autoAbortPrevious:!1},t)).dataType?require(["AjaxJsonp"],(function(e){e.send(t.url,t.success,t.failure,{parameterName:t.jsonp})})):require(["AjaxRequest"],function(e){this._ajaxRequest=new e({data:t.data,type:t.type,url:t.url,withCredentials:t.url==="index.php?ajax-proxy/&t="+SECURITY_TOKEN,responseType:"json"===t.dataType?"application/json":"",autoAbort:t.autoAbortPrevious,ignoreError:t.suppressErrors,silent:!t.showLoadingOverlay,failure:t.failure,finalize:t.after,success:t.success}),t.autoSend&&this._ajaxRequest.sendRequest()}.bind(this))},sendRequest:function(t){require(["AjaxRequest"],function(e){null!==this._ajaxRequest&&this._ajaxRequest.sendRequest(t)}.bind(this))},abortPrevious:function(){require(["AjaxRequest"],function(t){null!==this._ajaxRequest&&this._ajaxRequest.abortPrevious()}.bind(this))},setOption:function(t,e){require(["AjaxRequest"],function(i){null!==this._ajaxRequest&&this._ajaxRequest.setOption(t,e)}.bind(this))},showLoadingOverlayOnce:function(){},suppressErrors:function(){},_failure:function(t,e,i){},_success:function(t,e,i){},_after:function(){}}),WCF.Action.SimpleProxy=Class.extend({init:function(t,e){this.options=$.extend(!0,{action:"",className:"",elements:null,eventName:"click"},t),this.callbacks=$.extend(!0,{after:null,failure:null,init:null,success:null},e),this.options.elements&&(this.proxy=new WCF.Action.Proxy(this.callbacks),this.options.elements.each($.proxy((function(t,e){$(e).bind(this.options.eventName,$.proxy(this._handleEvent,this))}),this)))},_handleEvent:function(t){this.proxy.setOption("data",{actionName:this.options.action,className:this.options.className,objectIDs:[$(t.target).data("objectID")]}),this.proxy.sendRequest()}}),WCF.Action.Delete=Class.extend({_buttonSelector:"",_callback:null,_className:"",_containerSelector:"",_containers:[],init:function(t,e,i){this._containerSelector=e,this._className=t,this._buttonSelector=i||".jsDeleteButton",this._callback=null,this.proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._initElements(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Action.Delete"+this._className.hashCode(),$.proxy(this._initElements,this))},_initElements:function(){$(this._containerSelector).each(function(t,e){var i,n=$(e),s=n.wcfIdentify();WCF.inArray(s,this._containers)||(i=n.find(this._buttonSelector)).length&&(this._containers.push(s),i.click($.proxy(this._click,this)))}.bind(this))},_click:function(t){var e=$(t.currentTarget);t.preventDefault(),e.data("confirmMessageHtml")||e.data("confirmMessage")?WCF.System.Confirmation.show(e.data("confirmMessageHtml")?e.data("confirmMessageHtml"):e.data("confirmMessage"),$.proxy(this._execute,this),{target:e},void 0,!!e.data("confirmMessageHtml")):(WCF.LoadingOverlayHandler.updateIcon(e),this._sendRequest(e))},_didTriggerEffect:function(t){},_execute:function(t,e){"cancel"!==t&&(WCF.LoadingOverlayHandler.updateIcon(e.target),this._sendRequest(e.target))},_sendRequest:function(t){this.proxy.setOption("data",{actionName:"delete",className:this._className,interfaceName:"wcf\\data\\IDeleteAction",objectIDs:[$(t).data("objectID")]}),this.proxy.sendRequest()},_success:function(t,e,i){this._callback&&this._callback(t.objectIDs),this.triggerEffect(t.objectIDs)},setCallback:function(t){if("function"!=typeof t)throw new TypeError("[WCF.Action.Delete] Expected a valid callback for '"+this._className+"'.");this._callback=t},triggerEffect:function(t){this._containers.forEach(function(e){var i,n=$("#"+e),s=n.find(this._buttonSelector);WCF.inArray(s.data("objectID"),t)&&(i=this,n.wcfBlindOut("up",(function(){var t=$(this).remove();i._containers.splice(i._containers.indexOf(t.wcfIdentify()),1),i._didTriggerEffect(t),s.data("eventName")&&WCF.System.Event.fireEvent("com.woltlab.wcf.action.delete",s.data("eventName"),{button:s,container:t})})))}.bind(this))}}),WCF.Action.NestedDelete=WCF.Action.Delete.extend({triggerEffect:function(t){var e,i,n;for(e in this._containers)i=$("#"+this._containers[e]),WCF.inArray(i.find(this._buttonSelector).data("objectID"),t)&&(i.has("ol").has("li").length?(i.is(":only-child")?i.parent().replaceWith(i.find("> ol")):i.replaceWith(i.find("> ol > li")),this._containers.splice(this._containers.indexOf(i.wcfIdentify()),1),this._didTriggerEffect(i)):(n=this,i.wcfBlindOut("up",(function(){$(this).remove(),n._containers.splice(n._containers.indexOf($(this).wcfIdentify()),1),n._didTriggerEffect($(this))}))))}}),WCF.Action.Toggle=Class.extend({_buttonSelector:".jsToggleButton",_className:"",_containerSelector:"",_containers:[],init:function(t,e,i){this._containerSelector=e,this._className=t,this._buttonSelector=i||".jsToggleButton",this._containers=[];var n={success:$.proxy(this._success,this)};this.proxy=new WCF.Action.Proxy(n),this._initElements(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Action.Toggle"+this._className.hashCode(),$.proxy(this._initElements,this))},_initElements:function(){$(this._containerSelector).each($.proxy((function(t,e){var i=$(e),n=i.wcfIdentify();WCF.inArray(n,this._containers)||(this._containers.push(n),i.find(this._buttonSelector).click($.proxy(this._click,this)))}),this))},_click:function(t){var e=$(t.currentTarget);t.preventDefault(),e.data("confirmMessageHtml")||e.data("confirmMessage")?WCF.System.Confirmation.show(e.data("confirmMessageHtml")?e.data("confirmMessageHtml"):e.data("confirmMessage"),$.proxy(this._execute,this),{target:e},void 0,!!e.data("confirmMessageHtml")):(WCF.LoadingOverlayHandler.updateIcon(e),this._sendRequest(e))},_execute:function(t,e){"cancel"!==t&&(WCF.LoadingOverlayHandler.updateIcon(e.target),this._sendRequest(e.target))},_sendRequest:function(t){this.proxy.setOption("data",{actionName:"toggle",className:this._className,interfaceName:"wcf\\data\\IToggleAction",objectIDs:[$(t).data("objectID")]}),this.proxy.sendRequest()},_success:function(t,e,i){this.triggerEffect(t.objectIDs)},triggerEffect:function(t){var e,i,n;for(e in this._containers)n=(i=$("#"+this._containers[e])).find(this._buttonSelector),WCF.inArray(n.data("objectID"),t)&&(i.wcfHighlight(),this._toggleButton(i,n))},_toggleButton:function(t,e){var i="";const n=e[0].querySelector("fa-icon");"square"===n.name?(n.setIcon("square-check"),i=e.data("disableTitle")?e.data("disableTitle"):WCF.Language.get("wcf.global.button.disable"),e.attr("title",i)):(n.setIcon("square"),i=e.data("enableTitle")?e.data("enableTitle"):WCF.Language.get("wcf.global.button.enable"),e.attr("title",i)),t.toggleClass("disabled")}}),WCF.Date={},WCF.Dictionary=Class.extend({_variables:{},init:function(){this._variables={}},add:function(t,e){this._variables[t]=e},addObject:function(t){for(var e in t)this.add(e,t[e])},addDictionary:function(t){t.each($.proxy((function(t){this.add(t.key,t.value)}),this))},get:function(t){return this.isset(t)?this._variables[t]:null},isset:function(t){return this._variables.hasOwnProperty(t)},remove:function(t){delete this._variables[t]},each:function(t){var e;if($.isFunction(t))for(e in this._variables)t({key:e,value:this._variables[e]})},count:function(){return $.getLength(this._variables)},isEmpty:function(){return!this.count()}}),null==window.WCF.Language&&(WCF.Language={add:function(t,e){require(["Language"],(function(i){i.add(t,e)}))},addObject:function(t){require(["Language"],(function(e){e.addObject(t)}))},get:function(t,e){throw new Error('Call to deprecated WCF.Language.get("'+t+'")')}}),WCF.Number={round:function(t,e){return e=Math.pow(10,e||0),Math.round(t*e)/e}},WCF.String={addThousandsSeparator:function(t){return Number(t).toLocaleString(document.documentElement.lang)},escapeHTML:function(t){return String(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},escapeRegExp:function(t){return String(t).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")},formatNumeric:function(t,e){var i=e||2;return Number(t).toLocaleString(document.documentElement.lang,{maximumFractionDigits:i}).replace("-","−")},lcfirst:function(t){return String(t).substring(0,1).toLowerCase()+t.substring(1)},ucfirst:function(t){return String(t).substring(0,1).toUpperCase()+t.substring(1)},unescapeHTML:function(t){return String(t).replace(/&amp;/g,"&").replace(/&quot;/g,'"').replace(/&lt;/g,"<").replace(/&gt;/g,">")}},WCF.TabMenu={init:function(){require(["WoltLabSuite/Core/Ui/TabMenu"],(function(t){t.setup()}))},reload:function(){this.init()}},WCF.Collapsible={},WCF.Collapsible.Simple={init:function(){$(".jsCollapsible").each($.proxy((function(t,e){this._initButton(e)}),this))},_initButton:function(t){var e=$(t);e.data("isOpen")||$("#"+e.data("collapsibleContainer")).hide(),e.click($.proxy(this._toggle,this))},_toggle:function(t){var e=$(t.currentTarget),i=e.data("isOpen"),n=$("#"+$.wcfEscapeID(e.data("collapsibleContainer")));return i?(n.stop().wcfBlindOut("vertical",$.proxy((function(){this._toggleImage(e)}),this)),i=!1):(n.stop().wcfBlindIn("vertical",$.proxy((function(){this._toggleImage(e)}),this)),i=!0),e.data("isOpen",i),t.stopPropagation(),!1},_toggleImage:function(t){const e=t[0].querySelector("fa-icon");t.data("isOpen")?e.setIcon("chevron-down"):e.setIcon("chevron-right")}},WCF.Collapsible.Remote=Class.extend({_className:"",_containers:{},_containerData:{},_proxy:null,init:function(t){this._className=t,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._init(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Collapsible.Remote",$.proxy(this._init,this))},_init:function(t){this._getContainers().each($.proxy((function(t,e){var i=$(e),n=i.wcfIdentify();void 0===this._containers[n]&&(this._containers[n]=i,this._initContainer(n))}),this))},_initContainer:function(t){var e=this._getTarget(t),i=this._getButtonContainer(t),n=this._createButton(t,i);this._containerData[t]={button:n,buttonContainer:i,isOpen:this._containers[t].data("isOpen"),target:e},this._containers[t].data("isOpen")||$("#"+t).addClass("jsCollapsed")},_getContainers:function(){},_getTarget:function(t){},_getButtonContainer:function(t){},_createButton:function(t,e){var i=elBySel(".jsStaticCollapsibleButton",e[0]);return null!==i&&i.parentNode===e[0]?(i.classList.remove("jsStaticCollapsibleButton"),i=$(i)):i=$(`<button type="button" class="collapsibleButton jsToolti" title="${WCF.Language.get("wcf.global.button.collapsible")}">\n\t\t\t\t<fa-icon size="16" name="chevron-down"></fa-icon>\n\t\t\t</button>`).prependTo(e),i.data("containerID",t).click($.proxy(this._toggleContainer,this)),i},_toggleContainer:function(t){var e=$(t.currentTarget).data("containerID"),i=this._containerData[e].isOpen,n=i?"open":"close",s=i?"close":"open";this._proxy.setOption("data",{actionName:"loadContainer",className:this._className,interfaceName:"wcf\\data\\ILoadableContainerAction",objectIDs:[this._getObjectID(e)],parameters:$.extend(!0,{containerID:e,currentState:n,newState:s},this._getAdditionalParameters(e))}),this._proxy.sendRequest(),$("#"+e).toggleClass("jsCollapsed")},_exchangeIcon:function(t,e){e=e||"spinner",t[0].querySelector("fa-icon").setIcon(e)},_getObjectID:function(t){return $("#"+t).data("objectID")},_getAdditionalParameters:function(t){return{}},_updateContent:function(t,e,i){this._containerData[t].target.html(e)},_success:function(t,e,i){var n,s;t.returnValues.containerID&&(n=t.returnValues.containerID,this._containers[n]&&(this._containerData[n].isOpen=!!t.returnValues.isOpen,s=t.returnValues.isOpen?"open":"close",this._updateContent(n,$.trim(t.returnValues.content),s)))}}),WCF.Collapsible.SimpleRemote=WCF.Collapsible.Remote.extend({init:function(t){this._super(t),this._proxy=new WCF.Action.Proxy({showLoadingOverlay:!1})},_initContainer:function(t){this._super(t),this._containerData[t].isOpen||(this._containerData[t].target.hide(),this._exchangeIcon(this._containerData[t].button,"chevron-right"))},_toggleContainer:function(t){var e=$(t.currentTarget).data("containerID"),i=this._containerData[e].isOpen,n=i?"open":"close",s=i?"close":"open";this._proxy.setOption("data",{actionName:"toggleContainer",className:this._className,interfaceName:"wcf\\data\\IToggleContainerAction",objectIDs:[this._getObjectID(e)],parameters:$.extend(!0,{containerID:e,currentState:n,newState:s},this._getAdditionalParameters(e))}),this._proxy.sendRequest(),this._exchangeIcon(this._containerData[e].button,"open"===s?"chevron-down":"chevron-right"),"open"===s?this._containerData[e].target.show():this._containerData[e].target.hide(),$("#"+e).toggleClass("jsCollapsed"),this._containerData[e].isOpen="open"===s}}),WCF.User={userID:0,username:"",init:function(t,e){this.userID=t,this.username=e}},WCF.Effect={},WCF.Effect.Scroll=Class.extend({scrollTo:function(t,e,i){var n,s,a;return!t.length||((n=t.getOffsets("offset").top)>(s=$(document).height())-(a=$(window).height())&&(n=s-a)<0&&(n=0),!0===i?$("html,body").scrollTop(n):$("html,body").animate({scrollTop:n},400,(function(t,e,i,n,s){return-n*((e=e/s-1)*e*e*e-1)+i})),!1)}}),WCF.CloseOverlayHandler={addCallback:function(t,e){require(["Ui/CloseOverlay"],(function(i){i.add(t,e)}))},removeCallback:function(t){require(["Ui/CloseOverlay"],(function(e){e.remove(t)}))},forceExecution:function(){require(["Ui/CloseOverlay"],(function(t){t.execute()}))}},WCF.DOMNodeInsertedHandler={addCallback:function(t,e){require(["WoltLabSuite/Core/Dom/Change/Listener"],(function(t){t.add("__legacy__",e)}))},_executeCallbacks:function(){require(["WoltLabSuite/Core/Dom/Change/Listener"],(function(t){t.trigger()}))},execute:function(){this._executeCallbacks()}},WCF.DOMNodeRemovedHandler={_callbacks:new WCF.Dictionary,_isExecuting:!1,_isListening:!1,addCallback:function(t,e){if(this._bindListener(),this._callbacks.isset(t))return console.debug("[WCF.DOMNodeRemovedHandler] identifier '"+t+"' is already bound to a callback"),!1;this._callbacks.add(t,e)},removeCallback:function(t){this._callbacks.isset(t)&&this._callbacks.remove(t)},_bindListener:function(){this._isListening||(window.MutationObserver?new MutationObserver(function(t){var e=!1;t.forEach(function(t){t.removedNodes.length&&(e=!0)}.bind(this)),e&&this._executeCallbacks({})}.bind(this)).observe(document.body,{childList:!0,subtree:!0}):$(document).bind("DOMNodeRemoved",$.proxy(this._executeCallbacks,this)),this._isListening=!0)},_executeCallbacks:function(t){this._isExecuting||(this._isExecuting=!0,this._callbacks.each((function(e){e.value(t)})),this._isExecuting=!1)}},WCF.Option={},WCF.Option.Handler=Class.extend({init:function(){this._initOptions(),WCF.DOMNodeInsertedHandler.addCallback("WCF.Option.Handler",$.proxy(this._initOptions,this))},_initOptions:function(){$(".jsEnablesOptions").each($.proxy(this._initOption,this))},_initOption:function(t,e){this._change(e),$(e).change($.proxy(this._handleChange,this))},_handleChange:function(t){this._change($(t.target))},_change:function(option){var disableOptions,enableOptions,isActive,$value,relevantDisableOptions,relevantEnableOptions,$index,$item;switch(option=$(option),disableOptions=eval(option.data("disableOptions")),enableOptions=eval(option.data("enableOptions")),option.getTagName()){case"input":switch(option.attr("type")){case"checkbox":this._execute(option.prop("checked"),disableOptions,enableOptions);break;case"radio":option.prop("checked")&&(isActive=!0,option.data("isBoolean")&&1!=option.val()&&(isActive=!1),this._execute(isActive,disableOptions,enableOptions))}break;case"select":if($value=option.val(),relevantDisableOptions=[],relevantEnableOptions=[],disableOptions.length>0)for($index in disableOptions)$item=disableOptions[$index],$item.value==$value?relevantDisableOptions.push($item.option):relevantEnableOptions.push($item.option);if(enableOptions.length>0)for($index in enableOptions)$item=enableOptions[$index],$item.value==$value?relevantEnableOptions.push($item.option):relevantDisableOptions.push($item.option);this._execute(!0,relevantDisableOptions,relevantEnableOptions)}},_execute:function(t,e,i){var n,s,a,o;if(e.length>0)for(n=0,s=e.length;n<s;n++)a=e[n],$.wcfIsset(a)?this._enableOption(a,!t):(o=$("."+$.wcfEscapeID(a)+"Input")).length&&this._enableOptions(o.children("dd").find("input, select, textarea"),!t);if(i.length>0)for(n=0,s=i.length;n<s;n++)a=i[n],$.wcfIsset(a)?this._enableOption(a,t):(o=$("."+$.wcfEscapeID(a)+"Input")).length&&this._enableOptions(o.children("dd").find("input, select, textarea"),t)},_enableOption:function(t,e){this._enableOptionElement($("#"+$.wcfEscapeID(t)),e)},_enableOptionElement:function(t,e){var i,n,s,a;"select"==(i=(t=$(t)).getTagName())||"input"==i&&("checkbox"==t.attr("type")||"file"==t.attr("type")||"radio"==t.attr("type"))?("input"===i&&"radio"===t[0].type&&t[0].checked||(e?t.enable():t.disable()),t.parents(".optionTypeBoolean:eq(0)")&&(n=t.wcfIdentify().replace(/\./g,"\\."),s=$("#"+n+"_no"),e?s.enable():s.disable(),(a=$("#"+n+"_never")).length&&(e?a.enable():a.disable()))):e?t.removeAttr("readonly"):t.attr("readonly",!0),e?t.closest("dl").removeClass("disabled"):t.closest("dl").addClass("disabled")},_enableOptions:function(t,e){for(var i=0,n=t.length;i<n;i++)this._enableOptionElement(t[i],e)}}),WCF.PageVisibilityHandler={_callbacks:new WCF.Dictionary,_isListening:!1,_hiddenFieldName:"",addCallback:function(t,e){if(this._bindListener(),this._callbacks.isset(t))return console.debug("[WCF.PageVisibilityHandler] identifier '"+t+"' is already bound to a callback"),!1;this._callbacks.add(t,e)},removeCallback:function(t){this._callbacks.isset(t)&&this._callbacks.remove(t)},_bindListener:function(){if(!this._isListening){var t=null;void 0!==document.hidden?(this._hiddenFieldName="hidden",t="visibilitychange"):void 0!==document.mozHidden?(this._hiddenFieldName="mozHidden",t="mozvisibilitychange"):void 0!==document.msHidden?(this._hiddenFieldName="msHidden",t="msvisibilitychange"):void 0!==document.webkitHidden&&(this._hiddenFieldName="webkitHidden",t="webkitvisibilitychange"),null===t?console.debug("[WCF.PageVisibilityHandler] This browser does not support the page visibility API."):$(document).on(t,$.proxy(this._executeCallbacks,this)),this._isListening=!0}},_executeCallbacks:function(t){if(!this._isExecuting){this._isExecuting=!0;var e=document[this._hiddenFieldName];this._callbacks.each((function(t){t.value(e)})),this._isExecuting=!1}}},WCF.Table={},WCF.Table.EmptyTableHandler=Class.extend({_options:{},_rowClassName:"",init:function(t,e,i){this._rowClassName=e,this._tableContainer=t,this._options=$.extend(!0,{emptyMessage:null,emptyMessageHtml:null,messageType:"info",refreshPage:!1,updatePageNumber:!1,isTable:0!==this._tableContainer.find("table").length},i||{}),WCF.DOMNodeRemovedHandler.addCallback("WCF.Table.EmptyTableHandler."+e,$.proxy(this._remove,this))},_getRowCount:function(){return this._tableContainer.find((this._options.isTable?"table tr.":".tabularList .")+this._rowClassName).length},_handleEmptyTable:function(){var t,e;this._options.emptyMessage?this._tableContainer.replaceWith($("<p />").addClass(this._options.messageType).text(this._options.emptyMessage)):this._options.emptyMessageHtml?this._tableContainer.replaceWith($("<p />").addClass(this._options.messageType).html(this._options.emptyMessageHtml)):this._options.refreshPage?this._options.updatePageNumber?(t=window.location.href.match(/(\?|&)pageNo=(\d+)/g))&&(e=t[t.length-1].match(/\d+/g),this._options.updatePageNumber>0?e++:e--,window.location=window.location.href.replace(t[t.length-1],t[t.length-1][0]+"pageNo="+e)):window.location.reload():this._tableContainer.remove()},_remove:function(t){var e;$.getLength(t)?(e=$(t.target)).hasClass(this._rowClassName)&&(this._options.isTable?1==e.parents("tbody:eq(0)").children("tr").length&&this._handleEmptyTable():1===this._getRowCount()&&this._handleEmptyTable()):this._getRowCount()||this._handleEmptyTable()}}),WCF.Search={},WCF.Search.Base=Class.extend({_callback:null,_caretAt:-1,_className:"",_commaSeperated:!1,_delay:0,_excludedSearchValues:[],_itemCount:0,_itemIndex:-1,_lastValue:"",_list:null,_oldSearchString:[],_proxy:null,_searchInput:null,_triggerLength:3,_timer:null,init:function(t,e,i,n,s){null==e||$.isFunction(e)?(this._callback=e||null,this._caretAt=-1,this._delay=0,this._excludedSearchValues=[],this._lastValue="",i&&(this._excludedSearchValues=i),this._searchInput=$(t),this._searchInput.length?(this._searchInput.keydown($.proxy(this._keyDown,this)).keyup($.proxy(this._keyUp,this)).wrap('<span class="dropdown" />'),$.browser.mozilla&&$.browser.touch&&this._searchInput.on("input",$.proxy(this._keyUp,this)),this._list=$('<ul class="dropdownMenu" />').insertAfter(this._searchInput),this._commaSeperated=!!n,this._oldSearchString=[],this._itemCount=0,this._itemIndex=-1,this._proxy=new WCF.Action.Proxy({showLoadingOverlay:!0===s,success:$.proxy(this._success,this),autoAbortPrevious:!0}),this._searchInput.is("input")&&this._searchInput.attr("autocomplete","off"),this._searchInput.blur($.proxy(this._blur,this)),WCF.Dropdown.initDropdownFragment(this._searchInput.parent(),this._list)):console.debug("[WCF.Search.Base] Selector '"+t+"' for search input is invalid, aborting.")):console.debug("[WCF.Search.Base] The given callback is invalid, aborting.")},_blur:function(){var t=this;new WCF.PeriodicalExecuter((function(e){t._list.is(":visible")&&t._clearList(!1),e.stop()}),250)},_keyDown:function(t){if(t.which===$.ui.keyCode.ENTER){var e=this._searchInput.parents(".dropdown");e.data("disableAutoFocus")?-1!==this._itemIndex&&t.preventDefault():(e.data("preventSubmit")||-1!==this._itemIndex)&&t.preventDefault()}},_keyUp:function(t){var e,i,n;switch(t.which){case 37:case 39:return;case 38:return void this._selectPreviousItem();case 40:return void this._selectNextItem();case 13:return this._selectElement(t)}if(""===(e=this._getSearchString(t)))this._clearList(!1);else if(e.length>=this._triggerLength){if(this._lastValue===e)return;this._lastValue=e,i={data:{excludedSearchValues:this._excludedSearchValues,searchString:e}},this._delay?(null!==this._timer&&this._timer.stop(),n=this,this._timer=new WCF.PeriodicalExecuter((function(){n._queryServer(i),n._timer.stop(),n._timer=null}),this._delay)):this._queryServer(i)}else this._clearList(!1)},_queryServer:function(t){this._searchInput.parents(".searchBar").addClass("loading"),this._proxy.setOption("data",{actionName:"getSearchResultList",className:this._className,interfaceName:"wcf\\data\\ISearchAction",parameters:this._getParameters(t)}),this._proxy.sendRequest()},setDelay:function(t){this._delay=t},_selectNextItem:function(){0!==this._itemCount&&(this._itemIndex++,this._itemIndex===this._itemCount&&(this._itemIndex=0),this._highlightSelectedElement())},_selectPreviousItem:function(){0!==this._itemCount&&(this._itemIndex--,-1===this._itemIndex&&(this._itemIndex=this._itemCount-1),this._highlightSelectedElement())},_highlightSelectedElement:function(){this._list.find("li").removeClass("dropdownNavigationItem"),this._list.find("li:eq("+this._itemIndex+")").addClass("dropdownNavigationItem")},_selectElement:function(t){return 0===this._itemCount||(this._list.find("li.dropdownNavigationItem").trigger("click"),!1)},_getSearchString:function(t){var e,i,n,s,a=$.trim(this._searchInput.val());if(this._commaSeperated){if((t.keyCode||t.which)==$.ui.keyCode.COMMA)return"";for(i=(e=a.split(",")).length,n=0;n<i;n++)e[n]=$.trim(e[n]);for(n=0;n<i;n++){if(s=e[n],!this._oldSearchString[n]){a=s;break}if(s!=this._oldSearchString[n]){a=s,this._caretAt=n;break}}this._oldSearchString=e}return a},_getParameters:function(t){return t},_success:function(t,e,i){var n,s,a;if(this._clearList(!1),this._searchInput.parents(".searchBar").removeClass("loading"),$.getLength(t.returnValues))for(n in t.returnValues)s=t.returnValues[n],this._createListItem(s);else if(!this._handleEmptyResult())return;WCF.CloseOverlayHandler.addCallback("WCF.Search.Base",((t,e)=>{"dropdown"===t&&e===this._searchInput[0].parentElement.id||this._clearList()})),a=this._searchInput.parents(".dropdown").wcfIdentify(),WCF.Dropdown.getDropdownMenu(a).hasClass("dropdownOpen")||(WCF.Dropdown.toggleDropdown(a,!0),this._openDropdown()),this._itemIndex=-1,WCF.Dropdown.getDropdown(a).data("disableAutoFocus")||this._selectNextItem()},_openDropdown:function(){},_handleEmptyResult:function(){return!1},_createListItem:function(t){var e=$("<li><span>"+WCF.String.escapeHTML(t.label)+"</span></li>").appendTo(this._list);return e.data("objectID",t.objectID).data("label",t.label).click($.proxy(this._executeCallback,this)),this._itemCount++,e},_executeCallback:function(t){var e,i,n=!1,s=$(t.currentTarget);this._commaSeperated?(e=s.data("label"),this._oldSearchString[this._caretAt]=e,this._searchInput.val(this._oldSearchString.join(", ")),$.browser.webkit&&this._searchInput.css({display:"block"}),i=this._searchInput.val().toLowerCase().indexOf(e.toLowerCase())+e.length,this._searchInput.focus().setCaret(i)):null===this._callback?this._searchInput.val(s.data("label")):n=!0===this._callback(s.data()),this._clearList(n)},_clearList:function(t){t&&!this._commaSeperated&&this._searchInput.val(""),WCF.Dropdown.getDropdown(this._searchInput.parents(".dropdown").wcfIdentify()).removeClass("dropdownOpen"),WCF.Dropdown.getDropdownMenu(this._searchInput.parents(".dropdown").wcfIdentify()).removeClass("dropdownOpen"),this._list.end().empty(),WCF.CloseOverlayHandler.removeCallback("WCF.Search.Base"),this._itemCount=0,this._itemIndex=-1},addExcludedSearchValue:function(t){WCF.inArray(t,this._excludedSearchValues)||this._excludedSearchValues.push(t)},removeExcludedSearchValue:function(t){var e=$.inArray(t,this._excludedSearchValues);-1!=e&&this._excludedSearchValues.splice(e,1)}}),WCF.Search.User=WCF.Search.Base.extend({_className:"wcf\\data\\user\\UserAction",_includeUserGroups:!1,init:function(t,e,i,n,s){this._includeUserGroups=i,this._super(t,e,n,s)},_getParameters:function(t){return t.data.includeUserGroups=this._includeUserGroups?1:0,t},_createListItem:function(t){var e,i,n=this._super(t),s=null;return t.icon?s=$(t.icon):this._includeUserGroups&&"group"===t.type&&(s=$('<fa-icon size="16" name="users"></fa-icon>')),s&&(e=n.find("span").detach(),(i=$("<div />").addClass("box16").appendTo(n)).append(s),i.append($("<div />").append(e))),n.data("type",t.type),n}}),WCF.System={},WCF.System.Dependency={},WCF.System.Dependency.Manager={_callbacks:{},_loaded:[],_setupCallbacks:{},register:function(t,e){$.isFunction(e)?WCF.inArray(t,this._loaded)?setTimeout((function(){e()}),1):(this._callbacks[t]||(this._callbacks[t]=[]),this._callbacks[t].push(e)):console.debug("[WCF.System.Dependency.Manager] Callback for identifier '"+t+"' is invalid, aborting.")},setup:function(t,e){$.isFunction(e)?(this._setupCallbacks[t]||(this._setupCallbacks[t]=[]),this._setupCallbacks[t].push(e)):console.debug("[WCF.System.Dependency.Manager] Setup callback for identifier '"+t+"' is invalid, aborting.")},invoke:function(t){var e,i;if(this._setupCallbacks[t]){for(e=0,i=this._setupCallbacks[t].length;e<i;e++)this._setupCallbacks[t][e]();delete this._setupCallbacks[t]}if(this._loaded.push(t),this._callbacks[t]){for(e=0,i=this._callbacks[t].length;e<i;e++)this._callbacks[t][e]();delete this._callbacks[t]}},reset:function(t){var e=this._loaded.indexOf(t);-1!==e&&this._loaded.splice(e,1)}},WCF.System.ObjectStore={_objects:{},add:function(t,e){void 0===this._objects[t]&&(this._objects[t]=[]),this._objects[t].push(e)},invoke:function(t,e){if(this._objects[t])for(var i=0;i<this._objects[t].length;i++)e(this._objects[t][i])}},WCF.System.Captcha={_registeredCaptchas:[],addCallback:function(t,e){require(["WoltLabSuite/Core/Controller/Captcha"],function(i){try{i.add(t,e),this._registeredCaptchas.push(t)}catch(t){if(t instanceof TypeError)return void console.debug("[WCF.System.Captcha] Given callback is no function")}}.bind(this))},getData:function(t){var e,i;if(-1===this._registeredCaptchas.indexOf(t))return e;i=require("WoltLabSuite/Core/Controller/Captcha");try{e=i.getData(t)}catch(e){console.debug('[WCF.System.Captcha] Unknow captcha id "'+t+'"')}return e},removeCallback:function(t){require(["WoltLabSuite/Core/Controller/Captcha"],function(e){try{e.delete(t),this._registeredCaptchas.splice(this._registeredCaptchas.indexOf(item),1)}catch(t){}}.bind(this))}},WCF.System.Page={},WCF.System.Notification=Class.extend({_cssClassNames:"",_message:"",init:function(t,e){this._cssClassNames=e||"",this._message=t||""},show:function(t,e,i,n){require(["Ui/Notification"],function(e){e.show(i||this._message,t,n||this._cssClassNames)}.bind(this))}}),WCF.System.Confirmation={show:function(t,e,i,n,s){if("object"==typeof n){var a=$("<div />");a.append(n),n=a.html()}require(["Ui/Confirmation"],(function(a){a.show({legacyCallback:e,message:t,parameters:i,template:n||"",messageIsHtml:!0===s})}))}},WCF.System.DisableScrolling={_depth:0,_oldOverflow:null,disable:function(){$.browser.touch||(0===this._depth&&(this._oldOverflow=$(document.body).css("overflow"),$(document.body).css("overflow","hidden")),this._depth++)},enable:function(){0!==this._depth&&(this._depth--,0===this._depth&&$(document.body).css("overflow",this._oldOverflow))}},WCF.System.DisableZoom={_depth:0,_oldViewportSettings:null,disable:function(){if(0===this._depth){var t=$("meta[name=viewport]");this._oldViewportSettings=t.attr("content"),t.attr("content",this._oldViewportSettings+",maximum-scale=1")}this._depth++},enable:function(){0!==this._depth&&(this._depth--,0===this._depth&&$("meta[name=viewport]").attr("content",this._oldViewportSettings))}},WCF.System.PushNotification={_callbacks:{},addCallback:function(t,e){void 0===this._callbacks[t]&&(this._callbacks[t]=[]),this._callbacks[t].push(e)},executeCallbacks:function(t){var e,i;for(e in t.returnValues)if(void 0!==this._callbacks[e])for(i=0;i<this._callbacks[e].length;i++)this._callbacks[e][i](t.returnValues[e])}},WCF.System.Event={addListener:function(t,e,i){return window.__wcf_bc_eventHandler.add(t,e,i)},removeListener:function(t,e,i){return window.__wcf_bc_eventHandler.remove(t,e,i)},removeAllListeners:function(t,e){return window.__wcf_bc_eventHandler.removeAll(t,e)},fireEvent:function(t,e,i){window.__wcf_bc_eventHandler.fire(t,e,i)}},WCF.System.Worker=Class.extend({_aborted:!1,_actionName:"",_callback:null,_className:"",_dialog:null,_proxy:null,_title:"",init:function(t,e,i,n,s){this._aborted=!1,this._actionName=t,this._callback=s||null,this._className=e,this._dialog=null,this._proxy=new WCF.Action.Proxy({autoSend:!0,data:{actionName:this._actionName,className:this._className,parameters:n||{}},showLoadingOverlay:!1,success:$.proxy(this._success,this)}),this._title=i},_success:function(t){var e,i;null===this._dialog&&(this._dialog=$("<div />").hide().appendTo(document.body),this._dialog.wcfDialog({closeConfirmMessage:WCF.Language.get("wcf.worker.abort.confirmMessage"),closeViaModal:!1,onClose:$.proxy((function(){this._aborted=!0,this._proxy.abortPrevious(),window.location.reload()}),this),title:this._title})),this._aborted||(t.returnValues.template&&this._dialog.html(t.returnValues.template),this._dialog.find("progress").attr("value",t.returnValues.progress).text(t.returnValues.progress+"%").next("span").text(t.returnValues.progress+"%"),t.returnValues.progress<100?((e=t.returnValues.parameters||{}).loopCount=t.returnValues.loopCount,this._proxy.setOption("data",{actionName:this._actionName,className:this._className,parameters:e}),this._proxy.sendRequest()):null!==this._callback?this._callback(this,t):(this._dialog[0].querySelector("fa-icon").setIcon("check"),this._dialog.find(".contentHeader h1").text(WCF.Language.get("wcf.global.worker.completed")),i=$('<div class="formSubmit" />').appendTo(this._dialog),$('<button type="button" class="button buttonPrimary">'+WCF.Language.get("wcf.global.button.next")+"</button>").appendTo(i).focus().click((function(){t.returnValues.redirectURL?window.location=t.returnValues.redirectURL:window.location.reload()})),this._dialog.wcfDialog("render")))}}),WCF.InlineEditor=Class.extend({_callbacks:[],_dropdowns:{},_elements:{},_notification:null,_options:[],_proxy:null,_triggerElements:{},_updateData:[],_elementSelector:null,_quickOption:null,_dropDownIdToElementId:new Map,init:function(t){var e,i;if(this._elementSelector=t,$(t).length){for(this._setOptions(),e=0,i=this._options.length;e<i;e++)if(this._options[e].isQuickOption){this._quickOption=this._options[e].optionName;break}this.rebuild(),WCF.DOMNodeInsertedHandler.addCallback("WCF.InlineEditor"+this._elementSelector.hashCode(),$.proxy(this.rebuild,this)),this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),WCF.CloseOverlayHandler.addCallback("WCF.InlineEditor",$.proxy(this._closeAll,this)),this._notification=new WCF.System.Notification(WCF.Language.get("wcf.global.success"),"success")}},rebuild:function(){var t=$(this._elementSelector),e=this;t.each((function(t,i){var n,s=$(i),a=s.wcfIdentify();if(void 0===e._elements[a]){if(null===(n=e._getTriggerElement(s))||1!==n.length)return;n[0].addEventListener("keydown",(t=>{"Enter"===t.key&&(t.preventDefault(),n[0].dataset.isKeyboardClick="true",e._show(t))})),n.on("click",$.proxy(e._show,e)).data("elementID",a),n[0].dataset.requiresSynthethicClick=!0,e._quickOption&&n.disableSelection().data("optionName",e._quickOption).dblclick($.proxy(e._click,e)),e._elements[a]=s}}))},_closeAll:function(t,e){let i="";"dropdown"===t&&(i=this._dropDownIdToElementId.get(e||"")||""),Object.keys(this._elements).forEach((t=>{t!==i&&this._hide(t)}))},_setOptions:function(){this._options=[]},registerCallback:function(t){$.isFunction(t)&&this._callbacks.push(t)},_getTriggerElement:function(t){return null},_show:function(t){var e,i,n,s,a,o,r,l,c,h,u;for(t.preventDefault(),e=$(t.currentTarget).data("elementID"),i=null,this._dropdowns[e]||(this._triggerElements[e]=i=this._getTriggerElement(this._elements[e]).addClass("dropdownToggle"),(n=i[0].parentNode)&&"LI"===n.nodeName&&1===n.childElementCount||n&&n.classList.contains("contentInteractionButton")?n.classList.add("dropdown"):i.wrap('<span class="dropdown" />'),this._dropdowns[e]=$('<ul class="dropdownMenu" />').insertAfter(i)),this._dropdowns[e].empty(),this._dropDownIdToElementId.has(e)||(null===i&&(i=this._getTriggerElement(this._elements[e])),this._dropDownIdToElementId.set(i.parent().wcfIdentify(),e)),s=!1,a="",o=0,r=this._options.length;o<r;o++)"divider"===(l=this._options[o]).optionName?""!==a&&"divider"!==a&&($('<li class="dropdownDivider" />').appendTo(this._dropdowns[e]),a=l.optionName):(this._validate(e,l.optionName)||this._validateCallbacks(e,l.optionName))&&($("<li><span>"+l.label+"</span></li>").appendTo(this._dropdowns[e]).data("elementID",e).data("optionName",l.optionName).data("isQuickOption",!!l.isQuickOption).click($.proxy(this._click,this)),s=!0,a=l.optionName);return s&&((c=this._dropdowns[e].children().last()).hasClass("dropdownDivider")&&c.remove(),h=null,u=0,this._dropdowns[e].children().each((function(t,e){var i=$(e);i.hasClass("dropdownDivider")||(i.data("isQuickOption")?h=i:u++)})),!u)?(h.trigger("click"),this._triggerElements[e]&&WCF.Dropdown.close(this._triggerElements[e].parents(".dropdown").wcfIdentify()),!1):(null!==i&&WCF.Dropdown.initDropdown(i,t.originalEvent||t),!1)},_validate:function(t,e){return!1},_validateCallbacks:function(t,e){var i,n=this._callbacks.length;if(n)for(i=0;i<n;i++)if(this._callbacks[i].validate(this._elements[t],e))return!0;return!1},_success:function(t,e,i){this._updateData.length&&(this._updateState(t),this._updateData=[])},_updateState:function(t){},_click:function(t){var e=$(t.currentTarget),i=e.data("elementID"),n=e.data("optionName");this._execute(i,n)||this._executeCallback(i,n),this._hide(i)},_execute:function(t,e){return!1},_executeCallback:function(t,e){var i,n=this._callbacks.length;if(n)for(i=0;i<n;i++)if(this._callbacks[i].execute(this._elements[t],e))return!0;return!1},_hide:function(t){this._dropdowns[t]&&this._dropdowns[t].empty().removeClass("dropdownOpen")}}),WCF.Upload=Class.extend({_name:"__files[]",_buttonSelector:null,_fileListSelector:null,_fileUpload:null,_className:"",_iframe:null,_internalFileID:0,_options:{},_uploadMatrix:[],_supportsAJAXUpload:!0,_overlay:null,init:function(t,e,i,n){this._buttonSelector=t,this._fileListSelector=e,this._className=i,this._internalFileID=0,this._options=$.extend(!0,{action:"upload",multiple:!1,url:"index.php?ajax-upload/&t="+SECURITY_TOKEN},n||{}),this._options.url=WCF.convertLegacyURL(this._options.url),0===this._options.url.indexOf("index.php")&&(this._options.url=WSC_API_URL+this._options.url);var s=new XMLHttpRequest;this._supportsAJAXUpload=s&&"upload"in s&&"onprogress"in s.upload,this._createButton()},_createButton:function(){var t;this._supportsAJAXUpload?(this._fileUpload=$('<input type="file" name="'+this._name+'" '+(this._options.multiple?'multiple="true" ':"")+"/>"),this._fileUpload.change($.proxy(this._upload,this)),t=$('<p class="button uploadButton"><span>'+WCF.Language.get("wcf.global.button.upload")+"</span></p>"),elAttr(t[0],"role","button"),t.prepend(this._fileUpload),this._fileUpload[0].addEventListener("focus",(function(){this.matches(":focus-visible")&&t[0].classList.add("active")})),this._fileUpload[0].addEventListener("blur",(function(){t[0].classList.remove("active")}))):(t=$('<p class="button uploadFallbackButton"><span>'+WCF.Language.get("wcf.global.button.upload")+"</span></p>"),elAttr(t[0],"role","button"),elAttr(t[0],"tabindex","0"),t.click($.proxy(this._showOverlay,this))),this._insertButton(t)},_insertButton:function(t){this._buttonSelector.prepend(t)},_removeButton:function(){var t=".uploadButton";this._supportsAJAXUpload||(t=".uploadFallbackButton"),this._buttonSelector.find(t).remove()},_upload:function(t,e,i,n){var s,a,o,r,l,c,h,u,d=null,p=[];if(void 0!==n)p=n;else if(e)p.push(e);else if(i){switch(s="",i.type){case"image/png":s=".png";break;case"image/jpeg":s=".jpg";break;case"image/gif":s=".gif";break;case"image/webp":s=".webp"}p.push({name:"pasted-from-clipboard"+s})}else p=this._fileUpload.prop("files");if(p.length){if(a=new FormData,d=this._createUploadMatrix(p),!this._uploadMatrix[d].length)return null;for(o=0,r=p.length;o<r;o++)this._uploadMatrix[d][o]&&(l=this._uploadMatrix[d][o].data("internalFileID"),i?a.append("__files["+l+"]",i,p[o].name):a.append("__files["+l+"]",p[o],p[o].name));for(h in a.append("actionName",this._options.action),a.append("className",this._className),c=this._getParameters())a.append("parameters["+h+"]",c[h]);u=this,$.ajax({type:"POST",url:this._options.url,enctype:"multipart/form-data",data:a,contentType:!1,processData:!1,success:function(t,e,i){u._success(d,t)},error:$.proxy(this._error,this),xhr:function(){var t=$.ajaxSettings.xhr();return t&&t.upload.addEventListener("progress",(function(t){u._progress(d,t)}),!1),t},xhrFields:{withCredentials:!0}})}return d},_createUploadMatrix:function(t){var e,i,n,s,a;if(t.length){for(e=this._uploadMatrix.length,this._uploadMatrix[e]=[],i=0,n=t.length;i<n;i++)s=t[i],(a=this._initFile(s)).hasClass("uploadFailed")||(a.data("filename",s.name).data("internalFileID",this._internalFileID++),this._uploadMatrix[e][i]=a);return e}return null},_success:function(t,e){},_error:function(t,e,i){},_progress:function(t,e){var i,n=Math.round(100*e.loaded/e.total);for(i in this._uploadMatrix[t])this._uploadMatrix[t][i].find("progress").attr("value",n)},_getParameters:function(){return{}},_initFile:function(t){return $("<li>"+t.name+" ("+t.size+')<progress max="100" /></li>').appendTo(this._fileListSelector)},_showOverlay:function(){var t,e,i;if(null===this._iframe&&(this._iframe=$('<iframe name="__fileUploadIFrame" />').hide().appendTo(document.body)),!this._overlay){for(i in this._overlay=$('<div><form enctype="multipart/form-data" method="post" action="'+this._options.url+'" target="__fileUploadIFrame" /></div>').hide().appendTo(document.body),t=this._overlay.find("form"),$('<dl class="wide"><dd><input type="file" id="__fileUpload" name="'+this._name+'" '+(this._options.multiple?'multiple="true" ':"")+"/></dd></dl>").appendTo(t),$('<div class="formSubmit"><input type="submit" value="Upload" accesskey="s" /></div></form>').appendTo(t),$('<input type="hidden" name="isFallback" value="1" />').appendTo(t),$('<input type="hidden" name="actionName" value="'+this._options.action+'" />').appendTo(t),$('<input type="hidden" name="className" value="'+this._className+'" />').appendTo(t),e=this._getParameters())$('<input type="hidden" name="'+i+'" value="'+e[i]+'" />').appendTo(t);t.submit($.proxy((function(){var t={name:this._getFilename(),size:""},e=this._createUploadMatrix([t]),i=this;this._iframe.data("loading",!0).off("load").load((function(){i._evaluateResponse(e)})),this._overlay.wcfDialog("close")}),this))}this._overlay.wcfDialog({title:WCF.Language.get("wcf.global.button.upload")})},_evaluateResponse:function(t){var e=$.parseJSON(this._iframe.contents().find("pre").html());this._success(t,e)},_getFilename:function(){return $("#__fileUpload").val().split("\\").pop()}}),WCF.Upload.Parallel=WCF.Upload.extend({init:function(t,e,i,n){n=$.extend(!0,n||{},{multiple:!0}),this._super(t,e,i,n)},_upload:function(){var t,e,i,n,s,a,o,r=this._fileUpload.prop("files");for(t=0,e=r.length;t<e;t++)if(i=r[t],n=new FormData,s=this._createUploadMatrix(i),this._uploadMatrix[s].length){for(o in n.append("__files["+s+"]",i),n.append("actionName",this._options.action),n.append("className",this._className),a=this._getParameters())n.append("parameters["+o+"]",a[o]);this._sendRequest(s,n)}},_sendRequest:function(t,e){var i=this;return $.ajax({type:"POST",url:this._options.url,enctype:"multipart/form-data",data:e,contentType:!1,processData:!1,success:function(e,n,s){i._success(t,e)},error:$.proxy(this._error,this),xhr:function(){var e=$.ajaxSettings.xhr();return e&&e.upload.addEventListener("progress",(function(e){i._progress(t,e)}),!1),e}})},_createUploadMatrix:function(t){var e=this._initFile(t);return e.hasClass("uploadFailed")?null:(e.data("filename",t.name).data("internalFileID",this._internalFileID),this._uploadMatrix[this._internalFileID++]=e,this._internalFileID-1)},_success:function(t,e){},_progress:function(t,e){var i=Math.round(100*e.loaded/e.total);this._uploadMatrix[t].find("progress").attr("value",i)},_showOverlay:function(){var t,e,i;if(null===this._iframe&&(this._iframe=$('<iframe name="__fileUploadIFrame" />').hide().appendTo(document.body)),!this._overlay){for(i in this._overlay=$('<div><form enctype="multipart/form-data" method="post" action="'+this._options.url+'" target="__fileUploadIFrame" /></div>').hide().appendTo(document.body),t=this._overlay.find("form"),$('<dl class="wide"><dd><input type="file" id="__fileUpload" name="'+this._name+'" '+(this._options.multiple?'multiple="true" ':"")+"/></dd></dl>").appendTo(t),$('<div class="formSubmit"><input type="submit" value="Upload" accesskey="s" /></div></form>').appendTo(t),$('<input type="hidden" name="isFallback" value="1" />').appendTo(t),$('<input type="hidden" name="actionName" value="'+this._options.action+'" />').appendTo(t),$('<input type="hidden" name="className" value="'+this._className+'" />').appendTo(t),e=this._getParameters())$('<input type="hidden" name="'+i+'" value="'+e[i]+'" />').appendTo(t);t.submit($.proxy((function(){var t={name:this._getFilename(),size:""},e=this._createUploadMatrix(t),i=this;this._iframe.data("loading",!0).off("load").load((function(){i._evaluateResponse(e)})),this._overlay.wcfDialog("close")}),this))}this._overlay.wcfDialog({title:WCF.Language.get("wcf.global.button.upload")})},_evaluateResponse:function(t){var e=$.parseJSON(this._iframe.contents().find("pre").html());this._success(t,e)}}),WCF.Sortable={},WCF.Sortable.List=Class.extend({_additionalParameters:{},_className:"",_containerID:"",_container:null,_notification:null,_offset:0,_options:{},_proxy:null,_structure:{},init:function(t,e,i,n,s,a){var o,r,l;if(this._additionalParameters=a||{},this._containerID=$.wcfEscapeID(t),this._container=$("#"+this._containerID),this._className=e,this._offset=i||0,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._structure={},this._options=$.extend(!0,{axis:"y",connectWith:"#"+this._containerID+" .sortableList",disableNesting:"sortableNoNesting",doNotClear:!0,errorClass:"sortableInvalidTarget",forcePlaceholderSize:!0,handle:"",helper:"clone",items:"li:not(.sortableNoSorting)",opacity:.6,placeholder:"sortablePlaceholder",tolerance:"pointer",toleranceElement:"> span"},n||{}),(o=$("#"+this._containerID+" .sortableList")).is("tbody")&&("li:not(.sortableNoSorting)"===this._options.items&&(this._options.items="tr:not(.sortableNoSorting)",this._options.toleranceElement=""),"clone"===this._options.helper&&(this._options.helper=this._tableRowHelper.bind(this),(r=o.prev("thead"))&&r.find("th").each((function(t,e){(e=$(e)).width(e.width())})))),s?o.sortable(this._options):o.nestedSortable(this._options),this._className){if(!(l=this._container.find(".formSubmit")).length&&!(l=this._container.next(".formSubmit")).length)return void console.debug("[WCF.Sortable.Simple] Unable to find form submit for saving, aborting.");l.children('button[data-type="submit"]').click($.proxy(this._submit,this))}},_tableRowHelper:function(t,e){return e.children("td").each((function(t,e){(e=$(e)).width(e.width())})),e},_submit:function(){this._structure={},this._container.find(".sortableList").each($.proxy((function(t,e){var i=$(e),n=i.data("objectID");void 0!==n&&i.children(this._options.items).each($.proxy((function(t,e){var i=$(e).data("objectID");this._structure[n]||(this._structure[n]=[]),this._structure[n].push(i)}),this))}),this));var t=$.extend(!0,{data:{offset:this._offset,structure:this._structure}},this._additionalParameters);this._proxy.setOption("data",{actionName:"updatePosition",className:this._className,interfaceName:"wcf\\data\\ISortableAction",parameters:t}),this._proxy.sendRequest()},_success:function(t,e,i){null===this._notification&&(this._notification=new WCF.System.Notification(WCF.Language.get("wcf.global.success.edit"))),this._notification.show()}}),WCF.Popover=Class.extend({_activeElementID:"",_identifier:"",_popoverObj:null,init:function(t){var e=!1;require(["Environment"],function(t){"desktop"!==t.platform()&&(e=!0)}.bind(this)),e||(this._activeElementID="",this._identifier=t,require(["WoltLabSuite/Core/Controller/Popover"],function(e){e.init({attributeName:"legacy",className:t,identifier:this._identifier,legacy:!0,loadCallback:this._legacyLoad.bind(this)})}.bind(this)))},_initContainers:function(){},_legacyLoad:function(t,e){this._activeElementID=t,this._popoverObj=e,this._loadContent()},_insertContent:function(t,e){this._popoverObj.setContent(this._identifier,t,e)}}),WCF.EditableItemList=Class.extend({_allowCustomInput:!1,_className:"",_data:{},_form:null,_itemList:null,_objectID:0,_objectTypeID:0,_search:null,_searchInput:null,init:function(t,e){if(this._itemList=$(t),this._searchInput=$(e),this._data={},this._itemList.length&&this._searchInput.length){if(this._objectID=this._getObjectID(),this._objectTypeID=this._getObjectTypeID(),this._itemList.find(".jsEditableItem").click($.proxy(this._click,this)),this._itemList.children("ul").length||$("<ul />").appendTo(this._itemList),this._itemList=this._itemList.children("ul"),this._form=this._itemList.parents("form").submit($.proxy(this._submit,this)),this._allowCustomInput){var i=this;this._searchInput.keydown($.proxy(this._keyDown,this)).keypress($.proxy(this._keyPress,this)).on("paste",(function(){setTimeout((function(){i._onPaste()}),100)}))}this._searchInput.parents(".dropdown").data("preventSubmit",!0)}else console.debug("[WCF.EditableItemList] Item list and/or search input do not exist, aborting.")},_keyDown:function(t){return null!==t||this._keyPress(null)},_keyPress:function(t){if(null===t||44===t.charCode||t.charCode===$.ui.keyCode.ENTER||$.browser.mozilla&&t.keyCode===$.ui.keyCode.ENTER){if(null!==t&&t.charCode===$.ui.keyCode.ENTER&&this._search&&-1!==this._search._itemIndex)return!1;var e=$.trim(this._searchInput.val());return t&&44===t.charCode&&(e=e.substring(0,this._searchInput.getCaret())),""===e||(this.addItem({objectID:0,label:e}),t&&44===t.charCode?this._searchInput.val($.trim(this._searchInput.val().substr(this._searchInput.getCaret()))):this._searchInput.val(""),null!==t&&t.stopPropagation(),!1)}return!0},_onPaste:function(){var t,e,i,n=$.trim(this._searchInput.val());for(t=0,e=(n=n.split(",")).length;t<e;t++)""!==(i=$.trim(n[t]))&&this.addItem({objectID:0,label:i});this._searchInput.val("")},load:function(t){},_click:function(t){var e=$(t.currentTarget),i=e.data("objectID"),n=e.data("label");return this._search&&this._search.removeExcludedSearchValue(n),this._removeItem(i,n),e.remove(),t.stopPropagation(),!1},_getObjectID:function(){return 0},_getObjectTypeID:function(){return 0},addItem:function(t){return!(!this._data[t.objectID]||0===t.objectID&&this._allowCustomInput)||($('<li class="badge">'+WCF.String.escapeHTML(t.label)+"</li>").data("objectID",t.objectID).data("label",t.label).appendTo(this._itemList).click($.proxy(this._click,this)),this._search&&this._search.addExcludedSearchValue(t.label),this._addItem(t.objectID,t.label),!0)},clearList:function(){this._itemList.children("li").each($.proxy((function(t,e){var i=$(e);this._search&&this._search.removeExcludedSearchValue(i.data("label")),i.remove(),this._removeItem(i.data("objectID"),i.data("label"))}),this))},_submit:function(){this._keyDown(null)},_addItem:function(t,e){this._data[t]=e},_removeItem:function(t,e){delete this._data[t]},getSearchInput:function(){return this._searchInput}}),WCF.Language.Chooser=Class.extend({init:function(t,e,i,n,s,a){require(["WoltLabSuite/Core/Language/Chooser"],(function(o){o.init(t,e,i,n,s,a)}))}}),WCF.Style={},jQuery.fn.extend({wcfDialog:function(t){var e=arguments;return require(["Dom/Util","Ui/Dialog"],function(i,n){var s,a=i.identify(this[0]);"close"===t?n.close(a):"render"===t?n.rebuild(a):"option"===t?3===e.length&&("title"===e[1]&&"string"==typeof e[2]?n.setTitle(a,e[2]):0===e[1].indexOf("on")?n.setCallback(a,e[1],e[2]):"closeConfirmMessage"===e[1]&&null===e[2]&&n.setCallback(a,"onBeforeClose",null)):(this[0].parentNode.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&document.body.appendChild(this[0]),s=1===e.length&&"object"==typeof e[0]?e[0]:{},n.openStatic(a,null,s),s.hasOwnProperty("title")&&n.setTitle(a,s.title))}.bind(this)),this}}),$.widget("ui.wcfSlideshow",{_buttonList:null,_count:0,_index:0,_itemList:null,_items:null,_timer:null,_width:0,options:{cycle:!0,cycleInterval:5,itemGap:50},_create:function(){this._itemList=this.element.children("ul"),this._items=this._itemList.children("li"),this._count=this._items.length,this._index=0,this._count>1&&this._initSlideshow()},_initSlideshow:function(){var t,e,i=$(this._items.get(0)).outerHeight();for(this._items.addClass("slideshowItem"),this._width=this.element.css("height",i).innerWidth(),this._itemList.addClass("slideshowItemList").css("left",0),this._items.each($.proxy((function(t,e){$(e).show().css({height:i,left:(this._width+this.options.itemGap)*t,width:this._width})}),this)),this.element.css({height:i,width:this._width}).hover($.proxy(this._hoverIn,this),$.proxy(this._hoverOut,this)),this._buttonList=$('<ul class="slideshowButtonList" />').appendTo(this.element),t=0;t<this._count;t++)e=$('<li><a><fa-icon size="16" name="circle"></fa-icon></a></li>').data("index",t).click($.proxy(this._click,this)).appendTo(this._buttonList),0==t&&e.find("fa-icon")[0].setIcon("circle",!0);this._resetTimer(),$(window).resize($.proxy(this._resize,this))},rebuildHeight:function(){var t=$(this._items.get(0)).css("height","auto").outerHeight();this._items.css("height",t+"px"),this.element.css("height",t+"px")},_resize:function(){this._width=this.element.css("width","auto").innerWidth(),this._items.each($.proxy((function(t,e){$(e).css({left:(this._width+this.options.itemGap)*t,width:this._width})}),this)),this._index--,this.moveTo(null)},_hoverIn:function(){null!==this._timer&&this._timer.stop()},_hoverOut:function(){this._resetTimer()},_resetTimer:function(){if(this.options.cycle){null!==this._timer&&this._timer.stop();var t=this;this._timer=new WCF.PeriodicalExecuter((function(){t.moveTo(null)}),1e3*this.options.cycleInterval)}},_click:function(t){this.moveTo($(t.currentTarget).data("index")),this._resetTimer()},moveTo:function(t){this._index=null===t?this._index+1:t,this._index==this._count&&(this._index=0),this._buttonList[0].querySelectorAll("fa-icon").forEach((t=>t.setIcon("circle",!1))),$(this._buttonList.find("fa-icon").get(this._index))[0].setIcon("circle",!0),this._itemList.css("left",this._index*(this._width+this.options.itemGap)*-1),this._trigger("moveTo",null,{index:this._index})},getItem:function(t){return this._items[t]?this._items[t]:null}}),jQuery.fn.extend({datepicker:function(t){var e=this[0],i=Array.prototype.slice.call(arguments,1);switch(t){case"destroy":window.__wcf_bc_datePicker.destroy(e);break;case"getDate":return window.__wcf_bc_datePicker.getDate(e);case"option":if("onClose"===i[0])return i.length>1?this.datepicker("setOption","onClose",i[1]):function(){};console.warn("datepicker('option') supports only 'onClose'.");break;case"setDate":window.__wcf_bc_datePicker.setDate(e,i[0]);break;case"setOption":"onClose"===i[0]?window.__wcf_bc_datePicker.setCloseCallback(e,i[1]):console.warn("datepicker('setOption') supports only 'onClose'.");break;default:console.debug("Unsupported method '"+t+"' for datepicker()")}return this}}),jQuery.fn.extend({wcfTabs:function(t){var e=this[0],i=Array.prototype.slice.call(arguments,1);require(["Dom/Util","WoltLabSuite/Core/Ui/TabMenu"],(function(n,s){var a=s.getTabMenu(n.identify(e));null!==a&&a[t].apply(a,i)}))}}),$.widget("ui.wcfPages",{_api:null,SHOW_LINKS:11,SHOW_SUB_LINKS:20,options:{activePage:1,maxPage:1},_create:function(){require(["WoltLabSuite/Core/Ui/Pagination"],function(t){this._api=new t(this.element[0],{activePage:this.options.activePage,maxPage:this.options.maxPage,callbackShouldSwitch:function(t){return!1!==this._trigger("shouldSwitch",void 0,{nextPage:t})}.bind(this),callbackSwitch:function(t){this._trigger("switched",void 0,{activePage:t})}.bind(this)})}.bind(this))},destroy:function(){$.Widget.prototype.destroy.apply(this,arguments),this._api=null,this.element[0].innerHTML=""},_setOption:function(t,e){if("activePage"==t&&e!=this.options[t]&&e>0&&e<=this.options.maxPage){var i=this._trigger("shouldSwitch",void 0,{nextPage:e});i||void 0!==i?this._api.switchPage(e):this._trigger("notSwitched",void 0,{activePage:e})}return this}}),WCF.Category={},WCF.Category.NestedList=Class.extend({_categories:{},init:function(){var t=this;$(".jsCategory").each((function(e,i){var n,s=$(i).data("parentCategoryID",null).change($.proxy(t._updateSelection,t));t._categories[s.val()]=s,n=[],s.parents("li").find(".jsChildCategory").each((function(e,i){var a=$(i).data("parentCategoryID",s.val()).change($.proxy(t._updateSelection,t));t._categories[a.val()]=a,n.push(a.val()),a.is(":checked")&&s.prop("checked","checked")})),s.data("childCategoryIDs",n)}))},_updateSelection:function(t){var e,i,n,s=$(t.currentTarget),a=s.data("parentCategoryID");if(s.is(":checked"))null!==a&&this._categories[a].prop("checked","checked");else if(null===a)for(i=0,n=(e=s.data("childCategoryIDs")).length;i<n;i++)this._categories[e[i]].prop("checked",!1)}}),WCF.Category.FlexibleCategoryList=Class.extend({_list:null,_categories:{},init:function(t){this._list=$("#"+t),this._buildStructure(),this._list.find("input:checked").each((function(){$(this).trigger("change")})),this._list.children("li").length<2&&this._list.addClass("flexibleCategoryListDisabled")},_buildStructure:function(){var t=this;this._list.find(".jsCategory").each((function(e,i){var n=$(i).change(t._updateSelection.bind(t)),s=parseInt(n.val()),a=[];n.parents("li:eq(0)").find(".jsChildCategory").each((function(e,i){var s,o,r=$(i);r.data("parentCategory",n).change(t._updateSelection.bind(t)),s=parseInt(r.val()),a.push(r),o=[],r.parents("li:eq(0)").find(".jsSubChildCategory").each((function(e,i){var n=$(i);n.data("parentCategory",r).change(t._updateSelection.bind(t)),o.push(n)})),t._categories[s]=o})),t._categories[s]=a}))},_updateSelection:function(t){var e,i,n,s,a,o,r,l=$(t.currentTarget),c=parseInt(l.val()),h=l.data("parentCategory");if(l.is(":checked"))h&&(h.prop("checked","checked"),(h=h.data("parentCategory"))&&h.prop("checked","checked"));else{if(this._categories[c])for(e=0,i=this._categories[c].length;e<i;e++)if((n=this._categories[c][e]).prop("checked",!1),s=parseInt(n.val()),this._categories[s])for(a=0,o=this._categories[s].length;a<o;a++)this._categories[s][a].prop("checked",!1);if(h){for(r=parseInt(h.val()),e=0,i=this._categories[r].length;e<i;e++)if(this._categories[r][e].prop("checked"))return;if(h=h.data("parentCategory"))for(r=parseInt(h.val()),e=0,i=this._categories[r].length;e<i;e++)if(this._categories[r][e].prop("checked"))return}}}}),WCF.Condition={},WCF.Notice={}; })(this);
 
 // WCF.ACL.js
 (function (window, undefined) { "use strict";WCF.ACL={},WCF.ACL.List=Class.extend({_categoryName:"",_container:null,_containerElements:{},_objectID:0,_objectTypeID:null,_options:{},_proxy:null,_search:null,_values:{group:{},user:{}},init:function(e,t,s,a,i,n,o){var r,c,l,h,p,u;this._objectID=a||0,this._objectTypeID=t,this._categoryName=s,void 0===i&&(i=!0),this._values={group:{},user:{}},this._aclValuesFieldName=o||"aclValues",this._proxy=new WCF.Action.Proxy({showLoadingOverlay:!1,success:$.proxy(this._success,this)}),this._container=$(e).hide().addClass("aclContainer"),r=this._container.children("dd"),c=$('<ul class="aclList containerList" />').appendTo(r),l=$('<input type="text" class="long" placeholder="'+WCF.Language.get("wcf.acl.search."+(i?"":"user.")+"description")+'" />').appendTo(r),h=$('<ul class="aclPermissionList containerList" />').hide().appendTo(r),elData(h[0],"grant",WCF.Language.get("wcf.acl.option.grant")),elData(h[0],"deny",WCF.Language.get("wcf.acl.option.deny")),this._containerElements={aclList:c,permissionList:h,searchInput:l},this._search=new WCF.Search.User(l,$.proxy(this.addObject,this),i),(p=this._container.parents("form:eq(0)")).submit($.proxy(this.submit,this)),(u=p.find("input[type=reset]:eq(0)")).length&&u.click($.proxy(this._reset,this)),n?this._success(n):this._loadACL()},_reset:function(){this._values={group:{},user:{}},this._containerElements.aclList.empty(),this._containerElements.searchInput.val(""),this._containerElements.permissionList.hide().find("input[type=checkbox]").prop("checked",!1)},_loadACL:function(){this._proxy.setOption("data",{actionName:"loadAll",className:"wcf\\data\\acl\\option\\ACLOptionAction",parameters:{categoryName:this._categoryName,objectID:this._objectID,objectTypeID:this._objectTypeID}}),this._proxy.sendRequest()},addObject:function(e){var t=this._createListItem(e.objectID,e.label,e.type);this._savePermissions(),this._containerElements.aclList.children("li").removeClass("active"),t.addClass("active"),this._search.addExcludedSearchValue(e.label),this._containerElements.permissionList.find("input[type=checkbox]").prop("checked",!1),this._containerElements.searchInput.val(""),this._containerElements.permissionList.show(),WCF.DOMNodeInsertedHandler.execute()},_createListItem:function(e,t,s){var a=$('<li><fa-icon size="16" name="'+("group"===s?"users":"user")+'" solid></fa-icon> <span class="aclLabel">'+t+"</span></li>").appendTo(this._containerElements.aclList);return a.data("objectID",e).data("type",s).data("label",t).click($.proxy(this._click,this)),$('<button type="button" title="'+WCF.Language.get("wcf.global.button.delete")+'"><fa-icon size="16" name="xmark" solid></fa-icon></button>').click($.proxy(this._removeItem,this)).appendTo(a),a},_removeItem:function(e){var t,s,a;this._savePermissions(),s=(t=$(e.currentTarget).parent()).data("type"),a=t.data("objectID"),this._search.removeExcludedSearchValue(t.data("label")),t.remove(),this._values[s][a]&&delete this._values[s][a],this._selectFirstEntry()},_selectFirstEntry:function(){var e=this._containerElements.aclList.children("li:eq(0)");e.length?this._select(e,!1):this._reset()},_success:function(e,t,s){var a,i,n,o,r,c,l,h,p,u;if($.getLength(e.returnValues.options)){for(i in a={},e.returnValues.options)n=e.returnValues.options[i],o=$("<li><span>"+n.label+"</span></li>").data("optionID",i).data("optionName",n.optionName),r=$('<input type="checkbox" id="grant'+i+'" />').appendTo(o).wrap('<label for="grant'+i+'" class="jsTooltip" title="'+WCF.Language.get("wcf.acl.option.grant")+'" />'),c=$('<input type="checkbox" id="deny'+i+'" />').appendTo(o).wrap('<label for="deny'+i+'" class="jsTooltip" title="'+WCF.Language.get("wcf.acl.option.deny")+'" />'),r.data("type","grant").data("optionID",i).change($.proxy(this._change,this)),c.data("type","deny").data("optionID",i).change($.proxy(this._change,this)),a[n.categoryName]||(a[n.categoryName]=[]),""===n.categoryName?o.appendTo(this._containerElements.permissionList):a[n.categoryName].push(o);if($.getLength(a))for(l in a)for(h=a[l],e.returnValues.categories[l]&&$('<li class="aclCategory">'+e.returnValues.categories[l]+"</li>").appendTo(this._containerElements.permissionList),p=0,u=h.length;p<u;p++)h[p].appendTo(this._containerElements.permissionList);this._parseData(e,"group"),this._parseData(e,"user"),this._container.show(),require(["WoltLabSuite/Core/Form/Builder/Field/Dependency/Manager"],(function(e){e.checkDependencies()})),this._selectFirstEntry()}},_parseData:function(e,t){if($.getLength(e.returnValues[t].option)){for(var s in e.returnValues[t].label)this._createListItem(s,e.returnValues[t].label[s],t),this._search.addExcludedSearchValue(e.returnValues[t].label[s]);this._values[t]=e.returnValues[t].option,WCF.DOMNodeInsertedHandler.execute()}},_click:function(e){var t=$(e.currentTarget);t.hasClass("active")||this._select(t,!0)},_select:function(e,t){t&&this._savePermissions(),this._containerElements.aclList.children("li").removeClass("active"),e.addClass("active"),this._setupPermissions(e.data("type"),e.data("objectID"))},_change:function(e){var t=$(e.currentTarget),s=t.data("optionID"),a=t.data("type");t.is(":checked")&&("deny"===a?$("#grant"+s).prop("checked",!1):$("#deny"+s).prop("checked",!1))},_setupPermissions:function(e,t){if(this._containerElements.permissionList.find("input[type='checkbox']").prop("checked",!1),this._values[e]&&this._values[e][t])for(var s in this._values[e][t])1==this._values[e][t][s]?$("#grant"+s).prop("checked",!0).trigger("change"):$("#deny"+s).prop("checked",!0).trigger("change");this._containerElements.permissionList.show()},_savePermissions:function(){var e,t,s=this._containerElements.aclList.find("li.active");s.length&&(e=s.data("objectID"),t=s.data("type"),this._values[t][e]={},this._containerElements.permissionList.find("input[type='checkbox']").each(function(s,a){var i=$(a),n="deny"===i.data("type")?0:1,o=i.data("optionID");i.is(":checked")?(this._values[t][e][o]=n,i.prop("checked",!1)):this._values[t]&&this._values[t][e]&&this._values[t][e][o]&&this._values[t][e][o]==n&&delete this._values[t][e][o]}.bind(this)))},submit:function(e){this._savePermissions(),this._save("group"),this._save("user")},_save:function(e){var t,s,a,i;if($.getLength(this._values[e]))for(s in t=this._container.parents("form:eq(0)"),this._values[e])for(i in a=this._values[e][s])$('<input type="hidden" name="'+this._aclValuesFieldName+"["+e+"]["+s+"]["+i+']" value="'+a[i]+'" />').appendTo(t)},getData:function(){return this._savePermissions(),this._values}}); })(this);