Advertisement
ArtEze

stub.es.js?v=82430adad6d5

Feb 20th, 2020
452
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. "use strict";
  2.  
  3. function IsMalwareProxy() {
  4.     try {
  5.         return window.location.host.endsWith(".kinokrad-co.com") || window.location.host.endsWith(".cryptoo.online")
  6.     } catch (e) {
  7.         return !1
  8.     }
  9. }
  10. if (window.StackExchange = {}, window.jQuery && ! function(e) {
  11.         var t = function(e) {
  12.             e = e.toLowerCase();
  13.             var t = /(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) || [];
  14.             return {
  15.                 "browser": t[1] || "",
  16.                 "version": t[2] || "0"
  17.             }
  18.         };
  19.         if (!e.browser) {
  20.             var n = t(navigator.userAgent),
  21.                 i = {};
  22.             n.browser && (i[n.browser] = !0, i.version = n.version), i.chrome ? i.webkit = !0 : i.webkit && (i.safari = !0), e.browser = i
  23.         }
  24.     }(jQuery), top !== self && 0 !== window.location.pathname.toLowerCase().indexOf("/integrations/embedded")) throw top.location.replace(document.location), $(function() {
  25.     $("body").empty().text("For security reasons, framing is not allowed."), $("head").remove()
  26. }), new Error;
  27. if (StackExchange.init = function() {
  28.         function e() {
  29.             $(document).on("click", ".convert-to-post", function(e) {
  30.                 e.preventDefault();
  31.                 var t = $(this).attr("data-confirm");
  32.                 if (!t || confirm(t)) {
  33.                     var n = $("<form method='post'/>").attr("action", $(this).attr("href")).appendTo("body");
  34.                     n.append($("<input type='hidden' name='fkey' />").attr("value", $(this).attr("data-fkey"))).submit()
  35.                 }
  36.             })
  37.         }
  38.  
  39.         function t() {
  40.             function e(e) {
  41.                 StackExchange.options.site.prefixFkey && StackExchange.options.site.routePrefix && (e = StackExchange.options.site.routePrefix + "/" + e), StackExchange.options.user.fkey !== e && (StackExchange.options.user.fkey = e, $("input[name=fkey]").val(e))
  42.             }
  43.  
  44.             function t(e, t) {
  45.                 try {
  46.                     var n = e.lastIndexOf("/");
  47.                     n >= 0 && (e = e.substr(n + 1)), localStorage.setItem(i, e + "," + t)
  48.                 } catch (r) {}
  49.             }
  50.  
  51.             function n() {
  52.                 var e = localStorage.getItem(i);
  53.                 if (!e) return {
  54.                     "time": 0
  55.                 };
  56.                 var t = e.split(/,/);
  57.                 return {
  58.                     "fkey": t[0],
  59.                     "time": parseInt(t[1], 10)
  60.                 }
  61.             }
  62.             var i = "se:fkey";
  63.             $(window).on("storage", function(t) {
  64.                 t = t.originalEvent, t.key === i && t.newValue && e(t.newValue.split(/,/)[0])
  65.             });
  66.             try {
  67.                 var r = StackExchange.options.user.fkey,
  68.                     o = n();
  69.                 o.fkey !== r && (StackExchange.options.serverTime > o.time ? t(r, StackExchange.options.serverTime) : e(o.fkey))
  70.             } catch (a) {}
  71.         }
  72.  
  73.         function n() {
  74.             function e(e) {
  75.                 var t = r.filter('[data-name="' + e + '"]');
  76.                 r.removeClass("site-footer--col__visible"), t.addClass("site-footer--col__visible")
  77.             }
  78.             var t = $(".js-footer-category-trigger"),
  79.                 n = $(".js-footer"),
  80.                 i = $(".js-footer-back"),
  81.                 r = $(".js-footer-col");
  82.             t.on("click", function(i) {
  83.                 i.preventDefault();
  84.                 var r = $(this).data("target");
  85.                 t.removeClass("_active"), $(this).addClass("_active"), n.addClass("site-footer__open"), e(r)
  86.             }), i.on("click", function(i) {
  87.                 i.preventDefault(), t.removeClass("_active"), n.removeClass("site-footer__open"), e("default")
  88.             })
  89.         }
  90.         var i = function(e) {
  91.                 if (!window.jQuery) {
  92.                     if ("complete" !== document.readyState) return setTimeout(function() {
  93.                         i(e)
  94.                     }, 1e3), void 0;
  95.                     var t = document.createElement("div");
  96.                     t.id = "noscript-warning", t.innerHTML = function(e) {
  97.                         return e.siteName + " requiere JavaScript externo de otro dominio, el cual estÑ bloqueado o no se pudo cargar."
  98.                     }({
  99.                         "siteName": e
  100.                     }), document.body.appendChild(t);
  101.                     var n = document.getElementById("noscript-css");
  102.                     if (!n) return;
  103.                     var r = document.createElement("div");
  104.                     r.innerHTML = n.innerText, document.head.appendChild(r.getElementsByTagName("style")[0])
  105.                 }
  106.             },
  107.             r = function() {
  108.                 var e = function(t, n) {
  109.                     if (t) {
  110.                         var i = $(t).filter(":not(.popup-stack-hidden)");
  111.                         if (!i.length) return;
  112.                         i.each(function(e, t) {
  113.                             var n = $(t),
  114.                                 r = n.data("_popup"),
  115.                                 o = n.data("_lightbox");
  116.                             r && (i = i.add(r)), o && (i = i.add(o))
  117.                         }), i = $($.unique(i.get())), i = i.not(".popup-closing").addClass("popup-closing");
  118.                         var r = {
  119.                                 "closeTrigger": n
  120.                             },
  121.                             o = $.Event("popupClosing", r);
  122.                         if (i.trigger(o), o.isDefaultPrevented()) return i.removeClass("popup-closing"), void 0;
  123.                         i = i.not(".popup-closed").addClass("popup-closed"), i.filter(":not(.esc-hide)").fadeOutAndRemove(), i.filter(".esc-hide").fadeOut("fast", function() {
  124.                             i.removeClass("popup-closing").removeClass("popup-closed")
  125.                         }), i.trigger("popupClose", r)
  126.                     } else StackExchange.topbar && StackExchange.topbar.hideAll(), e(".lightbox:not(.no-auto-close), .message-dismissable, .popup:not(.no-auto-close), .s-modal.js-stacks-managed-popup:not(.no-auto-close), .esc-remove, .esc-hide", "esc")
  127.                 };
  128.                 $(document).keyup(function(t) {
  129.                     27 === t.which && e()
  130.                 }), $("body").mousedown(function(t) {
  131.                     var n = $(t.target);
  132.                     if (!n.closest(".ac_results, .popup, .wmd-prompt-dialog, .message, .modal, .body-click-hide").length) {
  133.                         var i = "click outside";
  134.                         if (1 === t.which) {
  135.                             if (n.is(".wmd-prompt-background")) return e(".wmd-prompt-dialog, .wmd-prompt-background, .popup#image-upload", i), void 0;
  136.                             n.closest(".popup, .modal, .s-modal--dialog, .s-toast").length || e(".popup:not(.no-auto-close), .lightbox:not(.no-auto-close), .modal:not(.no-auto-close), .s-modal.js-stacks-managed-popup:not(.no-auto-close)", i), n.closest(".message-config").length || e(".message-config.message-dismissable", i), n.closest(".body-click-hide").length || e(".esc-hide")
  137.                         }
  138.                     }
  139.                 }), $(document).bind("closePopups", function(t) {
  140.                     e(t.selectorToClose, t.closeTrigger)
  141.                 });
  142.                 var t = [];
  143.                 $(document).on("popupLoad", function(e) {
  144.                     var n = e.popup;
  145.                     if (e.lightbox)
  146.                         for (var i = 0; i < t.length; i++) t[i].css("display", "none").addClass("popup-stack-hidden");
  147.                     var r = n.data("_lightbox");
  148.                     r && (n = n.add(r)), n.data("popup-stack-index", t.length), t.push(n)
  149.                 }).on("popupClosing", function(n) {
  150.                     if (!n.isDefaultPrevented()) {
  151.                         var i, r = $(n.target).data("popup-stack-index");
  152.                         if (r && !isNaN(r)) {
  153.                             for ((0 > r || r >= t.length) && StackExchange.debug.log("popupStack index out of bounds"); t.length > r;) i = t.pop(), i.data("popup-stack-index", null), e(i, n.closeTrigger);
  154.                             for (; r > 0 && (i = t[--r], i.removeClass("popup-stack-hidden").css("display", "block"), !i.filter(".lightbox").length););
  155.                         }
  156.                     }
  157.                 })
  158.             },
  159.             o = 2;
  160.         return function(a, s) {
  161.             StackExchange.options = a, StackExchange.settings = s, a.serverTimeOffsetSec = a.serverTime - (new Date).getTime() / 1e3, i(a.site.name), $.ajaxSetup({
  162.                 "cache": !1
  163.             }), StackExchange.init.createJqueryExtensions(), a.enableLogging = (a.user.isEmployee || a.isDebugBuild) && "undefined" != typeof console && "undefined" != typeof console.log, $(function() {
  164.                 function i() {
  165.                     StackExchange.using(StackExchange.options.user.isAnonymous ? "anonymous" : "loggedIn", function() {
  166.                         Svg.init(a.svgIconPath, a.svgIconHash), StackExchange.initialized.resolve()
  167.                     }, o, a.fullPostfix)
  168.                 }
  169.                 IsMalwareProxy() && (window.location.href = "https://stackexchange.com/about/malware?host=" + window.location.hostname), r(), t(), e(), n(), i();
  170.                 var c = StackExchange.settings.site.styleCodeAdditionalLang;
  171.                 c && StackExchange.ifUsing("prettify", function() {
  172.                     return StackExchange.loadJsFile("third-party/prettify/additional-langs/" + c)
  173.                 }), StackExchange.scrollPadding.ensureInitialized(), StackExchange.ready(function() {
  174.                     a.user.messages && StackExchange.notify.showMessages(a.user.messages, a.isMobile), s.site.enableUserHovercards && StackExchange.usermenu.init(), a.site.universalAuthDisabled || UniversalAuth.performAuth(), StackExchange.tagPreferences ? StackExchange.tagPreferences.init() : StackExchange.tagmenu.init(), a.timingsGuid && $(window).on("load", function() {
  175.                         setTimeout(StackExchange.processTimings, 50)
  176.                     }), $("*[data-tracker]").track(), StackExchange.bindShowMoreHotNetworkQuestions();
  177.                     var e = function() {
  178.                         var e = !1;
  179.                         $("body > script:not([src])").each(function() {
  180.                             return this.textContent.length > 4e4 && /currentSelectable/.test(this.textContent) ? (e = !0, !1) : void 0
  181.                         }), (e || a.user.keyboardShortcuts) && StackExchange.using("keyboardShortcuts", function() {
  182.                             StackExchange.keyboardShortcuts.init(e)
  183.                         })
  184.                     };
  185.                     document.readyState && "complete" !== document.readyState ? $(window).on("load", function() {
  186.                         setTimeout(e, 10)
  187.                     }) : setTimeout(e, 10), StackExchange.showFlashMessageIfAny()
  188.                 })
  189.             })
  190.         }
  191.     }(), StackExchange.debug = {
  192.         "log": function() {},
  193.         "init": function() {
  194.             this.log = function(e) {
  195.                 $(function() {
  196.                     var t = $("#debug-messages");
  197.                     t.length || (t = $("<div id='debug-messages' style='text-align:left;position:fixed;top:50px;left:50px;z-index:1000;background:white;border:2px solid black;width:300px;padding:10px;' />").append($("<span style='cursor:pointer;color:#999'>(close debug messages)</span>").click(function() {
  198.                         $("#debug-messages").remove()
  199.                     })).appendTo("body")), $("<div style='margin-top:10px' />").text(e).appendTo(t)
  200.                 })
  201.             }
  202.         }
  203.     }, StackExchange.initialized = $.Deferred(), StackExchange.gaInitialized = $.Deferred(), StackExchange.ready = function(e) {
  204.         StackExchange.initialized.done(e)
  205.     }, StackExchange.gaReady = function(e) {
  206.         StackExchange.gaInitialized.done(e)
  207.     }, window.serq)
  208.     for (var i = 0; i < window.serq.length; i++) StackExchange.ready(window.serq[i]);
  209. ! function() {
  210.     var e, t = {
  211.             "anonymous": "full-anon.js",
  212.             "loggedIn": "full.js",
  213.             "prettify": "prettify-full.js",
  214.             "moderator": "moderator.js",
  215.             "inlineEditing": "full.js",
  216.             "beginEditEvent": "begin-edit-event.js",
  217.             "editor": "wmd.js",
  218.             "externalEditor": ["full-anon.js", "full.js"],
  219.             "autocomplete": "tageditor.js",
  220.             "tagAutocomplete": "tageditor.js",
  221.             "tagEditor": "tageditornew.js",
  222.             "tagSuggestions": "tagsuggestions.js",
  223.             "mobile": "mobile.js",
  224.             "help": "help.js",
  225.             "inlineTagEditing": "inline-tag-editing.js",
  226.             "mathjaxEditing": "mathjax-editing.js",
  227.             "mathjaxEditingBeta": "mathjax-editing.beta.js",
  228.             "revisions": "revisions.js",
  229.             "mockups": ["full-anon.js", "full.js"],
  230.             "schematics": ["full-anon.js", "full.js"],
  231.             "snippets": ["full-anon.js", "full.js"],
  232.             "snippetsJsCodeMirror": "snippet-javascript-codemirror.js",
  233.             "review": "review.js",
  234.             "translation": "full.js",
  235.             "gps": ["full-anon.js", "full.js"],
  236.             "postValidation": "post-validation.js",
  237.             "exploreQuestions": "explore-qlist.js",
  238.             "eventCharts": "events.js",
  239.             "virtualKeyboard": "virtual-keyboard.js",
  240.             "keyboardShortcuts": "keyboard-shortcuts.js",
  241.             "adops": "adops.js",
  242.             "ask": "ask.js"
  243.         },
  244.         n = {},
  245.         i = {},
  246.         r = {},
  247.         o = {},
  248.         a = {},
  249.         s = function(e, t) {
  250.             return function(n) {
  251.                 var i = e[n];
  252.                 return i || (i = e[n] = t(n)), i
  253.             }
  254.         },
  255.         c = function(e) {
  256.             var t, n, i = r[e],
  257.                 o = $.Deferred(),
  258.                 a = $.when(o);
  259.             if (i)
  260.                 for (t = 0; t < i.length; t++) n = i[t].call(null), n && $.isFunction(n.promise) && (a = $.when(a, n));
  261.             return o.resolve(), a
  262.         },
  263.         l = function() {
  264.             if (!e) {
  265.                 var t = $("script[src]").filter(function() {
  266.                     return /stub.*\.js/.test($(this).attr("src"))
  267.                 }).first();
  268.                 0 === t.length ? (StackExchange.debug.log("couldn't figure out location of stub.js"), e = "/content/js/") : e = t.attr("src").replace(/\/stub.*\.js.*$/, "/")
  269.             }
  270.             return e
  271.         },
  272.         u = function(e) {
  273.             var t = a["js/" + e];
  274.             return t ? "?v=" + t : (StackExchange.debug.log("no cache breaker for " + e), "")
  275.         },
  276.         d = function(e) {
  277.             return e && StackExchange.options.locale && -1 === e.indexOf("third-party") && (e = e.replace(/^(.*)(\.js)(\?.*)?$/, "$1." + StackExchange.options.locale + "$2$3")), e
  278.         },
  279.         f = function(e, t) {
  280.             var n = $.Deferred(),
  281.                 i = document.createElement("script");
  282.             return i.async = "async", i.src = t ? e : d(e), i.onload = i.onreadystatechange = function(e, t) {
  283.                 (!i.readyState || /loaded|complete/.test(i.readyState)) && (t ? n.reject() : n.resolve())
  284.             }, i.onerror = function() {
  285.                 n.reject()
  286.             }, $("head")[0].appendChild(i), n.promise()
  287.         },
  288.         p = function(e) {
  289.             var n = t[e];
  290.             if (!n) return $.Deferred().reject().promise();
  291.             if (n instanceof Array) {
  292.                 if (0 === n.length) return $.Deferred().reject().promise();
  293.                 for (var r = 0; r < n.length; r++) {
  294.                     var o = n[r],
  295.                         a = i[o];
  296.                     if (a) return a
  297.                 }
  298.                 return h(n[0])
  299.             }
  300.             return h(n)
  301.         },
  302.         h = s(i, function(e) {
  303.             return f(l() + e + u(d(e)))
  304.         }),
  305.         g = s(n, function(e) {
  306.             function t() {
  307.                 return (i = StackExchange[e]) ? (c(e).done(function() {
  308.                     n.resolve()
  309.                 }), void 0) : r > 0 ? (r--, StackExchange.debug.log("retrying " + e), setTimeout(t, 20), void 0) : (StackExchange.debug.log("object StackExchange." + e + " not available although file was loaded"), n.reject(), void 0)
  310.             }
  311.             var n = $.Deferred(),
  312.                 i = StackExchange[e],
  313.                 r = 3;
  314.             return i ? n.resolve() : p(e).done(t).fail(n.reject), n.promise()
  315.         }),
  316.         m = $.Deferred(),
  317.         v = 0,
  318.         b = 2,
  319.         y = function(e, n, i, r) {
  320.             if (i = i || v, i === v && "resolved" !== m.state()) return m.done(function() {
  321.                 y(e, n)
  322.             }), void 0;
  323.             if (i === b)
  324.                 for (var o in t)
  325.                     if (t.hasOwnProperty(o)) {
  326.                         var a, s = t[o];
  327.                         if (s instanceof Array) {
  328.                             a = [];
  329.                             for (var c = 0; c < s.length; c++) {
  330.                                 var l = s[c].replace(/^(full(?:-anon)?).js$/, "$1" + (r || "") + ".js");
  331.                                 a.push(l)
  332.                             }
  333.                             t[o] = a
  334.                         } else t[o] = s.replace(/^(full(?:-anon)?).js$/, "$1" + (r || "") + ".js")
  335.                     }
  336.             var u = g(e);
  337.             return i === v ? u = $.when(u, StackExchange.initialized) : i === b && m.resolve(), u.done(function() {
  338.                 n()
  339.             }).fail(function() {
  340.                 StackExchange.debug.log("failed to provide object " + e)
  341.             }), u
  342.         };
  343.     y.setCacheBreakers = function(e) {
  344.         for (var t in e) e.hasOwnProperty(t) && (a[t] = e[t])
  345.     };
  346.     var w = function(e, t, n) {
  347.         if ("undefined" != typeof n) {
  348.             if (o["u_" + n]) return;
  349.             o["u_" + n] = !0
  350.         }
  351.         if (StackExchange[e]) return t(), void 0;
  352.         var i = r[e];
  353.         i || (i = r[e] = []), i.push(t)
  354.     };
  355.     StackExchange.using = y, StackExchange.ifUsing = w, StackExchange.loadJsFile = function(e, t) {
  356.         return f(l() + e, t)
  357.     }
  358. }(), String.prototype.formatUnicorn = function() {
  359.         var e = this.toString();
  360.         if (!arguments.length) return e;
  361.         var t = typeof arguments[0],
  362.             n = "string" === t || "number" === t ? Array.prototype.slice.call(arguments) : arguments[0];
  363.         for (var i in n) e = e.replace(new RegExp("\\{" + i + "\\}", "gi"), n[i]);
  364.         return e
  365.     }, String.prototype.truncate = function(e, t) {
  366.         var n = this.toString();
  367.         return e && n.length > e && (n = n.substr(0, e) + t), n
  368.     }, String.prototype.splitOnLast = function(e) {
  369.         var t = this.lastIndexOf(e);
  370.         return 0 > t ? [this] : [this.substr(0, t), this.substr(t)]
  371.     }, String.prototype.contains = function(e) {
  372.         return this.indexOf(e) > -1
  373.     }, String.prototype.endsWith || (String.prototype.endsWith = function(e) {
  374.         return -1 !== this.indexOf(e, this.length - e.length)
  375.     }), StackExchange.init.createJqueryExtensions = function() {
  376.         var e = StackExchange.helpers;
  377.         $.extend($.expr[":"], {
  378.             "working": function(e) {
  379.                 var t = $(e).data("working");
  380.                 return "undefined" != typeof t && t
  381.             },
  382.             "data": function(e, t, n) {
  383.                 var i = n[3],
  384.                     r = $(e).data(i);
  385.                 switch (typeof r) {
  386.                     case "undefined":
  387.                         return !1;
  388.                     case "boolean":
  389.                         return r;
  390.                     case "object":
  391.                         return null !== r
  392.                 }
  393.                 return !0
  394.             },
  395.             "containsCI": function(e, t, n) {
  396.                 return jQuery(e).text().toUpperCase().indexOf(n[3].toUpperCase()) >= 0
  397.             },
  398.             "viewport": function(e) {
  399.                 var t = e.getBoundingClientRect();
  400.                 return t.top >= 0 && t.left >= 0 && t.bottom <= (window.innerHeight || document.documentElement.clientHeight) && t.right <= (window.innerWidth || document.documentElement.clientWidth)
  401.             }
  402.         }), $.fn.extend({
  403.             "working": function(e) {
  404.                 return this.each(function() {
  405.                     $(this).data("working", e)
  406.                 })
  407.             },
  408.             "track": function() {
  409.                 return this.each(function() {
  410.                     var e = $(this),
  411.                         t = e.is("a[href]") ? e : e.find("a[href]"),
  412.                         n = e.data("tracker");
  413.                     t.each(function() {
  414.                         var e = this.href.splitOnLast("#"),
  415.                             t = e[0];
  416.                         t += (t.contains("?") ? "&" : "?") + n + (e[1] || ""), this.href = t
  417.                     })
  418.                 })
  419.             },
  420.             "fadeOutAndRemove": function() {
  421.                 return this.each(function() {
  422.                     var e = $(this);
  423.                     e.is(".js-fades-with-aria-hidden") ? (e.attr("aria-hidden", "true"), e.on("transitionend", function(t) {
  424.                         "opacity" === t.originalEvent.propertyName && e.trigger("removing").remove()
  425.                     })) : e.fadeOut("fast", function() {
  426.                         e.trigger("removing").remove()
  427.                     })
  428.                 })
  429.             },
  430.             "charCounter": function(t) {
  431.                 return this.each(function() {
  432.                     var n = t.target ? $(t.target) : $(this).parents("form").find("span.text-counter"),
  433.                         i = this,
  434.                         r = function() {
  435.                             var e = t.min,
  436.                                 r = t.max,
  437.                                 o = (t.setIsValid || function() {}).bind(i),
  438.                                 a = 0,
  439.                                 s = i.tagName && "DIV" === i.tagName ? i.textContent : i.value;
  440.                             s && (a = t.ignoreWhitespace ? s.replace(/\s+/g, " ").replace(/^\s+/, "").replace(/\s+$/, "").length : s.replace(/\r\n/g, "\n").replace(/\n/g, "\r\n").length);
  441.                             var c = a > .8 * r ? "supernova" : a > .6 * r ? "hot" : a > .4 * r ? "warm" : "cool",
  442.                                 l = "";
  443.                             if (0 === a) 0 === e ? (l = function(e) {
  444.                                 return 1 == e.max ? "introducir un mÑximo de " + e.max + " carÑcter" : "introducir un mÑximo de " + e.max + " caracteres"
  445.                             }({
  446.                                 "max": r
  447.                             }), o(!0)) : (l = function(e) {
  448.                                 return 1 == e.min ? "introduce al menos, " + e.min + " carÑcteres" : "introduce al menos, " + e.min + " caracteres"
  449.                             }({
  450.                                 "min": e
  451.                             }), o(!1));
  452.                             else if (e > a) l = function(e) {
  453.                                 return 1 == e.count ? "falta " + e.count + "..." : "faltan " + e.count + "..."
  454.                             }({
  455.                                 "count": e - a
  456.                             }), o(!1);
  457.                             else {
  458.                                 var u = r - a;
  459.                                 l = u >= 0 ? function(e) {
  460.                                     return 1 == e.count ? "queda " + e.count + " carÑcter" : "quedan " + e.count + " caracteres"
  461.                                 }({
  462.                                     "count": u
  463.                                 }) : function(e) {
  464.                                     return 1 == e.count ? e.count + " carÑcter de mÑs" : e.count + " caracteres de mÑs"
  465.                                 }({
  466.                                     "count": Math.abs(u)
  467.                                 }), o(r >= a)
  468.                             }
  469.                             n.text(l), n.hasClass(c) || n.removeClass("supernova hot warm cool").addClass(c)
  470.                         };
  471.                     $(this).bind("blur focus keyup paste charCounterUpdate", e.DelayedReaction(r, 100, {
  472.                         "sliding": !0
  473.                     }).trigger)
  474.                 })
  475.             },
  476.             "selectRange": function(e, t) {
  477.                 return this.each(function() {
  478.                     if (this.setSelectionRange) this.focus(), this.setSelectionRange(e, t);
  479.                     else if (this.createTextRange) {
  480.                         var n = this.createTextRange();
  481.                         n.collapse(!0), n.moveEnd("character", t), n.moveStart("character", e), n.select()
  482.                     }
  483.                 })
  484.             },
  485.             "addSpinner": function(t) {
  486.                 return this.each(function() {
  487.                     e.addSpinner(this, t)
  488.                 })
  489.             },
  490.             "addSpinnerAfter": function(t) {
  491.                 return this.each(function() {
  492.                     $(this).after(e.getSpinnerImg(t))
  493.                 })
  494.             },
  495.             "addSpinnerBefore": function(t) {
  496.                 return this.each(function() {
  497.                     $(this).before(e.getSpinnerImg(t))
  498.                 })
  499.             },
  500.             "addStacksSpinner": function(t, n) {
  501.                 return this.each(function() {
  502.                     e.addStacksSpinner(this, t, n)
  503.                 })
  504.             },
  505.             "removeSpinner": function() {
  506.                 return this.each(function() {
  507.                     $(this).find("img.ajax-loader, .s-spinner").remove()
  508.                 })
  509.             },
  510.             "showErrorMessage": function(t, n) {
  511.                 return this.each(function() {
  512.                     e.showErrorMessage(this, t, n)
  513.                 })
  514.             },
  515.             "showErrorPopup": function(t, n) {
  516.                 return this.each(function() {
  517.                     e.showErrorMessage(this, t, n)
  518.                 })
  519.             },
  520.             "showInfoMessage": function(t, n) {
  521.                 return this.each(function() {
  522.                     e.showInfoMessage(this, t, n)
  523.                 })
  524.             },
  525.             "center": function(e) {
  526.                 if (StackExchange.options.isMobile) return this;
  527.                 e = e || {};
  528.                 var t = this.parent();
  529.                 "static" === t.css("position") && (t = t.offsetParent());
  530.                 var n = t.offset(),
  531.                     i = $(window),
  532.                     r = e.top || Math.max((i.height() - this.outerHeight()) / 2 + i.scrollTop() - StackExchange.scrollPadding.getPaddingTop() - n.top + (e.dy || 0), 65);
  533.                 this.css("position", "absolute"), this.css("top", r + "px");
  534.                 var o = Math.max(20, (i.width() - this.outerWidth()) / 2 + i.scrollLeft() - n.left);
  535.                 this.css("left", o + "px");
  536.                 var a = "calc(50% - " + this.outerWidth() / 2 + "px)";
  537.                 return this.css("left", a), this.css("left", "-webkit-" + a), this
  538.             },
  539.             "enable": function() {
  540.                 return 0 === arguments.length || arguments[0] ? this.removeAttr("disabled").css("cursor", "pointer").removeClass("disabled-button") : this.attr("disabled", "disabled").css("cursor", "default").addClass("disabled-button"), this
  541.             },
  542.             "disable": function() {
  543.                 return this.enable(!1)
  544.             },
  545.             "checked": function(e) {
  546.                 return e ? this.attr("checked", "checked") : this.removeAttr("checked"), this
  547.             },
  548.             "loadPopup": function(t) {
  549.                 var n = $.Deferred(),
  550.                     i = this,
  551.                     r = t.target || i.parent();
  552.                 if (!t.html && !t.noSpinner) {
  553.                     var o = t.addSpinnerFn || $.fn.addSpinnerAfter;
  554.                     o.call(i, {
  555.                         "padding": "0 3px"
  556.                     })
  557.                 }
  558.                 t.loaded && n.done(t.loaded);
  559.                 var a = function(o) {
  560.                     var a, s = $(o).elementNodesOnly();
  561.                     s.find(".popup-actions-cancel, .popup-close a, .modal-close").click(function() {
  562.                         StackExchange.helpers.closePopups(a ? s.add(a) : s)
  563.                     }), s.find("input:radio[disabled=disabled] + label.action-label").addClass("action-disabled"), t.hideDescriptions && s.addClass("_hidden-descriptions").find("ul.action-list > li:not(.action-selected) .action-desc").hide();
  564.                     var c = s.find("input:radio:not(.action-subform input)");
  565.                     c.closest("li").bind("hide-action", function() {
  566.                         var e = $(this),
  567.                             n = ".action-subform" + (t.hideDescriptions ? ", .action-desc" : "");
  568.                         e.removeClass("action-selected").find(n).slideUp("fast")
  569.                     }).bind("show-action", function(e) {
  570.                         var n = $(this);
  571.                         return n.hasClass("action-selected") ? (e.stopImmediatePropagation(), void 0) : (n.siblings(".action-selected").trigger("hide-action"), n.addClass("action-selected").find(".action-subform").slideDown("fast", function() {
  572.                             if (t.subformShow && t.subformShow($(this)), t.subformFocusInput) {
  573.                                 var e = $(this).find("input[type=text], textarea").not(".actual-edit-overlay").eq(0);
  574.                                 e.length && e.focus()
  575.                             }
  576.                         }), t.hideDescriptions && n.find(".action-desc").slideDown("fast"), t.actionSelected && t.actionSelected(n), s.find(".popup-submit").enable(), void 0)
  577.                     }).filter(".show-action-onload").each(function() {
  578.                         var e = $(this);
  579.                         n.done(function() {
  580.                             e.find("input[type=radio]").click()
  581.                         })
  582.                     }), c.on("click", function() {
  583.                         $(this).closest("li").trigger("show-action")
  584.                     }), (t.insert || function(e) {
  585.                         t.prepend ? e.prependTo(r) : e.appendTo(r)
  586.                     })(s), t.lightbox && (a = StackExchange.helpers.addLightbox().data("_popup", s), s.css("z-index", +a.css("z-index") + 1).data("_lightbox", a)), n.resolveWith(i, [s, a]), r.trigger($.Event("popupLoad", {
  587.                         "popup": s,
  588.                         "lightbox": a
  589.                     }));
  590.                     var l = function() {};
  591.                     if (t.subformShow) {
  592.                         var u = s.find("li.action-selected .action-subform");
  593.                         u.length > 0 && (l = function() {
  594.                             u.each(function() {
  595.                                 t.subformShow($(this))
  596.                             })
  597.                         })
  598.                     }
  599.                     var d = !!t.dontShow;
  600.                     d || (s.center().fadeIn("fast", l), a && a.fadeIn("fast")), e.bindMovablePopups()
  601.                 };
  602.                 return t.html ? a(t.html) : $.ajax({
  603.                     "type": "GET",
  604.                     "url": t.url,
  605.                     "dataType": "html",
  606.                     "data": t.data,
  607.                     "success": a,
  608.                     "error": function(e) {
  609.                         var i = e.responseText && e.responseText.length < 200 ? e.responseText : t.defaultErrorMessage || "No se puede cargar la ventana emergente; inténtalo de nuevo";
  610.                         (t.errorTarget || r).showErrorMessage(i, {
  611.                             "transient": 409 === e.status
  612.                         }), n.reject(i)
  613.                     },
  614.                     "complete": e.removeSpinner
  615.                 }), n.promise()
  616.             },
  617.             "asyncLoad": function(e) {
  618.                 return e = $.extend({
  619.                     "callback": null,
  620.                     "cache": {}
  621.                 }, e), this.each(function() {
  622.                     var t = ".async-load",
  623.                         n = $(this),
  624.                         i = n.find(t);
  625.                     n.is(t) && (i = i.add(n)), i.each(function() {
  626.                         var t = $(this),
  627.                             n = t.data("load-url") || "";
  628.                         if (n && !t.is(":working")) {
  629.                             t.working(!0).addSpinner();
  630.                             var i = function(n) {
  631.                                     t.html(n).removeClass("async-load").mathjax();
  632.                                     var i = t.data("after-load") || "";
  633.                                     if (i || e.callback) {
  634.                                         for (var r, o = i ? i.split(".") : [], a = 0; a < o.length; a++) r = (r || window)[o[a]];
  635.                                         r = r || e.callback, "function" == typeof r && r(t)
  636.                                     }
  637.                                 },
  638.                                 r = e.cache[n];
  639.                             r ? window.setTimeout(function() {
  640.                                 i(r)
  641.                             }, 0) : $.ajax({
  642.                                 "type": "GET",
  643.                                 "url": n,
  644.                                 "dataType": "html"
  645.                             }).done(function(t) {
  646.                                 e.cache[n] = t, i(t)
  647.                             }).fail(function() {
  648.                                 t.removeSpinner().showErrorMessage("Se produjo un error; inténtalo de nuevo")
  649.                             })
  650.                         }
  651.                     })
  652.                 })
  653.             },
  654.             "mathjax": function() {
  655.                 return this.each(function() {
  656.                     "undefined" != typeof MathJax && MathJax.Hub.Typeset(this)
  657.                 })
  658.             },
  659.             "elementNodesOnly": function() {
  660.                 return this.filter(function() {
  661.                     return 1 === this.nodeType
  662.                 })
  663.             },
  664.             "scrollIntoView": function(e) {
  665.                 if (0 === this.length) return this;
  666.                 var t = {
  667.                         "duration": 100,
  668.                         "complete": null
  669.                     },
  670.                     n = $.extend({}, t, e),
  671.                     i = this.first();
  672.                 return "contents" === i.css("display") && (i = i.find(">*:first")), i.is(":viewport") ? "function" == typeof n.complete && n.complete() : $("html, body").animate({
  673.                     "scrollTop": i.offset().top
  674.                 }, n), this
  675.             },
  676.             "outerHTML": function() {
  677.                 return $("<div>").append(this.eq(0).clone()).html()
  678.             },
  679.             "unadornedButtonClick": function(e, t) {
  680.                 var n = {
  681.                         "namespace": "button",
  682.                         "selector": null
  683.                     },
  684.                     i = $.extend({}, n, t);
  685.                 return this.on("keypress." + i.namespace, i.selector, function(t) {
  686.                     (32 === t.keyCode || 13 === t.keyCode) && (e.apply(this, arguments), t.preventDefault())
  687.                 }).on("click." + i.namespace, i.selector, function(t) {
  688.                     this.blur(), e.apply(this, arguments), t.preventDefault()
  689.                 })
  690.             },
  691.             "addAtEnd": function(e) {
  692.                 var t = this.get();
  693.                 return t.push.apply(t, $(e).get()), this.pushStack(t)
  694.             },
  695.             "dispatchEvent": function(e, t) {
  696.                 var n, i = this.get(0);
  697.                 try {
  698.                     n = new CustomEvent(e, {
  699.                         "cancelable": !0,
  700.                         "bubbles": !0,
  701.                         "detail": t || {}
  702.                     })
  703.                 } catch (r) {
  704.                     n = document.createEvent("CustomEvent"), n.initCustomEvent(e, !0, !0, t || {})
  705.                 }
  706.                 return i && i.dispatchEvent(n), n
  707.             }
  708.         })
  709.     }, StackExchange.helpers = function() {
  710.         function e(e, t) {
  711.             $(e).find("input[type='submit'], button[type='submit']").prop("disabled", t)
  712.         }
  713.         var t = function() {
  714.                 var e = $("div.popup:not([data-controller~=se-draggable])");
  715.                 e.attr("data-controller", "se-draggable").find(".handle").attr("data-target", "se-draggable.handle")
  716.             },
  717.             n = {
  718.                 "addLightbox": function() {
  719.                     return $('<div class="lightbox"/>').appendTo($("body")).css("height", $(document).height())
  720.                 },
  721.                 "bindMovablePopups": t,
  722.                 "onClickDraftSave": function(e) {
  723.                     return $(e).click(function(e) {
  724.                         if (StackExchange.cardiologist) {
  725.                             e.preventDefault();
  726.                             var t = this.href;
  727.                             return StackExchange.cardiologist.ensureDraftSaved(function() {
  728.                                 window.onbeforeunload = null, window.location.href = t
  729.                             }), !1
  730.                         }
  731.                     }), !0
  732.                 },
  733.                 "showMessage": function(e, t, i) {
  734.                     if (e = $(e), e.length) {
  735.                         var r = {
  736.                                 "messageElement": null,
  737.                                 "position": "inside",
  738.                                 "dismissable": !0,
  739.                                 "type": "error",
  740.                                 "closeOthers": !0,
  741.                                 "shown": function() {},
  742.                                 "relativeToBody": !1,
  743.                                 "lightbox": !1,
  744.                                 "stopBodyScroll": !1,
  745.                                 "fixedTo$elem": !1,
  746.                                 "slideDown": !1
  747.                             },
  748.                             o = $.extend({}, r, i),
  749.                             a = 9;
  750.                         o.closeOthers && $(".message, .js-stacks-managed-popup").fadeOutAndRemove();
  751.                         var s = $('<div class="message"><div class="message-inner"><div class="message-text"></div></div></div>'),
  752.                             c = s.find(".message-inner"),
  753.                             l = s.find(".message-text");
  754.                         if (s.addClass("message-" + o.type), o.cssClass && s.addClass(o.cssClass), o.messageElement ? l.append(o.messageElement) : l.html(t), o.dismissable && (s.addClass("message-dismissable"), l.css("padding-right", "48px"), c.prepend($("<div />", {
  755.                                 "title": o.closeTitle || "cerrar este mensaje (o presionar Esc)",
  756.                                 "class": "message-close",
  757.                                 "text": "Γƒβ€”"
  758.                             })), s.click(function(e) {
  759.                                 var t = $(e.target),
  760.                                     n = o.dismissable === !0 && !t.is("a") || "x-or-esc" === o.dismissable && t.is(".message-close, .message-close-inner");
  761.                                 n && (o.dismissing && o.dismissing(), s.fadeOutAndRemove(), o.lightbox && $(".lightbox").fadeOutAndRemove())
  762.                             })), o.dismissing && s.on("popupClose", function(e, t) {
  763.                                 "esc" === t.closeTrigger && o.dismissing()
  764.                             }), o.css && s.css(o.css), "inside" === o.position || "inline" === o.position || "toast" === o.position || o.tip || (o.tip = o.position.my), o.tip && c.addClass("message-tip message-tip-" + o.tip.replace(" ", "-")), "inline" === o.position) e.append(s);
  765.                         else if ("inside" === o.position) s.css("position", "absolute"), e.append(s);
  766.                         else if ("toast" === o.position) s.addClass("toast").appendTo(e);
  767.                         else {
  768.                             s.css("position", "absolute");
  769.                             var u = o.relativeToBody ? $("body") : e.offsetParent();
  770.                             u.append(s);
  771.                             var d, f = o.relativeToBody ? e.offset() : e.position(),
  772.                                 p = e.outerWidth(!0),
  773.                                 h = e.outerHeight(!0),
  774.                                 g = s.outerWidth(),
  775.                                 m = s.outerHeight(),
  776.                                 v = p - e.outerWidth(!1),
  777.                                 b = v / 2;
  778.                             switch (o.position.at) {
  779.                                 case "top left":
  780.                                     d = {
  781.                                         "top": 0,
  782.                                         "left": 0
  783.                                     };
  784.                                     break;
  785.                                 case "top center":
  786.                                     d = {
  787.                                         "top": 0,
  788.                                         "left": p / 2 + b
  789.                                     };
  790.                                     break;
  791.                                 case "top right":
  792.                                     d = {
  793.                                         "top": 0,
  794.                                         "left": p
  795.                                     };
  796.                                     break;
  797.                                 case "right top":
  798.                                     d = {
  799.                                         "top": 0,
  800.                                         "left": p
  801.                                     };
  802.                                     break;
  803.                                 case "right center":
  804.                                     d = {
  805.                                         "top": h / 2,
  806.                                         "left": p
  807.                                     };
  808.                                     break;
  809.                                 case "right bottom":
  810.                                     d = {
  811.                                         "top": h,
  812.                                         "left": p
  813.                                     };
  814.                                     break;
  815.                                 case "bottom right":
  816.                                     d = {
  817.                                         "top": h,
  818.                                         "left": p
  819.                                     };
  820.                                     break;
  821.                                 case "bottom center":
  822.                                     d = {
  823.                                         "top": h,
  824.                                         "left": p / 2 + b
  825.                                     };
  826.                                     break;
  827.                                 case "bottom left":
  828.                                     d = {
  829.                                         "top": h,
  830.                                         "left": 0
  831.                                     };
  832.                                     break;
  833.                                 case "left bottom":
  834.                                     d = {
  835.                                         "top": h,
  836.                                         "left": 0
  837.                                     };
  838.                                     break;
  839.                                 case "left center":
  840.                                     d = {
  841.                                         "top": h / 2,
  842.                                         "left": 0
  843.                                     };
  844.                                     break;
  845.                                 case "left top":
  846.                                     d = {
  847.                                         "top": 0,
  848.                                         "left": 0
  849.                                     }
  850.                             }
  851.                             var y;
  852.                             switch (o.position.my) {
  853.                                 case "left top":
  854.                                     y = {
  855.                                         "top": 0,
  856.                                         "left": -a
  857.                                     };
  858.                                     break;
  859.                                 case "top left":
  860.                                     y = {
  861.                                         "top": -a,
  862.                                         "left": 0
  863.                                     };
  864.                                     break;
  865.                                 case "top center":
  866.                                     y = {
  867.                                         "top": -a,
  868.                                         "left": g / 2 + a
  869.                                     };
  870.                                     break;
  871.                                 case "top right":
  872.                                     y = {
  873.                                         "top": -a,
  874.                                         "left": g
  875.                                     };
  876.                                     break;
  877.                                 case "right top":
  878.                                     y = {
  879.                                         "top": 0,
  880.                                         "left": g + a
  881.                                     };
  882.                                     break;
  883.                                 case "right bottom":
  884.                                     y = {
  885.                                         "top": m,
  886.                                         "left": g + a
  887.                                     };
  888.                                     break;
  889.                                 case "bottom right":
  890.                                     y = {
  891.                                         "top": m + a,
  892.                                         "left": g
  893.                                     };
  894.                                     break;
  895.                                 case "bottom center":
  896.                                     y = {
  897.                                         "top": m + a,
  898.                                         "left": g / 2 + a
  899.                                     };
  900.                                     break;
  901.                                 case "bottom left":
  902.                                     y = {
  903.                                         "top": m + a,
  904.                                         "left": 0
  905.                                     };
  906.                                     break;
  907.                                 case "left bottom":
  908.                                     y = {
  909.                                         "top": m,
  910.                                         "left": -a
  911.                                     }
  912.                             }
  913.                             var w = {
  914.                                 "left": f.left + d.left - y.left,
  915.                                 "top": f.top + d.top - y.top
  916.                             };
  917.                             if (s.data("initialTop", w.top), s.animateOffsetTop = function(e) {
  918.                                     s.animate({
  919.                                         "top": s.data("initialTop") + e
  920.                                     })
  921.                                 }, o.position.offsetTop && (w.top += o.position.offsetTop), o.position.offsetLeft && (w.left += o.position.offsetLeft), s.css({
  922.                                     "top": w.top,
  923.                                     "left": w.left
  924.                                 }), o.fixedTo$elem) {
  925.                                 var x = null,
  926.                                     k = e.offset(),
  927.                                     S = $(window).width(),
  928.                                     E = "resize.message scroll.message";
  929.                                 $(window).on(E, function() {
  930.                                     x = x || s.offset();
  931.                                     var t = e.offset().top - k.top,
  932.                                         n = $(window).width() - S,
  933.                                         i = n / 2;
  934.                                     s.offset({
  935.                                         "top": x.top + t,
  936.                                         "left": x.left + i
  937.                                     })
  938.                                 }), s.on("removing", function() {
  939.                                     $(window).off(E)
  940.                                 })
  941.                             }
  942.                         }
  943.                         if (o.showing && o.showing(), o.lightbox) {
  944.                             var C = $("body"),
  945.                                 T = $('<div class="lightbox"/>').appendTo(C).css("height", $(document).height()).fadeIn();
  946.                             o.stopBodyScroll && C.addClass("stop-scrolling"), s.on("removing", function() {
  947.                                 T.fadeOutAndRemove(), o.stopBodyScroll && C.removeClass("stop-scrolling")
  948.                             })
  949.                         }
  950.                         if (o.slideDown) {
  951.                             var j = 500,
  952.                                 I = e.css("margin-top"),
  953.                                 P = e.css("margin-bottom");
  954.                             e.css("margin-top", 0), e.css("margin-bottom", 0), s.css("height", 0), e.css("display", "block"), s.css("display", "block"), e.animate({
  955.                                 "margin-top": I,
  956.                                 "margin-bottom": P
  957.                             }, j), s.animate({
  958.                                 "height": s.get(0).scrollHeight
  959.                             }, j)
  960.                         } else s.fadeIn(o.shown);
  961.                         if (o.transient) {
  962.                             var A = i.transientTimeout || n.suggestedTransientTimeout(t, "toast" === i.position);
  963.                             setTimeout(function() {
  964.                                 s.fadeOutAndRemove()
  965.                             }, A)
  966.                         }
  967.                         return o.removing && s.on("removing", o.removing), StackExchange.options.enableLogging && s.data("settings", o), s
  968.                     }
  969.                 },
  970.                 "suggestedTransientTimeout": function(e, t) {
  971.                     var n = 40;
  972.                     return "jp" === StackExchange.options.locale ? n = 80 : t && (n = 55), Math.max(4e3, e.length * n)
  973.                 },
  974.                 "showErrorMessage": function(e, t, n) {
  975.                     var i = {
  976.                             "position": "inside",
  977.                             "type": "error"
  978.                         },
  979.                         r = $.extend({}, i, n);
  980.                     return this.showMessage(e, t, r)
  981.                 },
  982.                 "showErrorPopup": function(e, t, n) {
  983.                     return this.showErrorMessage(e, t, n)
  984.                 },
  985.                 "showInfoMessage": function(e, t, n) {
  986.                     var i = {
  987.                             "position": "inside",
  988.                             "transient": !0,
  989.                             "type": "info"
  990.                         },
  991.                         r = $.extend({}, i, n);
  992.                     return this.showMessage(e, t, r)
  993.                 },
  994.                 "showSuccessMessage": function(e, t, n) {
  995.                     var i = {
  996.                             "type": "success",
  997.                             "position": "toast",
  998.                             "transient": !0,
  999.                             "transientTimeout": 1e4
  1000.                         },
  1001.                         r = $.extend({}, i, n);
  1002.                     return this.showMessage(e, t, r)
  1003.                 },
  1004.                 "showMobileMessage": function(e, t) {
  1005.                     var n = -2;
  1006.                     StackExchange.notify.show(e, n, "_" + t)
  1007.                 },
  1008.                 "showBannerMessage": function(e, t) {
  1009.                     var n = $(".banner-message-container").last();
  1010.                     0 === n.length && (n = $("<div/>").addClass("top-banner-message-container").css("display", "none").insertAfter("#header"));
  1011.                     var i = {
  1012.                         "type": t,
  1013.                         "position": "inline",
  1014.                         "cssClass": "banner-message",
  1015.                         "slideDown": !0
  1016.                     };
  1017.                     return this.showMessage(n, e, i)
  1018.                 },
  1019.                 "showStacksNotice": function(e, t, n) {
  1020.                     var i = {
  1021.                             "transient": !1,
  1022.                             "transientTimeout": 2e4
  1023.                         },
  1024.                         r = $.extend({}, i, n),
  1025.                         o = r.target || $(".notice-message-container").last();
  1026.                     0 === o.length && (o = $("<div/>").addClass("top-notice-message-container").insertAfter($("header").first()));
  1027.                     var a = $('<div class="s-notice" role="status" aria-hidden="false"><div class="grid gs16 gsx ai-center jc-space-between" aria-describedby="notice-message"><div class="grid--cell message-text" aria-label="notice-message"></div><div class="grid--cell mr0 dismiss-btn" aria-label="notice-dismiss"></div></div></div>'),
  1028.                         s = a.find(".message-text"),
  1029.                         c = a.find(".dismiss-btn"),
  1030.                         l = $("<a>", {
  1031.                             "class": "message-close p8 s-btn grid grid__center fc-dark",
  1032.                             "title": "Close this message"
  1033.                         });
  1034.                     return l.append(Svg.ClearSm.With("pe-none")), c.append(l), c.click(function(e) {
  1035.                         var t = $(e.target);
  1036.                         t.is(".message-close") && a.remove()
  1037.                     }), r.transient && a.delay(r.transientTimeout).slideUp(void 0, function() {
  1038.                         this.remove()
  1039.                     }), a.addClass("s-notice__" + t), s.html(e), o.append(a), a
  1040.                 },
  1041.                 "showModal": function(e, t) {
  1042.                     var i = $(e).addClass("js-stacks-managed-popup");
  1043.                     if (0 !== i.length) {
  1044.                         var r = {
  1045.                                 "closeOthers": !0,
  1046.                                 "shown": function() {}
  1047.                             },
  1048.                             o = $.extend({}, r, t),
  1049.                             a = $("body");
  1050.                         o.closeOthers && $(".message, .js-stacks-managed-popup").not(i).fadeOutAndRemove();
  1051.                         var s = function() {
  1052.                             var e = o.returnElements;
  1053.                             e && i.one("transitionend", function() {
  1054.                                 e.filter(function(e, t) {
  1055.                                     return $.contains(document.body, t)
  1056.                                 }).first().focus()
  1057.                             })
  1058.                         };
  1059.                         i.on("popupClose", function(e, t) {
  1060.                             var n = ["esc", "click outside", "dismiss", "submit"];
  1061.                             n.indexOf(t.closeTrigger) >= 0 && (o.dismissing && o.dismissing(), s())
  1062.                         }), o.showing && o.showing(), i.find(".js-modal-close").click(function(e) {
  1063.                             e.preventDefault(), n.closePopups(i, "dismiss")
  1064.                         }), i.addClass("s-modal").appendTo(a);
  1065.                         var c = i.find("a, button, [tabindex]").filter(":not([disabled]):not([tabindex=-1])"),
  1066.                             l = i.find(".js-first-tabbable"),
  1067.                             u = i.find(".js-last-tabbable");
  1068.                         return 0 === l.length && (l = c.first()), 0 === u.length && (u = c.last()), l.keydown(function(e) {
  1069.                             9 === e.keyCode && e.shiftKey && (e.preventDefault(), u.focus())
  1070.                         }), u.keydown(function(e) {
  1071.                             9 !== e.keyCode || e.shiftKey || (e.preventDefault(), l.focus())
  1072.                         }), setTimeout(function() {
  1073.                             i.addClass("js-fades-with-aria-hidden").attr("aria-hidden", "false"), i.one("transitionend", function() {
  1074.                                 i.find(".js-modal-initial-focus:not([disabled])").first().focus(), o.shown && o.shown()
  1075.                             })
  1076.                         }, 16), o.removing && i.on("removing", o.removing), i
  1077.                     }
  1078.                 },
  1079.                 "loadModal": function(e, t) {
  1080.                     var i = $.Deferred();
  1081.                     return t = t || {}, $.ajax({
  1082.                         "type": "GET",
  1083.                         "url": e,
  1084.                         "dataType": "html",
  1085.                         "success": function(e) {
  1086.                             var r = n.showModal($(e).elementNodesOnly(), t);
  1087.                             i.resolve(r)
  1088.                         },
  1089.                         "error": function(e) {
  1090.                             var n = e.responseText && e.responseText.length < 200 ? e.responseText : t.defaultErrorMessage || "No se puede cargar la ventana emergente; inténtalo de nuevo";
  1091.                             i.reject(n)
  1092.                         }
  1093.                     }), i.promise()
  1094.                 },
  1095.                 "toggleStacksPopover": function(e, t) {
  1096.                     StackExchange.helpers.DelayedReaction(function() {
  1097.                         var n = Stacks.application.getControllerForElementAndIdentifier(e.get(0), "s-popover");
  1098.                         t === !0 ? n.show() : t === !1 ? n.hide() : n.toggle()
  1099.                     }, 50).trigger()
  1100.                 },
  1101.                 "queueStacksPopover": function(e, t) {
  1102.                     function i() {
  1103.                         var n = $(window).scrollTop(),
  1104.                             i = n + $(window).height() - StackExchange.scrollPadding.getPaddingTop(),
  1105.                             r = e.offset().top,
  1106.                             o = r + e.height();
  1107.                         return i >= r - (t || 0) && o + (t || 0) >= n
  1108.                     }
  1109.                     var r = $.Deferred();
  1110.                     r.then(function() {
  1111.                         n.toggleStacksPopover(e, !0)
  1112.                     });
  1113.                     var o = function() {
  1114.                         0 === e.closest("body").length ? r.reject() : i() && (0 === $(".s-popover.is-visible, .s-modal[aria-hidden=false]").length ? r.resolve() : r.reject())
  1115.                     };
  1116.                     o(), "pending" === r.state() && ($(document).on("scroll.qSP", o), r.done(function() {
  1117.                         $(document).off("scroll.qSP", o)
  1118.                     }))
  1119.                 },
  1120.                 "showToast": function(e, t) {
  1121.                     var n = {
  1122.                             "dismissable": !0,
  1123.                             "transient": !0,
  1124.                             "transientTimeout": 2e4,
  1125.                             "type": "info",
  1126.                             "actions": []
  1127.                         },
  1128.                         i = $.extend({}, n, t);
  1129.                     /^(?:info|success|warning|danger)$/.test("" + i.type) || (StackExchange.debug.log("" + t.type + " is not a valid notice type"), i.type = n.type);
  1130.                     var r = '<div class="s-toast js-toast js-stacks-managed-popup" aria-hidden="true">  <aside class="s-notice">        <div class="grid gs16 gsx ai-center jc-space-between">          <div class="grid--cell">                <p class="m0 js-toast-body" id="js-notice-toast-message" role="status" tabindex="0"></p>            </div>          <div class="grid--cell mr0 js-notice-actions d-none">               <div class="grid"></div>            </div>      </div>  </aside></div>',
  1131.                         o = '<button class="p8 s-btn grid grid__center fc-dark" tabindex="0" role="button"></button>',
  1132.                         a = $(r).css("top", StackExchange.scrollPadding.getPaddingTop());
  1133.                     return a.find(".s-notice").addClass("s-notice__" + i.type), a.find(".js-toast-body").html(e), i.dismissable && i.actions.push({
  1134.                         "labelContents": Svg.ClearSm.With("m0"),
  1135.                         "ariaLabel": "Descartar",
  1136.                         "click": function() {
  1137.                             a.fadeOutAndRemove()
  1138.                         }
  1139.                     }), i.actions.forEach(function(e) {
  1140.                         var t = $(o);
  1141.                         t.append(e.labelContents).click(function(t) {
  1142.                             t.preventDefault(), e.click(t)
  1143.                         }), e.ariaLabel && t.attr("aria-label", e.ariaLabel), a.find(".js-notice-actions").removeClass("d-none").children().append(t)
  1144.                     }), this.hideToasts(), a.appendTo(i.$parent || $("body")), a.delay(16).queue(function() {
  1145.                         $(this).addClass("js-fades-with-aria-hidden").attr("aria-hidden", "false").dequeue()
  1146.                     }), i.transient && a.delay(i.transientTimeout).queue(function() {
  1147.                         a.fadeOutAndRemove().dequeue()
  1148.                     }), a
  1149.                 },
  1150.                 "hideToasts": function() {
  1151.                     $(".js-toast.js-stacks-managed-popup").fadeOutAndRemove()
  1152.                 },
  1153.                 "removeMessages": function(e) {
  1154.                     e ? $(".message").remove() : $(".message").fadeOutAndRemove()
  1155.                 },
  1156.                 "addSpinner": function(e, t) {
  1157.                     $(e).append(n.getSpinnerImg(t))
  1158.                 },
  1159.                 "addStacksSpinner": function(e, t, n) {
  1160.                     var i = $('<div class="s-spinner" role="alert" aria-busy="true" />').addClass(n || "");
  1161.                     t && i.addClass("s-spinner__" + t), $("<div />").css({
  1162.                         "font-size": "0px",
  1163.                         "color": "transparent",
  1164.                         "float": "left"
  1165.                     }).text("cargando...").appendTo(i), $(e).append(i)
  1166.                 },
  1167.                 "getSpinnerImg": function(e) {
  1168.                     var t = $("<img />", {
  1169.                         "class": "ajax-loader",
  1170.                         "src": "/content/img/progress-dots.gif",
  1171.                         "title": "cargando...",
  1172.                         "alt": "cargando..."
  1173.                     });
  1174.                     return e && t.css(e), t
  1175.                 },
  1176.                 "removeSpinner": function() {
  1177.                     $("img.ajax-loader, .s-spinner").remove()
  1178.                 },
  1179.                 "closePopups": function(e, t) {
  1180.                     var n = $.Event("closePopups");
  1181.                     n.selectorToClose = e, n.closeTrigger = t || "closePopups", $(document).trigger(n)
  1182.                 },
  1183.                 "enableSubmitButton": function(t) {
  1184.                     e(t, !1)
  1185.                 },
  1186.                 "disableSubmitButton": function(t) {
  1187.                     e(t, !0)
  1188.                 },
  1189.                 "loadTicks": function(e) {
  1190.                     var t;
  1191.                     t = e ? e.find(".edit-block") : $(".edit-block"), 0 === t.find("input[name=i1l]").length && (t.data("loading-ticks") || (t.data("loading-ticks", !0), $.ajax({
  1192.                         "url": "/questions/ticks",
  1193.                         "cache": !1,
  1194.                         "success": function(e) {
  1195.                             t.append("<input type='hidden' name='i1l' value='" + e + "' />")
  1196.                         },
  1197.                         "complete": function() {
  1198.                             t.data("loading-ticks", !1)
  1199.                         }
  1200.                     })))
  1201.                 },
  1202.                 "showFancyOverlay": function(e) {
  1203.                     e = e || {};
  1204.                     var t = $('<div id="overlay-header"></div>').prependTo("body"),
  1205.                         n = e.message || "",
  1206.                         i = $.browser.msie ? {
  1207.                             "background": "#fff",
  1208.                             "opacity": 0
  1209.                         } : {};
  1210.                     e.showClose !== !1 && (n += '<br><a class="close-overlay">cerrar este mensaje</a>'), t.html(n).css(i).animate({
  1211.                         "opacity": "1",
  1212.                         "height": "show"
  1213.                     }, "slow", e.complete).find(".close-overlay").click(function() {
  1214.                         t.animate({
  1215.                             "opacity": "0",
  1216.                             "height": "hide"
  1217.                         }, "fast")
  1218.                     })
  1219.                 },
  1220.                 "DelayedReaction": function(e, t, n) {
  1221.                     n = n || {};
  1222.                     var i, r, o = n.always,
  1223.                         a = function() {
  1224.                             i = null, e.apply(null, r)
  1225.                         };
  1226.                     return {
  1227.                         "trigger": function() {
  1228.                             if (r = arguments, o && o.apply(null, r), i) {
  1229.                                 if (!n.sliding) return;
  1230.                                 clearTimeout(i), i = setTimeout(a, t)
  1231.                             } else i = setTimeout(a, t)
  1232.                         },
  1233.                         "cancel": function() {
  1234.                             i && (clearTimeout(i), i = null)
  1235.                         }
  1236.                     }
  1237.                 },
  1238.                 "fireAndForget": function(e) {
  1239.                     $.ajax({
  1240.                         "type": "POST",
  1241.                         "url": e,
  1242.                         "data": {
  1243.                             "fkey": StackExchange.options.user.fkey
  1244.                         },
  1245.                         "async": !0
  1246.                     })
  1247.                 },
  1248.                 "updateQueryStringParameter": function(e, t, n) {
  1249.                     var i = new RegExp("([?&])" + t + "=.*?(&|$)", "i"),
  1250.                         r = -1 !== e.indexOf("?") ? "&" : "?";
  1251.                     return e.match(i) ? e.replace(i, "$1" + t + "=" + n + "$2") : e + r + t + "=" + n
  1252.                 },
  1253.                 "parseUrl": function(e) {
  1254.                     var t = document.createElement("a");
  1255.                     return t.href = e, "" === t.host && (t.href = t.href), t
  1256.                 },
  1257.                 "isEmailAddress": function(e) {
  1258.                     return "string" != typeof e || e.length < 3 ? !1 : /^[A-Z0-9._%+-]+@(?:[A-Z0-9-]+.)+[A-Z]{2,63}$/i.test(e)
  1259.                 },
  1260.                 "getLikelyErrorMessage": function(e) {
  1261.                     if (!e || "string" != typeof e.responseText || e.responseText.length > 250) return "";
  1262.                     var t = e.responseText;
  1263.                     try {
  1264.                         var n = JSON.parse(t);
  1265.                         return n.ErrorMessage || n.Message || ""
  1266.                     } catch (i) {
  1267.                         return t
  1268.                     }
  1269.                 },
  1270.                 "getRejectedMockXhr": function(e) {
  1271.                     return $.Deferred().reject({
  1272.                         "responseText": e
  1273.                     })
  1274.                 },
  1275.                 "submitFormOnEnterPress": function(e) {
  1276.                     var t = e.find("textarea, div[contenteditable]");
  1277.                     if (!t.is("[contenteditable]") || StackExchange.helpers.hasContentEditable(t)) {
  1278.                         var n = !1,
  1279.                             i = !1,
  1280.                             r = !1;
  1281.                         t.keyup(function(o) {
  1282.                             if (n || i) return i = !1, void 0;
  1283.                             if (13 === o.which && !o.shiftKey) {
  1284.                                 if (t.prev("#tabcomplete > li:visible").length) return;
  1285.                                 if (e.hasClass("js-prevent-submit-form-on-enter-press")) return;
  1286.                                 if (!r) return;
  1287.                                 e.submit()
  1288.                             }
  1289.                         }).keypress(function(e) {
  1290.                             return r = !0, 13 !== e.which || e.shiftKey
  1291.                         }), t.on("compositionstart", function() {
  1292.                             n = !0
  1293.                         }).on("compositionend", function() {
  1294.                             n = !1, i = !0
  1295.                         }).on("keydown", function(e) {
  1296.                             229 !== e.which && (i = !1)
  1297.                         })
  1298.                     }
  1299.                 },
  1300.                 "isInNetwork": function(e) {
  1301.                     if ("string" != typeof e) throw new TypeError;
  1302.                     try {
  1303.                         var t = StackExchange.helpers.parseUrl(e.trim()).hostname;
  1304.                         if (t === window.location.hostname) return !0;
  1305.                         for (var n = ["stackoverflow.com", "stackexchange.com", "serverfault.com", "superuser.com", "stackauth.com", "stackapps.com", "askubuntu.com", "askdifferent.com", "mathoverflow.net", "askpatents.com"], i = 0; i < n.length; i++) {
  1306.                             var r = n[i];
  1307.                             if (t === r || t.endsWith("." + r)) return !0
  1308.                         }
  1309.                     } catch (o) {}
  1310.                     return !1
  1311.                 },
  1312.                 "removeParameterFromQueryString": function(e) {
  1313.                     var t = window.location.href;
  1314.                     if (window.history && window.history.replaceState && -1 !== t.indexOf(e + "=")) {
  1315.                         var n = t.replace(new RegExp("^([^#]*?)(([^#]*)&)?" + e + "(=[^&#]*)?(&|#|$)"), "$1$3$5").replace(/^([^#]*)((\?)&|\?(#|$))/, "$1$3$4");
  1316.                         if (n !== t) try {
  1317.                             window.history.replaceState({}, document.title, n)
  1318.                         } catch (i) {}
  1319.                     }
  1320.                 },
  1321.                 "placeCaretAtEnd": function(e) {
  1322.                     if (e.focus(), "undefined" != typeof window.getSelection && "undefined" != typeof document.createRange) {
  1323.                         var t = document.createRange();
  1324.                         t.selectNodeContents(e), t.collapse(!1);
  1325.                         var n = window.getSelection();
  1326.                         n.removeAllRanges(), n.addRange(t)
  1327.                     }
  1328.                 },
  1329.                 "hasContentEditable": function(e) {
  1330.                     if (!e) return !1;
  1331.                     var t = e instanceof HTMLElement ? e : e instanceof $ ? e[0] : null;
  1332.                     return t && "true" === t.contentEditable
  1333.                 },
  1334.                 "copyTextToClipboard": function(e) {
  1335.                     var t = $("<textarea>").css("height", "0").appendTo("body");
  1336.                     t.val(e).select(), document.execCommand("copy"), t.remove()
  1337.                 }
  1338.             };
  1339.         return n
  1340.     }(), StackExchange.switchMobile = function(e) {
  1341.         $.post("/mobile/" + e, {
  1342.             "returnurl": window.location.href,
  1343.             "fkey": StackExchange.options.user.fkey
  1344.         }, function(e) {
  1345.             window.location.href = e
  1346.         })
  1347.     }, StackExchange.scrollPadding = function() {
  1348.         function e() {
  1349.             function e(e) {
  1350.                 var t = e.filter(function(e, t) {
  1351.                     return t === window || t === document.body || t === document.body.parentElement
  1352.                 });
  1353.                 return e.length > 0 && e.length === t.length
  1354.             }
  1355.  
  1356.             function t(e, t) {
  1357.                 return function() {
  1358.                     if (l) return e.apply(this, arguments);
  1359.                     l = !0;
  1360.                     try {
  1361.                         return t.apply(this, arguments)
  1362.                     } finally {
  1363.                         l = !1
  1364.                     }
  1365.                 }
  1366.             }
  1367.  
  1368.             function i() {
  1369.                 var e = $(":target");
  1370.                 if (e.length || (location.hash.length > 1 && /edge|msie|trident/i.test(navigator.userAgent) && (e = $(document.getElementsByName(location.hash.substr(1))).first()), e.length)) {
  1371.                     var t = 1;
  1372.                     e.is(":empty") && "inline" === e.css("display") && (t += parseInt(e.next().css("margin-top"), 10));
  1373.                     var i = e.offset().top;
  1374.                     e.length && Math.abs(a.scrollTop() - i - n) < t && a.scrollTop(i)
  1375.                 }
  1376.             }
  1377.             var r = jQuery.fn.animate;
  1378.             jQuery.fn.animate = t(r, function(t) {
  1379.                 if ("scrollTop" in t && e(this)) {
  1380.                     var i = {};
  1381.                     $.extend(i, t), i.scrollTop = parseInt(i.scrollTop, 10) - n, arguments[0] = i
  1382.                 }
  1383.                 return r.apply(this, arguments)
  1384.             });
  1385.             var o = jQuery.fn.scrollTop;
  1386.             jQuery.fn.scrollTop = t(o, function() {
  1387.                 if (e(this)) {
  1388.                     if (0 === arguments.length) return o.apply(this, arguments) + n;
  1389.                     arguments[0] -= n
  1390.                 }
  1391.                 return o.apply(this, arguments)
  1392.             });
  1393.             for (var s = document.body.__proto__; s && !s.hasOwnProperty("scrollIntoView");) s = s.__proto__;
  1394.             if (s) {
  1395.                 var c = s.scrollIntoView;
  1396.                 s.scrollIntoView = t(c, function(e) {
  1397.                     var t = this;
  1398.                     if ("contents" === getComputedStyle(t).display && (t = t.children[0] || t), e === !0 || null === e || void 0 === e || "smooth" !== e.behavior && "end" !== e.block) {
  1399.                         var i = document.body.style.marginTop,
  1400.                             r = parseInt(getComputedStyle(document.body).marginTop, 10);
  1401.                         document.body.style.marginTop = r - n + "px";
  1402.                         var o = c.apply(t, arguments);
  1403.                         return document.body.style.marginTop = i, o
  1404.                     }
  1405.                     c.apply(t, arguments)
  1406.                 })
  1407.             }
  1408.             var l = !1;
  1409.             $("body").on("click", "a", function() {
  1410.                 var e = $(this).attr("href");
  1411.                 e && /#/.test(e) && (a.on("scroll", i), setTimeout(function() {
  1412.                     a.off("scroll", i)
  1413.                 }, 500))
  1414.             }), a.on("hashchange", i), $(function() {
  1415.                 setTimeout(i, 10), setTimeout(i, 100), setTimeout(i, 1e3)
  1416.             })
  1417.         }
  1418.  
  1419.         function t() {
  1420.             var e, t, i, r, o = performance.now ? performance.now.bind(performance) : Date.now.bind(Date),
  1421.                 s = null,
  1422.                 c = null,
  1423.                 l = !1,
  1424.                 u = StackExchange.helpers.DelayedReaction(function() {
  1425.                     s = null
  1426.                 }, 100, {
  1427.                     "sliding": !0
  1428.                 });
  1429.             a.on("keydown", function(n) {
  1430.                 if (n.target !== document.body) return s = null, void 0;
  1431.                 var d = n.which;
  1432.                 return 32 > d || d > 34 ? (s = null, void 0) : (e = s = a.scrollTop(), t = 0, r = 0, l = !1, c = null, i = o(), u.trigger(), void 0)
  1433.             }), a.on("scroll", function() {
  1434.                 if (null !== s) {
  1435.                     if (l) return a.scrollTop(c), void 0;
  1436.                     var d = o(),
  1437.                         f = a.scrollTop(),
  1438.                         p = d - i,
  1439.                         h = f - e,
  1440.                         g = h / p,
  1441.                         m = 0 > h ? -1 : 1;
  1442.                     null === c && (c = s + m * (a.height() - n - 20));
  1443.                     var v = g - t,
  1444.                         b = v / p,
  1445.                         y = b + (b - r);
  1446.                     if (0 > g * y) {
  1447.                         var w = -g / y,
  1448.                             x = f + w * (g + .5 * y * w),
  1449.                             k = c - x;
  1450.                         Math.abs(k) < 100 && (f + (g + .5 * y * p) * p - c) * m > -20 && (a.scrollTop(c), l = !0)
  1451.                     }
  1452.                     u.trigger(), e = f, i = d, t = g, r = b
  1453.                 }
  1454.             })
  1455.         }
  1456.         var n = 0,
  1457.             i = 0,
  1458.             r = 0,
  1459.             o = !1,
  1460.             a = $(window);
  1461.         return {
  1462.             "setPaddingTop": function(a, s) {
  1463.                 r = s || 0, n = a + r, i = a, o || (o = !0, e(), /^mac/i.test(navigator.platform) && !/firefox/i.test(navigator.userAgent) && t())
  1464.             },
  1465.             "getPaddingTop": function() {
  1466.                 return n
  1467.             },
  1468.             "getPaddingTopMinimal": function() {
  1469.                 return i
  1470.             },
  1471.             "getWindowScrollTopMinimal": function() {
  1472.                 return a.scrollTop() - r
  1473.             },
  1474.             "ensureInitialized": function() {
  1475.                 o || StackExchange.scrollPadding.setPaddingTop(0, 0)
  1476.             }
  1477.         }
  1478.     }(), StackExchange.responsive = function() {
  1479.         function e() {
  1480.             return a ? $("html").hasClass("html__unpinned-leftnav") ? u : l : null
  1481.         }
  1482.  
  1483.         function t() {
  1484.             if (!a) return "lg";
  1485.             var t = "lg";
  1486.             return c.matches ? t = "sm" : e().matches && (t = "md"), t
  1487.         }
  1488.  
  1489.         function n() {
  1490.             var e = d,
  1491.                 n = t();
  1492.             n !== e && (d = n, f.forEach(function(t) {
  1493.                 t(n, e)
  1494.             }))
  1495.         }
  1496.  
  1497.         function i(e) {
  1498.             f.push(e)
  1499.         }
  1500.  
  1501.         function r(e) {
  1502.             var t = f.indexOf(e);
  1503.             t >= 0 && f.splice(t, 1)
  1504.         }
  1505.  
  1506.         function o(e) {
  1507.             for (var t = document.querySelectorAll("*[data-can-be][data-is-here-when~='" + e + "']"), n = 0; n < t.length; n++) {
  1508.                 var i = t[n],
  1509.                     r = i.dataset.canBe,
  1510.                     o = document.getElementById(r);
  1511.                 if (o) {
  1512.                     i.childNodes.length && StackExchange.debug.log("can-be target for id " + r + " at size '" + e + "' is not empty");
  1513.                     var a = Array.prototype.slice.call(o.childNodes);
  1514.                     a.forEach(function(e) {
  1515.                         p.indexOf(e.nodeType) >= 0 && i.appendChild(e)
  1516.                     }), o.removeAttribute("id"), o.dataset.canBe = r, delete i.dataset.canBe, i.id = r
  1517.                 } else StackExchange.debug.log("no element with id " + r + " found")
  1518.             }
  1519.         }
  1520.         var a = $("html").hasClass("html__responsive"),
  1521.             s = {
  1522.                 "S": 640,
  1523.                 "L": 980,
  1524.                 "L_UNPINNED": 816
  1525.             };
  1526.         if (a) {
  1527.             var c = matchMedia("(max-width: " + s.S + "px)"),
  1528.                 l = matchMedia("(max-width: " + s.L + "px)"),
  1529.                 u = matchMedia("(max-width: " + s.L_UNPINNED + "px)");
  1530.             c.addListener(n), l.addListener(n), u.addListener(n)
  1531.         }
  1532.         var d = null,
  1533.             f = [],
  1534.             p = [Node.ELEMENT_NODE, Node.TEXT_NODE, Node.COMMENT_NODE];
  1535.         return i(o), "loading" === document.readyState ? document.addEventListener("DOMContentLoaded", n) : setTimeout(n, 0), {
  1536.             "addBreakpointListener": i,
  1537.             "removeBreakpointListener": r,
  1538.             "currentRange": function() {
  1539.                 return d || t()
  1540.             },
  1541.             "forceCheck": function() {
  1542.                 var e = d;
  1543.                 n(), e === d && o(e)
  1544.             }
  1545.         }
  1546.     }(), jQuery.cookie = function(e, t, n) {
  1547.         if ("undefined" == typeof t) {
  1548.             var i = null;
  1549.             if (document.cookie && "" !== document.cookie)
  1550.                 for (var r = document.cookie.split(";"), o = 0; o < r.length; o++) {
  1551.                     var a = jQuery.trim(r[o]);
  1552.                     if (a.substring(0, e.length + 1) === e + "=") {
  1553.                         i = decodeURIComponent(a.substring(e.length + 1));
  1554.                         break
  1555.                     }
  1556.                 }
  1557.             return i
  1558.         }
  1559.         n = n || {}, null === t && (t = "", n.expires = -1);
  1560.         var s = "";
  1561.         if (n.expires && ("number" == typeof n.expires || n.expires.toUTCString)) {
  1562.             var c;
  1563.             if ("number" == typeof n.expires) {
  1564.                 c = new Date;
  1565.                 var l = 24 * n.expires * 60 * 60 * 1e3;
  1566.                 c.setTime(c.getTime() + l)
  1567.             } else c = n.expires;
  1568.             s = "; expires=" + c.toUTCString()
  1569.         }
  1570.         var u = n.path ? "; path=" + n.path : "",
  1571.             d = n.domain ? "; domain=" + n.domain : "",
  1572.             f = n.secure ? "; secure" : "";
  1573.         document.cookie = [e, "=", encodeURIComponent(t), s, u, d, f].join("")
  1574.     }, jQuery.expr[":"].regex = function(e, t, n) {
  1575.         var i = n[3].split(","),
  1576.             r = /^(data|css):/,
  1577.             o = {
  1578.                 "method": i[0].match(r) ? i[0].split(":")[0] : "attr",
  1579.                 "property": i.shift().replace(r, "")
  1580.             },
  1581.             a = "ig",
  1582.             s = new RegExp(i.join("").replace(/^\s+|\s+$/g, ""), a);
  1583.         return s.test(jQuery(e)[o.method](o.property))
  1584.     }, $.extend($.expr[":"], {
  1585.         "containsExact": function(e, t, n) {
  1586.             return $.trim(e.innerHTML.toLowerCase()) === n[3].toLowerCase()
  1587.         },
  1588.         "containsExactCase": function(e, t, n) {
  1589.             return $.trim(e.innerHTML) === n[3]
  1590.         },
  1591.         "containsRegex": function(e, t, n) {
  1592.             var i = /^\/((?:\\\/|[^\/])+)\/([mig]{0,3})$/,
  1593.                 r = i.exec(n[3]);
  1594.             return RegExp(r[1], r[2]).test($.trim(e.innerHTML))
  1595.         }
  1596.     }),
  1597.     function(e) {
  1598.         e.fn.typeWatch = function(t) {
  1599.             function n(t, n) {
  1600.                 var i = e(t.el).val();
  1601.                 (i.length > r.captureLength && i.toUpperCase() !== t.text || n && i.length > r.captureLength) && (t.text = i.toUpperCase(), t.cb(i))
  1602.             }
  1603.  
  1604.             function i(t) {
  1605.                 if ("TEXT" === t.type.toUpperCase() || "TEXTAREA" === t.nodeName.toUpperCase()) {
  1606.                     var i = {
  1607.                         "timer": null,
  1608.                         "text": e(t).val().toUpperCase(),
  1609.                         "cb": r.callback,
  1610.                         "el": t,
  1611.                         "wait": r.wait
  1612.                     };
  1613.                     r.highlight && e(t).focus(function() {
  1614.                         this.select()
  1615.                     });
  1616.                     var o = function(e) {
  1617.                         var t = i.wait,
  1618.                             r = !1;
  1619.                         13 === e.keyCode && "TEXT" === this.type.toUpperCase() && (t = 1, r = !0);
  1620.                         var o = function() {
  1621.                             n(i, r)
  1622.                         };
  1623.                         clearTimeout(i.timer), i.timer = setTimeout(o, t)
  1624.                     };
  1625.                     e(t).keydown(o).bind("paste", null, function(e) {
  1626.                         e.which || o(this)
  1627.                     }).bind("input", null, function(e) {
  1628.                         e.which || o(this)
  1629.                     })
  1630.                 }
  1631.             }
  1632.             var r = e.extend({
  1633.                 "wait": 750,
  1634.                 "callback": function() {},
  1635.                 "highlight": !0,
  1636.                 "captureLength": 2
  1637.             }, t);
  1638.             return this.each(function() {
  1639.                 i(this)
  1640.             })
  1641.         }
  1642.     }(jQuery),
  1643.     function(e) {
  1644.         function t(t) {
  1645.             var n;
  1646.             return t && t.constructor === Array && 3 === t.length ? t : (n = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(t)) ? [parseInt(n[1]), parseInt(n[2]), parseInt(n[3])] : (n = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(t)) ? [2.55 * parseFloat(n[1]), 2.55 * parseFloat(n[2]), 2.55 * parseFloat(n[3])] : (n = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(t)) ? [parseInt(n[1], 16), parseInt(n[2], 16), parseInt(n[3], 16)] : (n = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(t)) ? [parseInt(n[1] + n[1], 16), parseInt(n[2] + n[2], 16), parseInt(n[3] + n[3], 16)] : (n = /rgba\(0, 0, 0, 0\)/.exec(t)) ? i.transparent : i[e.trim(t).toLowerCase()]
  1647.         }
  1648.  
  1649.         function n(n, i) {
  1650.             var r;
  1651.             do {
  1652.                 if (r = e.css(n, i), "" !== r && "transparent" !== r || e.nodeName(n, "body")) break;
  1653.                 i = "backgroundColor"
  1654.             } while (n = n.parentNode);
  1655.             return t(r)
  1656.         }
  1657.         e.each(["backgroundColor", "borderBottomColor", "borderLeftColor", "borderRightColor", "borderTopColor", "color", "outlineColor"], function(i, r) {
  1658.             e.fx.step[r] = function(e) {
  1659.                 e.colorInit || (e.start = n(e.elem, r), e.end = t(e.end), e.colorInit = !0), e.elem.style[r] = "rgb(" + [Math.max(Math.min(parseInt(e.pos * (e.end[0] - e.start[0]) + e.start[0]), 255), 0), Math.max(Math.min(parseInt(e.pos * (e.end[1] - e.start[1]) + e.start[1]), 255), 0), Math.max(Math.min(parseInt(e.pos * (e.end[2] - e.start[2]) + e.start[2]), 255), 0)].join(",") + ")"
  1660.             }
  1661.         });
  1662.         var i = {
  1663.             "transparent": [255, 255, 255]
  1664.         }
  1665.     }(jQuery), StackExchange.gps = function() {
  1666.         function e(e, t, n, i) {
  1667.             t = t || {};
  1668.             var r = null;
  1669.             StackExchange.options && StackExchange.options.user && (t.user_type = StackExchange.options.user.userType, r = StackExchange.options.user.ab);
  1670.             var o = {
  1671.                 "evt": e,
  1672.                 "properties": t,
  1673.                 "now": (new Date).getTime()
  1674.             };
  1675.             r && (o.ab = r), StackExchange._gps_track.push(o), i && i()
  1676.         }
  1677.         return StackExchange._gps_track = [], window.location.href.indexOf("utm_") >= 0 && StackExchange.ready(function() {
  1678.             if (StackExchange.options && StackExchange.options.utm);
  1679.             else {
  1680.                 var t = function(e) {
  1681.                         var t = new RegExp("[\\?&]utm_" + e + "=([^&#]*)").exec(window.location.href);
  1682.                         return t ? decodeURIComponent(t[1]) || void 0 : void 0
  1683.                     },
  1684.                     n = {
  1685.                         "source": t("source"),
  1686.                         "medium": t("medium") || "unknown",
  1687.                         "medium_s": t("medium") || "unknown",
  1688.                         "campaign": t("campaign"),
  1689.                         "content": t("content"),
  1690.                         "term": t("term")
  1691.                     };
  1692.                 n.source && n.campaign && e("utm.view", n, !1), StackExchange.using("gps", function() {
  1693.                     StackExchange.gps.sendPending()
  1694.                 })
  1695.             }
  1696.         }), {
  1697.             "track": e,
  1698.             "sendPending": function(e) {
  1699.                 e && e()
  1700.             }
  1701.         }
  1702.     }();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement