'), t.css({\n position: \"absolute\",\n zIndex: 999999\n }), n.data(this, \"active.tipsy\", t)), (n(this).attr(\"title\") || typeof n(this).attr(\"original-title\") != \"string\") && n(this).attr(\"original-title\", n(this).attr(\"title\") || \"\").removeAttr(\"title\"), typeof i.title == \"string\" ? e = n(this).attr(i.title == \"title\" ? \"original-title\" : i.title) : typeof i.title == \"function\" && (e = i.title.call(this)), t.find(\".tipsy-inner\")[i.html ? \"html\" : \"text\"](e || i.fallback), r = n.extend({}, n(this).offset(), {\n width: this.offsetWidth,\n height: this.offsetHeight\n }), t.get(0).className = \"tipsy\", t.remove().css({\n top: 0,\n left: 0,\n visibility: \"hidden\",\n display: \"block\"\n }).appendTo(document.body);\n var f = t[0].offsetWidth,\n u = t[0].offsetHeight,\n o = typeof i.gravity == \"function\" ? i.gravity.call(this) : i.gravity;\n\n switch (o.charAt(0)) {\n case \"n\":\n t.css({\n top: r.top + r.height,\n left: r.left + r.width / 2 - f / 2\n }).addClass(\"tipsy-north\");\n break;\n\n case \"s\":\n t.css({\n top: r.top - u,\n left: r.left + r.width / 2 - f / 2\n }).addClass(\"tipsy-south\");\n break;\n\n case \"e\":\n t.css({\n top: r.top + r.height / 2 - u / 2,\n left: r.left - f\n }).addClass(\"tipsy-east\");\n break;\n\n case \"w\":\n t.css({\n top: r.top + r.height / 2 - u / 2,\n left: r.left + r.width\n }).addClass(\"tipsy-west\");\n }\n\n i.fade ? t.css({\n opacity: 0,\n display: \"block\",\n visibility: \"visible\"\n }).animate({\n opacity: .8\n }) : t.css({\n visibility: \"visible\"\n });\n }, function () {\n n.data(this, \"cancel.tipsy\", !1);\n var t = this;\n setTimeout(function () {\n if (!n.data(this, \"cancel.tipsy\")) {\n var r = n.data(t, \"active.tipsy\");\n i.fade ? r.stop().fadeOut(function () {\n n(this).remove();\n }) : r.remove();\n }\n }, 100);\n });\n });\n }, n.fn.tipsy.elementOptions = function (t, i) {\n return n.metadata ? n.extend({}, i, n(t).metadata()) : i;\n }, n.fn.tipsy.defaults = {\n fade: !1,\n fallback: \"\",\n gravity: \"n\",\n html: !1,\n title: \"title\"\n }, n.fn.tipsy.autoNS = function () {\n return n(this).offset().top > n(document).scrollTop() + n(window).height() / 2 ? \"s\" : \"n\";\n }, n.fn.tipsy.autoWE = function () {\n return n(this).offset().left > n(document).scrollLeft() + n(window).width() / 2 ? \"e\" : \"w\";\n };\n})(jQuery);\n\n; /// AjaxAvatarThumbnail.js\n\nvar RobloxThumbs = function () {\n function n(t, i, r) {\n $.get(\"/thumbs/rawavatar.ashx\", {\n UserID: i,\n ThumbnailFormatID: r\n }, function (u) {\n u == \"PENDING\" ? window.setTimeout(function () {\n n(t, i, r);\n }, 3e3) : u.substring(5, 0) == \"ERROR\" || $(\"#\" + t).attr(\"src\", u);\n });\n }\n\n return {\n GenerateAvatarThumb: function GenerateAvatarThumb(t, i, r) {\n $(\"#\" + t).attr(\"src\", \"/images/spinners/waiting.gif\"), n(t, i, r);\n }\n };\n}();\n\n; /// extensions/string.js\n\n$.extend(String.prototype, function () {\n function n() {\n return this.replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n }\n\n return {\n escapeHTML: n\n };\n}());\n; /// StringTruncator.min.js\n\nfunction InitStringTruncator() {\n isInitialized || (fitStringSpan = document.createElement(\"span\"), fitStringSpan.style.display = \"inline\", fitStringSpan.style.visibility = \"hidden\", fitStringSpan.style.padding = \"0px\", document.body.appendChild(fitStringSpan), isInitialized = !0);\n}\n\nfunction fitStringToWidth(n, t, i) {\n function f(n) {\n return n.replace(\"<\", \"<\").replace(\">\", \">\");\n }\n\n if (isInitialized || InitStringTruncator(), i && (fitStringSpan.className = i), i = f(n), fitStringSpan.innerHTML = i, fitStringSpan.offsetWidth > t) {\n for (var i = 0, r, u = n.length; r = u - i >> 1;) {\n r = i + r, fitStringSpan.innerHTML = f(n.substring(0, r)) + \"…\", fitStringSpan.offsetWidth > t ? u = r : i = r;\n }\n\n i = n.substring(0, i) + \"…\";\n }\n\n return i;\n}\n\nfunction fitStringToWidthSafe(n, t, i) {\n return n = fitStringToWidth(n, t, i), n.indexOf(\"…\") != -1 && (t = n.lastIndexOf(\" \"), t != -1 && t + 10 <= n.length && (n = n.substring(0, t + 2) + \"…\")), n;\n}\n\nvar isInitialized = !1,\n fitStringSpan = null;\n; /// json2.min.js\n\nvar JSON;\nJSON || (JSON = {}), function () {\n \"use strict\";\n\n function i(n) {\n return n < 10 ? \"0\" + n : n;\n }\n\n function f(n) {\n return o.lastIndex = 0, o.test(n) ? '\"' + n.replace(o, function (n) {\n var t = s[n];\n return typeof t == \"string\" ? t : \"\\\\u\" + (\"0000\" + n.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + n + '\"';\n }\n\n function r(i, e) {\n var c,\n l,\n h,\n a,\n v = n,\n s,\n o = e[i];\n o && _typeof(o) == \"object\" && typeof o.toJSON == \"function\" && (o = o.toJSON(i)), typeof t == \"function\" && (o = t.call(e, i, o));\n\n switch (_typeof(o)) {\n case \"string\":\n return f(o);\n\n case \"number\":\n return isFinite(o) ? String(o) : \"null\";\n\n case \"boolean\":\n case \"null\":\n return String(o);\n\n case \"object\":\n if (!o) return \"null\";\n\n if (n += u, s = [], Object.prototype.toString.apply(o) === \"[object Array]\") {\n for (a = o.length, c = 0; c < a; c += 1) {\n s[c] = r(c, o) || \"null\";\n }\n\n return h = s.length === 0 ? \"[]\" : n ? \"[\\n\" + n + s.join(\",\\n\" + n) + \"\\n\" + v + \"]\" : \"[\" + s.join(\",\") + \"]\", n = v, h;\n }\n\n if (t && _typeof(t) == \"object\") for (a = t.length, c = 0; c < a; c += 1) {\n l = t[c], typeof l == \"string\" && (h = r(l, o), h && s.push(f(l) + (n ? \": \" : \":\") + h));\n } else for (l in o) {\n Object.hasOwnProperty.call(o, l) && (h = r(l, o), h && s.push(f(l) + (n ? \": \" : \":\") + h));\n }\n return h = s.length === 0 ? \"{}\" : n ? \"{\\n\" + n + s.join(\",\\n\" + n) + \"\\n\" + v + \"}\" : \"{\" + s.join(\",\") + \"}\", n = v, h;\n }\n }\n\n typeof Date.prototype.toJSON != \"function\" && (Date.prototype.toJSON = function () {\n return isFinite(this.valueOf()) ? this.getUTCFullYear() + \"-\" + i(this.getUTCMonth() + 1) + \"-\" + i(this.getUTCDate()) + \"T\" + i(this.getUTCHours()) + \":\" + i(this.getUTCMinutes()) + \":\" + i(this.getUTCSeconds()) + \"Z\" : null;\n }, String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function () {\n return this.valueOf();\n });\n var e = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n o = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n n,\n u,\n s = {\n \"\\b\": \"\\\\b\",\n \"\\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n '\"': '\\\\\"',\n \"\\\\\": \"\\\\\\\\\"\n },\n t;\n typeof JSON.stringify != \"function\" && (JSON.stringify = function (i, f, e) {\n var o;\n if (n = \"\", u = \"\", typeof e == \"number\") for (o = 0; o < e; o += 1) {\n u += \" \";\n } else typeof e == \"string\" && (u = e);\n if (t = f, f && typeof f != \"function\" && (_typeof(f) != \"object\" || typeof f.length != \"number\")) throw new Error(\"JSON.stringify\");\n return r(\"\", {\n \"\": i\n });\n }), typeof JSON.parse != \"function\" && (JSON.parse = function (n, t) {\n function r(n, i) {\n var f,\n e,\n u = n[i];\n if (u && _typeof(u) == \"object\") for (f in u) {\n Object.hasOwnProperty.call(u, f) && (e = r(u, f), e !== undefined ? u[f] = e : delete u[f]);\n }\n return t.call(n, i, u);\n }\n\n var i;\n if (n = String(n), e.lastIndex = 0, e.test(n) && (n = n.replace(e, function (n) {\n return \"\\\\u\" + (\"0000\" + n.charCodeAt(0).toString(16)).slice(-4);\n })), /^[\\],:{}\\s]*$/.test(n.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, \"@\").replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, \"]\").replace(/(?:^|:|,)(?:\\s*\\[)+/g, \"\"))) return i = eval(\"(\" + n + \")\"), typeof t == \"function\" ? r({\n \"\": i\n }, \"\") : i;\n throw new SyntaxError(\"JSON.parse\");\n });\n}();\n; /// webkit.js\n\ntypeof Sys.Browser.WebKit == \"undefined\" && (Sys.Browser.WebKit = {}), navigator.userAgent.indexOf(\"WebKit/\") > -1 && (Sys.Browser.agent = Sys.Browser.WebKit, Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\\/(\\d+(\\.\\d+)?)/)[1]), Sys.Browser.name = \"WebKit\");\n; /// GoogleAnalytics/GoogleAnalyticsEvents.js\n\nvar GoogleAnalyticsEvents = new function () {\n this.FireEvent = function (n) {\n if ((typeof _gaq === \"undefined\" ? \"undefined\" : _typeof(_gaq)) != ( true ? \"undefined\" : 0)) {\n var i = [\"_trackEvent\"],\n t = [\"b._trackEvent\"];\n _gaq.push(i.concat(n)), _gaq.push(t.concat(n));\n }\n };\n}();\n; /// MasterPageUI.js\n\n$(function () {\n $(\".tooltip\").tipsy(), $(\".tooltip-top\").tipsy({\n gravity: \"s\"\n }), $(\".tooltip-right\").tipsy({\n gravity: \"w\"\n }), $(\".tooltip-left\").tipsy({\n gravity: \"e\"\n }), $(\".tooltip-bottom\").tipsy({\n gravity: \"n\"\n });\n}), typeof Roblox == \"undefined\" && (Roblox = {}), Roblox.FixedUI = function () {\n function s() {\n if (typeof pageYOffset != \"undefined\") return pageYOffset;\n var t = document.body,\n n = document.documentElement;\n return n = n.clientHeight ? n : t, n.scrollTop;\n }\n\n function e() {\n var n = s();\n t || (t = $(\"iframe.IframeAdHide\")), t.each(function () {\n var t = $(this).offset().top - 73;\n !r.gutterAdsEnabled && n >= t ? $(this).css(\"visibility\", \"hidden\") : $(this).css(\"visibility\", \"visible\");\n });\n }\n\n function i() {\n $(\"#Nav\").css(\"cssText\", \"position: static !important;width:970px !important\"), $(\"#SmallHeaderContainer\").css(\"cssText\", \"position: relative !important;height: 36px !important;width:970px !important\"), $(\".forceSpace\").css(\"cssText\", \"width: 970px !important; height:9px !important;padding-top: 0px !important;background:white\"), $(\"#Container\").css(\"cssText\", \"width: 970px !important\"), $(\".mySubmenuFixed\").css(\"cssText\", \"position: relative; top: 0px;\"), $(\"#MasterContainer\").css(\"cssText\", \"width: 970px !important\"), $(\".mySubmenuFixed\").length == 1 && ($(\".forceSpaceUnderSubmenu\").hide(), $(\".forceSpace\").css(\"cssText\", \"width: 910px !important; height:7px !important;padding-top: 0px !important;\")), $(window).unbind(\"scroll\");\n }\n\n function h() {\n $(\"#Nav\").css(\"cssText\", \"position: fixed !important;width:100% !important\"), $(\"#SmallHeaderContainer\").css(\"cssText\", \"position: fixed !important;height: 40px !important;width:100% !important\"), $(\".forceSpace\").css(\"cssText\", \"width: 100% !important; height:15px !important;padding-top: 62px !important;\"), $(\"#Container\").css(\"cssText\", \"width: 100% !important\"), $(\".mySubmenuFixed\").css(\"cssText\", \"position: fixed; top: 68px;\"), $(\"#MasterContainer\").css(\"cssText\", \"width: 100%\"), $(\".mySubmenuFixed\").length == 1 && $(\".forceSpaceUnderSubmenu\").show(), $(window).scroll(e);\n }\n\n function o() {\n var n = 1024;\n return document.body && document.body.offsetWidth && (n = document.body.offsetWidth), window.innerWidth && window.innerHeight && (n = window.innerWidth), n;\n }\n\n function u() {\n o() < 978 ? i() : h();\n }\n\n var n = navigator.userAgent.toLowerCase(),\n f = /mobile/i.test(n) || /ipad/i.test(n) || /iphone/i.test(n) || /android/i.test(n) || /playbook/i.test(n) || /blackberry/i.test(n),\n t,\n r;\n return $(function () {\n f ? i() : $(window).load(u).resize(u);\n }), t = null, r = {\n isMobile: f,\n gutterAdsEnabled: !1,\n unfixHeader: i\n };\n}();\n; /// jquery.cookie.js\n\njQuery.cookie = function (n, t, i) {\n var o, r, f, e, u, s;\n\n if (typeof t != \"undefined\") {\n i = i || {}, t === null && (t = \"\", i.expires = -1), o = \"\", i.expires && (typeof i.expires == \"number\" || i.expires.toUTCString) && (typeof i.expires == \"number\" ? (r = new Date(), r.setTime(r.getTime() + i.expires * 864e5)) : r = i.expires, o = \"; expires=\" + r.toUTCString());\n var h = i.path ? \"; path=\" + i.path : \"\",\n c = i.domain ? \"; domain=\" + i.domain : \"\",\n l = i.secure ? \"; secure\" : \"\";\n document.cookie = [n, \"=\", encodeURIComponent(t), o, h, c, l].join(\"\");\n } else {\n if (f = null, document.cookie && document.cookie != \"\") for (e = document.cookie.split(\";\"), u = 0; u < e.length; u++) {\n if (s = jQuery.trim(e[u]), s.substring(0, n.length + 1) == n + \"=\") {\n f = decodeURIComponent(s.substring(n.length + 1));\n break;\n }\n }\n return f;\n }\n};\n\n; /// jquery.jsoncookie.js\n\nfunction RobloxJSONCookie(n) {\n this._cookiename = n;\n}\n\n(function (n) {\n var t = function t(n) {\n return _typeof(n) == \"object\" && !(n instanceof Array) && n !== null;\n };\n\n n.extend({\n getJSONCookie: function getJSONCookie(t, i) {\n var r = n.cookie(t);\n return i ? r : r ? JSON.parse(r) : {};\n },\n setJSONCookie: function setJSONCookie(i, r, u) {\n var f = \"\";\n return u = n.extend({\n expires: 90,\n path: \"/\"\n }, u), f = t(r) ? JSON.stringify(r) : r, n.cookie(i, f, u);\n },\n removeJSONCookie: function removeJSONCookie(t) {\n return n.cookie(t, null);\n },\n JSONCookie: function JSONCookie(t, i, r) {\n return i && n.setJSONCookie(t, i, r), n.getJSONCookie(t);\n }\n });\n})(jQuery), RobloxJSONCookie.prototype = {\n Delete: function Delete() {\n return $.removeJSONCookie(this._cookiename);\n },\n SetObj: function SetObj(n, t) {\n return t || (t = {\n path: \"/\"\n }), $.JSONCookie(this._cookiename, n, t);\n },\n SetJSON: function SetJSON(n, t) {\n return t || (t = {\n path: \"/\"\n }), $.JSONCookie(this._cookiename, n, t);\n },\n GetObj: function GetObj() {\n var n = $.getJSONCookie(this._cookiename, !1);\n return n == null ? {} : n;\n },\n GetJSON: function GetJSON() {\n return $.getJSONCookie(this._cookiename, !0);\n }\n};\n; /// XsrfToken.js\n\ntypeof Roblox == \"undefined\" && (Roblox = {}), Roblox.XsrfToken = function () {\n function f(n) {\n var u, t;\n if (i.allUrlsEnabled) return !0;\n\n for (u = n.split(\"?\")[0].toLowerCase(), t = 0; t < r.length; t++) {\n if (r[t] === u) return !0;\n }\n\n return !1;\n }\n\n function e(n) {\n r.push(n.toLowerCase());\n }\n\n function o(t) {\n n = t;\n }\n\n function u() {\n return n;\n }\n\n var n = \"\",\n t = /(^|\\?|&)token=[^&]*/,\n r = [\"/chat/friendhandler.ashx\", \"/chat/party.ashx\", \"/chat/send.ashx\", \"/chat/utility.ashx\", \"/groups/rolesetupdater.ashx\", \"groups.aspx/exileuseranddeleteposts\", \"messageshandler.ashx\", \"emailupgrademe.ashx\", \"/services/usercheck.asmx/updatepersonalinfo\", \"/thumbs/assetmedia/placemediaitemsorthandler.ashx\"],\n i;\n return $.ajaxPrefilter(function (i) {\n var o, e;\n i.dataType != \"jsonp\" && i.dataType != \"script\" && n != \"\" && f(i.url) && (o = $.param({\n token: n\n }), t.test(i.url) || typeof i.data != \"undefined\" && t.test(i.data) || (i.url += /\\?/.test(i.url) ? \"&token=\" + encodeURIComponent(n) : \"?token=\" + encodeURIComponent(n)), e = i.error, i.error = function (r, u, f) {\n if (r.status == 420) {\n var o = r.getResponseHeader(\"Token\");\n\n if (o == null) {\n typeof e == \"function\" && e(r, u, f);\n throw new Error(\"Null token returned by Xsrf enabled handler\");\n }\n\n t.test(i.url) ? i.url = i.url.replace(t, \"$1token=\" + encodeURIComponent(o)) : i.data = i.data.replace(t, \"$1token=\" + encodeURIComponent(o)), $.ajax(i), n = o;\n } else typeof e == \"function\" && e(r, u, f);\n });\n }), i = {\n setToken: o,\n getToken: u,\n allUrlsEnabled: !1,\n addEnabledUrl: e\n };\n}();\n; /// RobloxEventManager.js\n\nfunction RBXBaseEventListener() {\n if (!(this instanceof RBXBaseEventListener)) return new RBXBaseEventListener();\n this.init = function () {\n for (eventKey in this.events) {\n $(document).bind(this.events[eventKey], $.proxy(this.localCopy, this));\n }\n }, this.events = [], this.localCopy = function (n, t) {\n var r = $.extend(!0, {}, n),\n i = $.extend(!0, {}, t);\n this.handleEvent(r, i);\n }, this.distillData = function () {\n return console.log(\"RBXEventListener distillData - Please implement me\"), !1;\n }, this.handleEvent = function () {\n return console.log(\"EventListener handleEvent - Please implement me\"), !1;\n }, this.fireEvent = function () {\n return console.log(\"EventListener fireEvent - Please implement me\"), !1;\n };\n}\n\nRobloxEventManager = new function () {\n function u(n) {\n var i = new RegExp(n + \"=([^;]*)\"),\n t = i.exec(document.cookie);\n return t ? t[1] : null;\n }\n\n function t(n) {\n for (var u = {}, r = n.split(\"&\"), i, t = 0; t < r.length; t++) {\n i = r[t].split(\"=\"), u[i[0]] = i[1];\n }\n\n return u;\n }\n\n function i(n) {\n var i = u(n);\n return i ? t(i) : null;\n }\n\n var n = [],\n r = {};\n this.enabled = !1, this.initialized = !1, this.eventQueue = [], this.initialize = function (n) {\n for (this.initialized = !0, this.enabled = n; this.eventQueue.length > 0;) {\n var t = this.eventQueue.pop();\n this.triggerEvent(t.eventName, t.args);\n }\n }, this.getMarketingGuid = function () {\n var n = i(\"RBXEventTracker\");\n return n != null ? n.browserid : -1;\n }, this.triggerEvent = function (n, t) {\n this.initialized ? this.enabled && (typeof t == \"undefined\" && (t = {}), t.guid = this.getMarketingGuid(), t.guid != -1 && $(document).trigger(n, [t])) : this.eventQueue.push({\n eventName: n,\n args: t\n });\n }, this.registerCookieStoreEvent = function (t) {\n n.push(t);\n }, this.insertDataStoreKeyValuePair = function (n, t) {\n r[n] = t;\n }, this.monitorCookieStore = function () {\n var i, u, f, t, r;\n\n try {\n if (typeof Roblox == \"undefined\" || typeof Roblox.Client == \"undefined\" || window.location.protocol == \"https:\") return;\n if (i = Roblox.Client.CreateLauncher(!1), i == null) return;\n\n for (u = 0; u < n.length; u++) {\n try {\n f = n[u], t = i.GetKeyValue(f), t != \"\" && t != \"-1\" && t != \"RBX_NOT_VALID\" && (r = eval(\"(\" + t + \")\"), r.userType = r.userId > 0 ? \"user\" : \"guest\", RobloxEventManager.triggerEvent(f, r), i.SetKeyValue(f, \"RBX_NOT_VALID\"));\n } catch (e) {}\n }\n\n Roblox.Client.ReleaseLauncher(i, !1, !1);\n } catch (e) {}\n };\n}();\n; /// RobloxEventListener.js\n\nRobloxListener = new RBXBaseEventListener(), RobloxListener.handleEvent = function (n, t) {\n var r, u, i;\n\n switch (n.type) {\n case \"rbx_evt_install_begin\":\n i = {\n guid: \"guid\",\n userId: \"userid\"\n }, r = n.type;\n break;\n\n case \"rbx_evt_initial_install_start\":\n i = {\n guid: \"guid\",\n userId: \"userid\"\n }, r = n.type;\n break;\n\n case \"rbx_evt_ftp\":\n i = {\n guid: \"guid\",\n userId: \"userid\"\n }, r = n.type;\n break;\n\n case \"rbx_evt_initial_install_success\":\n i = {\n guid: \"guid\",\n userId: \"userid\"\n }, r = n.type;\n break;\n\n case \"rbx_evt_fmp\":\n i = {\n guid: \"guid\",\n userId: \"userid\"\n }, r = n.type;\n break;\n\n default:\n return console.log(\"RobloxEventListener - Event registered without handling instructions: \" + n.type), !1;\n }\n\n return u = this.distillData(t, i), this.fireEvent(this.eventToString(r, u)), !0;\n}, RobloxListener.distillData = function (n, t) {\n var i = {};\n\n for (dataKey in t) {\n _typeof(n[dataKey]) != ( true ? \"undefined\" : 0) && (i[t[dataKey]] = encodeURIComponent(n[dataKey]));\n }\n\n return i;\n}, RobloxListener.eventToString = function (n, t) {\n var i = RobloxListener.restUrl;\n if (i += \"?event=\" + n + \"&\", t != null) for (arg in t) {\n (typeof arg === \"undefined\" ? \"undefined\" : _typeof(arg)) != ( true ? \"undefined\" : 0) && t.hasOwnProperty(arg) && (i += arg + \"=\" + t[arg] + \"&\");\n }\n return i = i.slice(0, i.length - 1);\n}, RobloxListener.fireEvent = function (n) {\n var t = $('
');\n}, RobloxListener.events = [\"rbx_evt_install_begin\", \"rbx_evt_initial_install_start\", \"rbx_evt_ftp\", \"rbx_evt_initial_install_success\", \"rbx_evt_fmp\"];\n; /// KontagentEventListener.js\n\nKontagentListener = new RBXBaseEventListener(), KontagentListener.restUrl = \"\", KontagentListener.APIKey = \"\", KontagentListener.StagingAPIKey = \"\", KontagentListener.StagingEvents = [], KontagentListener.handleEvent = function (n, t) {\n function f(n) {\n return n = n.toLowerCase(), n == \"win32\" ? n = \"Windows\" : n == \"osx\" && (n = \"Mac\"), n;\n }\n\n var r, u, i, o, e;\n r = \"evt\";\n\n switch (n.type) {\n case \"rbx_evt_pageview\":\n i = {\n guid: \"s\",\n path: \"u\",\n ts: \"ts\",\n user_ip: \"ip\"\n }, r = \"pgr\";\n break;\n\n case \"rbx_evt_userinfo\":\n i = {\n guid: \"s\",\n age: \"b\",\n gender: \"g\"\n }, r = \"cpu\";\n break;\n\n case \"rbx_evt_ecomm_item\":\n t.total = Math.round(t.total * 100), t.productName = t.productName.replace(/\\s/g, \"\").replace(\"Outrageous\", \"O\").replace(\"Turbo\", \"T\").replace(\"Builders\", \"B\").replace(\"Club\", \"C\"), i = {\n guid: \"s\",\n total: \"v\",\n provider: \"st1\",\n category: \"st2\",\n productName: \"st3\",\n type: \"tu\"\n }, r = \"mtu\";\n break;\n\n case \"rbx_evt_ftp\":\n t.tracking = \"\", t.shorttracking = \"\", i = {\n guid: \"s\",\n trackingtag: \"u\",\n shorttracking: \"su\"\n }, u = this.distillData(t, i), r = \"apa\", this.fireEvent(this.eventToString(n.type, r, u)), t.eventName = \"Install Success Funnel\", t.eventType = \"Install Success Funnel\", t.os = f(t.os), i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n userType: \"st3\",\n eventName: \"n\"\n }, u = this.distillData(t, i), r = \"evt\", this.fireEvent(this.eventToString(n.type, r, u)), t.eventType = \"Install Success Place\", i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n userType: \"st3\",\n placeId: \"n\"\n };\n break;\n\n case \"rbx_evt_initial_install_success\":\n t.tracking = \"\", t.shorttracking = \"\", i = {\n guid: \"s\",\n trackingtag: \"u\",\n shorttracking: \"su\"\n }, u = this.distillData(t, i), r = \"apa\", this.fireEvent(this.eventToString(n.type, r, u)), t.eventName = \"Bootstrapper Install Success Funnel\", t.eventType = \"Bootstrapper Install Success Funnel\", t.os = f(t.os), i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n userType: \"st3\",\n eventName: \"n\"\n }, u = this.distillData(t, i), r = \"evt\", this.fireEvent(this.eventToString(n.type, r, u)), t.eventType = \"Bootstrapper Install Success Place\", i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n userType: \"st3\",\n placeId: \"n\"\n };\n break;\n\n case \"rbx_evt_install_begin\":\n t.eventName = \"Install Begin\", t.eventType = \"Install Begin\", i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n eventName: \"n\"\n };\n break;\n\n case \"rbx_evt_initial_install_start\":\n t.eventName = \"Bootstrapper Install Begin\", t.eventType = \"Bootstrapper Install Begin\", i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n eventName: \"n\"\n };\n break;\n\n case \"rbx_evt_fmp\":\n t.eventName = \"Five Minute Play Funnel\", t.eventType = \"Five Minute Play Funnel\", t.os = f(t.os), i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n userType: \"st3\",\n eventName: \"n\"\n }, u = this.distillData(t, i), this.fireEvent(this.eventToString(n.type, r, u)), t.eventType = \"Five Minute Play Place\", i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n userType: \"st3\",\n placeId: \"n\"\n };\n break;\n\n case \"rbx_evt_play_user\":\n t.eventName = \"Play User\", t.eventType = \"Play User\", t.gender = t.gender, i = {\n guid: \"s\",\n eventType: \"st1\",\n gender: \"st2\",\n age: \"st3\",\n placeId: \"l\",\n eventName: \"n\"\n };\n break;\n\n case \"rbx_evt_play_guest\":\n t.eventName = \"Play Guest\", t.eventType = \"Play Guest\", t.gender = t.gender, i = {\n guid: \"s\",\n eventType: \"st1\",\n gender: \"st2\",\n placeId: \"l\",\n eventName: \"n\"\n };\n break;\n\n case \"rbx_evt_signup\":\n t.eventName = \"Sign Up Funnel\", t.eventType = \"Sign Up Funnel\", i = {\n guid: \"s\",\n eventType: \"st1\",\n eventName: \"n\"\n }, u = this.distillData(t, i), r = \"evt\", this.fireEvent(this.eventToString(n.type, r, u)), t.eventName = \"Sign Up\", t.eventType = \"Sign Up\", t.gender = t.gender, i = {\n guid: \"s\",\n eventType: \"st1\",\n gender: \"st2\",\n age: \"st3\",\n eventName: \"n\"\n };\n break;\n\n case \"rbx_evt_ecomm_custom\":\n t.eventType = \"Purchase\", t.productName = t.productName.replace(/\\s/g, \"\").replace(\"Outrageous\", \"O\").replace(\"Turbo\", \"T\").replace(\"Builders\", \"B\").replace(\"Club\", \"C\"), i = {\n guid: \"s\",\n eventType: \"st1\",\n provider: \"st2\",\n category: \"st3\",\n productName: \"n\"\n };\n break;\n\n case \"rbx_evt_abtest\":\n i = {\n guid: \"s\",\n experiment: \"st1\",\n variation: \"n\"\n };\n break;\n\n case \"rbx_evt_pageview_custom\":\n t.eventName = t.page, i = typeof t.userType == \"undefined\" ? {\n guid: \"s\",\n page: \"st1\",\n eventName: \"n\"\n } : {\n guid: \"s\",\n page: \"st1\",\n userType: \"st2\",\n eventName: \"n\"\n };\n break;\n\n case \"rbx_evt_generic\":\n t.eventName = t.type, i = {\n guid: \"s\",\n type: \"st1\",\n eventName: \"n\"\n }, typeof t.opt1 != \"undefined\" && (i.opt1 = \"st2\"), typeof t.opt2 != \"undefined\" && typeof t.opt1 != \"undefined\" && (i.opt2 = \"st3\");\n break;\n\n case \"rbx_evt_source_tracking\":\n t.installed = 0, t.sourceType = \"ad\", i = {\n guid: \"s\",\n sourceType: \"tu\",\n installed: \"i\",\n source: \"st1\",\n campaign: \"st2\",\n medium: \"st3\"\n }, r = \"ucc\";\n break;\n\n case \"rbx_evt_card_redemption\":\n t.eventType = \"CardRedemption\", t.eventName = \"CardRedemption\", i = {\n guid: \"s\",\n eventType: \"st1\",\n merchant: \"st2\",\n cardValue: \"st3\",\n eventName: \"n\"\n };\n break;\n\n case \"rbx_evt_popup_action\":\n t.eventType = \"GuestPlayPopupAction\", t.eventName = \"GuestPlayPopupAction\", i = {\n guid: \"s\",\n eventType: \"st1\",\n action: \"st2\",\n eventName: \"n\"\n };\n break;\n\n default:\n return console.log(\"KontagentListener - Event registered without handling instructions: \" + n.type), !1;\n }\n\n return u = this.distillData(t, i), this.fireEvent(this.eventToString(n.type, r, u)), !0;\n}, KontagentListener.distillData = function (n, t) {\n var i = {};\n\n for (dataKey in t) {\n _typeof(n[dataKey]) != ( true ? \"undefined\" : 0) && (i[t[dataKey]] = encodeURIComponent(n[dataKey]));\n }\n\n return i;\n}, KontagentListener.eventToString = function (n, t, i) {\n var r = KontagentListener.restUrl,\n u = this.isStagingEvent(n, i) ? KontagentListener.StagingAPIKey : KontagentListener.APIKey;\n if (r += u + \"/\" + t + \"/?\", i != null) for (arg in i) {\n (typeof arg === \"undefined\" ? \"undefined\" : _typeof(arg)) != ( true ? \"undefined\" : 0) && i.hasOwnProperty(arg) && (r += arg + \"=\" + i[arg] + \"&\");\n }\n return r = r.slice(0, r.length - 1);\n}, KontagentListener.isStagingEvent = function (n, t) {\n var r, i;\n staging = !1;\n\n try {\n for (r in this.StagingEvents) {\n if (i = this.StagingEvents[r], typeof i == \"string\") {\n if (n == i) {\n staging = !0;\n break;\n }\n } else if (_typeof(i) == \"object\" && typeof i[n] != \"undefined\" && i[n] == t.st1) {\n staging = !0;\n break;\n }\n }\n } catch (u) {}\n\n return staging;\n}, KontagentListener.fireEvent = function (n) {\n var t = $('
');\n}, KontagentListener.events = [\"rbx_evt_pageview\", \"rbx_evt_install_begin\", \"rbx_evt_initial_install_start\", \"rbx_evt_ftp\", \"rbx_evt_initial_install_success\", \"rbx_evt_fmp\", \"rbx_evt_play_user\", \"rbx_evt_play_guest\", \"rbx_evt_signup\", \"rbx_evt_ecomm_item\", \"rbx_evt_ecomm_custom\", \"rbx_evt_userinfo\", \"rbx_evt_abtest\", \"rbx_evt_pageview_custom\", \"rbx_evt_generic\", \"rbx_evt_source_tracking\", \"rbx_evt_card_redemption\", \"rbx_evt_popup_action\"];\n; /// GoogleEventListener.js\n\nGoogleListener = new RBXBaseEventListener(), GoogleListener.handleEvent = function (n, t) {\n function r(n) {\n return n = n.toLowerCase(), n == \"win32\" ? n = \"Windows\" : n == \"osx\" && (n = \"Mac\"), n;\n }\n\n var f, u, i;\n\n switch (n.type) {\n case \"rbx_evt_initial_install_begin\":\n t.os = r(t.os), t.category = \"Bootstrapper Install Begin\", i = {\n os: \"action\"\n };\n break;\n\n case \"rbx_evt_ftp\":\n t.os = r(t.os), t.category = \"Install Success\", i = {\n os: \"action\"\n };\n break;\n\n case \"rbx_evt_initial_install_success\":\n t.os = r(t.os), t.category = \"Bootstrapper Install Success\", i = {\n os: \"action\"\n };\n break;\n\n case \"rbx_evt_fmp\":\n t.os = r(t.os), t.category = \"Five Minute Play\", i = {\n os: \"action\"\n };\n break;\n\n case \"rbx_evt_abtest\":\n i = {\n experiment: \"category\",\n variation: \"action\",\n version: \"opt_label\"\n };\n break;\n\n case \"rbx_evt_card_redemption\":\n t.category = \"CardRedemption\", i = {\n merchant: \"action\",\n cardValue: \"opt_label\"\n };\n break;\n\n default:\n return console.log(\"GoogleListener - Event registered without handling instructions: \" + n.type), !1;\n }\n\n return i.category = \"category\", u = this.distillData(t, i), this.fireEvent(u), !0;\n}, GoogleListener.distillData = function (n, t) {\n var i = {},\n r;\n\n for (dataKey in t) {\n _typeof(n[dataKey]) != ( true ? \"undefined\" : 0) && (i[t[dataKey]] = n[dataKey]);\n }\n\n return r = [i.category, i.action], i.opt_label != null && (r = r.concat(i.opt_label)), i.opt_value != null && (r = r.concat(i.opt_value)), r;\n}, GoogleListener.fireEvent = function (n) {\n if ((typeof _gaq === \"undefined\" ? \"undefined\" : _typeof(_gaq)) != ( true ? \"undefined\" : 0)) {\n var i = [\"_trackEvent\"],\n t = [\"b._trackEvent\"];\n _gaq.push(i.concat(n)), _gaq.push(t.concat(n));\n }\n}, GoogleListener.events = [\"rbx_evt_initial_install_begin\", \"rbx_evt_ftp\", \"rbx_evt_initial_install_success\", \"rbx_evt_fmp\", \"rbx_evt_abtest\", \"rbx_evt_card_redemption\"];\n; /// MongoEventListener.js\n\nMongoListener = new RBXBaseEventListener(), MongoListener.handleEvent = function (n, t) {\n var i;\n return i = typeof t.shard == \"undefined\" ? this.defaultShard : t.shard, typeof t.eventName == \"undefined\" && (t.eventName = n.type), t.eventName === \"JavascriptExceptionLoggingEvent\" ? dataMap = {\n category: \"category\",\n url: \"url\",\n msg: \"msg\",\n line: \"line\",\n ua: \"UA\"\n } : (typeof t.category == \"undefined\" && (t.category = MongoListener.getCategoryFromEventName(t.eventName)), t.userId = MongoListener.userId, t.ip = MongoListener.clientIpAddress, dataMap = {\n guid: \"guid\",\n category: \"category\",\n userId: \"userid\",\n ip: \"ip\"\n }), this.fireEvent(i, this.distillData(t, dataMap)), !0;\n}, MongoListener.getCategoryFromEventName = function (n) {\n switch (n) {\n case \"rbx_evt_sitetouch\":\n return \"SiteTouch\";\n\n case \"rbx_evt_fmp\":\n return \"FiveMinutePlay\";\n\n case \"rbx_evt_play_user\":\n case \"rbx_evt_play_guest\":\n return \"Play\";\n\n default:\n return n;\n }\n}, MongoListener.distillData = function (n, t) {\n var i = {};\n\n for (dataKey in t) {\n _typeof(n[dataKey]) != ( true ? \"undefined\" : 0) && (i[t[dataKey]] = encodeURIComponent(n[dataKey]));\n }\n\n return i;\n}, MongoListener.fireEvent = function (n, t) {\n $.ajax({\n url: MongoListener.loggingURI + n,\n dataType: \"jsonp\",\n jsonpCallback: \"MongoListener.callback\",\n data: t\n });\n}, MongoListener.callback = function () {}, MongoListener.events = [\"JavascriptExceptionLoggingEvent\"];\n; /// SearchVisionListener.js\n\nSearchVisionListener = new RBXBaseEventListener(), SearchVisionListener.handleEvent = function (n, t) {\n var i = null;\n\n switch (n.type) {\n case \"rbx_evt_fmp\":\n i = {\n esvtk_v: \"1\",\n esvtk_esvid: \"A40125\",\n event: \"five_minute_play\"\n };\n break;\n\n case \"rbx_evt_ftp\":\n i = {\n esvtk_v: \"1\",\n esvtk_esvid: \"A40125\",\n event: \"first_play\"\n };\n break;\n\n case \"rbx_evt_install_begin\":\n i = {\n esvtk_v: \"1\",\n esvtk_esvid: \"A40125\",\n event: \"download\"\n };\n break;\n\n case \"rbx_evt_signup\":\n i = {\n esvtk_v: \"1\",\n esvtk_esvid: \"A40125\",\n event: \"esv_signup\"\n };\n break;\n\n case \"rbx_evt_generic\":\n t.type === \"OneDayReturn\" && (i = {\n esvtk_v: \"1\",\n esvtk_esvid: \"A40125\",\n event: \"return\"\n });\n }\n\n return i !== null && (i.orderid = t.guid, this.fireEvent(i)), !0;\n}, SearchVisionListener.fireEvent = function (n) {\n typeof esvtk_track != \"undefined\" ? esvtk_track(n) : setTimeout(function () {\n SearchVisionListener.fireEvent(n);\n }, 500);\n}, SearchVisionListener.events = [\"rbx_evt_fmp\", \"rbx_evt_ftp\", \"rbx_evt_install_begin\", \"rbx_evt_signup\", \"rbx_evt_generic\"];\n; /// SiteTouchEvent.js\n\ntypeof Roblox == \"undefined\" && (Roblox = {}), Roblox.SiteTouchEvent = function () {\n function r() {\n var t, i;\n return typeof localStorage != \"undefined\" && (t = localStorage.getItem(n)), (typeof t == \"undefined\" || t === null) && (t = $.cookie(n)), i = Date.parse(t), t && !isNaN(i) ? new Date(i) : new Date(0);\n }\n\n function i(i) {\n typeof i == \"undefined\" && (i = new Date()), typeof localStorage != \"undefined\" && (t.useLocalStorage ? $.cookie(n, null) : localStorage.removeItem(n)), t.useLocalStorage && typeof localStorage != \"undefined\" ? localStorage.setItem(n, i) : $.cookie(n, i, {\n expires: 100\n });\n }\n\n function u() {\n var n = r();\n Math.floor((new Date() - n) / 36e5) >= t.dateDiffThresholdInHours && RobloxEventManager.triggerEvent(\"rbx_evt_sitetouch\"), i();\n }\n\n var n = \"LastActivity\",\n t = {\n updateLastActivityAndFireEvent: u,\n getLastActivity: r,\n setLastActivity: i,\n dateDiffThresholdInHours: 3,\n useLocalStorage: !1\n };\n return t;\n}();\n; /// JSErrorTracker.js\n\ntypeof Roblox == \"undefined\" && (Roblox = {}), Roblox.JSErrorTracker = {\n showAlert: !1,\n defaultPixel: \"GA\",\n internalEventListenerPixelEnabled: !1,\n javascriptStackTraceEnabled: !1,\n data: {\n category: \"Javascript Errors\"\n },\n initialize: function initialize(n) {\n typeof n != \"undefined\" && (typeof n.showAlert != \"undefined\" && (this.showAlert = n.showAlert), typeof n.internalEventListenerPixelEnabled != \"undefined\" && (this.internalEventListenerPixelEnabled = n.internalEventListenerPixelEnabled)), this.addOnErrorEventHandler(this.errorHandler);\n },\n errorHandler: function errorHandler(n, t, i) {\n try {\n Roblox.JSErrorTracker.data.msg = n, Roblox.JSErrorTracker.data.url = t, Roblox.JSErrorTracker.data.line = i, Roblox.JSErrorTracker.data.ua = window.navigator.userAgent, Roblox.JSErrorTracker.logException(Roblox.JSErrorTracker.data);\n } catch (r) {}\n\n return !0;\n },\n addOnErrorEventHandler: function addOnErrorEventHandler(n) {\n var t = window.onerror;\n window.onerror = typeof window.onerror == \"function\" ? function (i, r, u) {\n t(i, r, u), n(i, r, u);\n } : n;\n },\n processException: function processException(n, t) {\n if (typeof n != \"undefined\") {\n typeof n.category == \"undefined\" && (n.category = Roblox.JSErrorTracker.data.category);\n\n switch (t) {\n case \"GA\":\n var i = {\n category: \"category\",\n url: \"action\",\n msg: \"opt_label\",\n line: \"opt_value\"\n };\n Roblox.JSErrorTracker.fireGAPixel(Roblox.JSErrorTracker.distillGAData(n, i));\n break;\n\n case \"Diag\":\n Roblox.JSErrorTracker.internalEventListenerPixelEnabled && (n.category = \"JavascriptExceptions\", n.shard = \"WebMetrics\", n.eventName = \"JavascriptExceptionLoggingEvent\", RobloxEventManager.triggerEvent(\"JavascriptExceptionLoggingEvent\", n));\n break;\n\n default:\n console.log(\"Roblox JSErrorTracker received an unknown pixel to fire\");\n }\n\n return !0;\n }\n },\n logException: function logException(n) {\n Roblox.JSErrorTracker.processException(n, Roblox.JSErrorTracker.defaultPixel), Roblox.JSErrorTracker.internalEventListenerPixelEnabled && Roblox.JSErrorTracker.processException(n, \"Diag\"), Roblox.JSErrorTracker.showErrorMessage(n.msg);\n },\n distillData: function distillData(n, t) {\n var r = {},\n i;\n\n for (i in t) {\n typeof n[i] != \"undefined\" && (r[t[i]] = encodeURIComponent(n[i]));\n }\n\n return r;\n },\n distillGAData: function distillGAData(n, t) {\n var r = Roblox.JSErrorTracker.distillData(n, t),\n i = [decodeURIComponent([r.category])];\n return _typeof(r.action) != ( true ? \"undefined\" : 0) ? (i = i.concat(decodeURIComponent(r.action)), _typeof(r.opt_label) != ( true ? \"undefined\" : 0) && (i = i.concat(decodeURIComponent(r.opt_label)), _typeof(r.opt_value) != ( true ? \"undefined\" : 0) && (i = i.concat(parseInt(decodeURIComponent(r.opt_value)))))) : Roblox.JSErrorTracker.showAlert && alert(\"Missing a required parameter for GA\"), i;\n },\n createURL: function createURL(n, t, i) {\n var r = n,\n f = Roblox.JSErrorTracker.distillData(t, i),\n u;\n if (r += \"?\", f != null) for (u in f) {\n _typeof(u) != ( true ? \"undefined\" : 0) && t.hasOwnProperty(u) && (r += u + \"=\" + f[u] + \"&\");\n }\n return r = r.slice(0, r.length - 1);\n },\n fireGAPixel: function fireGAPixel(n) {\n typeof _gaq != \"undefined\" && _gaq.push([\"c._trackEvent\"].concat(n));\n },\n showErrorMessage: function showErrorMessage(n) {\n Roblox.JSErrorTracker.showAlert && (n !== null ? alert(n) : alert(\"An error occured\"));\n }\n};\n; /// Studio2Alert.js\n\nvar studio2AlertModal = {\n showPrompt: !1,\n userId: 0,\n updateStudioAlertUserPreference: function updateStudioAlertUserPreference() {\n $.ajax({\n type: \"GET\",\n url: \"/WebHandlers/Studio2Alert.ashx?uId=\" + studio2AlertModal.userId\n });\n },\n close: function close() {\n studio2AlertModal.updateStudioAlertUserPreference(), $.modal.close(\"#Studio2AlertModal\");\n },\n init: function init() {\n studio2AlertModal.showPrompt = $(\"#Studio2AlertModal\").data(\"showprompt\"), studio2AlertModal.userId = $(\"#Studio2AlertModal\").data(\"userid\");\n var n = {\n escClose: !0,\n opacity: 80,\n overlayCss: {\n backgroundColor: \"#000\"\n }\n };\n studio2AlertModal.showPrompt && Roblox.Client.isIDE() && (studio2AlertModal.updateStudioAlertUserPreference(), $(\"#Studio2AlertModal\").modal(n));\n }\n};\n$(\"#closeStudio2Alert\").click(function () {\n studio2AlertModal.close();\n}), $(function () {\n studio2AlertModal.init();\n});\n; /// ClientInstaller.js\n\nfunction tryToDownload() {\n oIFrm = document.getElementById(\"downloadInstallerIFrame\"), oIFrm.src = \"/install/setup.ashx\";\n}\n\nfunction logStatistics(n) {\n $.get(\"/install/VisitButtonHandler.ashx?reqtype=\" + n, function () {});\n}\n\nType.registerNamespace(\"Roblox.Client\"), Roblox.Client._installHost = null, Roblox.Client._installSuccess = null, Roblox.Client._CLSID = null, Roblox.Client._continuation = null, Roblox.Client._skip = null, Roblox.Client._isIDE = null, Roblox.Client._isRobloxBrowser = null, Roblox.Client._isPlaceLaunch = !1, Roblox.Client._silentModeEnabled = !1, Roblox.Client._bringAppToFrontEnabled = !1, Roblox.Client._numLocks = 0, Roblox.Client._logTiming = !1, Roblox.Client._logStartTime = null, Roblox.Client._logEndTime = null, Roblox.Client._hiddenModeEnabled = !1, Roblox.Client._runInstallABTest = function () {}, Roblox.Client.ReleaseLauncher = function (n, t, i) {\n if (t && Roblox.Client._numLocks--, (i || Roblox.Client._numLocks <= 0) && (n != null && (document.getElementById(\"pluginObjDiv\").innerHTML = \"\", n = null), Roblox.Client._numLocks = 0), Roblox.Client._logTiming) {\n Roblox.Client._logEndTime = new Date();\n\n var r = Roblox.Client._logEndTime.getTime() - Roblox.Client._logStartTime.getTime();\n\n console && console.log && console.log(\"Roblox.Client: \" + r + \"ms from Create to Release.\");\n }\n}, Roblox.Client.GetInstallHost = function (n) {\n if (window.ActiveXObject) return n.InstallHost;\n var t = n.Get_InstallHost();\n return t.match(/roblox.com$/) ? t : t.substring(0, t.length - 1);\n}, Roblox.Client.CreateLauncher = function (n) {\n var i, u, t, r;\n Roblox.Client._logTiming && (Roblox.Client._logStartTime = new Date()), n && Roblox.Client._numLocks++, (Roblox.Client._installHost == null || Roblox.Client._CLSID == null) && typeof initClientProps == \"function\" && initClientProps(), i = document.getElementById(\"robloxpluginobj\"), u = $(\"#pluginObjDiv\"), i || (Roblox.Client._hiddenModeEnabled = !1, window.ActiveXObject ? (t = '
Failed to INIT Plugin ', $(u).append(t)) : (t = '
', t += \"You need Our Plugin for this. Get the latest version from\", t += 'here .
', $(u).append(t)), i = document.getElementById(\"robloxpluginobj\"));\n\n try {\n if (i || (typeof console.log == \"undefined\" ? alert(\"Plugin installation failed!\") : console.log(\"Plugin installation failed!\")), i.Hello(), r = Roblox.Client.GetInstallHost(i), !r || r != Roblox.Client._installHost) throw \"wrong InstallHost: (plugins): \" + r + \" (servers): \" + Roblox.Client._installHost;\n return i;\n } catch (f) {\n return Roblox.Client.ReleaseLauncher(i, n, !1), null;\n }\n}, Roblox.Client.isIDE = function () {\n if (Roblox.Client._isIDE == null && (Roblox.Client._isIDE = !1, Roblox.Client._isRobloxBrowser = !1, window.external)) try {\n window.external.IsRobloxAppIDE !== undefined && (Roblox.Client._isIDE = window.external.IsRobloxAppIDE, Roblox.Client._isRobloxBrowser = !0);\n } catch (n) {}\n return Roblox.Client._isIDE;\n}, Roblox.Client.isRobloxBrowser = function () {\n return Roblox.Client.isIDE(), Roblox.Client._isRobloxBrowser;\n}, Roblox.Client.robloxBrowserInstallHost = function () {\n if (window.external) try {\n return window.external.InstallHost;\n } catch (n) {}\n return \"\";\n}, Roblox.Client.IsRobloxProxyInstalled = function () {\n var t = Roblox.Client.CreateLauncher(!1),\n n = !1;\n return (t != null && (n = !0), Roblox.Client.ReleaseLauncher(t, !1, !1), n || Roblox.Client.isRobloxBrowser()) ? !0 : !1;\n}, Roblox.Client.IsRobloxInstalled = function () {\n try {\n var t = Roblox.Client.CreateLauncher(!1),\n n = Roblox.Client.GetInstallHost(t);\n return Roblox.Client.ReleaseLauncher(t, !1, !1), n == Roblox.Client._installHost;\n } catch (i) {\n return Roblox.Client.isRobloxBrowser() ? (n = Roblox.Client.robloxBrowserInstallHost(), n == Roblox.Client._installHost) : !1;\n }\n}, Roblox.Client.SetStartInHiddenMode = function (n) {\n try {\n var t = Roblox.Client.CreateLauncher(!1);\n if (t !== null) return t.SetStartInHiddenMode(n), Roblox.Client._hiddenModeEnabled = n, !0;\n } catch (i) {}\n\n return !1;\n}, Roblox.Client.UnhideApp = function () {\n try {\n if (Roblox.Client._hiddenModeEnabled) {\n var n = Roblox.Client.CreateLauncher(!1);\n n.UnhideApp();\n }\n } catch (t) {}\n}, Roblox.Client.Update = function () {\n try {\n var n = Roblox.Client.CreateLauncher(!1);\n n.Update(), Roblox.Client.ReleaseLauncher(n, !1, !1);\n } catch (t) {\n alert(\"Error updating: \" + t);\n }\n}, Roblox.Client.WaitForRoblox = function (n) {\n if (Roblox.Client._skip) return window.location = Roblox.Client._skip, !1;\n\n if (Roblox.Client._continuation = n, Roblox.Client._cancelled = !1, !Roblox.Client.IsRobloxProxyInstalled() && Roblox.Client.ImplementsProxy) {\n Roblox.InstallationInstructions.show(), Roblox.Client.runInstallABTest();\n var t = \"Windows\";\n return navigator.appVersion.indexOf(\"Mac\") != -1 && (t = \"Mac\"), (typeof _gaq === \"undefined\" ? \"undefined\" : _typeof(_gaq)) != ( true ? \"undefined\" : 0) && (_gaq.push([\"_trackEvent\", \"Install Begin\", t]), _gaq.push([\"b._trackEvent\", \"Install Begin\", t])), RobloxEventManager.triggerEvent(\"rbx_evt_install_begin\", {\n os: t\n }), window.chrome && (window.location.hash = \"#chromeInstall\", $.cookie(\"chromeInstall\", n.toString().replace(/play_placeId/, play_placeId.toString()))), window.setTimeout(function () {\n Roblox.Client._ontimer();\n }, 1e3), tryToDownload(), !0;\n }\n\n return Roblox.Client._continuation(), !1;\n}, Roblox.Client.ResumeTimer = function (n) {\n Roblox.Client._continuation = n, Roblox.Client._cancelled = !1, window.setTimeout(function () {\n Roblox.Client._ontimer();\n }, 0);\n}, Roblox.Client.Refresh = function () {\n try {\n navigator.plugins.refresh(!1);\n } catch (n) {}\n}, Roblox.Client._onCancel = function () {\n return Roblox.InstallationInstructions.hide(), Roblox.Client._cancelled = !0, !1;\n}, Roblox.Client._ontimer = function () {\n Roblox.Client._cancelled || (Roblox.Client.Refresh(), Roblox.Client.IsRobloxProxyInstalled() ? (Roblox.InstallationInstructions.hide(), window.setTimeout(function () {\n window.chrome && window.location.hash == \"#chromeInstall\" && (window.location.hash = \"\", $.cookie(\"chromeInstall\", null));\n }, 5e3), Roblox.Client._continuation(), Roblox.Client._installSuccess && Roblox.Client._installSuccess()) : window.setTimeout(function () {\n Roblox.Client._ontimer();\n }, 1e3));\n};\n; /// InstallationInstructions.js\n\ntypeof Roblox == \"undefined\" && (Roblox = {}), Roblox.InstallationInstructions = function () {\n function i() {\n var t, i, r;\n n(), t = 0, i = $(\".InstallInstructionsImage\"), i && typeof $(i).attr(\"modalwidth\") != \"undefined\" && (t = $(\".InstallInstructionsImage\").attr(\"modalwidth\")), t > 0 ? (r = ($(window).width() - (t - 10)) / 2, $(\"#InstallationInstructions\").modal({\n escClose: !0,\n opacity: 50,\n minWidth: t,\n maxWidth: t,\n overlayCss: {\n backgroundColor: \"#000\"\n },\n position: [20, r]\n })) : $(\"#InstallationInstructions\").modal({\n escClose: !0,\n opacity: 50,\n maxWidth: $(window).width() / 2,\n minWidth: $(window).width() / 2,\n overlayCss: {\n backgroundColor: \"#000\"\n },\n position: [20, \"25%\"]\n });\n }\n\n function r() {\n $.modal.close();\n }\n\n function n() {\n var n = $(\".InstallInstructionsImage\");\n navigator.userAgent.match(/Mac OS X 10[_|\\.]5/) ? n && typeof $(n).attr(\"oldmacdelaysrc\") != \"undefined\" && $(\".InstallInstructionsImage\").attr(\"src\", $(\".InstallInstructionsImage\").attr(\"oldmacdelaysrc\")) : n && typeof $(n).attr(\"delaysrc\") != \"undefined\" && $(\".InstallInstructionsImage\").attr(\"src\", $(\".InstallInstructionsImage\").attr(\"delaysrc\"));\n }\n\n return {\n show: i,\n hide: r\n };\n}();\n; /// MadStatus.js\n\nMadStatus = {\n running: !1,\n init: function init(n, t, i, r) {\n MadStatus.running && MadStatus.stop(), MadStatus.updateInterval = i ? i : 2e3, MadStatus.fadeInterval = r ? r : 1e3, MadStatus.timeout = null, MadStatus.running = !0, MadStatus.field = n, MadStatus.backBuffer = t, MadStatus.field.show(), MadStatus.backBuffer.hide();\n },\n participle: [\"Accelerating\", \"Aggregating\", \"Allocating\", \"Aquiring\", \"Automating\", \"Backtracing\", \"Bloxxing\", \"Bootstraping\", \"Calibrating\", \"Correlating\", \"De-noobing\", \"De-ionizing\", \"Deriving\", \"Energizing\", \"Filtering\", \"Generating\", \"Indexing\", \"Loading\", \"Noobing\", \"Optimizing\", \"Oxidizing\", \"Queueing\", \"Parsing\", \"Processing\", \"Rasterizing\", \"Reading\", \"Registering\", \"Re-routing\", \"Resolving\", \"Sampling\", \"Updating\", \"Writing\"],\n modifier: [\"Blox\", \"Count Zero\", \"Cylon\", \"Data\", \"Ectoplasm\", \"Encryption\", \"Event\", \"Farnsworth\", \"Bebop\", \"Flux Capacitor\", \"Fusion\", \"Game\", \"Gibson\", \"Host\", \"Mainframe\", \"Metaverse\", \"Nerf Herder\", \"Neutron\", \"Noob\", \"Photon\", \"Profile\", \"Script\", \"Skynet\", \"TARDIS\", \"Virtual\"],\n subject: [\"Analogs\", \"Blocks\", \"Cannon\", \"Channels\", \"Core\", \"Database\", \"Dimensions\", \"Directives\", \"Engine\", \"Files\", \"Gear\", \"Index\", \"Layer\", \"Matrix\", \"Paradox\", \"Parameters\", \"Parsecs\", \"Pipeline\", \"Players\", \"Ports\", \"Protocols\", \"Reactors\", \"Sphere\", \"Spooler\", \"Stream\", \"Switches\", \"Table\", \"Targets\", \"Throttle\", \"Tokens\", \"Torpedoes\", \"Tubes\"],\n newLib: function newLib() {\n return libString = this.participle[Math.floor(Math.random() * this.participle.length)] + \" \" + this.modifier[Math.floor(Math.random() * this.modifier.length)] + \" \" + this.subject[Math.floor(Math.random() * this.subject.length)] + \"...\";\n },\n start: function start() {\n MadStatus.timeout == null && (MadStatus.timeout = setInterval(\"MadStatus.update()\", MadStatus.updateInterval), MadStatus.running = !0);\n },\n stop: function stop(n) {\n clearInterval(MadStatus.timeout), MadStatus.timeout = null, MadStatus.field[0].innerHTML = _typeof(n) != ( true ? \"undefined\" : 0) ? n : \"\", MadStatus.running = !1;\n },\n manualUpdate: function manualUpdate(n, t, i) {\n MadStatus.timeout && MadStatus.stop(), this.update(n, i), t && setTimeout(\"MadStatus.start()\", 1e3);\n },\n update: function update(n, t) {\n (MadStatus.backBuffer[0].innerHTML = _typeof(n) != ( true ? \"undefined\" : 0) ? n : this.newLib(), (typeof noAnim === \"undefined\" ? \"undefined\" : _typeof(noAnim)) == ( true ? \"undefined\" : 0) || t != !1) && (this.field.hide(), this.backBuffer.fadeIn(this.fadeInterval + 2, function () {\n MadStatus.field[0].innerHTML = MadStatus.backBuffer[0].innerHTML, MadStatus.field.show(), MadStatus.backBuffer.hide();\n }));\n }\n};\n; /// PlaceLauncher.js\n\nvar RBX = {},\n RobloxLaunchStates = {\n StartingServer: \"StartingServer\",\n StartingClient: \"StartingClient\",\n Upgrading: \"Upgrading\",\n None: \"None\"\n},\n RobloxLaunch = {\n launchGamePage: null,\n timer: null,\n clientMetricType: null,\n launcher: null,\n googleAnalyticsCallback: function googleAnalyticsCallback() {\n RobloxLaunch._GoogleAnalyticsCallback && RobloxLaunch._GoogleAnalyticsCallback();\n },\n state: RobloxLaunchStates.None,\n secureAuthenticate: !1\n},\n RobloxPlaceLauncherService = {\n LogJoinClick: function LogJoinClick() {\n $.get(\"/Game/Placelauncher.ashx\", {\n request: \"LogJoinClick\"\n });\n },\n RequestGame: function RequestGame(n, t, i, r, u, f) {\n i = i !== null && i !== undefined ? i : \"\", $.getJSON(\"/Game/PlaceLauncher.ashx\", {\n request: \"RequestGame\",\n placeId: n,\n isPartyLeader: t,\n gender: i\n }, function (n) {\n n.Error ? u(n.Error, f) : r(n, f);\n });\n },\n RequestPlayWithParty: function RequestPlayWithParty(n, t, i, r, u, f) {\n $.getJSON(\"/Game/PlaceLauncher.ashx\", {\n request: \"RequestPlayWithParty\",\n placeId: n,\n partyGuid: t,\n gameId: i\n }, function (n) {\n n.Error ? u(n.Error, f) : r(n, f);\n });\n },\n RequestGroupBuildGame: function RequestGroupBuildGame(n, t, i, r) {\n $.getJSON(\"/Game/PlaceLauncher.ashx\", {\n request: \"RequestGroupBuildGame\",\n placeId: n\n }, function (n) {\n n.Error ? i(n.Error, r) : t(n, r);\n });\n },\n RequestFollowUser: function RequestFollowUser(n, t, i, r) {\n $.getJSON(\"/Game/PlaceLauncher.ashx\", {\n request: \"RequestFollowUser\",\n userId: n\n }, function (n) {\n n.Error ? i(n.Error, r) : t(n, r);\n });\n },\n RequestGameJob: function RequestGameJob(n, t, i, r, u, f) {\n $.getJSON(\"/Game/PlaceLauncher.ashx\", {\n request: \"RequestGameJob\",\n placeId: n,\n gameId: t,\n gameJobId: i\n }, function (n) {\n n.Error ? u(n.Error, f) : r(n, f);\n });\n },\n CheckGameJobStatus: function CheckGameJobStatus(n, t, i, r) {\n $.getJSON(\"/Game/PlaceLauncher.ashx\", {\n request: \"CheckGameJobStatus\",\n jobId: n\n }, function (n) {\n n.Error ? i(n.Error, r) : t(n, r);\n });\n }\n};\nRobloxLaunch.RequestPlayWithParty = function (n, t, i, r) {\n RobloxPlaceLauncherService.LogJoinClick(), RobloxLaunch.timer = new Date(), RobloxLaunch.state = RobloxLaunchStates.None, RobloxLaunch.clientMetricType = \"WebPlay\", checkRobloxInstall() && (RobloxLaunch.launcher === null && (RobloxLaunch.launcher = new RBX.PlaceLauncher(n)), RobloxLaunch.launcher.RequestPlayWithParty(t, i, r));\n}, RobloxLaunch.RequestGame = function (n, t, i) {\n RobloxPlaceLauncherService.LogJoinClick(), RobloxLaunch.timer = new Date(), RobloxLaunch.state = RobloxLaunchStates.None, RobloxLaunch.clientMetricType = \"WebPlay\", checkRobloxInstall() && (RobloxLaunch.launcher === null && (RobloxLaunch.launcher = new RBX.PlaceLauncher(n)), RobloxLaunch.launcher.RequestGame(t, i));\n}, RobloxLaunch.RequestGroupBuildGame = function (n, t) {\n RobloxPlaceLauncherService.LogJoinClick(), RobloxLaunch.timer = new Date(), RobloxLaunch.state = RobloxLaunchStates.None, RobloxLaunch.clientMetricType = \"WebPlay\", checkRobloxInstall() && (RobloxLaunch.launcher === null && (RobloxLaunch.launcher = new RBX.PlaceLauncher(n)), RobloxLaunch.launcher.RequestGroupBuildGame(t));\n}, RobloxLaunch.RequestGameJob = function (n, t, i, r) {\n RobloxPlaceLauncherService.LogJoinClick(), RobloxLaunch.timer = new Date(), RobloxLaunch.state = RobloxLaunchStates.None, RobloxLaunch.clientMetricType = \"WebJoin\", checkRobloxInstall() && (RobloxLaunch.launcher === null && (RobloxLaunch.launcher = new RBX.PlaceLauncher(n)), RobloxLaunch.launcher.RequestGameJob(t, i, r));\n}, RobloxLaunch.RequestFollowUser = function (n, t) {\n RobloxPlaceLauncherService.LogJoinClick(), RobloxLaunch.timer = new Date(), RobloxLaunch.state = RobloxLaunchStates.None, RobloxLaunch.clientMetricType = \"WebFollow\", checkRobloxInstall() && (RobloxLaunch.launcher === null && (RobloxLaunch.launcher = new RBX.PlaceLauncher(n)), RobloxLaunch.launcher.RequestFollowUser(t));\n}, RobloxLaunch.StartGame = function (n, t, i, r, u) {\n var o, f, e, s;\n RobloxLaunch.secureAuthenticate && (i = i.replace(\"http://\", \"https://\")), n = typeof RobloxLaunch.SeleniumTestMode == \"undefined\" ? n + \"&testmode=false\" : n + \"&testmode=true\", typeof urchinTracker != \"undefined\" && urchinTracker(\"Visit/Try/\" + t), RobloxLaunch.state = RobloxLaunchStates.StartingClient, RobloxLaunch.googleAnalyticsCallback !== null && RobloxLaunch.googleAnalyticsCallback(), o = null;\n\n try {\n if (typeof window.external != \"undefined\" && window.external.IsRobloxABApp) window.external.StartGame(r, i, n);else if (typeof window.external != \"undefined\" && window.external.IsRoblox2App && (n.indexOf(\"visit\") != -1 || u)) window.external.StartGame(r, i, n);else if (o = \"RobloxProxy/\", f = Roblox.Client.CreateLauncher(!0), f) {\n o = \"RobloxProxy/StartGame/\";\n\n try {\n try {\n window.ActiveXObject ? f.AuthenticationTicket = r : f.Put_AuthenticationTicket(r), u && f.SetEditMode();\n } catch (a) {}\n\n try {\n if (Roblox.Client._silentModeEnabled) f.SetSilentModeEnabled(!0), Roblox.VideoPreRoll.videoInitialized && Roblox.VideoPreRoll.isPlaying() && Roblox.Client.SetStartInHiddenMode(!0), f.StartGame(i, n), RobloxLaunch.CheckGameStarted(f);else throw \"silent mode is disabled, fall back\";\n } catch (a) {\n if (f.StartGame(i, n), Roblox.Client._bringAppToFrontEnabled) try {\n f.BringAppToFront();\n } catch (h) {}\n Roblox.Client.ReleaseLauncher(f, !0, !1), $.modal.close();\n }\n } catch (a) {\n Roblox.Client.ReleaseLauncher(f, !0, !1);\n throw a;\n }\n } else {\n try {\n parent.playFromUrl(n);\n return;\n } catch (l) {}\n\n if (Roblox.Client.isRobloxBrowser()) try {\n window.external.StartGame(r, i, n);\n } catch (l) {\n throw \"window.external fallback failed, Roblox must not be installed or IE cannot access ActiveX\";\n } else throw \"launcher is null or undefined and external is missing\";\n RobloxLaunch.state = RobloxLaunchStates.None, $.modal.close();\n }\n } catch (a) {\n if (e = a.message, e === \"User cancelled\" && typeof urchinTracker != \"undefined\") return urchinTracker(\"Visit/UserCancelled/\" + t), !1;\n\n try {\n s = new ActiveXObject(\"Microsoft.XMLHTTP\");\n } catch (c) {\n e = \"FailedXMLHTTP/\" + e;\n }\n\n return Roblox.Client.isRobloxBrowser() ? typeof urchinTracker != \"undefined\" && urchinTracker(\"Visit/Fail/\" + o + encodeURIComponent(e)) : (typeof urchinTracker != \"undefined\" && urchinTracker(\"Visit/Redirect/\" + o + encodeURIComponent(e)), window.location = RobloxLaunch.launchGamePage), !1;\n }\n\n return typeof urchinTracker != \"undefined\" && urchinTracker(\"Visit/Success/\" + t), !0;\n}, RobloxLaunch.CheckGameStarted = function (n) {\n function r() {\n var e = !1;\n\n try {\n if (i || (i = window.ActiveXObject ? n.IsGameStarted : n.Get_GameStarted()), i && !Roblox.VideoPreRoll.isPlaying()) {\n if (MadStatus.stop(\"Connecting to Players...\"), RobloxLaunch.state = RobloxLaunchStates.None, $.modal.close(), t._cancelled = !0, Roblox.Client._hiddenModeEnabled && Roblox.Client.UnhideApp(), Roblox.Client._bringAppToFrontEnabled) try {\n n.BringAppToFront();\n } catch (f) {}\n Roblox.Client.ReleaseLauncher(n, !0, !1);\n } else t._cancelled || setTimeout(r, 1e3);\n } catch (u) {\n t._cancelled || setTimeout(r, 1e3);\n }\n }\n\n var t = RobloxLaunch.launcher,\n i;\n t === null && (t = new RBX.PlaceLauncher(\"PlaceLauncherStatusPanel\"), t._showDialog(), t._updateStatus(0)), i = !1, r();\n}, RobloxLaunch.CheckRobloxInstall = function (n) {\n if (Roblox.Client.IsRobloxInstalled()) return Roblox.Client.Update(), !0;\n window.location = n;\n}, RBX.PlaceLauncher = function (n) {\n this._cancelled = !1, this._popupID = n, this._popup = $(\"#\" + n);\n}, RBX.PlaceLauncher.prototype = {\n _showDialog: function _showDialog() {\n this._cancelled = !1, _popupOptions = {\n escClose: !0,\n opacity: 80,\n overlayCss: {\n backgroundColor: \"#000\"\n }\n }, this._popupID == \"PlaceLauncherStatusPanel\" && (Roblox.VideoPreRoll && Roblox.VideoPreRoll.showVideoPreRoll && !Roblox.VideoPreRoll.isExcluded() ? (this._popup = $(\"#videoPrerollPanel\"), _popupOptions.onShow = function (n) {\n Roblox.VideoPreRoll.correctIEModalPosition(n), Roblox.VideoPreRoll.start();\n }, _popupOptions.onClose = function () {\n Roblox.VideoPreRoll.close();\n }, _popupOptions.closeHTML = '
') : (this._popup = $(\"#\" + this._popupID), _popupOptions.onClose = function () {\n Roblox.VideoPreRoll.logVideoPreRoll(), $.modal.close();\n })), this._popup.modal(_popupOptions);\n var n = this;\n $(\".CancelPlaceLauncherButton\").click(function () {\n n.CancelLaunch();\n }), $(\".CancelPlaceLauncherButton\").show();\n },\n _reportDuration: function _reportDuration(n, t) {\n $.ajax({\n type: \"GET\",\n async: !0,\n cache: !1,\n timeout: 5e4,\n url: \"/Game/JoinRate.ashx?c=\" + RobloxLaunch.clientMetricType + \"&r=\" + t + \"&d=\" + n,\n success: function success() {}\n });\n },\n _onGameStatus: function _onGameStatus(n) {\n var r, i, t;\n\n if (this._cancelled) {\n r = +new Date() - RobloxLaunch.timer.getTime(), this._reportDuration(r, \"Cancel\");\n return;\n }\n\n if (this._updateStatus(n.status), n.status === 2) RobloxLaunch.StartGame(n.joinScriptUrl, \"Join\", n.authenticationUrl, n.authenticationTicket), i = +new Date() - RobloxLaunch.timer.getTime(), this._reportDuration(i, \"Success\");else if (n.status < 2 || n.status === 6) {\n var f = function f(n, t) {\n t._onGameStatus(n);\n },\n e = function e(n, t) {\n t._onGameError(n);\n },\n o = this,\n u = function u() {\n RobloxPlaceLauncherService.CheckGameJobStatus(n.jobId, f, e, o);\n };\n\n window.setTimeout(u, 2e3);\n } else n.status === 4 && (t = +new Date() - RobloxLaunch.timer.getTime(), this._reportDuration(t, \"Failure\"));\n },\n _updateStatus: function _updateStatus(n) {\n MadStatus.running || (MadStatus.init($(this._popup).find(\".MadStatusField\"), $(this._popup).find(\".MadStatusBackBuffer\"), 2e3, 800), MadStatus.start());\n\n switch (n) {\n case 0:\n break;\n\n case 1:\n MadStatus.manualUpdate(\"A server is loading the game...\", !0);\n break;\n\n case 2:\n MadStatus.manualUpdate(\"The server is ready. Joining the game...\", !0);\n break;\n\n case 3:\n MadStatus.manualUpdate(\"Joining games is temporarily disabled while we upgrade. Please try again soon.\", !1);\n break;\n\n case 4:\n MadStatus.manualUpdate(\"An error occurred. Please try again later.\", !1);\n break;\n\n case 5:\n MadStatus.manualUpdate(\"The game you requested has ended.\", !1);\n break;\n\n case 6:\n MadStatus.manualUpdate(\"The game you requested is currently full. Waiting for an opening...\", !0, !1);\n break;\n\n case 7:\n MadStatus.manualUpdate(\"Roblox is updating. Please wait...\", !0);\n break;\n\n case 8:\n MadStatus.manualUpdate(\"Requesting a server\", !0);\n break;\n\n default:\n MadStatus.stop(\"Connecting to Players...\");\n }\n\n $(this._popup).find(\".MadStatusStarting\").css(\"display\", \"none\"), $(this._popup).find(\".MadStatusSpinner\").css(\"visibility\", n === 3 || n === 4 || n === 5 ? \"hidden\" : \"visible\");\n },\n _onGameError: function _onGameError() {\n this._updateStatus(4);\n },\n _startUpdatePolling: function _startUpdatePolling(n) {\n var t, i;\n\n try {\n if (RobloxLaunch.state = RobloxLaunchStates.Upgrading, t = Roblox.Client.CreateLauncher(!0), i = window.ActiveXObject ? t.IsUpToDate : t.Get_IsUpToDate(), i || i === undefined) {\n try {\n t.PreStartGame();\n } catch (e) {}\n\n Roblox.Client.ReleaseLauncher(t, !0, !1), RobloxLaunch.state = RobloxLaunchStates.StartingServer, n();\n return;\n }\n\n var f = function f(t, i, r) {\n r._onUpdateStatus(t, i, n);\n },\n u = function u(n, t) {\n t._onUpdateError(n);\n },\n r = this;\n\n this.CheckUpdateStatus(f, u, t, n, r);\n } catch (e) {\n Roblox.Client.ReleaseLauncher(t, !0, !1), n();\n }\n },\n _onUpdateStatus: function _onUpdateStatus(n, t, i) {\n if (!this._cancelled) if (this._updateStatus(n), n === 8) Roblox.Client.ReleaseLauncher(t, !0, !0), Roblox.Client.Refresh(), RobloxLaunch.state = RobloxLaunchStates.StartingServer, i();else if (n === 7) {\n var f = function f(n, t, r) {\n r._onUpdateStatus(n, t, i);\n },\n e = function e(n, t) {\n t._onUpdateError(n);\n },\n r = this,\n u = function u() {\n r.CheckUpdateStatus(f, e, t, i, r);\n };\n\n window.setTimeout(u, 2e3);\n } else alert(\"Unknown status from CheckUpdateStatus\");\n },\n _onUpdateError: function _onUpdateError() {\n this._updateStatus(2);\n },\n CheckUpdateStatus: function CheckUpdateStatus(n, t, i, r, u) {\n try {\n if (i.PreStartGame(), window.ActiveXObject) var f = i.IsUpToDate;else f = i.Get_IsUpToDate();\n f || f === undefined ? n(8, i, u) : n(7, i, u);\n } catch (e) {\n n(8, i, u);\n }\n },\n RequestGame: function RequestGame(n, t) {\n var r;\n\n this._showDialog();\n\n var f = function f(n, t) {\n t._onGameStatus(n);\n },\n u = function u(n, t) {\n t._onGameError(n);\n },\n e = this,\n i = !1;\n\n return typeof Party != \"undefined\" && typeof Party.AmILeader == \"function\" && (i = Party.AmILeader()), r = function r() {\n RobloxPlaceLauncherService.RequestGame(n, i, t, f, u, e);\n }, this._startUpdatePolling(r), !1;\n },\n RequestPlayWithParty: function RequestPlayWithParty(n, t, i) {\n this._showDialog();\n\n var f = function f(n, t) {\n t._onGameStatus(n);\n },\n e = function e(n, t) {\n t._onGameError(n);\n },\n r = this,\n u = function u() {\n RobloxPlaceLauncherService.RequestPlayWithParty(n, t, i, f, e, r);\n };\n\n return this._startUpdatePolling(u), !1;\n },\n RequestGroupBuildGame: function RequestGroupBuildGame(n) {\n this._showDialog();\n\n var r = function r(n, t) {\n t._onGameStatus(n, !0);\n },\n u = function u(n, t) {\n t._onGameError(n);\n },\n t = this,\n i = function i() {\n RobloxPlaceLauncherService.RequestGroupBuildGame(n, r, u, t);\n };\n\n return this._startUpdatePolling(i), !1;\n },\n RequestFollowUser: function RequestFollowUser(n) {\n this._showDialog();\n\n var r = function r(n, t) {\n t._onGameStatus(n);\n },\n u = function u(n, t) {\n t._onError(n);\n },\n t = this,\n i = function i() {\n RobloxPlaceLauncherService.RequestFollowUser(n, r, u, t);\n };\n\n return this._startUpdatePolling(i), !1;\n },\n RequestGameJob: function RequestGameJob(n, t, i) {\n this._showDialog();\n\n var f = function f(n, t) {\n t._onGameStatus(n);\n },\n e = function e(n, t) {\n t._onGameError(n);\n },\n r = this,\n u = function u() {\n RobloxPlaceLauncherService.RequestGameJob(n, t, i, f, e, r);\n };\n\n return this._startUpdatePolling(u), !1;\n },\n CancelLaunch: function CancelLaunch() {\n return this._cancelled = !0, $.modal.close(), !1;\n },\n dispose: function dispose() {\n RBX.PlaceLauncher.callBaseMethod(this, \"dispose\");\n }\n};\n; /// VideoPreRoll.js\n\nfunction openVideoPreroll2(n) {\n Roblox.VideoPreRoll.test(n);\n}\n\nfunction flashCheck(n) {\n var i = !1,\n t,\n r;\n if (window.ActiveXObject) try {\n t = new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.\" + n), i = !0;\n } catch (u) {} else navigator.plugins && navigator.mimeTypes.length > 0 && (t = navigator.plugins[\"Shockwave Flash\"], t && (r = navigator.plugins[\"Shockwave Flash\"].description.replace(/.*\\s(\\d+\\.\\d+).*/, \"$1\"), r >= n && (i = !0)));\n return i;\n}\n\ntypeof Roblox == \"undefined\" && (Roblox = {}), Roblox.VideoPreRoll = {\n newValue: \"\",\n showVideoPreRoll: !1,\n videoInitialized: !1,\n videoStarted: !1,\n videoCompleted: !1,\n videoSkipped: !1,\n videoCancelled: !1,\n videoErrored: !1,\n videoOptions: {\n key: \"integration_test\",\n companionId: \"videoPrerollCompanionAd\"\n },\n myvpaidad: null,\n loadingBarMaxTime: 3e4,\n loadingBarCurrentTime: 0,\n loadingBarIntervalID: 0,\n loadingBarID: \"videoPrerollLoadingBar\",\n loadingBarInnerID: \"videoPrerollLoadingBarCompleted\",\n loadingBarPercentageID: \"videoPrerollLoadingPercent\",\n videoLoadingTimeout: 7e3,\n videoPlayingTimeout: 23e3,\n videoLogNote: \"\",\n logsEnabled: !1,\n excludedPlaceIds: \"\",\n specificAdOnPlacePageEnabled: !1,\n specificAdOnPlacePageId: 0,\n specificAdOnPlacePageCategory: \"\",\n checkEligibility: function checkEligibility() {\n Roblox.VideoPreRoll.showVideoPreRoll && (flashCheck(8) ? typeof __adaptv__ == \"undefined\" ? (Roblox.VideoPreRoll.videoLogNote = \"NoAdapTv\", Roblox.VideoPreRoll.showVideoPreRoll = !1) : Roblox.Client.IsRobloxInstalled() ? Roblox.Client.isIDE() ? (Roblox.VideoPreRoll.videoLogNote = \"RobloxStudio\", Roblox.VideoPreRoll.showVideoPreRoll = !1) : Roblox.Client.isRobloxBrowser() ? (Roblox.VideoPreRoll.videoLogNote = \"RobloxPlayer\", Roblox.VideoPreRoll.showVideoPreRoll = !1) : window.chrome && window.location.hash == \"#chromeInstall\" && (Roblox.VideoPreRoll.showVideoPreRoll = !1) : Roblox.VideoPreRoll.showVideoPreRoll = !1 : (Roblox.VideoPreRoll.videoLogNote = \"NoFlash\", Roblox.VideoPreRoll.showVideoPreRoll = !1));\n },\n isExcluded: function isExcluded() {\n var t, n;\n if (Roblox.VideoPreRoll.showVideoPreRoll && Roblox.VideoPreRoll.excludedPlaceIds !== \"\" && (t = Roblox.VideoPreRoll.excludedPlaceIds.split(\",\"), typeof play_placeId != \"undefined\")) for (n = 0; n < t.length; n++) {\n if (play_placeId == t[n]) return Roblox.VideoPreRoll.videoLogNote = \"ExcludedPlace\", !0;\n }\n return !1;\n },\n start: function start() {\n var i, r, t, n;\n this.videoInitialized = !0, this.videoStarted = !1, this.videoCancelled = !1, this.videoCompleted = !1, this.videoSkipped = !1, this.loadingBarCurrentTime = 0, this.videoLogNote = \"\", Roblox.VideoPreRoll.specificAdOnPlacePageEnabled && typeof play_placeId != \"undefined\" && (i = \",\" + Roblox.VideoPreRoll.specificAdOnPlacePageCategory, play_placeId == Roblox.VideoPreRoll.specificAdOnPlacePageId && Roblox.VideoPreRoll.videoOptions.categories.indexOf(i) == -1 && (Roblox.VideoPreRoll.videoOptions.categories += i)), r = __adaptv__, this.myvpaidad = new r.ads.vpaid.VPAIDAd(\"videoPrerollMainDiv\"), t = 1e3, LoadingBar.init(this.loadingBarID, this.loadingBarInnerID, this.loadingBarPercentageID), this.loadingBarIntervalID = setInterval(function () {\n Roblox.VideoPreRoll.loadingBarCurrentTime += t, LoadingBar.update(Roblox.VideoPreRoll.loadingBarID, Roblox.VideoPreRoll.loadingBarCurrentTime / Roblox.VideoPreRoll.loadingBarMaxTime);\n }, t), n = r.ads.vpaid.VPAIDEvent;\n this.myvpaidad.on(n.AdLoaded, function (n) {\n Roblox.VideoPreRoll._onVideoLoaded(n);\n });\n this.myvpaidad.on(n.AdStarted, function (n) {\n Roblox.VideoPreRoll._onVideoStart(n);\n });\n this.myvpaidad.on(n.AdStopped, function (n) {\n Roblox.VideoPreRoll._onVideoComplete(n);\n });\n this.myvpaidad.on(n.AdError, function (n) {\n Roblox.VideoPreRoll._onVideoError(n);\n });\n\n try {\n this.myvpaidad.initAd(391, 312, this.videoOptions);\n } catch (u) {\n f();\n }\n },\n error: function error() {\n clearInterval(loadingBarInterval);\n },\n cancel: function cancel() {\n this.videoCancelled = !0, $.modal.close();\n },\n skip: function skip() {\n this.videoCompleted = !0, this.videoSkipped = !0, this.showVideoPreRoll = !1;\n },\n close: function close() {\n MadStatus.running && MadStatus.stop(\"\"), RobloxLaunch.launcher && (RobloxLaunch.launcher._cancelled = !0), clearInterval(this.loadingBarIntervalID), LoadingBar.dispose(this.loadingBarID);\n\n try {\n this.myvpaidad.stopAd();\n } catch (n) {}\n\n this.isPlaying() && (this.videoCancelled = !0), $.modal.close(), this.logVideoPreRoll();\n },\n _onVideoError: function f() {\n this.videoCompleted = !0, this.videoErrored = !0;\n },\n _onVideoLoaded: function _onVideoLoaded(n) {\n try {\n this.myvpaidad.startAd();\n } catch (t) {\n f(n);\n }\n },\n _onVideoStart: function _onVideoStart() {\n this.videoStarted = !0;\n },\n _onVideoComplete: function _onVideoComplete() {\n this.videoStarted && this.videoCancelled == !1 && (this.videoCompleted = !0, this.showVideoPreRoll = !1, this.newValue != \"\" && $.cookie(\"RBXVPR\", this.newValue, 180));\n },\n logVideoPreRoll: function logVideoPreRoll() {\n if (Roblox.VideoPreRoll.logsEnabled) {\n var n = \"\";\n if (Roblox.VideoPreRoll.videoCompleted) n = \"Complete\", Roblox.VideoPreRoll.videoLogNote == \"\" && (Roblox.VideoPreRoll.videoLogNote = \"NoTimeout\"), Roblox.VideoPreRoll.logsEnabled = !1;else if (Roblox.VideoPreRoll.videoCancelled) n = \"Cancelled\", Roblox.VideoPreRoll.videoLogNote = RobloxLaunch.state;else if (Roblox.VideoPreRoll.videoInitialized == !1 && Roblox.VideoPreRoll.videoLogNote != \"\") n = \"Failed\", Roblox.VideoPreRoll.logsEnabled = !1;else return;\n GoogleAnalyticsEvents.FireEvent([\"PreRoll\", n, Roblox.VideoPreRoll.videoLogNote]);\n }\n },\n isPlaying: function isPlaying() {\n return Roblox.VideoPreRoll.videoInitialized ? (Roblox.VideoPreRoll.videoInitialized && !Roblox.VideoPreRoll.videoStarted && Roblox.VideoPreRoll.loadingBarCurrentTime > Roblox.VideoPreRoll.videoLoadingTimeout && (Roblox.VideoPreRoll.videoCompleted = !0, Roblox.VideoPreRoll.videoLogNote = \"LoadingTimeout\"), Roblox.VideoPreRoll.videoStarted && !Roblox.VideoPreRoll.videoCompleted && Roblox.VideoPreRoll.loadingBarCurrentTime > Roblox.VideoPreRoll.videoPlayingTimeout && (Roblox.VideoPreRoll.videoCompleted = !0, Roblox.VideoPreRoll.videoLogNote = \"PlayingTimeout\"), !Roblox.VideoPreRoll.videoCompleted) : !1;\n },\n correctIEModalPosition: function correctIEModalPosition(n) {\n if (n.container.innerHeight() <= 30) {\n var i = $(\"#videoPrerollPanel\"),\n t = -Math.floor(i.innerHeight() / 2);\n i.css({\n position: \"relative\",\n top: t + \"px\"\n }), n.container.find(\".VprCloseButton\").css({\n top: t - 10 + \"px\",\n \"z-index\": \"1003\"\n });\n }\n },\n test: function test() {\n _popupOptions = {\n escClose: !0,\n opacity: 80,\n overlayCss: {\n backgroundColor: \"#000\"\n },\n onShow: function onShow(n) {\n Roblox.VideoPreRoll.correctIEModalPosition(n), Roblox.VideoPreRoll.start();\n },\n onClose: function onClose() {\n Roblox.VideoPreRoll.close();\n },\n closeHTML: '
'\n }, $(\"#videoPrerollPanel\").modal(_popupOptions), MadStatus.running || (MadStatus.init($(\"#videoPrerollPanel\").find(\".MadStatusField\"), $(\"#videoPrerollPanel\").find(\".MadStatusBackBuffer\"), 2e3, 800), MadStatus.start()), $(\"#videoPrerollPanel\").find(\".MadStatusStarting\").css(\"display\", \"none\"), $(\"#videoPrerollPanel\").find(\".MadStatusSpinner\").css(\"visibility\", status === 3 || status === 4 || status === 5 ? \"hidden\" : \"visible\");\n }\n};\nvar LoadingBar = {\n bars: [],\n init: function init(n, t, i, r) {\n var u = this.get(n);\n u == null && (u = {}), u.barID = n, u.innerBarID = t, u.percentageID = i, typeof r == \"undefined\" && (u.percentComplete = 0), this.bars.push(u), this.update(n, u.percentComplete);\n },\n get: function get(n) {\n for (var t = 0; t < this.bars.length; t++) {\n if (this.bars[t].barID == n) return this.bars[t];\n }\n\n return null;\n },\n dispose: function dispose(n) {\n for (var t = 0; t < this.bars.length; t++) {\n this.bars[t].barID == n && this.bars.splice(t, 1);\n }\n },\n update: function update(n, t) {\n var i = this.get(n),\n u,\n r;\n i && (t > 1 && (t = 1), u = $(\"#\" + n).width(), r = Math.round(u * t), $(\"#\" + i.innerBarID).animate({\n width: r\n }, 200, \"swing\"), i.percentageID && $(\"#\" + i.percentageID).length > 0 && $(\"#\" + i.percentageID).html(Math.round(t * 100) + \"%\"), i.percentComplete = t);\n }\n}; // end roblox.js//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYXBwLmpzPzZkNDAiXSwibmFtZXMiOlsibiIsInQiLCJwIiwiaSIsInIiLCJzcGxpdCIsInNoaWZ0IiwibGVuZ3RoIiwiayIsInUiLCJudCIsImYiLCJjcmVhdGVFbGVtZW50IiwiaHJlZiIsInJlbCIsInR5cGUiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwiZyIsInNyYyIsIm9ubG9hZCIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJkIiwicG9wIiwibyIsImluZGV4T2YiLCJtb2R1bGVQYXRoIiwicmVwbGFjZSIsInYiLCJiYXNlVXJsIiwidmVyc2lvbnMiLCJzIiwiUm9ibG94IiwicHVzaCIsImUiLCJsb2FkZWQiLCJkZXBzTG9hZGVkIiwibGlzdGVuZXJzIiwiYSIsImgiLCJiIiwiZXh0ZXJuYWxSZXNvdXJjZXMiLCJ0b1N0cmluZyIsImwiLCJjIiwiYXBwbHkiLCJzbGljZSIsInkiLCJ3IiwidW5zaGlmdCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJjYWxsIiwiY29uZmlnIiwicmVxdWlyZSIsImRlZmluZSIsIndpbmRvdyIsInRvSlNPTiIsIkpTT04iLCJzdHJpbmdpZnkiLCJ1bmRlZmluZWQiLCJxdW90ZVN0cmluZyIsImNvbnN0cnVjdG9yIiwiRGF0ZSIsImdldFVUQ01vbnRoIiwiZ2V0VVRDRGF0ZSIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsImdldFVUQ01pbGxpc2Vjb25kcyIsIkFycmF5Iiwiam9pbiIsImV2YWxKU09OIiwicGFyc2UiLCJldmFsIiwic2VjdXJlRXZhbEpTT04iLCJ0ZXN0IiwiU3ludGF4RXJyb3IiLCJtYXRjaCIsImNoYXJDb2RlQXQiLCJNYXRoIiwiZmxvb3IiLCJqUXVlcnkiLCJicm93c2VyIiwibXNpZSIsInBhcnNlSW50IiwidmVyc2lvbiIsIlhNTEh0dHBSZXF1ZXN0IiwibW9kYWwiLCJpbXBsIiwiaW5pdCIsImNsb3NlIiwiZm4iLCJkZWZhdWx0cyIsImFwcGVuZFRvIiwiZm9jdXMiLCJvcGFjaXR5Iiwib3ZlcmxheUlkIiwib3ZlcmxheUNzcyIsImNvbnRhaW5lcklkIiwiY29udGFpbmVyQ3NzIiwiZGF0YUlkIiwiZGF0YUNzcyIsIm1pbkhlaWdodCIsIm1pbldpZHRoIiwibWF4SGVpZ2h0IiwibWF4V2lkdGgiLCJhdXRvUmVzaXplIiwiYXV0b1Bvc2l0aW9uIiwiekluZGV4IiwiY2xvc2VIVE1MIiwiY2xvc2VDbGFzcyIsImVzY0Nsb3NlIiwib3ZlcmxheUNsb3NlIiwicG9zaXRpb24iLCJwZXJzaXN0Iiwib25PcGVuIiwib25TaG93Iiwib25DbG9zZSIsImRhdGEiLCJleHRlbmQiLCJvY2NiIiwicGxhY2Vob2xkZXIiLCJwYXJlbnQiLCJzaXplIiwiYmVmb3JlIiwiYXR0ciIsImNzcyIsImRpc3BsYXkiLCJvcmlnIiwiY2xvbmUiLCJodG1sIiwiYWxlcnQiLCJjcmVhdGUiLCJvcGVuIiwiaXNGdW5jdGlvbiIsImdldERpbWVuc2lvbnMiLCJpZnJhbWUiLCJpZnJhbWVDc3MiLCJoZWlnaHQiLCJ3aWR0aCIsInRvcCIsImxlZnQiLCJvdmVybGF5IiwiYWRkQ2xhc3MiLCJjb250YWluZXIiLCJhcHBlbmQiLCJ3cmFwIiwib3V0bGluZSIsIm92ZXJmbG93Iiwic2V0Q29udGFpbmVyRGltZW5zaW9ucyIsImZpeElFIiwiYmluZEV2ZW50cyIsImJpbmQiLCJwcmV2ZW50RGVmYXVsdCIsImtleUNvZGUiLCJ3YXRjaFRhYiIsInVuYmluZEV2ZW50cyIsInVuYmluZCIsImVhY2giLCJzdHlsZSIsInJlbW92ZUV4cHJlc3Npb24iLCJzZXRFeHByZXNzaW9uIiwib3BlcmEiLCJqcXVlcnkiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRIZWlnaHQiLCJpbm5lckhlaWdodCIsImdldFZhbCIsIm91dGVySGVpZ2h0Iiwib3V0ZXJXaWR0aCIsInNldFBvc2l0aW9uIiwidGFyZ2V0IiwicGFyZW50cyIsImlucHV0cyIsInNoaWZ0S2V5Iiwic2V0VGltZW91dCIsInNob3ciLCJyZXBsYWNlV2l0aCIsInJlbW92ZUNsYXNzIiwiaGlkZSIsInJlbW92ZSIsInRpcHN5IiwiZWxlbWVudE9wdGlvbnMiLCJob3ZlciIsInJlbW92ZUF0dHIiLCJ0aXRsZSIsImZpbmQiLCJmYWxsYmFjayIsIm9mZnNldCIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0IiwiZ2V0IiwiY2xhc3NOYW1lIiwidmlzaWJpbGl0eSIsImJvZHkiLCJncmF2aXR5IiwiY2hhckF0IiwiZmFkZSIsImFuaW1hdGUiLCJzdG9wIiwiZmFkZU91dCIsIm1ldGFkYXRhIiwiYXV0b05TIiwic2Nyb2xsVG9wIiwiYXV0b1dFIiwic2Nyb2xsTGVmdCIsIlJvYmxveFRodW1icyIsIiQiLCJVc2VySUQiLCJUaHVtYm5haWxGb3JtYXRJRCIsInN1YnN0cmluZyIsIkdlbmVyYXRlQXZhdGFyVGh1bWIiLCJTdHJpbmciLCJlc2NhcGVIVE1MIiwiSW5pdFN0cmluZ1RydW5jYXRvciIsImlzSW5pdGlhbGl6ZWQiLCJmaXRTdHJpbmdTcGFuIiwicGFkZGluZyIsImFwcGVuZENoaWxkIiwiZml0U3RyaW5nVG9XaWR0aCIsImlubmVySFRNTCIsImZpdFN0cmluZ1RvV2lkdGhTYWZlIiwibGFzdEluZGV4T2YiLCJsYXN0SW5kZXgiLCJpc0Zpbml0ZSIsImhhc093blByb3BlcnR5IiwidmFsdWVPZiIsIk51bWJlciIsIkJvb2xlYW4iLCJFcnJvciIsIlN5cyIsIkJyb3dzZXIiLCJXZWJLaXQiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJhZ2VudCIsInBhcnNlRmxvYXQiLCJuYW1lIiwiR29vZ2xlQW5hbHl0aWNzRXZlbnRzIiwiRmlyZUV2ZW50IiwiX2dhcSIsImNvbmNhdCIsIkZpeGVkVUkiLCJwYWdlWU9mZnNldCIsImd1dHRlckFkc0VuYWJsZWQiLCJzY3JvbGwiLCJpbm5lcldpZHRoIiwidG9Mb3dlckNhc2UiLCJsb2FkIiwicmVzaXplIiwiaXNNb2JpbGUiLCJ1bmZpeEhlYWRlciIsImNvb2tpZSIsImV4cGlyZXMiLCJ0b1VUQ1N0cmluZyIsInNldFRpbWUiLCJnZXRUaW1lIiwicGF0aCIsImRvbWFpbiIsInNlY3VyZSIsImVuY29kZVVSSUNvbXBvbmVudCIsInRyaW0iLCJkZWNvZGVVUklDb21wb25lbnQiLCJSb2Jsb3hKU09OQ29va2llIiwiX2Nvb2tpZW5hbWUiLCJnZXRKU09OQ29va2llIiwic2V0SlNPTkNvb2tpZSIsInJlbW92ZUpTT05Db29raWUiLCJKU09OQ29va2llIiwiRGVsZXRlIiwiU2V0T2JqIiwiU2V0SlNPTiIsIkdldE9iaiIsIkdldEpTT04iLCJYc3JmVG9rZW4iLCJhbGxVcmxzRW5hYmxlZCIsImFqYXhQcmVmaWx0ZXIiLCJkYXRhVHlwZSIsInVybCIsInBhcmFtIiwidG9rZW4iLCJlcnJvciIsInN0YXR1cyIsImdldFJlc3BvbnNlSGVhZGVyIiwiYWpheCIsInNldFRva2VuIiwiZ2V0VG9rZW4iLCJhZGRFbmFibGVkVXJsIiwiUkJYQmFzZUV2ZW50TGlzdGVuZXIiLCJldmVudEtleSIsImV2ZW50cyIsInByb3h5IiwibG9jYWxDb3B5IiwiaGFuZGxlRXZlbnQiLCJkaXN0aWxsRGF0YSIsImNvbnNvbGUiLCJsb2ciLCJmaXJlRXZlbnQiLCJSb2Jsb3hFdmVudE1hbmFnZXIiLCJSZWdFeHAiLCJleGVjIiwiZW5hYmxlZCIsImluaXRpYWxpemVkIiwiZXZlbnRRdWV1ZSIsImluaXRpYWxpemUiLCJ0cmlnZ2VyRXZlbnQiLCJldmVudE5hbWUiLCJhcmdzIiwiZ2V0TWFya2V0aW5nR3VpZCIsImJyb3dzZXJpZCIsImd1aWQiLCJ0cmlnZ2VyIiwicmVnaXN0ZXJDb29raWVTdG9yZUV2ZW50IiwiaW5zZXJ0RGF0YVN0b3JlS2V5VmFsdWVQYWlyIiwibW9uaXRvckNvb2tpZVN0b3JlIiwiQ2xpZW50IiwibG9jYXRpb24iLCJwcm90b2NvbCIsIkNyZWF0ZUxhdW5jaGVyIiwiR2V0S2V5VmFsdWUiLCJ1c2VyVHlwZSIsInVzZXJJZCIsIlNldEtleVZhbHVlIiwiUmVsZWFzZUxhdW5jaGVyIiwiUm9ibG94TGlzdGVuZXIiLCJldmVudFRvU3RyaW5nIiwiZGF0YUtleSIsInJlc3RVcmwiLCJhcmciLCJLb250YWdlbnRMaXN0ZW5lciIsIkFQSUtleSIsIlN0YWdpbmdBUElLZXkiLCJTdGFnaW5nRXZlbnRzIiwidHMiLCJ1c2VyX2lwIiwiYWdlIiwiZ2VuZGVyIiwidG90YWwiLCJyb3VuZCIsInByb2R1Y3ROYW1lIiwicHJvdmlkZXIiLCJjYXRlZ29yeSIsInRyYWNraW5nIiwic2hvcnR0cmFja2luZyIsInRyYWNraW5ndGFnIiwiZXZlbnRUeXBlIiwib3MiLCJwbGFjZUlkIiwiZXhwZXJpbWVudCIsInZhcmlhdGlvbiIsInBhZ2UiLCJvcHQxIiwib3B0MiIsImluc3RhbGxlZCIsInNvdXJjZVR5cGUiLCJzb3VyY2UiLCJjYW1wYWlnbiIsIm1lZGl1bSIsIm1lcmNoYW50IiwiY2FyZFZhbHVlIiwiYWN0aW9uIiwiaXNTdGFnaW5nRXZlbnQiLCJzdGFnaW5nIiwic3QxIiwiR29vZ2xlTGlzdGVuZXIiLCJvcHRfbGFiZWwiLCJvcHRfdmFsdWUiLCJNb25nb0xpc3RlbmVyIiwic2hhcmQiLCJkZWZhdWx0U2hhcmQiLCJkYXRhTWFwIiwibXNnIiwibGluZSIsInVhIiwiZ2V0Q2F0ZWdvcnlGcm9tRXZlbnROYW1lIiwiaXAiLCJjbGllbnRJcEFkZHJlc3MiLCJsb2dnaW5nVVJJIiwianNvbnBDYWxsYmFjayIsImNhbGxiYWNrIiwiU2VhcmNoVmlzaW9uTGlzdGVuZXIiLCJlc3Z0a192IiwiZXN2dGtfZXN2aWQiLCJldmVudCIsIm9yZGVyaWQiLCJlc3Z0a190cmFjayIsIlNpdGVUb3VjaEV2ZW50IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsImlzTmFOIiwidXNlTG9jYWxTdG9yYWdlIiwicmVtb3ZlSXRlbSIsInNldEl0ZW0iLCJkYXRlRGlmZlRocmVzaG9sZEluSG91cnMiLCJ1cGRhdGVMYXN0QWN0aXZpdHlBbmRGaXJlRXZlbnQiLCJnZXRMYXN0QWN0aXZpdHkiLCJzZXRMYXN0QWN0aXZpdHkiLCJKU0Vycm9yVHJhY2tlciIsInNob3dBbGVydCIsImRlZmF1bHRQaXhlbCIsImludGVybmFsRXZlbnRMaXN0ZW5lclBpeGVsRW5hYmxlZCIsImphdmFzY3JpcHRTdGFja1RyYWNlRW5hYmxlZCIsImFkZE9uRXJyb3JFdmVudEhhbmRsZXIiLCJlcnJvckhhbmRsZXIiLCJsb2dFeGNlcHRpb24iLCJvbmVycm9yIiwicHJvY2Vzc0V4Y2VwdGlvbiIsImZpcmVHQVBpeGVsIiwiZGlzdGlsbEdBRGF0YSIsInNob3dFcnJvck1lc3NhZ2UiLCJjcmVhdGVVUkwiLCJzdHVkaW8yQWxlcnRNb2RhbCIsInNob3dQcm9tcHQiLCJ1cGRhdGVTdHVkaW9BbGVydFVzZXJQcmVmZXJlbmNlIiwiYmFja2dyb3VuZENvbG9yIiwiaXNJREUiLCJjbGljayIsInRyeVRvRG93bmxvYWQiLCJvSUZybSIsImdldEVsZW1lbnRCeUlkIiwibG9nU3RhdGlzdGljcyIsIlR5cGUiLCJyZWdpc3Rlck5hbWVzcGFjZSIsIl9pbnN0YWxsSG9zdCIsIl9pbnN0YWxsU3VjY2VzcyIsIl9DTFNJRCIsIl9jb250aW51YXRpb24iLCJfc2tpcCIsIl9pc0lERSIsIl9pc1JvYmxveEJyb3dzZXIiLCJfaXNQbGFjZUxhdW5jaCIsIl9zaWxlbnRNb2RlRW5hYmxlZCIsIl9icmluZ0FwcFRvRnJvbnRFbmFibGVkIiwiX251bUxvY2tzIiwiX2xvZ1RpbWluZyIsIl9sb2dTdGFydFRpbWUiLCJfbG9nRW5kVGltZSIsIl9oaWRkZW5Nb2RlRW5hYmxlZCIsIl9ydW5JbnN0YWxsQUJUZXN0IiwiR2V0SW5zdGFsbEhvc3QiLCJBY3RpdmVYT2JqZWN0IiwiSW5zdGFsbEhvc3QiLCJHZXRfSW5zdGFsbEhvc3QiLCJpbml0Q2xpZW50UHJvcHMiLCJIZWxsbyIsImV4dGVybmFsIiwiSXNSb2Jsb3hBcHBJREUiLCJpc1JvYmxveEJyb3dzZXIiLCJyb2Jsb3hCcm93c2VySW5zdGFsbEhvc3QiLCJJc1JvYmxveFByb3h5SW5zdGFsbGVkIiwiSXNSb2Jsb3hJbnN0YWxsZWQiLCJTZXRTdGFydEluSGlkZGVuTW9kZSIsIlVuaGlkZUFwcCIsIlVwZGF0ZSIsIldhaXRGb3JSb2Jsb3giLCJfY2FuY2VsbGVkIiwiSW1wbGVtZW50c1Byb3h5IiwiSW5zdGFsbGF0aW9uSW5zdHJ1Y3Rpb25zIiwicnVuSW5zdGFsbEFCVGVzdCIsImFwcFZlcnNpb24iLCJjaHJvbWUiLCJoYXNoIiwicGxheV9wbGFjZUlkIiwiX29udGltZXIiLCJSZXN1bWVUaW1lciIsIlJlZnJlc2giLCJwbHVnaW5zIiwicmVmcmVzaCIsIl9vbkNhbmNlbCIsIk1hZFN0YXR1cyIsInJ1bm5pbmciLCJ1cGRhdGVJbnRlcnZhbCIsImZhZGVJbnRlcnZhbCIsInRpbWVvdXQiLCJmaWVsZCIsImJhY2tCdWZmZXIiLCJwYXJ0aWNpcGxlIiwibW9kaWZpZXIiLCJzdWJqZWN0IiwibmV3TGliIiwibGliU3RyaW5nIiwicmFuZG9tIiwic3RhcnQiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJtYW51YWxVcGRhdGUiLCJ1cGRhdGUiLCJub0FuaW0iLCJmYWRlSW4iLCJSQlgiLCJSb2Jsb3hMYXVuY2hTdGF0ZXMiLCJTdGFydGluZ1NlcnZlciIsIlN0YXJ0aW5nQ2xpZW50IiwiVXBncmFkaW5nIiwiTm9uZSIsIlJvYmxveExhdW5jaCIsImxhdW5jaEdhbWVQYWdlIiwidGltZXIiLCJjbGllbnRNZXRyaWNUeXBlIiwibGF1bmNoZXIiLCJnb29nbGVBbmFseXRpY3NDYWxsYmFjayIsIl9Hb29nbGVBbmFseXRpY3NDYWxsYmFjayIsInN0YXRlIiwic2VjdXJlQXV0aGVudGljYXRlIiwiUm9ibG94UGxhY2VMYXVuY2hlclNlcnZpY2UiLCJMb2dKb2luQ2xpY2siLCJyZXF1ZXN0IiwiUmVxdWVzdEdhbWUiLCJnZXRKU09OIiwiaXNQYXJ0eUxlYWRlciIsIlJlcXVlc3RQbGF5V2l0aFBhcnR5IiwicGFydHlHdWlkIiwiZ2FtZUlkIiwiUmVxdWVzdEdyb3VwQnVpbGRHYW1lIiwiUmVxdWVzdEZvbGxvd1VzZXIiLCJSZXF1ZXN0R2FtZUpvYiIsImdhbWVKb2JJZCIsIkNoZWNrR2FtZUpvYlN0YXR1cyIsImpvYklkIiwiY2hlY2tSb2Jsb3hJbnN0YWxsIiwiUGxhY2VMYXVuY2hlciIsIlN0YXJ0R2FtZSIsIlNlbGVuaXVtVGVzdE1vZGUiLCJ1cmNoaW5UcmFja2VyIiwiSXNSb2Jsb3hBQkFwcCIsIklzUm9ibG94MkFwcCIsIkF1dGhlbnRpY2F0aW9uVGlja2V0IiwiUHV0X0F1dGhlbnRpY2F0aW9uVGlja2V0IiwiU2V0RWRpdE1vZGUiLCJTZXRTaWxlbnRNb2RlRW5hYmxlZCIsIlZpZGVvUHJlUm9sbCIsInZpZGVvSW5pdGlhbGl6ZWQiLCJpc1BsYXlpbmciLCJDaGVja0dhbWVTdGFydGVkIiwiQnJpbmdBcHBUb0Zyb250IiwicGxheUZyb21VcmwiLCJtZXNzYWdlIiwiSXNHYW1lU3RhcnRlZCIsIkdldF9HYW1lU3RhcnRlZCIsIl9zaG93RGlhbG9nIiwiX3VwZGF0ZVN0YXR1cyIsIkNoZWNrUm9ibG94SW5zdGFsbCIsIl9wb3B1cElEIiwiX3BvcHVwIiwiX3BvcHVwT3B0aW9ucyIsInNob3dWaWRlb1ByZVJvbGwiLCJpc0V4Y2x1ZGVkIiwiY29ycmVjdElFTW9kYWxQb3NpdGlvbiIsImxvZ1ZpZGVvUHJlUm9sbCIsIkNhbmNlbExhdW5jaCIsIl9yZXBvcnREdXJhdGlvbiIsImFzeW5jIiwiY2FjaGUiLCJzdWNjZXNzIiwiX29uR2FtZVN0YXR1cyIsImpvaW5TY3JpcHRVcmwiLCJhdXRoZW50aWNhdGlvblVybCIsImF1dGhlbnRpY2F0aW9uVGlja2V0IiwiX29uR2FtZUVycm9yIiwiX3N0YXJ0VXBkYXRlUG9sbGluZyIsIklzVXBUb0RhdGUiLCJHZXRfSXNVcFRvRGF0ZSIsIlByZVN0YXJ0R2FtZSIsIl9vblVwZGF0ZVN0YXR1cyIsIl9vblVwZGF0ZUVycm9yIiwiQ2hlY2tVcGRhdGVTdGF0dXMiLCJQYXJ0eSIsIkFtSUxlYWRlciIsIl9vbkVycm9yIiwiZGlzcG9zZSIsImNhbGxCYXNlTWV0aG9kIiwib3BlblZpZGVvUHJlcm9sbDIiLCJmbGFzaENoZWNrIiwibWltZVR5cGVzIiwiZGVzY3JpcHRpb24iLCJuZXdWYWx1ZSIsInZpZGVvU3RhcnRlZCIsInZpZGVvQ29tcGxldGVkIiwidmlkZW9Ta2lwcGVkIiwidmlkZW9DYW5jZWxsZWQiLCJ2aWRlb0Vycm9yZWQiLCJ2aWRlb09wdGlvbnMiLCJrZXkiLCJjb21wYW5pb25JZCIsIm15dnBhaWRhZCIsImxvYWRpbmdCYXJNYXhUaW1lIiwibG9hZGluZ0JhckN1cnJlbnRUaW1lIiwibG9hZGluZ0JhckludGVydmFsSUQiLCJsb2FkaW5nQmFySUQiLCJsb2FkaW5nQmFySW5uZXJJRCIsImxvYWRpbmdCYXJQZXJjZW50YWdlSUQiLCJ2aWRlb0xvYWRpbmdUaW1lb3V0IiwidmlkZW9QbGF5aW5nVGltZW91dCIsInZpZGVvTG9nTm90ZSIsImxvZ3NFbmFibGVkIiwiZXhjbHVkZWRQbGFjZUlkcyIsInNwZWNpZmljQWRPblBsYWNlUGFnZUVuYWJsZWQiLCJzcGVjaWZpY0FkT25QbGFjZVBhZ2VJZCIsInNwZWNpZmljQWRPblBsYWNlUGFnZUNhdGVnb3J5IiwiY2hlY2tFbGlnaWJpbGl0eSIsIl9fYWRhcHR2X18iLCJjYXRlZ29yaWVzIiwiYWRzIiwidnBhaWQiLCJWUEFJREFkIiwiTG9hZGluZ0JhciIsIlZQQUlERXZlbnQiLCJvbiIsIkFkTG9hZGVkIiwiX29uVmlkZW9Mb2FkZWQiLCJBZFN0YXJ0ZWQiLCJfb25WaWRlb1N0YXJ0IiwiQWRTdG9wcGVkIiwiX29uVmlkZW9Db21wbGV0ZSIsIkFkRXJyb3IiLCJfb25WaWRlb0Vycm9yIiwiaW5pdEFkIiwibG9hZGluZ0JhckludGVydmFsIiwiY2FuY2VsIiwic2tpcCIsInN0b3BBZCIsInN0YXJ0QWQiLCJiYXJzIiwiYmFySUQiLCJpbm5lckJhcklEIiwicGVyY2VudGFnZUlEIiwicGVyY2VudENvbXBsZXRlIiwic3Bs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QUFVQSxDQUFDLEdBQUcsQ0FBZCxHQUFrQlEsQ0FBQyxHQUFHMk0sQ0FBQyxDQUFDLE1BQU1wTixDQUFQLENBQUQsQ0FBV2dKLEtBQVgsRUFBdEIsRUFBMEM1SSxDQUFDLEdBQUdnRixJQUFJLENBQUNtUSxLQUFMLENBQVc5VSxDQUFDLEdBQUdSLENBQWYsQ0FBOUMsRUFBaUVtTixDQUFDLENBQUMsTUFBTWpOLENBQUMsQ0FBQ2tuQixVQUFULENBQUQsQ0FBc0IxYSxPQUF0QixDQUE4QjtBQUNqRzNELFdBQUssRUFBRTVJO0FBRDBGLEtBQTlCLEVBRXBFLEdBRm9FLEVBRS9ELE9BRitELENBQWpFLEVBRVlELENBQUMsQ0FBQ21uQixZQUFGLElBQWtCbGEsQ0FBQyxDQUFDLE1BQU1qTixDQUFDLENBQUNtbkIsWUFBVCxDQUFELENBQXdCL21CLE1BQXhCLEdBQWlDLENBQW5ELElBQXdENk0sQ0FBQyxDQUFDLE1BQU1qTixDQUFDLENBQUNtbkIsWUFBVCxDQUFELENBQXdCL2UsSUFBeEIsQ0FBNkJuRCxJQUFJLENBQUNtUSxLQUFMLENBQVd0VixDQUFDLEdBQUcsR0FBZixJQUFzQixHQUFuRCxDQUZwRSxFQUU2SEUsQ0FBQyxDQUFDb25CLGVBQUYsR0FBb0J0bkIsQ0FGdEosQ0FBRDtBQUdIO0FBcEJZLENBQWpCLEMsQ0FzQkEiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvYXBwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9yZXF1aXJlKCcuL2Jvb3RzdHJhcCcpO1xuXG47IC8vLyBmaWxlczogcm9ibG94LmpzLCBqcXVlcnkuanNvbi0yLjIuanMsIGpxdWVyeS5zaW1wbGVtb2RhbC0xLjMuNS5qcywganF1ZXJ5LnRpcHN5LmpzLCBBamF4QXZhdGFyVGh1bWJuYWlsLmpzLCBleHRlbnNpb25zL3N0cmluZy5qcywgU3RyaW5nVHJ1bmNhdG9yLm1pbi5qcywganNvbjIubWluLmpzLCB3ZWJraXQuanMsIEdvb2dsZUFuYWx5dGljcy9Hb29nbGVBbmFseXRpY3NFdmVudHMuanMsIE1hc3RlclBhZ2VVSS5qcywganF1ZXJ5LmNvb2tpZS5qcywganF1ZXJ5Lmpzb25jb29raWUuanMsIFhzcmZUb2tlbi5qcywgUm9ibG94RXZlbnRNYW5hZ2VyLmpzLCBSb2Jsb3hFdmVudExpc3RlbmVyLmpzLCBLb250YWdlbnRFdmVudExpc3RlbmVyLmpzLCBHb29nbGVFdmVudExpc3RlbmVyLmpzLCBNb25nb0V2ZW50TGlzdGVuZXIuanMsIFNlYXJjaFZpc2lvbkxpc3RlbmVyLmpzLCBTaXRlVG91Y2hFdmVudC5qcywgSlNFcnJvclRyYWNrZXIuanMsIFN0dWRpbzJBbGVydC5qcywgQ2xpZW50SW5zdGFsbGVyLmpzLCBJbnN0YWxsYXRpb25JbnN0cnVjdGlvbnMuanMsIE1hZFN0YXR1cy5qcywgUGxhY2VMYXVuY2hlci5qcywgVmlkZW9QcmVSb2xsLmpzXG5cbjsgLy8vIHJvYmxveC5qc1xuKGZ1bmN0aW9uKG4sIHQpIHtcbiAgICBmdW5jdGlvbiBwKG4sIGkpIHtcbiAgICAgICAgdmFyIHIgPSBpLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgZm9yIChpID0gci5zaGlmdCgpOyByLmxlbmd0aCA+IDA7IG4gPSBuW2ldLCBpID0gci5zaGlmdCgpKVxuICAgICAgICAgICAgaWYgKG5baV0gPT09IHQpIHJldHVybiB0O1xuICAgICAgICByZXR1cm4gbltpXVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGsobiwgaSwgcikge1xuICAgICAgICB2YXIgdSA9IGkuc3BsaXQoXCIuXCIpO1xuICAgICAgICBmb3IgKGkgPSB1LnNoaWZ0KCk7IHUubGVuZ3RoID4gMDsgbiA9IG5baV0sIGkgPSB1LnNoaWZ0KCkpIG5baV0gPT09IHQgJiYgKG5baV0gPSB7fSk7XG4gICAgICAgIG5baV0gPSByXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbnQobiwgdCkge1xuICAgICAgICB2YXIgaSA9IGYuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG4gICAgICAgIGkuaHJlZiA9IG4sIGkucmVsID0gXCJzdHlsZXNoZWV0XCIsIGkudHlwZSA9IFwidGV4dC9jc3NcIiwgdS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLCB1KSwgdCgpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZyhuLCB0KSB7XG4gICAgICAgIHZhciBpID0gZi5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgICBpLnR5cGUgPSBcInRleHQvamF2YXNjcmlwdFwiLCBpLnNyYyA9IG4sIGkub25sb2FkID0gaS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGkucmVhZHlTdGF0ZSAmJiBpLnJlYWR5U3RhdGUgIT0gXCJsb2FkZWRcIiAmJiBpLnJlYWR5U3RhdGUgIT0gXCJjb21wbGV0ZVwiIHx8ICh0KCksIGkub25sb2FkID0gaS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsKVxuICAgICAgICB9LCB1LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGksIHUpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZChuKSB7XG4gICAgICAgIHJldHVybiBuLnNwbGl0KFwiLlwiKS5wb3AoKS5zcGxpdChcIj9cIikuc2hpZnQoKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG8obikge1xuICAgICAgICByZXR1cm4gbi5pbmRleE9mKFwiLmpzXCIpIDwgMCA/IG4gOiBuLmluZGV4T2Yoci5tb2R1bGVQYXRoKSA+PSAwID8gbi5zcGxpdChyLm1vZHVsZVBhdGgpLnBvcCgpLnNwbGl0KFwiLmpzXCIpLnNoaWZ0KCkucmVwbGFjZShcIi9cIiwgXCIuXCIpIDogblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHYobikge1xuICAgICAgICB2YXIgdCwgaTtcbiAgICAgICAgcmV0dXJuIHQgPSBuLmluZGV4T2YoXCIuanNcIikgPj0gMCB8fCBuLmluZGV4T2YoXCIuY3NzXCIpID49IDAgPyBuIDogci5iYXNlVXJsICsgci5tb2R1bGVQYXRoICsgbi5yZXBsYWNlKFwiLlwiLCBcIi9cIikgKyBcIi5qc1wiLCBpID0gci52ZXJzaW9uc1t0XSB8fCAxLCB0ICsgXCI/dj1cIiArIGlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzKG4pIHtcbiAgICAgICAgZm9yICh2YXIgciwgdSA9IFtdLCBpID0gMDsgaSA8IG4ubGVuZ3RoOyBpKyspIHIgPSBwKFJvYmxveCwgbyhuW2ldKSksIHIgIT09IHQgJiYgdS5wdXNoKHIpO1xuICAgICAgICByZXR1cm4gdVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGUobikge1xuICAgICAgICB2YXIgdCA9IGlbbl07XG4gICAgICAgIGlmICh0LmxvYWRlZCAmJiB0LmRlcHNMb2FkZWQpXG4gICAgICAgICAgICB3aGlsZSAodC5saXN0ZW5lcnMubGVuZ3RoID4gMCkgdC5saXN0ZW5lcnMuc2hpZnQoKSgpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYShuLCB1KSB7XG4gICAgICAgIHZhciBmLCBzLCBoO1xuICAgICAgICBpZiAoIWIobikgfHwgci5leHRlcm5hbFJlc291cmNlcy50b1N0cmluZygpLmluZGV4T2YobikgPj0gMCkgcmV0dXJuIHUoKTtcbiAgICAgICAgZiA9IG8obiksIGlbZl0gPT09IHQgPyAoaVtmXSA9IHtcbiAgICAgICAgICAgIGxvYWRlZDogITEsXG4gICAgICAgICAgICBkZXBzTG9hZGVkOiAhMCxcbiAgICAgICAgICAgIGxpc3RlbmVyczogW11cbiAgICAgICAgfSwgaVtmXS5saXN0ZW5lcnMucHVzaCh1KSwgcyA9IHYoZiksIGggPSBkKHMpID09IFwiY3NzXCIgPyBudCA6IGcsIGgocywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpW2ZdLmxvYWRlZCA9ICEwLCBlKGYpXG4gICAgICAgIH0pKSA6IChpW2ZdLmxpc3RlbmVycy5wdXNoKHUpLCBlKGYpKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGgobiwgdCkge1xuICAgICAgICB2YXIgciA9IG4uc2hpZnQoKSxcbiAgICAgICAgICAgIGkgPSBuLmxlbmd0aCA9PSAwID8gdCA6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGgobiwgdClcbiAgICAgICAgICAgIH07XG4gICAgICAgIGEociwgaSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsKG4sIHQpIHtcbiAgICAgICAgYyhuKSB8fCAobiA9IFtuXSk7XG4gICAgICAgIHZhciBpID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0LmFwcGx5KG51bGwsIHMobikpXG4gICAgICAgIH07XG4gICAgICAgIGgobi5zbGljZSgwKSwgaSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB5KG4sIHQsIHIpIHtcbiAgICAgICAgdyh0KSA/IChyID0gdCwgdCA9IFtdKSA6IGModCkgfHwgKHQgPSBbdF0pLCBpW25dID0gaVtuXSB8fCB7XG4gICAgICAgICAgICBsb2FkZWQ6ICEwLFxuICAgICAgICAgICAgbGlzdGVuZXJzOiBbXVxuICAgICAgICB9LCBpW25dLmRlcHNMb2FkZWQgPSAhMSwgaVtuXS5saXN0ZW5lcnMudW5zaGlmdChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGsoUm9ibG94LCBuLCByLmFwcGx5KG51bGwsIHModCkpKVxuICAgICAgICB9KSwgbCh0LCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlbbl0uZGVwc0xvYWRlZCA9ICEwLCBlKG4pXG4gICAgICAgIH0pXG4gICAgfVxuICAgIHZhciBmID0gbi5kb2N1bWVudCxcbiAgICAgICAgdSA9IGYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIilbMF0sXG4gICAgICAgIGIgPSBmdW5jdGlvbihuKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIG4gPT0gXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBjID0gZnVuY3Rpb24obikge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKSA9PSBcIltvYmplY3QgQXJyYXldXCJcbiAgICAgICAgfSxcbiAgICAgICAgdyA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobikgPT0gXCJbb2JqZWN0IEZ1bmN0aW9uXVwiXG4gICAgICAgIH0sXG4gICAgICAgIGkgPSB7fSxcbiAgICAgICAgciA9IHtcbiAgICAgICAgICAgIGJhc2VVcmw6IFwiL1wiLFxuICAgICAgICAgICAgbW9kdWxlUGF0aDogXCJqcy9tb2R1bGVzL1wiLFxuICAgICAgICAgICAgdmVyc2lvbnM6IHt9LFxuICAgICAgICAgICAgZXh0ZXJuYWxSZXNvdXJjZXM6IFtdXG4gICAgICAgIH07XG4gICAgdHlwZW9mIFJvYmxveCA9PSBcInVuZGVmaW5lZFwiICYmIChSb2Jsb3ggPSB7fSksIFJvYmxveC5jb25maWcgPSByLCBSb2Jsb3gucmVxdWlyZSA9IGwsIFJvYmxveC5kZWZpbmUgPSB5XG59KSh3aW5kb3cpO1xuXG47IC8vLyBqcXVlcnkuanNvbi0yLjIuanNcbihmdW5jdGlvbihuKSB7XG4gICAgbi50b0pTT04gPSBmdW5jdGlvbih0KSB7XG4gICAgICAgIHZhciBzLCBvLCBwLCBoLCBmLCBlLCByLCB2LCBjLCBhLCB1LCBsLCBpLCB5O1xuICAgICAgICBpZiAodHlwZW9mIEpTT04gPT0gXCJvYmplY3RcIiAmJiBKU09OLnN0cmluZ2lmeSkgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpO1xuICAgICAgICBpZiAoaSA9IHR5cGVvZiB0LCB0ID09PSBudWxsKSByZXR1cm4gXCJudWxsXCI7XG4gICAgICAgIGlmIChpID09IFwidW5kZWZpbmVkXCIpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChpID09IFwibnVtYmVyXCIgfHwgaSA9PSBcImJvb2xlYW5cIikgcmV0dXJuIHQgKyBcIlwiO1xuICAgICAgICBpZiAoaSA9PSBcInN0cmluZ1wiKSByZXR1cm4gbi5xdW90ZVN0cmluZyh0KTtcbiAgICAgICAgaWYgKGkgPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0LnRvSlNPTiA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBuLnRvSlNPTih0LnRvSlNPTigpKTtcbiAgICAgICAgICAgIGlmICh0LmNvbnN0cnVjdG9yID09PSBEYXRlKSByZXR1cm4gcyA9IHQuZ2V0VVRDTW9udGgoKSArIDEsIHMgPCAxMCAmJiAocyA9IFwiMFwiICsgcyksIG8gPSB0LmdldFVUQ0RhdGUoKSwgbyA8IDEwICYmIChvID0gXCIwXCIgKyBvKSwgcCA9IHQuZ2V0VVRDRnVsbFllYXIoKSwgaCA9IHQuZ2V0VVRDSG91cnMoKSwgaCA8IDEwICYmIChoID0gXCIwXCIgKyBoKSwgZiA9IHQuZ2V0VVRDTWludXRlcygpLCBmIDwgMTAgJiYgKGYgPSBcIjBcIiArIGYpLCBlID0gdC5nZXRVVENTZWNvbmRzKCksIGUgPCAxMCAmJiAoZSA9IFwiMFwiICsgZSksIHIgPSB0LmdldFVUQ01pbGxpc2Vjb25kcygpLCByIDwgMTAwICYmIChyID0gXCIwXCIgKyByKSwgciA8IDEwICYmIChyID0gXCIwXCIgKyByKSwgJ1wiJyArIHAgKyBcIi1cIiArIHMgKyBcIi1cIiArIG8gKyBcIlRcIiArIGggKyBcIjpcIiArIGYgKyBcIjpcIiArIGUgKyBcIi5cIiArIHIgKyAnWlwiJztcbiAgICAgICAgICAgIGlmICh0LmNvbnN0cnVjdG9yID09PSBBcnJheSkge1xuICAgICAgICAgICAgICAgIGZvciAodiA9IFtdLCBjID0gMDsgYyA8IHQubGVuZ3RoOyBjKyspIHYucHVzaChuLnRvSlNPTih0W2NdKSB8fCBcIm51bGxcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiW1wiICsgdi5qb2luKFwiLFwiKSArIFwiXVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhID0gW107XG4gICAgICAgICAgICBmb3IgKHUgaW4gdCkge1xuICAgICAgICAgICAgICAgIGlmIChpID0gdHlwZW9mIHUsIGkgPT0gXCJudW1iZXJcIikgbCA9ICdcIicgKyB1ICsgJ1wiJztcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpID09IFwic3RyaW5nXCIpIGwgPSBuLnF1b3RlU3RyaW5nKHUpO1xuICAgICAgICAgICAgICAgIGVsc2UgY29udGludWU7XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRbdV0gIT0gXCJmdW5jdGlvblwiICYmICh5ID0gbi50b0pTT04odFt1XSksIGEucHVzaChsICsgXCI6XCIgKyB5KSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIntcIiArIGEuam9pbihcIiwgXCIpICsgXCJ9XCJcbiAgICAgICAgfVxuICAgIH0sIG4uZXZhbEpTT04gPSBmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgSlNPTiA9PSBcIm9iamVjdFwiICYmIEpTT04ucGFyc2UgPyBKU09OLnBhcnNlKG4pIDogZXZhbChcIihcIiArIG4gKyBcIilcIilcbiAgICB9LCBuLnNlY3VyZUV2YWxKU09OID0gZnVuY3Rpb24obikge1xuICAgICAgICBpZiAodHlwZW9mIEpTT04gPT0gXCJvYmplY3RcIiAmJiBKU09OLnBhcnNlKSByZXR1cm4gSlNPTi5wYXJzZShuKTtcbiAgICAgICAgdmFyIHQgPSBuO1xuICAgICAgICBpZiAodCA9IHQucmVwbGFjZSgvXFxcXFtcIlxcXFxcXC9iZm5ydHVdL2csIFwiQFwiKSwgdCA9IHQucmVwbGFjZSgvXCJbXlwiXFxcXFxcblxccl0qXCJ8dHJ1ZXxmYWxzZXxudWxsfC0/XFxkKyg/OlxcLlxcZCopPyg/OltlRV1bK1xcLV0/XFxkKyk/L2csIFwiXVwiKSwgdCA9IHQucmVwbGFjZSgvKD86Xnw6fCwpKD86XFxzKlxcWykrL2csIFwiXCIpLCAvXltcXF0sOnt9XFxzXSokLy50ZXN0KHQpKSByZXR1cm4gZXZhbChcIihcIiArIG4gKyBcIilcIik7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcIkVycm9yIHBhcnNpbmcgSlNPTiwgc291cmNlIGlzIG5vdCB2YWxpZC5cIik7XG4gICAgfSwgbi5xdW90ZVN0cmluZyA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgcmV0dXJuIG4ubWF0Y2godCkgPyAnXCInICsgbi5yZXBsYWNlKHQsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgIHZhciB0ID0gaVtuXTtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdCA9PSBcInN0cmluZ1wiID8gdCA6ICh0ID0gbi5jaGFyQ29kZUF0KCksIFwiXFxcXHUwMFwiICsgTWF0aC5mbG9vcih0IC8gMTYpLnRvU3RyaW5nKDE2KSArICh0ICUgMTYpLnRvU3RyaW5nKDE2KSlcbiAgICAgICAgfSkgKyAnXCInIDogJ1wiJyArIG4gKyAnXCInXG4gICAgfTtcbiAgICB2YXIgdCA9IC9bXCJcXFxcXFx4MDAtXFx4MWZcXHg3Zi1cXHg5Zl0vZyxcbiAgICAgICAgaSA9IHtcbiAgICAgICAgICAgIFwiXFxiXCI6IFwiXFxcXGJcIixcbiAgICAgICAgICAgIFwiXFx0XCI6IFwiXFxcXHRcIixcbiAgICAgICAgICAgIFwiXFxuXCI6IFwiXFxcXG5cIixcbiAgICAgICAgICAgIFwiXFxmXCI6IFwiXFxcXGZcIixcbiAgICAgICAgICAgIFwiXFxyXCI6IFwiXFxcXHJcIixcbiAgICAgICAgICAgICdcIic6ICdcXFxcXCInLFxuICAgICAgICAgICAgXCJcXFxcXCI6IFwiXFxcXFxcXFxcIlxuICAgICAgICB9XG59KShqUXVlcnkpO1xuXG47IC8vLyBqcXVlcnkuc2ltcGxlbW9kYWwtMS4zLjUuanNcbihmdW5jdGlvbihuKSB7XG4gICAgdmFyIGkgPSBuLmJyb3dzZXIubXNpZSAmJiBwYXJzZUludChuLmJyb3dzZXIudmVyc2lvbikgPT0gNiAmJiB0eXBlb2Ygd2luZG93LlhNTEh0dHBSZXF1ZXN0ICE9IFwib2JqZWN0XCIsXG4gICAgICAgIHIgPSAhMSxcbiAgICAgICAgdCA9IFtdO1xuICAgIG4ubW9kYWwgPSBmdW5jdGlvbih0LCBpKSB7XG4gICAgICAgIHJldHVybiBuLm1vZGFsLmltcGwuaW5pdCh0LCBpKVxuICAgIH0sIG4ubW9kYWwuY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgbi5tb2RhbC5pbXBsLmNsb3NlKClcbiAgICB9LCBuLmZuLm1vZGFsID0gZnVuY3Rpb24odCkge1xuICAgICAgICByZXR1cm4gbi5tb2RhbC5pbXBsLmluaXQodGhpcywgdClcbiAgICB9LCBuLm1vZGFsLmRlZmF1bHRzID0ge1xuICAgICAgICBhcHBlbmRUbzogXCJib2R5XCIsXG4gICAgICAgIGZvY3VzOiAhMCxcbiAgICAgICAgb3BhY2l0eTogNTAsXG4gICAgICAgIG92ZXJsYXlJZDogXCJzaW1wbGVtb2RhbC1vdmVybGF5XCIsXG4gICAgICAgIG92ZXJsYXlDc3M6IHt9LFxuICAgICAgICBjb250YWluZXJJZDogXCJzaW1wbGVtb2RhbC1jb250YWluZXJcIixcbiAgICAgICAgY29udGFpbmVyQ3NzOiB7fSxcbiAgICAgICAgZGF0YUlkOiBcInNpbXBsZW1vZGFsLWRhdGFcIixcbiAgICAgICAgZGF0YUNzczoge30sXG4gICAgICAgIG1pbkhlaWdodDogbnVsbCxcbiAgICAgICAgbWluV2lkdGg6IG51bGwsXG4gICAgICAgIG1heEhlaWdodDogbnVsbCxcbiAgICAgICAgbWF4V2lkdGg6IG51bGwsXG4gICAgICAgIGF1dG9SZXNpemU6ICExLFxuICAgICAgICBhdXRvUG9zaXRpb246ICEwLFxuICAgICAgICB6SW5kZXg6IDFlMyxcbiAgICAgICAgY2xvc2U6ICEwLFxuICAgICAgICBjbG9zZUhUTUw6ICc8YSBjbGFzcz1cIm1vZGFsQ2xvc2VJbWdcIiB0aXRsZT1cIkNsb3NlXCI+PC9hPicsXG4gICAgICAgIGNsb3NlQ2xhc3M6IFwic2ltcGxlbW9kYWwtY2xvc2VcIixcbiAgICAgICAgZXNjQ2xvc2U6ICEwLFxuICAgICAgICBvdmVybGF5Q2xvc2U6ICExLFxuICAgICAgICBwb3NpdGlvbjogbnVsbCxcbiAgICAgICAgcGVyc2lzdDogITEsXG4gICAgICAgIG1vZGFsOiAhMCxcbiAgICAgICAgb25PcGVuOiBudWxsLFxuICAgICAgICBvblNob3c6IG51bGwsXG4gICAgICAgIG9uQ2xvc2U6IG51bGxcbiAgICB9LCBuLm1vZGFsLmltcGwgPSB7XG4gICAgICAgIG86IG51bGwsXG4gICAgICAgIGQ6IHt9LFxuICAgICAgICBpbml0OiBmdW5jdGlvbih0LCBpKSB7XG4gICAgICAgICAgICB2YXIgciA9IHRoaXM7XG4gICAgICAgICAgICBpZiAoci5kLmRhdGEpIHJldHVybiAhMTtcbiAgICAgICAgICAgIGlmIChyLm8gPSBuLmV4dGVuZCh7fSwgbi5tb2RhbC5kZWZhdWx0cywgaSksIHIuekluZGV4ID0gci5vLnpJbmRleCwgci5vY2NiID0gITEsIHR5cGVvZiB0ID09IFwib2JqZWN0XCIpIHQgPSB0IGluc3RhbmNlb2YgalF1ZXJ5ID8gdCA6IG4odCksIHIuZC5wbGFjZWhvbGRlciA9ICExLCB0LnBhcmVudCgpLnBhcmVudCgpLnNpemUoKSA+IDAgJiYgKHQuYmVmb3JlKG4oXCI8c3Bhbj48L3NwYW4+XCIpLmF0dHIoXCJpZFwiLCBcInNpbXBsZW1vZGFsLXBsYWNlaG9sZGVyXCIpLmNzcyh7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogXCJub25lXCJcbiAgICAgICAgICAgIH0pKSwgci5kLnBsYWNlaG9sZGVyID0gITAsIHIuZGlzcGxheSA9IHQuY3NzKFwiZGlzcGxheVwiKSwgci5vLnBlcnNpc3QgfHwgKHIuZC5vcmlnID0gdC5jbG9uZSghMCkpKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0ID09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHQgPT0gXCJudW1iZXJcIikgdCA9IG4oXCI8ZGl2PjwvZGl2PlwiKS5odG1sKHQpO1xuICAgICAgICAgICAgZWxzZSByZXR1cm4gYWxlcnQoXCJTaW1wbGVNb2RhbCBFcnJvcjogVW5zdXBwb3J0ZWQgZGF0YSB0eXBlOiBcIiArIHR5cGVvZiB0KSwgcjtcbiAgICAgICAgICAgIHJldHVybiByLmNyZWF0ZSh0KSwgdCA9IG51bGwsIHIub3BlbigpLCBuLmlzRnVuY3Rpb24oci5vLm9uU2hvdykgJiYgci5vLm9uU2hvdy5hcHBseShyLCBbci5kXSksIHJcbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlOiBmdW5jdGlvbihyKSB7XG4gICAgICAgICAgICB2YXIgdSA9IHRoaXM7XG4gICAgICAgICAgICB0ID0gdS5nZXREaW1lbnNpb25zKCksIHUuby5tb2RhbCAmJiBpICYmICh1LmQuaWZyYW1lID0gbignPGlmcmFtZSBzcmM9XCJqYXZhc2NyaXB0OmZhbHNlO1wiPjwvaWZyYW1lPicpLmNzcyhuLmV4dGVuZCh1Lm8uaWZyYW1lQ3NzLCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJmaXhlZFwiLFxuICAgICAgICAgICAgICAgIGhlaWdodDogdFswXSxcbiAgICAgICAgICAgICAgICB3aWR0aDogdFsxXSxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IHUuby56SW5kZXgsXG4gICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgIGxlZnQ6IDBcbiAgICAgICAgICAgIH0pKS5hcHBlbmRUbyh1Lm8uYXBwZW5kVG8pKSwgdS5kLm92ZXJsYXkgPSBuKFwiPGRpdj48L2Rpdj5cIikuYXR0cihcImlkXCIsIHUuby5vdmVybGF5SWQpLmFkZENsYXNzKFwic2ltcGxlbW9kYWwtb3ZlcmxheVwiKS5jc3Mobi5leHRlbmQodS5vLm92ZXJsYXlDc3MsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiB1Lm8ub3BhY2l0eSAvIDEwMCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHUuby5tb2RhbCA/IHRbMF0gOiAwLFxuICAgICAgICAgICAgICAgIHdpZHRoOiB1Lm8ubW9kYWwgPyB0WzFdIDogMCxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJmaXhlZFwiLFxuICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgIHpJbmRleDogdS5vLnpJbmRleCArIDFcbiAgICAgICAgICAgIH0pKS5hcHBlbmRUbyh1Lm8uYXBwZW5kVG8pLCB1LmQuY29udGFpbmVyID0gbihcIjxkaXY+PC9kaXY+XCIpLmF0dHIoXCJpZFwiLCB1Lm8uY29udGFpbmVySWQpLmFkZENsYXNzKFwic2ltcGxlbW9kYWwtY29udGFpbmVyXCIpLmNzcyhuLmV4dGVuZCh1Lm8uY29udGFpbmVyQ3NzLCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IFwiZml4ZWRcIixcbiAgICAgICAgICAgICAgICB6SW5kZXg6IHUuby56SW5kZXggKyAyXG4gICAgICAgICAgICB9KSkuYXBwZW5kKHUuby5jbG9zZSAmJiB1Lm8uY2xvc2VIVE1MID8gbih1Lm8uY2xvc2VIVE1MKS5hZGRDbGFzcyh1Lm8uY2xvc2VDbGFzcykgOiBcIlwiKS5hcHBlbmRUbyh1Lm8uYXBwZW5kVG8pLCB1LmQud3JhcCA9IG4oXCI8ZGl2PjwvZGl2PlwiKS5hdHRyKFwidGFiSW5kZXhcIiwgLTEpLmFkZENsYXNzKFwic2ltcGxlbW9kYWwtd3JhcFwiKS5jc3Moe1xuICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgb3V0bGluZTogMCxcbiAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IFwidmlzaWJsZVwiXG4gICAgICAgICAgICB9KS5hcHBlbmRUbyh1LmQuY29udGFpbmVyKSwgdS5kLmRhdGEgPSByLmF0dHIoXCJpZFwiLCByLmF0dHIoXCJpZFwiKSB8fCB1Lm8uZGF0YUlkKS5hZGRDbGFzcyhcInNpbXBsZW1vZGFsLWRhdGFcIikuY3NzKG4uZXh0ZW5kKHUuby5kYXRhQ3NzLCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogXCJub25lXCJcbiAgICAgICAgICAgIH0pKS5hcHBlbmRUbyhcImJvZHlcIiksIHIgPSBudWxsLCB1LnNldENvbnRhaW5lckRpbWVuc2lvbnMoKSwgdS5kLmRhdGEuYXBwZW5kVG8odS5kLndyYXApLCBpICYmIHUuZml4SUUoKVxuICAgICAgICB9LFxuICAgICAgICBiaW5kRXZlbnRzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciByID0gdGhpcztcbiAgICAgICAgICAgIG4oXCIuXCIgKyByLm8uY2xvc2VDbGFzcykuYmluZChcImNsaWNrLnNpbXBsZW1vZGFsXCIsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICBuLnByZXZlbnREZWZhdWx0KCksIHIuY2xvc2UoKVxuICAgICAgICAgICAgfSksIHIuby5tb2RhbCAmJiByLm8uY2xvc2UgJiYgci5vLm92ZXJsYXlDbG9zZSAmJiByLmQub3ZlcmxheS5iaW5kKFwiY2xpY2suc2ltcGxlbW9kYWxcIiwgZnVuY3Rpb24obikge1xuICAgICAgICAgICAgICAgIG4ucHJldmVudERlZmF1bHQoKSwgci5jbG9zZSgpXG4gICAgICAgICAgICB9KSwgbihkb2N1bWVudCkuYmluZChcImtleWRvd24uc2ltcGxlbW9kYWxcIiwgZnVuY3Rpb24obikge1xuICAgICAgICAgICAgICAgIHIuby5tb2RhbCAmJiByLm8uZm9jdXMgJiYgbi5rZXlDb2RlID09IDkgPyByLndhdGNoVGFiKG4pIDogci5vLmNsb3NlICYmIHIuby5lc2NDbG9zZSAmJiBuLmtleUNvZGUgPT0gMjcgJiYgKG4ucHJldmVudERlZmF1bHQoKSwgci5jbG9zZSgpKVxuICAgICAgICAgICAgfSksIG4od2luZG93KS5iaW5kKFwicmVzaXplLnNpbXBsZW1vZGFsXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHQgPSByLmdldERpbWVuc2lvbnMoKSwgci5zZXRDb250YWluZXJEaW1lbnNpb25zKCEwKSwgaSA/IHIuZml4SUUoKSA6IHIuby5tb2RhbCAmJiAoci5kLmlmcmFtZSAmJiByLmQuaWZyYW1lLmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogdFswXSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRbMV1cbiAgICAgICAgICAgICAgICB9KSwgci5kLm92ZXJsYXkuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0WzBdLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogdFsxXVxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgdW5iaW5kRXZlbnRzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIG4oXCIuXCIgKyB0aGlzLm8uY2xvc2VDbGFzcykudW5iaW5kKFwiY2xpY2suc2ltcGxlbW9kYWxcIiksIG4oZG9jdW1lbnQpLnVuYmluZChcImtleWRvd24uc2ltcGxlbW9kYWxcIiksIG4od2luZG93KS51bmJpbmQoXCJyZXNpemUuc2ltcGxlbW9kYWxcIiksIHRoaXMuZC5vdmVybGF5LnVuYmluZChcImNsaWNrLnNpbXBsZW1vZGFsXCIpXG4gICAgICAgIH0sXG4gICAgICAgIGZpeElFOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBpID0gdGhpcyxcbiAgICAgICAgICAgICAgICB0ID0gaS5vLnBvc2l0aW9uO1xuICAgICAgICAgICAgbi5lYWNoKFtpLmQuaWZyYW1lIHx8IG51bGwsIGkuby5tb2RhbCA/IGkuZC5vdmVybGF5IDogbnVsbCwgaS5kLmNvbnRhaW5lcl0sIGZ1bmN0aW9uKG4sIGkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbCwgYywgbywgZTtcbiAgICAgICAgICAgICAgICBpZiAoaSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IFwiZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBcImRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBcImRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhID0gXCJkb2N1bWVudC5ib2R5LnNjcm9sbExlZnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBcImRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwID0gXCJkb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ID0gXCJkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3ID0gXCJkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBcImRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmID0gXCJkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICByID0gaVswXS5zdHlsZTtcbiAgICAgICAgICAgICAgICAgICAgci5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIiwgbiA8IDIgPyAoci5yZW1vdmVFeHByZXNzaW9uKFwiaGVpZ2h0XCIpLCByLnJlbW92ZUV4cHJlc3Npb24oXCJ3aWR0aFwiKSwgci5zZXRFeHByZXNzaW9uKFwiaGVpZ2h0XCIsIFwiXCIgKyBiICsgXCIgPiBcIiArIHMgKyBcIiA/IFwiICsgYiArIFwiIDogXCIgKyBzICsgJyArIFwicHhcIicpLCByLnNldEV4cHJlc3Npb24oXCJ3aWR0aFwiLCBcIlwiICsgcCArIFwiID4gXCIgKyBoICsgXCIgPyBcIiArIHAgKyBcIiA6IFwiICsgaCArICcgKyBcInB4XCInKSkgOiAodCAmJiB0LmNvbnN0cnVjdG9yID09IEFycmF5ID8gKG8gPSB0WzBdID8gdHlwZW9mIHRbMF0gPT0gXCJudW1iZXJcIiA/IHRbMF0udG9TdHJpbmcoKSA6IHRbMF0ucmVwbGFjZSgvcHgvLCBcIlwiKSA6IGkuY3NzKFwidG9wXCIpLnJlcGxhY2UoL3B4LywgXCJcIiksIGwgPSBvLmluZGV4T2YoXCIlXCIpID09IC0xID8gbyArIFwiICsgKHQgPSBcIiArIGYgKyBcIiA/IFwiICsgZiArIFwiIDogXCIgKyB2ICsgJykgKyBcInB4XCInIDogcGFyc2VJbnQoby5yZXBsYWNlKC8lLywgXCJcIikpICsgXCIgKiAoKFwiICsgeSArIFwiIHx8IFwiICsgcyArIFwiKSAvIDEwMCkgKyAodCA9IFwiICsgZiArIFwiID8gXCIgKyBmICsgXCIgOiBcIiArIHYgKyAnKSArIFwicHhcIicsIHRbMV0gJiYgKGUgPSB0eXBlb2YgdFsxXSA9PSBcIm51bWJlclwiID8gdFsxXS50b1N0cmluZygpIDogdFsxXS5yZXBsYWNlKC9weC8sIFwiXCIpLCBjID0gZS5pbmRleE9mKFwiJVwiKSA9PSAtMSA/IGUgKyBcIiArICh0ID0gXCIgKyB1ICsgXCIgPyBcIiArIHUgKyBcIiA6IFwiICsgYSArICcpICsgXCJweFwiJyA6IHBhcnNlSW50KGUucmVwbGFjZSgvJS8sIFwiXCIpKSArIFwiICogKChcIiArIHcgKyBcIiB8fCBcIiArIGggKyBcIikgLyAxMDApICsgKHQgPSBcIiArIHUgKyBcIiA/IFwiICsgdSArIFwiIDogXCIgKyBhICsgJykgKyBcInB4XCInKSkgOiAobCA9IFwiKFwiICsgeSArIFwiIHx8IFwiICsgcyArIFwiKSAvIDIgLSAodGhpcy5vZmZzZXRIZWlnaHQgLyAyKSArICh0ID0gXCIgKyBmICsgXCIgPyBcIiArIGYgKyBcIiA6IFwiICsgdiArICcpICsgXCJweFwiJywgYyA9IFwiKFwiICsgdyArIFwiIHx8IFwiICsgaCArIFwiKSAvIDIgLSAodGhpcy5vZmZzZXRXaWR0aCAvIDIpICsgKHQgPSBcIiArIHUgKyBcIiA/IFwiICsgdSArIFwiIDogXCIgKyBhICsgJykgKyBcInB4XCInKSwgci5yZW1vdmVFeHByZXNzaW9uKFwidG9wXCIpLCByLnJlbW92ZUV4cHJlc3Npb24oXCJsZWZ0XCIpLCByLnNldEV4cHJlc3Npb24oXCJ0b3BcIiwgbCksIHIuc2V0RXhwcmVzc2lvbihcImxlZnRcIiwgYykpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgZm9jdXM6IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgICAgIHZhciByID0gdGhpcyxcbiAgICAgICAgICAgICAgICB1ID0gdCB8fCBcImZpcnN0XCIsXG4gICAgICAgICAgICAgICAgaSA9IG4oXCI6aW5wdXQ6ZW5hYmxlZDp2aXNpYmxlOlwiICsgdSwgci5kLndyYXApO1xuICAgICAgICAgICAgaS5sZW5ndGggPiAwID8gaS5mb2N1cygpIDogci5kLndyYXAuZm9jdXMoKVxuICAgICAgICB9LFxuICAgICAgICBnZXREaW1lbnNpb25zOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0ID0gbih3aW5kb3cpLFxuICAgICAgICAgICAgICAgIGkgPSBuLmJyb3dzZXIub3BlcmEgJiYgbi5icm93c2VyLnZlcnNpb24gPiBcIjkuNVwiICYmIG4uZm4uanF1ZXJ5IDw9IFwiMS4yLjZcIiA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgOiBuLmJyb3dzZXIub3BlcmEgJiYgbi5icm93c2VyLnZlcnNpb24gPCBcIjkuNVwiICYmIG4uZm4uanF1ZXJ5ID4gXCIxLjIuNlwiID8gd2luZG93LmlubmVySGVpZ2h0IDogdC5oZWlnaHQoKTtcbiAgICAgICAgICAgIHJldHVybiBbaSwgdC53aWR0aCgpXVxuICAgICAgICB9LFxuICAgICAgICBnZXRWYWw6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgIHJldHVybiBuID09IFwiYXV0b1wiID8gMCA6IG4uaW5kZXhPZihcIiVcIikgPiAwID8gbiA6IHBhcnNlSW50KG4ucmVwbGFjZSgvcHgvLCBcIlwiKSlcbiAgICAgICAgfSxcbiAgICAgICAgc2V0Q29udGFpbmVyRGltZW5zaW9uczogZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgdmFyIHIgPSB0aGlzO1xuICAgICAgICAgICAgaWYgKCFpIHx8IGkgJiYgci5vLmF1dG9SZXNpemUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZiA9IG4uYnJvd3Nlci5vcGVyYSA/IHIuZC5jb250YWluZXIuaGVpZ2h0KCkgOiByLmdldFZhbChyLmQuY29udGFpbmVyLmNzcyhcImhlaWdodFwiKSksXG4gICAgICAgICAgICAgICAgICAgIHUgPSBuLmJyb3dzZXIub3BlcmEgPyByLmQuY29udGFpbmVyLndpZHRoKCkgOiByLmdldFZhbChyLmQuY29udGFpbmVyLmNzcyhcIndpZHRoXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgcyA9IHIuZC5kYXRhLm91dGVySGVpZ2h0KCEwKSxcbiAgICAgICAgICAgICAgICAgICAgaCA9IHIuZC5kYXRhLm91dGVyV2lkdGgoITApLFxuICAgICAgICAgICAgICAgICAgICBlID0gci5vLm1heEhlaWdodCAmJiByLm8ubWF4SGVpZ2h0IDwgdFswXSA/IHIuby5tYXhIZWlnaHQgOiB0WzBdLFxuICAgICAgICAgICAgICAgICAgICBvID0gci5vLm1heFdpZHRoICYmIHIuby5tYXhXaWR0aCA8IHRbMV0gPyByLm8ubWF4V2lkdGggOiB0WzFdO1xuICAgICAgICAgICAgICAgIGYgPSBmID8gZiA+IGUgPyBlIDogZiA6IHMgPyBzID4gZSA/IGUgOiBzIDwgci5vLm1pbkhlaWdodCA/IHIuby5taW5IZWlnaHQgOiBzIDogci5vLm1pbkhlaWdodCwgdSA9IHUgPyB1ID4gbyA/IG8gOiB1IDogaCA/IGggPiBvID8gbyA6IGggPCByLm8ubWluV2lkdGggPyByLm8ubWluV2lkdGggOiBoIDogci5vLm1pbldpZHRoLCByLmQuY29udGFpbmVyLmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogZixcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgci5vLmF1dG9Qb3NpdGlvbiAmJiByLnNldFBvc2l0aW9uKClcbiAgICAgICAgfSxcbiAgICAgICAgc2V0UG9zaXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIG4gPSB0aGlzLFxuICAgICAgICAgICAgICAgIHIsIGksIGYgPSB0WzBdIC8gMiAtIG4uZC5jb250YWluZXIub3V0ZXJIZWlnaHQoITApIC8gMixcbiAgICAgICAgICAgICAgICB1ID0gdFsxXSAvIDIgLSBuLmQuY29udGFpbmVyLm91dGVyV2lkdGgoITApIC8gMjtcbiAgICAgICAgICAgIG4uby5wb3NpdGlvbiAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobi5vLnBvc2l0aW9uKSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiID8gKHIgPSBuLm8ucG9zaXRpb25bMF0gfHwgZiwgaSA9IG4uby5wb3NpdGlvblsxXSB8fCB1KSA6IChyID0gZiwgaSA9IHUpLCBuLmQuY29udGFpbmVyLmNzcyh7XG4gICAgICAgICAgICAgICAgbGVmdDogaSxcbiAgICAgICAgICAgICAgICB0b3A6IHJcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHdhdGNoVGFiOiBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgICB2YXIgaSA9IHRoaXMsXG4gICAgICAgICAgICAgICAgcjtcbiAgICAgICAgICAgIG4odC50YXJnZXQpLnBhcmVudHMoXCIuc2ltcGxlbW9kYWwtY29udGFpbmVyXCIpLmxlbmd0aCA+IDAgPyAoaS5pbnB1dHMgPSBuKFwiOmlucHV0OmVuYWJsZWQ6dmlzaWJsZTpmaXJzdCwgOmlucHV0OmVuYWJsZWQ6dmlzaWJsZTpsYXN0XCIsIGkuZC5kYXRhWzBdKSwgKCF0LnNoaWZ0S2V5ICYmIHQudGFyZ2V0ID09IGkuaW5wdXRzW2kuaW5wdXRzLmxlbmd0aCAtIDFdIHx8IHQuc2hpZnRLZXkgJiYgdC50YXJnZXQgPT0gaS5pbnB1dHNbMF0gfHwgaS5pbnB1dHMubGVuZ3RoID09IDApICYmICh0LnByZXZlbnREZWZhdWx0KCksIHIgPSB0LnNoaWZ0S2V5ID8gXCJsYXN0XCIgOiBcImZpcnN0XCIsIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaS5mb2N1cyhyKVxuICAgICAgICAgICAgfSwgMTApKSkgOiAodC5wcmV2ZW50RGVmYXVsdCgpLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGkuZm9jdXMoKVxuICAgICAgICAgICAgfSwgMTApKVxuICAgICAgICB9LFxuICAgICAgICBvcGVuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgICAgICAgIHQuZC5pZnJhbWUgJiYgdC5kLmlmcmFtZS5zaG93KCksIG4uaXNGdW5jdGlvbih0Lm8ub25PcGVuKSA/IHQuby5vbk9wZW4uYXBwbHkodCwgW3QuZF0pIDogKHQuZC5vdmVybGF5LnNob3coKSwgdC5kLmNvbnRhaW5lci5zaG93KCksIHQuZC5kYXRhLnNob3coKSksIHQuZm9jdXMoKSwgdC5iaW5kRXZlbnRzKClcbiAgICAgICAgfSxcbiAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHQgPSB0aGlzLFxuICAgICAgICAgICAgICAgIGk7XG4gICAgICAgICAgICBpZiAoIXQuZC5kYXRhKSByZXR1cm4gITE7XG4gICAgICAgICAgICB0LnVuYmluZEV2ZW50cygpLCBuLmlzRnVuY3Rpb24odC5vLm9uQ2xvc2UpICYmICF0Lm9jY2IgPyAodC5vY2NiID0gITAsIHQuby5vbkNsb3NlLmFwcGx5KHQsIFt0LmRdKSkgOiAodC5kLnBsYWNlaG9sZGVyID8gKGkgPSBuKFwiI3NpbXBsZW1vZGFsLXBsYWNlaG9sZGVyXCIpLCB0Lm8ucGVyc2lzdCA/IGkucmVwbGFjZVdpdGgodC5kLmRhdGEucmVtb3ZlQ2xhc3MoXCJzaW1wbGVtb2RhbC1kYXRhXCIpLmNzcyhcImRpc3BsYXlcIiwgdC5kaXNwbGF5KSkgOiAodC5kLmRhdGEuaGlkZSgpLnJlbW92ZSgpLCBpLnJlcGxhY2VXaXRoKHQuZC5vcmlnKSkpIDogdC5kLmRhdGEuaGlkZSgpLnJlbW92ZSgpLCB0LmQuY29udGFpbmVyLmhpZGUoKS5yZW1vdmUoKSwgdC5kLm92ZXJsYXkuaGlkZSgpLnJlbW92ZSgpLCB0LmQuaWZyYW1lICYmIHQuZC5pZnJhbWUuaGlkZSgpLnJlbW92ZSgpLCB0LmQgPSB7fSlcbiAgICAgICAgfVxuICAgIH1cbn0pKGpRdWVyeSk7XG5cbjsgLy8vIGpxdWVyeS50aXBzeS5qc1xuKGZ1bmN0aW9uKG4pIHtcbiAgICBuLmZuLnRpcHN5ID0gZnVuY3Rpb24odCkge1xuICAgICAgICByZXR1cm4gdCA9IG4uZXh0ZW5kKHt9LCBuLmZuLnRpcHN5LmRlZmF1bHRzLCB0KSwgdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGkgPSBuLmZuLnRpcHN5LmVsZW1lbnRPcHRpb25zKHRoaXMsIHQpO1xuICAgICAgICAgICAgbih0aGlzKS5ob3ZlcihmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdCwgZSwgcjtcbiAgICAgICAgICAgICAgICBuLmRhdGEodGhpcywgXCJjYW5jZWwudGlwc3lcIiwgITApLCB0ID0gbi5kYXRhKHRoaXMsIFwiYWN0aXZlLnRpcHN5XCIpLCB0IHx8ICh0ID0gbignPGRpdiBjbGFzcz1cInRpcHN5XCI+PGRpdiBjbGFzcz1cInRpcHN5LWlubmVyXCIvPjwvZGl2PicpLCB0LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogOTk5OTk5XG4gICAgICAgICAgICAgICAgfSksIG4uZGF0YSh0aGlzLCBcImFjdGl2ZS50aXBzeVwiLCB0KSksIChuKHRoaXMpLmF0dHIoXCJ0aXRsZVwiKSB8fCB0eXBlb2Ygbih0aGlzKS5hdHRyKFwib3JpZ2luYWwtdGl0bGVcIikgIT0gXCJzdHJpbmdcIikgJiYgbih0aGlzKS5hdHRyKFwib3JpZ2luYWwtdGl0bGVcIiwgbih0aGlzKS5hdHRyKFwidGl0bGVcIikgfHwgXCJcIikucmVtb3ZlQXR0cihcInRpdGxlXCIpLCB0eXBlb2YgaS50aXRsZSA9PSBcInN0cmluZ1wiID8gZSA9IG4odGhpcykuYXR0cihpLnRpdGxlID09IFwidGl0bGVcIiA/IFwib3JpZ2luYWwtdGl0bGVcIiA6IGkudGl0bGUpIDogdHlwZW9mIGkudGl0bGUgPT0gXCJmdW5jdGlvblwiICYmIChlID0gaS50aXRsZS5jYWxsKHRoaXMpKSwgdC5maW5kKFwiLnRpcHN5LWlubmVyXCIpW2kuaHRtbCA/IFwiaHRtbFwiIDogXCJ0ZXh0XCJdKGUgfHwgaS5mYWxsYmFjayksIHIgPSBuLmV4dGVuZCh7fSwgbih0aGlzKS5vZmZzZXQoKSwge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLm9mZnNldEhlaWdodFxuICAgICAgICAgICAgICAgIH0pLCB0LmdldCgwKS5jbGFzc05hbWUgPSBcInRpcHN5XCIsIHQucmVtb3ZlKCkuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBcImhpZGRlblwiLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBcImJsb2NrXCJcbiAgICAgICAgICAgICAgICB9KS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KTtcbiAgICAgICAgICAgICAgICB2YXIgZiA9IHRbMF0ub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIHUgPSB0WzBdLm9mZnNldEhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgbyA9IHR5cGVvZiBpLmdyYXZpdHkgPT0gXCJmdW5jdGlvblwiID8gaS5ncmF2aXR5LmNhbGwodGhpcykgOiBpLmdyYXZpdHk7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChvLmNoYXJBdCgwKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiblwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdC5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogci50b3AgKyByLmhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiByLmxlZnQgKyByLndpZHRoIC8gMiAtIGYgLyAyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KS5hZGRDbGFzcyhcInRpcHN5LW5vcnRoXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICB0LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiByLnRvcCAtIHUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogci5sZWZ0ICsgci53aWR0aCAvIDIgLSBmIC8gMlxuICAgICAgICAgICAgICAgICAgICAgICAgfSkuYWRkQ2xhc3MoXCJ0aXBzeS1zb3V0aFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdC5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogci50b3AgKyByLmhlaWdodCAvIDIgLSB1IC8gMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiByLmxlZnQgLSBmXG4gICAgICAgICAgICAgICAgICAgICAgICB9KS5hZGRDbGFzcyhcInRpcHN5LWVhc3RcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIndcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHQuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IHIudG9wICsgci5oZWlnaHQgLyAyIC0gdSAvIDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogci5sZWZ0ICsgci53aWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkuYWRkQ2xhc3MoXCJ0aXBzeS13ZXN0XCIpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGkuZmFkZSA/IHQuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJibG9ja1wiLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBcInZpc2libGVcIlxuICAgICAgICAgICAgICAgIH0pLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAuOFxuICAgICAgICAgICAgICAgIH0pIDogdC5jc3Moe1xuICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBcInZpc2libGVcIlxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBuLmRhdGEodGhpcywgXCJjYW5jZWwudGlwc3lcIiwgITEpO1xuICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW4uZGF0YSh0aGlzLCBcImNhbmNlbC50aXBzeVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmRhdGEodCwgXCJhY3RpdmUudGlwc3lcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpLmZhZGUgPyByLnN0b3AoKS5mYWRlT3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4odGhpcykucmVtb3ZlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogci5yZW1vdmUoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgMTAwKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICB9LCBuLmZuLnRpcHN5LmVsZW1lbnRPcHRpb25zID0gZnVuY3Rpb24odCwgaSkge1xuICAgICAgICByZXR1cm4gbi5tZXRhZGF0YSA/IG4uZXh0ZW5kKHt9LCBpLCBuKHQpLm1ldGFkYXRhKCkpIDogaVxuICAgIH0sIG4uZm4udGlwc3kuZGVmYXVsdHMgPSB7XG4gICAgICAgIGZhZGU6ICExLFxuICAgICAgICBmYWxsYmFjazogXCJcIixcbiAgICAgICAgZ3Jhdml0eTogXCJuXCIsXG4gICAgICAgIGh0bWw6ICExLFxuICAgICAgICB0aXRsZTogXCJ0aXRsZVwiXG4gICAgfSwgbi5mbi50aXBzeS5hdXRvTlMgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG4odGhpcykub2Zmc2V0KCkudG9wID4gbihkb2N1bWVudCkuc2Nyb2xsVG9wKCkgKyBuKHdpbmRvdykuaGVpZ2h0KCkgLyAyID8gXCJzXCIgOiBcIm5cIlxuICAgIH0sIG4uZm4udGlwc3kuYXV0b1dFID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBuKHRoaXMpLm9mZnNldCgpLmxlZnQgPiBuKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkgKyBuKHdpbmRvdykud2lkdGgoKSAvIDIgPyBcImVcIiA6IFwid1wiXG4gICAgfVxufSkoalF1ZXJ5KTtcblxuOyAvLy8gQWpheEF2YXRhclRodW1ibmFpbC5qc1xudmFyIFJvYmxveFRodW1icyA9IGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIG4odCwgaSwgcikge1xuICAgICAgICAkLmdldChcIi90aHVtYnMvcmF3YXZhdGFyLmFzaHhcIiwge1xuICAgICAgICAgICAgVXNlcklEOiBpLFxuICAgICAgICAgICAgVGh1bWJuYWlsRm9ybWF0SUQ6IHJcbiAgICAgICAgfSwgZnVuY3Rpb24odSkge1xuICAgICAgICAgICAgdSA9PSBcIlBFTkRJTkdcIiA/IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIG4odCwgaSwgcilcbiAgICAgICAgICAgIH0sIDNlMykgOiB1LnN1YnN0cmluZyg1LCAwKSA9PSBcIkVSUk9SXCIgfHwgJChcIiNcIiArIHQpLmF0dHIoXCJzcmNcIiwgdSlcbiAgICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgR2VuZXJhdGVBdmF0YXJUaHVtYjogZnVuY3Rpb24odCwgaSwgcikge1xuICAgICAgICAgICAgJChcIiNcIiArIHQpLmF0dHIoXCJzcmNcIiwgXCIvaW1hZ2VzL3NwaW5uZXJzL3dhaXRpbmcuZ2lmXCIpLCBuKHQsIGksIHIpXG4gICAgICAgIH1cbiAgICB9XG59KCk7XG5cbjsgLy8vIGV4dGVuc2lvbnMvc3RyaW5nLmpzXG4kLmV4dGVuZChTdHJpbmcucHJvdG90eXBlLCBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXBsYWNlKC8mL2csIFwiJmFtcDtcIikucmVwbGFjZSgvPC9nLCBcIiZsdDtcIikucmVwbGFjZSgvPi9nLCBcIiZndDtcIikucmVwbGFjZSgvXCIvZywgXCImcXVvdDtcIikucmVwbGFjZSgvJy9nLCBcIiYjMzk7XCIpXG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGVzY2FwZUhUTUw6IG5cbiAgICB9XG59KCkpO1xuXG47IC8vLyBTdHJpbmdUcnVuY2F0b3IubWluLmpzXG5mdW5jdGlvbiBJbml0U3RyaW5nVHJ1bmNhdG9yKCkge1xuICAgIGlzSW5pdGlhbGl6ZWQgfHwgKGZpdFN0cmluZ1NwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKSwgZml0U3RyaW5nU3Bhbi5zdHlsZS5kaXNwbGF5ID0gXCJpbmxpbmVcIiwgZml0U3RyaW5nU3Bhbi5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIiwgZml0U3RyaW5nU3Bhbi5zdHlsZS5wYWRkaW5nID0gXCIwcHhcIiwgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmaXRTdHJpbmdTcGFuKSwgaXNJbml0aWFsaXplZCA9ICEwKVxufVxuXG5mdW5jdGlvbiBmaXRTdHJpbmdUb1dpZHRoKG4sIHQsIGkpIHtcbiAgICBmdW5jdGlvbiBmKG4pIHtcbiAgICAgICAgcmV0dXJuIG4ucmVwbGFjZShcIjxcIiwgXCImbHQ7XCIpLnJlcGxhY2UoXCI+XCIsIFwiJmd0O1wiKVxuICAgIH1cbiAgICBpZiAoaXNJbml0aWFsaXplZCB8fCBJbml0U3RyaW5nVHJ1bmNhdG9yKCksIGkgJiYgKGZpdFN0cmluZ1NwYW4uY2xhc3NOYW1lID0gaSksIGkgPSBmKG4pLCBmaXRTdHJpbmdTcGFuLmlubmVySFRNTCA9IGksIGZpdFN0cmluZ1NwYW4ub2Zmc2V0V2lkdGggPiB0KSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCByLCB1ID0gbi5sZW5ndGg7IHIgPSB1IC0gaSA+PiAxOykgciA9IGkgKyByLCBmaXRTdHJpbmdTcGFuLmlubmVySFRNTCA9IGYobi5zdWJzdHJpbmcoMCwgcikpICsgXCImaGVsbGlwO1wiLCBmaXRTdHJpbmdTcGFuLm9mZnNldFdpZHRoID4gdCA/IHUgPSByIDogaSA9IHI7XG4gICAgICAgIGkgPSBuLnN1YnN0cmluZygwLCBpKSArIFwiJmhlbGxpcDtcIlxuICAgIH1cbiAgICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiBmaXRTdHJpbmdUb1dpZHRoU2FmZShuLCB0LCBpKSB7XG4gICAgcmV0dXJuIG4gPSBmaXRTdHJpbmdUb1dpZHRoKG4sIHQsIGkpLCBuLmluZGV4T2YoXCImaGVsbGlwO1wiKSAhPSAtMSAmJiAodCA9IG4ubGFzdEluZGV4T2YoXCIgXCIpLCB0ICE9IC0xICYmIHQgKyAxMCA8PSBuLmxlbmd0aCAmJiAobiA9IG4uc3Vic3RyaW5nKDAsIHQgKyAyKSArIFwiJmhlbGxpcDtcIikpLCBuXG59XG52YXIgaXNJbml0aWFsaXplZCA9ICExLFxuICAgIGZpdFN0cmluZ1NwYW4gPSBudWxsO1xuXG47IC8vLyBqc29uMi5taW4uanNcbnZhciBKU09OO1xuSlNPTiB8fCAoSlNPTiA9IHt9KSxcbiAgICBmdW5jdGlvbigpIHtcbiAgICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgICAgZnVuY3Rpb24gaShuKSB7XG4gICAgICAgICAgICByZXR1cm4gbiA8IDEwID8gXCIwXCIgKyBuIDogblxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZihuKSB7XG4gICAgICAgICAgICByZXR1cm4gby5sYXN0SW5kZXggPSAwLCBvLnRlc3QobikgPyAnXCInICsgbi5yZXBsYWNlKG8sIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICB2YXIgdCA9IHNbbl07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB0ID09IFwic3RyaW5nXCIgPyB0IDogXCJcXFxcdVwiICsgKFwiMDAwMFwiICsgbi5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpXG4gICAgICAgICAgICB9KSArICdcIicgOiAnXCInICsgbiArICdcIidcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHIoaSwgZSkge1xuICAgICAgICAgICAgdmFyIGMsIGwsIGgsIGEsIHYgPSBuLFxuICAgICAgICAgICAgICAgIHMsIG8gPSBlW2ldO1xuICAgICAgICAgICAgbyAmJiB0eXBlb2YgbyA9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvLnRvSlNPTiA9PSBcImZ1bmN0aW9uXCIgJiYgKG8gPSBvLnRvSlNPTihpKSksIHR5cGVvZiB0ID09IFwiZnVuY3Rpb25cIiAmJiAobyA9IHQuY2FsbChlLCBpLCBvKSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBvKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZihvKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpc0Zpbml0ZShvKSA/IFN0cmluZyhvKSA6IFwibnVsbFwiO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcIm51bGxcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhvKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgICAgIGlmICghbykgcmV0dXJuIFwibnVsbFwiO1xuICAgICAgICAgICAgICAgICAgICBpZiAobiArPSB1LCBzID0gW10sIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkobykgPT09IFwiW29iamVjdCBBcnJheV1cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gby5sZW5ndGgsIGMgPSAwOyBjIDwgYTsgYyArPSAxKSBzW2NdID0gcihjLCBvKSB8fCBcIm51bGxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoID0gcy5sZW5ndGggPT09IDAgPyBcIltdXCIgOiBuID8gXCJbXFxuXCIgKyBuICsgcy5qb2luKFwiLFxcblwiICsgbikgKyBcIlxcblwiICsgdiArIFwiXVwiIDogXCJbXCIgKyBzLmpvaW4oXCIsXCIpICsgXCJdXCIsIG4gPSB2LCBoXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgdHlwZW9mIHQgPT0gXCJvYmplY3RcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IHQubGVuZ3RoLCBjID0gMDsgYyA8IGE7IGMgKz0gMSkgbCA9IHRbY10sIHR5cGVvZiBsID09IFwic3RyaW5nXCIgJiYgKGggPSByKGwsIG8pLCBoICYmIHMucHVzaChmKGwpICsgKG4gPyBcIjogXCIgOiBcIjpcIikgKyBoKSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCBpbiBvKSBPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChvLCBsKSAmJiAoaCA9IHIobCwgbyksIGggJiYgcy5wdXNoKGYobCkgKyAobiA/IFwiOiBcIiA6IFwiOlwiKSArIGgpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGggPSBzLmxlbmd0aCA9PT0gMCA/IFwie31cIiA6IG4gPyBcIntcXG5cIiArIG4gKyBzLmpvaW4oXCIsXFxuXCIgKyBuKSArIFwiXFxuXCIgKyB2ICsgXCJ9XCIgOiBcIntcIiArIHMuam9pbihcIixcIikgKyBcIn1cIiwgbiA9IHYsIGhcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0eXBlb2YgRGF0ZS5wcm90b3R5cGUudG9KU09OICE9IFwiZnVuY3Rpb25cIiAmJiAoRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNGaW5pdGUodGhpcy52YWx1ZU9mKCkpID8gdGhpcy5nZXRVVENGdWxsWWVhcigpICsgXCItXCIgKyBpKHRoaXMuZ2V0VVRDTW9udGgoKSArIDEpICsgXCItXCIgKyBpKHRoaXMuZ2V0VVRDRGF0ZSgpKSArIFwiVFwiICsgaSh0aGlzLmdldFVUQ0hvdXJzKCkpICsgXCI6XCIgKyBpKHRoaXMuZ2V0VVRDTWludXRlcygpKSArIFwiOlwiICsgaSh0aGlzLmdldFVUQ1NlY29uZHMoKSkgKyBcIlpcIiA6IG51bGxcbiAgICAgICAgfSwgU3RyaW5nLnByb3RvdHlwZS50b0pTT04gPSBOdW1iZXIucHJvdG90eXBlLnRvSlNPTiA9IEJvb2xlYW4ucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZSA9IC9bXFx1MDAwMFxcdTAwYWRcXHUwNjAwLVxcdTA2MDRcXHUwNzBmXFx1MTdiNFxcdTE3YjVcXHUyMDBjLVxcdTIwMGZcXHUyMDI4LVxcdTIwMmZcXHUyMDYwLVxcdTIwNmZcXHVmZWZmXFx1ZmZmMC1cXHVmZmZmXS9nLFxuICAgICAgICAgICAgbyA9IC9bXFxcXFxcXCJcXHgwMC1cXHgxZlxceDdmLVxceDlmXFx1MDBhZFxcdTA2MDAtXFx1MDYwNFxcdTA3MGZcXHUxN2I0XFx1MTdiNVxcdTIwMGMtXFx1MjAwZlxcdTIwMjgtXFx1MjAyZlxcdTIwNjAtXFx1MjA2ZlxcdWZlZmZcXHVmZmYwLVxcdWZmZmZdL2csXG4gICAgICAgICAgICBuLCB1LCBzID0ge1xuICAgICAgICAgICAgICAgIFwiXFxiXCI6IFwiXFxcXGJcIixcbiAgICAgICAgICAgICAgICBcIlxcdFwiOiBcIlxcXFx0XCIsXG4gICAgICAgICAgICAgICAgXCJcXG5cIjogXCJcXFxcblwiLFxuICAgICAgICAgICAgICAgIFwiXFxmXCI6IFwiXFxcXGZcIixcbiAgICAgICAgICAgICAgICBcIlxcclwiOiBcIlxcXFxyXCIsXG4gICAgICAgICAgICAgICAgJ1wiJzogJ1xcXFxcIicsXG4gICAgICAgICAgICAgICAgXCJcXFxcXCI6IFwiXFxcXFxcXFxcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHQ7XG4gICAgICAgIHR5cGVvZiBKU09OLnN0cmluZ2lmeSAhPSBcImZ1bmN0aW9uXCIgJiYgKEpTT04uc3RyaW5naWZ5ID0gZnVuY3Rpb24oaSwgZiwgZSkge1xuICAgICAgICAgICAgdmFyIG87XG4gICAgICAgICAgICBpZiAobiA9IFwiXCIsIHUgPSBcIlwiLCB0eXBlb2YgZSA9PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgIGZvciAobyA9IDA7IG8gPCBlOyBvICs9IDEpIHUgKz0gXCIgXCI7XG4gICAgICAgICAgICBlbHNlIHR5cGVvZiBlID09IFwic3RyaW5nXCIgJiYgKHUgPSBlKTtcbiAgICAgICAgICAgIGlmICh0ID0gZiwgZiAmJiB0eXBlb2YgZiAhPSBcImZ1bmN0aW9uXCIgJiYgKHR5cGVvZiBmICE9IFwib2JqZWN0XCIgfHwgdHlwZW9mIGYubGVuZ3RoICE9IFwibnVtYmVyXCIpKSB0aHJvdyBuZXcgRXJyb3IoXCJKU09OLnN0cmluZ2lmeVwiKTtcbiAgICAgICAgICAgIHJldHVybiByKFwiXCIsIHtcbiAgICAgICAgICAgICAgICBcIlwiOiBpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KSwgdHlwZW9mIEpTT04ucGFyc2UgIT0gXCJmdW5jdGlvblwiICYmIChKU09OLnBhcnNlID0gZnVuY3Rpb24obiwgdCkge1xuICAgICAgICAgICAgZnVuY3Rpb24gcihuLCBpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGYsIGUsIHUgPSBuW2ldO1xuICAgICAgICAgICAgICAgIGlmICh1ICYmIHR5cGVvZiB1ID09IFwib2JqZWN0XCIpXG4gICAgICAgICAgICAgICAgICAgIGZvciAoZiBpbiB1KSBPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh1LCBmKSAmJiAoZSA9IHIodSwgZiksIGUgIT09IHVuZGVmaW5lZCA/IHVbZl0gPSBlIDogZGVsZXRlIHVbZl0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB0LmNhbGwobiwgaSwgdSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBpO1xuICAgICAgICAgICAgaWYgKG4gPSBTdHJpbmcobiksIGUubGFzdEluZGV4ID0gMCwgZS50ZXN0KG4pICYmIChuID0gbi5yZXBsYWNlKGUsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiXFxcXHVcIiArIChcIjAwMDBcIiArIG4uY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KVxuICAgICAgICAgICAgICAgIH0pKSwgL15bXFxdLDp7fVxcc10qJC8udGVzdChuLnJlcGxhY2UoL1xcXFwoPzpbXCJcXFxcXFwvYmZucnRdfHVbMC05YS1mQS1GXXs0fSkvZywgXCJAXCIpLnJlcGxhY2UoL1wiW15cIlxcXFxcXG5cXHJdKlwifHRydWV8ZmFsc2V8bnVsbHwtP1xcZCsoPzpcXC5cXGQqKT8oPzpbZUVdWytcXC1dP1xcZCspPy9nLCBcIl1cIikucmVwbGFjZSgvKD86Xnw6fCwpKD86XFxzKlxcWykrL2csIFwiXCIpKSkgcmV0dXJuIGkgPSBldmFsKFwiKFwiICsgbiArIFwiKVwiKSwgdHlwZW9mIHQgPT0gXCJmdW5jdGlvblwiID8gcih7XG4gICAgICAgICAgICAgICAgXCJcIjogaVxuICAgICAgICAgICAgfSwgXCJcIikgOiBpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFwiSlNPTi5wYXJzZVwiKTtcbiAgICAgICAgfSlcbiAgICB9KCk7XG5cbjsgLy8vIHdlYmtpdC5qc1xudHlwZW9mIFN5cy5Ccm93c2VyLldlYktpdCA9PSBcInVuZGVmaW5lZFwiICYmIChTeXMuQnJvd3Nlci5XZWJLaXQgPSB7fSksIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIldlYktpdC9cIikgPiAtMSAmJiAoU3lzLkJyb3dzZXIuYWdlbnQgPSBTeXMuQnJvd3Nlci5XZWJLaXQsIFN5cy5Ccm93c2VyLnZlcnNpb24gPSBwYXJzZUZsb2F0KG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL1dlYktpdFxcLyhcXGQrKFxcLlxcZCspPykvKVsxXSksIFN5cy5Ccm93c2VyLm5hbWUgPSBcIldlYktpdFwiKTtcblxuOyAvLy8gR29vZ2xlQW5hbHl0aWNzL0dvb2dsZUFuYWx5dGljc0V2ZW50cy5qc1xudmFyIEdvb2dsZUFuYWx5dGljc0V2ZW50cyA9IG5ldyBmdW5jdGlvbigpIHtcbiAgICB0aGlzLkZpcmVFdmVudCA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBfZ2FxICE9IHR5cGVvZiB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHZhciBpID0gW1wiX3RyYWNrRXZlbnRcIl0sXG4gICAgICAgICAgICAgICAgdCA9IFtcImIuX3RyYWNrRXZlbnRcIl07XG4gICAgICAgICAgICBfZ2FxLnB1c2goaS5jb25jYXQobikpLCBfZ2FxLnB1c2godC5jb25jYXQobikpXG4gICAgICAgIH1cbiAgICB9XG59O1xuXG47IC8vLyBNYXN0ZXJQYWdlVUkuanNcbiQoZnVuY3Rpb24oKSB7XG4gICAgJChcIi50b29sdGlwXCIpLnRpcHN5KCksICQoXCIudG9vbHRpcC10b3BcIikudGlwc3koe1xuICAgICAgICBncmF2aXR5OiBcInNcIlxuICAgIH0pLCAkKFwiLnRvb2x0aXAtcmlnaHRcIikudGlwc3koe1xuICAgICAgICBncmF2aXR5OiBcIndcIlxuICAgIH0pLCAkKFwiLnRvb2x0aXAtbGVmdFwiKS50aXBzeSh7XG4gICAgICAgIGdyYXZpdHk6IFwiZVwiXG4gICAgfSksICQoXCIudG9vbHRpcC1ib3R0b21cIikudGlwc3koe1xuICAgICAgICBncmF2aXR5OiBcIm5cIlxuICAgIH0pXG59KSwgdHlwZW9mIFJvYmxveCA9PSBcInVuZGVmaW5lZFwiICYmIChSb2Jsb3ggPSB7fSksIFJvYmxveC5GaXhlZFVJID0gZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcygpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYWdlWU9mZnNldCAhPSBcInVuZGVmaW5lZFwiKSByZXR1cm4gcGFnZVlPZmZzZXQ7XG4gICAgICAgIHZhciB0ID0gZG9jdW1lbnQuYm9keSxcbiAgICAgICAgICAgIG4gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIHJldHVybiBuID0gbi5jbGllbnRIZWlnaHQgPyBuIDogdCwgbi5zY3JvbGxUb3BcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlKCkge1xuICAgICAgICB2YXIgbiA9IHMoKTtcbiAgICAgICAgdCB8fCAodCA9ICQoXCJpZnJhbWUuSWZyYW1lQWRIaWRlXCIpKSwgdC5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHQgPSAkKHRoaXMpLm9mZnNldCgpLnRvcCAtIDczO1xuICAgICAgICAgICAgIXIuZ3V0dGVyQWRzRW5hYmxlZCAmJiBuID49IHQgPyAkKHRoaXMpLmNzcyhcInZpc2liaWxpdHlcIiwgXCJoaWRkZW5cIikgOiAkKHRoaXMpLmNzcyhcInZpc2liaWxpdHlcIiwgXCJ2aXNpYmxlXCIpXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaSgpIHtcbiAgICAgICAgJChcIiNOYXZcIikuY3NzKFwiY3NzVGV4dFwiLCBcInBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDt3aWR0aDo5NzBweCAhaW1wb3J0YW50XCIpLCAkKFwiI1NtYWxsSGVhZGVyQ29udGFpbmVyXCIpLmNzcyhcImNzc1RleHRcIiwgXCJwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtoZWlnaHQ6IDM2cHggIWltcG9ydGFudDt3aWR0aDo5NzBweCAhaW1wb3J0YW50XCIpLCAkKFwiLmZvcmNlU3BhY2VcIikuY3NzKFwiY3NzVGV4dFwiLCBcIndpZHRoOiA5NzBweCAhaW1wb3J0YW50OyBoZWlnaHQ6OXB4ICFpbXBvcnRhbnQ7cGFkZGluZy10b3A6IDBweCAhaW1wb3J0YW50O2JhY2tncm91bmQ6d2hpdGVcIiksICQoXCIjQ29udGFpbmVyXCIpLmNzcyhcImNzc1RleHRcIiwgXCJ3aWR0aDogOTcwcHggIWltcG9ydGFudFwiKSwgJChcIi5teVN1Ym1lbnVGaXhlZFwiKS5jc3MoXCJjc3NUZXh0XCIsIFwicG9zaXRpb246IHJlbGF0aXZlOyB0b3A6IDBweDtcIiksICQoXCIjTWFzdGVyQ29udGFpbmVyXCIpLmNzcyhcImNzc1RleHRcIiwgXCJ3aWR0aDogOTcwcHggIWltcG9ydGFudFwiKSwgJChcIi5teVN1Ym1lbnVGaXhlZFwiKS5sZW5ndGggPT0gMSAmJiAoJChcIi5mb3JjZVNwYWNlVW5kZXJTdWJtZW51XCIpLmhpZGUoKSwgJChcIi5mb3JjZVNwYWNlXCIpLmNzcyhcImNzc1RleHRcIiwgXCJ3aWR0aDogOTEwcHggIWltcG9ydGFudDsgaGVpZ2h0OjdweCAhaW1wb3J0YW50O3BhZGRpbmctdG9wOiAwcHggIWltcG9ydGFudDtcIikpLCAkKHdpbmRvdykudW5iaW5kKFwic2Nyb2xsXCIpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaCgpIHtcbiAgICAgICAgJChcIiNOYXZcIikuY3NzKFwiY3NzVGV4dFwiLCBcInBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50O3dpZHRoOjEwMCUgIWltcG9ydGFudFwiKSwgJChcIiNTbWFsbEhlYWRlckNvbnRhaW5lclwiKS5jc3MoXCJjc3NUZXh0XCIsIFwicG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7aGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7d2lkdGg6MTAwJSAhaW1wb3J0YW50XCIpLCAkKFwiLmZvcmNlU3BhY2VcIikuY3NzKFwiY3NzVGV4dFwiLCBcIndpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGhlaWdodDoxNXB4ICFpbXBvcnRhbnQ7cGFkZGluZy10b3A6IDYycHggIWltcG9ydGFudDtcIiksICQoXCIjQ29udGFpbmVyXCIpLmNzcyhcImNzc1RleHRcIiwgXCJ3aWR0aDogMTAwJSAhaW1wb3J0YW50XCIpLCAkKFwiLm15U3VibWVudUZpeGVkXCIpLmNzcyhcImNzc1RleHRcIiwgXCJwb3NpdGlvbjogZml4ZWQ7IHRvcDogNjhweDtcIiksICQoXCIjTWFzdGVyQ29udGFpbmVyXCIpLmNzcyhcImNzc1RleHRcIiwgXCJ3aWR0aDogMTAwJVwiKSwgJChcIi5teVN1Ym1lbnVGaXhlZFwiKS5sZW5ndGggPT0gMSAmJiAkKFwiLmZvcmNlU3BhY2VVbmRlclN1Ym1lbnVcIikuc2hvdygpLCAkKHdpbmRvdykuc2Nyb2xsKGUpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbygpIHtcbiAgICAgICAgdmFyIG4gPSAxMDI0O1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keSAmJiBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoICYmIChuID0gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCksIHdpbmRvdy5pbm5lcldpZHRoICYmIHdpbmRvdy5pbm5lckhlaWdodCAmJiAobiA9IHdpbmRvdy5pbm5lcldpZHRoKSwgblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHUoKSB7XG4gICAgICAgIG8oKSA8IDk3OCA/IGkoKSA6IGgoKVxuICAgIH1cbiAgICB2YXIgbiA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgZiA9IC9tb2JpbGUvaS50ZXN0KG4pIHx8IC9pcGFkL2kudGVzdChuKSB8fCAvaXBob25lL2kudGVzdChuKSB8fCAvYW5kcm9pZC9pLnRlc3QobikgfHwgL3BsYXlib29rL2kudGVzdChuKSB8fCAvYmxhY2tiZXJyeS9pLnRlc3QobiksXG4gICAgICAgIHQsIHI7XG4gICAgcmV0dXJuICQoZnVuY3Rpb24oKSB7XG4gICAgICAgIGYgPyBpKCkgOiAkKHdpbmRvdykubG9hZCh1KS5yZXNpemUodSlcbiAgICB9KSwgdCA9IG51bGwsIHIgPSB7XG4gICAgICAgIGlzTW9iaWxlOiBmLFxuICAgICAgICBndXR0ZXJBZHNFbmFibGVkOiAhMSxcbiAgICAgICAgdW5maXhIZWFkZXI6IGlcbiAgICB9XG59KCk7XG5cbjsgLy8vIGpxdWVyeS5jb29raWUuanNcbmpRdWVyeS5jb29raWUgPSBmdW5jdGlvbihuLCB0LCBpKSB7XG4gICAgdmFyIG8sIHIsIGYsIGUsIHUsIHM7XG4gICAgaWYgKHR5cGVvZiB0ICE9IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgaSA9IGkgfHwge30sIHQgPT09IG51bGwgJiYgKHQgPSBcIlwiLCBpLmV4cGlyZXMgPSAtMSksIG8gPSBcIlwiLCBpLmV4cGlyZXMgJiYgKHR5cGVvZiBpLmV4cGlyZXMgPT0gXCJudW1iZXJcIiB8fCBpLmV4cGlyZXMudG9VVENTdHJpbmcpICYmICh0eXBlb2YgaS5leHBpcmVzID09IFwibnVtYmVyXCIgPyAociA9IG5ldyBEYXRlLCByLnNldFRpbWUoci5nZXRUaW1lKCkgKyBpLmV4cGlyZXMgKiA4NjRlNSkpIDogciA9IGkuZXhwaXJlcywgbyA9IFwiOyBleHBpcmVzPVwiICsgci50b1VUQ1N0cmluZygpKTtcbiAgICAgICAgdmFyIGggPSBpLnBhdGggPyBcIjsgcGF0aD1cIiArIGkucGF0aCA6IFwiXCIsXG4gICAgICAgICAgICBjID0gaS5kb21haW4gPyBcIjsgZG9tYWluPVwiICsgaS5kb21haW4gOiBcIlwiLFxuICAgICAgICAgICAgbCA9IGkuc2VjdXJlID8gXCI7IHNlY3VyZVwiIDogXCJcIjtcbiAgICAgICAgZG9jdW1lbnQuY29va2llID0gW24sIFwiPVwiLCBlbmNvZGVVUklDb21wb25lbnQodCksIG8sIGgsIGMsIGxdLmpvaW4oXCJcIilcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZiA9IG51bGwsIGRvY3VtZW50LmNvb2tpZSAmJiBkb2N1bWVudC5jb29raWUgIT0gXCJcIilcbiAgICAgICAgICAgIGZvciAoZSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdChcIjtcIiksIHUgPSAwOyB1IDwgZS5sZW5ndGg7IHUrKylcbiAgICAgICAgICAgICAgICBpZiAocyA9IGpRdWVyeS50cmltKGVbdV0pLCBzLnN1YnN0cmluZygwLCBuLmxlbmd0aCArIDEpID09IG4gKyBcIj1cIikge1xuICAgICAgICAgICAgICAgICAgICBmID0gZGVjb2RlVVJJQ29tcG9uZW50KHMuc3Vic3RyaW5nKG4ubGVuZ3RoICsgMSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH0gcmV0dXJuIGZcbiAgICB9XG59O1xuXG47IC8vLyBqcXVlcnkuanNvbmNvb2tpZS5qc1xuZnVuY3Rpb24gUm9ibG94SlNPTkNvb2tpZShuKSB7XG4gICAgdGhpcy5fY29va2llbmFtZSA9IG5cbn0oZnVuY3Rpb24obikge1xuICAgIHZhciB0ID0gZnVuY3Rpb24obikge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG4gPT0gXCJvYmplY3RcIiAmJiAhKG4gaW5zdGFuY2VvZiBBcnJheSkgJiYgbiAhPT0gbnVsbFxuICAgIH07XG4gICAgbi5leHRlbmQoe1xuICAgICAgICBnZXRKU09OQ29va2llOiBmdW5jdGlvbih0LCBpKSB7XG4gICAgICAgICAgICB2YXIgciA9IG4uY29va2llKHQpO1xuICAgICAgICAgICAgcmV0dXJuIGkgPyByIDogciA/IEpTT04ucGFyc2UocikgOiB7fVxuICAgICAgICB9LFxuICAgICAgICBzZXRKU09OQ29va2llOiBmdW5jdGlvbihpLCByLCB1KSB7XG4gICAgICAgICAgICB2YXIgZiA9IFwiXCI7XG4gICAgICAgICAgICByZXR1cm4gdSA9IG4uZXh0ZW5kKHtcbiAgICAgICAgICAgICAgICBleHBpcmVzOiA5MCxcbiAgICAgICAgICAgICAgICBwYXRoOiBcIi9cIlxuICAgICAgICAgICAgfSwgdSksIGYgPSB0KHIpID8gSlNPTi5zdHJpbmdpZnkocikgOiByLCBuLmNvb2tpZShpLCBmLCB1KVxuICAgICAgICB9LFxuICAgICAgICByZW1vdmVKU09OQ29va2llOiBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgICByZXR1cm4gbi5jb29raWUodCwgbnVsbClcbiAgICAgICAgfSxcbiAgICAgICAgSlNPTkNvb2tpZTogZnVuY3Rpb24odCwgaSwgcikge1xuICAgICAgICAgICAgcmV0dXJuIGkgJiYgbi5zZXRKU09OQ29va2llKHQsIGksIHIpLCBuLmdldEpTT05Db29raWUodClcbiAgICAgICAgfVxuICAgIH0pXG59KShqUXVlcnkpLCBSb2Jsb3hKU09OQ29va2llLnByb3RvdHlwZSA9IHtcbiAgICBEZWxldGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gJC5yZW1vdmVKU09OQ29va2llKHRoaXMuX2Nvb2tpZW5hbWUpXG4gICAgfSxcbiAgICBTZXRPYmo6IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgcmV0dXJuIHQgfHwgKHQgPSB7XG4gICAgICAgICAgICBwYXRoOiBcIi9cIlxuICAgICAgICB9KSwgJC5KU09OQ29va2llKHRoaXMuX2Nvb2tpZW5hbWUsIG4sIHQpXG4gICAgfSxcbiAgICBTZXRKU09OOiBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgIHJldHVybiB0IHx8ICh0ID0ge1xuICAgICAgICAgICAgcGF0aDogXCIvXCJcbiAgICAgICAgfSksICQuSlNPTkNvb2tpZSh0aGlzLl9jb29raWVuYW1lLCBuLCB0KVxuICAgIH0sXG4gICAgR2V0T2JqOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG4gPSAkLmdldEpTT05Db29raWUodGhpcy5fY29va2llbmFtZSwgITEpO1xuICAgICAgICByZXR1cm4gbiA9PSBudWxsID8ge30gOiBuXG4gICAgfSxcbiAgICBHZXRKU09OOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuICQuZ2V0SlNPTkNvb2tpZSh0aGlzLl9jb29raWVuYW1lLCAhMClcbiAgICB9XG59O1xuXG47IC8vLyBYc3JmVG9rZW4uanNcbnR5cGVvZiBSb2Jsb3ggPT0gXCJ1bmRlZmluZWRcIiAmJiAoUm9ibG94ID0ge30pLCBSb2Jsb3guWHNyZlRva2VuID0gZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZihuKSB7XG4gICAgICAgIHZhciB1LCB0O1xuICAgICAgICBpZiAoaS5hbGxVcmxzRW5hYmxlZCkgcmV0dXJuICEwO1xuICAgICAgICBmb3IgKHUgPSBuLnNwbGl0KFwiP1wiKVswXS50b0xvd2VyQ2FzZSgpLCB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspXG4gICAgICAgICAgICBpZiAoclt0XSA9PT0gdSkgcmV0dXJuICEwO1xuICAgICAgICByZXR1cm4gITFcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlKG4pIHtcbiAgICAgICAgci5wdXNoKG4udG9Mb3dlckNhc2UoKSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvKHQpIHtcbiAgICAgICAgbiA9IHRcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1KCkge1xuICAgICAgICByZXR1cm4gblxuICAgIH1cbiAgICB2YXIgbiA9IFwiXCIsXG4gICAgICAgIHQgPSAvKF58XFw/fCYpdG9rZW49W14mXSovLFxuICAgICAgICByID0gW1wiL2NoYXQvZnJpZW5kaGFuZGxlci5hc2h4XCIsIFwiL2NoYXQvcGFydHkuYXNoeFwiLCBcIi9jaGF0L3NlbmQuYXNoeFwiLCBcIi9jaGF0L3V0aWxpdHkuYXNoeFwiLCBcIi9ncm91cHMvcm9sZXNldHVwZGF0ZXIuYXNoeFwiLCBcImdyb3Vwcy5hc3B4L2V4aWxldXNlcmFuZGRlbGV0ZXBvc3RzXCIsIFwibWVzc2FnZXNoYW5kbGVyLmFzaHhcIiwgXCJlbWFpbHVwZ3JhZGVtZS5hc2h4XCIsIFwiL3NlcnZpY2VzL3VzZXJjaGVjay5hc214L3VwZGF0ZXBlcnNvbmFsaW5mb1wiLCBcIi90aHVtYnMvYXNzZXRtZWRpYS9wbGFjZW1lZGlhaXRlbXNvcnRoYW5kbGVyLmFzaHhcIl0sXG4gICAgICAgIGk7XG4gICAgcmV0dXJuICQuYWpheFByZWZpbHRlcihmdW5jdGlvbihpKSB7XG4gICAgICAgIHZhciBvLCBlO1xuICAgICAgICBpLmRhdGFUeXBlICE9IFwianNvbnBcIiAmJiBpLmRhdGFUeXBlICE9IFwic2NyaXB0XCIgJiYgbiAhPSBcIlwiICYmIGYoaS51cmwpICYmIChvID0gJC5wYXJhbSh7XG4gICAgICAgICAgICB0b2tlbjogblxuICAgICAgICB9KSwgdC50ZXN0KGkudXJsKSB8fCB0eXBlb2YgaS5kYXRhICE9IFwidW5kZWZpbmVkXCIgJiYgdC50ZXN0KGkuZGF0YSkgfHwgKGkudXJsICs9IC9cXD8vLnRlc3QoaS51cmwpID8gXCImdG9rZW49XCIgKyBlbmNvZGVVUklDb21wb25lbnQobikgOiBcIj90b2tlbj1cIiArIGVuY29kZVVSSUNvbXBvbmVudChuKSksIGUgPSBpLmVycm9yLCBpLmVycm9yID0gZnVuY3Rpb24ociwgdSwgZikge1xuICAgICAgICAgICAgaWYgKHIuc3RhdHVzID09IDQyMCkge1xuICAgICAgICAgICAgICAgIHZhciBvID0gci5nZXRSZXNwb25zZUhlYWRlcihcIlRva2VuXCIpO1xuICAgICAgICAgICAgICAgIGlmIChvID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGUgPT0gXCJmdW5jdGlvblwiICYmIGUociwgdSwgZik7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk51bGwgdG9rZW4gcmV0dXJuZWQgYnkgWHNyZiBlbmFibGVkIGhhbmRsZXJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHQudGVzdChpLnVybCkgPyBpLnVybCA9IGkudXJsLnJlcGxhY2UodCwgXCIkMXRva2VuPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KG8pKSA6IGkuZGF0YSA9IGkuZGF0YS5yZXBsYWNlKHQsIFwiJDF0b2tlbj1cIiArIGVuY29kZVVSSUNvbXBvbmVudChvKSksICQuYWpheChpKSwgbiA9IG9cbiAgICAgICAgICAgIH0gZWxzZSB0eXBlb2YgZSA9PSBcImZ1bmN0aW9uXCIgJiYgZShyLCB1LCBmKVxuICAgICAgICB9KVxuICAgIH0pLCBpID0ge1xuICAgICAgICBzZXRUb2tlbjogbyxcbiAgICAgICAgZ2V0VG9rZW46IHUsXG4gICAgICAgIGFsbFVybHNFbmFibGVkOiAhMSxcbiAgICAgICAgYWRkRW5hYmxlZFVybDogZVxuICAgIH1cbn0oKTtcblxuOyAvLy8gUm9ibG94RXZlbnRNYW5hZ2VyLmpzXG5mdW5jdGlvbiBSQlhCYXNlRXZlbnRMaXN0ZW5lcigpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUkJYQmFzZUV2ZW50TGlzdGVuZXIpKSByZXR1cm4gbmV3IFJCWEJhc2VFdmVudExpc3RlbmVyO1xuICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBmb3IgKGV2ZW50S2V5IGluIHRoaXMuZXZlbnRzKSAkKGRvY3VtZW50KS5iaW5kKHRoaXMuZXZlbnRzW2V2ZW50S2V5XSwgJC5wcm94eSh0aGlzLmxvY2FsQ29weSwgdGhpcykpXG4gICAgfSwgdGhpcy5ldmVudHMgPSBbXSwgdGhpcy5sb2NhbENvcHkgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgIHZhciByID0gJC5leHRlbmQoITAsIHt9LCBuKSxcbiAgICAgICAgICAgIGkgPSAkLmV4dGVuZCghMCwge30sIHQpO1xuICAgICAgICB0aGlzLmhhbmRsZUV2ZW50KHIsIGkpXG4gICAgfSwgdGhpcy5kaXN0aWxsRGF0YSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY29uc29sZS5sb2coXCJSQlhFdmVudExpc3RlbmVyIGRpc3RpbGxEYXRhIC0gUGxlYXNlIGltcGxlbWVudCBtZVwiKSwgITFcbiAgICB9LCB0aGlzLmhhbmRsZUV2ZW50ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjb25zb2xlLmxvZyhcIkV2ZW50TGlzdGVuZXIgaGFuZGxlRXZlbnQgLSBQbGVhc2UgaW1wbGVtZW50IG1lXCIpLCAhMVxuICAgIH0sIHRoaXMuZmlyZUV2ZW50ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjb25zb2xlLmxvZyhcIkV2ZW50TGlzdGVuZXIgZmlyZUV2ZW50IC0gUGxlYXNlIGltcGxlbWVudCBtZVwiKSwgITFcbiAgICB9XG59XG5Sb2Jsb3hFdmVudE1hbmFnZXIgPSBuZXcgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gdShuKSB7XG4gICAgICAgIHZhciBpID0gbmV3IFJlZ0V4cChuICsgXCI9KFteO10qKVwiKSxcbiAgICAgICAgICAgIHQgPSBpLmV4ZWMoZG9jdW1lbnQuY29va2llKTtcbiAgICAgICAgcmV0dXJuIHQgPyB0WzFdIDogbnVsbFxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHQobikge1xuICAgICAgICBmb3IgKHZhciB1ID0ge30sIHIgPSBuLnNwbGl0KFwiJlwiKSwgaSwgdCA9IDA7IHQgPCByLmxlbmd0aDsgdCsrKSBpID0gclt0XS5zcGxpdChcIj1cIiksIHVbaVswXV0gPSBpWzFdO1xuICAgICAgICByZXR1cm4gdVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGkobikge1xuICAgICAgICB2YXIgaSA9IHUobik7XG4gICAgICAgIHJldHVybiBpID8gdChpKSA6IG51bGxcbiAgICB9XG4gICAgdmFyIG4gPSBbXSxcbiAgICAgICAgciA9IHt9O1xuICAgIHRoaXMuZW5hYmxlZCA9ICExLCB0aGlzLmluaXRpYWxpemVkID0gITEsIHRoaXMuZXZlbnRRdWV1ZSA9IFtdLCB0aGlzLmluaXRpYWxpemUgPSBmdW5jdGlvbihuKSB7XG4gICAgICAgIGZvciAodGhpcy5pbml0aWFsaXplZCA9ICEwLCB0aGlzLmVuYWJsZWQgPSBuOyB0aGlzLmV2ZW50UXVldWUubGVuZ3RoID4gMDspIHtcbiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5ldmVudFF1ZXVlLnBvcCgpO1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQodC5ldmVudE5hbWUsIHQuYXJncylcbiAgICAgICAgfVxuICAgIH0sIHRoaXMuZ2V0TWFya2V0aW5nR3VpZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgbiA9IGkoXCJSQlhFdmVudFRyYWNrZXJcIik7XG4gICAgICAgIHJldHVybiBuICE9IG51bGwgPyBuLmJyb3dzZXJpZCA6IC0xXG4gICAgfSwgdGhpcy50cmlnZ2VyRXZlbnQgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPyB0aGlzLmVuYWJsZWQgJiYgKHR5cGVvZiB0ID09IFwidW5kZWZpbmVkXCIgJiYgKHQgPSB7fSksIHQuZ3VpZCA9IHRoaXMuZ2V0TWFya2V0aW5nR3VpZCgpLCB0Lmd1aWQgIT0gLTEgJiYgJChkb2N1bWVudCkudHJpZ2dlcihuLCBbdF0pKSA6IHRoaXMuZXZlbnRRdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgIGV2ZW50TmFtZTogbixcbiAgICAgICAgICAgIGFyZ3M6IHRcbiAgICAgICAgfSlcbiAgICB9LCB0aGlzLnJlZ2lzdGVyQ29va2llU3RvcmVFdmVudCA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgbi5wdXNoKHQpXG4gICAgfSwgdGhpcy5pbnNlcnREYXRhU3RvcmVLZXlWYWx1ZVBhaXIgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgIHJbbl0gPSB0XG4gICAgfSwgdGhpcy5tb25pdG9yQ29va2llU3RvcmUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGksIHUsIGYsIHQsIHI7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIFJvYmxveCA9PSBcInVuZGVmaW5lZFwiIHx8IHR5cGVvZiBSb2Jsb3guQ2xpZW50ID09IFwidW5kZWZpbmVkXCIgfHwgd2luZG93LmxvY2F0aW9uLnByb3RvY29sID09IFwiaHR0cHM6XCIpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChpID0gUm9ibG94LkNsaWVudC5DcmVhdGVMYXVuY2hlcighMSksIGkgPT0gbnVsbCkgcmV0dXJuO1xuICAgICAgICAgICAgZm9yICh1ID0gMDsgdSA8IG4ubGVuZ3RoOyB1KyspIHRyeSB7XG4gICAgICAgICAgICAgICAgZiA9IG5bdV0sIHQgPSBpLkdldEtleVZhbHVlKGYpLCB0ICE9IFwiXCIgJiYgdCAhPSBcIi0xXCIgJiYgdCAhPSBcIlJCWF9OT1RfVkFMSURcIiAmJiAociA9IGV2YWwoXCIoXCIgKyB0ICsgXCIpXCIpLCByLnVzZXJUeXBlID0gci51c2VySWQgPiAwID8gXCJ1c2VyXCIgOiBcImd1ZXN0XCIsIFJvYmxveEV2ZW50TWFuYWdlci50cmlnZ2VyRXZlbnQoZiwgciksIGkuU2V0S2V5VmFsdWUoZiwgXCJSQlhfTk9UX1ZBTElEXCIpKVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgICAgIFJvYmxveC5DbGllbnQuUmVsZWFzZUxhdW5jaGVyKGksICExLCAhMSlcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICB9XG59O1xuXG47IC8vLyBSb2Jsb3hFdmVudExpc3RlbmVyLmpzXG5Sb2Jsb3hMaXN0ZW5lciA9IG5ldyBSQlhCYXNlRXZlbnRMaXN0ZW5lciwgUm9ibG94TGlzdGVuZXIuaGFuZGxlRXZlbnQgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgdmFyIHIsIHUsIGk7XG4gICAgc3dpdGNoIChuLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcInJieF9ldnRfaW5zdGFsbF9iZWdpblwiOlxuICAgICAgICAgICAgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcImd1aWRcIixcbiAgICAgICAgICAgICAgICB1c2VySWQ6IFwidXNlcmlkXCJcbiAgICAgICAgICAgIH0sIHIgPSBuLnR5cGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInJieF9ldnRfaW5pdGlhbF9pbnN0YWxsX3N0YXJ0XCI6XG4gICAgICAgICAgICBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwiZ3VpZFwiLFxuICAgICAgICAgICAgICAgIHVzZXJJZDogXCJ1c2VyaWRcIlxuICAgICAgICAgICAgfSwgciA9IG4udHlwZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9mdHBcIjpcbiAgICAgICAgICAgIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJndWlkXCIsXG4gICAgICAgICAgICAgICAgdXNlcklkOiBcInVzZXJpZFwiXG4gICAgICAgICAgICB9LCByID0gbi50eXBlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2luaXRpYWxfaW5zdGFsbF9zdWNjZXNzXCI6XG4gICAgICAgICAgICBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwiZ3VpZFwiLFxuICAgICAgICAgICAgICAgIHVzZXJJZDogXCJ1c2VyaWRcIlxuICAgICAgICAgICAgfSwgciA9IG4udHlwZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9mbXBcIjpcbiAgICAgICAgICAgIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJndWlkXCIsXG4gICAgICAgICAgICAgICAgdXNlcklkOiBcInVzZXJpZFwiXG4gICAgICAgICAgICB9LCByID0gbi50eXBlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gY29uc29sZS5sb2coXCJSb2Jsb3hFdmVudExpc3RlbmVyIC0gRXZlbnQgcmVnaXN0ZXJlZCB3aXRob3V0IGhhbmRsaW5nIGluc3RydWN0aW9uczogXCIgKyBuLnR5cGUpLCAhMVxuICAgIH1cbiAgICByZXR1cm4gdSA9IHRoaXMuZGlzdGlsbERhdGEodCwgaSksIHRoaXMuZmlyZUV2ZW50KHRoaXMuZXZlbnRUb1N0cmluZyhyLCB1KSksICEwXG59LCBSb2Jsb3hMaXN0ZW5lci5kaXN0aWxsRGF0YSA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICB2YXIgaSA9IHt9O1xuICAgIGZvciAoZGF0YUtleSBpbiB0KSB0eXBlb2YgbltkYXRhS2V5XSAhPSB0eXBlb2YgdW5kZWZpbmVkICYmIChpW3RbZGF0YUtleV1dID0gZW5jb2RlVVJJQ29tcG9uZW50KG5bZGF0YUtleV0pKTtcbiAgICByZXR1cm4gaVxufSwgUm9ibG94TGlzdGVuZXIuZXZlbnRUb1N0cmluZyA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICB2YXIgaSA9IFJvYmxveExpc3RlbmVyLnJlc3RVcmw7XG4gICAgaWYgKGkgKz0gXCI/ZXZlbnQ9XCIgKyBuICsgXCImXCIsIHQgIT0gbnVsbClcbiAgICAgICAgZm9yIChhcmcgaW4gdCkgdHlwZW9mIGFyZyAhPSB0eXBlb2YgdW5kZWZpbmVkICYmIHQuaGFzT3duUHJvcGVydHkoYXJnKSAmJiAoaSArPSBhcmcgKyBcIj1cIiArIHRbYXJnXSArIFwiJlwiKTtcbiAgICByZXR1cm4gaSA9IGkuc2xpY2UoMCwgaS5sZW5ndGggLSAxKVxufSwgUm9ibG94TGlzdGVuZXIuZmlyZUV2ZW50ID0gZnVuY3Rpb24obikge1xuICAgIHZhciB0ID0gJCgnPGltZyB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxXCIgc3JjPVwiJyArIG4gKyAnXCIvPicpXG59LCBSb2Jsb3hMaXN0ZW5lci5ldmVudHMgPSBbXCJyYnhfZXZ0X2luc3RhbGxfYmVnaW5cIiwgXCJyYnhfZXZ0X2luaXRpYWxfaW5zdGFsbF9zdGFydFwiLCBcInJieF9ldnRfZnRwXCIsIFwicmJ4X2V2dF9pbml0aWFsX2luc3RhbGxfc3VjY2Vzc1wiLCBcInJieF9ldnRfZm1wXCJdO1xuXG47IC8vLyBLb250YWdlbnRFdmVudExpc3RlbmVyLmpzXG5Lb250YWdlbnRMaXN0ZW5lciA9IG5ldyBSQlhCYXNlRXZlbnRMaXN0ZW5lciwgS29udGFnZW50TGlzdGVuZXIucmVzdFVybCA9IFwiXCIsIEtvbnRhZ2VudExpc3RlbmVyLkFQSUtleSA9IFwiXCIsIEtvbnRhZ2VudExpc3RlbmVyLlN0YWdpbmdBUElLZXkgPSBcIlwiLCBLb250YWdlbnRMaXN0ZW5lci5TdGFnaW5nRXZlbnRzID0gW10sIEtvbnRhZ2VudExpc3RlbmVyLmhhbmRsZUV2ZW50ID0gZnVuY3Rpb24obiwgdCkge1xuICAgIGZ1bmN0aW9uIGYobikge1xuICAgICAgICByZXR1cm4gbiA9IG4udG9Mb3dlckNhc2UoKSwgbiA9PSBcIndpbjMyXCIgPyBuID0gXCJXaW5kb3dzXCIgOiBuID09IFwib3N4XCIgJiYgKG4gPSBcIk1hY1wiKSwgblxuICAgIH1cbiAgICB2YXIgciwgdSwgaSwgbywgZTtcbiAgICByID0gXCJldnRcIjtcbiAgICBzd2l0Y2ggKG4udHlwZSkge1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9wYWdldmlld1wiOlxuICAgICAgICAgICAgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICBwYXRoOiBcInVcIixcbiAgICAgICAgICAgICAgICB0czogXCJ0c1wiLFxuICAgICAgICAgICAgICAgIHVzZXJfaXA6IFwiaXBcIlxuICAgICAgICAgICAgfSwgciA9IFwicGdyXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInJieF9ldnRfdXNlcmluZm9cIjpcbiAgICAgICAgICAgIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgYWdlOiBcImJcIixcbiAgICAgICAgICAgICAgICBnZW5kZXI6IFwiZ1wiXG4gICAgICAgICAgICB9LCByID0gXCJjcHVcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9lY29tbV9pdGVtXCI6XG4gICAgICAgICAgICB0LnRvdGFsID0gTWF0aC5yb3VuZCh0LnRvdGFsICogMTAwKSwgdC5wcm9kdWN0TmFtZSA9IHQucHJvZHVjdE5hbWUucmVwbGFjZSgvXFxzL2csIFwiXCIpLnJlcGxhY2UoXCJPdXRyYWdlb3VzXCIsIFwiT1wiKS5yZXBsYWNlKFwiVHVyYm9cIiwgXCJUXCIpLnJlcGxhY2UoXCJCdWlsZGVyc1wiLCBcIkJcIikucmVwbGFjZShcIkNsdWJcIiwgXCJDXCIpLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIHRvdGFsOiBcInZcIixcbiAgICAgICAgICAgICAgICBwcm92aWRlcjogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBjYXRlZ29yeTogXCJzdDJcIixcbiAgICAgICAgICAgICAgICBwcm9kdWN0TmFtZTogXCJzdDNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInR1XCJcbiAgICAgICAgICAgIH0sIHIgPSBcIm10dVwiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2Z0cFwiOlxuICAgICAgICAgICAgdC50cmFja2luZyA9IFwiXCIsIHQuc2hvcnR0cmFja2luZyA9IFwiXCIsIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgdHJhY2tpbmd0YWc6IFwidVwiLFxuICAgICAgICAgICAgICAgIHNob3J0dHJhY2tpbmc6IFwic3VcIlxuICAgICAgICAgICAgfSwgdSA9IHRoaXMuZGlzdGlsbERhdGEodCwgaSksIHIgPSBcImFwYVwiLCB0aGlzLmZpcmVFdmVudCh0aGlzLmV2ZW50VG9TdHJpbmcobi50eXBlLCByLCB1KSksIHQuZXZlbnROYW1lID0gXCJJbnN0YWxsIFN1Y2Nlc3MgRnVubmVsXCIsIHQuZXZlbnRUeXBlID0gXCJJbnN0YWxsIFN1Y2Nlc3MgRnVubmVsXCIsIHQub3MgPSBmKHQub3MpLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBvczogXCJzdDJcIixcbiAgICAgICAgICAgICAgICB1c2VyVHlwZTogXCJzdDNcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9LCB1ID0gdGhpcy5kaXN0aWxsRGF0YSh0LCBpKSwgciA9IFwiZXZ0XCIsIHRoaXMuZmlyZUV2ZW50KHRoaXMuZXZlbnRUb1N0cmluZyhuLnR5cGUsIHIsIHUpKSwgdC5ldmVudFR5cGUgPSBcIkluc3RhbGwgU3VjY2VzcyBQbGFjZVwiLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBvczogXCJzdDJcIixcbiAgICAgICAgICAgICAgICB1c2VyVHlwZTogXCJzdDNcIixcbiAgICAgICAgICAgICAgICBwbGFjZUlkOiBcIm5cIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9pbml0aWFsX2luc3RhbGxfc3VjY2Vzc1wiOlxuICAgICAgICAgICAgdC50cmFja2luZyA9IFwiXCIsIHQuc2hvcnR0cmFja2luZyA9IFwiXCIsIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgdHJhY2tpbmd0YWc6IFwidVwiLFxuICAgICAgICAgICAgICAgIHNob3J0dHJhY2tpbmc6IFwic3VcIlxuICAgICAgICAgICAgfSwgdSA9IHRoaXMuZGlzdGlsbERhdGEodCwgaSksIHIgPSBcImFwYVwiLCB0aGlzLmZpcmVFdmVudCh0aGlzLmV2ZW50VG9TdHJpbmcobi50eXBlLCByLCB1KSksIHQuZXZlbnROYW1lID0gXCJCb290c3RyYXBwZXIgSW5zdGFsbCBTdWNjZXNzIEZ1bm5lbFwiLCB0LmV2ZW50VHlwZSA9IFwiQm9vdHN0cmFwcGVyIEluc3RhbGwgU3VjY2VzcyBGdW5uZWxcIiwgdC5vcyA9IGYodC5vcyksIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgZXZlbnRUeXBlOiBcInN0MVwiLFxuICAgICAgICAgICAgICAgIG9zOiBcInN0MlwiLFxuICAgICAgICAgICAgICAgIHVzZXJUeXBlOiBcInN0M1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50TmFtZTogXCJuXCJcbiAgICAgICAgICAgIH0sIHUgPSB0aGlzLmRpc3RpbGxEYXRhKHQsIGkpLCByID0gXCJldnRcIiwgdGhpcy5maXJlRXZlbnQodGhpcy5ldmVudFRvU3RyaW5nKG4udHlwZSwgciwgdSkpLCB0LmV2ZW50VHlwZSA9IFwiQm9vdHN0cmFwcGVyIEluc3RhbGwgU3VjY2VzcyBQbGFjZVwiLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBvczogXCJzdDJcIixcbiAgICAgICAgICAgICAgICB1c2VyVHlwZTogXCJzdDNcIixcbiAgICAgICAgICAgICAgICBwbGFjZUlkOiBcIm5cIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9pbnN0YWxsX2JlZ2luXCI6XG4gICAgICAgICAgICB0LmV2ZW50TmFtZSA9IFwiSW5zdGFsbCBCZWdpblwiLCB0LmV2ZW50VHlwZSA9IFwiSW5zdGFsbCBCZWdpblwiLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBvczogXCJzdDJcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2luaXRpYWxfaW5zdGFsbF9zdGFydFwiOlxuICAgICAgICAgICAgdC5ldmVudE5hbWUgPSBcIkJvb3RzdHJhcHBlciBJbnN0YWxsIEJlZ2luXCIsIHQuZXZlbnRUeXBlID0gXCJCb290c3RyYXBwZXIgSW5zdGFsbCBCZWdpblwiLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBvczogXCJzdDJcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2ZtcFwiOlxuICAgICAgICAgICAgdC5ldmVudE5hbWUgPSBcIkZpdmUgTWludXRlIFBsYXkgRnVubmVsXCIsIHQuZXZlbnRUeXBlID0gXCJGaXZlIE1pbnV0ZSBQbGF5IEZ1bm5lbFwiLCB0Lm9zID0gZih0Lm9zKSwgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICBldmVudFR5cGU6IFwic3QxXCIsXG4gICAgICAgICAgICAgICAgb3M6IFwic3QyXCIsXG4gICAgICAgICAgICAgICAgdXNlclR5cGU6IFwic3QzXCIsXG4gICAgICAgICAgICAgICAgZXZlbnROYW1lOiBcIm5cIlxuICAgICAgICAgICAgfSwgdSA9IHRoaXMuZGlzdGlsbERhdGEodCwgaSksIHRoaXMuZmlyZUV2ZW50KHRoaXMuZXZlbnRUb1N0cmluZyhuLnR5cGUsIHIsIHUpKSwgdC5ldmVudFR5cGUgPSBcIkZpdmUgTWludXRlIFBsYXkgUGxhY2VcIiwgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICBldmVudFR5cGU6IFwic3QxXCIsXG4gICAgICAgICAgICAgICAgb3M6IFwic3QyXCIsXG4gICAgICAgICAgICAgICAgdXNlclR5cGU6IFwic3QzXCIsXG4gICAgICAgICAgICAgICAgcGxhY2VJZDogXCJuXCJcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInJieF9ldnRfcGxheV91c2VyXCI6XG4gICAgICAgICAgICB0LmV2ZW50TmFtZSA9IFwiUGxheSBVc2VyXCIsIHQuZXZlbnRUeXBlID0gXCJQbGF5IFVzZXJcIiwgdC5nZW5kZXIgPSB0LmdlbmRlciwgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICBldmVudFR5cGU6IFwic3QxXCIsXG4gICAgICAgICAgICAgICAgZ2VuZGVyOiBcInN0MlwiLFxuICAgICAgICAgICAgICAgIGFnZTogXCJzdDNcIixcbiAgICAgICAgICAgICAgICBwbGFjZUlkOiBcImxcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X3BsYXlfZ3Vlc3RcIjpcbiAgICAgICAgICAgIHQuZXZlbnROYW1lID0gXCJQbGF5IEd1ZXN0XCIsIHQuZXZlbnRUeXBlID0gXCJQbGF5IEd1ZXN0XCIsIHQuZ2VuZGVyID0gdC5nZW5kZXIsIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgZXZlbnRUeXBlOiBcInN0MVwiLFxuICAgICAgICAgICAgICAgIGdlbmRlcjogXCJzdDJcIixcbiAgICAgICAgICAgICAgICBwbGFjZUlkOiBcImxcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X3NpZ251cFwiOlxuICAgICAgICAgICAgdC5ldmVudE5hbWUgPSBcIlNpZ24gVXAgRnVubmVsXCIsIHQuZXZlbnRUeXBlID0gXCJTaWduIFVwIEZ1bm5lbFwiLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9LCB1ID0gdGhpcy5kaXN0aWxsRGF0YSh0LCBpKSwgciA9IFwiZXZ0XCIsIHRoaXMuZmlyZUV2ZW50KHRoaXMuZXZlbnRUb1N0cmluZyhuLnR5cGUsIHIsIHUpKSwgdC5ldmVudE5hbWUgPSBcIlNpZ24gVXBcIiwgdC5ldmVudFR5cGUgPSBcIlNpZ24gVXBcIiwgdC5nZW5kZXIgPSB0LmdlbmRlciwgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICBldmVudFR5cGU6IFwic3QxXCIsXG4gICAgICAgICAgICAgICAgZ2VuZGVyOiBcInN0MlwiLFxuICAgICAgICAgICAgICAgIGFnZTogXCJzdDNcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2Vjb21tX2N1c3RvbVwiOlxuICAgICAgICAgICAgdC5ldmVudFR5cGUgPSBcIlB1cmNoYXNlXCIsIHQucHJvZHVjdE5hbWUgPSB0LnByb2R1Y3ROYW1lLnJlcGxhY2UoL1xccy9nLCBcIlwiKS5yZXBsYWNlKFwiT3V0cmFnZW91c1wiLCBcIk9cIikucmVwbGFjZShcIlR1cmJvXCIsIFwiVFwiKS5yZXBsYWNlKFwiQnVpbGRlcnNcIiwgXCJCXCIpLnJlcGxhY2UoXCJDbHViXCIsIFwiQ1wiKSwgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICBldmVudFR5cGU6IFwic3QxXCIsXG4gICAgICAgICAgICAgICAgcHJvdmlkZXI6IFwic3QyXCIsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnk6IFwic3QzXCIsXG4gICAgICAgICAgICAgICAgcHJvZHVjdE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2FidGVzdFwiOlxuICAgICAgICAgICAgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICBleHBlcmltZW50OiBcInN0MVwiLFxuICAgICAgICAgICAgICAgIHZhcmlhdGlvbjogXCJuXCJcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInJieF9ldnRfcGFnZXZpZXdfY3VzdG9tXCI6XG4gICAgICAgICAgICB0LmV2ZW50TmFtZSA9IHQucGFnZSwgaSA9IHR5cGVvZiB0LnVzZXJUeXBlID09IFwidW5kZWZpbmVkXCIgPyB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgcGFnZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9IDoge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIHBhZ2U6IFwic3QxXCIsXG4gICAgICAgICAgICAgICAgdXNlclR5cGU6IFwic3QyXCIsXG4gICAgICAgICAgICAgICAgZXZlbnROYW1lOiBcIm5cIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9nZW5lcmljXCI6XG4gICAgICAgICAgICB0LmV2ZW50TmFtZSA9IHQudHlwZSwgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0MVwiLFxuICAgICAgICAgICAgICAgIGV2ZW50TmFtZTogXCJuXCJcbiAgICAgICAgICAgIH0sIHR5cGVvZiB0Lm9wdDEgIT0gXCJ1bmRlZmluZWRcIiAmJiAoaS5vcHQxID0gXCJzdDJcIiksIHR5cGVvZiB0Lm9wdDIgIT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgdC5vcHQxICE9IFwidW5kZWZpbmVkXCIgJiYgKGkub3B0MiA9IFwic3QzXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X3NvdXJjZV90cmFja2luZ1wiOlxuICAgICAgICAgICAgdC5pbnN0YWxsZWQgPSAwLCB0LnNvdXJjZVR5cGUgPSBcImFkXCIsIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgc291cmNlVHlwZTogXCJ0dVwiLFxuICAgICAgICAgICAgICAgIGluc3RhbGxlZDogXCJpXCIsXG4gICAgICAgICAgICAgICAgc291cmNlOiBcInN0MVwiLFxuICAgICAgICAgICAgICAgIGNhbXBhaWduOiBcInN0MlwiLFxuICAgICAgICAgICAgICAgIG1lZGl1bTogXCJzdDNcIlxuICAgICAgICAgICAgfSwgciA9IFwidWNjXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInJieF9ldnRfY2FyZF9yZWRlbXB0aW9uXCI6XG4gICAgICAgICAgICB0LmV2ZW50VHlwZSA9IFwiQ2FyZFJlZGVtcHRpb25cIiwgdC5ldmVudE5hbWUgPSBcIkNhcmRSZWRlbXB0aW9uXCIsIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgZXZlbnRUeXBlOiBcInN0MVwiLFxuICAgICAgICAgICAgICAgIG1lcmNoYW50OiBcInN0MlwiLFxuICAgICAgICAgICAgICAgIGNhcmRWYWx1ZTogXCJzdDNcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X3BvcHVwX2FjdGlvblwiOlxuICAgICAgICAgICAgdC5ldmVudFR5cGUgPSBcIkd1ZXN0UGxheVBvcHVwQWN0aW9uXCIsIHQuZXZlbnROYW1lID0gXCJHdWVzdFBsYXlQb3B1cEFjdGlvblwiLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBhY3Rpb246IFwic3QyXCIsXG4gICAgICAgICAgICAgICAgZXZlbnROYW1lOiBcIm5cIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUubG9nKFwiS29udGFnZW50TGlzdGVuZXIgLSBFdmVudCByZWdpc3RlcmVkIHdpdGhvdXQgaGFuZGxpbmcgaW5zdHJ1Y3Rpb25zOiBcIiArIG4udHlwZSksICExXG4gICAgfVxuICAgIHJldHVybiB1ID0gdGhpcy5kaXN0aWxsRGF0YSh0LCBpKSwgdGhpcy5maXJlRXZlbnQodGhpcy5ldmVudFRvU3RyaW5nKG4udHlwZSwgciwgdSkpLCAhMFxufSwgS29udGFnZW50TGlzdGVuZXIuZGlzdGlsbERhdGEgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgdmFyIGkgPSB7fTtcbiAgICBmb3IgKGRhdGFLZXkgaW4gdCkgdHlwZW9mIG5bZGF0YUtleV0gIT0gdHlwZW9mIHVuZGVmaW5lZCAmJiAoaVt0W2RhdGFLZXldXSA9IGVuY29kZVVSSUNvbXBvbmVudChuW2RhdGFLZXldKSk7XG4gICAgcmV0dXJuIGlcbn0sIEtvbnRhZ2VudExpc3RlbmVyLmV2ZW50VG9TdHJpbmcgPSBmdW5jdGlvbihuLCB0LCBpKSB7XG4gICAgdmFyIHIgPSBLb250YWdlbnRMaXN0ZW5lci5yZXN0VXJsLFxuICAgICAgICB1ID0gdGhpcy5pc1N0YWdpbmdFdmVudChuLCBpKSA/IEtvbnRhZ2VudExpc3RlbmVyLlN0YWdpbmdBUElLZXkgOiBLb250YWdlbnRMaXN0ZW5lci5BUElLZXk7XG4gICAgaWYgKHIgKz0gdSArIFwiL1wiICsgdCArIFwiLz9cIiwgaSAhPSBudWxsKVxuICAgICAgICBmb3IgKGFyZyBpbiBpKSB0eXBlb2YgYXJnICE9IHR5cGVvZiB1bmRlZmluZWQgJiYgaS5oYXNPd25Qcm9wZXJ0eShhcmcpICYmIChyICs9IGFyZyArIFwiPVwiICsgaVthcmddICsgXCImXCIpO1xuICAgIHJldHVybiByID0gci5zbGljZSgwLCByLmxlbmd0aCAtIDEpXG59LCBLb250YWdlbnRMaXN0ZW5lci5pc1N0YWdpbmdFdmVudCA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICB2YXIgciwgaTtcbiAgICBzdGFnaW5nID0gITE7XG4gICAgdHJ5IHtcbiAgICAgICAgZm9yIChyIGluIHRoaXMuU3RhZ2luZ0V2ZW50cylcbiAgICAgICAgICAgIGlmIChpID0gdGhpcy5TdGFnaW5nRXZlbnRzW3JdLCB0eXBlb2YgaSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG4gPT0gaSkge1xuICAgICAgICAgICAgICAgICAgICBzdGFnaW5nID0gITA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaSA9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBpW25dICE9IFwidW5kZWZpbmVkXCIgJiYgaVtuXSA9PSB0LnN0MSkge1xuICAgICAgICAgICAgc3RhZ2luZyA9ICEwO1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKHUpIHt9XG4gICAgcmV0dXJuIHN0YWdpbmdcbn0sIEtvbnRhZ2VudExpc3RlbmVyLmZpcmVFdmVudCA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgdCA9ICQoJzxpbWcgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiMVwiIHNyYz1cIicgKyBuICsgJ1wiLz4nKVxufSwgS29udGFnZW50TGlzdGVuZXIuZXZlbnRzID0gW1wicmJ4X2V2dF9wYWdldmlld1wiLCBcInJieF9ldnRfaW5zdGFsbF9iZWdpblwiLCBcInJieF9ldnRfaW5pdGlhbF9pbnN0YWxsX3N0YXJ0XCIsIFwicmJ4X2V2dF9mdHBcIiwgXCJyYnhfZXZ0X2luaXRpYWxfaW5zdGFsbF9zdWNjZXNzXCIsIFwicmJ4X2V2dF9mbXBcIiwgXCJyYnhfZXZ0X3BsYXlfdXNlclwiLCBcInJieF9ldnRfcGxheV9ndWVzdFwiLCBcInJieF9ldnRfc2lnbnVwXCIsIFwicmJ4X2V2dF9lY29tbV9pdGVtXCIsIFwicmJ4X2V2dF9lY29tbV9jdXN0b21cIiwgXCJyYnhfZXZ0X3VzZXJpbmZvXCIsIFwicmJ4X2V2dF9hYnRlc3RcIiwgXCJyYnhfZXZ0X3BhZ2V2aWV3X2N1c3RvbVwiLCBcInJieF9ldnRfZ2VuZXJpY1wiLCBcInJieF9ldnRfc291cmNlX3RyYWNraW5nXCIsIFwicmJ4X2V2dF9jYXJkX3JlZGVtcHRpb25cIiwgXCJyYnhfZXZ0X3BvcHVwX2FjdGlvblwiXTtcblxuOyAvLy8gR29vZ2xlRXZlbnRMaXN0ZW5lci5qc1xuR29vZ2xlTGlzdGVuZXIgPSBuZXcgUkJYQmFzZUV2ZW50TGlzdGVuZXIsIEdvb2dsZUxpc3RlbmVyLmhhbmRsZUV2ZW50ID0gZnVuY3Rpb24obiwgdCkge1xuICAgIGZ1bmN0aW9uIHIobikge1xuICAgICAgICByZXR1cm4gbiA9IG4udG9Mb3dlckNhc2UoKSwgbiA9PSBcIndpbjMyXCIgPyBuID0gXCJXaW5kb3dzXCIgOiBuID09IFwib3N4XCIgJiYgKG4gPSBcIk1hY1wiKSwgblxuICAgIH1cbiAgICB2YXIgZiwgdSwgaTtcbiAgICBzd2l0Y2ggKG4udHlwZSkge1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9pbml0aWFsX2luc3RhbGxfYmVnaW5cIjpcbiAgICAgICAgICAgIHQub3MgPSByKHQub3MpLCB0LmNhdGVnb3J5ID0gXCJCb290c3RyYXBwZXIgSW5zdGFsbCBCZWdpblwiLCBpID0ge1xuICAgICAgICAgICAgICAgIG9zOiBcImFjdGlvblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2Z0cFwiOlxuICAgICAgICAgICAgdC5vcyA9IHIodC5vcyksIHQuY2F0ZWdvcnkgPSBcIkluc3RhbGwgU3VjY2Vzc1wiLCBpID0ge1xuICAgICAgICAgICAgICAgIG9zOiBcImFjdGlvblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2luaXRpYWxfaW5zdGFsbF9zdWNjZXNzXCI6XG4gICAgICAgICAgICB0Lm9zID0gcih0Lm9zKSwgdC5jYXRlZ29yeSA9IFwiQm9vdHN0cmFwcGVyIEluc3RhbGwgU3VjY2Vzc1wiLCBpID0ge1xuICAgICAgICAgICAgICAgIG9zOiBcImFjdGlvblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2ZtcFwiOlxuICAgICAgICAgICAgdC5vcyA9IHIodC5vcyksIHQuY2F0ZWdvcnkgPSBcIkZpdmUgTWludXRlIFBsYXlcIiwgaSA9IHtcbiAgICAgICAgICAgICAgICBvczogXCJhY3Rpb25cIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9hYnRlc3RcIjpcbiAgICAgICAgICAgIGkgPSB7XG4gICAgICAgICAgICAgICAgZXhwZXJpbWVudDogXCJjYXRlZ29yeVwiLFxuICAgICAgICAgICAgICAgIHZhcmlhdGlvbjogXCJhY3Rpb25cIixcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiBcIm9wdF9sYWJlbFwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2NhcmRfcmVkZW1wdGlvblwiOlxuICAgICAgICAgICAgdC5jYXRlZ29yeSA9IFwiQ2FyZFJlZGVtcHRpb25cIiwgaSA9IHtcbiAgICAgICAgICAgICAgICBtZXJjaGFudDogXCJhY3Rpb25cIixcbiAgICAgICAgICAgICAgICBjYXJkVmFsdWU6IFwib3B0X2xhYmVsXCJcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBjb25zb2xlLmxvZyhcIkdvb2dsZUxpc3RlbmVyIC0gRXZlbnQgcmVnaXN0ZXJlZCB3aXRob3V0IGhhbmRsaW5nIGluc3RydWN0aW9uczogXCIgKyBuLnR5cGUpLCAhMVxuICAgIH1cbiAgICByZXR1cm4gaS5jYXRlZ29yeSA9IFwiY2F0ZWdvcnlcIiwgdSA9IHRoaXMuZGlzdGlsbERhdGEodCwgaSksIHRoaXMuZmlyZUV2ZW50KHUpLCAhMFxufSwgR29vZ2xlTGlzdGVuZXIuZGlzdGlsbERhdGEgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgdmFyIGkgPSB7fSxcbiAgICAgICAgcjtcbiAgICBmb3IgKGRhdGFLZXkgaW4gdCkgdHlwZW9mIG5bZGF0YUtleV0gIT0gdHlwZW9mIHVuZGVmaW5lZCAmJiAoaVt0W2RhdGFLZXldXSA9IG5bZGF0YUtleV0pO1xuICAgIHJldHVybiByID0gW2kuY2F0ZWdvcnksIGkuYWN0aW9uXSwgaS5vcHRfbGFiZWwgIT0gbnVsbCAmJiAociA9IHIuY29uY2F0KGkub3B0X2xhYmVsKSksIGkub3B0X3ZhbHVlICE9IG51bGwgJiYgKHIgPSByLmNvbmNhdChpLm9wdF92YWx1ZSkpLCByXG59LCBHb29nbGVMaXN0ZW5lci5maXJlRXZlbnQgPSBmdW5jdGlvbihuKSB7XG4gICAgaWYgKHR5cGVvZiBfZ2FxICE9IHR5cGVvZiB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIGkgPSBbXCJfdHJhY2tFdmVudFwiXSxcbiAgICAgICAgICAgIHQgPSBbXCJiLl90cmFja0V2ZW50XCJdO1xuICAgICAgICBfZ2FxLnB1c2goaS5jb25jYXQobikpLCBfZ2FxLnB1c2godC5jb25jYXQobikpXG4gICAgfVxufSwgR29vZ2xlTGlzdGVuZXIuZXZlbnRzID0gW1wicmJ4X2V2dF9pbml0aWFsX2luc3RhbGxfYmVnaW5cIiwgXCJyYnhfZXZ0X2Z0cFwiLCBcInJieF9ldnRfaW5pdGlhbF9pbnN0YWxsX3N1Y2Nlc3NcIiwgXCJyYnhfZXZ0X2ZtcFwiLCBcInJieF9ldnRfYWJ0ZXN0XCIsIFwicmJ4X2V2dF9jYXJkX3JlZGVtcHRpb25cIl07XG5cbjsgLy8vIE1vbmdvRXZlbnRMaXN0ZW5lci5qc1xuTW9uZ29MaXN0ZW5lciA9IG5ldyBSQlhCYXNlRXZlbnRMaXN0ZW5lciwgTW9uZ29MaXN0ZW5lci5oYW5kbGVFdmVudCA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICB2YXIgaTtcbiAgICByZXR1cm4gaSA9IHR5cGVvZiB0LnNoYXJkID09IFwidW5kZWZpbmVkXCIgPyB0aGlzLmRlZmF1bHRTaGFyZCA6IHQuc2hhcmQsIHR5cGVvZiB0LmV2ZW50TmFtZSA9PSBcInVuZGVmaW5lZFwiICYmICh0LmV2ZW50TmFtZSA9IG4udHlwZSksIHQuZXZlbnROYW1lID09PSBcIkphdmFzY3JpcHRFeGNlcHRpb25Mb2dnaW5nRXZlbnRcIiA/IGRhdGFNYXAgPSB7XG4gICAgICAgIGNhdGVnb3J5OiBcImNhdGVnb3J5XCIsXG4gICAgICAgIHVybDogXCJ1cmxcIixcbiAgICAgICAgbXNnOiBcIm1zZ1wiLFxuICAgICAgICBsaW5lOiBcImxpbmVcIixcbiAgICAgICAgdWE6IFwiVUFcIlxuICAgIH0gOiAodHlwZW9mIHQuY2F0ZWdvcnkgPT0gXCJ1bmRlZmluZWRcIiAmJiAodC5jYXRlZ29yeSA9IE1vbmdvTGlzdGVuZXIuZ2V0Q2F0ZWdvcnlGcm9tRXZlbnROYW1lKHQuZXZlbnROYW1lKSksIHQudXNlcklkID0gTW9uZ29MaXN0ZW5lci51c2VySWQsIHQuaXAgPSBNb25nb0xpc3RlbmVyLmNsaWVudElwQWRkcmVzcywgZGF0YU1hcCA9IHtcbiAgICAgICAgZ3VpZDogXCJndWlkXCIsXG4gICAgICAgIGNhdGVnb3J5OiBcImNhdGVnb3J5XCIsXG4gICAgICAgIHVzZXJJZDogXCJ1c2VyaWRcIixcbiAgICAgICAgaXA6IFwiaXBcIlxuICAgIH0pLCB0aGlzLmZpcmVFdmVudChpLCB0aGlzLmRpc3RpbGxEYXRhKHQsIGRhdGFNYXApKSwgITBcbn0sIE1vbmdvTGlzdGVuZXIuZ2V0Q2F0ZWdvcnlGcm9tRXZlbnROYW1lID0gZnVuY3Rpb24obikge1xuICAgIHN3aXRjaCAobikge1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9zaXRldG91Y2hcIjpcbiAgICAgICAgICAgIHJldHVybiBcIlNpdGVUb3VjaFwiO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9mbXBcIjpcbiAgICAgICAgICAgIHJldHVybiBcIkZpdmVNaW51dGVQbGF5XCI7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X3BsYXlfdXNlclwiOlxuICAgICAgICBjYXNlIFwicmJ4X2V2dF9wbGF5X2d1ZXN0XCI6XG4gICAgICAgICAgICByZXR1cm4gXCJQbGF5XCI7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gblxuICAgIH1cbn0sIE1vbmdvTGlzdGVuZXIuZGlzdGlsbERhdGEgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgdmFyIGkgPSB7fTtcbiAgICBmb3IgKGRhdGFLZXkgaW4gdCkgdHlwZW9mIG5bZGF0YUtleV0gIT0gdHlwZW9mIHVuZGVmaW5lZCAmJiAoaVt0W2RhdGFLZXldXSA9IGVuY29kZVVSSUNvbXBvbmVudChuW2RhdGFLZXldKSk7XG4gICAgcmV0dXJuIGlcbn0sIE1vbmdvTGlzdGVuZXIuZmlyZUV2ZW50ID0gZnVuY3Rpb24obiwgdCkge1xuICAgICQuYWpheCh7XG4gICAgICAgIHVybDogTW9uZ29MaXN0ZW5lci5sb2dnaW5nVVJJICsgbixcbiAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcbiAgICAgICAganNvbnBDYWxsYmFjazogXCJNb25nb0xpc3RlbmVyLmNhbGxiYWNrXCIsXG4gICAgICAgIGRhdGE6IHRcbiAgICB9KVxufSwgTW9uZ29MaXN0ZW5lci5jYWxsYmFjayA9IGZ1bmN0aW9uKCkge30sIE1vbmdvTGlzdGVuZXIuZXZlbnRzID0gW1wiSmF2YXNjcmlwdEV4Y2VwdGlvbkxvZ2dpbmdFdmVudFwiXTtcblxuOyAvLy8gU2VhcmNoVmlzaW9uTGlzdGVuZXIuanNcblNlYXJjaFZpc2lvbkxpc3RlbmVyID0gbmV3IFJCWEJhc2VFdmVudExpc3RlbmVyLCBTZWFyY2hWaXNpb25MaXN0ZW5lci5oYW5kbGVFdmVudCA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICB2YXIgaSA9IG51bGw7XG4gICAgc3dpdGNoIChuLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcInJieF9ldnRfZm1wXCI6XG4gICAgICAgICAgICBpID0ge1xuICAgICAgICAgICAgICAgIGVzdnRrX3Y6IFwiMVwiLFxuICAgICAgICAgICAgICAgIGVzdnRrX2VzdmlkOiBcIkE0MDEyNVwiLFxuICAgICAgICAgICAgICAgIGV2ZW50OiBcImZpdmVfbWludXRlX3BsYXlcIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9mdHBcIjpcbiAgICAgICAgICAgIGkgPSB7XG4gICAgICAgICAgICAgICAgZXN2dGtfdjogXCIxXCIsXG4gICAgICAgICAgICAgICAgZXN2dGtfZXN2aWQ6IFwiQTQwMTI1XCIsXG4gICAgICAgICAgICAgICAgZXZlbnQ6IFwiZmlyc3RfcGxheVwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2luc3RhbGxfYmVnaW5cIjpcbiAgICAgICAgICAgIGkgPSB7XG4gICAgICAgICAgICAgICAgZXN2dGtfdjogXCIxXCIsXG4gICAgICAgICAgICAgICAgZXN2dGtfZXN2aWQ6IFwiQTQwMTI1XCIsXG4gICAgICAgICAgICAgICAgZXZlbnQ6IFwiZG93bmxvYWRcIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9zaWdudXBcIjpcbiAgICAgICAgICAgIGkgPSB7XG4gICAgICAgICAgICAgICAgZXN2dGtfdjogXCIxXCIsXG4gICAgICAgICAgICAgICAgZXN2dGtfZXN2aWQ6IFwiQTQwMTI1XCIsXG4gICAgICAgICAgICAgICAgZXZlbnQ6IFwiZXN2X3NpZ251cFwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2dlbmVyaWNcIjpcbiAgICAgICAgICAgIHQudHlwZSA9PT0gXCJPbmVEYXlSZXR1cm5cIiAmJiAoaSA9IHtcbiAgICAgICAgICAgICAgICBlc3Z0a192OiBcIjFcIixcbiAgICAgICAgICAgICAgICBlc3Z0a19lc3ZpZDogXCJBNDAxMjVcIixcbiAgICAgICAgICAgICAgICBldmVudDogXCJyZXR1cm5cIlxuICAgICAgICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIGkgIT09IG51bGwgJiYgKGkub3JkZXJpZCA9IHQuZ3VpZCwgdGhpcy5maXJlRXZlbnQoaSkpLCAhMFxufSwgU2VhcmNoVmlzaW9uTGlzdGVuZXIuZmlyZUV2ZW50ID0gZnVuY3Rpb24obikge1xuICAgIHR5cGVvZiBlc3Z0a190cmFjayAhPSBcInVuZGVmaW5lZFwiID8gZXN2dGtfdHJhY2sobikgOiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICBTZWFyY2hWaXNpb25MaXN0ZW5lci5maXJlRXZlbnQobilcbiAgICB9LCA1MDApXG59LCBTZWFyY2hWaXNpb25MaXN0ZW5lci5ldmVudHMgPSBbXCJyYnhfZXZ0X2ZtcFwiLCBcInJieF9ldnRfZnRwXCIsIFwicmJ4X2V2dF9pbnN0YWxsX2JlZ2luXCIsIFwicmJ4X2V2dF9zaWdudXBcIiwgXCJyYnhfZXZ0X2dlbmVyaWNcIl07XG5cbjsgLy8vIFNpdGVUb3VjaEV2ZW50LmpzXG50eXBlb2YgUm9ibG94ID09IFwidW5kZWZpbmVkXCIgJiYgKFJvYmxveCA9IHt9KSwgUm9ibG94LlNpdGVUb3VjaEV2ZW50ID0gZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICAgICAgdmFyIHQsIGk7XG4gICAgICAgIHJldHVybiB0eXBlb2YgbG9jYWxTdG9yYWdlICE9IFwidW5kZWZpbmVkXCIgJiYgKHQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuKSksICh0eXBlb2YgdCA9PSBcInVuZGVmaW5lZFwiIHx8IHQgPT09IG51bGwpICYmICh0ID0gJC5jb29raWUobikpLCBpID0gRGF0ZS5wYXJzZSh0KSwgdCAmJiAhaXNOYU4oaSkgPyBuZXcgRGF0ZShpKSA6IG5ldyBEYXRlKDApXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaShpKSB7XG4gICAgICAgIHR5cGVvZiBpID09IFwidW5kZWZpbmVkXCIgJiYgKGkgPSBuZXcgRGF0ZSksIHR5cGVvZiBsb2NhbFN0b3JhZ2UgIT0gXCJ1bmRlZmluZWRcIiAmJiAodC51c2VMb2NhbFN0b3JhZ2UgPyAkLmNvb2tpZShuLCBudWxsKSA6IGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKG4pKSwgdC51c2VMb2NhbFN0b3JhZ2UgJiYgdHlwZW9mIGxvY2FsU3RvcmFnZSAhPSBcInVuZGVmaW5lZFwiID8gbG9jYWxTdG9yYWdlLnNldEl0ZW0obiwgaSkgOiAkLmNvb2tpZShuLCBpLCB7XG4gICAgICAgICAgICBleHBpcmVzOiAxMDBcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1KCkge1xuICAgICAgICB2YXIgbiA9IHIoKTtcbiAgICAgICAgTWF0aC5mbG9vcigobmV3IERhdGUgLSBuKSAvIDM2ZTUpID49IHQuZGF0ZURpZmZUaHJlc2hvbGRJbkhvdXJzICYmIFJvYmxveEV2ZW50TWFuYWdlci50cmlnZ2VyRXZlbnQoXCJyYnhfZXZ0X3NpdGV0b3VjaFwiKSwgaSgpXG4gICAgfVxuICAgIHZhciBuID0gXCJMYXN0QWN0aXZpdHlcIixcbiAgICAgICAgdCA9IHtcbiAgICAgICAgICAgIHVwZGF0ZUxhc3RBY3Rpdml0eUFuZEZpcmVFdmVudDogdSxcbiAgICAgICAgICAgIGdldExhc3RBY3Rpdml0eTogcixcbiAgICAgICAgICAgIHNldExhc3RBY3Rpdml0eTogaSxcbiAgICAgICAgICAgIGRhdGVEaWZmVGhyZXNob2xkSW5Ib3VyczogMyxcbiAgICAgICAgICAgIHVzZUxvY2FsU3RvcmFnZTogITFcbiAgICAgICAgfTtcbiAgICByZXR1cm4gdFxufSgpO1xuXG47IC8vLyBKU0Vycm9yVHJhY2tlci5qc1xudHlwZW9mIFJvYmxveCA9PSBcInVuZGVmaW5lZFwiICYmIChSb2Jsb3ggPSB7fSksIFJvYmxveC5KU0Vycm9yVHJhY2tlciA9IHtcbiAgICBzaG93QWxlcnQ6ICExLFxuICAgIGRlZmF1bHRQaXhlbDogXCJHQVwiLFxuICAgIGludGVybmFsRXZlbnRMaXN0ZW5lclBpeGVsRW5hYmxlZDogITEsXG4gICAgamF2YXNjcmlwdFN0YWNrVHJhY2VFbmFibGVkOiAhMSxcbiAgICBkYXRhOiB7XG4gICAgICAgIGNhdGVnb3J5OiBcIkphdmFzY3JpcHQgRXJyb3JzXCJcbiAgICB9LFxuICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdHlwZW9mIG4gIT0gXCJ1bmRlZmluZWRcIiAmJiAodHlwZW9mIG4uc2hvd0FsZXJ0ICE9IFwidW5kZWZpbmVkXCIgJiYgKHRoaXMuc2hvd0FsZXJ0ID0gbi5zaG93QWxlcnQpLCB0eXBlb2Ygbi5pbnRlcm5hbEV2ZW50TGlzdGVuZXJQaXhlbEVuYWJsZWQgIT0gXCJ1bmRlZmluZWRcIiAmJiAodGhpcy5pbnRlcm5hbEV2ZW50TGlzdGVuZXJQaXhlbEVuYWJsZWQgPSBuLmludGVybmFsRXZlbnRMaXN0ZW5lclBpeGVsRW5hYmxlZCkpLCB0aGlzLmFkZE9uRXJyb3JFdmVudEhhbmRsZXIodGhpcy5lcnJvckhhbmRsZXIpXG4gICAgfSxcbiAgICBlcnJvckhhbmRsZXI6IGZ1bmN0aW9uKG4sIHQsIGkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIFJvYmxveC5KU0Vycm9yVHJhY2tlci5kYXRhLm1zZyA9IG4sIFJvYmxveC5KU0Vycm9yVHJhY2tlci5kYXRhLnVybCA9IHQsIFJvYmxveC5KU0Vycm9yVHJhY2tlci5kYXRhLmxpbmUgPSBpLCBSb2Jsb3guSlNFcnJvclRyYWNrZXIuZGF0YS51YSA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LCBSb2Jsb3guSlNFcnJvclRyYWNrZXIubG9nRXhjZXB0aW9uKFJvYmxveC5KU0Vycm9yVHJhY2tlci5kYXRhKVxuICAgICAgICB9IGNhdGNoIChyKSB7fVxuICAgICAgICByZXR1cm4gITBcbiAgICB9LFxuICAgIGFkZE9uRXJyb3JFdmVudEhhbmRsZXI6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdmFyIHQgPSB3aW5kb3cub25lcnJvcjtcbiAgICAgICAgd2luZG93Lm9uZXJyb3IgPSB0eXBlb2Ygd2luZG93Lm9uZXJyb3IgPT0gXCJmdW5jdGlvblwiID8gZnVuY3Rpb24oaSwgciwgdSkge1xuICAgICAgICAgICAgdChpLCByLCB1KSwgbihpLCByLCB1KVxuICAgICAgICB9IDogblxuICAgIH0sXG4gICAgcHJvY2Vzc0V4Y2VwdGlvbjogZnVuY3Rpb24obiwgdCkge1xuICAgICAgICBpZiAodHlwZW9mIG4gIT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgdHlwZW9mIG4uY2F0ZWdvcnkgPT0gXCJ1bmRlZmluZWRcIiAmJiAobi5jYXRlZ29yeSA9IFJvYmxveC5KU0Vycm9yVHJhY2tlci5kYXRhLmNhdGVnb3J5KTtcbiAgICAgICAgICAgIHN3aXRjaCAodCkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJHQVwiOlxuICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBcImNhdGVnb3J5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFwiYWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtc2c6IFwib3B0X2xhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lOiBcIm9wdF92YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIFJvYmxveC5KU0Vycm9yVHJhY2tlci5maXJlR0FQaXhlbChSb2Jsb3guSlNFcnJvclRyYWNrZXIuZGlzdGlsbEdBRGF0YShuLCBpKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJEaWFnXCI6XG4gICAgICAgICAgICAgICAgICAgIFJvYmxveC5KU0Vycm9yVHJhY2tlci5pbnRlcm5hbEV2ZW50TGlzdGVuZXJQaXhlbEVuYWJsZWQgJiYgKG4uY2F0ZWdvcnkgPSBcIkphdmFzY3JpcHRFeGNlcHRpb25zXCIsIG4uc2hhcmQgPSBcIldlYk1ldHJpY3NcIiwgbi5ldmVudE5hbWUgPSBcIkphdmFzY3JpcHRFeGNlcHRpb25Mb2dnaW5nRXZlbnRcIiwgUm9ibG94RXZlbnRNYW5hZ2VyLnRyaWdnZXJFdmVudChcIkphdmFzY3JpcHRFeGNlcHRpb25Mb2dnaW5nRXZlbnRcIiwgbikpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlJvYmxveCBKU0Vycm9yVHJhY2tlciByZWNlaXZlZCBhbiB1bmtub3duIHBpeGVsIHRvIGZpcmVcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAhMFxuICAgICAgICB9XG4gICAgfSxcbiAgICBsb2dFeGNlcHRpb246IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgUm9ibG94LkpTRXJyb3JUcmFja2VyLnByb2Nlc3NFeGNlcHRpb24obiwgUm9ibG94LkpTRXJyb3JUcmFja2VyLmRlZmF1bHRQaXhlbCksIFJvYmxveC5KU0Vycm9yVHJhY2tlci5pbnRlcm5hbEV2ZW50TGlzdGVuZXJQaXhlbEVuYWJsZWQgJiYgUm9ibG94LkpTRXJyb3JUcmFja2VyLnByb2Nlc3NFeGNlcHRpb24obiwgXCJEaWFnXCIpLCBSb2Jsb3guSlNFcnJvclRyYWNrZXIuc2hvd0Vycm9yTWVzc2FnZShuLm1zZylcbiAgICB9LFxuICAgIGRpc3RpbGxEYXRhOiBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgIHZhciByID0ge30sXG4gICAgICAgICAgICBpO1xuICAgICAgICBmb3IgKGkgaW4gdCkgdHlwZW9mIG5baV0gIT0gXCJ1bmRlZmluZWRcIiAmJiAoclt0W2ldXSA9IGVuY29kZVVSSUNvbXBvbmVudChuW2ldKSk7XG4gICAgICAgIHJldHVybiByXG4gICAgfSxcbiAgICBkaXN0aWxsR0FEYXRhOiBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgIHZhciByID0gUm9ibG94LkpTRXJyb3JUcmFja2VyLmRpc3RpbGxEYXRhKG4sIHQpLFxuICAgICAgICAgICAgaSA9IFtkZWNvZGVVUklDb21wb25lbnQoW3IuY2F0ZWdvcnldKV07XG4gICAgICAgIHJldHVybiB0eXBlb2Ygci5hY3Rpb24gIT0gdHlwZW9mIHVuZGVmaW5lZCA/IChpID0gaS5jb25jYXQoZGVjb2RlVVJJQ29tcG9uZW50KHIuYWN0aW9uKSksIHR5cGVvZiByLm9wdF9sYWJlbCAhPSB0eXBlb2YgdW5kZWZpbmVkICYmIChpID0gaS5jb25jYXQoZGVjb2RlVVJJQ29tcG9uZW50KHIub3B0X2xhYmVsKSksIHR5cGVvZiByLm9wdF92YWx1ZSAhPSB0eXBlb2YgdW5kZWZpbmVkICYmIChpID0gaS5jb25jYXQocGFyc2VJbnQoZGVjb2RlVVJJQ29tcG9uZW50KHIub3B0X3ZhbHVlKSkpKSkpIDogUm9ibG94LkpTRXJyb3JUcmFja2VyLnNob3dBbGVydCAmJiBhbGVydChcIk1pc3NpbmcgYSByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yIEdBXCIpLCBpXG4gICAgfSxcbiAgICBjcmVhdGVVUkw6IGZ1bmN0aW9uKG4sIHQsIGkpIHtcbiAgICAgICAgdmFyIHIgPSBuLFxuICAgICAgICAgICAgZiA9IFJvYmxveC5KU0Vycm9yVHJhY2tlci5kaXN0aWxsRGF0YSh0LCBpKSxcbiAgICAgICAgICAgIHU7XG4gICAgICAgIGlmIChyICs9IFwiP1wiLCBmICE9IG51bGwpXG4gICAgICAgICAgICBmb3IgKHUgaW4gZikgdHlwZW9mIHUgIT0gdHlwZW9mIHVuZGVmaW5lZCAmJiB0Lmhhc093blByb3BlcnR5KHUpICYmIChyICs9IHUgKyBcIj1cIiArIGZbdV0gKyBcIiZcIik7XG4gICAgICAgIHJldHVybiByID0gci5zbGljZSgwLCByLmxlbmd0aCAtIDEpXG4gICAgfSxcbiAgICBmaXJlR0FQaXhlbDogZnVuY3Rpb24obikge1xuICAgICAgICB0eXBlb2YgX2dhcSAhPSBcInVuZGVmaW5lZFwiICYmIF9nYXEucHVzaChbXCJjLl90cmFja0V2ZW50XCJdLmNvbmNhdChuKSlcbiAgICB9LFxuICAgIHNob3dFcnJvck1lc3NhZ2U6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgUm9ibG94LkpTRXJyb3JUcmFja2VyLnNob3dBbGVydCAmJiAobiAhPT0gbnVsbCA/IGFsZXJ0KG4pIDogYWxlcnQoXCJBbiBlcnJvciBvY2N1cmVkXCIpKVxuICAgIH1cbn07XG5cbjsgLy8vIFN0dWRpbzJBbGVydC5qc1xudmFyIHN0dWRpbzJBbGVydE1vZGFsID0ge1xuICAgIHNob3dQcm9tcHQ6ICExLFxuICAgIHVzZXJJZDogMCxcbiAgICB1cGRhdGVTdHVkaW9BbGVydFVzZXJQcmVmZXJlbmNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIsXG4gICAgICAgICAgICB1cmw6IFwiL1dlYkhhbmRsZXJzL1N0dWRpbzJBbGVydC5hc2h4P3VJZD1cIiArIHN0dWRpbzJBbGVydE1vZGFsLnVzZXJJZFxuICAgICAgICB9KVxuICAgIH0sXG4gICAgY2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICBzdHVkaW8yQWxlcnRNb2RhbC51cGRhdGVTdHVkaW9BbGVydFVzZXJQcmVmZXJlbmNlKCksICQubW9kYWwuY2xvc2UoXCIjU3R1ZGlvMkFsZXJ0TW9kYWxcIilcbiAgICB9LFxuICAgIGluaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICBzdHVkaW8yQWxlcnRNb2RhbC5zaG93UHJvbXB0ID0gJChcIiNTdHVkaW8yQWxlcnRNb2RhbFwiKS5kYXRhKFwic2hvd3Byb21wdFwiKSwgc3R1ZGlvMkFsZXJ0TW9kYWwudXNlcklkID0gJChcIiNTdHVkaW8yQWxlcnRNb2RhbFwiKS5kYXRhKFwidXNlcmlkXCIpO1xuICAgICAgICB2YXIgbiA9IHtcbiAgICAgICAgICAgIGVzY0Nsb3NlOiAhMCxcbiAgICAgICAgICAgIG9wYWNpdHk6IDgwLFxuICAgICAgICAgICAgb3ZlcmxheUNzczoge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgc3R1ZGlvMkFsZXJ0TW9kYWwuc2hvd1Byb21wdCAmJiBSb2Jsb3guQ2xpZW50LmlzSURFKCkgJiYgKHN0dWRpbzJBbGVydE1vZGFsLnVwZGF0ZVN0dWRpb0FsZXJ0VXNlclByZWZlcmVuY2UoKSwgJChcIiNTdHVkaW8yQWxlcnRNb2RhbFwiKS5tb2RhbChuKSlcbiAgICB9XG59O1xuJChcIiNjbG9zZVN0dWRpbzJBbGVydFwiKS5jbGljayhmdW5jdGlvbigpIHtcbiAgICBzdHVkaW8yQWxlcnRNb2RhbC5jbG9zZSgpXG59KSwgJChmdW5jdGlvbigpIHtcbiAgICBzdHVkaW8yQWxlcnRNb2RhbC5pbml0KClcbn0pO1xuXG47IC8vLyBDbGllbnRJbnN0YWxsZXIuanNcbmZ1bmN0aW9uIHRyeVRvRG93bmxvYWQoKSB7XG4gICAgb0lGcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImRvd25sb2FkSW5zdGFsbGVySUZyYW1lXCIpLCBvSUZybS5zcmMgPSBcIi9pbnN0YWxsL3NldHVwLmFzaHhcIlxufVxuXG5mdW5jdGlvbiBsb2dTdGF0aXN0aWNzKG4pIHtcbiAgICAkLmdldChcIi9pbnN0YWxsL1Zpc2l0QnV0dG9uSGFuZGxlci5hc2h4P3JlcXR5cGU9XCIgKyBuLCBmdW5jdGlvbigpIHt9KVxufVxuVHlwZS5yZWdpc3Rlck5hbWVzcGFjZShcIlJvYmxveC5DbGllbnRcIiksIFJvYmxveC5DbGllbnQuX2luc3RhbGxIb3N0ID0gbnVsbCwgUm9ibG94LkNsaWVudC5faW5zdGFsbFN1Y2Nlc3MgPSBudWxsLCBSb2Jsb3guQ2xpZW50Ll9DTFNJRCA9IG51bGwsIFJvYmxveC5DbGllbnQuX2NvbnRpbnVhdGlvbiA9IG51bGwsIFJvYmxveC5DbGllbnQuX3NraXAgPSBudWxsLCBSb2Jsb3guQ2xpZW50Ll9pc0lERSA9IG51bGwsIFJvYmxveC5DbGllbnQuX2lzUm9ibG94QnJvd3NlciA9IG51bGwsIFJvYmxveC5DbGllbnQuX2lzUGxhY2VMYXVuY2ggPSAhMSwgUm9ibG94LkNsaWVudC5fc2lsZW50TW9kZUVuYWJsZWQgPSAhMSwgUm9ibG94LkNsaWVudC5fYnJpbmdBcHBUb0Zyb250RW5hYmxlZCA9ICExLCBSb2Jsb3guQ2xpZW50Ll9udW1Mb2NrcyA9IDAsIFJvYmxveC5DbGllbnQuX2xvZ1RpbWluZyA9ICExLCBSb2Jsb3guQ2xpZW50Ll9sb2dTdGFydFRpbWUgPSBudWxsLCBSb2Jsb3guQ2xpZW50Ll9sb2dFbmRUaW1lID0gbnVsbCwgUm9ibG94LkNsaWVudC5faGlkZGVuTW9kZUVuYWJsZWQgPSAhMSwgUm9ibG94LkNsaWVudC5fcnVuSW5zdGFsbEFCVGVzdCA9IGZ1bmN0aW9uKCkge30sIFJvYmxveC5DbGllbnQuUmVsZWFzZUxhdW5jaGVyID0gZnVuY3Rpb24obiwgdCwgaSkge1xuICAgIGlmICh0ICYmIFJvYmxveC5DbGllbnQuX251bUxvY2tzLS0sIChpIHx8IFJvYmxveC5DbGllbnQuX251bUxvY2tzIDw9IDApICYmIChuICE9IG51bGwgJiYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicGx1Z2luT2JqRGl2XCIpLmlubmVySFRNTCA9IFwiXCIsIG4gPSBudWxsKSwgUm9ibG94LkNsaWVudC5fbnVtTG9ja3MgPSAwKSwgUm9ibG94LkNsaWVudC5fbG9nVGltaW5nKSB7XG4gICAgICAgIFJvYmxveC5DbGllbnQuX2xvZ0VuZFRpbWUgPSBuZXcgRGF0ZTtcbiAgICAgICAgdmFyIHIgPSBSb2Jsb3guQ2xpZW50Ll9sb2dFbmRUaW1lLmdldFRpbWUoKSAtIFJvYmxveC5DbGllbnQuX2xvZ1N0YXJ0VGltZS5nZXRUaW1lKCk7XG4gICAgICAgIGNvbnNvbGUgJiYgY29uc29sZS5sb2cgJiYgY29uc29sZS5sb2coXCJSb2Jsb3guQ2xpZW50OiBcIiArIHIgKyBcIm1zIGZyb20gQ3JlYXRlIHRvIFJlbGVhc2UuXCIpXG4gICAgfVxufSwgUm9ibG94LkNsaWVudC5HZXRJbnN0YWxsSG9zdCA9IGZ1bmN0aW9uKG4pIHtcbiAgICBpZiAod2luZG93LkFjdGl2ZVhPYmplY3QpIHJldHVybiBuLkluc3RhbGxIb3N0O1xuICAgIHZhciB0ID0gbi5HZXRfSW5zdGFsbEhvc3QoKTtcbiAgICByZXR1cm4gdC5tYXRjaCgvcm9ibG94LmNvbSQvKSA/IHQgOiB0LnN1YnN0cmluZygwLCB0Lmxlbmd0aCAtIDEpXG59LCBSb2Jsb3guQ2xpZW50LkNyZWF0ZUxhdW5jaGVyID0gZnVuY3Rpb24obikge1xuICAgIHZhciBpLCB1LCB0LCByO1xuICAgIFJvYmxveC5DbGllbnQuX2xvZ1RpbWluZyAmJiAoUm9ibG94LkNsaWVudC5fbG9nU3RhcnRUaW1lID0gbmV3IERhdGUpLCBuICYmIFJvYmxveC5DbGllbnQuX251bUxvY2tzKyssIChSb2Jsb3guQ2xpZW50Ll9pbnN0YWxsSG9zdCA9PSBudWxsIHx8IFJvYmxveC5DbGllbnQuX0NMU0lEID09IG51bGwpICYmIHR5cGVvZiBpbml0Q2xpZW50UHJvcHMgPT0gXCJmdW5jdGlvblwiICYmIGluaXRDbGllbnRQcm9wcygpLCBpID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyb2Jsb3hwbHVnaW5vYmpcIiksIHUgPSAkKFwiI3BsdWdpbk9iakRpdlwiKSwgaSB8fCAoUm9ibG94LkNsaWVudC5faGlkZGVuTW9kZUVuYWJsZWQgPSAhMSwgd2luZG93LkFjdGl2ZVhPYmplY3QgPyAodCA9ICc8b2JqZWN0IGNsYXNzaWQ9XCJjbHNpZDonICsgUm9ibG94LkNsaWVudC5fQ0xTSUQgKyAnXCInLCB0ICs9ICcgaWQ9XCJyb2Jsb3hwbHVnaW5vYmpcIiB0eXBlPVwiYXBwbGljYXRpb24veC12bmQtcm9ibG94LWxhdW5jaGVyXCInLCB0ICs9ICcgY29kZWJhc2U9XCInICsgUm9ibG94LkNsaWVudC5faW5zdGFsbEhvc3QgKyAnXCI+RmFpbGVkIHRvIElOSVQgUGx1Z2luPC9vYmplY3Q+JywgJCh1KS5hcHBlbmQodCkpIDogKHQgPSAnPG9iamVjdCBpZD1cInJvYmxveHBsdWdpbm9ialwiIHR5cGU9XCJhcHBsaWNhdGlvbi94LXZuZC1yb2Jsb3gtbGF1bmNoZXJcIj4nLCB0ICs9IFwiPHA+WW91IG5lZWQgT3VyIFBsdWdpbiBmb3IgdGhpcy4gIEdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZnJvbVwiLCB0ICs9ICc8YSBocmVmPVwiJyArIFJvYmxveC5DbGllbnQuX2luc3RhbGxIb3N0ICsgJ1wiPmhlcmU8L2E+LjwvcD48L29iamVjdD4nLCAkKHUpLmFwcGVuZCh0KSksIGkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJvYmxveHBsdWdpbm9ialwiKSk7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKGkgfHwgKHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcInVuZGVmaW5lZFwiID8gYWxlcnQoXCJQbHVnaW4gaW5zdGFsbGF0aW9uIGZhaWxlZCFcIikgOiBjb25zb2xlLmxvZyhcIlBsdWdpbiBpbnN0YWxsYXRpb24gZmFpbGVkIVwiKSksIGkuSGVsbG8oKSwgciA9IFJvYmxveC5DbGllbnQuR2V0SW5zdGFsbEhvc3QoaSksICFyIHx8IHIgIT0gUm9ibG94LkNsaWVudC5faW5zdGFsbEhvc3QpIHRocm93IFwid3JvbmcgSW5zdGFsbEhvc3Q6IChwbHVnaW5zKTogIFwiICsgciArIFwiICAoc2VydmVycyk6ICBcIiArIFJvYmxveC5DbGllbnQuX2luc3RhbGxIb3N0O1xuICAgICAgICByZXR1cm4gaVxuICAgIH0gY2F0Y2ggKGYpIHtcbiAgICAgICAgcmV0dXJuIFJvYmxveC5DbGllbnQuUmVsZWFzZUxhdW5jaGVyKGksIG4sICExKSwgbnVsbFxuICAgIH1cbn0sIFJvYmxveC5DbGllbnQuaXNJREUgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAoUm9ibG94LkNsaWVudC5faXNJREUgPT0gbnVsbCAmJiAoUm9ibG94LkNsaWVudC5faXNJREUgPSAhMSwgUm9ibG94LkNsaWVudC5faXNSb2Jsb3hCcm93c2VyID0gITEsIHdpbmRvdy5leHRlcm5hbCkpIHRyeSB7XG4gICAgICAgIHdpbmRvdy5leHRlcm5hbC5Jc1JvYmxveEFwcElERSAhPT0gdW5kZWZpbmVkICYmIChSb2Jsb3guQ2xpZW50Ll9pc0lERSA9IHdpbmRvdy5leHRlcm5hbC5Jc1JvYmxveEFwcElERSwgUm9ibG94LkNsaWVudC5faXNSb2Jsb3hCcm93c2VyID0gITApXG4gICAgfSBjYXRjaCAobikge31cbiAgICByZXR1cm4gUm9ibG94LkNsaWVudC5faXNJREVcbn0sIFJvYmxveC5DbGllbnQuaXNSb2Jsb3hCcm93c2VyID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFJvYmxveC5DbGllbnQuaXNJREUoKSwgUm9ibG94LkNsaWVudC5faXNSb2Jsb3hCcm93c2VyXG59LCBSb2Jsb3guQ2xpZW50LnJvYmxveEJyb3dzZXJJbnN0YWxsSG9zdCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh3aW5kb3cuZXh0ZXJuYWwpIHRyeSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuZXh0ZXJuYWwuSW5zdGFsbEhvc3RcbiAgICB9IGNhdGNoIChuKSB7fVxuICAgIHJldHVybiBcIlwiXG59LCBSb2Jsb3guQ2xpZW50LklzUm9ibG94UHJveHlJbnN0YWxsZWQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdCA9IFJvYmxveC5DbGllbnQuQ3JlYXRlTGF1bmNoZXIoITEpLFxuICAgICAgICBuID0gITE7XG4gICAgcmV0dXJuICh0ICE9IG51bGwgJiYgKG4gPSAhMCksIFJvYmxveC5DbGllbnQuUmVsZWFzZUxhdW5jaGVyKHQsICExLCAhMSksIG4gfHwgUm9ibG94LkNsaWVudC5pc1JvYmxveEJyb3dzZXIoKSkgPyAhMCA6ICExXG59LCBSb2Jsb3guQ2xpZW50LklzUm9ibG94SW5zdGFsbGVkID0gZnVuY3Rpb24oKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIHQgPSBSb2Jsb3guQ2xpZW50LkNyZWF0ZUxhdW5jaGVyKCExKSxcbiAgICAgICAgICAgIG4gPSBSb2Jsb3guQ2xpZW50LkdldEluc3RhbGxIb3N0KHQpO1xuICAgICAgICByZXR1cm4gUm9ibG94LkNsaWVudC5SZWxlYXNlTGF1bmNoZXIodCwgITEsICExKSwgbiA9PSBSb2Jsb3guQ2xpZW50Ll9pbnN0YWxsSG9zdFxuICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgcmV0dXJuIFJvYmxveC5DbGllbnQuaXNSb2Jsb3hCcm93c2VyKCkgPyAobiA9IFJvYmxveC5DbGllbnQucm9ibG94QnJvd3Nlckluc3RhbGxIb3N0KCksIG4gPT0gUm9ibG94LkNsaWVudC5faW5zdGFsbEhvc3QpIDogITFcbiAgICB9XG59LCBSb2Jsb3guQ2xpZW50LlNldFN0YXJ0SW5IaWRkZW5Nb2RlID0gZnVuY3Rpb24obikge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciB0ID0gUm9ibG94LkNsaWVudC5DcmVhdGVMYXVuY2hlcighMSk7XG4gICAgICAgIGlmICh0ICE9PSBudWxsKSByZXR1cm4gdC5TZXRTdGFydEluSGlkZGVuTW9kZShuKSwgUm9ibG94LkNsaWVudC5faGlkZGVuTW9kZUVuYWJsZWQgPSBuLCAhMFxuICAgIH0gY2F0Y2ggKGkpIHt9XG4gICAgcmV0dXJuICExXG59LCBSb2Jsb3guQ2xpZW50LlVuaGlkZUFwcCA9IGZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmIChSb2Jsb3guQ2xpZW50Ll9oaWRkZW5Nb2RlRW5hYmxlZCkge1xuICAgICAgICAgICAgdmFyIG4gPSBSb2Jsb3guQ2xpZW50LkNyZWF0ZUxhdW5jaGVyKCExKTtcbiAgICAgICAgICAgIG4uVW5oaWRlQXBwKClcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKHQpIHt9XG59LCBSb2Jsb3guQ2xpZW50LlVwZGF0ZSA9IGZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBuID0gUm9ibG94LkNsaWVudC5DcmVhdGVMYXVuY2hlcighMSk7XG4gICAgICAgIG4uVXBkYXRlKCksIFJvYmxveC5DbGllbnQuUmVsZWFzZUxhdW5jaGVyKG4sICExLCAhMSlcbiAgICB9IGNhdGNoICh0KSB7XG4gICAgICAgIGFsZXJ0KFwiRXJyb3IgdXBkYXRpbmc6IFwiICsgdClcbiAgICB9XG59LCBSb2Jsb3guQ2xpZW50LldhaXRGb3JSb2Jsb3ggPSBmdW5jdGlvbihuKSB7XG4gICAgaWYgKFJvYmxveC5DbGllbnQuX3NraXApIHJldHVybiB3aW5kb3cubG9jYXRpb24gPSBSb2Jsb3guQ2xpZW50Ll9za2lwLCAhMTtcbiAgICBpZiAoUm9ibG94LkNsaWVudC5fY29udGludWF0aW9uID0gbiwgUm9ibG94LkNsaWVudC5fY2FuY2VsbGVkID0gITEsICFSb2Jsb3guQ2xpZW50LklzUm9ibG94UHJveHlJbnN0YWxsZWQoKSAmJiBSb2Jsb3guQ2xpZW50LkltcGxlbWVudHNQcm94eSkge1xuICAgICAgICBSb2Jsb3guSW5zdGFsbGF0aW9uSW5zdHJ1Y3Rpb25zLnNob3coKSwgUm9ibG94LkNsaWVudC5ydW5JbnN0YWxsQUJUZXN0KCk7XG4gICAgICAgIHZhciB0ID0gXCJXaW5kb3dzXCI7XG4gICAgICAgIHJldHVybiBuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKFwiTWFjXCIpICE9IC0xICYmICh0ID0gXCJNYWNcIiksIHR5cGVvZiBfZ2FxICE9IHR5cGVvZiB1bmRlZmluZWQgJiYgKF9nYXEucHVzaChbXCJfdHJhY2tFdmVudFwiLCBcIkluc3RhbGwgQmVnaW5cIiwgdF0pLCBfZ2FxLnB1c2goW1wiYi5fdHJhY2tFdmVudFwiLCBcIkluc3RhbGwgQmVnaW5cIiwgdF0pKSwgUm9ibG94RXZlbnRNYW5hZ2VyLnRyaWdnZXJFdmVudChcInJieF9ldnRfaW5zdGFsbF9iZWdpblwiLCB7XG4gICAgICAgICAgICBvczogdFxuICAgICAgICB9KSwgd2luZG93LmNocm9tZSAmJiAod2luZG93LmxvY2F0aW9uLmhhc2ggPSBcIiNjaHJvbWVJbnN0YWxsXCIsICQuY29va2llKFwiY2hyb21lSW5zdGFsbFwiLCBuLnRvU3RyaW5nKCkucmVwbGFjZSgvcGxheV9wbGFjZUlkLywgcGxheV9wbGFjZUlkLnRvU3RyaW5nKCkpKSksIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgUm9ibG94LkNsaWVudC5fb250aW1lcigpXG4gICAgICAgIH0sIDFlMyksIHRyeVRvRG93bmxvYWQoKSwgITBcbiAgICB9XG4gICAgcmV0dXJuIFJvYmxveC5DbGllbnQuX2NvbnRpbnVhdGlvbigpLCAhMVxufSwgUm9ibG94LkNsaWVudC5SZXN1bWVUaW1lciA9IGZ1bmN0aW9uKG4pIHtcbiAgICBSb2Jsb3guQ2xpZW50Ll9jb250aW51YXRpb24gPSBuLCBSb2Jsb3guQ2xpZW50Ll9jYW5jZWxsZWQgPSAhMSwgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIFJvYmxveC5DbGllbnQuX29udGltZXIoKVxuICAgIH0sIDApXG59LCBSb2Jsb3guQ2xpZW50LlJlZnJlc2ggPSBmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgICBuYXZpZ2F0b3IucGx1Z2lucy5yZWZyZXNoKCExKVxuICAgIH0gY2F0Y2ggKG4pIHt9XG59LCBSb2Jsb3guQ2xpZW50Ll9vbkNhbmNlbCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBSb2Jsb3guSW5zdGFsbGF0aW9uSW5zdHJ1Y3Rpb25zLmhpZGUoKSwgUm9ibG94LkNsaWVudC5fY2FuY2VsbGVkID0gITAsICExXG59LCBSb2Jsb3guQ2xpZW50Ll9vbnRpbWVyID0gZnVuY3Rpb24oKSB7XG4gICAgUm9ibG94LkNsaWVudC5fY2FuY2VsbGVkIHx8IChSb2Jsb3guQ2xpZW50LlJlZnJlc2goKSwgUm9ibG94LkNsaWVudC5Jc1JvYmxveFByb3h5SW5zdGFsbGVkKCkgPyAoUm9ibG94Lkluc3RhbGxhdGlvbkluc3RydWN0aW9ucy5oaWRlKCksIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICB3aW5kb3cuY2hyb21lICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoID09IFwiI2Nocm9tZUluc3RhbGxcIiAmJiAod2luZG93LmxvY2F0aW9uLmhhc2ggPSBcIlwiLCAkLmNvb2tpZShcImNocm9tZUluc3RhbGxcIiwgbnVsbCkpXG4gICAgfSwgNWUzKSwgUm9ibG94LkNsaWVudC5fY29udGludWF0aW9uKCksIFJvYmxveC5DbGllbnQuX2luc3RhbGxTdWNjZXNzICYmIFJvYmxveC5DbGllbnQuX2luc3RhbGxTdWNjZXNzKCkpIDogd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIFJvYmxveC5DbGllbnQuX29udGltZXIoKVxuICAgIH0sIDFlMykpXG59O1xuXG47IC8vLyBJbnN0YWxsYXRpb25JbnN0cnVjdGlvbnMuanNcbnR5cGVvZiBSb2Jsb3ggPT0gXCJ1bmRlZmluZWRcIiAmJiAoUm9ibG94ID0ge30pLCBSb2Jsb3guSW5zdGFsbGF0aW9uSW5zdHJ1Y3Rpb25zID0gZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gaSgpIHtcbiAgICAgICAgdmFyIHQsIGksIHI7XG4gICAgICAgIG4oKSwgdCA9IDAsIGkgPSAkKFwiLkluc3RhbGxJbnN0cnVjdGlvbnNJbWFnZVwiKSwgaSAmJiB0eXBlb2YgJChpKS5hdHRyKFwibW9kYWx3aWR0aFwiKSAhPSBcInVuZGVmaW5lZFwiICYmICh0ID0gJChcIi5JbnN0YWxsSW5zdHJ1Y3Rpb25zSW1hZ2VcIikuYXR0cihcIm1vZGFsd2lkdGhcIikpLCB0ID4gMCA/IChyID0gKCQod2luZG93KS53aWR0aCgpIC0gKHQgLSAxMCkpIC8gMiwgJChcIiNJbnN0YWxsYXRpb25JbnN0cnVjdGlvbnNcIikubW9kYWwoe1xuICAgICAgICAgICAgZXNjQ2xvc2U6ICEwLFxuICAgICAgICAgICAgb3BhY2l0eTogNTAsXG4gICAgICAgICAgICBtaW5XaWR0aDogdCxcbiAgICAgICAgICAgIG1heFdpZHRoOiB0LFxuICAgICAgICAgICAgb3ZlcmxheUNzczoge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwb3NpdGlvbjogWzIwLCByXVxuICAgICAgICB9KSkgOiAkKFwiI0luc3RhbGxhdGlvbkluc3RydWN0aW9uc1wiKS5tb2RhbCh7XG4gICAgICAgICAgICBlc2NDbG9zZTogITAsXG4gICAgICAgICAgICBvcGFjaXR5OiA1MCxcbiAgICAgICAgICAgIG1heFdpZHRoOiAkKHdpbmRvdykud2lkdGgoKSAvIDIsXG4gICAgICAgICAgICBtaW5XaWR0aDogJCh3aW5kb3cpLndpZHRoKCkgLyAyLFxuICAgICAgICAgICAgb3ZlcmxheUNzczoge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwb3NpdGlvbjogWzIwLCBcIjI1JVwiXVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgICAgICQubW9kYWwuY2xvc2UoKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG4oKSB7XG4gICAgICAgIHZhciBuID0gJChcIi5JbnN0YWxsSW5zdHJ1Y3Rpb25zSW1hZ2VcIik7XG4gICAgICAgIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL01hYyBPUyBYIDEwW198XFwuXTUvKSA/IG4gJiYgdHlwZW9mICQobikuYXR0cihcIm9sZG1hY2RlbGF5c3JjXCIpICE9IFwidW5kZWZpbmVkXCIgJiYgJChcIi5JbnN0YWxsSW5zdHJ1Y3Rpb25zSW1hZ2VcIikuYXR0cihcInNyY1wiLCAkKFwiLkluc3RhbGxJbnN0cnVjdGlvbnNJbWFnZVwiKS5hdHRyKFwib2xkbWFjZGVsYXlzcmNcIikpIDogbiAmJiB0eXBlb2YgJChuKS5hdHRyKFwiZGVsYXlzcmNcIikgIT0gXCJ1bmRlZmluZWRcIiAmJiAkKFwiLkluc3RhbGxJbnN0cnVjdGlvbnNJbWFnZVwiKS5hdHRyKFwic3JjXCIsICQoXCIuSW5zdGFsbEluc3RydWN0aW9uc0ltYWdlXCIpLmF0dHIoXCJkZWxheXNyY1wiKSlcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc2hvdzogaSxcbiAgICAgICAgaGlkZTogclxuICAgIH1cbn0oKTtcblxuOyAvLy8gTWFkU3RhdHVzLmpzXG5NYWRTdGF0dXMgPSB7XG4gICAgcnVubmluZzogITEsXG4gICAgaW5pdDogZnVuY3Rpb24obiwgdCwgaSwgcikge1xuICAgICAgICBNYWRTdGF0dXMucnVubmluZyAmJiBNYWRTdGF0dXMuc3RvcCgpLCBNYWRTdGF0dXMudXBkYXRlSW50ZXJ2YWwgPSBpID8gaSA6IDJlMywgTWFkU3RhdHVzLmZhZGVJbnRlcnZhbCA9IHIgPyByIDogMWUzLCBNYWRTdGF0dXMudGltZW91dCA9IG51bGwsIE1hZFN0YXR1cy5ydW5uaW5nID0gITAsIE1hZFN0YXR1cy5maWVsZCA9IG4sIE1hZFN0YXR1cy5iYWNrQnVmZmVyID0gdCwgTWFkU3RhdHVzLmZpZWxkLnNob3coKSwgTWFkU3RhdHVzLmJhY2tCdWZmZXIuaGlkZSgpXG4gICAgfSxcbiAgICBwYXJ0aWNpcGxlOiBbXCJBY2NlbGVyYXRpbmdcIiwgXCJBZ2dyZWdhdGluZ1wiLCBcIkFsbG9jYXRpbmdcIiwgXCJBcXVpcmluZ1wiLCBcIkF1dG9tYXRpbmdcIiwgXCJCYWNrdHJhY2luZ1wiLCBcIkJsb3h4aW5nXCIsIFwiQm9vdHN0cmFwaW5nXCIsIFwiQ2FsaWJyYXRpbmdcIiwgXCJDb3JyZWxhdGluZ1wiLCBcIkRlLW5vb2JpbmdcIiwgXCJEZS1pb25pemluZ1wiLCBcIkRlcml2aW5nXCIsIFwiRW5lcmdpemluZ1wiLCBcIkZpbHRlcmluZ1wiLCBcIkdlbmVyYXRpbmdcIiwgXCJJbmRleGluZ1wiLCBcIkxvYWRpbmdcIiwgXCJOb29iaW5nXCIsIFwiT3B0aW1pemluZ1wiLCBcIk94aWRpemluZ1wiLCBcIlF1ZXVlaW5nXCIsIFwiUGFyc2luZ1wiLCBcIlByb2Nlc3NpbmdcIiwgXCJSYXN0ZXJpemluZ1wiLCBcIlJlYWRpbmdcIiwgXCJSZWdpc3RlcmluZ1wiLCBcIlJlLXJvdXRpbmdcIiwgXCJSZXNvbHZpbmdcIiwgXCJTYW1wbGluZ1wiLCBcIlVwZGF0aW5nXCIsIFwiV3JpdGluZ1wiXSxcbiAgICBtb2RpZmllcjogW1wiQmxveFwiLCBcIkNvdW50IFplcm9cIiwgXCJDeWxvblwiLCBcIkRhdGFcIiwgXCJFY3RvcGxhc21cIiwgXCJFbmNyeXB0aW9uXCIsIFwiRXZlbnRcIiwgXCJGYXJuc3dvcnRoXCIsIFwiQmVib3BcIiwgXCJGbHV4IENhcGFjaXRvclwiLCBcIkZ1c2lvblwiLCBcIkdhbWVcIiwgXCJHaWJzb25cIiwgXCJIb3N0XCIsIFwiTWFpbmZyYW1lXCIsIFwiTWV0YXZlcnNlXCIsIFwiTmVyZiBIZXJkZXJcIiwgXCJOZXV0cm9uXCIsIFwiTm9vYlwiLCBcIlBob3RvblwiLCBcIlByb2ZpbGVcIiwgXCJTY3JpcHRcIiwgXCJTa3luZXRcIiwgXCJUQVJESVNcIiwgXCJWaXJ0dWFsXCJdLFxuICAgIHN1YmplY3Q6IFtcIkFuYWxvZ3NcIiwgXCJCbG9ja3NcIiwgXCJDYW5ub25cIiwgXCJDaGFubmVsc1wiLCBcIkNvcmVcIiwgXCJEYXRhYmFzZVwiLCBcIkRpbWVuc2lvbnNcIiwgXCJEaXJlY3RpdmVzXCIsIFwiRW5naW5lXCIsIFwiRmlsZXNcIiwgXCJHZWFyXCIsIFwiSW5kZXhcIiwgXCJMYXllclwiLCBcIk1hdHJpeFwiLCBcIlBhcmFkb3hcIiwgXCJQYXJhbWV0ZXJzXCIsIFwiUGFyc2Vjc1wiLCBcIlBpcGVsaW5lXCIsIFwiUGxheWVyc1wiLCBcIlBvcnRzXCIsIFwiUHJvdG9jb2xzXCIsIFwiUmVhY3RvcnNcIiwgXCJTcGhlcmVcIiwgXCJTcG9vbGVyXCIsIFwiU3RyZWFtXCIsIFwiU3dpdGNoZXNcIiwgXCJUYWJsZVwiLCBcIlRhcmdldHNcIiwgXCJUaHJvdHRsZVwiLCBcIlRva2Vuc1wiLCBcIlRvcnBlZG9lc1wiLCBcIlR1YmVzXCJdLFxuICAgIG5ld0xpYjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBsaWJTdHJpbmcgPSB0aGlzLnBhcnRpY2lwbGVbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogdGhpcy5wYXJ0aWNpcGxlLmxlbmd0aCldICsgXCIgXCIgKyB0aGlzLm1vZGlmaWVyW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHRoaXMubW9kaWZpZXIubGVuZ3RoKV0gKyBcIiBcIiArIHRoaXMuc3ViamVjdFtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiB0aGlzLnN1YmplY3QubGVuZ3RoKV0gKyBcIi4uLlwiXG4gICAgfSxcbiAgICBzdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICAgIE1hZFN0YXR1cy50aW1lb3V0ID09IG51bGwgJiYgKE1hZFN0YXR1cy50aW1lb3V0ID0gc2V0SW50ZXJ2YWwoXCJNYWRTdGF0dXMudXBkYXRlKClcIiwgTWFkU3RhdHVzLnVwZGF0ZUludGVydmFsKSwgTWFkU3RhdHVzLnJ1bm5pbmcgPSAhMClcbiAgICB9LFxuICAgIHN0b3A6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChNYWRTdGF0dXMudGltZW91dCksIE1hZFN0YXR1cy50aW1lb3V0ID0gbnVsbCwgTWFkU3RhdHVzLmZpZWxkWzBdLmlubmVySFRNTCA9IHR5cGVvZiBuICE9IHR5cGVvZiB1bmRlZmluZWQgPyBuIDogXCJcIiwgTWFkU3RhdHVzLnJ1bm5pbmcgPSAhMVxuICAgIH0sXG4gICAgbWFudWFsVXBkYXRlOiBmdW5jdGlvbihuLCB0LCBpKSB7XG4gICAgICAgIE1hZFN0YXR1cy50aW1lb3V0ICYmIE1hZFN0YXR1cy5zdG9wKCksIHRoaXMudXBkYXRlKG4sIGkpLCB0ICYmIHNldFRpbWVvdXQoXCJNYWRTdGF0dXMuc3RhcnQoKVwiLCAxZTMpXG4gICAgfSxcbiAgICB1cGRhdGU6IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgKE1hZFN0YXR1cy5iYWNrQnVmZmVyWzBdLmlubmVySFRNTCA9IHR5cGVvZiBuICE9IHR5cGVvZiB1bmRlZmluZWQgPyBuIDogdGhpcy5uZXdMaWIoKSwgdHlwZW9mIG5vQW5pbSA9PSB0eXBlb2YgdW5kZWZpbmVkIHx8IHQgIT0gITEpICYmICh0aGlzLmZpZWxkLmhpZGUoKSwgdGhpcy5iYWNrQnVmZmVyLmZhZGVJbih0aGlzLmZhZGVJbnRlcnZhbCArIDIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgTWFkU3RhdHVzLmZpZWxkWzBdLmlubmVySFRNTCA9IE1hZFN0YXR1cy5iYWNrQnVmZmVyWzBdLmlubmVySFRNTCwgTWFkU3RhdHVzLmZpZWxkLnNob3coKSwgTWFkU3RhdHVzLmJhY2tCdWZmZXIuaGlkZSgpXG4gICAgICAgIH0pKVxuICAgIH1cbn07XG5cbjsgLy8vIFBsYWNlTGF1bmNoZXIuanNcbnZhciBSQlggPSB7fSxcbiAgICBSb2Jsb3hMYXVuY2hTdGF0ZXMgPSB7XG4gICAgICAgIFN0YXJ0aW5nU2VydmVyOiBcIlN0YXJ0aW5nU2VydmVyXCIsXG4gICAgICAgIFN0YXJ0aW5nQ2xpZW50OiBcIlN0YXJ0aW5nQ2xpZW50XCIsXG4gICAgICAgIFVwZ3JhZGluZzogXCJVcGdyYWRpbmdcIixcbiAgICAgICAgTm9uZTogXCJOb25lXCJcbiAgICB9LFxuICAgIFJvYmxveExhdW5jaCA9IHtcbiAgICAgICAgbGF1bmNoR2FtZVBhZ2U6IG51bGwsXG4gICAgICAgIHRpbWVyOiBudWxsLFxuICAgICAgICBjbGllbnRNZXRyaWNUeXBlOiBudWxsLFxuICAgICAgICBsYXVuY2hlcjogbnVsbCxcbiAgICAgICAgZ29vZ2xlQW5hbHl0aWNzQ2FsbGJhY2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgUm9ibG94TGF1bmNoLl9Hb29nbGVBbmFseXRpY3NDYWxsYmFjayAmJiBSb2Jsb3hMYXVuY2guX0dvb2dsZUFuYWx5dGljc0NhbGxiYWNrKClcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdGU6IFJvYmxveExhdW5jaFN0YXRlcy5Ob25lLFxuICAgICAgICBzZWN1cmVBdXRoZW50aWNhdGU6ICExXG4gICAgfSxcbiAgICBSb2Jsb3hQbGFjZUxhdW5jaGVyU2VydmljZSA9IHtcbiAgICAgICAgTG9nSm9pbkNsaWNrOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICQuZ2V0KFwiL0dhbWUvUGxhY2VsYXVuY2hlci5hc2h4XCIsIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0OiBcIkxvZ0pvaW5DbGlja1wiXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBSZXF1ZXN0R2FtZTogZnVuY3Rpb24obiwgdCwgaSwgciwgdSwgZikge1xuICAgICAgICAgICAgaSA9IGkgIT09IG51bGwgJiYgaSAhPT0gdW5kZWZpbmVkID8gaSA6IFwiXCIsICQuZ2V0SlNPTihcIi9HYW1lL1BsYWNlTGF1bmNoZXIuYXNoeFwiLCB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdDogXCJSZXF1ZXN0R2FtZVwiLFxuICAgICAgICAgICAgICAgIHBsYWNlSWQ6IG4sXG4gICAgICAgICAgICAgICAgaXNQYXJ0eUxlYWRlcjogdCxcbiAgICAgICAgICAgICAgICBnZW5kZXI6IGlcbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICBuLkVycm9yID8gdShuLkVycm9yLCBmKSA6IHIobiwgZilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIFJlcXVlc3RQbGF5V2l0aFBhcnR5OiBmdW5jdGlvbihuLCB0LCBpLCByLCB1LCBmKSB7XG4gICAgICAgICAgICAkLmdldEpTT04oXCIvR2FtZS9QbGFjZUxhdW5jaGVyLmFzaHhcIiwge1xuICAgICAgICAgICAgICAgIHJlcXVlc3Q6IFwiUmVxdWVzdFBsYXlXaXRoUGFydHlcIixcbiAgICAgICAgICAgICAgICBwbGFjZUlkOiBuLFxuICAgICAgICAgICAgICAgIHBhcnR5R3VpZDogdCxcbiAgICAgICAgICAgICAgICBnYW1lSWQ6IGlcbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICBuLkVycm9yID8gdShuLkVycm9yLCBmKSA6IHIobiwgZilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIFJlcXVlc3RHcm91cEJ1aWxkR2FtZTogZnVuY3Rpb24obiwgdCwgaSwgcikge1xuICAgICAgICAgICAgJC5nZXRKU09OKFwiL0dhbWUvUGxhY2VMYXVuY2hlci5hc2h4XCIsIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0OiBcIlJlcXVlc3RHcm91cEJ1aWxkR2FtZVwiLFxuICAgICAgICAgICAgICAgIHBsYWNlSWQ6IG5cbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICBuLkVycm9yID8gaShuLkVycm9yLCByKSA6IHQobiwgcilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIFJlcXVlc3RGb2xsb3dVc2VyOiBmdW5jdGlvbihuLCB0LCBpLCByKSB7XG4gICAgICAgICAgICAkLmdldEpTT04oXCIvR2FtZS9QbGFjZUxhdW5jaGVyLmFzaHhcIiwge1xuICAgICAgICAgICAgICAgIHJlcXVlc3Q6IFwiUmVxdWVzdEZvbGxvd1VzZXJcIixcbiAgICAgICAgICAgICAgICB1c2VySWQ6IG5cbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICBuLkVycm9yID8gaShuLkVycm9yLCByKSA6IHQobiwgcilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIFJlcXVlc3RHYW1lSm9iOiBmdW5jdGlvbihuLCB0LCBpLCByLCB1LCBmKSB7XG4gICAgICAgICAgICAkLmdldEpTT04oXCIvR2FtZS9QbGFjZUxhdW5jaGVyLmFzaHhcIiwge1xuICAgICAgICAgICAgICAgIHJlcXVlc3Q6IFwiUmVxdWVzdEdhbWVKb2JcIixcbiAgICAgICAgICAgICAgICBwbGFjZUlkOiBuLFxuICAgICAgICAgICAgICAgIGdhbWVJZDogdCxcbiAgICAgICAgICAgICAgICBnYW1lSm9iSWQ6IGlcbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICBuLkVycm9yID8gdShuLkVycm9yLCBmKSA6IHIobiwgZilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIENoZWNrR2FtZUpvYlN0YXR1czogZnVuY3Rpb24obiwgdCwgaSwgcikge1xuICAgICAgICAgICAgJC5nZXRKU09OKFwiL0dhbWUvUGxhY2VMYXVuY2hlci5hc2h4XCIsIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0OiBcIkNoZWNrR2FtZUpvYlN0YXR1c1wiLFxuICAgICAgICAgICAgICAgIGpvYklkOiBuXG4gICAgICAgICAgICB9LCBmdW5jdGlvbihuKSB7XG4gICAgICAgICAgICAgICAgbi5FcnJvciA/IGkobi5FcnJvciwgcikgOiB0KG4sIHIpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfTtcblJvYmxveExhdW5jaC5SZXF1ZXN0UGxheVdpdGhQYXJ0eSA9IGZ1bmN0aW9uKG4sIHQsIGksIHIpIHtcbiAgICBSb2Jsb3hQbGFjZUxhdW5jaGVyU2VydmljZS5Mb2dKb2luQ2xpY2soKSwgUm9ibG94TGF1bmNoLnRpbWVyID0gbmV3IERhdGUsIFJvYmxveExhdW5jaC5zdGF0ZSA9IFJvYmxveExhdW5jaFN0YXRlcy5Ob25lLCBSb2Jsb3hMYXVuY2guY2xpZW50TWV0cmljVHlwZSA9IFwiV2ViUGxheVwiLCBjaGVja1JvYmxveEluc3RhbGwoKSAmJiAoUm9ibG94TGF1bmNoLmxhdW5jaGVyID09PSBudWxsICYmIChSb2Jsb3hMYXVuY2gubGF1bmNoZXIgPSBuZXcgUkJYLlBsYWNlTGF1bmNoZXIobikpLCBSb2Jsb3hMYXVuY2gubGF1bmNoZXIuUmVxdWVzdFBsYXlXaXRoUGFydHkodCwgaSwgcikpXG59LCBSb2Jsb3hMYXVuY2guUmVxdWVzdEdhbWUgPSBmdW5jdGlvbihuLCB0LCBpKSB7XG4gICAgUm9ibG94UGxhY2VMYXVuY2hlclNlcnZpY2UuTG9nSm9pbkNsaWNrKCksIFJvYmxveExhdW5jaC50aW1lciA9IG5ldyBEYXRlLCBSb2Jsb3hMYXVuY2guc3RhdGUgPSBSb2Jsb3hMYXVuY2hTdGF0ZXMuTm9uZSwgUm9ibG94TGF1bmNoLmNsaWVudE1ldHJpY1R5cGUgPSBcIldlYlBsYXlcIiwgY2hlY2tSb2Jsb3hJbnN0YWxsKCkgJiYgKFJvYmxveExhdW5jaC5sYXVuY2hlciA9PT0gbnVsbCAmJiAoUm9ibG94TGF1bmNoLmxhdW5jaGVyID0gbmV3IFJCWC5QbGFjZUxhdW5jaGVyKG4pKSwgUm9ibG94TGF1bmNoLmxhdW5jaGVyLlJlcXVlc3RHYW1lKHQsIGkpKVxufSwgUm9ibG94TGF1bmNoLlJlcXVlc3RHcm91cEJ1aWxkR2FtZSA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICBSb2Jsb3hQbGFjZUxhdW5jaGVyU2VydmljZS5Mb2dKb2luQ2xpY2soKSwgUm9ibG94TGF1bmNoLnRpbWVyID0gbmV3IERhdGUsIFJvYmxveExhdW5jaC5zdGF0ZSA9IFJvYmxveExhdW5jaFN0YXRlcy5Ob25lLCBSb2Jsb3hMYXVuY2guY2xpZW50TWV0cmljVHlwZSA9IFwiV2ViUGxheVwiLCBjaGVja1JvYmxveEluc3RhbGwoKSAmJiAoUm9ibG94TGF1bmNoLmxhdW5jaGVyID09PSBudWxsICYmIChSb2Jsb3hMYXVuY2gubGF1bmNoZXIgPSBuZXcgUkJYLlBsYWNlTGF1bmNoZXIobikpLCBSb2Jsb3hMYXVuY2gubGF1bmNoZXIuUmVxdWVzdEdyb3VwQnVpbGRHYW1lKHQpKVxufSwgUm9ibG94TGF1bmNoLlJlcXVlc3RHYW1lSm9iID0gZnVuY3Rpb24obiwgdCwgaSwgcikge1xuICAgIFJvYmxveFBsYWNlTGF1bmNoZXJTZXJ2aWNlLkxvZ0pvaW5DbGljaygpLCBSb2Jsb3hMYXVuY2gudGltZXIgPSBuZXcgRGF0ZSwgUm9ibG94TGF1bmNoLnN0YXRlID0gUm9ibG94TGF1bmNoU3RhdGVzLk5vbmUsIFJvYmxveExhdW5jaC5jbGllbnRNZXRyaWNUeXBlID0gXCJXZWJKb2luXCIsIGNoZWNrUm9ibG94SW5zdGFsbCgpICYmIChSb2Jsb3hMYXVuY2gubGF1bmNoZXIgPT09IG51bGwgJiYgKFJvYmxveExhdW5jaC5sYXVuY2hlciA9IG5ldyBSQlguUGxhY2VMYXVuY2hlcihuKSksIFJvYmxveExhdW5jaC5sYXVuY2hlci5SZXF1ZXN0R2FtZUpvYih0LCBpLCByKSlcbn0sIFJvYmxveExhdW5jaC5SZXF1ZXN0Rm9sbG93VXNlciA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICBSb2Jsb3hQbGFjZUxhdW5jaGVyU2VydmljZS5Mb2dKb2luQ2xpY2soKSwgUm9ibG94TGF1bmNoLnRpbWVyID0gbmV3IERhdGUsIFJvYmxveExhdW5jaC5zdGF0ZSA9IFJvYmxveExhdW5jaFN0YXRlcy5Ob25lLCBSb2Jsb3hMYXVuY2guY2xpZW50TWV0cmljVHlwZSA9IFwiV2ViRm9sbG93XCIsIGNoZWNrUm9ibG94SW5zdGFsbCgpICYmIChSb2Jsb3hMYXVuY2gubGF1bmNoZXIgPT09IG51bGwgJiYgKFJvYmxveExhdW5jaC5sYXVuY2hlciA9IG5ldyBSQlguUGxhY2VMYXVuY2hlcihuKSksIFJvYmxveExhdW5jaC5sYXVuY2hlci5SZXF1ZXN0Rm9sbG93VXNlcih0KSlcbn0sIFJvYmxveExhdW5jaC5TdGFydEdhbWUgPSBmdW5jdGlvbihuLCB0LCBpLCByLCB1KSB7XG4gICAgdmFyIG8sIGYsIGUsIHM7XG4gICAgUm9ibG94TGF1bmNoLnNlY3VyZUF1dGhlbnRpY2F0ZSAmJiAoaSA9IGkucmVwbGFjZShcImh0dHA6Ly9cIiwgXCJodHRwczovL1wiKSksIG4gPSB0eXBlb2YgUm9ibG94TGF1bmNoLlNlbGVuaXVtVGVzdE1vZGUgPT0gXCJ1bmRlZmluZWRcIiA/IG4gKyBcIiZ0ZXN0bW9kZT1mYWxzZVwiIDogbiArIFwiJnRlc3Rtb2RlPXRydWVcIiwgdHlwZW9mIHVyY2hpblRyYWNrZXIgIT0gXCJ1bmRlZmluZWRcIiAmJiB1cmNoaW5UcmFja2VyKFwiVmlzaXQvVHJ5L1wiICsgdCksIFJvYmxveExhdW5jaC5zdGF0ZSA9IFJvYmxveExhdW5jaFN0YXRlcy5TdGFydGluZ0NsaWVudCwgUm9ibG94TGF1bmNoLmdvb2dsZUFuYWx5dGljc0NhbGxiYWNrICE9PSBudWxsICYmIFJvYmxveExhdW5jaC5nb29nbGVBbmFseXRpY3NDYWxsYmFjaygpLCBvID0gbnVsbDtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5leHRlcm5hbCAhPSBcInVuZGVmaW5lZFwiICYmIHdpbmRvdy5leHRlcm5hbC5Jc1JvYmxveEFCQXBwKSB3aW5kb3cuZXh0ZXJuYWwuU3RhcnRHYW1lKHIsIGksIG4pO1xuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygd2luZG93LmV4dGVybmFsICE9IFwidW5kZWZpbmVkXCIgJiYgd2luZG93LmV4dGVybmFsLklzUm9ibG94MkFwcCAmJiAobi5pbmRleE9mKFwidmlzaXRcIikgIT0gLTEgfHwgdSkpIHdpbmRvdy5leHRlcm5hbC5TdGFydEdhbWUociwgaSwgbik7XG4gICAgICAgIGVsc2UgaWYgKG8gPSBcIlJvYmxveFByb3h5L1wiLCBmID0gUm9ibG94LkNsaWVudC5DcmVhdGVMYXVuY2hlcighMCksIGYpIHtcbiAgICAgICAgICAgIG8gPSBcIlJvYmxveFByb3h5L1N0YXJ0R2FtZS9cIjtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LkFjdGl2ZVhPYmplY3QgPyBmLkF1dGhlbnRpY2F0aW9uVGlja2V0ID0gciA6IGYuUHV0X0F1dGhlbnRpY2F0aW9uVGlja2V0KHIpLCB1ICYmIGYuU2V0RWRpdE1vZGUoKVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGEpIHt9XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFJvYmxveC5DbGllbnQuX3NpbGVudE1vZGVFbmFibGVkKSBmLlNldFNpbGVudE1vZGVFbmFibGVkKCEwKSwgUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0luaXRpYWxpemVkICYmIFJvYmxveC5WaWRlb1ByZVJvbGwuaXNQbGF5aW5nKCkgJiYgUm9ibG94LkNsaWVudC5TZXRTdGFydEluSGlkZGVuTW9kZSghMCksIGYuU3RhcnRHYW1lKGksIG4pLCBSb2Jsb3hMYXVuY2guQ2hlY2tHYW1lU3RhcnRlZChmKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB0aHJvdyBcInNpbGVudCBtb2RlIGlzIGRpc2FibGVkLCBmYWxsIGJhY2tcIjtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmLlN0YXJ0R2FtZShpLCBuKSwgUm9ibG94LkNsaWVudC5fYnJpbmdBcHBUb0Zyb250RW5hYmxlZCkgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGYuQnJpbmdBcHBUb0Zyb250KClcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoaCkge31cbiAgICAgICAgICAgICAgICAgICAgUm9ibG94LkNsaWVudC5SZWxlYXNlTGF1bmNoZXIoZiwgITAsICExKSwgJC5tb2RhbC5jbG9zZSgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoYSkge1xuICAgICAgICAgICAgICAgIFJvYmxveC5DbGllbnQuUmVsZWFzZUxhdW5jaGVyKGYsICEwLCAhMSk7XG4gICAgICAgICAgICAgICAgdGhyb3cgYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGFyZW50LnBsYXlGcm9tVXJsKG4pO1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfSBjYXRjaCAobCkge31cbiAgICAgICAgICAgIGlmIChSb2Jsb3guQ2xpZW50LmlzUm9ibG94QnJvd3NlcigpKSB0cnkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5leHRlcm5hbC5TdGFydEdhbWUociwgaSwgbilcbiAgICAgICAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBcIndpbmRvdy5leHRlcm5hbCBmYWxsYmFjayBmYWlsZWQsIFJvYmxveCBtdXN0IG5vdCBiZSBpbnN0YWxsZWQgb3IgSUUgY2Fubm90IGFjY2VzcyBBY3RpdmVYXCI7XG4gICAgICAgICAgICB9IGVsc2UgdGhyb3cgXCJsYXVuY2hlciBpcyBudWxsIG9yIHVuZGVmaW5lZCBhbmQgZXh0ZXJuYWwgaXMgbWlzc2luZ1wiO1xuICAgICAgICAgICAgUm9ibG94TGF1bmNoLnN0YXRlID0gUm9ibG94TGF1bmNoU3RhdGVzLk5vbmUsICQubW9kYWwuY2xvc2UoKVxuICAgICAgICB9XG4gICAgfSBjYXRjaCAoYSkge1xuICAgICAgICBpZiAoZSA9IGEubWVzc2FnZSwgZSA9PT0gXCJVc2VyIGNhbmNlbGxlZFwiICYmIHR5cGVvZiB1cmNoaW5UcmFja2VyICE9IFwidW5kZWZpbmVkXCIpIHJldHVybiB1cmNoaW5UcmFja2VyKFwiVmlzaXQvVXNlckNhbmNlbGxlZC9cIiArIHQpLCAhMTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHMgPSBuZXcgQWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxIVFRQXCIpXG4gICAgICAgIH0gY2F0Y2ggKGMpIHtcbiAgICAgICAgICAgIGUgPSBcIkZhaWxlZFhNTEhUVFAvXCIgKyBlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJvYmxveC5DbGllbnQuaXNSb2Jsb3hCcm93c2VyKCkgPyB0eXBlb2YgdXJjaGluVHJhY2tlciAhPSBcInVuZGVmaW5lZFwiICYmIHVyY2hpblRyYWNrZXIoXCJWaXNpdC9GYWlsL1wiICsgbyArIGVuY29kZVVSSUNvbXBvbmVudChlKSkgOiAodHlwZW9mIHVyY2hpblRyYWNrZXIgIT0gXCJ1bmRlZmluZWRcIiAmJiB1cmNoaW5UcmFja2VyKFwiVmlzaXQvUmVkaXJlY3QvXCIgKyBvICsgZW5jb2RlVVJJQ29tcG9uZW50KGUpKSwgd2luZG93LmxvY2F0aW9uID0gUm9ibG94TGF1bmNoLmxhdW5jaEdhbWVQYWdlKSwgITFcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiB1cmNoaW5UcmFja2VyICE9IFwidW5kZWZpbmVkXCIgJiYgdXJjaGluVHJhY2tlcihcIlZpc2l0L1N1Y2Nlc3MvXCIgKyB0KSwgITBcbn0sIFJvYmxveExhdW5jaC5DaGVja0dhbWVTdGFydGVkID0gZnVuY3Rpb24obikge1xuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgICAgIHZhciBlID0gITE7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoaSB8fCAoaSA9IHdpbmRvdy5BY3RpdmVYT2JqZWN0ID8gbi5Jc0dhbWVTdGFydGVkIDogbi5HZXRfR2FtZVN0YXJ0ZWQoKSksIGkgJiYgIVJvYmxveC5WaWRlb1ByZVJvbGwuaXNQbGF5aW5nKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoTWFkU3RhdHVzLnN0b3AoXCJDb25uZWN0aW5nIHRvIFBsYXllcnMuLi5cIiksIFJvYmxveExhdW5jaC5zdGF0ZSA9IFJvYmxveExhdW5jaFN0YXRlcy5Ob25lLCAkLm1vZGFsLmNsb3NlKCksIHQuX2NhbmNlbGxlZCA9ICEwLCBSb2Jsb3guQ2xpZW50Ll9oaWRkZW5Nb2RlRW5hYmxlZCAmJiBSb2Jsb3guQ2xpZW50LlVuaGlkZUFwcCgpLCBSb2Jsb3guQ2xpZW50Ll9icmluZ0FwcFRvRnJvbnRFbmFibGVkKSB0cnkge1xuICAgICAgICAgICAgICAgICAgICBuLkJyaW5nQXBwVG9Gcm9udCgpXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZikge31cbiAgICAgICAgICAgICAgICBSb2Jsb3guQ2xpZW50LlJlbGVhc2VMYXVuY2hlcihuLCAhMCwgITEpXG4gICAgICAgICAgICB9IGVsc2UgdC5fY2FuY2VsbGVkIHx8IHNldFRpbWVvdXQociwgMWUzKVxuICAgICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgICAgICB0Ll9jYW5jZWxsZWQgfHwgc2V0VGltZW91dChyLCAxZTMpXG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIHQgPSBSb2Jsb3hMYXVuY2gubGF1bmNoZXIsXG4gICAgICAgIGk7XG4gICAgdCA9PT0gbnVsbCAmJiAodCA9IG5ldyBSQlguUGxhY2VMYXVuY2hlcihcIlBsYWNlTGF1bmNoZXJTdGF0dXNQYW5lbFwiKSwgdC5fc2hvd0RpYWxvZygpLCB0Ll91cGRhdGVTdGF0dXMoMCkpLCBpID0gITEsIHIoKVxufSwgUm9ibG94TGF1bmNoLkNoZWNrUm9ibG94SW5zdGFsbCA9IGZ1bmN0aW9uKG4pIHtcbiAgICBpZiAoUm9ibG94LkNsaWVudC5Jc1JvYmxveEluc3RhbGxlZCgpKSByZXR1cm4gUm9ibG94LkNsaWVudC5VcGRhdGUoKSwgITA7XG4gICAgd2luZG93LmxvY2F0aW9uID0gblxufSwgUkJYLlBsYWNlTGF1bmNoZXIgPSBmdW5jdGlvbihuKSB7XG4gICAgdGhpcy5fY2FuY2VsbGVkID0gITEsIHRoaXMuX3BvcHVwSUQgPSBuLCB0aGlzLl9wb3B1cCA9ICQoXCIjXCIgKyBuKVxufSwgUkJYLlBsYWNlTGF1bmNoZXIucHJvdG90eXBlID0ge1xuICAgIF9zaG93RGlhbG9nOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5fY2FuY2VsbGVkID0gITEsIF9wb3B1cE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBlc2NDbG9zZTogITAsXG4gICAgICAgICAgICBvcGFjaXR5OiA4MCxcbiAgICAgICAgICAgIG92ZXJsYXlDc3M6IHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMFwiXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMuX3BvcHVwSUQgPT0gXCJQbGFjZUxhdW5jaGVyU3RhdHVzUGFuZWxcIiAmJiAoUm9ibG94LlZpZGVvUHJlUm9sbCAmJiBSb2Jsb3guVmlkZW9QcmVSb2xsLnNob3dWaWRlb1ByZVJvbGwgJiYgIVJvYmxveC5WaWRlb1ByZVJvbGwuaXNFeGNsdWRlZCgpID8gKHRoaXMuX3BvcHVwID0gJChcIiN2aWRlb1ByZXJvbGxQYW5lbFwiKSwgX3BvcHVwT3B0aW9ucy5vblNob3cgPSBmdW5jdGlvbihuKSB7XG4gICAgICAgICAgICBSb2Jsb3guVmlkZW9QcmVSb2xsLmNvcnJlY3RJRU1vZGFsUG9zaXRpb24obiksIFJvYmxveC5WaWRlb1ByZVJvbGwuc3RhcnQoKVxuICAgICAgICB9LCBfcG9wdXBPcHRpb25zLm9uQ2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIFJvYmxveC5WaWRlb1ByZVJvbGwuY2xvc2UoKVxuICAgICAgICB9LCBfcG9wdXBPcHRpb25zLmNsb3NlSFRNTCA9ICc8YSBocmVmPVwiI1wiIGNsYXNzPVwiSW1hZ2VCdXR0b24gY2xvc2VCdG5DaXJjbGVfMzVoIEFCQ2xvc2VDaXJjbGUgVnByQ2xvc2VCdXR0b25cIj48L2E+JykgOiAodGhpcy5fcG9wdXAgPSAkKFwiI1wiICsgdGhpcy5fcG9wdXBJRCksIF9wb3B1cE9wdGlvbnMub25DbG9zZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgUm9ibG94LlZpZGVvUHJlUm9sbC5sb2dWaWRlb1ByZVJvbGwoKSwgJC5tb2RhbC5jbG9zZSgpXG4gICAgICAgIH0pKSwgdGhpcy5fcG9wdXAubW9kYWwoX3BvcHVwT3B0aW9ucyk7XG4gICAgICAgIHZhciBuID0gdGhpcztcbiAgICAgICAgJChcIi5DYW5jZWxQbGFjZUxhdW5jaGVyQnV0dG9uXCIpLmNsaWNrKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgbi5DYW5jZWxMYXVuY2goKVxuICAgICAgICB9KSwgJChcIi5DYW5jZWxQbGFjZUxhdW5jaGVyQnV0dG9uXCIpLnNob3coKVxuICAgIH0sXG4gICAgX3JlcG9ydER1cmF0aW9uOiBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgICQuYWpheCh7XG4gICAgICAgICAgICB0eXBlOiBcIkdFVFwiLFxuICAgICAgICAgICAgYXN5bmM6ICEwLFxuICAgICAgICAgICAgY2FjaGU6ICExLFxuICAgICAgICAgICAgdGltZW91dDogNWU0LFxuICAgICAgICAgICAgdXJsOiBcIi9HYW1lL0pvaW5SYXRlLmFzaHg/Yz1cIiArIFJvYmxveExhdW5jaC5jbGllbnRNZXRyaWNUeXBlICsgXCImcj1cIiArIHQgKyBcIiZkPVwiICsgbixcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCkge31cbiAgICAgICAgfSlcbiAgICB9LFxuICAgIF9vbkdhbWVTdGF0dXM6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdmFyIHIsIGksIHQ7XG4gICAgICAgIGlmICh0aGlzLl9jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgIHIgPSArbmV3IERhdGUgLSBSb2Jsb3hMYXVuY2gudGltZXIuZ2V0VGltZSgpLCB0aGlzLl9yZXBvcnREdXJhdGlvbihyLCBcIkNhbmNlbFwiKTtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl91cGRhdGVTdGF0dXMobi5zdGF0dXMpLCBuLnN0YXR1cyA9PT0gMikgUm9ibG94TGF1bmNoLlN0YXJ0R2FtZShuLmpvaW5TY3JpcHRVcmwsIFwiSm9pblwiLCBuLmF1dGhlbnRpY2F0aW9uVXJsLCBuLmF1dGhlbnRpY2F0aW9uVGlja2V0KSwgaSA9ICtuZXcgRGF0ZSAtIFJvYmxveExhdW5jaC50aW1lci5nZXRUaW1lKCksIHRoaXMuX3JlcG9ydER1cmF0aW9uKGksIFwiU3VjY2Vzc1wiKTtcbiAgICAgICAgZWxzZSBpZiAobi5zdGF0dXMgPCAyIHx8IG4uc3RhdHVzID09PSA2KSB7XG4gICAgICAgICAgICB2YXIgZiA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdC5fb25HYW1lU3RhdHVzKG4pXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlID0gZnVuY3Rpb24obiwgdCkge1xuICAgICAgICAgICAgICAgICAgICB0Ll9vbkdhbWVFcnJvcihuKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbyA9IHRoaXMsXG4gICAgICAgICAgICAgICAgdSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBSb2Jsb3hQbGFjZUxhdW5jaGVyU2VydmljZS5DaGVja0dhbWVKb2JTdGF0dXMobi5qb2JJZCwgZiwgZSwgbylcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQodSwgMmUzKVxuICAgICAgICB9IGVsc2Ugbi5zdGF0dXMgPT09IDQgJiYgKHQgPSArbmV3IERhdGUgLSBSb2Jsb3hMYXVuY2gudGltZXIuZ2V0VGltZSgpLCB0aGlzLl9yZXBvcnREdXJhdGlvbih0LCBcIkZhaWx1cmVcIikpXG4gICAgfSxcbiAgICBfdXBkYXRlU3RhdHVzOiBmdW5jdGlvbihuKSB7XG4gICAgICAgIE1hZFN0YXR1cy5ydW5uaW5nIHx8IChNYWRTdGF0dXMuaW5pdCgkKHRoaXMuX3BvcHVwKS5maW5kKFwiLk1hZFN0YXR1c0ZpZWxkXCIpLCAkKHRoaXMuX3BvcHVwKS5maW5kKFwiLk1hZFN0YXR1c0JhY2tCdWZmZXJcIiksIDJlMywgODAwKSwgTWFkU3RhdHVzLnN0YXJ0KCkpO1xuICAgICAgICBzd2l0Y2ggKG4pIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBNYWRTdGF0dXMubWFudWFsVXBkYXRlKFwiQSBzZXJ2ZXIgaXMgbG9hZGluZyB0aGUgZ2FtZS4uLlwiLCAhMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgTWFkU3RhdHVzLm1hbnVhbFVwZGF0ZShcIlRoZSBzZXJ2ZXIgaXMgcmVhZHkuIEpvaW5pbmcgdGhlIGdhbWUuLi5cIiwgITApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgIE1hZFN0YXR1cy5tYW51YWxVcGRhdGUoXCJKb2luaW5nIGdhbWVzIGlzIHRlbXBvcmFyaWx5IGRpc2FibGVkIHdoaWxlIHdlIHVwZ3JhZGUuIFBsZWFzZSB0cnkgYWdhaW4gc29vbi5cIiwgITEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIE1hZFN0YXR1cy5tYW51YWxVcGRhdGUoXCJBbiBlcnJvciBvY2N1cnJlZC4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci5cIiwgITEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIE1hZFN0YXR1cy5tYW51YWxVcGRhdGUoXCJUaGUgZ2FtZSB5b3UgcmVxdWVzdGVkIGhhcyBlbmRlZC5cIiwgITEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIE1hZFN0YXR1cy5tYW51YWxVcGRhdGUoXCJUaGUgZ2FtZSB5b3UgcmVxdWVzdGVkIGlzIGN1cnJlbnRseSBmdWxsLiBXYWl0aW5nIGZvciBhbiBvcGVuaW5nLi4uXCIsICEwLCAhMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgICAgTWFkU3RhdHVzLm1hbnVhbFVwZGF0ZShcIlJvYmxveCBpcyB1cGRhdGluZy4gUGxlYXNlIHdhaXQuLi5cIiwgITApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgIE1hZFN0YXR1cy5tYW51YWxVcGRhdGUoXCJSZXF1ZXN0aW5nIGEgc2VydmVyXCIsICEwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgTWFkU3RhdHVzLnN0b3AoXCJDb25uZWN0aW5nIHRvIFBsYXllcnMuLi5cIilcbiAgICAgICAgfVxuICAgICAgICAkKHRoaXMuX3BvcHVwKS5maW5kKFwiLk1hZFN0YXR1c1N0YXJ0aW5nXCIpLmNzcyhcImRpc3BsYXlcIiwgXCJub25lXCIpLCAkKHRoaXMuX3BvcHVwKS5maW5kKFwiLk1hZFN0YXR1c1NwaW5uZXJcIikuY3NzKFwidmlzaWJpbGl0eVwiLCBuID09PSAzIHx8IG4gPT09IDQgfHwgbiA9PT0gNSA/IFwiaGlkZGVuXCIgOiBcInZpc2libGVcIilcbiAgICB9LFxuICAgIF9vbkdhbWVFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXR1cyg0KVxuICAgIH0sXG4gICAgX3N0YXJ0VXBkYXRlUG9sbGluZzogZnVuY3Rpb24obikge1xuICAgICAgICB2YXIgdCwgaTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChSb2Jsb3hMYXVuY2guc3RhdGUgPSBSb2Jsb3hMYXVuY2hTdGF0ZXMuVXBncmFkaW5nLCB0ID0gUm9ibG94LkNsaWVudC5DcmVhdGVMYXVuY2hlcighMCksIGkgPSB3aW5kb3cuQWN0aXZlWE9iamVjdCA/IHQuSXNVcFRvRGF0ZSA6IHQuR2V0X0lzVXBUb0RhdGUoKSwgaSB8fCBpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0LlByZVN0YXJ0R2FtZSgpXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgICAgICAgICBSb2Jsb3guQ2xpZW50LlJlbGVhc2VMYXVuY2hlcih0LCAhMCwgITEpLCBSb2Jsb3hMYXVuY2guc3RhdGUgPSBSb2Jsb3hMYXVuY2hTdGF0ZXMuU3RhcnRpbmdTZXJ2ZXIsIG4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBmID0gZnVuY3Rpb24odCwgaSwgcikge1xuICAgICAgICAgICAgICAgICAgICByLl9vblVwZGF0ZVN0YXR1cyh0LCBpLCBuKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdSA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdC5fb25VcGRhdGVFcnJvcihuKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgciA9IHRoaXM7XG4gICAgICAgICAgICB0aGlzLkNoZWNrVXBkYXRlU3RhdHVzKGYsIHUsIHQsIG4sIHIpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIFJvYmxveC5DbGllbnQuUmVsZWFzZUxhdW5jaGVyKHQsICEwLCAhMSksIG4oKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBfb25VcGRhdGVTdGF0dXM6IGZ1bmN0aW9uKG4sIHQsIGkpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jYW5jZWxsZWQpXG4gICAgICAgICAgICBpZiAodGhpcy5fdXBkYXRlU3RhdHVzKG4pLCBuID09PSA4KSBSb2Jsb3guQ2xpZW50LlJlbGVhc2VMYXVuY2hlcih0LCAhMCwgITApLCBSb2Jsb3guQ2xpZW50LlJlZnJlc2goKSwgUm9ibG94TGF1bmNoLnN0YXRlID0gUm9ibG94TGF1bmNoU3RhdGVzLlN0YXJ0aW5nU2VydmVyLCBpKCk7XG4gICAgICAgICAgICBlbHNlIGlmIChuID09PSA3KSB7XG4gICAgICAgICAgICB2YXIgZiA9IGZ1bmN0aW9uKG4sIHQsIHIpIHtcbiAgICAgICAgICAgICAgICAgICAgci5fb25VcGRhdGVTdGF0dXMobiwgdCwgaSlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGUgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgICAgICAgICAgICAgIHQuX29uVXBkYXRlRXJyb3IobilcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHIgPSB0aGlzLFxuICAgICAgICAgICAgICAgIHUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgci5DaGVja1VwZGF0ZVN0YXR1cyhmLCBlLCB0LCBpLCByKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCh1LCAyZTMpXG4gICAgICAgIH0gZWxzZSBhbGVydChcIlVua25vd24gc3RhdHVzIGZyb20gQ2hlY2tVcGRhdGVTdGF0dXNcIilcbiAgICB9LFxuICAgIF9vblVwZGF0ZUVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlU3RhdHVzKDIpXG4gICAgfSxcbiAgICBDaGVja1VwZGF0ZVN0YXR1czogZnVuY3Rpb24obiwgdCwgaSwgciwgdSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGkuUHJlU3RhcnRHYW1lKCksIHdpbmRvdy5BY3RpdmVYT2JqZWN0KSB2YXIgZiA9IGkuSXNVcFRvRGF0ZTtcbiAgICAgICAgICAgIGVsc2UgZiA9IGkuR2V0X0lzVXBUb0RhdGUoKTtcbiAgICAgICAgICAgIGYgfHwgZiA9PT0gdW5kZWZpbmVkID8gbig4LCBpLCB1KSA6IG4oNywgaSwgdSlcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgbig4LCBpLCB1KVxuICAgICAgICB9XG4gICAgfSxcbiAgICBSZXF1ZXN0R2FtZTogZnVuY3Rpb24obiwgdCkge1xuICAgICAgICB2YXIgcjtcbiAgICAgICAgdGhpcy5fc2hvd0RpYWxvZygpO1xuICAgICAgICB2YXIgZiA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgICAgICAgICB0Ll9vbkdhbWVTdGF0dXMobilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1ID0gZnVuY3Rpb24obiwgdCkge1xuICAgICAgICAgICAgICAgIHQuX29uR2FtZUVycm9yKG4pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZSA9IHRoaXMsXG4gICAgICAgICAgICBpID0gITE7XG4gICAgICAgIHJldHVybiB0eXBlb2YgUGFydHkgIT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgUGFydHkuQW1JTGVhZGVyID09IFwiZnVuY3Rpb25cIiAmJiAoaSA9IFBhcnR5LkFtSUxlYWRlcigpKSwgciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgUm9ibG94UGxhY2VMYXVuY2hlclNlcnZpY2UuUmVxdWVzdEdhbWUobiwgaSwgdCwgZiwgdSwgZSlcbiAgICAgICAgfSwgdGhpcy5fc3RhcnRVcGRhdGVQb2xsaW5nKHIpLCAhMVxuICAgIH0sXG4gICAgUmVxdWVzdFBsYXlXaXRoUGFydHk6IGZ1bmN0aW9uKG4sIHQsIGkpIHtcbiAgICAgICAgdGhpcy5fc2hvd0RpYWxvZygpO1xuICAgICAgICB2YXIgZiA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgICAgICAgICB0Ll9vbkdhbWVTdGF0dXMobilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlID0gZnVuY3Rpb24obiwgdCkge1xuICAgICAgICAgICAgICAgIHQuX29uR2FtZUVycm9yKG4pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgciA9IHRoaXMsXG4gICAgICAgICAgICB1ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgUm9ibG94UGxhY2VMYXVuY2hlclNlcnZpY2UuUmVxdWVzdFBsYXlXaXRoUGFydHkobiwgdCwgaSwgZiwgZSwgcilcbiAgICAgICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGFydFVwZGF0ZVBvbGxpbmcodSksICExXG4gICAgfSxcbiAgICBSZXF1ZXN0R3JvdXBCdWlsZEdhbWU6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdGhpcy5fc2hvd0RpYWxvZygpO1xuICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgICAgICAgICB0Ll9vbkdhbWVTdGF0dXMobiwgITApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdSA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgICAgICAgICB0Ll9vbkdhbWVFcnJvcihuKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHQgPSB0aGlzLFxuICAgICAgICAgICAgaSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIFJvYmxveFBsYWNlTGF1bmNoZXJTZXJ2aWNlLlJlcXVlc3RHcm91cEJ1aWxkR2FtZShuLCByLCB1LCB0KVxuICAgICAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0VXBkYXRlUG9sbGluZyhpKSwgITFcbiAgICB9LFxuICAgIFJlcXVlc3RGb2xsb3dVc2VyOiBmdW5jdGlvbihuKSB7XG4gICAgICAgIHRoaXMuX3Nob3dEaWFsb2coKTtcbiAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgICAgICAgICAgdC5fb25HYW1lU3RhdHVzKG4pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdSA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgICAgICAgICB0Ll9vbkVycm9yKG4pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdCA9IHRoaXMsXG4gICAgICAgICAgICBpID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgUm9ibG94UGxhY2VMYXVuY2hlclNlcnZpY2UuUmVxdWVzdEZvbGxvd1VzZXIobiwgciwgdSwgdClcbiAgICAgICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGFydFVwZGF0ZVBvbGxpbmcoaSksICExXG4gICAgfSxcbiAgICBSZXF1ZXN0R2FtZUpvYjogZnVuY3Rpb24obiwgdCwgaSkge1xuICAgICAgICB0aGlzLl9zaG93RGlhbG9nKCk7XG4gICAgICAgIHZhciBmID0gZnVuY3Rpb24obiwgdCkge1xuICAgICAgICAgICAgICAgIHQuX29uR2FtZVN0YXR1cyhuKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGUgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgICAgICAgICAgdC5fb25HYW1lRXJyb3IobilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByID0gdGhpcyxcbiAgICAgICAgICAgIHUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBSb2Jsb3hQbGFjZUxhdW5jaGVyU2VydmljZS5SZXF1ZXN0R2FtZUpvYihuLCB0LCBpLCBmLCBlLCByKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0VXBkYXRlUG9sbGluZyh1KSwgITFcbiAgICB9LFxuICAgIENhbmNlbExhdW5jaDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYW5jZWxsZWQgPSAhMCwgJC5tb2RhbC5jbG9zZSgpLCAhMVxuICAgIH0sXG4gICAgZGlzcG9zZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIFJCWC5QbGFjZUxhdW5jaGVyLmNhbGxCYXNlTWV0aG9kKHRoaXMsIFwiZGlzcG9zZVwiKVxuICAgIH1cbn07XG5cbjsgLy8vIFZpZGVvUHJlUm9sbC5qc1xuZnVuY3Rpb24gb3BlblZpZGVvUHJlcm9sbDIobikge1xuICAgIFJvYmxveC5WaWRlb1ByZVJvbGwudGVzdChuKVxufVxuXG5mdW5jdGlvbiBmbGFzaENoZWNrKG4pIHtcbiAgICB2YXIgaSA9ICExLFxuICAgICAgICB0LCByO1xuICAgIGlmICh3aW5kb3cuQWN0aXZlWE9iamVjdCkgdHJ5IHtcbiAgICAgICAgdCA9IG5ldyBBY3RpdmVYT2JqZWN0KFwiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guXCIgKyBuKSwgaSA9ICEwXG4gICAgfSBjYXRjaCAodSkge30gZWxzZSBuYXZpZ2F0b3IucGx1Z2lucyAmJiBuYXZpZ2F0b3IubWltZVR5cGVzLmxlbmd0aCA+IDAgJiYgKHQgPSBuYXZpZ2F0b3IucGx1Z2luc1tcIlNob2Nrd2F2ZSBGbGFzaFwiXSwgdCAmJiAociA9IG5hdmlnYXRvci5wbHVnaW5zW1wiU2hvY2t3YXZlIEZsYXNoXCJdLmRlc2NyaXB0aW9uLnJlcGxhY2UoLy4qXFxzKFxcZCtcXC5cXGQrKS4qLywgXCIkMVwiKSwgciA+PSBuICYmIChpID0gITApKSk7XG4gICAgcmV0dXJuIGlcbn1cbnR5cGVvZiBSb2Jsb3ggPT0gXCJ1bmRlZmluZWRcIiAmJiAoUm9ibG94ID0ge30pLCBSb2Jsb3guVmlkZW9QcmVSb2xsID0ge1xuICAgIG5ld1ZhbHVlOiBcIlwiLFxuICAgIHNob3dWaWRlb1ByZVJvbGw6ICExLFxuICAgIHZpZGVvSW5pdGlhbGl6ZWQ6ICExLFxuICAgIHZpZGVvU3RhcnRlZDogITEsXG4gICAgdmlkZW9Db21wbGV0ZWQ6ICExLFxuICAgIHZpZGVvU2tpcHBlZDogITEsXG4gICAgdmlkZW9DYW5jZWxsZWQ6ICExLFxuICAgIHZpZGVvRXJyb3JlZDogITEsXG4gICAgdmlkZW9PcHRpb25zOiB7XG4gICAgICAgIGtleTogXCJpbnRlZ3JhdGlvbl90ZXN0XCIsXG4gICAgICAgIGNvbXBhbmlvbklkOiBcInZpZGVvUHJlcm9sbENvbXBhbmlvbkFkXCJcbiAgICB9LFxuICAgIG15dnBhaWRhZDogbnVsbCxcbiAgICBsb2FkaW5nQmFyTWF4VGltZTogM2U0LFxuICAgIGxvYWRpbmdCYXJDdXJyZW50VGltZTogMCxcbiAgICBsb2FkaW5nQmFySW50ZXJ2YWxJRDogMCxcbiAgICBsb2FkaW5nQmFySUQ6IFwidmlkZW9QcmVyb2xsTG9hZGluZ0JhclwiLFxuICAgIGxvYWRpbmdCYXJJbm5lcklEOiBcInZpZGVvUHJlcm9sbExvYWRpbmdCYXJDb21wbGV0ZWRcIixcbiAgICBsb2FkaW5nQmFyUGVyY2VudGFnZUlEOiBcInZpZGVvUHJlcm9sbExvYWRpbmdQZXJjZW50XCIsXG4gICAgdmlkZW9Mb2FkaW5nVGltZW91dDogN2UzLFxuICAgIHZpZGVvUGxheWluZ1RpbWVvdXQ6IDIzZTMsXG4gICAgdmlkZW9Mb2dOb3RlOiBcIlwiLFxuICAgIGxvZ3NFbmFibGVkOiAhMSxcbiAgICBleGNsdWRlZFBsYWNlSWRzOiBcIlwiLFxuICAgIHNwZWNpZmljQWRPblBsYWNlUGFnZUVuYWJsZWQ6ICExLFxuICAgIHNwZWNpZmljQWRPblBsYWNlUGFnZUlkOiAwLFxuICAgIHNwZWNpZmljQWRPblBsYWNlUGFnZUNhdGVnb3J5OiBcIlwiLFxuICAgIGNoZWNrRWxpZ2liaWxpdHk6IGZ1bmN0aW9uKCkge1xuICAgICAgICBSb2Jsb3guVmlkZW9QcmVSb2xsLnNob3dWaWRlb1ByZVJvbGwgJiYgKGZsYXNoQ2hlY2soOCkgPyB0eXBlb2YgX19hZGFwdHZfXyA9PSBcInVuZGVmaW5lZFwiID8gKFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Mb2dOb3RlID0gXCJOb0FkYXBUdlwiLCBSb2Jsb3guVmlkZW9QcmVSb2xsLnNob3dWaWRlb1ByZVJvbGwgPSAhMSkgOiBSb2Jsb3guQ2xpZW50LklzUm9ibG94SW5zdGFsbGVkKCkgPyBSb2Jsb3guQ2xpZW50LmlzSURFKCkgPyAoUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0xvZ05vdGUgPSBcIlJvYmxveFN0dWRpb1wiLCBSb2Jsb3guVmlkZW9QcmVSb2xsLnNob3dWaWRlb1ByZVJvbGwgPSAhMSkgOiBSb2Jsb3guQ2xpZW50LmlzUm9ibG94QnJvd3NlcigpID8gKFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Mb2dOb3RlID0gXCJSb2Jsb3hQbGF5ZXJcIiwgUm9ibG94LlZpZGVvUHJlUm9sbC5zaG93VmlkZW9QcmVSb2xsID0gITEpIDogd2luZG93LmNocm9tZSAmJiB3aW5kb3cubG9jYXRpb24uaGFzaCA9PSBcIiNjaHJvbWVJbnN0YWxsXCIgJiYgKFJvYmxveC5WaWRlb1ByZVJvbGwuc2hvd1ZpZGVvUHJlUm9sbCA9ICExKSA6IFJvYmxveC5WaWRlb1ByZVJvbGwuc2hvd1ZpZGVvUHJlUm9sbCA9ICExIDogKFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Mb2dOb3RlID0gXCJOb0ZsYXNoXCIsIFJvYmxveC5WaWRlb1ByZVJvbGwuc2hvd1ZpZGVvUHJlUm9sbCA9ICExKSlcbiAgICB9LFxuICAgIGlzRXhjbHVkZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgdCwgbjtcbiAgICAgICAgaWYgKFJvYmxveC5WaWRlb1ByZVJvbGwuc2hvd1ZpZGVvUHJlUm9sbCAmJiBSb2Jsb3guVmlkZW9QcmVSb2xsLmV4Y2x1ZGVkUGxhY2VJZHMgIT09IFwiXCIgJiYgKHQgPSBSb2Jsb3guVmlkZW9QcmVSb2xsLmV4Y2x1ZGVkUGxhY2VJZHMuc3BsaXQoXCIsXCIpLCB0eXBlb2YgcGxheV9wbGFjZUlkICE9IFwidW5kZWZpbmVkXCIpKVxuICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspXG4gICAgICAgICAgICAgICAgaWYgKHBsYXlfcGxhY2VJZCA9PSB0W25dKSByZXR1cm4gUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0xvZ05vdGUgPSBcIkV4Y2x1ZGVkUGxhY2VcIiwgITA7XG4gICAgICAgIHJldHVybiAhMVxuICAgIH0sXG4gICAgc3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgaSwgciwgdCwgbjtcbiAgICAgICAgdGhpcy52aWRlb0luaXRpYWxpemVkID0gITAsIHRoaXMudmlkZW9TdGFydGVkID0gITEsIHRoaXMudmlkZW9DYW5jZWxsZWQgPSAhMSwgdGhpcy52aWRlb0NvbXBsZXRlZCA9ICExLCB0aGlzLnZpZGVvU2tpcHBlZCA9ICExLCB0aGlzLmxvYWRpbmdCYXJDdXJyZW50VGltZSA9IDAsIHRoaXMudmlkZW9Mb2dOb3RlID0gXCJcIiwgUm9ibG94LlZpZGVvUHJlUm9sbC5zcGVjaWZpY0FkT25QbGFjZVBhZ2VFbmFibGVkICYmIHR5cGVvZiBwbGF5X3BsYWNlSWQgIT0gXCJ1bmRlZmluZWRcIiAmJiAoaSA9IFwiLFwiICsgUm9ibG94LlZpZGVvUHJlUm9sbC5zcGVjaWZpY0FkT25QbGFjZVBhZ2VDYXRlZ29yeSwgcGxheV9wbGFjZUlkID09IFJvYmxveC5WaWRlb1ByZVJvbGwuc3BlY2lmaWNBZE9uUGxhY2VQYWdlSWQgJiYgUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb09wdGlvbnMuY2F0ZWdvcmllcy5pbmRleE9mKGkpID09IC0xICYmIChSb2Jsb3guVmlkZW9QcmVSb2xsLnZpZGVvT3B0aW9ucy5jYXRlZ29yaWVzICs9IGkpKSwgciA9IF9fYWRhcHR2X18sIHRoaXMubXl2cGFpZGFkID0gbmV3IHIuYWRzLnZwYWlkLlZQQUlEQWQoXCJ2aWRlb1ByZXJvbGxNYWluRGl2XCIpLCB0ID0gMWUzLCBMb2FkaW5nQmFyLmluaXQodGhpcy5sb2FkaW5nQmFySUQsIHRoaXMubG9hZGluZ0JhcklubmVySUQsIHRoaXMubG9hZGluZ0JhclBlcmNlbnRhZ2VJRCksIHRoaXMubG9hZGluZ0JhckludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIFJvYmxveC5WaWRlb1ByZVJvbGwubG9hZGluZ0JhckN1cnJlbnRUaW1lICs9IHQsIExvYWRpbmdCYXIudXBkYXRlKFJvYmxveC5WaWRlb1ByZVJvbGwubG9hZGluZ0JhcklELCBSb2Jsb3guVmlkZW9QcmVSb2xsLmxvYWRpbmdCYXJDdXJyZW50VGltZSAvIFJvYmxveC5WaWRlb1ByZVJvbGwubG9hZGluZ0Jhck1heFRpbWUpXG4gICAgICAgIH0sIHQpLCBuID0gci5hZHMudnBhaWQuVlBBSURFdmVudDtcbiAgICAgICAgdGhpcy5teXZwYWlkYWQub24obi5BZExvYWRlZCwgZnVuY3Rpb24obikge1xuICAgICAgICAgICAgUm9ibG94LlZpZGVvUHJlUm9sbC5fb25WaWRlb0xvYWRlZChuKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5teXZwYWlkYWQub24obi5BZFN0YXJ0ZWQsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgIFJvYmxveC5WaWRlb1ByZVJvbGwuX29uVmlkZW9TdGFydChuKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5teXZwYWlkYWQub24obi5BZFN0b3BwZWQsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgIFJvYmxveC5WaWRlb1ByZVJvbGwuX29uVmlkZW9Db21wbGV0ZShuKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5teXZwYWlkYWQub24obi5BZEVycm9yLCBmdW5jdGlvbihuKSB7XG4gICAgICAgICAgICBSb2Jsb3guVmlkZW9QcmVSb2xsLl9vblZpZGVvRXJyb3IobilcbiAgICAgICAgfSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLm15dnBhaWRhZC5pbml0QWQoMzkxLCAzMTIsIHRoaXMudmlkZW9PcHRpb25zKVxuICAgICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgICAgICBmKClcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICBjbGVhckludGVydmFsKGxvYWRpbmdCYXJJbnRlcnZhbClcbiAgICB9LFxuICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudmlkZW9DYW5jZWxsZWQgPSAhMCwgJC5tb2RhbC5jbG9zZSgpXG4gICAgfSxcbiAgICBza2lwOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy52aWRlb0NvbXBsZXRlZCA9ICEwLCB0aGlzLnZpZGVvU2tpcHBlZCA9ICEwLCB0aGlzLnNob3dWaWRlb1ByZVJvbGwgPSAhMVxuICAgIH0sXG4gICAgY2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICBNYWRTdGF0dXMucnVubmluZyAmJiBNYWRTdGF0dXMuc3RvcChcIlwiKSwgUm9ibG94TGF1bmNoLmxhdW5jaGVyICYmIChSb2Jsb3hMYXVuY2gubGF1bmNoZXIuX2NhbmNlbGxlZCA9ICEwKSwgY2xlYXJJbnRlcnZhbCh0aGlzLmxvYWRpbmdCYXJJbnRlcnZhbElEKSwgTG9hZGluZ0Jhci5kaXNwb3NlKHRoaXMubG9hZGluZ0JhcklEKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMubXl2cGFpZGFkLnN0b3BBZCgpXG4gICAgICAgIH0gY2F0Y2ggKG4pIHt9XG4gICAgICAgIHRoaXMuaXNQbGF5aW5nKCkgJiYgKHRoaXMudmlkZW9DYW5jZWxsZWQgPSAhMCksICQubW9kYWwuY2xvc2UoKSwgdGhpcy5sb2dWaWRlb1ByZVJvbGwoKVxuICAgIH0sXG4gICAgX29uVmlkZW9FcnJvcjogZnVuY3Rpb24gZigpIHtcbiAgICAgICAgdGhpcy52aWRlb0NvbXBsZXRlZCA9ICEwLCB0aGlzLnZpZGVvRXJyb3JlZCA9ICEwXG4gICAgfSxcbiAgICBfb25WaWRlb0xvYWRlZDogZnVuY3Rpb24obikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5teXZwYWlkYWQuc3RhcnRBZCgpXG4gICAgICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgICAgICAgIGYobilcbiAgICAgICAgfVxuICAgIH0sXG4gICAgX29uVmlkZW9TdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudmlkZW9TdGFydGVkID0gITBcbiAgICB9LFxuICAgIF9vblZpZGVvQ29tcGxldGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnZpZGVvU3RhcnRlZCAmJiB0aGlzLnZpZGVvQ2FuY2VsbGVkID09ICExICYmICh0aGlzLnZpZGVvQ29tcGxldGVkID0gITAsIHRoaXMuc2hvd1ZpZGVvUHJlUm9sbCA9ICExLCB0aGlzLm5ld1ZhbHVlICE9IFwiXCIgJiYgJC5jb29raWUoXCJSQlhWUFJcIiwgdGhpcy5uZXdWYWx1ZSwgMTgwKSlcbiAgICB9LFxuICAgIGxvZ1ZpZGVvUHJlUm9sbDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmIChSb2Jsb3guVmlkZW9QcmVSb2xsLmxvZ3NFbmFibGVkKSB7XG4gICAgICAgICAgICB2YXIgbiA9IFwiXCI7XG4gICAgICAgICAgICBpZiAoUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0NvbXBsZXRlZCkgbiA9IFwiQ29tcGxldGVcIiwgUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0xvZ05vdGUgPT0gXCJcIiAmJiAoUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0xvZ05vdGUgPSBcIk5vVGltZW91dFwiKSwgUm9ibG94LlZpZGVvUHJlUm9sbC5sb2dzRW5hYmxlZCA9ICExO1xuICAgICAgICAgICAgZWxzZSBpZiAoUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0NhbmNlbGxlZCkgbiA9IFwiQ2FuY2VsbGVkXCIsIFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Mb2dOb3RlID0gUm9ibG94TGF1bmNoLnN0YXRlO1xuICAgICAgICAgICAgZWxzZSBpZiAoUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0luaXRpYWxpemVkID09ICExICYmIFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Mb2dOb3RlICE9IFwiXCIpIG4gPSBcIkZhaWxlZFwiLCBSb2Jsb3guVmlkZW9QcmVSb2xsLmxvZ3NFbmFibGVkID0gITE7XG4gICAgICAgICAgICBlbHNlIHJldHVybjtcbiAgICAgICAgICAgIEdvb2dsZUFuYWx5dGljc0V2ZW50cy5GaXJlRXZlbnQoW1wiUHJlUm9sbFwiLCBuLCBSb2Jsb3guVmlkZW9QcmVSb2xsLnZpZGVvTG9nTm90ZV0pXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGlzUGxheWluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSb2Jsb3guVmlkZW9QcmVSb2xsLnZpZGVvSW5pdGlhbGl6ZWQgPyAoUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0luaXRpYWxpemVkICYmICFSb2Jsb3guVmlkZW9QcmVSb2xsLnZpZGVvU3RhcnRlZCAmJiBSb2Jsb3guVmlkZW9QcmVSb2xsLmxvYWRpbmdCYXJDdXJyZW50VGltZSA+IFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Mb2FkaW5nVGltZW91dCAmJiAoUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0NvbXBsZXRlZCA9ICEwLCBSb2Jsb3guVmlkZW9QcmVSb2xsLnZpZGVvTG9nTm90ZSA9IFwiTG9hZGluZ1RpbWVvdXRcIiksIFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9TdGFydGVkICYmICFSb2Jsb3guVmlkZW9QcmVSb2xsLnZpZGVvQ29tcGxldGVkICYmIFJvYmxveC5WaWRlb1ByZVJvbGwubG9hZGluZ0JhckN1cnJlbnRUaW1lID4gUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb1BsYXlpbmdUaW1lb3V0ICYmIChSb2Jsb3guVmlkZW9QcmVSb2xsLnZpZGVvQ29tcGxldGVkID0gITAsIFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Mb2dOb3RlID0gXCJQbGF5aW5nVGltZW91dFwiKSwgIVJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Db21wbGV0ZWQpIDogITFcbiAgICB9LFxuICAgIGNvcnJlY3RJRU1vZGFsUG9zaXRpb246IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgaWYgKG4uY29udGFpbmVyLmlubmVySGVpZ2h0KCkgPD0gMzApIHtcbiAgICAgICAgICAgIHZhciBpID0gJChcIiN2aWRlb1ByZXJvbGxQYW5lbFwiKSxcbiAgICAgICAgICAgICAgICB0ID0gLU1hdGguZmxvb3IoaS5pbm5lckhlaWdodCgpIC8gMik7XG4gICAgICAgICAgICBpLmNzcyh7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgICAgICAgICAgICAgICB0b3A6IHQgKyBcInB4XCJcbiAgICAgICAgICAgIH0pLCBuLmNvbnRhaW5lci5maW5kKFwiLlZwckNsb3NlQnV0dG9uXCIpLmNzcyh7XG4gICAgICAgICAgICAgICAgdG9wOiB0IC0gMTAgKyBcInB4XCIsXG4gICAgICAgICAgICAgICAgXCJ6LWluZGV4XCI6IFwiMTAwM1wiXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfSxcbiAgICB0ZXN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgX3BvcHVwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGVzY0Nsb3NlOiAhMCxcbiAgICAgICAgICAgIG9wYWNpdHk6IDgwLFxuICAgICAgICAgICAgb3ZlcmxheUNzczoge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvblNob3c6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICBSb2Jsb3guVmlkZW9QcmVSb2xsLmNvcnJlY3RJRU1vZGFsUG9zaXRpb24obiksIFJvYmxveC5WaWRlb1ByZVJvbGwuc3RhcnQoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQ2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIFJvYmxveC5WaWRlb1ByZVJvbGwuY2xvc2UoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsb3NlSFRNTDogJzxhIGhyZWY9XCIjXCIgY2xhc3M9XCJJbWFnZUJ1dHRvbiBjbG9zZUJ0bkNpcmNsZV8zNWggQUJDbG9zZUNpcmNsZSBWcHJDbG9zZUJ1dHRvblwiPjwvYT4nXG4gICAgICAgIH0sICQoXCIjdmlkZW9QcmVyb2xsUGFuZWxcIikubW9kYWwoX3BvcHVwT3B0aW9ucyksIE1hZFN0YXR1cy5ydW5uaW5nIHx8IChNYWRTdGF0dXMuaW5pdCgkKFwiI3ZpZGVvUHJlcm9sbFBhbmVsXCIpLmZpbmQoXCIuTWFkU3RhdHVzRmllbGRcIiksICQoXCIjdmlkZW9QcmVyb2xsUGFuZWxcIikuZmluZChcIi5NYWRTdGF0dXNCYWNrQnVmZmVyXCIpLCAyZTMsIDgwMCksIE1hZFN0YXR1cy5zdGFydCgpKSwgJChcIiN2aWRlb1ByZXJvbGxQYW5lbFwiKS5maW5kKFwiLk1hZFN0YXR1c1N0YXJ0aW5nXCIpLmNzcyhcImRpc3BsYXlcIiwgXCJub25lXCIpLCAkKFwiI3ZpZGVvUHJlcm9sbFBhbmVsXCIpLmZpbmQoXCIuTWFkU3RhdHVzU3Bpbm5lclwiKS5jc3MoXCJ2aXNpYmlsaXR5XCIsIHN0YXR1cyA9PT0gMyB8fCBzdGF0dXMgPT09IDQgfHwgc3RhdHVzID09PSA1ID8gXCJoaWRkZW5cIiA6IFwidmlzaWJsZVwiKVxuICAgIH1cbn07XG52YXIgTG9hZGluZ0JhciA9IHtcbiAgICBiYXJzOiBbXSxcbiAgICBpbml0OiBmdW5jdGlvbihuLCB0LCBpLCByKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5nZXQobik7XG4gICAgICAgIHUgPT0gbnVsbCAmJiAodSA9IHt9KSwgdS5iYXJJRCA9IG4sIHUuaW5uZXJCYXJJRCA9IHQsIHUucGVyY2VudGFnZUlEID0gaSwgdHlwZW9mIHIgPT0gXCJ1bmRlZmluZWRcIiAmJiAodS5wZXJjZW50Q29tcGxldGUgPSAwKSwgdGhpcy5iYXJzLnB1c2godSksIHRoaXMudXBkYXRlKG4sIHUucGVyY2VudENvbXBsZXRlKVxuICAgIH0sXG4gICAgZ2V0OiBmdW5jdGlvbihuKSB7XG4gICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgdGhpcy5iYXJzLmxlbmd0aDsgdCsrKVxuICAgICAgICAgICAgaWYgKHRoaXMuYmFyc1t0XS5iYXJJRCA9PSBuKSByZXR1cm4gdGhpcy5iYXJzW3RdO1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgIH0sXG4gICAgZGlzcG9zZTogZnVuY3Rpb24obikge1xuICAgICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IHRoaXMuYmFycy5sZW5ndGg7IHQrKykgdGhpcy5iYXJzW3RdLmJhcklEID09IG4gJiYgdGhpcy5iYXJzLnNwbGljZSh0LCAxKVxuICAgIH0sXG4gICAgdXBkYXRlOiBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgIHZhciBpID0gdGhpcy5nZXQobiksXG4gICAgICAgICAgICB1LCByO1xuICAgICAgICBpICYmICh0ID4gMSAmJiAodCA9IDEpLCB1ID0gJChcIiNcIiArIG4pLndpZHRoKCksIHIgPSBNYXRoLnJvdW5kKHUgKiB0KSwgJChcIiNcIiArIGkuaW5uZXJCYXJJRCkuYW5pbWF0ZSh7XG4gICAgICAgICAgICB3aWR0aDogclxuICAgICAgICB9LCAyMDAsIFwic3dpbmdcIiksIGkucGVyY2VudGFnZUlEICYmICQoXCIjXCIgKyBpLnBlcmNlbnRhZ2VJRCkubGVuZ3RoID4gMCAmJiAkKFwiI1wiICsgaS5wZXJjZW50YWdlSUQpLmh0bWwoTWF0aC5yb3VuZCh0ICogMTAwKSArIFwiJVwiKSwgaS5wZXJjZW50Q29tcGxldGUgPSB0KVxuICAgIH1cbn07XG4vLyBlbmQgcm9ibG94LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/app.js\n");
-
-/***/ }),
-
-/***/ "./resources/sass/app.scss":
-/*!*********************************!*\
- !*** ./resources/sass/app.scss ***!
- \*********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvc2Fzcy9hcHAuc2Nzcz80NzVmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSIsImZpbGUiOiIuL3Jlc291cmNlcy9zYXNzL2FwcC5zY3NzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/sass/app.scss\n");
-
-/***/ })
-
-/******/ });
-/************************************************************************/
-/******/ // The module cache
-/******/ var __webpack_module_cache__ = {};
-/******/
-/******/ // The require function
-/******/ function __webpack_require__(moduleId) {
-/******/ // Check if module is in cache
-/******/ var cachedModule = __webpack_module_cache__[moduleId];
-/******/ if (cachedModule !== undefined) {
-/******/ return cachedModule.exports;
-/******/ }
-/******/ // Create a new module (and put it into the cache)
-/******/ var module = __webpack_module_cache__[moduleId] = {
-/******/ // no module.id needed
-/******/ // no module.loaded needed
-/******/ exports: {}
-/******/ };
-/******/
-/******/ // Execute the module function
-/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
-/******/
-/******/ // Return the exports of the module
-/******/ return module.exports;
-/******/ }
-/******/
-/******/ // expose the modules object (__webpack_modules__)
-/******/ __webpack_require__.m = __webpack_modules__;
-/******/
-/************************************************************************/
-/******/ /* webpack/runtime/chunk loaded */
-/******/ (() => {
-/******/ var deferred = [];
-/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => {
-/******/ if(chunkIds) {
-/******/ priority = priority || 0;
-/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
-/******/ deferred[i] = [chunkIds, fn, priority];
-/******/ return;
-/******/ }
-/******/ var notFulfilled = Infinity;
-/******/ for (var i = 0; i < deferred.length; i++) {
-/******/ var [chunkIds, fn, priority] = deferred[i];
-/******/ var fulfilled = true;
-/******/ for (var j = 0; j < chunkIds.length; j++) {
-/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {
-/******/ chunkIds.splice(j--, 1);
-/******/ } else {
-/******/ fulfilled = false;
-/******/ if(priority < notFulfilled) notFulfilled = priority;
-/******/ }
-/******/ }
-/******/ if(fulfilled) {
-/******/ deferred.splice(i--, 1)
-/******/ result = fn();
-/******/ }
-/******/ }
-/******/ return result;
-/******/ };
-/******/ })();
-/******/
-/******/ /* webpack/runtime/hasOwnProperty shorthand */
-/******/ (() => {
-/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
-/******/ })();
-/******/
-/******/ /* webpack/runtime/make namespace object */
-/******/ (() => {
-/******/ // define __esModule on exports
-/******/ __webpack_require__.r = (exports) => {
-/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/ }
-/******/ Object.defineProperty(exports, '__esModule', { value: true });
-/******/ };
-/******/ })();
-/******/
-/******/ /* webpack/runtime/jsonp chunk loading */
-/******/ (() => {
-/******/ // no baseURI
-/******/
-/******/ // object to store loaded and loading chunks
-/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
-/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
-/******/ var installedChunks = {
-/******/ "/js/app": 0,
-/******/ "css/app": 0
-/******/ };
-/******/
-/******/ // no chunk on demand loading
-/******/
-/******/ // no prefetching
-/******/
-/******/ // no preloaded
-/******/
-/******/ // no HMR
-/******/
-/******/ // no HMR manifest
-/******/
-/******/ __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);
-/******/
-/******/ // install a JSONP callback for chunk loading
-/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
-/******/ var [chunkIds, moreModules, runtime] = data;
-/******/ // add "moreModules" to the modules object,
-/******/ // then flag all "chunkIds" as loaded and fire callback
-/******/ var moduleId, chunkId, i = 0;
-/******/ for(moduleId in moreModules) {
-/******/ if(__webpack_require__.o(moreModules, moduleId)) {
-/******/ __webpack_require__.m[moduleId] = moreModules[moduleId];
-/******/ }
-/******/ }
-/******/ if(runtime) var result = runtime(__webpack_require__);
-/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
-/******/ for(;i < chunkIds.length; i++) {
-/******/ chunkId = chunkIds[i];
-/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
-/******/ installedChunks[chunkId][0]();
-/******/ }
-/******/ installedChunks[chunkIds[i]] = 0;
-/******/ }
-/******/ return __webpack_require__.O(result);
-/******/ }
-/******/
-/******/ var chunkLoadingGlobal = self["webpackChunk"] = self["webpackChunk"] || [];
-/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
-/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
-/******/ })();
-/******/
-/************************************************************************/
-/******/
-/******/ // startup
-/******/ // Load entry module and return exports
-/******/ // This entry module depends on other loaded chunks and execution need to be delayed
-/******/ __webpack_require__.O(undefined, ["css/app"], () => (__webpack_require__("./resources/js/app.js")))
-/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["css/app"], () => (__webpack_require__("./resources/sass/app.scss")))
-/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__);
-/******/
-/******/ })()
-;
\ No newline at end of file
diff --git a/public/js/servers.js b/public/js/servers.js
deleted file mode 100644
index 0497a6e..0000000
--- a/public/js/servers.js
+++ /dev/null
@@ -1,25 +0,0 @@
-function joinServer(id)
-{
- var button = document.getElementById('join-server-' + id);
- $(button).removeClass("btn-success");
- $(button).addClass("btn-secondary");
- button.setAttribute("disabled", "disabled");
- button.innerHTML = "
Joining...";
- $.get("/client/generate/" + id, function(data, status)
- {
- if (status == "success")
- {
- open("tadahlauncher:" + data, "_self")
- }
- else
- {
- alert("Failed to generate token. Try again later.");
- }
- });
- setTimeout(function()
- {
- $(button).removeClass("btn-secondary");
- $(button).addClass("btn-success");
- button.innerHTML = "
Play";
- }, 5000);
-}
\ No newline at end of file
diff --git a/public/mix-manifest.json b/public/mix-manifest.json
deleted file mode 100644
index 2d60117..0000000
--- a/public/mix-manifest.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "/js/app.js": "/js/app.js",
- "/css/app.css": "/css/app.css"
-}
diff --git a/public/robots.txt b/public/robots.txt
deleted file mode 100644
index eb05362..0000000
--- a/public/robots.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-User-agent: *
-Disallow:
diff --git a/public/web.config b/public/web.config
deleted file mode 100644
index 323482f..0000000
--- a/public/web.config
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/resources/css/app.css b/resources/css/app.css
deleted file mode 100644
index e69de29..0000000
diff --git a/resources/js/app.js b/resources/js/app.js
deleted file mode 100644
index 0e9b7a4..0000000
--- a/resources/js/app.js
+++ /dev/null
@@ -1,2097 +0,0 @@
-//require('./bootstrap');
-
-; /// files: roblox.js, jquery.json-2.2.js, jquery.simplemodal-1.3.5.js, jquery.tipsy.js, AjaxAvatarThumbnail.js, extensions/string.js, StringTruncator.min.js, json2.min.js, webkit.js, GoogleAnalytics/GoogleAnalyticsEvents.js, MasterPageUI.js, jquery.cookie.js, jquery.jsoncookie.js, XsrfToken.js, RobloxEventManager.js, RobloxEventListener.js, KontagentEventListener.js, GoogleEventListener.js, MongoEventListener.js, SearchVisionListener.js, SiteTouchEvent.js, JSErrorTracker.js, Studio2Alert.js, ClientInstaller.js, InstallationInstructions.js, MadStatus.js, PlaceLauncher.js, VideoPreRoll.js
-
-; /// roblox.js
-(function(n, t) {
- function p(n, i) {
- var r = i.split(".");
- for (i = r.shift(); r.length > 0; n = n[i], i = r.shift())
- if (n[i] === t) return t;
- return n[i]
- }
-
- function k(n, i, r) {
- var u = i.split(".");
- for (i = u.shift(); u.length > 0; n = n[i], i = u.shift()) n[i] === t && (n[i] = {});
- n[i] = r
- }
-
- function nt(n, t) {
- var i = f.createElement("link");
- i.href = n, i.rel = "stylesheet", i.type = "text/css", u.parentNode.insertBefore(i, u), t()
- }
-
- function g(n, t) {
- var i = f.createElement("script");
- i.type = "text/javascript", i.src = n, i.onload = i.onreadystatechange = function() {
- i.readyState && i.readyState != "loaded" && i.readyState != "complete" || (t(), i.onload = i.onreadystatechange = null)
- }, u.parentNode.insertBefore(i, u)
- }
-
- function d(n) {
- return n.split(".").pop().split("?").shift()
- }
-
- function o(n) {
- return n.indexOf(".js") < 0 ? n : n.indexOf(r.modulePath) >= 0 ? n.split(r.modulePath).pop().split(".js").shift().replace("/", ".") : n
- }
-
- function v(n) {
- var t, i;
- return t = n.indexOf(".js") >= 0 || n.indexOf(".css") >= 0 ? n : r.baseUrl + r.modulePath + n.replace(".", "/") + ".js", i = r.versions[t] || 1, t + "?v=" + i
- }
-
- function s(n) {
- for (var r, u = [], i = 0; i < n.length; i++) r = p(Roblox, o(n[i])), r !== t && u.push(r);
- return u
- }
-
- function e(n) {
- var t = i[n];
- if (t.loaded && t.depsLoaded)
- while (t.listeners.length > 0) t.listeners.shift()()
- }
-
- function a(n, u) {
- var f, s, h;
- if (!b(n) || r.externalResources.toString().indexOf(n) >= 0) return u();
- f = o(n), i[f] === t ? (i[f] = {
- loaded: !1,
- depsLoaded: !0,
- listeners: []
- }, i[f].listeners.push(u), s = v(f), h = d(s) == "css" ? nt : g, h(s, function() {
- i[f].loaded = !0, e(f)
- })) : (i[f].listeners.push(u), e(f))
- }
-
- function h(n, t) {
- var r = n.shift(),
- i = n.length == 0 ? t : function() {
- h(n, t)
- };
- a(r, i)
- }
-
- function l(n, t) {
- c(n) || (n = [n]);
- var i = function() {
- t.apply(null, s(n))
- };
- h(n.slice(0), i)
- }
-
- function y(n, t, r) {
- w(t) ? (r = t, t = []) : c(t) || (t = [t]), i[n] = i[n] || {
- loaded: !0,
- listeners: []
- }, i[n].depsLoaded = !1, i[n].listeners.unshift(function() {
- k(Roblox, n, r.apply(null, s(t)))
- }), l(t, function() {
- i[n].depsLoaded = !0, e(n)
- })
- }
- var f = n.document,
- u = f.getElementsByTagName("script")[0],
- b = function(n) {
- return typeof n == "string"
- },
- c = function(n) {
- return Object.prototype.toString.call(n) == "[object Array]"
- },
- w = function(n) {
- return Object.prototype.toString.call(n) == "[object Function]"
- },
- i = {},
- r = {
- baseUrl: "/",
- modulePath: "js/modules/",
- versions: {},
- externalResources: []
- };
- typeof Roblox == "undefined" && (Roblox = {}), Roblox.config = r, Roblox.require = l, Roblox.define = y
-})(window);
-
-; /// jquery.json-2.2.js
-(function(n) {
- n.toJSON = function(t) {
- var s, o, p, h, f, e, r, v, c, a, u, l, i, y;
- if (typeof JSON == "object" && JSON.stringify) return JSON.stringify(t);
- if (i = typeof t, t === null) return "null";
- if (i == "undefined") return undefined;
- if (i == "number" || i == "boolean") return t + "";
- if (i == "string") return n.quoteString(t);
- if (i == "object") {
- if (typeof t.toJSON == "function") return n.toJSON(t.toJSON());
- if (t.constructor === Date) return s = t.getUTCMonth() + 1, s < 10 && (s = "0" + s), o = t.getUTCDate(), o < 10 && (o = "0" + o), p = t.getUTCFullYear(), h = t.getUTCHours(), h < 10 && (h = "0" + h), f = t.getUTCMinutes(), f < 10 && (f = "0" + f), e = t.getUTCSeconds(), e < 10 && (e = "0" + e), r = t.getUTCMilliseconds(), r < 100 && (r = "0" + r), r < 10 && (r = "0" + r), '"' + p + "-" + s + "-" + o + "T" + h + ":" + f + ":" + e + "." + r + 'Z"';
- if (t.constructor === Array) {
- for (v = [], c = 0; c < t.length; c++) v.push(n.toJSON(t[c]) || "null");
- return "[" + v.join(",") + "]"
- }
- a = [];
- for (u in t) {
- if (i = typeof u, i == "number") l = '"' + u + '"';
- else if (i == "string") l = n.quoteString(u);
- else continue;
- typeof t[u] != "function" && (y = n.toJSON(t[u]), a.push(l + ":" + y))
- }
- return "{" + a.join(", ") + "}"
- }
- }, n.evalJSON = function(n) {
- return typeof JSON == "object" && JSON.parse ? JSON.parse(n) : eval("(" + n + ")")
- }, n.secureEvalJSON = function(n) {
- if (typeof JSON == "object" && JSON.parse) return JSON.parse(n);
- var t = n;
- if (t = t.replace(/\\["\\\/bfnrtu]/g, "@"), t = t.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]"), t = t.replace(/(?:^|:|,)(?:\s*\[)+/g, ""), /^[\],:{}\s]*$/.test(t)) return eval("(" + n + ")");
- throw new SyntaxError("Error parsing JSON, source is not valid.");
- }, n.quoteString = function(n) {
- return n.match(t) ? '"' + n.replace(t, function(n) {
- var t = i[n];
- return typeof t == "string" ? t : (t = n.charCodeAt(), "\\u00" + Math.floor(t / 16).toString(16) + (t % 16).toString(16))
- }) + '"' : '"' + n + '"'
- };
- var t = /["\\\x00-\x1f\x7f-\x9f]/g,
- i = {
- "\b": "\\b",
- "\t": "\\t",
- "\n": "\\n",
- "\f": "\\f",
- "\r": "\\r",
- '"': '\\"',
- "\\": "\\\\"
- }
-})(jQuery);
-
-; /// jquery.simplemodal-1.3.5.js
-(function(n) {
- var i = n.browser.msie && parseInt(n.browser.version) == 6 && typeof window.XMLHttpRequest != "object",
- r = !1,
- t = [];
- n.modal = function(t, i) {
- return n.modal.impl.init(t, i)
- }, n.modal.close = function() {
- n.modal.impl.close()
- }, n.fn.modal = function(t) {
- return n.modal.impl.init(this, t)
- }, n.modal.defaults = {
- appendTo: "body",
- focus: !0,
- opacity: 50,
- overlayId: "simplemodal-overlay",
- overlayCss: {},
- containerId: "simplemodal-container",
- containerCss: {},
- dataId: "simplemodal-data",
- dataCss: {},
- minHeight: null,
- minWidth: null,
- maxHeight: null,
- maxWidth: null,
- autoResize: !1,
- autoPosition: !0,
- zIndex: 1e3,
- close: !0,
- closeHTML: '
',
- closeClass: "simplemodal-close",
- escClose: !0,
- overlayClose: !1,
- position: null,
- persist: !1,
- modal: !0,
- onOpen: null,
- onShow: null,
- onClose: null
- }, n.modal.impl = {
- o: null,
- d: {},
- init: function(t, i) {
- var r = this;
- if (r.d.data) return !1;
- if (r.o = n.extend({}, n.modal.defaults, i), r.zIndex = r.o.zIndex, r.occb = !1, typeof t == "object") t = t instanceof jQuery ? t : n(t), r.d.placeholder = !1, t.parent().parent().size() > 0 && (t.before(n("
").attr("id", "simplemodal-placeholder").css({
- display: "none"
- })), r.d.placeholder = !0, r.display = t.css("display"), r.o.persist || (r.d.orig = t.clone(!0)));
- else if (typeof t == "string" || typeof t == "number") t = n("
").html(t);
- else return alert("SimpleModal Error: Unsupported data type: " + typeof t), r;
- return r.create(t), t = null, r.open(), n.isFunction(r.o.onShow) && r.o.onShow.apply(r, [r.d]), r
- },
- create: function(r) {
- var u = this;
- t = u.getDimensions(), u.o.modal && i && (u.d.iframe = n('
').css(n.extend(u.o.iframeCss, {
- display: "none",
- opacity: 0,
- position: "fixed",
- height: t[0],
- width: t[1],
- zIndex: u.o.zIndex,
- top: 0,
- left: 0
- })).appendTo(u.o.appendTo)), u.d.overlay = n("
").attr("id", u.o.overlayId).addClass("simplemodal-overlay").css(n.extend(u.o.overlayCss, {
- display: "none",
- opacity: u.o.opacity / 100,
- height: u.o.modal ? t[0] : 0,
- width: u.o.modal ? t[1] : 0,
- position: "fixed",
- left: 0,
- top: 0,
- zIndex: u.o.zIndex + 1
- })).appendTo(u.o.appendTo), u.d.container = n("
").attr("id", u.o.containerId).addClass("simplemodal-container").css(n.extend(u.o.containerCss, {
- display: "none",
- position: "fixed",
- zIndex: u.o.zIndex + 2
- })).append(u.o.close && u.o.closeHTML ? n(u.o.closeHTML).addClass(u.o.closeClass) : "").appendTo(u.o.appendTo), u.d.wrap = n("
").attr("tabIndex", -1).addClass("simplemodal-wrap").css({
- height: "100%",
- outline: 0,
- width: "100%",
- overflow: "visible"
- }).appendTo(u.d.container), u.d.data = r.attr("id", r.attr("id") || u.o.dataId).addClass("simplemodal-data").css(n.extend(u.o.dataCss, {
- display: "none"
- })).appendTo("body"), r = null, u.setContainerDimensions(), u.d.data.appendTo(u.d.wrap), i && u.fixIE()
- },
- bindEvents: function() {
- var r = this;
- n("." + r.o.closeClass).bind("click.simplemodal", function(n) {
- n.preventDefault(), r.close()
- }), r.o.modal && r.o.close && r.o.overlayClose && r.d.overlay.bind("click.simplemodal", function(n) {
- n.preventDefault(), r.close()
- }), n(document).bind("keydown.simplemodal", function(n) {
- r.o.modal && r.o.focus && n.keyCode == 9 ? r.watchTab(n) : r.o.close && r.o.escClose && n.keyCode == 27 && (n.preventDefault(), r.close())
- }), n(window).bind("resize.simplemodal", function() {
- t = r.getDimensions(), r.setContainerDimensions(!0), i ? r.fixIE() : r.o.modal && (r.d.iframe && r.d.iframe.css({
- height: t[0],
- width: t[1]
- }), r.d.overlay.css({
- height: t[0],
- width: t[1]
- }))
- })
- },
- unbindEvents: function() {
- n("." + this.o.closeClass).unbind("click.simplemodal"), n(document).unbind("keydown.simplemodal"), n(window).unbind("resize.simplemodal"), this.d.overlay.unbind("click.simplemodal")
- },
- fixIE: function() {
- var i = this,
- t = i.o.position;
- n.each([i.d.iframe || null, i.o.modal ? i.d.overlay : null, i.d.container], function(n, i) {
- var l, c, o, e;
- if (i) {
- var s = "document.body.clientHeight",
- h = "document.body.clientWidth",
- b = "document.body.scrollHeight",
- a = "document.body.scrollLeft",
- v = "document.body.scrollTop",
- p = "document.body.scrollWidth",
- y = "document.documentElement.clientHeight",
- w = "document.documentElement.clientWidth",
- u = "document.documentElement.scrollLeft",
- f = "document.documentElement.scrollTop",
- r = i[0].style;
- r.position = "absolute", n < 2 ? (r.removeExpression("height"), r.removeExpression("width"), r.setExpression("height", "" + b + " > " + s + " ? " + b + " : " + s + ' + "px"'), r.setExpression("width", "" + p + " > " + h + " ? " + p + " : " + h + ' + "px"')) : (t && t.constructor == Array ? (o = t[0] ? typeof t[0] == "number" ? t[0].toString() : t[0].replace(/px/, "") : i.css("top").replace(/px/, ""), l = o.indexOf("%") == -1 ? o + " + (t = " + f + " ? " + f + " : " + v + ') + "px"' : parseInt(o.replace(/%/, "")) + " * ((" + y + " || " + s + ") / 100) + (t = " + f + " ? " + f + " : " + v + ') + "px"', t[1] && (e = typeof t[1] == "number" ? t[1].toString() : t[1].replace(/px/, ""), c = e.indexOf("%") == -1 ? e + " + (t = " + u + " ? " + u + " : " + a + ') + "px"' : parseInt(e.replace(/%/, "")) + " * ((" + w + " || " + h + ") / 100) + (t = " + u + " ? " + u + " : " + a + ') + "px"')) : (l = "(" + y + " || " + s + ") / 2 - (this.offsetHeight / 2) + (t = " + f + " ? " + f + " : " + v + ') + "px"', c = "(" + w + " || " + h + ") / 2 - (this.offsetWidth / 2) + (t = " + u + " ? " + u + " : " + a + ') + "px"'), r.removeExpression("top"), r.removeExpression("left"), r.setExpression("top", l), r.setExpression("left", c))
- }
- })
- },
- focus: function(t) {
- var r = this,
- u = t || "first",
- i = n(":input:enabled:visible:" + u, r.d.wrap);
- i.length > 0 ? i.focus() : r.d.wrap.focus()
- },
- getDimensions: function() {
- var t = n(window),
- i = n.browser.opera && n.browser.version > "9.5" && n.fn.jquery <= "1.2.6" ? document.documentElement.clientHeight : n.browser.opera && n.browser.version < "9.5" && n.fn.jquery > "1.2.6" ? window.innerHeight : t.height();
- return [i, t.width()]
- },
- getVal: function(n) {
- return n == "auto" ? 0 : n.indexOf("%") > 0 ? n : parseInt(n.replace(/px/, ""))
- },
- setContainerDimensions: function(i) {
- var r = this;
- if (!i || i && r.o.autoResize) {
- var f = n.browser.opera ? r.d.container.height() : r.getVal(r.d.container.css("height")),
- u = n.browser.opera ? r.d.container.width() : r.getVal(r.d.container.css("width")),
- s = r.d.data.outerHeight(!0),
- h = r.d.data.outerWidth(!0),
- e = r.o.maxHeight && r.o.maxHeight < t[0] ? r.o.maxHeight : t[0],
- o = r.o.maxWidth && r.o.maxWidth < t[1] ? r.o.maxWidth : t[1];
- f = f ? f > e ? e : f : s ? s > e ? e : s < r.o.minHeight ? r.o.minHeight : s : r.o.minHeight, u = u ? u > o ? o : u : h ? h > o ? o : h < r.o.minWidth ? r.o.minWidth : h : r.o.minWidth, r.d.container.css({
- height: f,
- width: u
- })
- }
- r.o.autoPosition && r.setPosition()
- },
- setPosition: function() {
- var n = this,
- r, i, f = t[0] / 2 - n.d.container.outerHeight(!0) / 2,
- u = t[1] / 2 - n.d.container.outerWidth(!0) / 2;
- n.o.position && Object.prototype.toString.call(n.o.position) === "[object Array]" ? (r = n.o.position[0] || f, i = n.o.position[1] || u) : (r = f, i = u), n.d.container.css({
- left: i,
- top: r
- })
- },
- watchTab: function(t) {
- var i = this,
- r;
- n(t.target).parents(".simplemodal-container").length > 0 ? (i.inputs = n(":input:enabled:visible:first, :input:enabled:visible:last", i.d.data[0]), (!t.shiftKey && t.target == i.inputs[i.inputs.length - 1] || t.shiftKey && t.target == i.inputs[0] || i.inputs.length == 0) && (t.preventDefault(), r = t.shiftKey ? "last" : "first", setTimeout(function() {
- i.focus(r)
- }, 10))) : (t.preventDefault(), setTimeout(function() {
- i.focus()
- }, 10))
- },
- open: function() {
- var t = this;
- t.d.iframe && t.d.iframe.show(), n.isFunction(t.o.onOpen) ? t.o.onOpen.apply(t, [t.d]) : (t.d.overlay.show(), t.d.container.show(), t.d.data.show()), t.focus(), t.bindEvents()
- },
- close: function() {
- var t = this,
- i;
- if (!t.d.data) return !1;
- t.unbindEvents(), n.isFunction(t.o.onClose) && !t.occb ? (t.occb = !0, t.o.onClose.apply(t, [t.d])) : (t.d.placeholder ? (i = n("#simplemodal-placeholder"), t.o.persist ? i.replaceWith(t.d.data.removeClass("simplemodal-data").css("display", t.display)) : (t.d.data.hide().remove(), i.replaceWith(t.d.orig))) : t.d.data.hide().remove(), t.d.container.hide().remove(), t.d.overlay.hide().remove(), t.d.iframe && t.d.iframe.hide().remove(), t.d = {})
- }
- }
-})(jQuery);
-
-; /// jquery.tipsy.js
-(function(n) {
- n.fn.tipsy = function(t) {
- return t = n.extend({}, n.fn.tipsy.defaults, t), this.each(function() {
- var i = n.fn.tipsy.elementOptions(this, t);
- n(this).hover(function() {
- var t, e, r;
- n.data(this, "cancel.tipsy", !0), t = n.data(this, "active.tipsy"), t || (t = n('
'), t.css({
- position: "absolute",
- zIndex: 999999
- }), n.data(this, "active.tipsy", t)), (n(this).attr("title") || typeof n(this).attr("original-title") != "string") && n(this).attr("original-title", n(this).attr("title") || "").removeAttr("title"), typeof i.title == "string" ? e = n(this).attr(i.title == "title" ? "original-title" : i.title) : typeof i.title == "function" && (e = i.title.call(this)), t.find(".tipsy-inner")[i.html ? "html" : "text"](e || i.fallback), r = n.extend({}, n(this).offset(), {
- width: this.offsetWidth,
- height: this.offsetHeight
- }), t.get(0).className = "tipsy", t.remove().css({
- top: 0,
- left: 0,
- visibility: "hidden",
- display: "block"
- }).appendTo(document.body);
- var f = t[0].offsetWidth,
- u = t[0].offsetHeight,
- o = typeof i.gravity == "function" ? i.gravity.call(this) : i.gravity;
- switch (o.charAt(0)) {
- case "n":
- t.css({
- top: r.top + r.height,
- left: r.left + r.width / 2 - f / 2
- }).addClass("tipsy-north");
- break;
- case "s":
- t.css({
- top: r.top - u,
- left: r.left + r.width / 2 - f / 2
- }).addClass("tipsy-south");
- break;
- case "e":
- t.css({
- top: r.top + r.height / 2 - u / 2,
- left: r.left - f
- }).addClass("tipsy-east");
- break;
- case "w":
- t.css({
- top: r.top + r.height / 2 - u / 2,
- left: r.left + r.width
- }).addClass("tipsy-west")
- }
- i.fade ? t.css({
- opacity: 0,
- display: "block",
- visibility: "visible"
- }).animate({
- opacity: .8
- }) : t.css({
- visibility: "visible"
- })
- }, function() {
- n.data(this, "cancel.tipsy", !1);
- var t = this;
- setTimeout(function() {
- if (!n.data(this, "cancel.tipsy")) {
- var r = n.data(t, "active.tipsy");
- i.fade ? r.stop().fadeOut(function() {
- n(this).remove()
- }) : r.remove()
- }
- }, 100)
- })
- })
- }, n.fn.tipsy.elementOptions = function(t, i) {
- return n.metadata ? n.extend({}, i, n(t).metadata()) : i
- }, n.fn.tipsy.defaults = {
- fade: !1,
- fallback: "",
- gravity: "n",
- html: !1,
- title: "title"
- }, n.fn.tipsy.autoNS = function() {
- return n(this).offset().top > n(document).scrollTop() + n(window).height() / 2 ? "s" : "n"
- }, n.fn.tipsy.autoWE = function() {
- return n(this).offset().left > n(document).scrollLeft() + n(window).width() / 2 ? "e" : "w"
- }
-})(jQuery);
-
-; /// AjaxAvatarThumbnail.js
-var RobloxThumbs = function() {
- function n(t, i, r) {
- $.get("/thumbs/rawavatar.ashx", {
- UserID: i,
- ThumbnailFormatID: r
- }, function(u) {
- u == "PENDING" ? window.setTimeout(function() {
- n(t, i, r)
- }, 3e3) : u.substring(5, 0) == "ERROR" || $("#" + t).attr("src", u)
- })
- }
- return {
- GenerateAvatarThumb: function(t, i, r) {
- $("#" + t).attr("src", "/images/spinners/waiting.gif"), n(t, i, r)
- }
- }
-}();
-
-; /// extensions/string.js
-$.extend(String.prototype, function() {
- function n() {
- return this.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'")
- }
- return {
- escapeHTML: n
- }
-}());
-
-; /// StringTruncator.min.js
-function InitStringTruncator() {
- isInitialized || (fitStringSpan = document.createElement("span"), fitStringSpan.style.display = "inline", fitStringSpan.style.visibility = "hidden", fitStringSpan.style.padding = "0px", document.body.appendChild(fitStringSpan), isInitialized = !0)
-}
-
-function fitStringToWidth(n, t, i) {
- function f(n) {
- return n.replace("<", "<").replace(">", ">")
- }
- if (isInitialized || InitStringTruncator(), i && (fitStringSpan.className = i), i = f(n), fitStringSpan.innerHTML = i, fitStringSpan.offsetWidth > t) {
- for (var i = 0, r, u = n.length; r = u - i >> 1;) r = i + r, fitStringSpan.innerHTML = f(n.substring(0, r)) + "…", fitStringSpan.offsetWidth > t ? u = r : i = r;
- i = n.substring(0, i) + "…"
- }
- return i
-}
-
-function fitStringToWidthSafe(n, t, i) {
- return n = fitStringToWidth(n, t, i), n.indexOf("…") != -1 && (t = n.lastIndexOf(" "), t != -1 && t + 10 <= n.length && (n = n.substring(0, t + 2) + "…")), n
-}
-var isInitialized = !1,
- fitStringSpan = null;
-
-; /// json2.min.js
-var JSON;
-JSON || (JSON = {}),
- function() {
- "use strict";
-
- function i(n) {
- return n < 10 ? "0" + n : n
- }
-
- function f(n) {
- return o.lastIndex = 0, o.test(n) ? '"' + n.replace(o, function(n) {
- var t = s[n];
- return typeof t == "string" ? t : "\\u" + ("0000" + n.charCodeAt(0).toString(16)).slice(-4)
- }) + '"' : '"' + n + '"'
- }
-
- function r(i, e) {
- var c, l, h, a, v = n,
- s, o = e[i];
- o && typeof o == "object" && typeof o.toJSON == "function" && (o = o.toJSON(i)), typeof t == "function" && (o = t.call(e, i, o));
- switch (typeof o) {
- case "string":
- return f(o);
- case "number":
- return isFinite(o) ? String(o) : "null";
- case "boolean":
- case "null":
- return String(o);
- case "object":
- if (!o) return "null";
- if (n += u, s = [], Object.prototype.toString.apply(o) === "[object Array]") {
- for (a = o.length, c = 0; c < a; c += 1) s[c] = r(c, o) || "null";
- return h = s.length === 0 ? "[]" : n ? "[\n" + n + s.join(",\n" + n) + "\n" + v + "]" : "[" + s.join(",") + "]", n = v, h
- }
- if (t && typeof t == "object")
- for (a = t.length, c = 0; c < a; c += 1) l = t[c], typeof l == "string" && (h = r(l, o), h && s.push(f(l) + (n ? ": " : ":") + h));
- else
- for (l in o) Object.hasOwnProperty.call(o, l) && (h = r(l, o), h && s.push(f(l) + (n ? ": " : ":") + h));
- return h = s.length === 0 ? "{}" : n ? "{\n" + n + s.join(",\n" + n) + "\n" + v + "}" : "{" + s.join(",") + "}", n = v, h
- }
- }
- typeof Date.prototype.toJSON != "function" && (Date.prototype.toJSON = function() {
- return isFinite(this.valueOf()) ? this.getUTCFullYear() + "-" + i(this.getUTCMonth() + 1) + "-" + i(this.getUTCDate()) + "T" + i(this.getUTCHours()) + ":" + i(this.getUTCMinutes()) + ":" + i(this.getUTCSeconds()) + "Z" : null
- }, String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function() {
- return this.valueOf()
- });
- var e = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
- o = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
- n, u, s = {
- "\b": "\\b",
- "\t": "\\t",
- "\n": "\\n",
- "\f": "\\f",
- "\r": "\\r",
- '"': '\\"',
- "\\": "\\\\"
- },
- t;
- typeof JSON.stringify != "function" && (JSON.stringify = function(i, f, e) {
- var o;
- if (n = "", u = "", typeof e == "number")
- for (o = 0; o < e; o += 1) u += " ";
- else typeof e == "string" && (u = e);
- if (t = f, f && typeof f != "function" && (typeof f != "object" || typeof f.length != "number")) throw new Error("JSON.stringify");
- return r("", {
- "": i
- })
- }), typeof JSON.parse != "function" && (JSON.parse = function(n, t) {
- function r(n, i) {
- var f, e, u = n[i];
- if (u && typeof u == "object")
- for (f in u) Object.hasOwnProperty.call(u, f) && (e = r(u, f), e !== undefined ? u[f] = e : delete u[f]);
- return t.call(n, i, u)
- }
- var i;
- if (n = String(n), e.lastIndex = 0, e.test(n) && (n = n.replace(e, function(n) {
- return "\\u" + ("0000" + n.charCodeAt(0).toString(16)).slice(-4)
- })), /^[\],:{}\s]*$/.test(n.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) return i = eval("(" + n + ")"), typeof t == "function" ? r({
- "": i
- }, "") : i;
- throw new SyntaxError("JSON.parse");
- })
- }();
-
-; /// webkit.js
-typeof Sys.Browser.WebKit == "undefined" && (Sys.Browser.WebKit = {}), navigator.userAgent.indexOf("WebKit/") > -1 && (Sys.Browser.agent = Sys.Browser.WebKit, Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]), Sys.Browser.name = "WebKit");
-
-; /// GoogleAnalytics/GoogleAnalyticsEvents.js
-var GoogleAnalyticsEvents = new function() {
- this.FireEvent = function(n) {
- if (typeof _gaq != typeof undefined) {
- var i = ["_trackEvent"],
- t = ["b._trackEvent"];
- _gaq.push(i.concat(n)), _gaq.push(t.concat(n))
- }
- }
-};
-
-; /// MasterPageUI.js
-$(function() {
- $(".tooltip").tipsy(), $(".tooltip-top").tipsy({
- gravity: "s"
- }), $(".tooltip-right").tipsy({
- gravity: "w"
- }), $(".tooltip-left").tipsy({
- gravity: "e"
- }), $(".tooltip-bottom").tipsy({
- gravity: "n"
- })
-}), typeof Roblox == "undefined" && (Roblox = {}), Roblox.FixedUI = function() {
- function s() {
- if (typeof pageYOffset != "undefined") return pageYOffset;
- var t = document.body,
- n = document.documentElement;
- return n = n.clientHeight ? n : t, n.scrollTop
- }
-
- function e() {
- var n = s();
- t || (t = $("iframe.IframeAdHide")), t.each(function() {
- var t = $(this).offset().top - 73;
- !r.gutterAdsEnabled && n >= t ? $(this).css("visibility", "hidden") : $(this).css("visibility", "visible")
- })
- }
-
- function i() {
- $("#Nav").css("cssText", "position: static !important;width:970px !important"), $("#SmallHeaderContainer").css("cssText", "position: relative !important;height: 36px !important;width:970px !important"), $(".forceSpace").css("cssText", "width: 970px !important; height:9px !important;padding-top: 0px !important;background:white"), $("#Container").css("cssText", "width: 970px !important"), $(".mySubmenuFixed").css("cssText", "position: relative; top: 0px;"), $("#MasterContainer").css("cssText", "width: 970px !important"), $(".mySubmenuFixed").length == 1 && ($(".forceSpaceUnderSubmenu").hide(), $(".forceSpace").css("cssText", "width: 910px !important; height:7px !important;padding-top: 0px !important;")), $(window).unbind("scroll")
- }
-
- function h() {
- $("#Nav").css("cssText", "position: fixed !important;width:100% !important"), $("#SmallHeaderContainer").css("cssText", "position: fixed !important;height: 40px !important;width:100% !important"), $(".forceSpace").css("cssText", "width: 100% !important; height:15px !important;padding-top: 62px !important;"), $("#Container").css("cssText", "width: 100% !important"), $(".mySubmenuFixed").css("cssText", "position: fixed; top: 68px;"), $("#MasterContainer").css("cssText", "width: 100%"), $(".mySubmenuFixed").length == 1 && $(".forceSpaceUnderSubmenu").show(), $(window).scroll(e)
- }
-
- function o() {
- var n = 1024;
- return document.body && document.body.offsetWidth && (n = document.body.offsetWidth), window.innerWidth && window.innerHeight && (n = window.innerWidth), n
- }
-
- function u() {
- o() < 978 ? i() : h()
- }
- var n = navigator.userAgent.toLowerCase(),
- f = /mobile/i.test(n) || /ipad/i.test(n) || /iphone/i.test(n) || /android/i.test(n) || /playbook/i.test(n) || /blackberry/i.test(n),
- t, r;
- return $(function() {
- f ? i() : $(window).load(u).resize(u)
- }), t = null, r = {
- isMobile: f,
- gutterAdsEnabled: !1,
- unfixHeader: i
- }
-}();
-
-; /// jquery.cookie.js
-jQuery.cookie = function(n, t, i) {
- var o, r, f, e, u, s;
- if (typeof t != "undefined") {
- i = i || {}, t === null && (t = "", i.expires = -1), o = "", i.expires && (typeof i.expires == "number" || i.expires.toUTCString) && (typeof i.expires == "number" ? (r = new Date, r.setTime(r.getTime() + i.expires * 864e5)) : r = i.expires, o = "; expires=" + r.toUTCString());
- var h = i.path ? "; path=" + i.path : "",
- c = i.domain ? "; domain=" + i.domain : "",
- l = i.secure ? "; secure" : "";
- document.cookie = [n, "=", encodeURIComponent(t), o, h, c, l].join("")
- } else {
- if (f = null, document.cookie && document.cookie != "")
- for (e = document.cookie.split(";"), u = 0; u < e.length; u++)
- if (s = jQuery.trim(e[u]), s.substring(0, n.length + 1) == n + "=") {
- f = decodeURIComponent(s.substring(n.length + 1));
- break
- } return f
- }
-};
-
-; /// jquery.jsoncookie.js
-function RobloxJSONCookie(n) {
- this._cookiename = n
-}(function(n) {
- var t = function(n) {
- return typeof n == "object" && !(n instanceof Array) && n !== null
- };
- n.extend({
- getJSONCookie: function(t, i) {
- var r = n.cookie(t);
- return i ? r : r ? JSON.parse(r) : {}
- },
- setJSONCookie: function(i, r, u) {
- var f = "";
- return u = n.extend({
- expires: 90,
- path: "/"
- }, u), f = t(r) ? JSON.stringify(r) : r, n.cookie(i, f, u)
- },
- removeJSONCookie: function(t) {
- return n.cookie(t, null)
- },
- JSONCookie: function(t, i, r) {
- return i && n.setJSONCookie(t, i, r), n.getJSONCookie(t)
- }
- })
-})(jQuery), RobloxJSONCookie.prototype = {
- Delete: function() {
- return $.removeJSONCookie(this._cookiename)
- },
- SetObj: function(n, t) {
- return t || (t = {
- path: "/"
- }), $.JSONCookie(this._cookiename, n, t)
- },
- SetJSON: function(n, t) {
- return t || (t = {
- path: "/"
- }), $.JSONCookie(this._cookiename, n, t)
- },
- GetObj: function() {
- var n = $.getJSONCookie(this._cookiename, !1);
- return n == null ? {} : n
- },
- GetJSON: function() {
- return $.getJSONCookie(this._cookiename, !0)
- }
-};
-
-; /// XsrfToken.js
-typeof Roblox == "undefined" && (Roblox = {}), Roblox.XsrfToken = function() {
- function f(n) {
- var u, t;
- if (i.allUrlsEnabled) return !0;
- for (u = n.split("?")[0].toLowerCase(), t = 0; t < r.length; t++)
- if (r[t] === u) return !0;
- return !1
- }
-
- function e(n) {
- r.push(n.toLowerCase())
- }
-
- function o(t) {
- n = t
- }
-
- function u() {
- return n
- }
- var n = "",
- t = /(^|\?|&)token=[^&]*/,
- r = ["/chat/friendhandler.ashx", "/chat/party.ashx", "/chat/send.ashx", "/chat/utility.ashx", "/groups/rolesetupdater.ashx", "groups.aspx/exileuseranddeleteposts", "messageshandler.ashx", "emailupgrademe.ashx", "/services/usercheck.asmx/updatepersonalinfo", "/thumbs/assetmedia/placemediaitemsorthandler.ashx"],
- i;
- return $.ajaxPrefilter(function(i) {
- var o, e;
- i.dataType != "jsonp" && i.dataType != "script" && n != "" && f(i.url) && (o = $.param({
- token: n
- }), t.test(i.url) || typeof i.data != "undefined" && t.test(i.data) || (i.url += /\?/.test(i.url) ? "&token=" + encodeURIComponent(n) : "?token=" + encodeURIComponent(n)), e = i.error, i.error = function(r, u, f) {
- if (r.status == 420) {
- var o = r.getResponseHeader("Token");
- if (o == null) {
- typeof e == "function" && e(r, u, f);
- throw new Error("Null token returned by Xsrf enabled handler");
- }
- t.test(i.url) ? i.url = i.url.replace(t, "$1token=" + encodeURIComponent(o)) : i.data = i.data.replace(t, "$1token=" + encodeURIComponent(o)), $.ajax(i), n = o
- } else typeof e == "function" && e(r, u, f)
- })
- }), i = {
- setToken: o,
- getToken: u,
- allUrlsEnabled: !1,
- addEnabledUrl: e
- }
-}();
-
-; /// RobloxEventManager.js
-function RBXBaseEventListener() {
- if (!(this instanceof RBXBaseEventListener)) return new RBXBaseEventListener;
- this.init = function() {
- for (eventKey in this.events) $(document).bind(this.events[eventKey], $.proxy(this.localCopy, this))
- }, this.events = [], this.localCopy = function(n, t) {
- var r = $.extend(!0, {}, n),
- i = $.extend(!0, {}, t);
- this.handleEvent(r, i)
- }, this.distillData = function() {
- return console.log("RBXEventListener distillData - Please implement me"), !1
- }, this.handleEvent = function() {
- return console.log("EventListener handleEvent - Please implement me"), !1
- }, this.fireEvent = function() {
- return console.log("EventListener fireEvent - Please implement me"), !1
- }
-}
-RobloxEventManager = new function() {
- function u(n) {
- var i = new RegExp(n + "=([^;]*)"),
- t = i.exec(document.cookie);
- return t ? t[1] : null
- }
-
- function t(n) {
- for (var u = {}, r = n.split("&"), i, t = 0; t < r.length; t++) i = r[t].split("="), u[i[0]] = i[1];
- return u
- }
-
- function i(n) {
- var i = u(n);
- return i ? t(i) : null
- }
- var n = [],
- r = {};
- this.enabled = !1, this.initialized = !1, this.eventQueue = [], this.initialize = function(n) {
- for (this.initialized = !0, this.enabled = n; this.eventQueue.length > 0;) {
- var t = this.eventQueue.pop();
- this.triggerEvent(t.eventName, t.args)
- }
- }, this.getMarketingGuid = function() {
- var n = i("RBXEventTracker");
- return n != null ? n.browserid : -1
- }, this.triggerEvent = function(n, t) {
- this.initialized ? this.enabled && (typeof t == "undefined" && (t = {}), t.guid = this.getMarketingGuid(), t.guid != -1 && $(document).trigger(n, [t])) : this.eventQueue.push({
- eventName: n,
- args: t
- })
- }, this.registerCookieStoreEvent = function(t) {
- n.push(t)
- }, this.insertDataStoreKeyValuePair = function(n, t) {
- r[n] = t
- }, this.monitorCookieStore = function() {
- var i, u, f, t, r;
- try {
- if (typeof Roblox == "undefined" || typeof Roblox.Client == "undefined" || window.location.protocol == "https:") return;
- if (i = Roblox.Client.CreateLauncher(!1), i == null) return;
- for (u = 0; u < n.length; u++) try {
- f = n[u], t = i.GetKeyValue(f), t != "" && t != "-1" && t != "RBX_NOT_VALID" && (r = eval("(" + t + ")"), r.userType = r.userId > 0 ? "user" : "guest", RobloxEventManager.triggerEvent(f, r), i.SetKeyValue(f, "RBX_NOT_VALID"))
- } catch (e) {}
- Roblox.Client.ReleaseLauncher(i, !1, !1)
- } catch (e) {}
- }
-};
-
-; /// RobloxEventListener.js
-RobloxListener = new RBXBaseEventListener, RobloxListener.handleEvent = function(n, t) {
- var r, u, i;
- switch (n.type) {
- case "rbx_evt_install_begin":
- i = {
- guid: "guid",
- userId: "userid"
- }, r = n.type;
- break;
- case "rbx_evt_initial_install_start":
- i = {
- guid: "guid",
- userId: "userid"
- }, r = n.type;
- break;
- case "rbx_evt_ftp":
- i = {
- guid: "guid",
- userId: "userid"
- }, r = n.type;
- break;
- case "rbx_evt_initial_install_success":
- i = {
- guid: "guid",
- userId: "userid"
- }, r = n.type;
- break;
- case "rbx_evt_fmp":
- i = {
- guid: "guid",
- userId: "userid"
- }, r = n.type;
- break;
- default:
- return console.log("RobloxEventListener - Event registered without handling instructions: " + n.type), !1
- }
- return u = this.distillData(t, i), this.fireEvent(this.eventToString(r, u)), !0
-}, RobloxListener.distillData = function(n, t) {
- var i = {};
- for (dataKey in t) typeof n[dataKey] != typeof undefined && (i[t[dataKey]] = encodeURIComponent(n[dataKey]));
- return i
-}, RobloxListener.eventToString = function(n, t) {
- var i = RobloxListener.restUrl;
- if (i += "?event=" + n + "&", t != null)
- for (arg in t) typeof arg != typeof undefined && t.hasOwnProperty(arg) && (i += arg + "=" + t[arg] + "&");
- return i = i.slice(0, i.length - 1)
-}, RobloxListener.fireEvent = function(n) {
- var t = $('
')
-}, RobloxListener.events = ["rbx_evt_install_begin", "rbx_evt_initial_install_start", "rbx_evt_ftp", "rbx_evt_initial_install_success", "rbx_evt_fmp"];
-
-; /// KontagentEventListener.js
-KontagentListener = new RBXBaseEventListener, KontagentListener.restUrl = "", KontagentListener.APIKey = "", KontagentListener.StagingAPIKey = "", KontagentListener.StagingEvents = [], KontagentListener.handleEvent = function(n, t) {
- function f(n) {
- return n = n.toLowerCase(), n == "win32" ? n = "Windows" : n == "osx" && (n = "Mac"), n
- }
- var r, u, i, o, e;
- r = "evt";
- switch (n.type) {
- case "rbx_evt_pageview":
- i = {
- guid: "s",
- path: "u",
- ts: "ts",
- user_ip: "ip"
- }, r = "pgr";
- break;
- case "rbx_evt_userinfo":
- i = {
- guid: "s",
- age: "b",
- gender: "g"
- }, r = "cpu";
- break;
- case "rbx_evt_ecomm_item":
- t.total = Math.round(t.total * 100), t.productName = t.productName.replace(/\s/g, "").replace("Outrageous", "O").replace("Turbo", "T").replace("Builders", "B").replace("Club", "C"), i = {
- guid: "s",
- total: "v",
- provider: "st1",
- category: "st2",
- productName: "st3",
- type: "tu"
- }, r = "mtu";
- break;
- case "rbx_evt_ftp":
- t.tracking = "", t.shorttracking = "", i = {
- guid: "s",
- trackingtag: "u",
- shorttracking: "su"
- }, u = this.distillData(t, i), r = "apa", this.fireEvent(this.eventToString(n.type, r, u)), t.eventName = "Install Success Funnel", t.eventType = "Install Success Funnel", t.os = f(t.os), i = {
- guid: "s",
- eventType: "st1",
- os: "st2",
- userType: "st3",
- eventName: "n"
- }, u = this.distillData(t, i), r = "evt", this.fireEvent(this.eventToString(n.type, r, u)), t.eventType = "Install Success Place", i = {
- guid: "s",
- eventType: "st1",
- os: "st2",
- userType: "st3",
- placeId: "n"
- };
- break;
- case "rbx_evt_initial_install_success":
- t.tracking = "", t.shorttracking = "", i = {
- guid: "s",
- trackingtag: "u",
- shorttracking: "su"
- }, u = this.distillData(t, i), r = "apa", this.fireEvent(this.eventToString(n.type, r, u)), t.eventName = "Bootstrapper Install Success Funnel", t.eventType = "Bootstrapper Install Success Funnel", t.os = f(t.os), i = {
- guid: "s",
- eventType: "st1",
- os: "st2",
- userType: "st3",
- eventName: "n"
- }, u = this.distillData(t, i), r = "evt", this.fireEvent(this.eventToString(n.type, r, u)), t.eventType = "Bootstrapper Install Success Place", i = {
- guid: "s",
- eventType: "st1",
- os: "st2",
- userType: "st3",
- placeId: "n"
- };
- break;
- case "rbx_evt_install_begin":
- t.eventName = "Install Begin", t.eventType = "Install Begin", i = {
- guid: "s",
- eventType: "st1",
- os: "st2",
- eventName: "n"
- };
- break;
- case "rbx_evt_initial_install_start":
- t.eventName = "Bootstrapper Install Begin", t.eventType = "Bootstrapper Install Begin", i = {
- guid: "s",
- eventType: "st1",
- os: "st2",
- eventName: "n"
- };
- break;
- case "rbx_evt_fmp":
- t.eventName = "Five Minute Play Funnel", t.eventType = "Five Minute Play Funnel", t.os = f(t.os), i = {
- guid: "s",
- eventType: "st1",
- os: "st2",
- userType: "st3",
- eventName: "n"
- }, u = this.distillData(t, i), this.fireEvent(this.eventToString(n.type, r, u)), t.eventType = "Five Minute Play Place", i = {
- guid: "s",
- eventType: "st1",
- os: "st2",
- userType: "st3",
- placeId: "n"
- };
- break;
- case "rbx_evt_play_user":
- t.eventName = "Play User", t.eventType = "Play User", t.gender = t.gender, i = {
- guid: "s",
- eventType: "st1",
- gender: "st2",
- age: "st3",
- placeId: "l",
- eventName: "n"
- };
- break;
- case "rbx_evt_play_guest":
- t.eventName = "Play Guest", t.eventType = "Play Guest", t.gender = t.gender, i = {
- guid: "s",
- eventType: "st1",
- gender: "st2",
- placeId: "l",
- eventName: "n"
- };
- break;
- case "rbx_evt_signup":
- t.eventName = "Sign Up Funnel", t.eventType = "Sign Up Funnel", i = {
- guid: "s",
- eventType: "st1",
- eventName: "n"
- }, u = this.distillData(t, i), r = "evt", this.fireEvent(this.eventToString(n.type, r, u)), t.eventName = "Sign Up", t.eventType = "Sign Up", t.gender = t.gender, i = {
- guid: "s",
- eventType: "st1",
- gender: "st2",
- age: "st3",
- eventName: "n"
- };
- break;
- case "rbx_evt_ecomm_custom":
- t.eventType = "Purchase", t.productName = t.productName.replace(/\s/g, "").replace("Outrageous", "O").replace("Turbo", "T").replace("Builders", "B").replace("Club", "C"), i = {
- guid: "s",
- eventType: "st1",
- provider: "st2",
- category: "st3",
- productName: "n"
- };
- break;
- case "rbx_evt_abtest":
- i = {
- guid: "s",
- experiment: "st1",
- variation: "n"
- };
- break;
- case "rbx_evt_pageview_custom":
- t.eventName = t.page, i = typeof t.userType == "undefined" ? {
- guid: "s",
- page: "st1",
- eventName: "n"
- } : {
- guid: "s",
- page: "st1",
- userType: "st2",
- eventName: "n"
- };
- break;
- case "rbx_evt_generic":
- t.eventName = t.type, i = {
- guid: "s",
- type: "st1",
- eventName: "n"
- }, typeof t.opt1 != "undefined" && (i.opt1 = "st2"), typeof t.opt2 != "undefined" && typeof t.opt1 != "undefined" && (i.opt2 = "st3");
- break;
- case "rbx_evt_source_tracking":
- t.installed = 0, t.sourceType = "ad", i = {
- guid: "s",
- sourceType: "tu",
- installed: "i",
- source: "st1",
- campaign: "st2",
- medium: "st3"
- }, r = "ucc";
- break;
- case "rbx_evt_card_redemption":
- t.eventType = "CardRedemption", t.eventName = "CardRedemption", i = {
- guid: "s",
- eventType: "st1",
- merchant: "st2",
- cardValue: "st3",
- eventName: "n"
- };
- break;
- case "rbx_evt_popup_action":
- t.eventType = "GuestPlayPopupAction", t.eventName = "GuestPlayPopupAction", i = {
- guid: "s",
- eventType: "st1",
- action: "st2",
- eventName: "n"
- };
- break;
- default:
- return console.log("KontagentListener - Event registered without handling instructions: " + n.type), !1
- }
- return u = this.distillData(t, i), this.fireEvent(this.eventToString(n.type, r, u)), !0
-}, KontagentListener.distillData = function(n, t) {
- var i = {};
- for (dataKey in t) typeof n[dataKey] != typeof undefined && (i[t[dataKey]] = encodeURIComponent(n[dataKey]));
- return i
-}, KontagentListener.eventToString = function(n, t, i) {
- var r = KontagentListener.restUrl,
- u = this.isStagingEvent(n, i) ? KontagentListener.StagingAPIKey : KontagentListener.APIKey;
- if (r += u + "/" + t + "/?", i != null)
- for (arg in i) typeof arg != typeof undefined && i.hasOwnProperty(arg) && (r += arg + "=" + i[arg] + "&");
- return r = r.slice(0, r.length - 1)
-}, KontagentListener.isStagingEvent = function(n, t) {
- var r, i;
- staging = !1;
- try {
- for (r in this.StagingEvents)
- if (i = this.StagingEvents[r], typeof i == "string") {
- if (n == i) {
- staging = !0;
- break
- }
- } else if (typeof i == "object" && typeof i[n] != "undefined" && i[n] == t.st1) {
- staging = !0;
- break
- }
- } catch (u) {}
- return staging
-}, KontagentListener.fireEvent = function(n) {
- var t = $('
')
-}, KontagentListener.events = ["rbx_evt_pageview", "rbx_evt_install_begin", "rbx_evt_initial_install_start", "rbx_evt_ftp", "rbx_evt_initial_install_success", "rbx_evt_fmp", "rbx_evt_play_user", "rbx_evt_play_guest", "rbx_evt_signup", "rbx_evt_ecomm_item", "rbx_evt_ecomm_custom", "rbx_evt_userinfo", "rbx_evt_abtest", "rbx_evt_pageview_custom", "rbx_evt_generic", "rbx_evt_source_tracking", "rbx_evt_card_redemption", "rbx_evt_popup_action"];
-
-; /// GoogleEventListener.js
-GoogleListener = new RBXBaseEventListener, GoogleListener.handleEvent = function(n, t) {
- function r(n) {
- return n = n.toLowerCase(), n == "win32" ? n = "Windows" : n == "osx" && (n = "Mac"), n
- }
- var f, u, i;
- switch (n.type) {
- case "rbx_evt_initial_install_begin":
- t.os = r(t.os), t.category = "Bootstrapper Install Begin", i = {
- os: "action"
- };
- break;
- case "rbx_evt_ftp":
- t.os = r(t.os), t.category = "Install Success", i = {
- os: "action"
- };
- break;
- case "rbx_evt_initial_install_success":
- t.os = r(t.os), t.category = "Bootstrapper Install Success", i = {
- os: "action"
- };
- break;
- case "rbx_evt_fmp":
- t.os = r(t.os), t.category = "Five Minute Play", i = {
- os: "action"
- };
- break;
- case "rbx_evt_abtest":
- i = {
- experiment: "category",
- variation: "action",
- version: "opt_label"
- };
- break;
- case "rbx_evt_card_redemption":
- t.category = "CardRedemption", i = {
- merchant: "action",
- cardValue: "opt_label"
- };
- break;
- default:
- return console.log("GoogleListener - Event registered without handling instructions: " + n.type), !1
- }
- return i.category = "category", u = this.distillData(t, i), this.fireEvent(u), !0
-}, GoogleListener.distillData = function(n, t) {
- var i = {},
- r;
- for (dataKey in t) typeof n[dataKey] != typeof undefined && (i[t[dataKey]] = n[dataKey]);
- return r = [i.category, i.action], i.opt_label != null && (r = r.concat(i.opt_label)), i.opt_value != null && (r = r.concat(i.opt_value)), r
-}, GoogleListener.fireEvent = function(n) {
- if (typeof _gaq != typeof undefined) {
- var i = ["_trackEvent"],
- t = ["b._trackEvent"];
- _gaq.push(i.concat(n)), _gaq.push(t.concat(n))
- }
-}, GoogleListener.events = ["rbx_evt_initial_install_begin", "rbx_evt_ftp", "rbx_evt_initial_install_success", "rbx_evt_fmp", "rbx_evt_abtest", "rbx_evt_card_redemption"];
-
-; /// MongoEventListener.js
-MongoListener = new RBXBaseEventListener, MongoListener.handleEvent = function(n, t) {
- var i;
- return i = typeof t.shard == "undefined" ? this.defaultShard : t.shard, typeof t.eventName == "undefined" && (t.eventName = n.type), t.eventName === "JavascriptExceptionLoggingEvent" ? dataMap = {
- category: "category",
- url: "url",
- msg: "msg",
- line: "line",
- ua: "UA"
- } : (typeof t.category == "undefined" && (t.category = MongoListener.getCategoryFromEventName(t.eventName)), t.userId = MongoListener.userId, t.ip = MongoListener.clientIpAddress, dataMap = {
- guid: "guid",
- category: "category",
- userId: "userid",
- ip: "ip"
- }), this.fireEvent(i, this.distillData(t, dataMap)), !0
-}, MongoListener.getCategoryFromEventName = function(n) {
- switch (n) {
- case "rbx_evt_sitetouch":
- return "SiteTouch";
- case "rbx_evt_fmp":
- return "FiveMinutePlay";
- case "rbx_evt_play_user":
- case "rbx_evt_play_guest":
- return "Play";
- default:
- return n
- }
-}, MongoListener.distillData = function(n, t) {
- var i = {};
- for (dataKey in t) typeof n[dataKey] != typeof undefined && (i[t[dataKey]] = encodeURIComponent(n[dataKey]));
- return i
-}, MongoListener.fireEvent = function(n, t) {
- $.ajax({
- url: MongoListener.loggingURI + n,
- dataType: "jsonp",
- jsonpCallback: "MongoListener.callback",
- data: t
- })
-}, MongoListener.callback = function() {}, MongoListener.events = ["JavascriptExceptionLoggingEvent"];
-
-; /// SearchVisionListener.js
-SearchVisionListener = new RBXBaseEventListener, SearchVisionListener.handleEvent = function(n, t) {
- var i = null;
- switch (n.type) {
- case "rbx_evt_fmp":
- i = {
- esvtk_v: "1",
- esvtk_esvid: "A40125",
- event: "five_minute_play"
- };
- break;
- case "rbx_evt_ftp":
- i = {
- esvtk_v: "1",
- esvtk_esvid: "A40125",
- event: "first_play"
- };
- break;
- case "rbx_evt_install_begin":
- i = {
- esvtk_v: "1",
- esvtk_esvid: "A40125",
- event: "download"
- };
- break;
- case "rbx_evt_signup":
- i = {
- esvtk_v: "1",
- esvtk_esvid: "A40125",
- event: "esv_signup"
- };
- break;
- case "rbx_evt_generic":
- t.type === "OneDayReturn" && (i = {
- esvtk_v: "1",
- esvtk_esvid: "A40125",
- event: "return"
- })
- }
- return i !== null && (i.orderid = t.guid, this.fireEvent(i)), !0
-}, SearchVisionListener.fireEvent = function(n) {
- typeof esvtk_track != "undefined" ? esvtk_track(n) : setTimeout(function() {
- SearchVisionListener.fireEvent(n)
- }, 500)
-}, SearchVisionListener.events = ["rbx_evt_fmp", "rbx_evt_ftp", "rbx_evt_install_begin", "rbx_evt_signup", "rbx_evt_generic"];
-
-; /// SiteTouchEvent.js
-typeof Roblox == "undefined" && (Roblox = {}), Roblox.SiteTouchEvent = function() {
- function r() {
- var t, i;
- return typeof localStorage != "undefined" && (t = localStorage.getItem(n)), (typeof t == "undefined" || t === null) && (t = $.cookie(n)), i = Date.parse(t), t && !isNaN(i) ? new Date(i) : new Date(0)
- }
-
- function i(i) {
- typeof i == "undefined" && (i = new Date), typeof localStorage != "undefined" && (t.useLocalStorage ? $.cookie(n, null) : localStorage.removeItem(n)), t.useLocalStorage && typeof localStorage != "undefined" ? localStorage.setItem(n, i) : $.cookie(n, i, {
- expires: 100
- })
- }
-
- function u() {
- var n = r();
- Math.floor((new Date - n) / 36e5) >= t.dateDiffThresholdInHours && RobloxEventManager.triggerEvent("rbx_evt_sitetouch"), i()
- }
- var n = "LastActivity",
- t = {
- updateLastActivityAndFireEvent: u,
- getLastActivity: r,
- setLastActivity: i,
- dateDiffThresholdInHours: 3,
- useLocalStorage: !1
- };
- return t
-}();
-
-; /// JSErrorTracker.js
-typeof Roblox == "undefined" && (Roblox = {}), Roblox.JSErrorTracker = {
- showAlert: !1,
- defaultPixel: "GA",
- internalEventListenerPixelEnabled: !1,
- javascriptStackTraceEnabled: !1,
- data: {
- category: "Javascript Errors"
- },
- initialize: function(n) {
- typeof n != "undefined" && (typeof n.showAlert != "undefined" && (this.showAlert = n.showAlert), typeof n.internalEventListenerPixelEnabled != "undefined" && (this.internalEventListenerPixelEnabled = n.internalEventListenerPixelEnabled)), this.addOnErrorEventHandler(this.errorHandler)
- },
- errorHandler: function(n, t, i) {
- try {
- Roblox.JSErrorTracker.data.msg = n, Roblox.JSErrorTracker.data.url = t, Roblox.JSErrorTracker.data.line = i, Roblox.JSErrorTracker.data.ua = window.navigator.userAgent, Roblox.JSErrorTracker.logException(Roblox.JSErrorTracker.data)
- } catch (r) {}
- return !0
- },
- addOnErrorEventHandler: function(n) {
- var t = window.onerror;
- window.onerror = typeof window.onerror == "function" ? function(i, r, u) {
- t(i, r, u), n(i, r, u)
- } : n
- },
- processException: function(n, t) {
- if (typeof n != "undefined") {
- typeof n.category == "undefined" && (n.category = Roblox.JSErrorTracker.data.category);
- switch (t) {
- case "GA":
- var i = {
- category: "category",
- url: "action",
- msg: "opt_label",
- line: "opt_value"
- };
- Roblox.JSErrorTracker.fireGAPixel(Roblox.JSErrorTracker.distillGAData(n, i));
- break;
- case "Diag":
- Roblox.JSErrorTracker.internalEventListenerPixelEnabled && (n.category = "JavascriptExceptions", n.shard = "WebMetrics", n.eventName = "JavascriptExceptionLoggingEvent", RobloxEventManager.triggerEvent("JavascriptExceptionLoggingEvent", n));
- break;
- default:
- console.log("Roblox JSErrorTracker received an unknown pixel to fire")
- }
- return !0
- }
- },
- logException: function(n) {
- Roblox.JSErrorTracker.processException(n, Roblox.JSErrorTracker.defaultPixel), Roblox.JSErrorTracker.internalEventListenerPixelEnabled && Roblox.JSErrorTracker.processException(n, "Diag"), Roblox.JSErrorTracker.showErrorMessage(n.msg)
- },
- distillData: function(n, t) {
- var r = {},
- i;
- for (i in t) typeof n[i] != "undefined" && (r[t[i]] = encodeURIComponent(n[i]));
- return r
- },
- distillGAData: function(n, t) {
- var r = Roblox.JSErrorTracker.distillData(n, t),
- i = [decodeURIComponent([r.category])];
- return typeof r.action != typeof undefined ? (i = i.concat(decodeURIComponent(r.action)), typeof r.opt_label != typeof undefined && (i = i.concat(decodeURIComponent(r.opt_label)), typeof r.opt_value != typeof undefined && (i = i.concat(parseInt(decodeURIComponent(r.opt_value)))))) : Roblox.JSErrorTracker.showAlert && alert("Missing a required parameter for GA"), i
- },
- createURL: function(n, t, i) {
- var r = n,
- f = Roblox.JSErrorTracker.distillData(t, i),
- u;
- if (r += "?", f != null)
- for (u in f) typeof u != typeof undefined && t.hasOwnProperty(u) && (r += u + "=" + f[u] + "&");
- return r = r.slice(0, r.length - 1)
- },
- fireGAPixel: function(n) {
- typeof _gaq != "undefined" && _gaq.push(["c._trackEvent"].concat(n))
- },
- showErrorMessage: function(n) {
- Roblox.JSErrorTracker.showAlert && (n !== null ? alert(n) : alert("An error occured"))
- }
-};
-
-; /// Studio2Alert.js
-var studio2AlertModal = {
- showPrompt: !1,
- userId: 0,
- updateStudioAlertUserPreference: function() {
- $.ajax({
- type: "GET",
- url: "/WebHandlers/Studio2Alert.ashx?uId=" + studio2AlertModal.userId
- })
- },
- close: function() {
- studio2AlertModal.updateStudioAlertUserPreference(), $.modal.close("#Studio2AlertModal")
- },
- init: function() {
- studio2AlertModal.showPrompt = $("#Studio2AlertModal").data("showprompt"), studio2AlertModal.userId = $("#Studio2AlertModal").data("userid");
- var n = {
- escClose: !0,
- opacity: 80,
- overlayCss: {
- backgroundColor: "#000"
- }
- };
- studio2AlertModal.showPrompt && Roblox.Client.isIDE() && (studio2AlertModal.updateStudioAlertUserPreference(), $("#Studio2AlertModal").modal(n))
- }
-};
-$("#closeStudio2Alert").click(function() {
- studio2AlertModal.close()
-}), $(function() {
- studio2AlertModal.init()
-});
-
-; /// ClientInstaller.js
-function tryToDownload() {
- oIFrm = document.getElementById("downloadInstallerIFrame"), oIFrm.src = "/install/setup.ashx"
-}
-
-function logStatistics(n) {
- $.get("/install/VisitButtonHandler.ashx?reqtype=" + n, function() {})
-}
-Type.registerNamespace("Roblox.Client"), Roblox.Client._installHost = null, Roblox.Client._installSuccess = null, Roblox.Client._CLSID = null, Roblox.Client._continuation = null, Roblox.Client._skip = null, Roblox.Client._isIDE = null, Roblox.Client._isRobloxBrowser = null, Roblox.Client._isPlaceLaunch = !1, Roblox.Client._silentModeEnabled = !1, Roblox.Client._bringAppToFrontEnabled = !1, Roblox.Client._numLocks = 0, Roblox.Client._logTiming = !1, Roblox.Client._logStartTime = null, Roblox.Client._logEndTime = null, Roblox.Client._hiddenModeEnabled = !1, Roblox.Client._runInstallABTest = function() {}, Roblox.Client.ReleaseLauncher = function(n, t, i) {
- if (t && Roblox.Client._numLocks--, (i || Roblox.Client._numLocks <= 0) && (n != null && (document.getElementById("pluginObjDiv").innerHTML = "", n = null), Roblox.Client._numLocks = 0), Roblox.Client._logTiming) {
- Roblox.Client._logEndTime = new Date;
- var r = Roblox.Client._logEndTime.getTime() - Roblox.Client._logStartTime.getTime();
- console && console.log && console.log("Roblox.Client: " + r + "ms from Create to Release.")
- }
-}, Roblox.Client.GetInstallHost = function(n) {
- if (window.ActiveXObject) return n.InstallHost;
- var t = n.Get_InstallHost();
- return t.match(/roblox.com$/) ? t : t.substring(0, t.length - 1)
-}, Roblox.Client.CreateLauncher = function(n) {
- var i, u, t, r;
- Roblox.Client._logTiming && (Roblox.Client._logStartTime = new Date), n && Roblox.Client._numLocks++, (Roblox.Client._installHost == null || Roblox.Client._CLSID == null) && typeof initClientProps == "function" && initClientProps(), i = document.getElementById("robloxpluginobj"), u = $("#pluginObjDiv"), i || (Roblox.Client._hiddenModeEnabled = !1, window.ActiveXObject ? (t = '
Failed to INIT Plugin ', $(u).append(t)) : (t = '
', t += "You need Our Plugin for this. Get the latest version from", t += 'here .
', $(u).append(t)), i = document.getElementById("robloxpluginobj"));
- try {
- if (i || (typeof console.log == "undefined" ? alert("Plugin installation failed!") : console.log("Plugin installation failed!")), i.Hello(), r = Roblox.Client.GetInstallHost(i), !r || r != Roblox.Client._installHost) throw "wrong InstallHost: (plugins): " + r + " (servers): " + Roblox.Client._installHost;
- return i
- } catch (f) {
- return Roblox.Client.ReleaseLauncher(i, n, !1), null
- }
-}, Roblox.Client.isIDE = function() {
- if (Roblox.Client._isIDE == null && (Roblox.Client._isIDE = !1, Roblox.Client._isRobloxBrowser = !1, window.external)) try {
- window.external.IsRobloxAppIDE !== undefined && (Roblox.Client._isIDE = window.external.IsRobloxAppIDE, Roblox.Client._isRobloxBrowser = !0)
- } catch (n) {}
- return Roblox.Client._isIDE
-}, Roblox.Client.isRobloxBrowser = function() {
- return Roblox.Client.isIDE(), Roblox.Client._isRobloxBrowser
-}, Roblox.Client.robloxBrowserInstallHost = function() {
- if (window.external) try {
- return window.external.InstallHost
- } catch (n) {}
- return ""
-}, Roblox.Client.IsRobloxProxyInstalled = function() {
- var t = Roblox.Client.CreateLauncher(!1),
- n = !1;
- return (t != null && (n = !0), Roblox.Client.ReleaseLauncher(t, !1, !1), n || Roblox.Client.isRobloxBrowser()) ? !0 : !1
-}, Roblox.Client.IsRobloxInstalled = function() {
- try {
- var t = Roblox.Client.CreateLauncher(!1),
- n = Roblox.Client.GetInstallHost(t);
- return Roblox.Client.ReleaseLauncher(t, !1, !1), n == Roblox.Client._installHost
- } catch (i) {
- return Roblox.Client.isRobloxBrowser() ? (n = Roblox.Client.robloxBrowserInstallHost(), n == Roblox.Client._installHost) : !1
- }
-}, Roblox.Client.SetStartInHiddenMode = function(n) {
- try {
- var t = Roblox.Client.CreateLauncher(!1);
- if (t !== null) return t.SetStartInHiddenMode(n), Roblox.Client._hiddenModeEnabled = n, !0
- } catch (i) {}
- return !1
-}, Roblox.Client.UnhideApp = function() {
- try {
- if (Roblox.Client._hiddenModeEnabled) {
- var n = Roblox.Client.CreateLauncher(!1);
- n.UnhideApp()
- }
- } catch (t) {}
-}, Roblox.Client.Update = function() {
- try {
- var n = Roblox.Client.CreateLauncher(!1);
- n.Update(), Roblox.Client.ReleaseLauncher(n, !1, !1)
- } catch (t) {
- alert("Error updating: " + t)
- }
-}, Roblox.Client.WaitForRoblox = function(n) {
- if (Roblox.Client._skip) return window.location = Roblox.Client._skip, !1;
- if (Roblox.Client._continuation = n, Roblox.Client._cancelled = !1, !Roblox.Client.IsRobloxProxyInstalled() && Roblox.Client.ImplementsProxy) {
- Roblox.InstallationInstructions.show(), Roblox.Client.runInstallABTest();
- var t = "Windows";
- return navigator.appVersion.indexOf("Mac") != -1 && (t = "Mac"), typeof _gaq != typeof undefined && (_gaq.push(["_trackEvent", "Install Begin", t]), _gaq.push(["b._trackEvent", "Install Begin", t])), RobloxEventManager.triggerEvent("rbx_evt_install_begin", {
- os: t
- }), window.chrome && (window.location.hash = "#chromeInstall", $.cookie("chromeInstall", n.toString().replace(/play_placeId/, play_placeId.toString()))), window.setTimeout(function() {
- Roblox.Client._ontimer()
- }, 1e3), tryToDownload(), !0
- }
- return Roblox.Client._continuation(), !1
-}, Roblox.Client.ResumeTimer = function(n) {
- Roblox.Client._continuation = n, Roblox.Client._cancelled = !1, window.setTimeout(function() {
- Roblox.Client._ontimer()
- }, 0)
-}, Roblox.Client.Refresh = function() {
- try {
- navigator.plugins.refresh(!1)
- } catch (n) {}
-}, Roblox.Client._onCancel = function() {
- return Roblox.InstallationInstructions.hide(), Roblox.Client._cancelled = !0, !1
-}, Roblox.Client._ontimer = function() {
- Roblox.Client._cancelled || (Roblox.Client.Refresh(), Roblox.Client.IsRobloxProxyInstalled() ? (Roblox.InstallationInstructions.hide(), window.setTimeout(function() {
- window.chrome && window.location.hash == "#chromeInstall" && (window.location.hash = "", $.cookie("chromeInstall", null))
- }, 5e3), Roblox.Client._continuation(), Roblox.Client._installSuccess && Roblox.Client._installSuccess()) : window.setTimeout(function() {
- Roblox.Client._ontimer()
- }, 1e3))
-};
-
-; /// InstallationInstructions.js
-typeof Roblox == "undefined" && (Roblox = {}), Roblox.InstallationInstructions = function() {
- function i() {
- var t, i, r;
- n(), t = 0, i = $(".InstallInstructionsImage"), i && typeof $(i).attr("modalwidth") != "undefined" && (t = $(".InstallInstructionsImage").attr("modalwidth")), t > 0 ? (r = ($(window).width() - (t - 10)) / 2, $("#InstallationInstructions").modal({
- escClose: !0,
- opacity: 50,
- minWidth: t,
- maxWidth: t,
- overlayCss: {
- backgroundColor: "#000"
- },
- position: [20, r]
- })) : $("#InstallationInstructions").modal({
- escClose: !0,
- opacity: 50,
- maxWidth: $(window).width() / 2,
- minWidth: $(window).width() / 2,
- overlayCss: {
- backgroundColor: "#000"
- },
- position: [20, "25%"]
- })
- }
-
- function r() {
- $.modal.close()
- }
-
- function n() {
- var n = $(".InstallInstructionsImage");
- navigator.userAgent.match(/Mac OS X 10[_|\.]5/) ? n && typeof $(n).attr("oldmacdelaysrc") != "undefined" && $(".InstallInstructionsImage").attr("src", $(".InstallInstructionsImage").attr("oldmacdelaysrc")) : n && typeof $(n).attr("delaysrc") != "undefined" && $(".InstallInstructionsImage").attr("src", $(".InstallInstructionsImage").attr("delaysrc"))
- }
- return {
- show: i,
- hide: r
- }
-}();
-
-; /// MadStatus.js
-MadStatus = {
- running: !1,
- init: function(n, t, i, r) {
- MadStatus.running && MadStatus.stop(), MadStatus.updateInterval = i ? i : 2e3, MadStatus.fadeInterval = r ? r : 1e3, MadStatus.timeout = null, MadStatus.running = !0, MadStatus.field = n, MadStatus.backBuffer = t, MadStatus.field.show(), MadStatus.backBuffer.hide()
- },
- participle: ["Accelerating", "Aggregating", "Allocating", "Aquiring", "Automating", "Backtracing", "Bloxxing", "Bootstraping", "Calibrating", "Correlating", "De-noobing", "De-ionizing", "Deriving", "Energizing", "Filtering", "Generating", "Indexing", "Loading", "Noobing", "Optimizing", "Oxidizing", "Queueing", "Parsing", "Processing", "Rasterizing", "Reading", "Registering", "Re-routing", "Resolving", "Sampling", "Updating", "Writing"],
- modifier: ["Blox", "Count Zero", "Cylon", "Data", "Ectoplasm", "Encryption", "Event", "Farnsworth", "Bebop", "Flux Capacitor", "Fusion", "Game", "Gibson", "Host", "Mainframe", "Metaverse", "Nerf Herder", "Neutron", "Noob", "Photon", "Profile", "Script", "Skynet", "TARDIS", "Virtual"],
- subject: ["Analogs", "Blocks", "Cannon", "Channels", "Core", "Database", "Dimensions", "Directives", "Engine", "Files", "Gear", "Index", "Layer", "Matrix", "Paradox", "Parameters", "Parsecs", "Pipeline", "Players", "Ports", "Protocols", "Reactors", "Sphere", "Spooler", "Stream", "Switches", "Table", "Targets", "Throttle", "Tokens", "Torpedoes", "Tubes"],
- newLib: function() {
- return libString = this.participle[Math.floor(Math.random() * this.participle.length)] + " " + this.modifier[Math.floor(Math.random() * this.modifier.length)] + " " + this.subject[Math.floor(Math.random() * this.subject.length)] + "..."
- },
- start: function() {
- MadStatus.timeout == null && (MadStatus.timeout = setInterval("MadStatus.update()", MadStatus.updateInterval), MadStatus.running = !0)
- },
- stop: function(n) {
- clearInterval(MadStatus.timeout), MadStatus.timeout = null, MadStatus.field[0].innerHTML = typeof n != typeof undefined ? n : "", MadStatus.running = !1
- },
- manualUpdate: function(n, t, i) {
- MadStatus.timeout && MadStatus.stop(), this.update(n, i), t && setTimeout("MadStatus.start()", 1e3)
- },
- update: function(n, t) {
- (MadStatus.backBuffer[0].innerHTML = typeof n != typeof undefined ? n : this.newLib(), typeof noAnim == typeof undefined || t != !1) && (this.field.hide(), this.backBuffer.fadeIn(this.fadeInterval + 2, function() {
- MadStatus.field[0].innerHTML = MadStatus.backBuffer[0].innerHTML, MadStatus.field.show(), MadStatus.backBuffer.hide()
- }))
- }
-};
-
-; /// PlaceLauncher.js
-var RBX = {},
- RobloxLaunchStates = {
- StartingServer: "StartingServer",
- StartingClient: "StartingClient",
- Upgrading: "Upgrading",
- None: "None"
- },
- RobloxLaunch = {
- launchGamePage: null,
- timer: null,
- clientMetricType: null,
- launcher: null,
- googleAnalyticsCallback: function() {
- RobloxLaunch._GoogleAnalyticsCallback && RobloxLaunch._GoogleAnalyticsCallback()
- },
- state: RobloxLaunchStates.None,
- secureAuthenticate: !1
- },
- RobloxPlaceLauncherService = {
- LogJoinClick: function() {
- $.get("/Game/Placelauncher.ashx", {
- request: "LogJoinClick"
- })
- },
- RequestGame: function(n, t, i, r, u, f) {
- i = i !== null && i !== undefined ? i : "", $.getJSON("/Game/PlaceLauncher.ashx", {
- request: "RequestGame",
- placeId: n,
- isPartyLeader: t,
- gender: i
- }, function(n) {
- n.Error ? u(n.Error, f) : r(n, f)
- })
- },
- RequestPlayWithParty: function(n, t, i, r, u, f) {
- $.getJSON("/Game/PlaceLauncher.ashx", {
- request: "RequestPlayWithParty",
- placeId: n,
- partyGuid: t,
- gameId: i
- }, function(n) {
- n.Error ? u(n.Error, f) : r(n, f)
- })
- },
- RequestGroupBuildGame: function(n, t, i, r) {
- $.getJSON("/Game/PlaceLauncher.ashx", {
- request: "RequestGroupBuildGame",
- placeId: n
- }, function(n) {
- n.Error ? i(n.Error, r) : t(n, r)
- })
- },
- RequestFollowUser: function(n, t, i, r) {
- $.getJSON("/Game/PlaceLauncher.ashx", {
- request: "RequestFollowUser",
- userId: n
- }, function(n) {
- n.Error ? i(n.Error, r) : t(n, r)
- })
- },
- RequestGameJob: function(n, t, i, r, u, f) {
- $.getJSON("/Game/PlaceLauncher.ashx", {
- request: "RequestGameJob",
- placeId: n,
- gameId: t,
- gameJobId: i
- }, function(n) {
- n.Error ? u(n.Error, f) : r(n, f)
- })
- },
- CheckGameJobStatus: function(n, t, i, r) {
- $.getJSON("/Game/PlaceLauncher.ashx", {
- request: "CheckGameJobStatus",
- jobId: n
- }, function(n) {
- n.Error ? i(n.Error, r) : t(n, r)
- })
- }
- };
-RobloxLaunch.RequestPlayWithParty = function(n, t, i, r) {
- RobloxPlaceLauncherService.LogJoinClick(), RobloxLaunch.timer = new Date, RobloxLaunch.state = RobloxLaunchStates.None, RobloxLaunch.clientMetricType = "WebPlay", checkRobloxInstall() && (RobloxLaunch.launcher === null && (RobloxLaunch.launcher = new RBX.PlaceLauncher(n)), RobloxLaunch.launcher.RequestPlayWithParty(t, i, r))
-}, RobloxLaunch.RequestGame = function(n, t, i) {
- RobloxPlaceLauncherService.LogJoinClick(), RobloxLaunch.timer = new Date, RobloxLaunch.state = RobloxLaunchStates.None, RobloxLaunch.clientMetricType = "WebPlay", checkRobloxInstall() && (RobloxLaunch.launcher === null && (RobloxLaunch.launcher = new RBX.PlaceLauncher(n)), RobloxLaunch.launcher.RequestGame(t, i))
-}, RobloxLaunch.RequestGroupBuildGame = function(n, t) {
- RobloxPlaceLauncherService.LogJoinClick(), RobloxLaunch.timer = new Date, RobloxLaunch.state = RobloxLaunchStates.None, RobloxLaunch.clientMetricType = "WebPlay", checkRobloxInstall() && (RobloxLaunch.launcher === null && (RobloxLaunch.launcher = new RBX.PlaceLauncher(n)), RobloxLaunch.launcher.RequestGroupBuildGame(t))
-}, RobloxLaunch.RequestGameJob = function(n, t, i, r) {
- RobloxPlaceLauncherService.LogJoinClick(), RobloxLaunch.timer = new Date, RobloxLaunch.state = RobloxLaunchStates.None, RobloxLaunch.clientMetricType = "WebJoin", checkRobloxInstall() && (RobloxLaunch.launcher === null && (RobloxLaunch.launcher = new RBX.PlaceLauncher(n)), RobloxLaunch.launcher.RequestGameJob(t, i, r))
-}, RobloxLaunch.RequestFollowUser = function(n, t) {
- RobloxPlaceLauncherService.LogJoinClick(), RobloxLaunch.timer = new Date, RobloxLaunch.state = RobloxLaunchStates.None, RobloxLaunch.clientMetricType = "WebFollow", checkRobloxInstall() && (RobloxLaunch.launcher === null && (RobloxLaunch.launcher = new RBX.PlaceLauncher(n)), RobloxLaunch.launcher.RequestFollowUser(t))
-}, RobloxLaunch.StartGame = function(n, t, i, r, u) {
- var o, f, e, s;
- RobloxLaunch.secureAuthenticate && (i = i.replace("http://", "https://")), n = typeof RobloxLaunch.SeleniumTestMode == "undefined" ? n + "&testmode=false" : n + "&testmode=true", typeof urchinTracker != "undefined" && urchinTracker("Visit/Try/" + t), RobloxLaunch.state = RobloxLaunchStates.StartingClient, RobloxLaunch.googleAnalyticsCallback !== null && RobloxLaunch.googleAnalyticsCallback(), o = null;
- try {
- if (typeof window.external != "undefined" && window.external.IsRobloxABApp) window.external.StartGame(r, i, n);
- else if (typeof window.external != "undefined" && window.external.IsRoblox2App && (n.indexOf("visit") != -1 || u)) window.external.StartGame(r, i, n);
- else if (o = "RobloxProxy/", f = Roblox.Client.CreateLauncher(!0), f) {
- o = "RobloxProxy/StartGame/";
- try {
- try {
- window.ActiveXObject ? f.AuthenticationTicket = r : f.Put_AuthenticationTicket(r), u && f.SetEditMode()
- } catch (a) {}
- try {
- if (Roblox.Client._silentModeEnabled) f.SetSilentModeEnabled(!0), Roblox.VideoPreRoll.videoInitialized && Roblox.VideoPreRoll.isPlaying() && Roblox.Client.SetStartInHiddenMode(!0), f.StartGame(i, n), RobloxLaunch.CheckGameStarted(f);
- else throw "silent mode is disabled, fall back";
- } catch (a) {
- if (f.StartGame(i, n), Roblox.Client._bringAppToFrontEnabled) try {
- f.BringAppToFront()
- } catch (h) {}
- Roblox.Client.ReleaseLauncher(f, !0, !1), $.modal.close()
- }
- } catch (a) {
- Roblox.Client.ReleaseLauncher(f, !0, !1);
- throw a;
- }
- } else {
- try {
- parent.playFromUrl(n);
- return
- } catch (l) {}
- if (Roblox.Client.isRobloxBrowser()) try {
- window.external.StartGame(r, i, n)
- } catch (l) {
- throw "window.external fallback failed, Roblox must not be installed or IE cannot access ActiveX";
- } else throw "launcher is null or undefined and external is missing";
- RobloxLaunch.state = RobloxLaunchStates.None, $.modal.close()
- }
- } catch (a) {
- if (e = a.message, e === "User cancelled" && typeof urchinTracker != "undefined") return urchinTracker("Visit/UserCancelled/" + t), !1;
- try {
- s = new ActiveXObject("Microsoft.XMLHTTP")
- } catch (c) {
- e = "FailedXMLHTTP/" + e
- }
- return Roblox.Client.isRobloxBrowser() ? typeof urchinTracker != "undefined" && urchinTracker("Visit/Fail/" + o + encodeURIComponent(e)) : (typeof urchinTracker != "undefined" && urchinTracker("Visit/Redirect/" + o + encodeURIComponent(e)), window.location = RobloxLaunch.launchGamePage), !1
- }
- return typeof urchinTracker != "undefined" && urchinTracker("Visit/Success/" + t), !0
-}, RobloxLaunch.CheckGameStarted = function(n) {
- function r() {
- var e = !1;
- try {
- if (i || (i = window.ActiveXObject ? n.IsGameStarted : n.Get_GameStarted()), i && !Roblox.VideoPreRoll.isPlaying()) {
- if (MadStatus.stop("Connecting to Players..."), RobloxLaunch.state = RobloxLaunchStates.None, $.modal.close(), t._cancelled = !0, Roblox.Client._hiddenModeEnabled && Roblox.Client.UnhideApp(), Roblox.Client._bringAppToFrontEnabled) try {
- n.BringAppToFront()
- } catch (f) {}
- Roblox.Client.ReleaseLauncher(n, !0, !1)
- } else t._cancelled || setTimeout(r, 1e3)
- } catch (u) {
- t._cancelled || setTimeout(r, 1e3)
- }
- }
- var t = RobloxLaunch.launcher,
- i;
- t === null && (t = new RBX.PlaceLauncher("PlaceLauncherStatusPanel"), t._showDialog(), t._updateStatus(0)), i = !1, r()
-}, RobloxLaunch.CheckRobloxInstall = function(n) {
- if (Roblox.Client.IsRobloxInstalled()) return Roblox.Client.Update(), !0;
- window.location = n
-}, RBX.PlaceLauncher = function(n) {
- this._cancelled = !1, this._popupID = n, this._popup = $("#" + n)
-}, RBX.PlaceLauncher.prototype = {
- _showDialog: function() {
- this._cancelled = !1, _popupOptions = {
- escClose: !0,
- opacity: 80,
- overlayCss: {
- backgroundColor: "#000"
- }
- }, this._popupID == "PlaceLauncherStatusPanel" && (Roblox.VideoPreRoll && Roblox.VideoPreRoll.showVideoPreRoll && !Roblox.VideoPreRoll.isExcluded() ? (this._popup = $("#videoPrerollPanel"), _popupOptions.onShow = function(n) {
- Roblox.VideoPreRoll.correctIEModalPosition(n), Roblox.VideoPreRoll.start()
- }, _popupOptions.onClose = function() {
- Roblox.VideoPreRoll.close()
- }, _popupOptions.closeHTML = '
') : (this._popup = $("#" + this._popupID), _popupOptions.onClose = function() {
- Roblox.VideoPreRoll.logVideoPreRoll(), $.modal.close()
- })), this._popup.modal(_popupOptions);
- var n = this;
- $(".CancelPlaceLauncherButton").click(function() {
- n.CancelLaunch()
- }), $(".CancelPlaceLauncherButton").show()
- },
- _reportDuration: function(n, t) {
- $.ajax({
- type: "GET",
- async: !0,
- cache: !1,
- timeout: 5e4,
- url: "/Game/JoinRate.ashx?c=" + RobloxLaunch.clientMetricType + "&r=" + t + "&d=" + n,
- success: function() {}
- })
- },
- _onGameStatus: function(n) {
- var r, i, t;
- if (this._cancelled) {
- r = +new Date - RobloxLaunch.timer.getTime(), this._reportDuration(r, "Cancel");
- return
- }
- if (this._updateStatus(n.status), n.status === 2) RobloxLaunch.StartGame(n.joinScriptUrl, "Join", n.authenticationUrl, n.authenticationTicket), i = +new Date - RobloxLaunch.timer.getTime(), this._reportDuration(i, "Success");
- else if (n.status < 2 || n.status === 6) {
- var f = function(n, t) {
- t._onGameStatus(n)
- },
- e = function(n, t) {
- t._onGameError(n)
- },
- o = this,
- u = function() {
- RobloxPlaceLauncherService.CheckGameJobStatus(n.jobId, f, e, o)
- };
- window.setTimeout(u, 2e3)
- } else n.status === 4 && (t = +new Date - RobloxLaunch.timer.getTime(), this._reportDuration(t, "Failure"))
- },
- _updateStatus: function(n) {
- MadStatus.running || (MadStatus.init($(this._popup).find(".MadStatusField"), $(this._popup).find(".MadStatusBackBuffer"), 2e3, 800), MadStatus.start());
- switch (n) {
- case 0:
- break;
- case 1:
- MadStatus.manualUpdate("A server is loading the game...", !0);
- break;
- case 2:
- MadStatus.manualUpdate("The server is ready. Joining the game...", !0);
- break;
- case 3:
- MadStatus.manualUpdate("Joining games is temporarily disabled while we upgrade. Please try again soon.", !1);
- break;
- case 4:
- MadStatus.manualUpdate("An error occurred. Please try again later.", !1);
- break;
- case 5:
- MadStatus.manualUpdate("The game you requested has ended.", !1);
- break;
- case 6:
- MadStatus.manualUpdate("The game you requested is currently full. Waiting for an opening...", !0, !1);
- break;
- case 7:
- MadStatus.manualUpdate("Roblox is updating. Please wait...", !0);
- break;
- case 8:
- MadStatus.manualUpdate("Requesting a server", !0);
- break;
- default:
- MadStatus.stop("Connecting to Players...")
- }
- $(this._popup).find(".MadStatusStarting").css("display", "none"), $(this._popup).find(".MadStatusSpinner").css("visibility", n === 3 || n === 4 || n === 5 ? "hidden" : "visible")
- },
- _onGameError: function() {
- this._updateStatus(4)
- },
- _startUpdatePolling: function(n) {
- var t, i;
- try {
- if (RobloxLaunch.state = RobloxLaunchStates.Upgrading, t = Roblox.Client.CreateLauncher(!0), i = window.ActiveXObject ? t.IsUpToDate : t.Get_IsUpToDate(), i || i === undefined) {
- try {
- t.PreStartGame()
- } catch (e) {}
- Roblox.Client.ReleaseLauncher(t, !0, !1), RobloxLaunch.state = RobloxLaunchStates.StartingServer, n();
- return
- }
- var f = function(t, i, r) {
- r._onUpdateStatus(t, i, n)
- },
- u = function(n, t) {
- t._onUpdateError(n)
- },
- r = this;
- this.CheckUpdateStatus(f, u, t, n, r)
- } catch (e) {
- Roblox.Client.ReleaseLauncher(t, !0, !1), n()
- }
- },
- _onUpdateStatus: function(n, t, i) {
- if (!this._cancelled)
- if (this._updateStatus(n), n === 8) Roblox.Client.ReleaseLauncher(t, !0, !0), Roblox.Client.Refresh(), RobloxLaunch.state = RobloxLaunchStates.StartingServer, i();
- else if (n === 7) {
- var f = function(n, t, r) {
- r._onUpdateStatus(n, t, i)
- },
- e = function(n, t) {
- t._onUpdateError(n)
- },
- r = this,
- u = function() {
- r.CheckUpdateStatus(f, e, t, i, r)
- };
- window.setTimeout(u, 2e3)
- } else alert("Unknown status from CheckUpdateStatus")
- },
- _onUpdateError: function() {
- this._updateStatus(2)
- },
- CheckUpdateStatus: function(n, t, i, r, u) {
- try {
- if (i.PreStartGame(), window.ActiveXObject) var f = i.IsUpToDate;
- else f = i.Get_IsUpToDate();
- f || f === undefined ? n(8, i, u) : n(7, i, u)
- } catch (e) {
- n(8, i, u)
- }
- },
- RequestGame: function(n, t) {
- var r;
- this._showDialog();
- var f = function(n, t) {
- t._onGameStatus(n)
- },
- u = function(n, t) {
- t._onGameError(n)
- },
- e = this,
- i = !1;
- return typeof Party != "undefined" && typeof Party.AmILeader == "function" && (i = Party.AmILeader()), r = function() {
- RobloxPlaceLauncherService.RequestGame(n, i, t, f, u, e)
- }, this._startUpdatePolling(r), !1
- },
- RequestPlayWithParty: function(n, t, i) {
- this._showDialog();
- var f = function(n, t) {
- t._onGameStatus(n)
- },
- e = function(n, t) {
- t._onGameError(n)
- },
- r = this,
- u = function() {
- RobloxPlaceLauncherService.RequestPlayWithParty(n, t, i, f, e, r)
- };
- return this._startUpdatePolling(u), !1
- },
- RequestGroupBuildGame: function(n) {
- this._showDialog();
- var r = function(n, t) {
- t._onGameStatus(n, !0)
- },
- u = function(n, t) {
- t._onGameError(n)
- },
- t = this,
- i = function() {
- RobloxPlaceLauncherService.RequestGroupBuildGame(n, r, u, t)
- };
- return this._startUpdatePolling(i), !1
- },
- RequestFollowUser: function(n) {
- this._showDialog();
- var r = function(n, t) {
- t._onGameStatus(n)
- },
- u = function(n, t) {
- t._onError(n)
- },
- t = this,
- i = function() {
- RobloxPlaceLauncherService.RequestFollowUser(n, r, u, t)
- };
- return this._startUpdatePolling(i), !1
- },
- RequestGameJob: function(n, t, i) {
- this._showDialog();
- var f = function(n, t) {
- t._onGameStatus(n)
- },
- e = function(n, t) {
- t._onGameError(n)
- },
- r = this,
- u = function() {
- RobloxPlaceLauncherService.RequestGameJob(n, t, i, f, e, r)
- };
- return this._startUpdatePolling(u), !1
- },
- CancelLaunch: function() {
- return this._cancelled = !0, $.modal.close(), !1
- },
- dispose: function() {
- RBX.PlaceLauncher.callBaseMethod(this, "dispose")
- }
-};
-
-; /// VideoPreRoll.js
-function openVideoPreroll2(n) {
- Roblox.VideoPreRoll.test(n)
-}
-
-function flashCheck(n) {
- var i = !1,
- t, r;
- if (window.ActiveXObject) try {
- t = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + n), i = !0
- } catch (u) {} else navigator.plugins && navigator.mimeTypes.length > 0 && (t = navigator.plugins["Shockwave Flash"], t && (r = navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/, "$1"), r >= n && (i = !0)));
- return i
-}
-typeof Roblox == "undefined" && (Roblox = {}), Roblox.VideoPreRoll = {
- newValue: "",
- showVideoPreRoll: !1,
- videoInitialized: !1,
- videoStarted: !1,
- videoCompleted: !1,
- videoSkipped: !1,
- videoCancelled: !1,
- videoErrored: !1,
- videoOptions: {
- key: "integration_test",
- companionId: "videoPrerollCompanionAd"
- },
- myvpaidad: null,
- loadingBarMaxTime: 3e4,
- loadingBarCurrentTime: 0,
- loadingBarIntervalID: 0,
- loadingBarID: "videoPrerollLoadingBar",
- loadingBarInnerID: "videoPrerollLoadingBarCompleted",
- loadingBarPercentageID: "videoPrerollLoadingPercent",
- videoLoadingTimeout: 7e3,
- videoPlayingTimeout: 23e3,
- videoLogNote: "",
- logsEnabled: !1,
- excludedPlaceIds: "",
- specificAdOnPlacePageEnabled: !1,
- specificAdOnPlacePageId: 0,
- specificAdOnPlacePageCategory: "",
- checkEligibility: function() {
- Roblox.VideoPreRoll.showVideoPreRoll && (flashCheck(8) ? typeof __adaptv__ == "undefined" ? (Roblox.VideoPreRoll.videoLogNote = "NoAdapTv", Roblox.VideoPreRoll.showVideoPreRoll = !1) : Roblox.Client.IsRobloxInstalled() ? Roblox.Client.isIDE() ? (Roblox.VideoPreRoll.videoLogNote = "RobloxStudio", Roblox.VideoPreRoll.showVideoPreRoll = !1) : Roblox.Client.isRobloxBrowser() ? (Roblox.VideoPreRoll.videoLogNote = "RobloxPlayer", Roblox.VideoPreRoll.showVideoPreRoll = !1) : window.chrome && window.location.hash == "#chromeInstall" && (Roblox.VideoPreRoll.showVideoPreRoll = !1) : Roblox.VideoPreRoll.showVideoPreRoll = !1 : (Roblox.VideoPreRoll.videoLogNote = "NoFlash", Roblox.VideoPreRoll.showVideoPreRoll = !1))
- },
- isExcluded: function() {
- var t, n;
- if (Roblox.VideoPreRoll.showVideoPreRoll && Roblox.VideoPreRoll.excludedPlaceIds !== "" && (t = Roblox.VideoPreRoll.excludedPlaceIds.split(","), typeof play_placeId != "undefined"))
- for (n = 0; n < t.length; n++)
- if (play_placeId == t[n]) return Roblox.VideoPreRoll.videoLogNote = "ExcludedPlace", !0;
- return !1
- },
- start: function() {
- var i, r, t, n;
- this.videoInitialized = !0, this.videoStarted = !1, this.videoCancelled = !1, this.videoCompleted = !1, this.videoSkipped = !1, this.loadingBarCurrentTime = 0, this.videoLogNote = "", Roblox.VideoPreRoll.specificAdOnPlacePageEnabled && typeof play_placeId != "undefined" && (i = "," + Roblox.VideoPreRoll.specificAdOnPlacePageCategory, play_placeId == Roblox.VideoPreRoll.specificAdOnPlacePageId && Roblox.VideoPreRoll.videoOptions.categories.indexOf(i) == -1 && (Roblox.VideoPreRoll.videoOptions.categories += i)), r = __adaptv__, this.myvpaidad = new r.ads.vpaid.VPAIDAd("videoPrerollMainDiv"), t = 1e3, LoadingBar.init(this.loadingBarID, this.loadingBarInnerID, this.loadingBarPercentageID), this.loadingBarIntervalID = setInterval(function() {
- Roblox.VideoPreRoll.loadingBarCurrentTime += t, LoadingBar.update(Roblox.VideoPreRoll.loadingBarID, Roblox.VideoPreRoll.loadingBarCurrentTime / Roblox.VideoPreRoll.loadingBarMaxTime)
- }, t), n = r.ads.vpaid.VPAIDEvent;
- this.myvpaidad.on(n.AdLoaded, function(n) {
- Roblox.VideoPreRoll._onVideoLoaded(n)
- });
- this.myvpaidad.on(n.AdStarted, function(n) {
- Roblox.VideoPreRoll._onVideoStart(n)
- });
- this.myvpaidad.on(n.AdStopped, function(n) {
- Roblox.VideoPreRoll._onVideoComplete(n)
- });
- this.myvpaidad.on(n.AdError, function(n) {
- Roblox.VideoPreRoll._onVideoError(n)
- });
- try {
- this.myvpaidad.initAd(391, 312, this.videoOptions)
- } catch (u) {
- f()
- }
- },
- error: function() {
- clearInterval(loadingBarInterval)
- },
- cancel: function() {
- this.videoCancelled = !0, $.modal.close()
- },
- skip: function() {
- this.videoCompleted = !0, this.videoSkipped = !0, this.showVideoPreRoll = !1
- },
- close: function() {
- MadStatus.running && MadStatus.stop(""), RobloxLaunch.launcher && (RobloxLaunch.launcher._cancelled = !0), clearInterval(this.loadingBarIntervalID), LoadingBar.dispose(this.loadingBarID);
- try {
- this.myvpaidad.stopAd()
- } catch (n) {}
- this.isPlaying() && (this.videoCancelled = !0), $.modal.close(), this.logVideoPreRoll()
- },
- _onVideoError: function f() {
- this.videoCompleted = !0, this.videoErrored = !0
- },
- _onVideoLoaded: function(n) {
- try {
- this.myvpaidad.startAd()
- } catch (t) {
- f(n)
- }
- },
- _onVideoStart: function() {
- this.videoStarted = !0
- },
- _onVideoComplete: function() {
- this.videoStarted && this.videoCancelled == !1 && (this.videoCompleted = !0, this.showVideoPreRoll = !1, this.newValue != "" && $.cookie("RBXVPR", this.newValue, 180))
- },
- logVideoPreRoll: function() {
- if (Roblox.VideoPreRoll.logsEnabled) {
- var n = "";
- if (Roblox.VideoPreRoll.videoCompleted) n = "Complete", Roblox.VideoPreRoll.videoLogNote == "" && (Roblox.VideoPreRoll.videoLogNote = "NoTimeout"), Roblox.VideoPreRoll.logsEnabled = !1;
- else if (Roblox.VideoPreRoll.videoCancelled) n = "Cancelled", Roblox.VideoPreRoll.videoLogNote = RobloxLaunch.state;
- else if (Roblox.VideoPreRoll.videoInitialized == !1 && Roblox.VideoPreRoll.videoLogNote != "") n = "Failed", Roblox.VideoPreRoll.logsEnabled = !1;
- else return;
- GoogleAnalyticsEvents.FireEvent(["PreRoll", n, Roblox.VideoPreRoll.videoLogNote])
- }
- },
- isPlaying: function() {
- return Roblox.VideoPreRoll.videoInitialized ? (Roblox.VideoPreRoll.videoInitialized && !Roblox.VideoPreRoll.videoStarted && Roblox.VideoPreRoll.loadingBarCurrentTime > Roblox.VideoPreRoll.videoLoadingTimeout && (Roblox.VideoPreRoll.videoCompleted = !0, Roblox.VideoPreRoll.videoLogNote = "LoadingTimeout"), Roblox.VideoPreRoll.videoStarted && !Roblox.VideoPreRoll.videoCompleted && Roblox.VideoPreRoll.loadingBarCurrentTime > Roblox.VideoPreRoll.videoPlayingTimeout && (Roblox.VideoPreRoll.videoCompleted = !0, Roblox.VideoPreRoll.videoLogNote = "PlayingTimeout"), !Roblox.VideoPreRoll.videoCompleted) : !1
- },
- correctIEModalPosition: function(n) {
- if (n.container.innerHeight() <= 30) {
- var i = $("#videoPrerollPanel"),
- t = -Math.floor(i.innerHeight() / 2);
- i.css({
- position: "relative",
- top: t + "px"
- }), n.container.find(".VprCloseButton").css({
- top: t - 10 + "px",
- "z-index": "1003"
- })
- }
- },
- test: function() {
- _popupOptions = {
- escClose: !0,
- opacity: 80,
- overlayCss: {
- backgroundColor: "#000"
- },
- onShow: function(n) {
- Roblox.VideoPreRoll.correctIEModalPosition(n), Roblox.VideoPreRoll.start()
- },
- onClose: function() {
- Roblox.VideoPreRoll.close()
- },
- closeHTML: '
'
- }, $("#videoPrerollPanel").modal(_popupOptions), MadStatus.running || (MadStatus.init($("#videoPrerollPanel").find(".MadStatusField"), $("#videoPrerollPanel").find(".MadStatusBackBuffer"), 2e3, 800), MadStatus.start()), $("#videoPrerollPanel").find(".MadStatusStarting").css("display", "none"), $("#videoPrerollPanel").find(".MadStatusSpinner").css("visibility", status === 3 || status === 4 || status === 5 ? "hidden" : "visible")
- }
-};
-var LoadingBar = {
- bars: [],
- init: function(n, t, i, r) {
- var u = this.get(n);
- u == null && (u = {}), u.barID = n, u.innerBarID = t, u.percentageID = i, typeof r == "undefined" && (u.percentComplete = 0), this.bars.push(u), this.update(n, u.percentComplete)
- },
- get: function(n) {
- for (var t = 0; t < this.bars.length; t++)
- if (this.bars[t].barID == n) return this.bars[t];
- return null
- },
- dispose: function(n) {
- for (var t = 0; t < this.bars.length; t++) this.bars[t].barID == n && this.bars.splice(t, 1)
- },
- update: function(n, t) {
- var i = this.get(n),
- u, r;
- i && (t > 1 && (t = 1), u = $("#" + n).width(), r = Math.round(u * t), $("#" + i.innerBarID).animate({
- width: r
- }, 200, "swing"), i.percentageID && $("#" + i.percentageID).length > 0 && $("#" + i.percentageID).html(Math.round(t * 100) + "%"), i.percentComplete = t)
- }
-};
-// end roblox.js
\ No newline at end of file
diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js
deleted file mode 100644
index 63605fa..0000000
--- a/resources/js/bootstrap.js
+++ /dev/null
@@ -1,41 +0,0 @@
-window._ = require('lodash');
-
-/**
- * We'll load jQuery and the Bootstrap jQuery plugin which provides support
- * for JavaScript based Bootstrap features such as modals and tabs. This
- * code may be modified to fit the specific needs of your application.
- */
-
-try {
- window.Popper = require('popper.js').default;
- window.$ = window.jQuery = require('jquery');
-
- require('bootstrap');
-} catch (e) {}
-
-/**
- * We'll load the axios HTTP library which allows us to easily issue requests
- * to our Laravel back-end. This library automatically handles sending the
- * CSRF token as a header based on the value of the "XSRF" token cookie.
- */
-
-window.axios = require('axios');
-
-window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
-
-/**
- * Echo exposes an expressive API for subscribing to channels and listening
- * for events that are broadcast by Laravel. Echo and event broadcasting
- * allows your team to easily build robust real-time web applications.
- */
-
-// import Echo from 'laravel-echo';
-
-// window.Pusher = require('pusher-js');
-
-// window.Echo = new Echo({
-// broadcaster: 'pusher',
-// key: process.env.MIX_PUSHER_APP_KEY,
-// cluster: process.env.MIX_PUSHER_APP_CLUSTER,
-// forceTLS: true
-// });
diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php
deleted file mode 100644
index 6598e2c..0000000
--- a/resources/lang/en/auth.php
+++ /dev/null
@@ -1,20 +0,0 @@
- 'These credentials do not match our records.',
- 'password' => 'The provided password is incorrect.',
- 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
-
-];
diff --git a/resources/lang/en/pagination.php b/resources/lang/en/pagination.php
deleted file mode 100644
index d481411..0000000
--- a/resources/lang/en/pagination.php
+++ /dev/null
@@ -1,19 +0,0 @@
- '« Previous',
- 'next' => 'Next »',
-
-];
diff --git a/resources/lang/en/passwords.php b/resources/lang/en/passwords.php
deleted file mode 100644
index 2345a56..0000000
--- a/resources/lang/en/passwords.php
+++ /dev/null
@@ -1,22 +0,0 @@
- 'Your password has been reset!',
- 'sent' => 'We have emailed your password reset link!',
- 'throttled' => 'Please wait before retrying.',
- 'token' => 'This password reset token is invalid.',
- 'user' => "We can't find a user with that email address.",
-
-];
diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php
deleted file mode 100644
index 49e3388..0000000
--- a/resources/lang/en/validation.php
+++ /dev/null
@@ -1,155 +0,0 @@
- 'The :attribute must be accepted.',
- 'active_url' => 'The :attribute is not a valid URL.',
- 'after' => 'The :attribute must be a date after :date.',
- 'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
- 'alpha' => 'The :attribute must only contain letters.',
- 'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.',
- 'alpha_num' => 'The :attribute must only contain letters and numbers.',
- 'array' => 'The :attribute must be an array.',
- 'before' => 'The :attribute must be a date before :date.',
- 'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
- 'between' => [
- 'numeric' => 'The :attribute must be between :min and :max.',
- 'file' => 'The :attribute must be between :min and :max kilobytes.',
- 'string' => 'The :attribute must be between :min and :max characters.',
- 'array' => 'The :attribute must have between :min and :max items.',
- ],
- 'boolean' => 'The :attribute field must be true or false.',
- 'confirmed' => 'The :attribute confirmation does not match.',
- 'date' => 'The :attribute is not a valid date.',
- 'date_equals' => 'The :attribute must be a date equal to :date.',
- 'date_format' => 'The :attribute does not match the format :format.',
- 'different' => 'The :attribute and :other must be different.',
- 'digits' => 'The :attribute must be :digits digits.',
- 'digits_between' => 'The :attribute must be between :min and :max digits.',
- 'dimensions' => 'The :attribute has invalid image dimensions.',
- 'distinct' => 'The :attribute field has a duplicate value.',
- 'email' => 'The :attribute must be a valid email address.',
- 'ends_with' => 'The :attribute must end with one of the following: :values.',
- 'exists' => 'The selected :attribute is invalid.',
- 'file' => 'The :attribute must be a file.',
- 'filled' => 'The :attribute field must have a value.',
- 'gt' => [
- 'numeric' => 'The :attribute must be greater than :value.',
- 'file' => 'The :attribute must be greater than :value kilobytes.',
- 'string' => 'The :attribute must be greater than :value characters.',
- 'array' => 'The :attribute must have more than :value items.',
- ],
- 'gte' => [
- 'numeric' => 'The :attribute must be greater than or equal :value.',
- 'file' => 'The :attribute must be greater than or equal :value kilobytes.',
- 'string' => 'The :attribute must be greater than or equal :value characters.',
- 'array' => 'The :attribute must have :value items or more.',
- ],
- 'image' => 'The :attribute must be an image.',
- 'in' => 'The selected :attribute is invalid.',
- 'in_array' => 'The :attribute field does not exist in :other.',
- 'integer' => 'The :attribute must be an integer.',
- 'ip' => 'The :attribute must be a valid IP address.',
- 'ipv4' => 'The :attribute must be a valid IPv4 address.',
- 'ipv6' => 'The :attribute must be a valid IPv6 address.',
- 'json' => 'The :attribute must be a valid JSON string.',
- 'lt' => [
- 'numeric' => 'The :attribute must be less than :value.',
- 'file' => 'The :attribute must be less than :value kilobytes.',
- 'string' => 'The :attribute must be less than :value characters.',
- 'array' => 'The :attribute must have less than :value items.',
- ],
- 'lte' => [
- 'numeric' => 'The :attribute must be less than or equal :value.',
- 'file' => 'The :attribute must be less than or equal :value kilobytes.',
- 'string' => 'The :attribute must be less than or equal :value characters.',
- 'array' => 'The :attribute must not have more than :value items.',
- ],
- 'max' => [
- 'numeric' => 'The :attribute must not be greater than :max.',
- 'file' => 'The :attribute must not be greater than :max kilobytes.',
- 'string' => 'The :attribute must not be greater than :max characters.',
- 'array' => 'The :attribute must not have more than :max items.',
- ],
- 'mimes' => 'The :attribute must be a file of type: :values.',
- 'mimetypes' => 'The :attribute must be a file of type: :values.',
- 'min' => [
- 'numeric' => 'The :attribute must be at least :min.',
- 'file' => 'The :attribute must be at least :min kilobytes.',
- 'string' => 'The :attribute must be at least :min characters.',
- 'array' => 'The :attribute must have at least :min items.',
- ],
- 'multiple_of' => 'The :attribute must be a multiple of :value.',
- 'not_in' => 'The selected :attribute is invalid.',
- 'not_regex' => 'The :attribute format is invalid.',
- 'numeric' => 'The :attribute must be a number.',
- 'password' => 'The password is incorrect.',
- 'present' => 'The :attribute field must be present.',
- 'regex' => 'The :attribute format is invalid.',
- 'required' => 'The :attribute field is required.',
- 'required_if' => 'The :attribute field is required when :other is :value.',
- 'required_unless' => 'The :attribute field is required unless :other is in :values.',
- 'required_with' => 'The :attribute field is required when :values is present.',
- 'required_with_all' => 'The :attribute field is required when :values are present.',
- 'required_without' => 'The :attribute field is required when :values is not present.',
- 'required_without_all' => 'The :attribute field is required when none of :values are present.',
- 'prohibited' => 'The :attribute field is prohibited.',
- 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.',
- 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.',
- 'same' => 'The :attribute and :other must match.',
- 'size' => [
- 'numeric' => 'The :attribute must be :size.',
- 'file' => 'The :attribute must be :size kilobytes.',
- 'string' => 'The :attribute must be :size characters.',
- 'array' => 'The :attribute must contain :size items.',
- ],
- 'starts_with' => 'The :attribute must start with one of the following: :values.',
- 'string' => 'The :attribute must be a string.',
- 'timezone' => 'The :attribute must be a valid zone.',
- 'unique' => 'The :attribute has already been taken.',
- 'uploaded' => 'The :attribute failed to upload.',
- 'url' => 'The :attribute format is invalid.',
- 'uuid' => 'The :attribute must be a valid UUID.',
-
- /*
- |--------------------------------------------------------------------------
- | Custom Validation Language Lines
- |--------------------------------------------------------------------------
- |
- | Here you may specify custom validation messages for attributes using the
- | convention "attribute.rule" to name the lines. This makes it quick to
- | specify a specific custom language line for a given attribute rule.
- |
- */
-
- 'custom' => [
- 'attribute-name' => [
- 'rule-name' => 'custom-message',
- ],
- ],
-
- /*
- |--------------------------------------------------------------------------
- | Custom Validation Attributes
- |--------------------------------------------------------------------------
- |
- | The following language lines are used to swap our attribute placeholder
- | with something more reader friendly such as "E-Mail Address" instead
- | of "email". This simply helps us make our message more expressive.
- |
- */
-
- 'attributes' => [],
-
-];
diff --git a/resources/sass/_footer.scss b/resources/sass/_footer.scss
deleted file mode 100644
index e69de29..0000000
diff --git a/resources/sass/_variables.scss b/resources/sass/_variables.scss
deleted file mode 100644
index 3e3a95e..0000000
--- a/resources/sass/_variables.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-// Body
-$body-bg: #f8fafc;
-
-// Typography
-$font-family-sans-serif: 'Roboto', sans-serif;
-$font-size-base: 0.9rem;
-$line-height-base: 1.6;
-
-// Colors
-$blue: #3490dc;
-$indigo: #6574cd;
-$purple: #9561e2;
-$pink: #f66d9b;
-$red: #e3342f;
-$orange: #f6993f;
-$yellow: #ffed4a;
-$green: #38c172;
-$teal: #4dc0b5;
-$cyan: #6cb2eb;
diff --git a/resources/sass/app.scss b/resources/sass/app.scss
deleted file mode 100644
index 6daad09..0000000
--- a/resources/sass/app.scss
+++ /dev/null
@@ -1,11082 +0,0 @@
-// Fonts
-//@import url('https://fonts.googleapis.com/css?family=Roboto');
-
-// Variables
-@import 'variables';
-
-// Bootstrap
-//@import '~bootstrap/scss/bootstrap';
-
-// FontAwesome
-@import '~@fortawesome/fontawesome-free/scss/fontawesome';
-@import '~@fortawesome/fontawesome-free/scss/regular';
-@import '~@fortawesome/fontawesome-free/scss/solid';
-@import '~@fortawesome/fontawesome-free/scss/brands';
-
-// Footer
-@import 'footer';
-
-// hacked by ray!!!
-.-mb-2 {
- margin-bottom: -0.5rem !important;
-}
-
-.-mx-2, .-m-2 {
- margin-left: -0.5rem !important;
- margin-right: -0.5rem !important;
-}
-
-.-my-2, .-m-2 {
- margin-top: -0.5rem !important;
- margin-bottom: -0.5rem !important;
-}
-
-// Roblox CSS below
-body {
- font: normal 8pt/normal Verdana, sans-serif;
- margin: 0;
- text-transform: none;
- text-decoration: none;
- background: #F8FCFF url(/images/bg_gradient.jpg) repeat-x;
-}
-
-a {
- text-decoration: none;
-}
-
-a img {
- border: none;
-}
-
-a:link,
-a:visited,
-a:active {
- color: #00F;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-abbr,
-acronym {
- cursor: help;
- border-bottom: 1px dotted #000;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
- margin: 0;
- padding: 0;
- font-size: 100%;
- font-weight: inherit;
- display: inline-block;
- *display: inline;
-}
-
-pre {
- white-space: pre-wrap;
- white-space: -moz-pre-wrap!important;
- white-space: -pre-wrap;
- white-space: -o-pre-wrap;
- word-wrap: break-word;
-}
-
-input.Text {
- border-color: #777;
- border-style: dashed;
-}
-
-.AdminPanel {
- border-color: Orange;
- border-style: dotted;
- padding: 10px;
-}
-
-.ImageButton {
- cursor: pointer;
- padding: 0;
- border: 0;
- text-decoration: none;
- margin: 0;
- display: inline-block;
-}
-
-.Button {
- cursor: pointer;
- background-color: #fff;
- border: solid 1px #333;
- color: #333;
- font-family: Verdana, Sans-Serif;
- font-size: .9em;
- padding: 3px 10px 3px 10px;
- text-decoration: none;
-}
-
-.Button:link,
-.Button:visited {
- border: solid 1px #777;
- color: #777;
-}
-
-.Button:hover,
-.Button:active {
- background-color: #6e99c9;
- border: solid 1px #000;
- color: #fff;
-}
-
-.Bullet {
- float: left;
- margin-right: 10px;
- margin-bottom: 4px;
-}
-
-.Ads_RightSidebar {
- border: solid 1px #000;
- float: right;
- text-align: right;
- width: 160px;
-}
-
-.Legalese {
- font-size: 7pt;
-}
-
-#Container {
- margin: 0 auto;
- padding: 0 10px;
- border-left: 5px solid #DDD;
- border-right: 5px solid #DDD;
- width: 900px;
- background: #e5f1fd;
-}
-
-#Header {
- margin: 0 auto;
- color: White;
- font: normal 12px/normal Verdana, sans-serif;
- font-weight: bold;
- width: 900px;
- text-align: center;
-}
-
-#Header a,
-#Header a:visited,
-#Header a:active {
- text-decoration: none;
-}
-
-#Header a:hover {
- text-decoration: underline;
-}
-
-#Banner {
- background-image: url(/images/WoodBanner.png);
- background-repeat: no-repeat;
- height: 72px;
- text-align: center;
-}
-
-#Banner #Options {
- float: left;
- height: 72px;
- position: relative;
- overflow: hidden;
- width: 200px;
-}
-
-#Banner #Authentication {
- top: 0;
- left: 0;
- padding: 4px;
- position: absolute;
- background: #6E99C9;
-}
-
-#Banner #Options #Settings {
- bottom: 0;
- left: 0;
- padding: 4px;
- position: absolute;
-}
-
-#Banner #Logo {
- float: left;
- margin: 7px 0;
- text-align: center;
- width: 293px;
- height: 58px;
-}
-
-#Banner #Alerts {
- float: right;
- border: 1px solid #6E99C9;
- background: #FFF;
- width: 203px;
-}
-
-#Header .Navigation {
- clear: both;
- background-color: #6e99c9;
- color: #fff;
- font-family: Arial, Helvetica, sans-serif;
- font-size: 12pt;
- font-weight: normal;
- line-height: 2em;
- text-decoration: none;
-}
-
-#AdvertisingLeaderboard {
- margin: 0 auto;
- margin-bottom: 5px;
- text-align: center;
- width: 898px;
-}
-
-#AdvertisingSkyscraper {
- border: solid 1px #000;
- float: right;
- text-align: right;
- width: 120px;
-}
-
-#RobloxLargeRectangleAd {
- padding: 10px 0 10px 0;
-}
-
-#MasterContainer {
- background: transparent url(/images/bg_clouds.jpg) no-repeat scroll center top;
- width: 100%;
- overflow: auto;
-}
-
-#Body {
- width: 900px;
-}
-
-#Footer {
- font: normal 8px/normal Verdana, sans-serif;
- padding: 3em 20px;
- width: 860px;
- text-align: center;
- font-size: 13px;
- margin: 0;
-}
-
-#Footer .SEOGenreLinks {
- padding: 1em 0 2em 0;
- font-size: 11px;
-}
-
-#Footer .Legalese {
- color: #555;
- font-size: 10px;
- margin-bottom: 1em;
-}
-
-.AdmiPanel {
- border: solid 1px #000;
- bottom: 20px;
- height: 200px;
- overflow: hidden;
- right: 10px;
- padding-top: 15px;
- position: fixed;
- width: 200px;
-}
-
-.AdmiPanel h4 {
- background-color: #ccc;
- border-bottom: solid 1px #000;
- color: #333;
- margin: 0;
- text-align: center;
-}
-
-.AdmiPanelExpandCollapse {
- color: green;
- cursor: pointer;
- font-weight: bolder;
- position: absolute;
- right: 2px;
- top: 2px;
-}
-
-.Panel {
- border: solid 1px #000;
-}
-
-.Panel h4 {
- background-color: #ccc;
- border-bottom: solid 1px #000;
- color: #333;
- margin: 0;
- text-align: center;
-}
-
-.MultilineTextBox {
- border: dashed 2px Gray;
- font-family: Verdana, Sans-Serif;
- font-size: 1.2em;
- line-height: 1.5em;
- padding: 5px 5px;
-}
-
-.TextBox {
- border: 1px solid #ccc;
- font-family: Verdana, Sans-Serif;
- font-size: 1.2em;
- padding: 5px;
-}
-
-.Label {
- font-weight: bold;
-}
-
-.BigButton {
- background-color: #F5CD2F;
- color: #000;
- height: 2.5em;
- font-family: Verdana, Helvetica, Sans-Serif;
- font-size: 20px;
- font-weight: bold;
-}
-
-.ErrorReporting,
-.ErrorReportingThanks {
- width: 500px;
- margin: 16px auto 16px auto;
- padding: 10px;
-}
-
-.YesNoButtons {
- text-align: right;
-}
-
-.YesButton,
-.NoButton {
- background-color: #F5CD2F;
- color: #000;
- margin-left: 10px;
-}
-
-.popupControl {
- background-color: #fff;
- border: 1px outset #fff;
- position: absolute;
- visibility: hidden;
-}
-
-.ColorPickerItem {
- border-color: #fff;
- border-style: solid;
- border-width: 2px;
-}
-
-.ColorPickerItem:hover {
- border-color: Blue;
- border-style: solid;
- border-width: 2px;
-}
-
-.modalBackground {
- background-color: Gray;
- filter: alpha(opacity=30);
- opacity: .3;
-}
-
-.modalPopup {
- background-color: #ffd;
- border-width: 3px;
- border-style: solid;
- border-color: Gray;
- padding: 3px;
-}
-
-.newModalPopup {
- padding: 3px;
-}
-
-.GuestModePromptText {
- font-size: 14px;
- color: #333;
- margin-left: 30px;
-}
-
-.GuestModePromptText li {
- font-weight: bolder;
-}
-
-.PopupMenu {
- background-color: #fff;
- border: solid 1px #666;
- padding: 10px;
- z-index: 1;
-}
-
-.PopupMenu .Button {
- line-height: 2.5em;
-}
-
-.PopupMenu .Button:hover {
- background-color: #6e99c9;
- color: #fff;
-}
-
-.Attention {
- color: Red;
-}
-
-.OKCancelButton {
- width: 80px;
-}
-
-.MenuItem {
- color: White;
- font-size: 18px;
- line-height: 2em;
-}
-
-a.MenuItem:link,
-a.MenuItem:visited,
-a.MenuItem:active {
- color: White;
- text-decoration: none;
-}
-
-a.MenuItem:hover {
- text-decoration: underline;
-}
-
-.Toolbox {
- background-color: ButtonFace;
- padding: 2px;
-}
-
-.ToolboxItem {
- border-color: Window;
- border-style: solid;
- border-width: 2px;
- width: 52px;
- height: 52px;
-}
-
-.Grid {
- background-color: White;
- border-color: #CCC;
- border-width: 1px;
- border-style: solid;
-}
-
-.GridHeader {
- color: White;
- background-color: #6E99C9;
-}
-
-.GridItem {
- color: #006;
-}
-
-.GridItemAlt {
- color: #006;
- background: #EEE;
-}
-
-.GridItem:hover {
- background-color: #DDD;
-}
-
-.GridItemAlt:hover {
- background-color: #DDD;
-}
-
-.GridFooter {
- color: White;
- background-color: #6E99C9;
-}
-
-.GridPager {
- color: White;
- background-color: #6E99C9;
- text-align: center;
- font-weight: bold;
-}
-
-.Title {
- font-size: 18px;
-}
-
-a.Title:link,
-a.Title:visited,
-a.Title:active {
- text-decoration: none;
-}
-
-a.Title:hover {
- text-decoration: underline;
-}
-
-.Header {
- font-size: 14px;
-}
-
-.Banner {
- padding: 8px;
-}
-
-.BannerText {
- font-weight: bold;
- color: white;
-}
-
-a.BannerText:link,
-a.BannerText:visited,
-a.BannerText:active {
- text-decoration: none;
- color: white;
-}
-
-a.BannerText:hover {
- text-decoration: underline;
- color: white;
-}
-
-.PageSelector {
- font-family: Verdana, Sans-Serif;
- margin: 0 0 0 10px;
-}
-
-.PageSelector label {
- font-weight: bold;
-}
-
-.DisplayFilters {
- margin-right: 3px;
- min-width: 0;
- position: relative;
-}
-
-.SearchBar {
- background-color: #eee;
- border: solid 1px #bbb;
- height: 30px;
- margin: -5px 0 5px 0;
- padding: 0;
- text-align: center;
-}
-
-.SearchBar .SearchBox,
-.SearchBar .SearchButton {
- height: 30px;
- margin: 0;
- padding: 0;
-}
-
-.SearchBar .TextBox {
- border: solid 1px #000;
- height: 19px;
- margin: 2px 0 0 0;
- padding: 2px 3px 0 3px;
- width: 250px;
-}
-
-.SearchLinks {
- display: inline;
- font-family: Verdana, Sans-Serif;
- z-index: 9;
-}
-
-.SearchLinks a span {
- display: none;
-}
-
-.SearchLinks a:hover {
- border: none;
- text-decoration: none;
-}
-
-.SearchLinks a:hover span {
- background-color: #6e99c9;
- border-color: Gray;
- border-style: ridge;
- border-width: 1px;
- color: white;
- display: block;
- font: 11px Verdana, sans-serif;
- left: 15%;
- line-height: 1.4em;
- margin: 5px;
- padding: 5px;
- position: absolute;
- text-align: center;
- text-decoration: none;
- top: 20px;
- width: 60%;
- z-index: 10;
-}
-
-.SearchError {
- clear: both;
- margin: 2px;
- float: none;
- padding: 2px;
- text-align: center;
- color: Red;
-}
-
-.SystemAlert {
- background-color: #FFF;
- text-align: center;
- color: #FFF;
- border: 2px solid #000;
- padding: 1px;
-}
-
-.SystemAlertText {
- font-size: 16px;
- font-weight: bold;
- background-color: #F00;
- padding: 2px;
-}
-
-.SystemAlert a {
- color: White;
-}
-
-.Exclamation {
- background: url(/images/Icons/exclamation.png) no-repeat;
- height: 16px;
- width: 16px;
- float: left;
-}
-
-.EmailTemplateTable {
- border-collapse: collapse;
-}
-
-.EmailTemplateH1 {
- font-size: 18px;
- color: #6E99C9;
-}
-
-.EmailTemplateLogoRow {
- padding: 3px;
- margin-bottom: 5px;
-}
-
-.EmailTemplateRow {
- padding: 3px;
- margin-bottom: 3px;
- font-size: 14px;
- font-family: Verdana, Helvetica, Sans-Serif;
-}
-
-.EmailTemplateRow input {
- font-size: 14px;
- padding: 2px;
- border: 1px solid #CCC;
-}
-
-.EmailTemplateRow input:hover {
- font-size: 14px;
- padding: 2px;
- border: 1px solid #CCC;
- background: #6E99C9;
-}
-
-.subMenu {
- background: #A3514F;
- background-repeat: repeat-x;
- color: White;
- font-family: Arial, Helvetica, Sans-Serif;
- font-size: 14px;
- height: 26px;
- position: relative;
- border-left: solid 3px #6E99C9;
- border-right: solid 3px #6E99C9;
- border-bottom: solid 3px #6E99C9;
- z-index: 5;
-}
-
-.subMenu ul {
- padding: 0;
- margin: 0;
- list-style-type: none;
-}
-
-.subMenu li {
- float: left;
- position: relative;
-}
-
-.subMenu a,
-.subMenu a:visited {
- display: block;
- padding: 5px;
- border-right: 1px solid #FFF;
- font-size: 14px;
- color: #FFF;
-}
-
-.subMenu .subMenuItemselected {
- display: block;
- padding: 5px;
- border-right: 1px solid #FFF;
- font-size: 14px;
- color: #FFF;
- font-weight: bold;
- text-decoration: none;
-}
-
-.subMenu ul ul a.subMenudrop,
-.menu ul ul a.subMenudrop:visited {
- font-weight: bold;
- text-decoration: underline;
-}
-
-.subMenu ul ul ul a,
-.subMenu ul ul ul a:visited {
- background: #A3514F;
-}
-
-.subMenu ul ul ul a:hover {
- text-decoration: underline;
-}
-
-.subMenu ul ul {
- visibility: hidden;
- position: absolute;
- height: 0;
- left: 0;
-}
-
-.subMenu ul ul ul {
- left: 141px;
- top: 0;
- width: 149px;
-}
-
-.subMenu ul ul ul.left {
- left: -149px;
-}
-
-.subMenu ul ul a,
-.subMenu ul ul a:visited {
- background: #A3514F;
- color: #FFF;
- height: auto;
- padding: 4px 6px;
- line-height: 1em;
- width: 148px;
- margin-left: -1px;
- border-left: 1px solid #FFF;
- border-right: none;
-}
-
-.subMenu a:hover,
-.subMenu ul ul a:hover {
- text-decoration: underline;
- background: #573333;
-}
-
-.subMenu :hover>a,
-.subMenu ul ul :hover>a {
- text-decoration: underline;
-}
-
-.subMenu ul li:hover ul,
-.subMenu ul a:hover ul {
- visibility: visible;
-}
-
-.subMenu ul :hover ul ul {
- visibility: hidden;
-}
-
-.subMenu ul :hover ul :hover ul {
- visibility: visible;
-}
-
-.subMenu table {
- position: absolute;
- top: 0;
- margin-top: 15px;
- left: 0;
- border-collapse: collapse;
- background: #A3514F;
- display: none;
-}
-
-.subMenu table a,
-.subMenu table a:visited {
- border: none;
- width: 148px;
- padding-top: 8px;
-}
-
-#LeftGutterAdContainer {
- position: fixed;
- top: 0;
- left: 50%;
- margin-left: -850px;
-}
-
-#RightGutterAdContainer {
- position: fixed;
- top: 0;
- left: 50%;
- margin-left: 450px;
-}
-
-.partnerLogo {
- margin-right: 30px;
- vertical-align: middle;
-}
-
-.errorMsg {
- font-weight: bold;
- text-align: center;
- display: block;
- font-size: 1.5em;
- margin: .83em 0;
- letter-spacing: 1px;
-}
-
-.facepile {
- min-height: 0;
-}
-
-body {
- margin: 0;
- padding: 0;
- background: url(/images/css/bkg.jpg) top center repeat-x #000444;
- font-family: Arial, Helvetica, sans-serif;
- color: black;
- font-size: 12px;
-}
-
-a {
- text-decoration: none;
- color: #00f;
-}
-
-a:hover,
-a:active {
- text-decoration: underline;
-}
-
-a.green {
- color: #080;
-}
-
-a.green:hover {
- color: #0c0;
-}
-
-a img {
- border: none;
-}
-
-#Header a:hover {
- text-decoration: none;
-}
-
-#MasterContainer {
- background-image: none;
-}
-
-#Container {
- background: Transparent;
- border: none;
-}
-
-#HeaderContainer {
- position: relative;
- margin: 0;
- padding: 0;
- width: 900px;
- height: 225px;
- background: url(/images/css/head_03.png) repeat scroll 0 0 transparent;
- background-position: 0 0;
- background-repeat: no-repeat;
- z-index: 6;
-}
-
-#Banner {
- height: 100px;
- background: none;
- position: relative;
- bottom: 0;
-}
-
-#Banner #Logo {
- height: 70px;
- left: 275px;
- position: absolute;
- top: 10px;
- width: 350px;
- margin: 0;
- float: none;
-}
-
-#Header .headLink {
- position: absolute;
- top: 4px;
- left: 278px;
- width: 348px;
- height: 88px;
-}
-
-#Banner #Authentication {
- position: relative;
- top: 0;
- margin: 0;
- height: 28px;
- font-family: Arial, Helvetica, sans-serif;
- font-size: 12px;
- font-weight: normal;
- color: Black;
- float: left;
- background: url(/images/css/head_bkg_t1.png) no-repeat left top;
- padding: 0 0 0 2px;
-}
-
-#Banner #Authentication #AuthenticationBannerSpan {
- background: url(/images/css/head_bkg_t2.png) no-repeat scroll right top transparent;
- display: block;
- height: 28px;
- padding: 6px 10px 0;
-}
-
-#Banner #Authentication a {
- height: 18px;
- background: url(/images/css/btn_blue18h.png) repeat-x;
- background-position: 0 0;
- margin: 0 5px;
- font-weight: bold;
- font-size: 10px;
- padding: 2px 5px;
-}
-
-#Banner #Authentication a:hover {
- background-position: 0 -18px;
-}
-
-#Banner #Alerts {
- background: Transparent;
- border: none;
- position: absolute;
- width: 147px;
- height: 81px;
- bottom: 0;
- right: 3px;
- float: none;
-}
-
-#Body {
- margin: 0;
- padding: 5px;
- width: 890px;
- background: url(/images/css/containerBkg_01.png);
- _overflow: hidden;
-}
-
-.favorited,
-.notFavorited {
- background: url(/images/css/favoriteStar_20h.png) no-repeat 0 -20px;
- width: 21px;
- height: 20px;
- margin: 0;
- display: inline-block;
- position: relative;
- top: 3px;
- *display: inline;
- *zoom: 1;
-}
-
-.notFavorited {
- background-position: 0 0;
-}
-
-#Footer {
- background: #e6e6e6;
- text-align: center;
- font-size: 13px;
- color: #aaa;
- margin: 0;
- padding: 3em 20px;
- width: 860px;
-}
-
-#Footer .FooterNav {
- color: #bbb;
-}
-
-#Footer .SEOGenreLinks {
- padding: 1em 0 2em 0;
- font-size: 11px;
-}
-
-#Footer .Legalese {
- font-size: 10px;
- margin-bottom: 1em;
-}
-
-#Footer .Legalese p {
- margin: 0;
- padding: 0;
-}
-
-.blueAndWhite {
- border: 2px solid #6e99c9;
- background-color: #fff;
- color: #000;
-}
-
-.blueAndWhite .titleBar {
- background-color: #000;
- color: #FFF;
- font-weight: bold;
- padding: 2px 2px 2px 2px;
- margin-bottom: 5px;
- font-size: 13px;
-}
-
-#ResetPassword,
-#ResetPassword input {
- font-size: 16px;
-}
-
-#ResetPassword #ResetPasswordTable td {
- padding: 5px;
-}
-
-.ParentsLearningContent {
- font-size: 14px;
-}
-
-.ParentsLearningContent .ParentsLearningHeader {
- text-decoration: none;
-}
-
-.StandardBoxLight {
- float: inherit;
- border: 1px solid #3B526B;
- padding: 10px 10px 10px 10px;
- margin-bottom: 10px;
- display: block;
-}
-
-.StandardBoxLightHeader {
- float: inherit;
- background-color: #3B526B;
- text-align: center;
- color: #FFF;
- text-align: left;
- font-size: 16px;
- font-weight: bold;
- padding: 5px 10px 5px 20px;
- display: block;
-}
-
-.ParentsLearningContent .StandardBoxLightHeader {
- margin: 10px 0;
-}
-
-.LoginParentAccount {
- text-align: left;
-}
-
-.ParentsControlPanel,
-.ParentsControlPanel input {
- font-size: 14px;
-}
-
-.ParentsControlPanelTable table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-
-.ParentsControlPanelTable table td,
-.ParentsControlPanelTable table th {
- border: 1px solid #EEE;
- padding: 5px;
-}
-
-.ParentsControlPanelTable table tr:first-child td,
-.ParentsControlPanelTable table tr:first-child th {
- border-top: 0;
-}
-
-.ParentsControlPanelTable table tr:last-child td {
- border-bottom: 0;
-}
-
-.ParentsControlPanelTable table tr td:first-child,
-.ParentsControlPanelTable table tr th:first-child {
- border-left: 0;
-}
-
-.ParentsControlPanelTable table tr td:last-child,
-.ParentsControlPanelTable table tr th:last-child {
- border-right: 0;
-}
-
-.ContinueButtonFix {
- text-align: center;
-}
-
-.ParentCenterAlignedTable table {
- margin: 0 auto;
-}
-
-.JustWhiteBox {
- float: inherit;
- background-color: White;
- margin-bottom: 10px;
- display: block;
-}
-
-.MediumButton {
- background-color: #F5CD2F;
- color: #000;
- font-family: Verdana, Helvetica, Sans-Serif;
- font-size: 15px;
- font-weight: bold;
- padding: 5px;
- display: inline-block;
- border: 1px solid #6E99C9;
- text-align: center;
- cursor: pointer;
-}
-
-.MediumButton:hover {
- background-color: #FF9D2F;
-}
-
-.MediumButtonSignup {
- background-color: #8CE16F;
- color: #000;
- height: 2.5em;
- font-family: Verdana, Helvetica, Sans-Serif;
- font-size: 15px;
- font-weight: bold;
-}
-
-.catalog_nav {
- color: White;
- font-family: Arial, Helvetica, Sans-Serif;
- font-size: 14px;
- position: relative;
- z-index: 5;
- float: right;
-}
-
-.catalog_nav ul {
- padding: 0;
- margin: 0;
- list-style-type: none;
-}
-
-.catalog_nav li {
- float: left;
- position: relative;
- text-align: center;
-}
-
-.catalog_nav a,
-.catalog_nav a:visited {
- background: #b9cee5 url(/images/tabmiddle.png) repeat-x;
- display: block;
- padding: 5px;
- margin-right: 4px;
- font-size: 14px;
- color: #FFF;
- height: 18px;
- cursor: pointer;
-}
-
-.catalog_nav .catalog_navselected {
- display: block;
- background: #6E99C9 url(/images/tabmiddleselected.png) repeat-x;
- padding: 5px 10px;
- margin-right: 4px;
- font-size: 14px;
- color: #FFF;
- font-weight: bold;
- text-decoration: none;
- height: 18px;
-}
-
-.catalog_nav ul ul a.catalog_navdrop,
-t.menu ul ul a.catalog_navdrop:visited {
- font-weight: bold;
- text-decoration: none;
-}
-
-.catalog_nav ul ul ul a:hover {
- text-decoration: underline;
-}
-
-.catalog_nav ul ul {
- visibility: hidden;
- position: absolute;
- height: 0;
- left: 0;
- z-index: 20;
-}
-
-.catalog_nav ul ul ul {
- left: 141px;
- top: 0;
- width: 89px;
-}
-
-.catalog_nav ul ul ul.left {
- left: -149px;
-}
-
-.catalog_nav ul ul a,
-.catalog_nav ul ul a:visited {
- color: #FFF;
- background: #6E99C9;
- height: auto;
- padding: 4px 6px;
- line-height: 1em;
- width: 78px;
- margin-right: 4px;
- z-index: 20;
- height: 18px;
-}
-
-.catalog_nav img {
- border: 0;
- margin-right: 3px;
- vertical-align: middle;
-}
-
-.catalog_nav a:hover {
- text-decoration: none;
- background: #6E99C9 url(/images/tabmiddleselected.png) repeat-x;
-}
-
-.catalog_nav ul ul a:hover {
- text-decoration: none;
- background: #517194;
-}
-
-.catalog_nav :hover>a,
-.catalog_nav ul ul :hover>a {
- text-decoration: none;
-}
-
-.catalog_nav ul li:hover ul,
-.catalog_nav ul a:hover ul {
- visibility: visible;
-}
-
-.catalog_nav ul :hover ul ul {
- visibility: hidden;
-}
-
-.catalog_nav ul :hover ul :hover ul {
- visibility: visible;
-}
-
-.catalog_nav table {
- position: absolute;
- top: 0;
- margin-top: 15px;
- left: 0;
- border-collapse: collapse;
- background: #6E99C9;
- display: none;
-}
-
-.catalog_nav table a,
-.catalog_nav table a:visited {
- border: none;
- width: 78px;
- padding-top: 8px;
-}
-
-.Step1 {
- float: left;
- font-size: 16px;
- font-weight: bold;
- background: url(/images/step1.png) no-repeat 0;
- line-height: 32px;
- padding-left: 32px;
-}
-
-.Step2 {
- float: left;
- font-size: 16px;
- font-weight: bold;
- background: url(/images/step2.png) no-repeat 0;
- line-height: 32px;
- padding-left: 32px;
-}
-
-.Step3 {
- float: left;
- font-size: 16px;
- font-weight: bold;
- background: url(/images/step3.png) no-repeat 0;
- line-height: 32px;
- padding-left: 32px;
-}
-
-.CatalogOptions {
- float: left;
- padding: 20px;
- background: #8bc2ff url(/images/catalog_options_back.png) repeat-x;
- border: 0;
- margin-bottom: 0;
- display: none;
- width: 176px;
- overflow: hidden;
-}
-
-#ApplyFilters input {
- font-size: 17px;
- cursor: pointer;
-}
-
-.CatalogOptionsSections {
- float: left;
- margin: 5px 20px 0 5px;
-}
-
-.CatalogOptionsHelp {
- margin-top: -5px;
- float: left;
-}
-
-.CatalogOptionsHelp ul {
- list-style: none;
-}
-
-.CatalogOptionsHelp ul li {
- margin-top: 3px;
-}
-
-.CatalogOptionsHelp ul li a {
- background: url(/images/smallmetallicbutton.png) repeat-x;
- border: 2px solid transparent;
- padding: 3px;
- font-size: 12px;
- cursor: pointer;
- text-decoration: none;
- display: block;
- width: 120px;
- text-align: center;
-}
-
-.CatalogOptionsHelp ul li a:hover {
- border-color: #333;
-}
-
-.bc_iconset,
-#BuildersClubContainer div.icons {
- background-image: url(/images/bc_page_icon_sprites.png);
- background-repeat: no-repeat;
- width: 32px;
- display: inline-block;
- text-align: center;
-}
-
-#BuildersClubContainer div.maps_icon {
- background-position: 0 1px;
- height: 30px;
-}
-
-#BuildersClubContainer div.money_icon {
- background-position: 0 -28px;
- height: 28px;
-}
-
-#BuildersClubContainer div.shirt_icon {
- background-position: 0 -55px;
- height: 30px;
-}
-
-#BuildersClubContainer div.ads_icon {
- background-position: 0 -85px;
- height: 30px;
-}
-
-.bc_icon,
-#BuildersClubContainer div.bc_icon {
- background-position: 0 -115px;
- height: 31px;
-}
-
-#BuildersClubContainer div.gear_icon {
- background-position: 0 -146px;
- height: 30px;
-}
-
-#BuildersClubContainer div.groups_icon {
- background-position: 0 -173px;
- height: 23px;
-}
-
-#BuildersClubContainer div.badges_icon {
- background-position: 0 -196px;
- height: 30px;
-}
-
-#BuildersClubContainer div.beta_icon {
- background-position: 0 -228px;
- height: 31px;
-}
-
-#BuildersClubContainer div.tbc_icon {
- background-position: 0 -263px;
- height: 31px;
-}
-
-#BuildersClubContainer div.obc_icon {
- background-position: 0 -297px;
- height: 31px;
-}
-
-#BuildersClubContainer div.upgrades_enabled {
- background-image: url(/images/buybc/bc_sprites_math_enabled.png);
- background-repeat: no-repeat;
- display: inline-block;
- height: 95px;
- width: 128px;
-}
-
-#BuildersClubContainer div.upgrades_disabled {
- background-image: url(/images/buybc/bc_sprites_math_disabled.png);
- background-repeat: no-repeat;
- display: inline-block;
- height: 95px;
- width: 128px;
-}
-
-#BuildersClubContainer div.bcmonthly {
- background-position: 0 0;
-}
-
-#BuildersClubContainer div.bc6 {
- background-position: -128px 0;
-}
-
-#BuildersClubContainer div.bc12 {
- background-position: -256px 0;
-}
-
-#BuildersClubContainer div.bclife {
- background-position: -384px 0;
-}
-
-#BuildersClubContainer div.tbcmonthly {
- background-position: 0 -95px;
-}
-
-#BuildersClubContainer div.tbc6 {
- background-position: -128px -95px;
-}
-
-#BuildersClubContainer div.tbc12 {
- background-position: -256px -95px;
-}
-
-#BuildersClubContainer div.tbclife {
- background-position: -384px -95px;
-}
-
-#BuildersClubContainer div.obcmonthly {
- background-position: 0 -191px;
-}
-
-#BuildersClubContainer div.obc6 {
- background-position: -128px -191px;
-}
-
-#BuildersClubContainer div.obc12 {
- background-position: -256px -191px;
-}
-
-#BuildersClubContainer div.obclife {
- background-position: -384px -191px;
-}
-
-#BuildersClubContainer .bctotbcconversion {
- background-image: url(/images/BuyBC/bc_lifetime_tbc_lifetime_discount.png);
- background-repeat: no-repeat;
- height: 95px;
- width: 128px;
-}
-
-#BuildersClubContainer .bctoobcconversion {
- background-image: url(/images/BuyBC/bc_lifetime_obc_lifetime_discount.png);
- background-repeat: no-repeat;
- height: 95px;
- width: 128px;
-}
-
-#BuildersClubContainer .tbctoobcconversion {
- background-image: url(/images/BuyBC/tbc_lifetime_obc_lifetime_discount.png);
- background-repeat: no-repeat;
- height: 95px;
- width: 128px;
-}
-
-#BuildersClubContainer upgrade_button {
- cursor: pointer;
-}
-
-.OBCSellSheet ul {
- list-style: armenian;
- width: 500px;
-}
-
-.OBCSellSheet ul li {
- padding: 10px;
- border-bottom: 1px solid #abc;
- position: relative;
-}
-
-.OBCSellSheet ul li em {
- -moz-background-clip: border;
- -moz-background-inline-policy: continuous;
- -moz-background-origin: padding;
- background: transparent url(/images/obctip.png) no-repeat scroll 0 0;
- display: none;
- font-style: normal;
- height: 45px;
- left: -10px;
- padding: 15px 0;
- position: absolute;
- text-align: center;
- top: -40px;
- width: 300px;
- z-index: 2;
- color: #FFF;
-}
-
-.hoverover {
- cursor: pointer;
-}
-
-.AlertSpace {
- color: #6e99c9;
- margin: 0 auto;
-}
-
-div.icons,
-a.icons {
- background-image: url(/images/master_page_image_sprites.png?v=1202010);
- background-repeat: no-repeat;
- display: inline-block;
- vertical-align: middle;
-}
-
-div.message_icon {
- background-position: -65px 0;
- height: 11px;
- width: 13px;
- margin: 3px;
- float: left;
-}
-
-div.robux_icon {
- background-position: -33px 0;
- height: 12px;
- width: 16px;
- margin: 3px;
- float: left;
-}
-
-div.tickets_icon {
- background-position: -49px 0;
- height: 16px;
- width: 16px;
- margin: 3px;
- float: left;
-}
-
-div.friends_icon {
- background-position: -78px 0;
- height: 14px;
- width: 12px;
- margin: 3px;
- float: left;
-}
-
-a.rss_icon {
- background-position: 0 0;
- height: 14px;
- width: 14px;
-}
-
-a.twitter_icon {
- background-position: -14px 0;
- height: 16px;
- width: 19px;
-}
-
-div.MessageAlert {
- height: 17px;
- vertical-align: middle;
- width: 49%;
- float: left;
- height: 32px;
- overflow: hidden;
- background: #FFF;
-}
-
-div.MessageAlert a:hover {
- color: #1874CD;
-}
-
-div.RobuxAlert {
- padding-top: 2px;
- vertical-align: middle;
- width: 49%;
- float: left;
- overflow: hidden;
- border-top: 1px solid #6E99C9;
- background: #FFF;
- height: 29px;
-}
-
-div.RobuxAlert a {
- color: Green;
- vertical-align: middle;
-}
-
-div.RobuxAlert a:hover {
- color: #49b745;
-}
-
-div.TicketsAlert {
- padding-top: 2px;
- vertical-align: middle;
- width: 49%;
- float: left;
- overflow: hidden;
- border-left: 1px solid #6E99C9;
- border-top: 1px solid #6E99C9;
- background: #FFF;
- height: 29px;
-}
-
-div.TicketsAlert a:hover {
- color: #FF3000;
-}
-
-div.FriendsAlert {
- color: #883000;
- height: 20px;
- vertical-align: middle;
- width: 49%;
- float: left;
- height: 32px;
- overflow: hidden;
- border-left: 1px solid #6E99C9;
- background: #FFF;
-}
-
-div.FriendsAlert a {
- color: #883000;
- vertical-align: middle;
-}
-
-div.FriendsAlert a:hover {
- color: #00D;
-}
-
-a.MessageAlertCaption {
- color: #6e99c9;
- vertical-align: middle;
- font-weight: bold;
-}
-
-a.RobuxAlertCaption {
- color: Green;
- vertical-align: middle;
- font-weight: bold;
-}
-
-a.TicketsAlertCaption {
- color: #fbb117;
- vertical-align: middle;
- font-weight: bold;
-}
-
-a.FriendsAlertCaption {
- color: #883000;
- vertical-align: middle;
- font-weight: bold;
-}
-
-#Authentication span a {
- color: #FFF;
-}
-
-.MySetsDisplayInfo {
- padding: 10px 20px 10px 20px;
- background: #8bc2ff url(/images/catalog_options_back.png) repeat-x;
- border: 0;
- margin-bottom: 0;
- overflow: hidden;
- height: 125px;
-}
-
-.MySetsDisplayInfo h1 {
- margin: 0;
- padding: 0;
- text-align: center;
- color: White;
- font-size: 16px;
- font-weight: bold;
-}
-
-.MySetsDisplayInfo h1>a {
- cursor: pointer;
- color: Blue;
- font-size: 12px;
- font-style: italic;
- margin-left: 5px;
-}
-
-.CreateSetButton {
- cursor: pointer;
- text-decoration: none;
-}
-
-.SetAddButton {
- margin-bottom: 3px;
- cursor: pointer;
- height: 16px;
- display: block;
- font-size: 12px;
- overflow: hidden;
- width: 100px;
-}
-
-.CreateSetButton:hover,
-.SetAddButton:hover {
- background-color: Gray;
-}
-
-.SetAddButtonAlreadyContainsItem {
- margin-bottom: 3px;
- height: 16px;
- display: block;
- width: 100%;
- cursor: default;
- color: #ddd;
- font-style: italic;
- font-size: 12px;
- background: url(/images/accept.png) no-repeat center left;
- background-position: 1px 0;
- padding-left: 18px;
- width: 92px;
- overflow: hidden;
-}
-
-.CantAddToSetLabel {
- float: left;
- width: 75px;
-}
-
-.CantAddToSetHelpImg {
- float: left;
- vertical-align: text-top;
- cursor: pointer;
-}
-
-.SetDescription {
- float: left;
- overflow-y: auto scroll;
- overflow-x: hidden;
-}
-
-.SetList {
- z-index: 10;
- height: 0;
- float: left;
- width: 0;
-}
-
-.friendBarDropDown {
- position: absolute;
- margin-top: 0;
- margin-left: 28px;
- z-index: 10;
-}
-
-.SetList>img {
- position: relative;
- float: left;
- z-index: 10;
- width: 20px;
- cursor: pointer;
- top: 5px;
- left: 5px;
-}
-
-.CantAddToSetLabel,
-.SetListDropDownList {
- float: left;
- position: relative;
- top: -18px;
- left: 20px;
- z-index: 11;
- display: block;
-}
-
-.CantAddToSetLabel,
-.SetListDropDownList {
- background: #6e99c9;
- width: 100px;
- border: 3px solid #C6D9FD;
- padding: 3px;
-}
-
-.SetListDropDown,
-.friendBarDropDownList {
- display: none;
- float: left;
- z-index: 10;
- height: 0;
-}
-
-.friendBarDropDownList {
- position: relative;
- height: 100%;
- width: 120px;
- border: 1px solid black;
-}
-
-.friendBarDropDownList>ul {
- list-style: none outside none;
- margin: 0;
- padding-left: 0;
-}
-
-.friendBarDropDownList li {
- background-color: White;
- color: Black;
- cursor: default;
- float: left;
- position: relative;
- list-style: none;
- display: block;
- z-index: 11;
- height: 18px;
-}
-
-.friendBarDropDownList li>div {
- margin: 2px;
- width: 116px;
-}
-
-.friendBarDropDownList li:hover {
- background-color: Black;
- color: White;
-}
-
-.friend_dropdownbutton20 {
- background: url(/images/friendsbar/friend_dropdownBtn20h.jpg);
- float: left;
- cursor: pointer;
- height: 20px;
- width: 20px;
- background-position: top left;
-}
-
-.friend_dropdownbutton20:hover {
- background-position: bottom left;
-}
-
-.ContestButton {
- float: left;
- font-size: 20px;
- padding: 4px 10px;
- background: url(/images/Contests/contestbutton.png) repeat-x;
- color: #FFF;
- border: 2px solid #193441;
- cursor: pointer;
- text-align: center;
-}
-
-.ContestButton:hover {
- background: #5d90a6;
-}
-
-.ContestButtonSkip {
- font-size: 20px;
- padding: 4px 10px;
- background-color: #283d47;
- color: #FFF;
- border: 2px solid #193441;
- cursor: pointer;
- text-align: center;
-}
-
-.ContestButtonSkip:hover {
- background: #5d90a6;
-}
-
-ul.ContestPrizes {
- list-style: none;
- margin: 0;
- padding: 0;
-}
-
-a.slider_next {
- color: #444;
- font-size: 20px;
- font-weight: bold;
-}
-
-a.slider_prev {
- color: #444;
- font-size: 20px;
- font-weight: bold;
-}
-
-a.contesttab {
- float: left;
- background: #B2C1D2;
- padding: 3px 5px;
- color: #FFF;
- margin-right: 4px;
- text-decoration: none;
- display: block;
- font-size: 14px;
- font-weight: bold;
-}
-
-a.contesttab:hover {
- background: #6E99C9;
-}
-
-a.contesttabselected {
- float: left;
- background: #6E99C9;
- padding: 3px 5px;
- color: #FFF;
- margin-right: 4px;
- text-decoration: none;
- display: block;
- font-size: 14px;
- font-weight: bold;
-}
-
-div.ContestBox {
- border: 2px solid #6E99C9;
- background: url(/images/Contests/contestback.png?v=2) repeat-x;
- background-color: #c5d3e3;
- float: left;
- margin-bottom: 10px;
- padding: 10px;
-}
-
-.Contests {
- float: left;
- width: 900px;
- margin: 10px auto 0 auto;
-}
-
-.Contests h1 {
- margin: 0;
- color: #6E99C9;
- float: left;
- width: 100%;
-}
-
-.FullSubmissions {
- width: 300px;
- padding: 5px;
- float: left;
- margin-left: 3px;
- margin-bottom: 1px;
- border-bottom: 1px solid #FFF;
- color: #000;
-}
-
-.ContestShowcase {
- width: 90%;
- padding: 2px;
- border: 2px solid transparent;
- cursor: pointer;
- margin: 2px auto;
- background: #d5dec2;
-}
-
-.ContestShowcase:hover {
- border: 2px solid #AAA;
-}
-
-.VibModalBack {
- z-index: 665;
- position: fixed;
- width: 100%;
- height: 100%;
- background: gray;
- opacity: .5;
- filter: alpha(opacity=50);
- background-repeat: repeat;
- top: 0;
- left: 0;
-}
-
-.VibModal {
- z-index: 666;
- position: fixed;
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
-}
-
-.VibModalBox {
- z-index: 667;
- width: 500px;
- margin: 7% auto;
- background: #FFF;
- border: 5px solid #6E99C9;
-}
-
-.VibModalContents {
- padding: 10px;
-}
-
-.VibModalHeader {
- width: 96%;
- padding: 1% 2%;
- font-size: 20px;
- font-weight: bold;
- background: #6E99C9;
- text-align: center;
- color: #FFF;
-}
-
-.VibModalClose {
- font-size: 25px;
- color: #F00;
- font-weight: bold;
- float: right;
- line-height: 17px;
- cursor: pointer;
-}
-
-div.cannot_vote {
- height: 30px;
- width: 30px;
- background: url(/images/Contests/not_checked_box.png);
- vertical-align: text-top;
- margin-right: 7px;
- float: left;
-}
-
-div.can_vote {
- height: 30px;
- width: 30px;
- background: url(/images/Contests/checked_box.png);
- vertical-align: text-top;
- margin-right: 7px;
- float: left;
-}
-
-div.vote_text {
- font-size: 18px;
- float: left;
- color: #0F0;
-}
-
-div.no_vote_text {
- font-size: 18px;
- float: left;
- color: #F00;
-}
-
-.Contests .StatCounters {
- position: absolute;
- font-size: 30px;
- font-weight: bold;
- color: #444;
- text-align: left;
- margin-left: 10px;
- z-index: 4000;
-}
-
-.Contests .StatType {
- font-size: 14px;
- margin-left: 4px;
- margin-top: -7px;
- display: block;
-}
-
-.Contests .PlaceOpaqueName {
- width: 148px;
- font-weight: bold;
- text-align: center;
- padding: 3px 6px;
- font-size: 10px;
- color: #444;
- background: #FFF;
- opacity: .6;
- filter: alpha(opacity=60);
- margin: 1px auto 7px auto;
- height: 24px;
- overflow: hidden;
- word-wrap: none;
-}
-
-.Contests .FifthPlaceHolder {
- float: left;
- width: 20%;
- margin-top: 5px;
- margin: 0 auto;
- text-align: center;
-}
-
-div.friend_dock_chatbox {
- float: left;
- background-color: #E5E3E4;
- width: 200px;
- margin-right: 10px;
- border: solid 1px #7F7F7F;
- padding-bottom: 10px;
-}
-
-div.friend_dock_chatsettings {
- color: Black;
- background-color: #E5E5E5;
- border: solid 1px black;
- width: 150px;
- margin-right: 10px;
- position: fixed;
- bottom: 105px;
- font-size: 11px;
- z-index: 1200;
- right: 30px;
-}
-
-div.chat_settings_group_header {
- font-weight: bold;
- margin-bottom: 5px;
-}
-
-div#friend_dock_chatholder {
- position: fixed;
- bottom: 106px;
- z-index: 1022;
-}
-
-div#friend_dock_container {
- position: fixed;
- bottom: 0;
- width: 100%;
- font-size: 10px;
- font-family: Verdana;
- z-index: 1022;
-}
-
-div#friend_dock_titlebar ul {
- padding: 0;
- margin: 0;
- list-style-type: none;
-}
-
-div#friend_dock_thumb_container {
- border: solid 1px #7F7F7F;
- background-color: White;
- height: 74px;
- padding: 5px;
- width: 100%;
- overflow: hidden;
-}
-
-div#friend_dock_thumbnails {
- float: left;
-}
-
-div#friend_dock_titlebar {
- height: 18px;
- position: relative;
-}
-
-div#friend_dock_titlebar a {
- color: Black;
-}
-
-div#friend_dock_minimized_container {
- width: 100%;
- position: fixed;
- bottom: 0;
- z-index: 1022;
-}
-
-div#friend_dock_friendzone,
-div#friend_dock_chatzone {
- float: left;
- height: 65px;
- margin-top: 5px;
- margin-right: 10px;
- margin-left: 10px;
-}
-
-div.friend_dock_chatbox_closebutton {
- float: right;
- padding-right: 5px;
- font-weight: bold;
- font-size: 14px;
-}
-
-div.friend_dock_chatbox_closebutton a.hover {
- color: #fff;
- text-decoration: none;
-}
-
-div.blinkoffheader,
-div.blinkonheader {
- background-repeat: repeat-x;
- border: none;
- height: 16px;
- padding: 2px;
-}
-
-div.blinkoffheader {
- background-image: url('/images/chat/HeaderBarRepeat1x1.jpg');
-}
-
-div.blinkonheader {
- background-image: url('/images/chat/HeaderBarRepeat1x1_orange.jpg');
-}
-
-div.friend_dock_chatbox_username {
- width: 150px;
- float: left;
- font-size: 14px;
- color: White;
-}
-
-div.friend_dock_chatbox_chat {
- background-color: White;
- border: solid 1px black;
- margin-left: 10px;
- margin-top: 5px;
- margin-bottom: 10px;
- width: 176px;
- padding: 2px;
- height: 196px;
- overflow: auto;
-}
-
-textarea.friend_dock_chatbox_entry {
- margin-left: 10px;
- width: 176px;
- padding: 2px;
- overflow: auto;
- overflow-x: hidden;
-}
-
-span.friend_dock_onlinestatus {
- position: absolute;
- margin-left: 16px;
- width: 16px;
- height: 16px;
- background-image: url(/images/online.png);
- background-repeat: no-repeat;
-}
-
-span.friend_dock_offlinestatus {
- position: absolute;
- margin-left: 16px;
- width: 16px;
- height: 16px;
- background-image: url(/images/offline.png);
- background-repeat: no-repeat;
-}
-
-div.friend_dock_onlinestatus {
- position: absolute;
- margin-top: 5px;
- margin-left: 5px;
- width: 16px;
- height: 16px;
- background-image: url(/images/online.png);
- background-repeat: no-repeat;
-}
-
-div.friend_dock_offlinestatus {
- position: absolute;
- margin-top: 5px;
- margin-left: 5px;
- width: 16px;
- height: 16px;
- background-image: url(/images/offline.png);
- background-repeat: no-repeat;
-}
-
-div.friend_dock_newmessage {
- position: absolute;
- margin-top: -5px;
- margin-left: 42px;
- width: 16px;
- height: 16px;
- background-image: url(/images/newmessage.png);
- background-repeat: no-repeat;
-}
-
-div.friend_dock_friend {
- width: 50px;
- height: 70px;
- overflow: hidden;
- margin-right: 10px;
- margin-bottom: 10px;
- float: left;
-}
-
-div.friend_dock_pager {
- width: 16px;
- height: 16px;
- margin-left: 0;
- margin-right: 10px;
- margin-bottom: 10px;
- margin-top: 25px;
-}
-
-.Navigation {
- height: 35px;
- z-index: 1022;
-}
-
-.Navigation ul {
- list-style: none;
- margin: 0;
- padding: 0;
- width: 890px;
- margin: 0 auto;
-}
-
-.Navigation ul li {
- float: left;
- position: relative;
-}
-
-.Navigation ul li a,
-.Navigation ul li a:visited {
- display: inline-block;
- color: #FFF;
- padding: 0 9px;
- border-left: 1px solid #FFF;
- font-size: 18px;
-}
-
-.Navigation ul li a h1,
-.Navigation ul li a h2 {
- cursor: pointer;
-}
-
-.Navigation ul li:first-child a {
- border-left: none;
-}
-
-.Navigation .dropdownnavcontainer {
- display: none;
- position: absolute;
- margin-left: 126px;
- margin-top: 27px;
- z-index: 1024;
-}
-
-.Navigation .dropdownmainnav {
- display: block;
- background: #6E99C9;
- border-left: 1px solid #FFF;
- border-right: 1px solid #FFF;
- border-bottom: 1px solid #FFF;
- padding: 10px;
- width: 250px;
- float: left;
- z-index: 1024;
- height: 225px;
-}
-
-.Navigation .dropdownmainnav a {
- color: White;
-}
-
-.Navigation .dropdownmainnav a:hover {
- text-decoration: underline;
-}
-
-.friend_dock_username {
- height: 15px;
- overflow: hidden;
- float: left;
- width: 55px;
-}
-
-.friend_dock_username_href {
- color: Black!important;
- font-size: 10px;
- font-family: Verdana;
-}
-
-div#chatbar {
- position: fixed;
- bottom: 0;
- left: 0;
- height: 0;
- font-size: 11px;
- font-family: Verdana;
- margin: 0 1%;
- z-index: 1022;
-}
-
-div#statusbar {
- position: fixed;
- bottom: 0;
- left: 0;
- height: 30px;
- background: url(/CSS/Base/CSS/chatbarback.jpg);
- border-left: 3px solid #E5E5E5;
- border-right: 3px solid #E5E5E5;
- font-size: 11px;
- font-family: Verdana;
- margin: 0 1%;
- z-index: 1022;
-}
-
-#chat {
- float: left;
-}
-
-.chat_box {
- border-left: 2px solid #6E99C9;
- border-right: 2px solid #6E99C9;
- width: 217px;
- float: left;
- height: 280px;
- overflow-y: scroll;
- overflow-x: none;
- background: #eee;
- font-size: 11px;
- font-family: Verdana;
-}
-
-.chat_text {
- width: 80%;
- padding: 4px;
- float: left;
- font-size: 11px;
- font-family: Verdana;
-}
-
-.chat_name {
- color: #88a9bf;
- border-bottom: 1px solid #CCC;
- font-weight: bold;
- padding: 3px;
- float: left;
- font-size: 11px;
- font-family: Verdana;
- width: 75%;
-}
-
-.chat_header {
- width: 211px;
- float: left;
- color: #03C;
- background: #6E99C9;
- color: #000;
- font-weight: bold;
- font-size: 12px;
- margin: 0;
- padding: 5px;
- font-family: Verdana;
-}
-
-.chat_options {
- width: 219px;
- float: left;
- color: #03C;
- background: #6E99C9;
- color: #000;
- font-weight: bold;
- font-size: 12px;
- margin: 0;
- padding: 1px;
- font-family: Verdana;
-}
-
-#chat_close {
- background: url(/CSS/Base/CSS/close.png);
- height: 10px;
- width: 10px;
- float: right;
- cursor: pointer;
- margin-right: 1px;
-}
-
-#chat_mini {
- background: url(/CSS/Base/CSS/mini.png);
- height: 10px;
- width: 10px;
- float: right;
- cursor: pointer;
- margin-right: 5px;
-}
-
-.chat_abuse {
- color: #FFF;
- background: yellow;
- color: #000;
- font-weight: bold;
- padding: 1px;
- cursor: pointer;
- font-family: Verdana;
- font-size: 7px;
- float: left;
-}
-
-.chat_abuse:hover {
- color: #FFF;
- background: red;
- color: #000;
- font-weight: bold;
- padding: 1px;
- cursor: pointer;
- font-family: Verdana;
- font-size: 7px;
- float: left;
-}
-
-.chat_wrapper {
- width: 221px;
- background: #eee;
- position: absolute;
- bottom: 0;
- float: left;
- z-index: 1022;
- margin-left: 3px;
-}
-
-#chatfix {
- position: fixed;
- bottom: 0;
- left: 176px;
- z-index: 1337;
-}
-
-.chat_input {
- float: left;
- background: #eee;
- border-right: 2px solid #6E99C9;
- border-left: 2px solid #6E99C9;
- border-bottom: 2px solid #6E99C9;
- border-top: 1px solid #6E99C9;
- width: 217px;
-}
-
-.chat_contents {
- bottom: 27px;
- display: none;
-}
-
-.roster_box {
- border-bottom: 2px solid #bcbcbc;
- float: left;
- cursor: pointer;
- padding: 4px;
- width: 125px;
-}
-
-.roster_box:hover {
- border-bottom: 2px solid #bcbcbc;
- float: left;
- cursor: pointer;
- background: #eee;
- padding: 4px;
- width: 125px;
-}
-
-.roster_name {
- margin-left: 5px;
-}
-
-.roster_alert {
- margin: 1px;
- padding: 1px;
- font-size: 11px;
- font-family: Verdana;
-}
-
-#roster {
- float: left;
- font-size: 11px;
- font-family: Verdana;
- display: none;
- height: 331px;
- overflow-y: scroll;
- background: #d8e0e9;
- margin: 5px;
- width: 150px;
- position: absolute;
- left: 0;
- bottom: 25px;
- z-index: 1022;
-}
-
-#roster-wrapper {
- float: left;
- height: 1px;
- width: 170px;
-}
-
-#chat_friends {
- float: left;
- height: 20px;
- color: #000;
- font-weight: bold;
- padding-left: 33px;
- padding-top: 7px;
- width: 119px;
- cursor: pointer;
-}
-
-#chat_friends:hover {
- float: left;
- height: 20px;
- background: #d8e0e9;
- color: #000;
- font-weight: bold;
- padding-left: 33px;
- padding-top: 7px;
- width: 119px;
- cursor: pointer;
-}
-
-#statusbar_wrapper {
- padding-top: 3px;
- float: left;
-}
-
-#long-wrapper {
- float: left;
-}
-
-#chatlog {
- float: left;
- padding: 3px;
- color: Green;
-}
-
-.chat-unavailable {
- background: url(/CSS/Base/CSS/unavailable.png);
- height: 15px;
- width: 15px;
- float: left;
-}
-
-.chat-available {
- background: url(/CSS/Base/CSS/available.png);
- height: 15px;
- width: 15px;
- float: left;
-}
-
-.chat-default {
- height: 15px;
- width: 15px;
- float: left;
-}
-
-.chat_send_button {
- background: #eee;
- border: 0 solid #FFF;
- float: left;
- line-height: 17px;
- height: 18px;
- border-left: 2px solid #CCC;
- border-bottom: 0;
- border-right: 0;
- border-top: 0;
- padding: 3px;
- cursor: pointer;
-}
-
-.chat_send_button:hover {
- background: #D8E0E9;
- border: 0 solid #FFF;
- float: left;
- line-height: 17px;
- height: 18px;
- border-left: 2px solid #CCC;
- border-bottom: 0;
- border-right: 0;
- border-top: 0;
- padding: 3px;
- cursor: pointer;
-}
-
-.chat_send_input {
- border: 0 solid #FFF;
- float: left;
- height: 22px;
- font-size: 12px;
- padding: 2px;
-}
-
-.chat_close {
- cursor: pointer;
- color: #FFF;
- font-size: 16px;
- line-height: 11px;
- padding-right: 8px;
- float: left;
- padding-top: 6px;
-}
-
-.chat_close:hover {
- cursor: pointer;
- color: #000;
- font-size: 16px;
- line-height: 11px;
- padding-right: 8px;
- float: left;
- padding-top: 6px;
-}
-
-.chat_entry_click {
- cursor: pointer;
- padding-right: 10px;
- padding-top: 7px;
- padding-left: 10px;
- padding-bottom: 7px;
- padding-top: 6px;
-}
-
-.chat_entry {
- float: left;
- background: #d8e0e9;
- height: 27px;
- color: #000;
- font-weight: bold;
- cursor: pointer;
- width: 221px;
-}
-
-#chat_login {
- margin-top: 1px;
- margin-left: 2px;
- float: left;
-}
-
-#chat_logout {
- margin-top: 1px;
-}
-
-#chat-availability {
- float: left;
-}
-
-#partycontainer {
- position: fixed;
- bottom: 91px;
- z-index: 1022;
-}
-
-.ActiveChatThumb {
- z-index: 10;
- cursor: pointer;
-}
-
-.RemoveActiveChat {
- position: absolute;
- z-index: 10;
- cursor: pointer;
- margin-left: 40px;
-}
-
-.clear {
- overflow: hidden;
- width: 100%;
-}
-
-.followme_green19h {
- background-image: url('/images/Buttons/followme_19h.png');
- background-repeat: no-repeat;
- background-position: left top;
- height: 19px;
- cursor: pointer;
- width: 65px;
- float: left;
- text-align: center;
-}
-
-.followme_green19h:hover {
- background-position: left bottom;
-}
-
-.followme_gray19h {
- background-image: url('/images/Buttons/followme_19h-gray.png');
- background-repeat: no-repeat;
- background-position: left top;
- height: 19px;
- cursor: pointer;
- width: 65px;
- float: left;
- text-align: center;
-}
-
-.followme_gray19h:hover {
- background-position: left bottom;
-}
-
-.tab_white19h,
-.tab_white19hselected {
- background: transparent url('/images/friendsbar/tab_white19h_l2.gif') no-repeat left top;
- color: #444;
- display: block;
- float: left;
- font: normal 12px verdana, sans-serif;
- text-decoration: none;
- padding-left: 2px;
- height: 19px;
- outline: none;
- cursor: pointer;
-}
-
-.tab_white19h span,
-.tab_white19hselected span {
- background: transparent url('/images/friendsbar/tab_white19h_r2.gif') no-repeat right top;
- display: block;
- height: 15px;
- padding: 2px 15px 2px 7px;
- text-decoration: none;
-}
-
-.tab_white19h:hover,
-.tab_white19hselected {
- background-position: left bottom;
- color: #000;
- outline: none;
- text-decoration: none;
-}
-
-.tab_white19h a,
-.tab_white19hselected a {
- text-decoration: none;
- outline: none;
-}
-
-.tab_white19h:hover span,
-.tab_white19hselected span {
- background-position: right bottom;
- padding: 3px 15px 1px 7px;
- text-decoration: none;
-}
-
-.tab_white19h_flash {
- background: transparent url('/images/friendsbar/tab_blue19h_l.gif') no-repeat left top;
-}
-
-.tab_white19h_flash span {
- background: transparent url('/images/friendsbar/tab_blue19h_r.gif') no-repeat right top;
- color: White;
-}
-
-.bold {
- font-weight: bold;
-}
-
-.clear {
- clear: both;
-}
-
-.alignCenter {
- text-align: center;
-}
-
-.InGamePopup {
- background: url(/images/css/containerBkg_01.png);
- _overflow: hidden;
-}
-
-.voteYes {
- background: url(/images/css/button_vote.jpg);
- width: 24px;
- height: 23px;
- background-position: top left;
-}
-
-.voteYes:hover {
- background-position: bottom left;
-}
-
-.voteNo {
- background: url(/images/css/button_vote.jpg);
- width: 24px;
- height: 23px;
- background-position: top right;
-}
-
-.voteNo:hover {
- background-position: bottom right;
-}
-
-#MyAccountBalanceContainer {
- font-family: Verdana, Helvetica, Sans-Serif;
-}
-
-#MyAccountBalanceContainer h2 {
- font-family: Verdana, Helvetica, Sans-Serif;
- font-size: 2.5em;
- font-weight: normal;
- letter-spacing: .4em;
- line-height: 1em;
- margin: 10px 0 0 -2px;
- padding: 0;
-}
-
-#MyAccountBalanceContainer h3 {
- background-color: #ccc;
- border-bottom: solid 1px #000;
- font-family: Verdana, Helvetica, Sans-Serif;
- font-size: 1.7em;
- font-weight: normal;
- letter-spacing: .1em;
- line-height: 1em;
- margin: 0;
- padding: 5px;
- text-align: center;
-}
-
-#MyAccountBalanceContainer h4 {
- font-family: Verdana, Sans-Serif;
- font-size: 13px;
- font-weight: bold;
- margin: 5px 0;
- padding: 5px 5px 5px 15px;
- color: #900;
-}
-
-#MyAccountBalanceContainer #AboutRobux {
- border-bottom: solid 1px #000;
- border-left: solid 1px #000;
- border-right: solid 1px #000;
- float: right;
- margin-top: 20px;
- width: 275px;
-}
-
-#MyAccountBalanceContainer #AboutRobux h3 {
- border-top: solid 1px #000;
-}
-
-#MyAccountBalanceContainer #AboutRobux p {
- margin: 0;
- padding: 10px 15px;
-}
-
-#MyAccountBalanceContainer #Earnings {
- border: solid 1px #000;
- margin-top: 20px;
- padding-bottom: 10px;
- width: 600px;
-}
-
-#MyAccountBalanceContainer .Earnings_Period {
- margin-bottom: 20px;
-}
-
-#MyAccountBalanceContainer .Earnings_LoginAward,
-#MyAccountBalanceContainer .Earnings_PlaceTrafficAward,
-#MyAccountBalanceContainer .Earnings_Ambassador {
- padding: 0 0 0 50px;
- height: 16px;
- background-color: #eee;
-}
-
-#MyAccountBalanceContainer .Earnings_SaleOfGoods,
-#MyAccountBalanceContainer .Earnings_PeriodTotal,
-#MyAccountBalanceContainer .Earnings_LoginAwardBC,
-#MyAccountBalanceContainer .Earnings_Currency {
- padding: 0 0 0 50px;
- height: 16px;
-}
-
-#MyAccountBalanceContainer .Earnings_LoginAward .Label,
-#MyAccountBalanceContainer .Earnings_LoginAwardBC .Label,
-#MyAccountBalanceContainer .Earnings_PlaceTrafficAward .Label,
-#MyAccountBalanceContainer .Earnings_SaleOfGoods .Label,
-#MyAccountBalanceContainer .Earnings_Ambassador .Label,
-#MyAccountBalanceContainer .Earnings_Currency .Label {
- float: left;
- width: 380px;
-}
-
-#MyAccountBalanceContainer .Earnings_PeriodTotal .Label {
- float: left;
- padding-right: 10px;
- text-align: right;
- width: 370px;
-}
-
-#MyAccountBalanceContainer .Earnings_PeriodTotal .Field {
- color: Blue;
- font-weight: bold;
-}
-
-#MyAccountBalanceContainer .Field {
- float: right;
- width: 75px;
-}
-
-#MyAccountBalanceContainer .Zebra {
- background-color: #eee;
-}
-
-table.stats {
- text-align: center;
- font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
- font-weight: normal;
- font-size: 11px;
- color: #fff;
- width: 280px;
- background-color: #666;
- border: 0;
- border-collapse: collapse;
- border-spacing: 0;
-}
-
-table.stats td {
- background-color: #CCC;
- color: #000;
- padding: 4px;
- text-align: left;
- border: 1px #fff solid;
-}
-
-table.stats td.hed {
- background-color: #666;
- color: #fff;
- padding: 4px;
- text-align: left;
- border-bottom: 2px #fff solid;
- font-size: 12px;
- font-weight: bold;
-}
-
-#AssetContainer {
- margin: 0 auto;
- width: 620px;
-}
-
-#AssetContainer h2 {
- color: #333;
- font-size: x-large;
- margin-bottom: 5px;
-}
-
-#AssetContainer #Asset {
- background-color: #eee;
- border: solid 1px #000;
- color: #555;
-}
-
-#BadgesContainer {
- border: solid 1px #000;
-}
-
-#BadgesContainer .Legend .BadgesList {
- color: #666;
- float: left;
- list-style: none;
- margin: 0;
- padding: 0;
-}
-
-#BadgesContainer .Legend .BadgesList li {
- background-color: #fff;
- background-position: 0 5px;
- background-repeat: no-repeat;
- margin: 10px 0 20px 0;
- padding: 0 0 7px 80px;
- border: solid 1px #000;
-}
-
-#CommunityBadges .Legend,
-#FriendshipBadges .Legend,
-#CombatBadges .Legend,
-#VisitsBadges .Legend {
- float: left;
- padding: 5px 15px 5px 5px;
- width: 500px;
-}
-
-#StatisticsRankingsPane_Friendship,
-#StatisticsRankingsPane_Combat,
-#StatisticsRankingsPane_Visits,
-#FeaturedBadge_Community {
- float: right;
- margin: 15px;
- width: 300px;
-}
-
-#FeaturedBadge_Community {
- border: solid 1px #000;
- margin-top: 20px;
- width: 325px;
- background-color: White;
-}
-
-#TurboBuildersClubBadge_Community {
- border: solid 1px #000;
- margin: 15px 15px 15px 15px;
- background-color: White;
- float: left;
-}
-
-#OutrageousBuildersClubBadge_Community {
- border: solid 1px #000;
- margin: 15px 15px 15px 15px;
- background-color: White;
- float: left;
-}
-
-#FeaturedBadge_Community h4,
-#OutrageousBuildersClubBadge_Community h4 {
- background-color: #6e99c9;
- border-bottom: solid 1px #000;
- color: #fff;
- font-size: 1.4em;
- font-weight: bold;
- letter-spacing: .2em;
- margin: 0;
- padding: 3px;
- text-align: center;
-}
-
-#OutrageousBuildersClubBadge_Community h4 {
- background-color: #000;
- color: #FFF;
- border-bottom: solid 1px #000;
-}
-
-#OutrageousBuildersClubBadge_Community h4 .OutrageousSpan {
- color: White;
-}
-
-.FeaturedOBCContent .FeaturedOBCDescription {
- color: #222;
- margin: 10px 10px 10px 10px;
- font-size: 14px;
-}
-
-.FeaturedOBCIcon {
- margin: 10px 10px 10px 10px;
- float: left;
- vertical-align: text-top;
- width: 150px;
-}
-
-#OutrageousBuildersClubBadge_Community {
- margin: 10px 10px 10px;
-}
-
-#FeaturedBadge_Community h4,
-#TurboBuildersClubBadge_Community h4 {
- background-color: #6e99c9;
- border-bottom: solid 1px #000;
- color: #fff;
- font-size: 1.4em;
- font-weight: bold;
- letter-spacing: .2em;
- margin: 0;
- padding: 3px;
- text-align: center;
-}
-
-#TurboBuildersClubBadge_Community h4 {
- background-color: #B94542;
- color: #6e99FF;
- border-bottom: solid 1px #000;
-}
-
-#TurboBuildersClubBadge_Community h4 .TurboSpan {
- color: White;
-}
-
-.BadgeHint {
- border: dashed 1px #000;
- padding: 5px 5px 5px 5px;
- background-color: #E8EDFF;
-}
-
-.FeaturedBadgeContent {
- margin: 0;
- padding: 0 15px 10px 15px;
-}
-
-.FeaturedBadgeContent p {
- color: #222;
- font-family: Verdana, Sans-Serif;
- margin-top: 10px;
-}
-
-.FeaturedBadgeIcon {
- float: left;
- margin: auto 10px auto 10px;
- vertical-align: text-top;
- width: 125px;
-}
-
-.FeaturedTBCContent .FeaturedTBCDescription {
- color: #222;
- font-size: 14px;
- margin: 10px 10px 10px 10px;
-}
-
-.FeaturedTBCIcon {
- margin: 10px 10px 10px 10px;
- float: left;
- vertical-align: text-top;
- width: 150px;
-}
-
-#TurboBuildersClubBadge_Community {
- margin: 10px 10px 10px;
-}
-
-#StatisticsRankingsPane_Community {
- border: none;
-}
-
-#BadgesContainer .Legend h4 {
- background-color: #fff;
- font-size: 1.4em;
- font-weight: bold;
- margin: 5px 0 5px 0;
-}
-
-#BadgesContainer #CommunityBadges .Legend #Administrator {
- background-image: url(/images/Badges/Administrator-75x75.png?v=2);
-}
-
-#BadgesContainer #CommunityBadges .Legend #ForumModerator {
- background-image: url(/images/Badges/ForumModerator-75x75.png?v=2);
-}
-
-#BadgesContainer #CommunityBadges .Legend #ImageModerator {
- background-image: url(/images/Badges/ImageModerator-75x75.png?v=2);
-}
-
-#BadgesContainer #FriendshipBadges .Legend #Friendship {
- background-image: url(/images/Badges/Friendship-75x75.png?v=2);
-}
-
-#BadgesContainer #FriendshipBadges .Legend #Inviter {
- background-image: url(/images/Badges/Inviter-75x75.png?v=2);
-}
-
-#BadgesContainer #CombatBadges .Legend #CombatInitiation {
- background-image: url(/images/Badges/CombatInitiation-75x75.png?v=2);
-}
-
-#BadgesContainer #CombatBadges .Legend #Warrior {
- background-image: url(/images/Badges/Warrior-75x75.png?v=2);
-}
-
-#BadgesContainer #CombatBadges .Legend #Bloxxer {
- background-image: url(/images/Badges/Bloxxer-75x75.png?v=2);
-}
-
-#BadgesContainer #VisitsBadges .Legend #Homestead {
- background-image: url(/images/Badges/Homestead-70x75.png?v=2);
-}
-
-#BadgesContainer #VisitsBadges .Legend #Bricksmith {
- background-image: url(/images/Badges/Bricksmith-54x75.png?v=2);
-}
-
-#BadgesContainer .AccordionHeader,
-#BadgesContainer .TopAccordionHeader,
-#BadgesContainer .BottomAccordionHeader {
- background-color: #ccc;
- cursor: pointer;
- font-size: 1.4em;
- margin: 0 0 1px 0;
- padding: 5px;
- text-align: center;
-}
-
-#BadgesContainer .AccordionHeader,
-#BadgesContainer .BottomAccordionHeader {
- border-bottom: solid 1px #000;
- border-top: solid 1px #000;
-}
-
-#BadgesContainer .TopAccordionHeader {
- border-bottom: solid 1px #000;
- border-top: none;
-}
-
-#BadgesContainer .AccordionHeader:hover,
-#BadgesContainer .TopAccordionHeader:hover,
-#BadgesContainer .BottomAccordionHeader:hover {
- background-color: #6e99c9;
- color: #fff;
-}
-
-.StatisticsRankings {
- background-color: #eee;
-}
-
-.StatisticsRankings h4 {
- background-color: #ccc;
- border-bottom: solid 1px #000;
- color: #333;
- font-size: 1.2em;
- margin: 0;
- text-align: center;
-}
-
-.StatisticsRankingsHeader_Rank,
-.StatisticsRankingsHeader_Item,
-.StatisticsRankingsHeader_Score {
- border: solid 1px #000;
- float: left;
- font-weight: bold;
- padding: 2px 0 2px 0;
- text-align: center;
-}
-
-.StatisticsRankingsHeader_Rank {
- margin-right: 1px;
- width: 45px;
-}
-
-.StatisticsRankingsHeader_Item {
- margin-right: 1px;
- width: 150px;
-}
-
-.StatisticsRankingsHeader_Score {
- width: 95px;
-}
-
-.StatisticsRanking,
-.StatisticsRanking_AlternatingRow,
-.StatisticsRanking_UserCentric,
-.StatisticsRanking_UserCentric_AlternatingRow {
- font: normal .9em/normal Verdana, sans-serif;
-}
-
-.StatisticsRanking_UserCentric a,
-.StatisticsRanking_UserCentric a:link,
-.StatisticsRanking_UserCentric a:visited,
-.StatisticsRanking_UserCentric a:active,
-.StatisticsRanking_UserCentric_AlternatingRow a,
-.StatisticsRanking_UserCentric_AlternatingRow a:link,
-.StatisticsRanking_UserCentric_AlternatingRow a:visited,
-.StatisticsRanking_UserCentric_AlternatingRow a:active {
- color: #fff;
-}
-
-.StatisticsRanking .StatisticsRanking_Rank,
-.StatisticsRanking .StatisticsRanking_Item,
-.StatisticsRanking .StatisticsRanking_Score,
-.StatisticsRanking_AlternatingRow .StatisticsRanking_Rank,
-.StatisticsRanking_AlternatingRow .StatisticsRanking_Item,
-.StatisticsRanking_AlternatingRow .StatisticsRanking_Score {
- border: solid 1px #000;
- float: left;
- padding: 2px 0 2px 0;
- text-align: center;
-}
-
-.StatisticsRanking .StatisticsRanking_Rank,
-.StatisticsRanking_AlternatingRow .StatisticsRanking_Rank {
- margin-right: 1px;
- width: 45px;
-}
-
-.StatisticsRanking .StatisticsRanking_Item,
-.StatisticsRanking_AlternatingRow .StatisticsRanking_Item {
- margin-right: 1px;
- width: 150px;
-}
-
-.StatisticsRanking .StatisticsRanking_Score,
-.StatisticsRanking_AlternatingRow .StatisticsRanking_Score {
- width: 95px;
-}
-
-.StatisticsRanking_UserCentric .StatisticsRanking_Rank,
-.StatisticsRanking_UserCentric .StatisticsRanking_Item,
-.StatisticsRanking_UserCentric .StatisticsRanking_Score,
-.StatisticsRanking_UserCentric_AlternatingRow .StatisticsRanking_Rank,
-.StatisticsRanking_UserCentric_AlternatingRow .StatisticsRanking_Item,
-.StatisticsRanking_UserCentric_AlternatingRow .StatisticsRanking_Score {
- background-color: #6e99c9;
- border: solid 1px #000;
- color: #fff;
- float: left;
- font-weight: bold;
- padding: 2px 0 2px 0;
- text-align: center;
-}
-
-.StatisticsRanking_UserCentric .StatisticsRanking_Rank,
-.StatisticsRanking_UserCentric_AlternatingRow .StatisticsRanking_Rank {
- margin-right: 1px;
- width: 45px;
-}
-
-.StatisticsRanking_UserCentric .StatisticsRanking_Item,
-.StatisticsRanking_UserCentric_AlternatingRow .StatisticsRanking_Item {
- margin-right: 1px;
- width: 150px;
-}
-
-.StatisticsRanking_UserCentric .StatisticsRanking_Score,
-.StatisticsRanking_UserCentric_AlternatingRow .StatisticsRanking_Score {
- width: 95px;
-}
-
-.StatisticsRankingsFooter {
- border-top: solid 1px #000;
- padding: 2px 1px 2px 1px;
-}
-
-.RankingsPeriodSelector {
- font-family: Verdana, Sans-Serif;
- font-size: xx-small;
- width: 100%;
-}
-
-.TileBadges {
- float: left;
- margin: 10px 10px;
- text-align: center;
-}
-
-#CatalogContainer {
- font-family: Verdana, Sans-Serif;
- min-width: 0;
- position: relative;
-}
-
-#CatalogContainer h2 {
- font-family: Verdana, Sans-Serif;
- font-weight: normal;
- letter-spacing: .1em;
- line-height: 24px;
- padding: 0;
- color: #555;
- font-size: 14px;
- margin-left: 10px;
-}
-
-#BrowseMode ul li h3 a {
- font-weight: normal;
- font-size: 14px;
-}
-
-#CatalogContainer ul {
- font-family: Verdana, Sans-Serif;
- list-style: none;
- margin: 0 0 20px 0;
- padding-left: 0;
-}
-
-#CatalogContainer ul li {
- margin: 5px 0 5px 10px;
- font-family: Arial, Helvetica, sans-serif;
- padding-left: 20px;
- font-size: 14px;
-}
-
-#CatalogContainer .Selected {
- background: url('/images/gamesPage_filterArrow.png') no-repeat scroll 0 1px transparent;
-}
-
-#CatalogContainer .DisplayFilters {
- width: 185px;
- background-color: White;
- border: solid 2px #6e99c9;
-}
-
-#CatalogContainer .Assets {
- float: left;
- min-width: 0;
- overflow: hidden;
- padding-bottom: 10px;
- padding-left: 0;
- padding-right: 0;
- position: relative;
- width: 680px;
-}
-
-#CatalogContainer .SearchBar {
- background-color: #eee;
- border: solid 1px #bbb;
- height: 30px;
- margin: -5px 0 5px 0;
- padding: 0;
- text-align: center;
-}
-
-#CatalogContainer .SearchBar .SearchBox,
-#CatalogContainer .SearchBar .SearchButton {
- height: 30px;
- margin: 0;
- padding: 0;
-}
-
-#CatalogContainer .SearchBar .TextBox {
- border: solid 1px #000;
- height: 19px;
- margin: 2px 0 0 0;
- padding: 2px 3px 0 3px;
- width: 250px;
-}
-
-#CatalogContainer .SearchLinks {
- z-index: 9;
- display: inline;
-}
-
-#CatalogContainer .SearchLinks a span {
- display: none;
-}
-
-#CatalogContainer .SearchLinks a:hover {
- text-decoration: none;
- border: none;
-}
-
-#CatalogContainer .SearchLinks a:hover span {
- display: block;
- position: absolute;
- top: 20px;
- left: 15%;
- width: 60%;
- padding: 5px;
- margin: 5px;
- z-index: 10;
- color: white;
- background-color: #6e99c9;
- border-width: 1px;
- border-color: Gray;
- border-style: ridge;
- text-decoration: none;
- line-height: 1.4em;
- font: 11px Verdana, sans-serif;
- text-align: center;
-}
-
-#CatalogContainer .SearchError {
- clear: both;
- margin: 2px;
- float: none;
- padding: 2px;
- text-align: center;
- color: Red;
-}
-
-#CatalogContainer .Assets .HeaderPager,
-#CatalogContainer .Assets .FooterPager {
- padding: 2px 0;
- text-align: right;
-}
-
-#CatalogContainer .Assets .HeaderPager {
- margin-bottom: 10px;
-}
-
-#CatalogContainer .Assets .HeaderPager .Label,
-#CatalogContainer .Assets .FooterPager .Label {
- font-size: 1em;
- vertical-align: middle;
-}
-
-#CatalogContainer .Asset {
- margin: -1px 0 15px -1px;
- vertical-align: top;
- width: 122px;
-}
-
-#CatalogContainer .Asset .AssetThumbnail {
- border: solid 1px #EEE;
- height: 110px;
- text-align: center;
- width: 110px;
- background-color: #FFF;
-}
-
-#CatalogContainer .Asset .AssetDetails {
- font-family: Verdana, Sans-Serif;
- overflow: hidden;
- padding: 2px 0 6px 0;
- width: 110px;
-}
-
-#CatalogContainer .AssetName a {
- font-size: .9em;
- font-weight: bold;
- line-height: 1.5em;
- vertical-align: top;
-}
-
-.AssetsBullet {
- padding-right: 3px;
-}
-
-#CatalogContainer .Label,
-#CatalogContainer .Detail,
-#CatalogContainer .DetailHighlighted,
-#CatalogContainer .PriceInRobux,
-#CatalogContainer .PriceInTickets {
- font-size: .8em;
-}
-
-#CatalogContainer .PriceInRobux {
- color: Green;
- font-weight: bold;
-}
-
-#CatalogContainer .PriceInTickets {
- color: #fbb117;
- font-weight: bold;
-}
-
-#CatalogContainer .AssetsDisplaySet {
- float: left;
- font-family: Comic Sans MS, Arial, Sans-Serif;
- font-size: 1.5em;
-}
-
-.Assets .StandardBoxHeader {
- width: 660px;
-}
-
-.Assets .StandardBox {
- width: 660px;
-}
-
-.CustomizeCharacterContainer {
- font-family: Verdana, Sans-Serif;
- margin: 0;
-}
-
-.CustomizeCharacterContainer h4 {
- background-color: #ccc;
- border-bottom: solid 1px #000;
- color: #333;
- font-family: Comic Sans MS, Verdana, Sans-Serif;
- margin: 0;
- text-align: center;
-}
-
-.CustomizeCharacterContainer .NoResults {
- padding: 15px;
- text-align: center;
-}
-
-.CustomizeCharacterContainer .TileGroup {
- clear: left;
- text-align: center;
-}
-
-.CustomizeCharacterContainer .Asset {
- float: left;
- margin: 5px 7px 5px 0;
- text-align: left;
- vertical-align: top;
- width: 112px;
-}
-
-.CustomizeCharacterContainer .Asset .AssetThumbnail {
- height: 110px;
- position: relative;
- text-align: center;
- width: 110px;
-}
-
-.CustomizeCharacterContainer .Asset .AssetDetails {
- overflow: hidden;
- padding: 2px 0 6px 0;
- text-align: left;
- width: 110px;
-}
-
-.CustomizeCharacterContainer .AssetName a {
- font-size: .9em;
- font-weight: bold;
- line-height: 1.5em;
- vertical-align: top;
-}
-
-.CustomizeCharacterContainer .Label,
-.CustomizeCharacterContainer .Detail,
-.CustomizeCharacterContainer .DetailHighlighted {
- font-size: .8em;
-}
-
-.CustomizeCharacterContainer .FooterPager {
- border-top: solid 1px #000;
- clear: left;
- margin: 10px 0 0 0;
- padding: 3px 0;
- text-align: center;
-}
-
-.AttireChooser {
- border: solid 1px #000;
- float: left;
- margin: 0;
- min-width: 0;
- padding: 0;
- position: relative;
- text-align: left;
- width: 530px;
-}
-
-.Accoutrements {
- border: solid 1px #000;
- clear: left;
- margin-top: 10px;
- min-width: 0;
- padding: 0;
- position: relative;
- text-align: left;
- width: 530px;
-}
-
-.AttireChooser .AttireCategory {
- border-bottom: solid 1px #000;
- margin: 0 0 10px 0;
- padding: 3px 0;
- text-align: center;
-}
-
-.AttireChooser .AttireOptions {
- margin: 5px;
-}
-
-.AttireCategory .AttireCategorySelector_Selected {
- font-weight: bold;
-}
-
-.AttireChooser .HeaderPager,
-.AttireChooser .HeaderPager {
- margin-bottom: 10px;
-}
-
-.AttireChooser .HeaderPager .Label,
-.AttireChooser .FooterPager .Label {
- font-size: 1em;
- vertical-align: middle;
-}
-
-.CharacterViewer {
- border: solid 1px #000;
- float: right;
- width: 354px;
-}
-
-.CharacterViewer .ReDrawAvatar {
- font-size: 1em;
- vertical-align: bottom;
- text-align: center;
-}
-
-.Mannequin {
- clear: right;
- margin-top: 10px;
- text-align: center;
- width: 354px;
-}
-
-.Mannequin .ColorChooserFrame {
- margin: 0 auto;
-}
-
-.TeeShirtBuilder {
- border: solid 1px #000;
- clear: both;
- margin-top: 10px;
-}
-
-div.AspNet-DetailsView-Data ul {
- margin: 0;
- padding: 0;
-}
-
-div.AspNet-DetailsView-Data li {
- margin: 0;
- padding: 0;
- list-style-type: none;
- position: relative;
-}
-
-ul.AspNet-Menu {
- position: relative;
-}
-
-ul.AspNet-Menu,
-ul.AspNet-Menu ul {
- margin: 0;
- padding: 0;
- display: block;
-}
-
-ul.AspNet-Menu li {
- position: relative;
- list-style: none;
-}
-
-ul.AspNet-Menu li a,
-ul.AspNet-Menu li span {
- display: block;
- text-decoration: none;
-}
-
-ul.AspNet-Menu ul {
- position: absolute;
- display: none;
-}
-
-ul.AspNet-Menu li:hover ul ul,
-ul.AspNet-Menu li:hover ul ul ul,
-ul.AspNet-Menu li.AspNet-Menu-Hover ul ul,
-ul.AspNet-Menu li.AspNet-Menu-Hover ul ul ul {
- display: none;
-}
-
-ul.AspNet-Menu li:hover ul,
-ul.AspNet-Menu li li:hover ul,
-ul.AspNet-Menu li li li:hover ul,
-ul.AspNet-Menu li.AspNet-Menu-Hover ul,
-ul.AspNet-Menu li li.AspNet-Menu-Hover ul,
-ul.AspNet-Menu li li li.AspNet-Menu-Hover ul {
- display: block;
-}
-
-.AspNet-Menu-Horizontal ul.AspNet-Menu li {
- float: left;
-}
-
-.AspNet-Menu-Horizontal ul.AspNet-Menu li li {
- float: none;
-}
-
-div.AspNet-TreeView {
- margin: 0;
- padding: 0;
-}
-
-div.AspNet-TreeView ul {
- list-style: none;
- margin: 0;
- padding: 0;
-}
-
-.AspNet-TreeView-Hide {
- display: none;
-}
-
-#ContentBuilderContainer {
- margin-top: 10px;
-}
-
-#ContentBuilderContainer h2 {
- font-family: Verdana, Sans-Serif;
- font-size: 2.5em;
- font-weight: normal;
- line-height: 1em;
- margin: 0;
- padding: 0;
-}
-
-#ContentBuilderContainer h3 {
- background-color: #ccc;
- font-size: 16px;
- font-weight: bold;
- padding: 5px;
- text-align: center;
-}
-
-#ContentBuilderContainer blockquote {
- margin: 0 auto;
-}
-
-#ContentBuilderContainer .UploaderPanel,
-#ContentBuilderContainer .UpsellPanel {
- text-align: center;
-}
-
-#ContentBuilderContainer .SelectorArea {
- margin: 0 auto;
- margin-bottom: 20px;
- margin-top: 20px;
- text-align: center;
-}
-
-#ContentBuilderContainer .DisclaimerLink {
- z-index: 9;
- display: inline;
- font-size: 1.2em;
-}
-
-#ContentBuilderContainer .DisclaimerLink a span {
- display: none;
-}
-
-#ContentBuilderContainer .DisclaimerLink a:hover {
- text-decoration: none;
- border: none;
-}
-
-#ContentBuilderContainer .DisclaimerLink a:hover span {
- display: block;
- position: absolute;
- top: 50%;
- left: 12%;
- width: 75%;
- padding: 5px;
- margin: 5px;
- z-index: 10;
- color: white;
- background-color: #6e99c9;
- border-width: 1px;
- border-color: Gray;
- border-style: ridge;
- text-decoration: none;
- line-height: 1.4em;
- font: 12px Verdana, sans-serif;
- text-align: left;
-}
-
-#TradeCurrencyContainer {
- margin-top: 10px;
-}
-
-#TradeCurrencyContainer .TradeBox {
- width: 100px;
-}
-
-#TradeCurrencyContainer h2 {
- font-size: 2.5em;
- font-weight: normal;
- line-height: 1em;
- margin: 0 0 15px 0;
- padding: 0;
- text-align: center;
-}
-
-#TradeCurrencyContainer .LeftColumn {
- float: left;
- width: 230px;
-}
-
-#TradeCurrencyContainer .CenterColumn {
- float: left;
- width: 410px;
-}
-
-#TradeCurrencyContainer .RightColumn {
- float: left;
- width: 230px;
-}
-
-#TradeCurrencyContainer h4 {
- border-bottom: solid 1px #000;
- font-size: 1em;
- font-weight: bold;
- margin: 0;
- padding: 5px;
- text-align: center;
- display: block;
-}
-
-#TradeCurrencyContainer .AccordionHeader {
- background-color: #ccc;
- border: solid 1px #000;
- cursor: pointer;
- font-size: 1em;
- font-weight: bold;
- letter-spacing: .1em;
- margin: 1px 0;
- padding: 1px 1em;
- text-align: center;
-}
-
-#TradeCurrencyContainer .AccordionHeader:hover {
- background-color: #6e99c9;
- color: #fff;
-}
-
-#CurrencyOffersPane {
- float: right;
-}
-
-.TradingDashboard {
- margin-bottom: 10px;
-}
-
-.CurrencyQuote,
-.CurrencyTrade,
-.CurrencyOffers,
-.CurrencyBids,
-.TradingDashboard {
- width: 350px;
-}
-
-.CurrencyQuote,
-.CurrencyTrade,
-.CurrencyOffers,
-.CurrencyBids,
-.OpenBids,
-.OpenOffers,
-.TradeHistory {
- border: solid 1px #000;
- padding: 0;
-}
-
-.CurrencyQuote,
-.CurrencyTrade,
-.TradingDashboard,
-.OpenBids,
-.OpenOffers,
-.TradeHistory,
-.TradingDashboard .FooterPager {
- margin: 0 auto;
-}
-
-.CurrencyTrade,
-.TradingDashboard {
- margin-top: 20px;
-}
-
-.CurrencyTradeDetails {
- padding: 5px;
-}
-
-.CurrencyTradeDetail,
-.TradingDashboard .FooterPager {
- padding-top: 5px;
- text-align: center;
-}
-
-.CurrencyOffers,
-.CurrencyBids {
- width: 200px;
-}
-
-.CurrencyOffer,
-.AlternatingCurrencyOffer,
-.CurrencyBid,
-.AlternatingCurrencyBid {
- padding: 5px;
- text-align: center;
-}
-
-.CurrencyQuote .TableHeader,
-.CurrencyOffers .TableHeader,
-.CurrencyBids .TableHeader {
- font-weight: bold;
-}
-
-.CurrencyQuote .TableRow,
-.CurrencyOffers .TableRow,
-.CurrencyBids .TableRow {
- border-top: solid 1px #000;
-}
-
-.CurrencyQuote .Pair,
-.CurrencyQuote .Rate,
-.CurrencyQuote .Spread,
-.CurrencyQuote .HighLow {
- float: left;
- padding: 5px;
- text-align: center;
- width: 77px;
-}
-
-.DarkGradientBox {
- background: url(/images/DarkGradientW150.png) repeat-y top left;
- width: 150px;
- color: White;
- position: relative;
- border: solid 2px #7DADE0;
-}
-
-.DarkGradientBox .DGB_Header {
- font-size: 14px;
- font-weight: bold;
- text-align: center;
- padding-top: 5px;
- padding-bottom: 0;
- border-bottom: solid 2px #6e99c9;
-}
-
-.DarkGradientBox .DGB_TextBox {
- border: solid 2px #6e99c9;
-}
-
-.DarkGradientBox .DGB_Label {
- color: White;
- font-size: 10px;
- font-weight: bold;
- text-align: left;
-}
-
-.DarkGradientBox .DGB_Button {
- cursor: pointer;
- background-color: #435D77;
- color: White;
- text-decoration: none;
- border: solid 1px #777;
- padding: 6px 10px 6px 10px;
- font-family: Verdana, Sans-Serif;
- font-size: 12px;
- font-weight: bold;
- text-align: center;
- white-space: nowrap;
-}
-
-.DarkGradientBox .DGB_Button:link,
-.DarkGradientBox .DGB_Button:visited {
- background-color: #435D77;
- color: White;
- text-decoration: none;
-}
-
-.DarkGradientBox .DGB_Button:hover,
-.DarkGradientBox .DGB_Button:active {
- background-color: #B6CCE4;
- color: #435D77;
- text-decoration: none;
-}
-
-#FriendliestFolkPane {
- border-color: #000;
- border-style: solid;
- border-width: 1px;
- height: 184px;
- margin-top: 10px;
- overflow: auto;
- width: 770px;
-}
-
-#FriendliestFolk h4 {
- font-size: 10pt;
- font-weight: bold;
- line-height: 1em;
- margin-bottom: 5px;
- margin-top: 5px;
-}
-
-#GamesContainer {
- font-family: Verdana, Sans-Serif;
-}
-
-#GamesContainer h2 {
- font-family: Verdana, Sans-Serif;
- font-size: 2.5em;
- font-weight: normal;
- line-height: 1em;
- margin: 0;
- padding: 0;
-}
-
-#GamesContainer h4 {
- font-family: Verdana, Sans-Serif;
- font-size: 1.3em;
- font-weight: normal;
- letter-spacing: .1em;
- line-height: 1em;
- margin: 15px 0;
- padding: 0;
-}
-
-#GamesContainer ul {
- font-family: Verdana, Sans-Serif;
- list-style: none;
- margin: 10px 0 30px 0;
- padding-left: 0;
-}
-
-#GamesContainer ul li {
- font-family: Verdana, Sans-Serif;
- margin-bottom: .5em;
-}
-
-#GamesContainer ul a {
- font-size: 1.1em;
-}
-
-#GamesContainer .DisplayFilters {
- width: 170px;
-}
-
-#GamesContainer #Games {
- float: left;
- padding-bottom: 10px;
- padding-left: 0;
- padding-right: 0;
- width: 720px;
- overflow: visible;
-}
-
-.GameList {
- overflow: visible;
-}
-
-#GamesContainer .Ads_WideSkyscraper {
- border: solid 1px #000;
- float: right;
- text-align: right;
- width: 160px;
-}
-
-#GamesContainer #Games .FooterPager {
- margin: 20px 24px 0 0;
- padding: 2px 0;
- text-align: right;
-}
-
-#GamesContainer #Games .HeaderPager {
- margin: 0 24px 0 100px;
- padding: 30px 0;
- text-align: left;
-}
-
-#GamesContainer #Games .HeaderPager .Label,
-#GamesContainer #Games .FooterPager .Label {
- font-size: 1em;
- vertical-align: middle;
-}
-
-#GamesContainer .Game {
- margin: 0 10px 15px 10px;
- vertical-align: top;
- width: 162px;
-}
-
-#GamesContainer .Game .GameThumbnail {
- border: solid 1px #000;
- width: 160px;
- height: 100px;
- text-align: center;
-}
-
-#GamesContainer .Game .GameDetails {
- font-family: Verdana, Sans-Serif;
- overflow: hidden;
- padding: 2px 0 6px 0;
- width: 152px;
-}
-
-.GameDetails12>GameName {
- font-weight: bold;
-}
-
-.GameName {
- font-weight: bold;
- font-size: 12px;
-}
-
-#GamesContainer .GameName a {
- font-size: .9em;
- font-weight: bold;
- line-height: 1.5em;
- vertical-align: top;
-}
-
-.GamesBullet {
- padding-right: 3px;
-}
-
-#GamesContainer .Label,
-#GamesContainer .Detail,
-#GamesContainer .DetailHighlighted {
- font-size: .8em;
-}
-
-#GamesContainer .DetailHighlighted {
- color: Red;
- font-weight: bold;
-}
-
-#GamesContainer .GamesDisplaySet {
- float: left;
- font-family: Comic Sans MS, Arial, Sans-Serif;
- font-size: 1.5em;
-}
-
-.GamesInfoIcon,
-.GenreIcon,
-.GearIcon {
- margin-top: 1px;
- margin-right: 1px;
- position: relative;
- top: 3px;
-}
-
-.SearchBoxBack .StandardBox {
- background: #6e99c9;
-}
-
-.GameFilter {
- color: #555;
- margin-left: 10px;
- font-size: 14px;
-}
-
-.GameFilter ul {
- list-style-type: none;
- padding-left: 0;
- margin: 0;
-}
-
-.GameFilter ul li {
- margin: 5px 0;
-}
-
-.GameFilter .SelectedFilter,
-.GameFilter .SelectedGenre {
- background: url(/images/gamesPage_filterArrow.png) no-repeat 0 1px;
- cursor: pointer;
- padding-left: 20px;
- font-weight: normal;
-}
-
-.GameFilter .GamesFilter,
-.GameFilter .GamesGenre {
- padding-left: 20px;
- display: inline-block;
-}
-
-.GamesGenre h3 {
- display: inline-block;
- cursor: pointer;
- font-weight: normal;
-}
-
-#PlayTabs a {
- text-decoration: none;
-}
-
-.SelectedFilter,
-.SelectedGenre {
- font-weight: normal;
-}
-
-a.DisabledFilter,
-a.DisabledFilter:hover {
- color: gray;
- text-decoration: none;
- cursor: default;
-}
-
-a.GamesGenre.DisabledFilter h3,
-a.GamesGenre.DisabledFilter:hover h3 {
- cursor: default;
-}
-
-#BCOnlyPlaces {
- position: relative;
- width: 410px;
- text-align: center;
- float: left;
- margin-top: 8px;
- margin-bottom: 6px;
-}
-
-#BCOnlyPlaces .StandardBoxHeaderGray {
- width: 410px;
- height: 27px;
- padding: 9px 2px 0 2px;
- *padding: 5px 2px 0 2px;
-}
-
-#BCOnlyPlaces .StandardBox {
- height: 188px;
- padding: 2px 0;
-}
-
-#BCOnlyPlacesTitle {
- display: inline;
- font-weight: bold;
- font-size: 19px;
- position: relative;
- *margin-left: 5px;
-}
-
-#BCOnlyGamesContent {
- width: 370px;
- margin: 0 auto;
-}
-
-#BCOnlyGamesContentPrevNavButton {
- position: absolute;
- top: 105px;
- left: 10px;
- visibility: hidden;
-}
-
-#BCOnlyGamesContentNextNavButton {
- position: absolute;
- top: 105px;
- right: 10px;
-}
-
-#GenreDescriptionPanel {
- float: left;
- width: 695px;
- font-size: .9em;
- padding: 10px;
- border-top: 1px solid #AAA;
-}
-
-.SearchIconButton {
- background: url(/images/searchIcon.png) no-repeat;
- cursor: pointer;
- width: 16px;
- height: 16px;
- position: absolute;
- top: 5px;
- right: 4px;
-}
-
-.GameItem {
- padding: 6px;
- margin-left: 8px;
- margin-bottom: 8px;
- position: relative;
- text-align: left;
-}
-
-.GameItem:hover {
- display: block;
- z-index: 99;
-}
-
-.GameItem .AlwaysShown {
- position: relative;
- width: 160px;
- height: 130px;
-}
-
-.GameItem:hover .AlwaysShown {
- z-index: 999;
-}
-
-.GameItem .HoverShown {
- display: none;
- position: absolute;
- width: 160px;
- padding: 158px 15px 15px;
- top: -10px;
- left: -10px;
- border: solid 1px #888;
- background: #fff;
- font-size: 11px;
- text-align: left;
- color: #888;
- -moz-border-radius: 5px;
- -webkit-border-radius: 5px;
-}
-
-.GameItem .CreatorName {
- position: relative;
- top: -5px;
- font-size: 11px;
- color: #888;
-}
-
-.GameItem .BCOverlay {
- position: absolute;
- top: 81px;
- left: 0;
-}
-
-.GameItem .GenreIcon,
-.GameItem .GearIcon {
- position: static;
- top: 0;
- margin-top: 0;
- margin-right: 0;
-}
-
-#GamesLeftColumn {
- width: 136px;
-}
-
-.groupEmblemThumbnail {
- margin-top: 10px;
- margin-bottom: 10px;
- margin-left: 8px;
- margin-right: 8px;
- text-align: center;
- width: 105px;
- overflow: hidden;
-}
-
-#GroupThumbnails {
- text-align: center;
- margin-bottom: 10px;
-}
-
-.GroupDescriptionThumbnail {
- float: left;
- clear: none;
- margin: 0 10px 10px 0;
-}
-
-.GroupMembers {
- width: 100%;
-}
-
-.GroupMembers tr {
- padding-bottom: 10px;
-}
-
-.GroupMembers td {
- padding: 0 5px 10px 5px;
- text-align: center;
-}
-
-.IncompleteFormField {
- color: red;
-}
-
-.GroupWallPostButton {
- width: 69px;
- height: 53px;
- margin: 3px 0 4px 0;
- float: right;
-}
-
-.GroupWallPostText {
- width: 375px;
- height: 53px;
- float: left;
-}
-
-.GroupDescriptionEdit {
- border: none;
- border-style: none;
-}
-
-.EmblemAdminImage {
- margin: 0x;
-}
-
-.CreateNewGroup {
- padding-bottom: 10px;
- margin-bottom: 10px;
- display: block;
- text-align: center;
- font-size: 12px;
- cursor: pointer;
-}
-
-.CreateNewGroupError {
- color: Red;
-}
-
-.GroupMembersAdminTable tr {
- text-align: left;
-}
-
-.GroupMembersAdminTable td {
- width: 85px;
- margin: 2px;
-}
-
-#GroupSearchResults thead tr {
- background-color: #B0C4DE;
- color: Black;
-}
-
-#GroupSearchResults .GroupEmblemImg {
- border: solid 2px #B0C4DE;
- padding: 2px;
-}
-
-.selectedSmallThumb {
- border: solid 2px #FFE390;
-}
-
-.nonSelectedSmallThumb {
- border: solid 2px transparent;
-}
-
-#Help {
- border-style: ridge;
- border-color: #ddd;
- border-width: 5px;
- background-color: #eee;
- height: 600px;
- padding: 1px;
-}
-
-#Help h1 {
- text-indent: 10px;
-}
-
-#Help .salesForce,
-#Help .salesForce iframe {
- margin-left: 5px;
- margin-bottom: 10px;
- float: left;
- width: 625px;
- height: 500px;
-}
-
-#Help .avatar {
- text-align: center;
- display: block;
- float: right;
- clear: right;
- margin-right: auto;
- margin-left: auto;
- padding-left: 0;
- padding-right: 0;
-}
-
-#Help .descriptionPanels {
- background-color: Transparent;
- background-image: url('/images/Speech Bubble 225.gif');
- width: 225px;
- height: 235px;
- background-repeat: no-repeat;
- margin-top: 40px;
-}
-
-#Help .descriptionPanels p {
- font-family: Comic Sans MS;
- padding-top: 20px;
- padding-right: 40px;
- padding-left: 25px;
- text-align: left;
- color: Navy;
- font-size: 9pt;
-}
-
-#Help .navigation {
- clear: left;
- color: #6e99c9;
- border: none;
- background-color: Transparent;
- font-family: 'Comic Sans MS', Verdana, sans-serif;
- font-size: 10pt;
- font-weight: normal;
- text-decoration: none;
- text-align: center;
-}
-
-#Help .navigation .MenuItem {
- color: #6e99c9;
- font-size: 16px;
- line-height: 2em;
-}
-
-#Help .navigation a.MenuItem:link,
-#Help .navigation a.MenuItem:visited,
-#Help .navigation a.MenuItem:active {
- color: #6e99c9;
- text-decoration: none;
-}
-
-#Help .navigation a.MenuItem:hover {
- text-decoration: underline;
-}
-
-#Help .forumLinks {
- font-family: Sans-Serif;
- border-width: 3px;
- border-color: #ddd;
- border-style: groove;
- visibility: hidden;
- display: none;
- filter: alpha(opacity=93);
- opacity: .93;
- background-color: #eee;
- background-image: url('/images/help_gradient.png');
- background-repeat: repeat-y;
- background-position: left top;
- width: 150px;
- font-size: 10pt;
- text-align: center;
- padding: 5px;
- line-height: 2em;
-}
-
-#InboxContainer {
- margin-top: 10px;
-}
-
-#InboxContainer #InboxPane {
- float: left;
- position: relative;
- top: -2px;
- width: 700px;
-}
-
-.InboxDateField {
- text-align: right;
-}
-
-#InboxContainer h2 {
- font-family: Verdana, Sans-Serif;
- font-size: 2.5em;
- font-weight: normal;
- letter-spacing: .5em;
- line-height: 1em;
- margin: 0 0 10px 0;
- padding: 0;
-}
-
-#InboxContainer .Ads_WideSkyscraper {
- border: solid 1px #000;
- float: right;
- text-align: right;
- width: 160px;
-}
-
-#InboxContainer #Inbox {
- border: solid 1px #000;
-}
-
-#InboxContainer .Buttons {
- margin: 10px 0;
- text-align: center;
-}
-
-#InboxContainer .InboxHeader {
- background: url(/images/topNav_black.png);
- border: none;
- color: #fff;
- font: 1.2em/normal Verdana, sans-serif;
- font-weight: lighter;
- letter-spacing: .15em;
- text-align: center;
-}
-
-#InboxContainer .InboxRow {
- cursor: pointer;
- font: normal 1em/normal Verdana, sans-serif;
-}
-
-#InboxContainer .InboxRow_Unread {
- cursor: pointer;
- font: bold 1em/normal Verdana, sans-serif;
-}
-
-#InboxContainer .InboxRow:hover,
-#InboxContainer .InboxRow_Unread:hover,
-#InboxContainer .SystemAlertMessage:hover {
- background-color: #6e99c9;
- color: #fff;
-}
-
-#InboxContainer .InboxHeader a,
-#InboxContainer .InboxPager a,
-#InboxContainer .InboxRow:hover a,
-#InboxContainer .InboxRow_Unread:hover a,
-#InboxContainer .SystemAlertMessage:hover a {
- color: #fff;
-}
-
-#InboxContainer .InboxPager {
- background-color: #999;
- font: bold 1.2em/normal Verdana, sans-serif;
- letter-spacing: .15em;
- text-align: center;
-}
-
-#InboxContainer .SystemAlertMessage {
- cursor: pointer;
- font: normal 1em/normal Verdana, sans-serif;
- color: #F00;
-}
-
-#InboxContainer .SystemAlertMessage a {
- color: #F00;
-}
-
-#InfoContainer {
- background-color: #eee;
- border: solid 1px #000;
- color: #555;
- margin: 0 auto;
- width: 620px;
-}
-
-#InfoContainer h2 {
- background-color: #ccc;
- border-bottom: solid 1px #000;
- color: #333;
- font-size: x-large;
- margin: 0;
- text-align: center;
-}
-
-#InfoContainer #Content {
- font: normal 1em/normal Verdana, sans-serif;
- line-height: 1.5em;
- padding: 10px 20px 10px 20px;
-}
-
-#AlreadyInstalled {
- font-size: large;
- margin: 44px 44px 44px 44px;
-}
-
-#AlreadyInstalled a {
- text-decoration: underline;
-}
-
-#ItemContainer {
- margin-top: 10px;
-}
-
-#ItemContainer h2 {
- background-color: #036;
- border-bottom: solid 1px #555;
- color: #fff;
- font-family: Verdana, Helvetica, Sans-Serif;
- font-size: x-large;
- margin: 0;
- text-align: center;
-}
-
-#ItemContainer h3 {
- font-size: 1.5em;
- font-weight: normal;
- letter-spacing: .15em;
- line-height: 1em;
- margin: 0 0 .5em 0;
- padding: 0;
-}
-
-#ItemContainer #Item {
- color: #555;
- float: left;
- font-family: Verdana, Sans-Serif;
- width: 705px;
-}
-
-#ItemContainer #Details {
- margin: 10px;
-}
-
-#ItemContainer #Thumbnail,
-#ItemContainer #Thumbnail_Place {
- border: solid 1px #eee;
- padding: 0;
- text-align: left;
- min-width: 0;
-}
-
-#ItemContainer #Thumbnail {
- height: 420px;
- width: 420px;
-}
-
-#ItemContainer #Thumbnail_Place {
- height: 230px;
- width: 420px;
-}
-
-#ItemContainer #Actions,
-#ItemContainer #Actions_Place {
- width: 408px;
- background-color: #fff;
- padding: 5px;
- text-align: left;
- min-width: 0;
- overflow: hidden;
- top: 420px;
-}
-
-.AddRemoveFavorite {
- background: url(/images/css/favoriteStar_20h.png) no-repeat 0 -20px;
- margin: 0;
- display: inline-block;
- position: relative;
- top: 3px;
- *display: inline;
- *zoom: 1;
- padding-top: 4px;
- padding-left: 25px;
- width: 200px;
- height: 18px;
-}
-
-.AddRemoveFavorite:hover {
- background-position: 0 0;
-}
-
-#ItemContainer #Summary {
- background-color: #fff;
- border: dashed 1px #555;
- display: inline;
- float: right;
- padding: 7px;
- width: 235px;
-}
-
-#ItemContainer #Summary #Creator {
- clear: left;
-}
-
-#ItemContainer #Summary #DescriptionLabel {
- margin-bottom: .4em;
- margin-top: .7em;
-}
-
-.label {
- margin-bottom: .5em;
-}
-
-#ItemContainer #Summary .Description {
- border: solid 1px #555;
- font: normal 1em/normal Verdana, sans-serif;
- max-height: 136px;
- line-height: 1.5em;
- padding: 4px;
- overflow: auto;
- text-align: left;
-}
-
-#ItemContainer #Summary #ReportAbuse {
- margin: 0 auto;
- padding: 4px;
- text-align: center;
-}
-
-#ItemContainer #Summary #PublicDomainPurchase {
- float: left;
-}
-
-#ItemContainer #Summary #PublicDomainPurchase #PricePublicDomain {
- color: Blue;
- float: left;
- font-weight: bold;
- line-height: 2em;
- width: 100px;
-}
-
-#ItemContainer #Summary #PublicDomainPurchase #BuyForFree {
- float: left;
- line-height: 2em;
- width: 100px;
-}
-
-#ItemContainer #Summary #PublicDomainPurchase #BuyForFree .Button:hover {
- background-color: #6e99c9;
- border: solid 1px #000;
-}
-
-#ItemContainer #Summary #PublicDomainPurchase #BuyForFree a:hover {
- color: #fff;
-}
-
-#ItemContainer #Summary #RobuxPurchase #PriceInRobux {
- color: Green;
- float: left;
- font-weight: bold;
- line-height: 2em;
- width: 100px;
-}
-
-#ItemContainer #Summary #RobuxPurchase #BuyWithRobux {
- float: left;
- line-height: 2em;
- width: 100px;
-}
-
-#ItemContainer #Summary #RobuxPurchase #BuyWithRobux .Button:hover {
- background-color: #49b745;
- border: solid 1px #000;
-}
-
-#ItemContainer #Summary #RobuxPurchase #BuyWithRobux a:hover {
- color: #fff;
-}
-
-#ItemContainer #Summary #TicketsPurchase {
- clear: left;
-}
-
-#ItemContainer #Summary #TicketsPurchase #PriceInTickets {
- color: #fbb117;
- float: left;
- font-weight: bold;
- line-height: 2em;
- width: 100px;
-}
-
-#ItemContainer #Summary #TicketsPurchase #BuyWithTickets {
- float: left;
- line-height: 2em;
- width: 100px;
-}
-
-#ItemContainer #Summary #TicketsPurchase #BuyWithTickets .Button:hover {
- background-color: #fdd017;
- border: solid 1px #000;
-}
-
-#ItemContainer #Summary #TicketsPurchase #BuyWithTickets a:hover {
- color: #fff;
-}
-
-#ItemContainer #Configuration {
- background-color: #fff;
- border-bottom: dashed 1px #555;
- border-left: dashed 1px #555;
- border-right: dashed 1px #555;
- clear: right;
- float: right;
- margin-left: 10px;
- margin-top: -10px;
- padding: 5px 10px;
- text-align: center;
- width: 249px;
-}
-
-.ItemVerb {
- background-color: #fff;
- border: dashed 1px #555;
- text-align: center;
- height: 20px;
- margin-top: 5px;
-}
-
-#ItemContainer .Ownership {
- background-color: #ccc;
- border: dashed 1px #f00;
- clear: right;
- color: #f00;
- float: right;
- margin-left: 10px;
- margin-top: 0;
- padding: 10px 10px;
- text-align: center;
- width: 230px;
-}
-
-#ItemContainer .PlayGames {
- background-color: #ccc;
- border: dashed 1px Green;
- color: Green;
- margin-top: 10px;
- padding: 10px 5px;
- text-align: center;
- width: 408px;
-}
-
-#ItemContainer .BadgeStats {
- width: 408px;
- padding: 10px 5px;
-}
-
-#ItemContainer .RunningGames {
- background-color: #ccc;
- border: dashed 1px #555;
- color: #555;
- margin-top: 10px;
- padding: 10px 5px;
- text-align: center;
- width: 408px;
-}
-
-#ItemContainer .GameInstances {
- background-color: #fff;
- border: solid 1px #000;
- color: #555;
- width: 408px;
-}
-
-#ItemContainer .RefreshRunningGames {
- margin: 10px 0;
- text-align: center;
-}
-
-#ItemContainer #Ownership .Button,
-#ItemContainer .PlayGames .Button {
- background-color: #fff;
-}
-
-#ItemContainer #Ownership .Button:Hover {
- background-color: #fff;
- border: solid 1px #f00;
- color: #f00;
-}
-
-#ItemContainer .PlayGames .Button:Hover {
- background-color: #fff;
- border: solid 1px Green;
- color: Green;
-}
-
-#ItemContainer .CommentsContainer,
-#ItemContainer .TabbedInfoContainer {
- margin: 10px;
- margin-top: 0;
- width: 665px;
-}
-
-#ItemContainer .TabbedInfoContainer h3 {
- padding: 5px;
-}
-
-#ItemContainer .CommentsContainer .HeaderPager,
-#ItemContainer .CommentsContainer .FooterPager {
- padding: 5px 0;
- text-align: right;
-}
-
-#ItemContainer .CommentsContainer .Comments {
- border: dashed 1px #555;
- overflow: hidden;
- width: 663px;
-}
-
-#ItemContainer .CommentsContainer .Comment,
-#ItemContainer .CommentsContainer .AlternateComment {
- padding: 7px 10px;
-}
-
-#ItemContainer .CommentsContainer .Comment {
- background-color: #fff;
-}
-
-#ItemContainer .CommentsContainer .AlternateComment {
- background-color: #eee;
-}
-
-#ItemContainer .CommentsContainer .Commenter {
- float: left;
- width: 110px;
-}
-
-#ItemContainer .CommentsContainer .Avatar {
- border: solid 1px #555;
- height: 100px;
- width: 100px;
-}
-
-.Avatar {
- padding: 0 0 8px 0;
-}
-
-#ItemContainer .CommentsContainer .Post {
- float: left;
- width: 80%;
-}
-
-#ItemContainer .CommentsContainer .Content {
- margin: 10px 0;
- overflow: hidden;
-}
-
-#ItemContainer .CommentsContainer .PostAComment {
- margin: 10px 0 0 0;
-}
-
-#ItemContainer .CommentsContainer .PostAComment .Buttons {
- margin: 10px 0 0 0;
-}
-
-#ItemContainer .CommentsContainer .MultilineTextBox,
-#ItemContainer .CommentsContainer textarea {
- min-height: 0;
- width: 400px;
-}
-
-#EditItem {
- color: #555;
- float: left;
- font-family: Verdana, Sans-Serif;
- margin: 0;
-}
-
-#EditItemContainer h2 {
- background-color: #ccc;
- border-bottom: solid 1px #000;
- color: #333;
- font-family: Comic Sans MS, Sans-Serif;
- font-size: x-large;
- margin: 0;
- text-align: center;
-}
-
-#EditItemContainer fieldset {
- font-size: 1.2em;
- margin: 0;
- color: #000;
-}
-
-#EditItemContainer #Confirmation {
- border: dashed 1px #f00;
- background-color: #ccc;
- color: #f00;
- margin: 0 auto;
- margin-top: 10px;
- padding: 10px 5px;
- width: 410px;
-}
-
-#EditItemContainer #ItemName {
- margin: 0 auto;
- margin-top: 10px;
- padding: 0;
- text-align: left;
- width: 420px;
-}
-
-#EditItemContainer #ItemThumbnail {
- border: solid 1px #555;
- height: 230px;
- margin: 0 auto;
- margin-top: 10px;
- padding: 0;
- text-align: left;
- width: 420px;
-}
-
-#EditItemContainer #ItemDescription {
- margin: 0 auto;
- margin-top: 10px;
- padding: 0;
- text-align: left;
- width: 420px;
-}
-
-#EditItemContainer #Comments,
-#EditItemContainer #PlaceAccess,
-#EditItemContainer #PlaceCopyProtection,
-#EditItemContainer #AllowGear,
-#EditItemContainer #SetGenres,
-#EditItemContainer #VersionHistory,
-#EditItemContainer #PublicDomain,
-#EditItemContainer #SellThisItem,
-#EditItemContainer #PlaceReset,
-#EditItemContainer #PlaceBuildAccess,
-.MyItemOptions {
- margin: 0 auto;
- margin-top: 10px;
- width: 420px;
-}
-
-#EditItemContainer #SellThisItem #Pricing {
- background-color: #fff;
- border: dashed 1px #000;
- margin: 15px 5px 5px 5px;
- padding: 5px;
-}
-
-#EditItemContainer #SellThisItem #Price {
- margin-top: 10px;
-}
-
-#EditItemContainer #SellThisItem #Price .TextBox {
- padding: 2px 4px;
- width: 75px;
-}
-
-#EditItemContainer .CopyProtectionRow,
-#EditItemContainer .EnableCommentsRow,
-#EditItemContainer .PlaceAccessRow,
-#EditItemContainer .PublicDomainRow,
-#EditItemContainer .SellThisItemRow,
-#EditItemContainer .ResetPlaceRow {
- font-size: .9em;
- margin: 10px 0;
- text-align: center;
-}
-
-#EditItemContainer .PlaceAccessRow {
- margin: 10px 0 10px 100px;
- text-align: left;
-}
-
-#ConfigurePlaceContainer .ResetPlaceRow .Button {
- margin: 0 auto;
-}
-
-#EditItemContainer .PricingLabel {
- float: left;
- font-weight: bold;
- margin-right: 5px;
- text-align: right;
- width: 155px;
-}
-
-#EditItemContainer .PricingField_Robux {
- float: left;
- margin-left: 5px;
- text-align: left;
- width: 110px;
-}
-
-#EditItemContainer .PricingField_Tickets {
- float: left;
- margin-left: 5px;
- text-align: left;
- width: 110px;
-}
-
-#EditItemContainer .Buttons {
- margin: 0 auto;
- margin-top: 10px;
- margin-bottom: 10px;
- text-align: center;
-}
-
-#EditItemContainer .Button {
- border-color: #555;
- color: #555;
- cursor: pointer;
-}
-
-#EditItemContainer .Button:hover {
- background-color: #6e99c9;
- color: #fff;
-}
-
-#EditItemContainer .Label {
- font-size: 1.2em;
- margin: 0;
- padding: 0;
-}
-
-#EditItemContainer .TextBox {
- border: dashed 1px #555;
- margin: 0;
- padding: 5px 10px;
- width: 400px;
-}
-
-#EditItemContainer .Multiline {
- border: dashed 1px #555;
- margin: 0;
- padding: 5px 10px;
- width: 400px;
-}
-
-#EditItemContainer .Suggestion {
- font: normal .8em/normal Verdana, sans-serif;
- padding-left: 9px;
-}
-
-#ItemContainer .Ads_WideSkyscraper,
-#EditItemContainer .Ads_WideSkyscraper {
- border: solid 1px #000;
- float: right;
- text-align: right;
- width: 160px;
-}
-
-.GroupBuildRunningGameItem {
- border: solid 2px #50F;
-}
-
-.MultiplayerVisit {
- background: url(/images/Play.png);
- width: 250px;
- height: 48px;
-}
-
-.SoloVisit {
- background: url(/images/PlaySolo.png);
- width: 143px;
- height: 48px;
-}
-
-.SoloVisitText {
- display: none;
-}
-
-.BuildSolo {
- background: url(/images/BuildSolo2.png);
- width: 143px;
- height: 48px;
-}
-
-.EditButton {
- background: url(/images/EditMode2.png);
- width: 143px;
- height: 48px;
-}
-
-.PlaceInfoIcons {
- text-align: center;
- margin: 1em 5px;
-}
-
-.iPublic {
- background: url(/images/public.png);
- display: inline-block;
- width: 16px;
- height: 16px;
-}
-
-.iLocked {
- background: url(/images/locked.png);
- display: inline-block;
- width: 16px;
- height: 16px;
-}
-
-.iUnlocked {
- background: url(/images/unlocked.png);
- display: inline-block;
- width: 16px;
- height: 16px;
-}
-
-.SharedIcon {
- background: url(/images/Shared.png);
- display: inline-block;
- width: 16px;
- height: 16px;
-}
-
-.CopyLockedIcon {
- background: url(/images/CopyLocked.png);
- display: inline-block;
- width: 16px;
- height: 16px;
-}
-
-.AllGearIcon {
- background: url(/images/Suitcase16x16.png);
- display: inline-block;
- width: 16px;
- height: 16px;
-}
-
-.GenreGearIcon {
- background: url(/images/GenreSuitcase16x16.png);
- display: inline-block;
- width: 16px;
- height: 16px;
-}
-
-.NoGearIcon {
- background: url(/images/NoSuitcase16x16.png);
- display: inline-block;
- width: 16px;
- height: 16px;
-}
-
-#BadgeStatsHeader {
- width: 388px;
-}
-
-.item-header h1 {
- margin: 0;
- padding: 0;
- font-size: 16px;
- font-style: inherit;
- display: inline;
-}
-
-.section {
- padding: 8px 0 0 0;
-}
-
-.expires-div {
- margin: 16px 0 8px 0;
-}
-
-#timer {
- color: Red;
- margin: 8px 0;
-}
-
-.item-detail div,
-.creator-name {
- line-height: 1.5em;
-}
-
-#assetContainer,
-#placeContainer {
- float: left;
- width: 420px;
- overflow: hidden;
-}
-
-.updateSetsDiv {
- float: right;
- width: 248px;
- border: 2px dashed maroon;
- margin-top: 5px;
-}
-
-.newVersionMsg {
- padding: 5px 0 5px 0;
- text-align: center;
- color: Yellow;
- background-color: Maroon;
- float: right;
- width: 100%;
-}
-
-#updateSetContainer {
- padding: 5px;
- float: right;
- width: 100%;
-}
-
-#updateSetContainer p {
- cursor: pointer;
- font-size: 12px;
- float: right;
- width: 100%;
-}
-
-.resaleError {
- padding: 5px;
- background-color: #F00;
-}
-
-.resaleConfirmation {
- padding: 5px;
- background-color: #0F0;
-}
-
-.sellCollectibleMsg {
- font-family: Verdana, Helvetica, sans-serif;
- font-weight: bold;
- font-size: 14px;
-}
-
-.groupBuildingGameText {
- font-size: 16px;
- font-weight: bold;
- font-style: italic;
- line-height: 24px;
-}
-
-#ProcessPurchase_Free,
-#ProcessPurchase_Robux,
-#ProcessPurchase_Tickets,
-#ProcessRenew_Free,
-#ProcessRenew_Robux,
-#ProcessRenew_Tickets,
-#ProcessROBLOXPurchase {
- margin: 2.5em auto;
- display: none;
-}
-
-#Processing_Free,
-#Processing_Robux,
-#Processing_Tickets,
-#Processing_FreeRenew,
-#Processing_RobuxRenew,
-#Processing_TicketsRenew,
-.processingMsg {
- margin: 0 auto;
- text-align: center;
- vertical-align: middle;
-}
-
-.createSetPanelPopup {
- width: 400px;
- height: 100%;
- padding: 0;
- float: left;
- display: none;
-}
-
-.GetAFreeAccount:hover {
- background-position: 0 56px;
-}
-
-.GetAFreeAccount {
- width: 316px;
- height: 56px;
- background: url(/images/Buttons/getAFreeAccount.png);
-}
-
-.PlayAsGuest:hover {
- background-position: 0 56px;
-}
-
-.PlayAsGuest {
- width: 316px;
- height: 56px;
- background: url(/images/Buttons/playAsGuest.png);
-}
-
-.closeBtnCircle_35h:hover {
- background-position: 0 35px;
-}
-
-.closeBtnCircle_35h {
- width: 35px;
- height: 35px;
- background: url(/images/Buttons/closeBtnCircle_35h.png);
-}
-
-.fblike {
- display: inline-block;
- float: left;
- background-color: White;
-}
-
-.LinkCountContainer {
- width: 200px;
- margin: 0;
- padding: 5px;
-}
-
-.LinkStatusImage {
- float: left;
-}
-
-#ManageAccountButton img,
-#CancelButtonImg,
-#ChangeCreditCardInfoImg {
- border: none;
-}
-
-#ManageAccountButton {
- text-align: center;
-}
-
-#GoTurboPopupPanel,
-#TurnOffTurboPopupPanel {
- width: 550px;
- text-align: center;
-}
-
-#CurrentAccountUpgrades {
- width: 90%;
- margin: auto;
- text-align: center;
-}
-
-#CurrentAccountUpgrades table {
- border-collapse: collapse;
- margin-bottom: 15px;
- text-align: center;
- background-color: #d0d6e0;
- width: 225px;
- margin-left: auto;
- margin-right: auto;
-}
-
-#CurrentAccountUpgrades th {
- border-bottom: solid 1px #999;
- text-align: center;
-}
-
-.rightCellWall {
- border: 1px solid #999;
-}
-
-.CancelBuildersClubMembership,
-.ChangeCreditCardInfo {
- text-align: center;
- margin-top: 5px;
-}
-
-#BCCompareModal {
- background-color: White;
- border: solid 2px #6e99c9;
- margin: 5px;
- padding: 10px;
-}
-
-#BuyBCComparePanelTopInfo {
- text-align: center;
- padding: 10px 40px 10px 40px;
- width: 340px;
-}
-
-.BuyBCComparePanelTable {
- font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
- font-size: 12px;
- background: #fff;
- width: 340px;
- margin: 0 40px 0 40px;
- border-collapse: collapse;
- margin-bottom: 15px;
-}
-
-.BCCompareHeaderRow {
- color: #2163A5;
- padding: 10px 8px;
- border-bottom: 1px solid #D3D3D3;
- text-align: left;
-}
-
-.BuyBCComparePanelTable tr:hover td,
-.BuyBCComparePanelTable tr:hover td {
- color: Maroon;
-}
-
-.BCCompareRowOdd td,
-.BCCompareRowEven td {
- color: #2163A5;
- padding-top: 10px;
- padding-left: 10px;
- padding-bottom: 10px;
-}
-
-.BCCompareRowOdd {
- background: #e8edff;
-}
-
-#BCCompareButtons {
- text-align: center;
- width: 340px;
- margin: 0 40px 0 40px;
-}
-
-#upgrades-membership-options .leftBorder {
- border-left: 1px solid #D3D3D3;
-}
-
-#upgrades-membership-options .odd #upgrades-membership-options .LeftText {
- text-align: left;
-}
-
-.daysConversion {
- color: Red;
-}
-
-.AspNet-Login input {
- font-size: 1em;
-}
-
-.AspNet-Login label em {
- text-decoration: underline;
- font-style: normal;
-}
-
-.AspNet-Login .AspNet-Login-FailurePanel {
- color: #F00;
-}
-
-.AspNet-Login .AspNet-Login-UserPanel,
-.AspNet-Login .AspNet-Login-PasswordPanel,
-.AspNet-Login .AspNet-Login-RememberMePanel,
-.AspNet-Login .AspNet-Login-SubmitPanel {
- padding: .25em .1em 0 0;
-}
-
-.AspNet-Login .AspNet-Login-UserPanel,
-.AspNet-Login .AspNet-Login-PasswordPanel,
-.AspNet-Login .AspNet-Login-SubmitPanel {
- text-align: left;
-}
-
-.AspNet-Login .AspNet-Login-UserPanel label,
-.AspNet-Login .AspNet-Login-PasswordPanel label,
-#PaneLogin .TextboxLabel {
- font-weight: bold;
-}
-
-.AspNet-Login .AspNet-Login-UserPanel input,
-.AspNet-Login .AspNet-Login-PasswordPanel input {
- width: 9em;
-}
-
-#PaneNewUser {
- float: right;
- width: 170px;
- background-color: #dcdcdc;
- padding: 0 22px 22px;
-}
-
-#PaneLogin {
- width: 18em;
- padding: 0;
-}
-
-#PaneLogin .AspNet-Login div {
- margin: 10px;
-}
-
-#LoginView {
- border: solid 1px Black;
- width: 150px;
- height: 250px;
-}
-
-#LoginView h5 {
- background-color: #ccc;
- border-bottom: solid 1px #000;
- margin: 0;
-}
-
-#LoginView #AlreadySignedIn {
- background-color: #eee;
-}
-
-#LoginView .Label {
- font-weight: bold;
-}
-
-#LoginView .Text {
- width: 133px;
-}
-
-#LoginView .AspNet-Login {
- height: 225px;
- background-color: #eee;
-}
-
-#LoginView .AspNet-Login .AspNet-Login-InstructionPanel,
-#LoginView .AspNet-Login .AspNet-Login-HelpPanel,
-#LoginView .AspNet-Login .AspNet-Login-UserPanel,
-#LoginView .AspNet-Login .AspNet-Login-PasswordPanel,
-#LoginView .AspNet-Login .AspNet-Login-RememberMePanel {
- padding: 3px 5px 3px 5px;
- text-align: left;
-}
-
-#LoginView .AspNet-Login .AspNet-Login-SubmitPanel,
-#LoginView .AspNet-Login .AspNet-Create-Account {
- padding: 10px 5px 5px 10px;
- text-align: center;
-}
-
-#LoginView .AspNet-Login .AspNet-Login-PasswordRecoveryPanel {
- padding: 5px 5px 5px 5px;
- text-align: center;
-}
-
-#LoginView .AspNet-Login .AspNet-Login-PasswordRecoveryPanel a {
- color: #999;
- font: normal 9px/normal Verdana, sans-serif;
- padding: 5px 5px 5px 5px;
- text-align: center;
-}
-
-#LoginView .AspNet-Login .AspNet-Login-PasswordRecoveryPanel a:hover {
- color: Blue;
-}
-
-#Sidebars {
- float: right;
- width: 250px;
-}
-
-#AlreadyRegistered,
-#TermsAndConditions {
- background-color: #eee;
- border: solid 1px #000;
- color: #555;
- font: normal 12px/normal Verdana, sans-serif;
- margin-top: 10px;
- padding: 0 20px 10px 20px;
-}
-
-#AlreadyRegistered h3,
-#TermsAndConditions h3 {
- background-color: #ccc;
- border-bottom: solid 1px #000;
- color: #333;
- font-weight: bold;
- margin: 0 -20px 0 -20px;
- padding: 4px;
- text-align: center;
-}
-
-#TermsAndConditions {
- margin-top: 20px;
-}
-
-.Registration {
- background-color: #eee;
- border: solid 1px #000;
- color: #555;
- float: left;
- margin-top: 10px;
- width: 620px;
-}
-
-.Registration h2 {
- background-color: #ccc;
- border-bottom: solid 1px #000;
- color: #333;
- font-size: x-large;
- margin: 0;
- text-align: center;
-}
-
-.Registration h3 {
- margin: 10px 0 0 0;
- text-align: center;
-}
-
-.Registration fieldset {
- font-size: 1.2em;
- margin: 15px 0 0 0;
-}
-
-.Registration .TextBox {
- vertical-align: middle;
- width: 150px;
-}
-
-.Registration .Label {
- vertical-align: middle;
-}
-
-.Registration #EnterUsername,
-.Registration #EnterPassword,
-.Registration #EnterEmail,
-.Registration #EnterAgeGroup,
-.Registration #EnterChatMode {
- margin: 0 auto;
- width: 60%;
-}
-
-.Registration .UsernameRow,
-.Registration .PasswordRow,
-.Registration .ConfirmPasswordRow,
-.Registration .EmailRow {
- height: 5em;
- line-height: 5em;
- padding: 3px;
- text-align: right;
-}
-
-.Registration .PasswordRow,
-.Registration .ConfirmPasswordRow {
- height: 3em;
- line-height: 3em;
-}
-
-.Registration .AgeGroupRow,
-.Registration .ChatModeRow {
- font-size: .9em;
- margin: 10px 0 10px 100px;
-}
-
-.Registration .Confirm {
- margin: 20px 0 20px 0;
- text-align: center;
-}
-
-.Registration .Validators {
- margin-left: 9px;
-}
-
-.Registration .Legend {
- color: Blue;
- margin-left: 9px;
-}
-
-.Registration .Suggestion {
- font: normal .8em/normal Verdana, sans-serif;
- padding-left: 9px;
-}
-
-.Registration label {
- margin-right: 5px;
-}
-
-.Registration input {
- width: 9em;
-}
-
-.AgeOptions {
- margin: 0 auto;
- margin-top: 20px;
- width: 490px;
-}
-
-.AgeOptions #Under13,
-.AgeOptions #Over12 {
- margin: 0;
- padding: 0 20px;
- width: 200px;
- text-align: center;
-}
-
-.AgeOptions #ParentAccount {
- margin: 0;
- padding: 0 0 0 40px;
- width: 400px;
- text-align: center;
-}
-
-#AgeOptions .Label {
- text-align: center;
-}
-
-.MessageContainer .MultilineTextBox {
- min-height: 50px;
-}
-
-.MessageContainer #AdsPane {
- border: solid 1px #000;
- float: left;
- width: 160px;
-}
-
-.MessageContainer #MessagePane {
- float: left;
- margin: 0 0 0 60px;
- width: 650px;
-}
-
-.MessageContainer h3 {
- text-align: left;
- width: 622px;
-}
-
-.MessageContainer #MessagePane .Buttons {
- width: 622px;
-}
-
-.MessageContainer #MessagePane .Buttons .Button {
- margin: 10px 0 0 10px;
-}
-
-.MessageContainer .Label {
- font-weight: bold;
- padding: 6px 0 3px 0;
-}
-
-.MessageContainer .MessageReaderContainer {
- border: solid 1px #000;
- padding: 10px;
- width: 95%;
-}
-
-.MessageReaderContainer #Message {
- text-align: left;
-}
-
-#Message #DateSent {
- text-align: left;
-}
-
-#Message #Author {
- margin: 0;
- text-align: left;
-}
-
-#Message #Subject {
- display: inline-block;
- *display: inline;
- font-weight: bold;
- margin: 0;
- text-align: center;
- width: 350px;
- *zoom: 1;
-}
-
-#Message .Body {
- text-align: left;
- vertical-align: top;
-}
-
-#MessageEditorContainer {
- border: solid 1px #000;
- padding: 10px;
- width: 95%;
-}
-
-.EmptyInbox {
- text-align: center;
- margin: 20px 0;
-}
-
-.MessageEditor {
- text-align: left;
-}
-
-.MessageEditor #From {
- text-align: left;
- width: 39%;
-}
-
-.MessageEditor #To {
- margin: 5px 0 0 0;
- text-align: left;
- width: 39%;
-}
-
-.MessageEditor .CannedResponsesPanel {
- background-color: #eee;
- border: solid 1px #000;
- margin: 30px 0;
- width: 200px;
-}
-
-.MessageEditor .CannedResponsesPanel h4 {
- background-color: #ccc;
- border-bottom: solid 1px #000;
- font-size: 1.3em;
- margin: 0;
- text-align: center;
- display: block;
-}
-
-.MessageEditor #CannedResponses {
- margin: 0;
- padding: 5px 0;
- width: 200px;
-}
-
-.MessageEditor .CannedResponse {
- margin: 0;
- padding: 7px 5px;
- text-align: center;
- width: 190px;
-}
-
-.MessageEditor #CannedResponses .Button {
- padding: 3px 5px;
-}
-
-.MessageEditor .Body {
- text-align: left;
- vertical-align: top;
-}
-
-.MessageContainer #Confirmation h3 {
- text-align: left;
- width: 422px;
-}
-
-.MessageContainer #Confirmation .Buttons {
- width: 422px;
-}
-
-.MessageContainer #Confirmation #Message {
- border: solid 1px #000;
- padding: 10px;
- width: 95%;
-}
-
-#InvitationContainer #AdsPane {
- border: solid 1px #000;
- float: left;
- width: 160px;
-}
-
-#InvitationContainer #InvitationPane {
- float: left;
- margin: 0 0 0 60px;
- width: 650px;
-}
-
-#InvitationContainer h3 {
- text-align: left;
- width: 622px;
-}
-
-#InvitationContainer .Buttons {
- width: 622px;
-}
-
-#InvitationContainer .Button {
- float: right;
- font-family: Verdana, Sans-Serif;
- padding: 3px 10px 3px 10px;
- text-decoration: none;
-}
-
-#InvitationContainer .TextBox {
- border-color: Gray;
- border-style: dashed;
- padding: 5px;
- width: 98%;
-}
-
-#InvitationContainer .Label {
- font-weight: bold;
-}
-
-#InvitationContainer .MessageReaderContainer {
- border-style: solid;
- border-width: 1px;
- border-color: #000;
- padding: 10px;
- width: 95%;
-}
-
-.MessageReaderContainer #Message {
- float: left;
- text-align: left;
-}
-
-#InvitationContainer #MessageEditorContainer .MessageEditor .CannedResponsesPanel {
- display: none;
-}
-
-#InvitationContainer #Confirmation h3 {
- text-align: left;
- width: 422px;
-}
-
-#InvitationContainer #Confirmation .Buttons {
- width: 422px;
-}
-
-#InvitationContainer #Confirmation #Message {
- border: solid 1px #000;
- margin: 10px;
- padding: 10px;
- width: 95%;
-}
-
-.ReportAbuse {
- position: relative;
- text-align: left;
-}
-
-.ReportAbuse .AbuseButton a {
- color: #F99;
- background: none;
- padding-left: 16px;
- padding-bottom: 2px;
-}
-
-.ReportAbuse .AbuseButton a:hover {
- background: url("/images/css/abuse.png") no-repeat scroll 0 2px transparent;
- color: #F00;
-}
-
-.ReportAbuse img {
- display: none;
-}
-
-#ParentsContainer #BreadcrumbsContainer {
- margin-bottom: 20px;
-}
-
-#ParentsContainer h2 {
- font-family: Verdana, Sans-Serif;
- font-size: 2.5em;
- font-weight: normal;
- line-height: 1em;
- margin: 0 0 20px 0;
-}
-
-#ParentsContainer #LeftColumn {
- float: left;
- padding: 0 15px 0 0;
- width: 400px;
-}
-
-#ParentsContainer #RightColumn {
- float: right;
- padding: 0 0 0 15px;
- width: 400px;
-}
-
-#ParentsContainer .ParentsSection {
- background-color: #fff;
- border: solid 1px #ccc;
- height: 120px;
- margin-bottom: 20px;
- padding: 15px 15px;
- width: 370px;
-}
-
-#ParentsContainer h3,
-dt {
- color: Blue;
- font-family: Verdana, Sans-Serif;
- font-size: 1.3em;
- font-weight: normal;
- letter-spacing: .1em;
- line-height: 1em;
-}
-
-#ParentsContainer .SectionIcon {
- float: left;
- margin-right: 20px;
-}
-
-#ParentsContainer .PageImage {
- float: right;
-}
-
-#partycontainer {
- bottom: 110px;
- right: 10px;
-}
-
-.partyWindow {
- color: #666;
- font-family: Verdana, Geneva, sans-serif;
- font-size: 11px;
- width: 250px;
-}
-
-.partyWindow .title {
- background: transparent url('/images/friendsbar/tab_blue19h_l.gif') no-repeat left top;
- display: block;
- text-decoration: none;
- padding-left: 2px;
- height: 19px;
- width: 248px;
- cursor: pointer;
-}
-
-.partyWindow .title span {
- background: transparent url('/images/friendsbar/tab_blue19h_r.gif') no-repeat right top;
- display: block;
- height: 15px;
- padding: 2px 15px 2px 7px;
- text-decoration: none;
- color: #fff;
-}
-
-.partyWindow .title_flash {
- background: transparent url('/images/friendsbar/tab_white19h_l2.gif') no-repeat left top;
-}
-
-.partyWindow .title_flash span {
- background: transparent url('/images/friendsbar/tab_white19h_r2.gif') no-repeat right top;
- color: #444;
-}
-
-.partyWindow .title strong {
- display: block;
- padding: 2px 15px 4px 6px;
- background: url("/images/chat/tab_blue21h_r.png") no-repeat right top;
- color: #fff;
- width: 227px;
- font-weight: bold;
-}
-
-.partyWindow .closeparty {
- width: 10px;
- height: 9px;
- margin: 5px 9px 0 0;
- cursor: pointer;
- position: absolute;
- right: 0;
- top: 0;
- color: #fff;
- font-weight: bold;
- font-size: 14px;
-}
-
-.partyWindow .main {
- clear: both;
- width: 248px;
- height: auto;
- margin: 0;
- background: #f2f2f2;
- border: 1px solid #a6a6a6;
- border-top: 0 none;
- overflow: auto;
-}
-
-.partyWindow .kickuser {
- float: right;
- padding-right: 5px;
- color: Red;
- cursor: pointer;
-}
-
-#new_party p {
- text-align: center;
- padding: 40px 0 0 0;
-}
-
-#party_none .main .btn_green21h {
- margin: 15px 0 0 77px;
-}
-
-.clear {
- clear: both;
-}
-
-.main #new_party_clear {
- padding: 40px 0 0 0;
-}
-
-.btn_green21h {
- float: left;
- background: url("/images/chat/btn_green21h_l.png") no-repeat left top;
- padding: 0 0 0 2px;
-}
-
-.btn_green21h a {
- display: block;
- padding: 2px 14px 4px 10px;
- background: url("/images/chat/btn_green21h_r.png") no-repeat right top;
- color: White;
- font-family: verdana;
- font-weight: bold;
- text-decoration: none;
-}
-
-.btn_green21h:hover {
- background: url("/images/chat/btn_green21h_over_l.png") no-repeat left top;
-}
-
-.btn_green21h:hover a {
- background: url("/images/chat/btn_green21h_over_r.png") no-repeat right top;
-}
-
-.btn_red21h {
- float: left;
- background: url("/images/chat/btn_red21h_l.png") no-repeat left top;
- padding: 0 0 0 2px;
-}
-
-.btn_red21h a {
- display: block;
- padding: 2px 14px 4px 10px;
- background: url("/images/chat/btn_red21h_r.png") no-repeat right top;
- color: White;
- font-family: verdana;
- font-weight: bold;
- text-decoration: none;
-}
-
-.btn_red21h:hover {
- background: url("/images/chat/btn_red21h_over_l.png") no-repeat left top;
-}
-
-.btn_red21h:hover a {
- background: url("/images/chat/btn_red21h_over_r.png") no-repeat right top;
-}
-
-.btn_black21h {
- float: left;
- background: url("/images/chat/btn_black21h_l.png") no-repeat left top;
- padding: 0 0 0 2px;
- color: White;
-}
-
-.btn_black21h a {
- display: block;
- padding: 2px 14px 4px 10px;
- background: url("/images/chat/btn_black21h_r.png") no-repeat right top;
- color: #FFF;
- font-family: verdana;
- font-weight: bold;
- text-decoration: none;
-}
-
-.btn_black21h:hover {
- background: url("/images/chat/btn_black21h_over_l.png") no-repeat left top;
-}
-
-.btn_black21h:hover a {
- background: url("/images/chat/btn_black21h_over_r.png") no-repeat right top;
-}
-
-.main h1 {
- padding: 15px 20px 15px 20px;
- font-size: 130%;
- text-align: center;
-}
-
-.main #invite_status {
- padding: 10px 0 10px 0;
-}
-
-.main p {
- padding: 0 0 7px 0;
-}
-
-.main .btn_green21h {
- float: left;
- margin: 0 0 0 35px;
-}
-
-.main .btn_black21h {
- float: right;
- margin: 0 35px 0 0;
-}
-
-.main #invite_clear {
- padding: 15px 0 0 0;
-}
-
-dt {
- float: left;
-}
-
-dd {
- margin-left: 30px;
-}
-
-.grey9 {
- color: gray;
- font-size: 9px;
-}
-
-.status {
- color: gray;
- font-size: 11px;
-}
-
-.name_me {
- font-weight: bold;
- color: #06c;
-}
-
-.name_other {
- font-weight: bold;
- color: #007b00;
-}
-
-.name_status {
- font-weight: bold;
-}
-
-.partyWindow {
- color: black;
- font-size: 11px;
- height: auto;
-}
-
-.members dl {
- padding: 0 0 0 5px;
-}
-
-.members dt {
- padding: 4px 0 0 0;
-}
-
-.members dd {
- padding: 4px 0 1px 0;
-}
-
-.main p {
- padding: 10px 0 5px 0;
- text-align: center;
-}
-
-#chat_messages {
- padding: 0 3px 3px 3px;
- margin: 5px 5px 0 5px;
- height: 217px;
- overflow: auto;
- background-color: white;
- border-style: solid;
- border-width: 1px;
- border-color: #aaa;
-}
-
-#chat_messages li {
- padding: 6px 0 0 0;
- list-style-type: none;
-}
-
-#party_game_thumb {
- width: 75px;
- margin-right: 5px;
- float: left;
-}
-
-#party_current_game {
- margin: 5px;
-}
-
-#party_game_name {
- width: 140px;
- float: left;
-}
-
-#party_game_follow_me {
- margin-top: 5px;
-}
-
-#chat_input {
- margin: 5px 5px 0 5px;
- padding-right: 2px;
-}
-
-#chat_input input {
- border: 1px solid #ccc;
- width: 236px;
- height: 40px;
-}
-
-#chat_input textarea {
- border: 1px solid #aaa;
- overflow: auto;
- width: 100%;
- height: 50px;
-}
-
-.main #leader_clear {
- padding: 15px 0 0 0;
-}
-
-#party_my .main .btn_black21h {
- margin: 15px 70px 0 0;
-}
-
-.GuestPlayAvatarImage {
- border: solid 3px green;
-}
-
-.GuestPlayAvatarImage:Hover {
- border: solid 3px #0C0;
-}
-
-#ConfigurePlaceContainer {
- background-color: #eee;
- border: solid 1px #000;
- color: #555;
- margin: 0 auto;
- width: 620px;
-}
-
-#ConfigurePlaceContainer h2 {
- background-color: #ccc;
- border-bottom: solid 1px #000;
- color: #333;
- font-size: x-large;
- margin: 0;
- text-align: center;
-}
-
-#ConfigurePlaceContainer fieldset {
- font-size: 1.2em;
- margin: 0;
-}
-
-#ConfigurePlaceContainer #PlaceName {
- margin: 0 auto;
- margin-top: 10px;
- padding: 0;
- text-align: left;
- width: 420px;
-}
-
-#ConfigurePlaceContainer #PlaceThumbnail {
- border: solid 1px #555;
- height: 230px;
- margin: 0 auto;
- margin-top: 10px;
- padding: 0;
- text-align: left;
- width: 420px;
-}
-
-#ConfigurePlaceContainer #PlaceDescription {
- margin: 0 auto;
- margin-top: 10px;
- padding: 0;
- text-align: left;
- width: 420px;
-}
-
-#ConfigurePlaceContainer #PlaceAccess,
-#ConfigurePlaceContainer #PlaceCopyProtection,
-#ConfigurePlaceContainer #Comments,
-#ConfigurePlaceContainer #PlaceIsDefault,
-#ConfigurePlaceContainer #PlaceReset,
-#ConfigurePlaceContainer #AllowGear,
-#ConfigurePlaceContainer #SetGenres,
-#ConfigurePlaceContainer #PlaceBuildAccess {
- margin: 0 auto;
- margin-top: 10px;
- width: 420px;
-}
-
-#ConfigurePlaceContainer .PlaceAccessRow,
-#ConfigurePlaceContainer .CopyProtectionRow,
-#ConfigurePlaceContainer .EnableCommentsRow,
-#ConfigurePlaceContainer .PlaceIsDefaultRow,
-.MyItemIndentedOption {
- font-size: .9em;
- margin: 10px 0 10px 100px;
-}
-
-#ConfigurePlaceContainer .ResetPlaceRow {
- font-size: .9em;
- margin: 10px 0;
- text-align: center;
-}
-
-#ConfigurePlaceContainer .ResetPlaceRow .Button {
- margin: 0 auto;
-}
-
-#ConfigurePlaceContainer .Buttons {
- margin: 0 auto;
- margin-top: 10px;
- margin-bottom: 10px;
- text-align: center;
-}
-
-#ConfigurePlaceContainer .Button {
- border-color: #555;
- color: #555;
- cursor: pointer;
-}
-
-#ConfigurePlaceContainer .Button:hover {
- background-color: #6e99c9;
- color: #fff;
-}
-
-#ConfigurePlaceContainer .Label {
- font-size: 1.2em;
- margin: 0;
- padding: 0;
-}
-
-#ConfigurePlaceContainer .TextBox {
- border: dashed 1px #555;
- margin: 0;
- padding: 5px 10px;
- width: 400px;
-}
-
-#ConfigurePlaceContainer .MultilineTextBox {
- border: dashed 1px #555;
- margin: 0;
- padding: 5px 10px;
- width: 400px;
-}
-
-#ConfigurePlaceContainer .Suggestion {
- font: normal .8em/normal Verdana, sans-serif;
- padding-left: 9px;
-}
-
-#ConfigurePlaceContainer .popupControl {
- border-color: #000;
-}
-
-#ConfigurePlaceContainer .PopUpOption {
- font: normal .8em/normal Verdana, sans-serif;
- padding: 4px;
-}
-
-#ConfigurePlaceContainer .PopUpInstruction {
- font: normal 1.1em/normal Verdana, sans-serif;
- padding: 4px;
- text-align: center;
-}
-
-#Place_PlacePanel {
- float: left;
- width: 490px;
- margin-right: 10px;
-}
-
-#Place_AuthorPanel {
- float: left;
- width: 200px;
-}
-
-#Place_GamesPanel {
- margin-top: 10px;
- width: 700px;
- clear: left;
-}
-
-#ConfigureShowcase {
- font-family: Verdana, sans-serif;
-}
-
-#ConfigureShowcase h2 {
- font-size: 2.5em;
- font-weight: normal;
- line-height: 1em;
- margin: 0;
- padding: 0;
-}
-
-#ConfigureShowcase .CallbackStyle {
- border: thin blue inset;
-}
-
-#ConfigureShowcase .DragHandle {
- width: 161px;
- height: 101px;
- cursor: move;
- border: outset 1px white;
-}
-
-#ConfigureShowcase .ItemArea {
- float: left;
- font-size: 1.2em;
- height: 82px;
- padding: 10px;
- text-align: left;
- width: 500px;
-}
-
-#ConfigureShowcase .ActionsArea {
- float: left;
- font-weight: bold;
- height: 82px;
- padding: 10px;
- text-align: right;
- width: 155px;
-}
-
-#ConfigureShowcase .ReorderCue {
- border: dashed thin black;
- width: 100%;
- height: 101px;
-}
-
-#ConfigureShowcase ul,
-#ConfigureShowcase ol {
- margin: 0;
-}
-
-#ConfigureShowcase li {
- background: #EEE;
- border: solid 1px #000;
- color: #000;
- list-style: none;
- margin: 3px 0;
- width: 100%;
-}
-
-#ConfigureShowcase blockquote li {
- border-style: none;
- list-style-type: circle;
- margin-left: 20px;
-}
-
-.PlaceLauncherStatus {
- color: #333;
- display: none;
- font-size: 16px;
- font-weight: bolder;
- line-height: 19px;
-}
-
-.PlaceLauncherStatusBackBuffer {
- position: relative;
- display: none;
-}
-
-.CancelPlaceLauncherButton {
- background-color: White;
- border: none;
- color: Blue;
- cursor: pointer;
- font-size: 12px;
-}
-
-.CancelPlaceLauncherButton:Hover,
-.CancelPlaceLauncherButton:Active {
- background-color: White;
- border: none;
- color: Blue;
- cursor: pointer;
- text-decoration: underline;
-}
-
-.PlaceLauncherModal {
- border: none;
- color: Black;
- height: 125px;
- margin: 1.5em;
- padding: 10px;
- text-align: center;
- width: 360px;
-}
-
-#FeaturedGameButtonContainer {
- border: none;
- width: 330px;
- height: 267px;
-}
-
-.FeaturedGameButton {
- cursor: pointer;
- position: absolute;
- right: 60px;
- top: 28px;
-}
-
-.VisitButtonsGuestCharacter {
- display: inline-block;
- *display: inline;
- padding: 10px 5px;
-}
-
-legend span {
- color: #777;
- line-height: 6px;
-}
-
-#EditProfileContainer {
- background-color: #eee;
- border: solid 1px #000;
- color: #555;
- margin: 0 auto;
- width: 620px;
-}
-
-#EditProfileContainer h2 {
- background-color: #ccc;
- border-bottom: solid 1px #000;
- color: #333;
- font-size: x-large;
- margin: 0;
- text-align: center;
-}
-
-#EditProfileContainer h3 {
- text-align: center;
-}
-
-#EditProfileContainer fieldset {
- font-size: 1.2em;
- margin: 15px 0 0 0;
-}
-
-#EditProfileContainer .MultilineTextBox {
- width: 250px;
-}
-
-#EditProfileContainer .TextBox {
- vertical-align: middle;
- width: 150px;
-}
-
-#EditProfileContainer .Label {
- vertical-align: middle;
-}
-
-#EditProfileContainer #Confirmation {
- border: dashed 1px #f00;
- background-color: #ccc;
- color: #f00;
- font-family: Verdana, Sans-Serif;
- margin: 0 auto;
- margin-top: 10px;
- padding: 10px 5px;
- text-align: center;
- width: 410px;
-}
-
-#EditProfileContainer #AgeGroup,
-#EditProfileContainer #ChatMode,
-#EditProfileContainer #PrivacyMode,
-#EditProfileContainer #ResetPassword,
-#EditProfileContainer #Blurb {
- margin: 0 auto;
- width: 60%;
-}
-
-#EditProfileContainer #EnterEmail {
- margin: 0 auto;
- width: 60%;
- text-align: left;
-}
-
-#EditProfileContainer .Buttons {
- margin: 20px 0 20px 0;
- text-align: center;
-}
-
-#EditProfileContainer .AgeGroupRow,
-#EditProfileContainer .ChatModeRow {
- font-size: .9em;
- margin: 10px 0 10px 100px;
-}
-
-#EditProfileContainer .ResetPasswordRow {
- margin: 10px 0;
- text-align: center;
-}
-
-#EditProfileContainer .BlurbRow {
- padding: 10px 4px 10px 4px;
- text-align: right;
-}
-
-#EditProfileContainer .Legend {
- color: Blue;
- margin-left: 9px;
-}
-
-#EditProfileContainer .Suggestion {
- font: normal .8em/normal Verdana, sans-serif;
- padding-left: 9px;
-}
-
-#EditProfileContainer .Validators {
- margin-left: 9px;
-}
-
-.FrontPagePanel {
- float: left;
- border: solid 1px black;
- margin: 5px;
- background-color: White;
-}
-
-#SignInPane {
- border: none;
- margin-left: 0;
- width: 152px;
- height: 250px;
-}
-
-#Movie {
- width: 424px;
- height: 250px;
-}
-
-#FrontPageRectangleAd {
- margin: 5px 0 5px 5px;
- width: 300px;
- height: 250px;
- background-color: Transparent;
-}
-
-#SalesPitch {
- margin-left: 0;
- width: 586px;
- height: 90px;
-}
-
-#WhatsNew {
- margin-left: 0;
- width: 586px;
- height: 280px;
-}
-
-#RandomFacts {
- float: right;
- margin-right: 0;
- width: 300px;
- height: 150px;
-}
-
-.RandomFactoid {
- text-align: center;
- height: 32px;
- width: 290px;
- padding: 2px;
- overflow: hidden;
-}
-
-#marqueecontainer {
- position: relative;
- width: 300px;
- height: 100px;
- background-color: white;
- overflow: hidden;
-}
-
-.RandomFactoid img {
- float: left;
-}
-
-#ParentsCorner {
- margin-right: 0;
- width: 300px;
- height: 220px;
- _height: 240px;
-}
-
-#ParentsCorner #Inside {
- padding: 10px;
-}
-
-.ShieldImage {
- float: left;
- padding: 5px;
-}
-
-.TrusteeSeal {
- float: left;
- width: 140px;
- padding: 5px;
-}
-
-#NewsFeeder {
- margin-right: 0;
- width: 158px;
-}
-
-#FrontPageBannerAd {
- margin-left: 0;
- width: 728px;
- height: 90px;
- background-color: Transparent;
-}
-
-.BadAdButton {
- background-color: Transparent;
- border: 0;
- font-size: .8em;
- font-family: Verdana;
- padding: 0;
- position: relative;
- text-align: center;
- height: 8px;
- top: -2px;
- right: 0;
-}
-
-.BadAdButton:hover {
- background-color: #fff;
- border: solid 1px #000;
- text-decoration: none;
-}
-
-.Centered {
- margin-left: auto;
- margin-right: auto;
-}
-
-.ShadowedStandardBox {
- position: relative;
- z-index: 0;
- _padding-bottom: 6px;
- _overflow-y: hidden;
- margin-bottom: 10px;
-}
-
-.ShadowedStandardBox .Header {
- background: url(/images/HeaderGradientW800.png) repeat-y top left;
- text-align: center;
- color: White;
- height: 20px;
- line-height: 20px;
- font-size: 15px;
- font-weight: bold;
- display: block;
- position: relative;
- z-index: 0;
- white-space: nowrap;
-}
-
-.ShadowedStandardBox .Content {
- position: relative;
- z-index: 0;
- border: 2px solid #6e99c9;
- background-color: White;
- height: 100%;
- _height: 3000px;
- padding: 10px 10px 10px 10px;
-}
-
-.Shadow {
- display: block;
- background: url(/images/ShadowAlpha.png) no-repeat bottom right!important;
- background: #D3DEFF;
- height: 100%;
- _height: 3000px;
- width: 100%;
- position: absolute;
- top: 6px;
- left: 6px;
- z-index: -1;
-}
-
-.ShadowedStandardBox .Button {
- cursor: pointer;
- background-color: #B6CCE4;
- color: #435D77;
- text-decoration: none;
- border: solid 1px #ccc;
- padding: 3px 10px 3px 10px;
- font-family: Verdana;
- font-size: 10px;
- font-weight: bold;
- text-align: center;
- white-space: nowrap;
-}
-
-.ShadowedStandardBox .Button:link,
-.ShadowedStandardBox .Button:visited {
- background-color: #B6CCE4;
- color: #435D77;
- text-decoration: none;
-}
-
-.ShadowedStandardBox .Button:hover,
-.ShadowedStandardBox .Button:active {
- background-color: #5F84A8;
- color: White;
- text-decoration: none;
-}
-
-.OutlineBox {
- z-index: 0;
- position: relative;
- margin-top: 16px;
- padding-top: 14px;
- margin-bottom: 10px;
- border: solid 2px #B6CCE4;
-}
-
-.OutlineBox .OB_HeaderPositioner {
- z-index: 1;
- position: absolute;
- top: -16px;
- left: 0;
- width: 100%;
-}
-
-.OutlineBox .OB_Header {
- z-index: 1;
- display: block;
- width: 90%;
- margin-left: auto;
- margin-right: auto;
- background-color: White;
- border: solid 2px #B6CCE4;
- text-align: center;
- font-size: 18px;
- font-weight: bold;
- padding: 2px 2px 2px 2px;
-}
-
-.OutlineBox .OB_Content {
- padding-top: 5px;
-}
-
-#InviteAFriendContainer {
- margin-top: 10px;
-}
-
-#InviteAFriendContainer h3 {
- margin: 0 auto;
- padding: 0 0 10px 0;
- text-align: left;
- width: 700px;
-}
-
-#InviteAFriendContainer #Exposition {
- margin: 0 auto;
- padding: 0 0 10px 0;
- width: 700px;
-}
-
-#InviteAFriendContainer .Button {
- border: solid 1px #000;
- color: #000;
- font-family: Verdana, Sans-Serif;
- margin: 0 0 0 10px;
- padding: 3px 10px 3px 10px;
- text-decoration: none;
-}
-
-#InviteAFriendContainer .MultilineTextBox {
- border: 2px solid #CCC;
- font-family: Arial, Sans-Serif;
- line-height: 1.5em;
- padding: 5px 5px 5px 5px;
- width: 92%;
-}
-
-#InviteAFriendContainer .TextBox {
- border: 2px solid #CCC;
- font-family: Arial, Sans-Serif;
- padding: 5px 5px 5px 5px;
- width: 92%;
-}
-
-#InviteAFriendContainer .Label {
- font-weight: bold;
-}
-
-#InviteAFriendContainer #InvitationElements {
- margin: 0 auto;
- padding: 5px 5px 5px 5px;
- width: 688px;
-}
-
-#InviteAFriendContainer #Name,
-#InviteAFriendContainer #Recipients,
-#InviteAFriendContainer #Message {
- margin: 15px 0 0 0;
-}
-
-#InviteAFriendContainer .FormLabel {
- float: left;
- width: 94px;
-}
-
-#InviteAFriendContainer .FormField {
- float: left;
- width: 317px;
-}
-
-#InviteAFriendContainer .FormNotes {
- float: right;
- font-family: Verdana;
- font-size: xx-small;
- width: 277px;
- text-align: left;
-}
-
-#InviteAFriendContainer #Confirmation h3 {
- margin: 0 auto;
- text-align: left;
- width: 400px;
-}
-
-#InviteAFriendContainer #Confirmation #Message {
- border: solid 1px #000;
- margin: 0 auto;
- padding: 10px 10px 10px 10px;
- width: 380px;
-}
-
-#InviteAFriendContainer #Confirmation .Buttons {
- margin: 0 auto;
- width: 400px;
-}
-
-#ShareRobloxRibbon {
- margin: 15px 0;
- padding: 3px;
- text-align: center;
-}
-
-#ShareRobloxRibbon a {
- text-decoration: none;
- color: #000;
-}
-
-.ShareRobloxButton {
- padding: 4px;
- margin: 4px 6px;
- border: 3px solid #B2C1D2;
- background: #A5D0FF;
- color: #000;
- cursor: pointer;
- font-size: 16px;
-}
-
-.ShareRobloxButtonCurrent {
- padding: 4px;
- margin: 4px 6px;
- border: 3px solid #B2C1D2;
- background: #527396;
- color: #FFF;
- cursor: pointer;
- font-size: 16px;
- text-decoration: none;
-}
-
-.ShareRobloxButton:hover {
- background: #527396;
- color: #FFF;
-}
-
-.clearing {
- clear: both;
-}
-
-#PleaseUpgradeMeContainer {
- margin-top: 10px;
-}
-
-#StoreContainer {
- font-family: Verdana, Sans-Serif;
-}
-
-#StoreContainer h2 {
- font-family: Verdana, Sans-Serif;
- font-size: 2.5em;
- font-weight: normal;
- letter-spacing: .5em;
- line-height: 1em;
- margin: 0;
- padding: 0;
-}
-
-#StoreContainer h3 {
- font-family: Verdana, Sans-Serif;
- font-size: 1.5em;
- font-weight: normal;
- letter-spacing: .1em;
- line-height: 1em;
- margin: 5px 0;
- padding: 0;
-}
-
-#StoreContainer ul {
- list-style: none;
- margin: 10px 0 30px 0;
-}
-
-#StoreContainer ul li {
- margin-bottom: .5em;
-}
-
-#StoreContainer ul a {
- font-size: 1.1em;
-}
-
-#StoreContainer .DisplayFilters {
- width: 150px;
-}
-
-#StoreContainer #Products {
- float: left;
- padding-bottom: 10px;
- padding-left: 0;
- padding-right: 0;
- width: 585px;
-}
-
-#StoreContainer #Products #HeaderPager,
-#StoreContainer #Products #FooterPager {
- margin: 0 24px 0 10px;
- padding: 2px 0;
- text-align: right;
-}
-
-#StoreContainer #Products #HeaderPager {
- margin-bottom: 10px;
-}
-
-#StoreContainer #Products #HeaderPager .Label,
-#StoreContainer #Products #FooterPager .Label {
- font-size: 1em;
- vertical-align: middle;
-}
-
-#StoreContainer #Products #AdditionalPlace {
- margin: 0 auto;
- width: 420px;
-}
-
-#StoreContainer #AdsPane {
- border: solid 1px #000;
- float: right;
- text-align: right;
- width: 160px;
-}
-
-#StoreContainer .Label,
-#StoreContainer .Detail,
-#StoreContainer .DetailHighlighted {
- font-size: .8em;
-}
-
-#StoreContainer .DetailHighlighted {
- color: Red;
- font-weight: bold;
-}
-
-#StoreContainer .Thumbnail {
- border: solid 1px #000;
- height: 230px;
- width: 420px;
-}
-
-#StoreContainer .Price {
- font-weight: bold;
- margin: 5px 0;
-}
-
-#StoreContainer .InsufficientFunds {
- color: Red;
-}
-
-.tipsy {
- padding: 5px;
- font-size: 10px;
- opacity: .8;
- filter: alpha(opacity=80);
- background-repeat: no-repeat;
- background-image: url(/images/css/tipsy.gif);
-}
-
-.tipsy-inner {
- padding: 5px 8px 4px 8px;
- background-color: black;
- color: white;
- max-width: 200px;
- text-align: center;
-}
-
-.tipsy-inner {
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
-}
-
-.tipsy-north {
- background-position: top center;
-}
-
-.tipsy-south {
- background-position: bottom center;
-}
-
-.tipsy-east {
- background-position: right center;
-}
-
-.tipsy-west {
- background-position: left center;
-}
-
-#CancelBuildersClubContainer,
-#PaymentMethodsContainer,
-#PaymentContainer,
-#PayPalContainer,
-#CashContainer {
- background-color: #fff;
- font-family: Arial, Sans-Serif;
- margin: 0 auto;
- padding: 20px 80px;
-}
-
-#UpgradeCompleteContainer,
-#CancelAccountUpgradeContainer,
-#ManageAccountUpgradesContainer,
-#AccountUpgradesConfirmationContainer {
- background-color: #fff;
- font-family: Arial, Sans-Serif;
- margin: 0 auto;
-}
-
-#AccountUpgradesConfirmationContainer,
-#CancelAccountUpgradeContainer {
- border: solid 2px #6e99c9;
- padding: 10px 10px 20px 10px;
-}
-
-#CancelBuildersClubContainer h2,
-#PaymentMethodsContainer h2,
-#PaymentContainer h2,
-#PayPalContainer h2,
-#CashContainer h2,
-#UpgradeCompleteContainer h2,
-#ManageAccountUpgradesContainer h2,
-#CancelAccountUpgradeContainer h2,
-#AccountUpgradesConfirmationContainer h2 {
- font-family: Arial, Sans-Serif;
- font-size: 2.5em;
- font-weight: normal;
- line-height: 1em;
- margin: 0;
- padding: 0;
-}
-
-#UpgradeCompleteContainer h2,
-#CancelAccountUpgradeContainer h2,
-#ManageAccountUpgradesContainer h2,
-#AccountUpgradesConfirmationContainer h2 {
- font-size: 2em;
- letter-spacing: .1em;
- line-height: 1.5em;
- margin: 0 auto;
- margin-top: 10px;
- width: 600px;
-}
-
-#UpgradeCompleteContainer p,
-#ManageAccountUpgradesContainer p,
-#AccountUpgradesConfirmationContainer p {
- line-height: 1.6em;
-}
-
-#RobloxCentralBank {
- border-bottom: solid 1px #000;
-}
-
-#MembershipOptions .Label,
-#SpecialMembershipOption .Label {
- text-align: center;
-}
-
-#WhyJoin {
- display: inline;
- float: left;
- margin: 30px 10px 20px 90px;
- padding: 0;
- width: 375px;
-}
-
-#WhyJoin h3 {
- font-size: 15pt;
- font-weight: normal;
- letter-spacing: .2em;
- margin: 0 0 15px 0;
- padding: 0;
-}
-
-#WhyJoin #MembershipBenefits {
- list-style: none;
- margin: 0;
- padding: 0;
-}
-
-#WhyJoin #MembershipBenefits li {
- background-position: 0 0;
- background-repeat: no-repeat;
- font-family: Arial, Sans-Serif;
- font-size: 11pt;
- margin: 0 0 10px 10px;
- min-height: 32px;
- padding: 0 0 0 40px;
-}
-
-#WhyJoin .MembershipBenefits {
- list-style: none;
- margin: 0;
- padding: 0;
-}
-
-#WhyJoin .MembershipBenefits li {
- background-position: 0 0;
- background-repeat: no-repeat;
- font-family: Arial, Sans-Serif;
- font-size: 11pt;
- margin: 0 0 10px 10px;
- min-height: 32px;
- padding: 0 0 0 40px;
-}
-
-#WhyJoin .MembershipBenefits .Benefit_MultiplePlaces {
- background-image: url(/images/MultiplePlacesBullet.png);
-}
-
-#WhyJoin .MembershipBenefits .Benefit_RobuxAllowance {
- background-image: url(/images/AllowanceBullet.png);
-}
-
-#WhyJoin .MembershipBenefits .Benefit_SellContent {
- background-image: url(/images/SellBullet.png);
-}
-
-#WhyJoin .MembershipBenefits .Benefit_SuppressAds {
- background-image: url(/images/AdSuppressionBullet.png);
-}
-
-#WhyJoin .MembershipBenefits .Benefit_ExclusiveHat {
- background-image: url(/images/HardHatBullet.png);
-}
-
-#WhyJoin #MembershipBenefits #SignupBenefit_OwnPlace {
- background-image: url(/images/JoinBulletHouse.png);
-}
-
-#WhyJoin #MembershipBenefits #SignupBenefit_GetTix {
- background-image: url(/images/JoinBulletTreasure.png);
-}
-
-#WhyJoin #MembershipBenefits #SignupBenefit_BuyStuff {
- background-image: url(/images/JoinBulletShoppingBag.png);
-}
-
-#WhyJoin #MembershipBenefits #SignupBenefit_CustomizeGuy {
- background-image: url(/images/JoinBulletWizardHat.png);
-}
-
-#WhyJoin #MembershipBenefits #SignupBenefit_Username {
- background-image: url(/images/JoinBulletStar.png);
-}
-
-#WhyJoin #MembershipBenefits #SignupBenefit_Forums {
- background-image: url(/images/JoinBulletScript.png);
-}
-
-#WhyJoin #MembershipBenefits #SignupBenefit_Stats {
- background-image: url(/images/JoinBulletStats.png);
-}
-
-#WhyJoin #MembershipBenefits #SignupBenefit_Comments {
- background-image: url(/images/JoinBulletPencil.png);
-}
-
-#WhyJoin #MembershipBenefits #SignupBenefit_Badges {
- background-image: url(/images/JoinBulletBadges.png);
-}
-
-#WhyJoin #MembershipBenefits #SignupBenefit_Friends {
- background-image: url(/images/JoinBulletFriends.png);
-}
-
-#WhyJoin #MembershipBenefits #SignupBenefit_WeRock {
- background-image: url(/images/JoinBulletCreative.png);
-}
-
-#WhyJoin #MembershipBenefits #SignupBenefit_OhYeahItsFree {
- background-image: url(/images/JoinBulletHappy.png);
-}
-
-#SpecialMembershipOption {
- display: inline;
- float: right;
- margin: 30px 69px 0 10px;
- padding: 0;
- width: 254px;
-}
-
-#PaymentMethodsContainer .PaymentMethods {
- border: none;
- margin: 20px auto;
- padding: 10px;
- width: 600px;
-}
-
-#PaymentMethodsHeader {
- margin: 0 auto;
- padding-left: 60px;
- width: 600px;
-}
-
-.PaymentMethodRow {
- font-family: Arial, Helvetica, Sans-Serif;
- background-color: transparent;
- color: #090;
-}
-
-.PaymentMethodRow:hover {
- background-color: #f2f2f2;
- cursor: pointer;
- color: #00d900;
-}
-
-.PaymentMethodRowUnavailable a {
- color: #090;
-}
-
-.PaymentMethodRow td,
-.PaymentMethodRowUnavailable td {
- border: none;
- padding: 20px;
-}
-
-#PaymentMethodsContainer .PaymentMethodName {
- color: #333;
- font-weight: bold;
- font-size: medium;
-}
-
-#Legend {
- margin-top: 10px;
-}
-
-#CurrentBalance {
- color: #333;
-}
-
-#PaymentContainer #Account,
-#PaymentContainer #BillingInfo,
-#PaymentContainer #ProductAndPricing,
-#PaymentContainer #ProductAndPricing1,
-#PaymentContainer #CreditCard,
-#PayPalContainer #ConfirmDetails,
-#CashContainer #ConfirmDetails,
-#PayPalContainer #Notes,
-#CashContainer #Notes {
- margin-bottom: 20px;
-}
-
-#PaymentContainer #Pay,
-#PayPalContainer #Continue {
- margin: 0 auto;
- text-align: center;
-}
-
-.PaymentDropDownList {
- padding: 5px;
- width: 95%;
-}
-
-#PaymentContainer .Label,
-#PayPalContainer .Label,
-#CashContainer .Label {
- float: left;
- font-size: 1.25em;
- height: 40px;
- line-height: 40px;
- padding: 0 10px;
- vertical-align: middle;
- width: 250px;
-}
-
-#ConfirmDetails .Detail {
- background-color: #EEE;
- border-bottom: solid 1px #CCC;
- border-top: solid 1px #CCC;
- height: 40px;
- line-height: 40px;
-}
-
-#PaymentContainer .Field,
-#PayPalContainer .Field,
-#CashContainer .Field {
- float: left;
- height: 40px;
- line-height: 40px;
- padding: 0 10px;
- vertical-align: middle;
- width: 400px;
-}
-
-#PaymentContainer .Button,
-#PayPalContainer .Button {
- font-size: 16px;
- margin: 0 3px;
-}
-
-#PaymentMethodsContainer .ExistingSubscription {
- font-size: 16px;
- color: Blue;
- width: 50%;
- text-align: center;
-}
-
-#PayPalContainer .PayPalDisallowedMessage {
- font-size: 16px;
- padding-bottom: 12px;
- color: Blue;
- width: 90%;
-}
-
-#ProductAndPricing,
-#ProductAndPricing1 {
- float: left;
- width: 865px;
-}
-
-#ProductAndPricing .TotalRowName,
-#ProductAndPricing .TotalRowPrice {
- font-size: 14px;
- font-weight: bold;
- padding-top: 10px;
-}
-
-.TotalRowName,
-.TotalRowPrice,
-.ProductName,
-.SuperchargeProductName,
-.ProductPrice,
-.SuperchargeProductPrice {
- float: left;
- font-weight: bold;
-}
-
-.ProductName,
-.TotalRowName,
-.SuperchargeProductName {
- width: 600px;
-}
-
-.ProductPrice,
-.TotalRowPrice,
-.SuperchargeProductPrice {
- width: 200px;
-}
-
-.SuperchargeProductName,
-.SuperchargeProductPrice {
- color: #E6B800;
-}
-
-#PaymentDetails #Account .Field,
-#PaymentDetails #ProductAndPricing .Field,
-#PayPalContainer #ConfirmDetails .Field,
-#CashContainer #ConfirmDetails .Field {
- font-size: 1.25em;
- font-weight: bold;
-}
-
-#PaymentDetailsTable {
- width: 400px;
-}
-
-#UpgradeCompleteContainer #Message,
-#CancelAccountUpgradeContainer #Message,
-#ManageAccountUpgradesContainer #CurrentAccountUpgrades,
-#AccountUpgradesConfirmationContainer #Message {
- background-color: #eee;
- border: solid 1px #ccc;
- margin: 0 auto;
- margin-top: 15px;
- padding: 10px;
- width: 580px;
-}
-
-#ManageAccountUpgradesContainer #CurrentAccountUpgrades {
- margin-top: 25px;
- font-family: Arial, Helvetica, Sans-Serif;
-}
-
-.ExtensionNote {
- margin: 10px 0;
-}
-
-.UpgradeStatus {
- font-weight: bold;
- margin: 20px;
- text-align: center;
-}
-
-#BuildersClubContainer {
- font-family: Arial, Sans-Serif;
- margin: 0 auto;
- width: 900px;
-}
-
-#BuildersClubContainer #LeftColumn {
- background-color: #fff;
- width: 575px;
- float: left;
- margin-top: 10px;
-}
-
-#BuildersClubContainer #LeftColumn #MembershipOptions {
- margin-bottom: 50px;
- padding: 10px 10px 0 10px;
-}
-
-#BuildersClubContainer #LeftColumn #MembershipOptions .MembershipButton {
- margin: 0 4px 0 4px;
- float: left;
- width: 130px;
-}
-
-#BuildersClubContainer #LeftColumn #MembershipOptions .BCButtonLabel {
- color: #6e99c9;
- margin-top: 4px;
- text-align: center;
-}
-
-#BuildersClubContainer #LeftColumn h1 {
- font-size: 20px;
- color: #6e99c9;
- font-style: italic;
- font-weight: bold;
-}
-
-#MembershipOptionsTable {
- width: 500px;
- margin: auto;
-}
-
-#MembershipOptionsTable tr {
- text-align: center;
-}
-
-#MembershipOptionsTable td {
- width: 100px;
- margin: 38px;
-}
-
-#MembershipOptionsTable td .BCButton {
- padding-left: 35px;
- padding-right: 0;
-}
-
-#MembershipOptionsTable .BCText {
- padding-right: 20px;
- width: 150px;
- text-align: left;
-}
-
-.TurboSpan {
- color: #72942E;
-}
-
-#upgrades-membership-options {
- font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
- font-size: 13px;
- background: #fff;
- padding-top: 10px;
- clear: left;
- width: 100%;
- border-collapse: collapse;
- text-align: center;
-}
-
-#upgrades-membership-options th {
- font-size: 15px;
- font-weight: normal;
- color: #2163A5;
- padding: 5px 8px;
- border-bottom: 1px solid #D3D3D3;
- line-height: 32px;
-}
-
-#upgrades-membership-options th img {
- float: left;
-}
-
-#upgrades-membership-options td {
- color: #2163A5;
- padding: 5px 10px;
-}
-
-#upgrades-membership-options tbody tr:hover td {
- color: Maroon;
-}
-
-#upgrades-membership-options .leftBorder {
- border-left: 1px solid #D3D3D3;
- width: 150px;
-}
-
-#upgrades-membership-options .odd {
- background: #e8edff;
-}
-
-#upgrades-membership-options .LeftText {
- text-align: left;
-}
-
-#BuildersClubContainer #LeftColumn #WindowsOnlyWarning {
- padding-left: 10px;
- padding-bottom: 1px;
-}
-
-#BuildersClubContainer #RightColumn {
- margin: 10px 0 10px 5px;
- width: 290px;
- float: right;
-}
-
-.RightColumnBox,
-#UpgradeCompleteContainer {
- border: 2px solid #6e99c9;
- margin-bottom: 20px;
- padding: 10px;
- background-color: #fff;
-}
-
-.RightColumnBox a {
- text-decoration: underline;
-}
-
-.RightColumnBox h2 {
- float: left;
- font-size: 14px;
- color: Maroon;
-}
-
-.RightColumnBox h3 {
- text-align: left;
- font-size: 11px;
- clear: both;
-}
-
-.RightColumnBox h1 {
- float: left;
- font-size: 16px;
- color: Maroon;
- padding-left: 10px;
- font-weight: bold;
-}
-
-.RightColumnManageAccount {
- border-left: 2px solid #6e99c9;
- border-bottom: 2px solid #6e99c9;
- border-right: 2px solid #6e99c9;
- background-color: #fff;
- margin-bottom: 20px;
-}
-
-#CancelMembership {
- padding-top: 10px;
- padding-bottom: 10px;
- text-align: center;
-}
-
-#RightColumn #ManageAccountBody {
- padding: 10px;
-}
-
-#RightColumn #ManageAccount #CancelMembershipButton,
-#RedirectToLoginLink {
- text-align: center;
-}
-
-.OBCSellButton {
- border: 0;
- cursor: pointer;
- top: 218px;
- position: absolute;
-}
-
-.BuyRobuxBtn {
- display: inline-block;
- width: 205px;
- height: 44px;
- background: url(/images/buildersClubPage_buyRobux_44px.png) no-repeat;
-}
-
-.BuyRobuxBtn:hover {
- background-position: 0 -44px;
- cursor: pointer;
-}
-
-.cardPanelLeft {
- margin-left: 12px;
- margin-top: 25px;
- float: left;
-}
-
-.cardPanelRight {
- margin-right: 12px;
- margin-top: 10px;
- float: right;
-}
-
-.centeredImage {
- margin-bottom: 10px;
-}
-
-#GameCardButtonContainer {
- clear: both;
- margin: 15px 0;
-}
-
-.WhereToBuyTableCell,
-WhereToBuyTableCellRight {
- width: 320px;
- padding: 10px 0;
-}
-
-.WhereToBuyTableCellRight {
- text-align: left;
-}
-
-.AwardAssetDisplayList {
- display: inline-block;
- *display: inline;
- *zoom: 1;
- vertical-align: top;
- width: 100px;
- height: 100px;
-}
-
-.PaymentTextBox {
- padding: 5px;
- width: 90%;
-}
-
-.PaymentLabel {
- width: 120px;
- font-weight: bold;
-}
-
-.PaymentPadding {
- padding: 5px;
-}
-
-.AutoRecurText {
- color: Red;
- display: none;
-}
-
-#post-image-main,
-#upload-video-main {
- font-size: 16pt;
- font-weight: bold;
- text-align: center;
-}
-
-#post-image-main a,
-#post-image-main a:hover,
-#upload-video-main a,
-#upload-video-main a:hover {
- text-decoration: none;
-}
-
-#post-image-ul,
-#upload-video-ul {
- text-align: left;
- font-weight: normal;
- font-size: 12pt;
-}
-
-#post-image-small,
-#upload-video-small {
- font-weight: normal;
- font-size: 12pt;
-}
-
-#post-image-footer,
-#upload-video-footer {
- text-align: right;
-}
-
-#post-image-footer a,
-#upload-video-footer a {
- font-size: 12pt;
- font-weight: bold;
- text-decoration: none;
-}
-
-#post-image-footer a:hover,
-#upload-video-footer a:hover {
- text-decoration: none;
-}
-
-#UserContainer {
- font-family: Verdana, Sans-Serif;
-}
-
-#UserContainer #LeftBank {
- float: left;
- text-align: center;
- width: 444px;
-}
-
-#UserContainer #RightBank {
- float: right;
- text-align: center;
- width: 444px;
-}
-
-#UserContainer #LeftBank #UserPageLargeRectangleAd {
- border: none;
-}
-
-#UserPlacesPane {
- clear: both;
- background-color: #FFF;
-}
-
-#UserPlacesPane {
- clear: both;
- background-color: #FFF;
-}
-
-.FriendRequestsPane,
-#UserModelsContainer,
-#UserAssetsPane {
- clear: both;
- margin: 10px 0 0 0;
- text-align: center;
-}
-
-#UserBadgesPane,
-#UserStatisticsPane {
- margin: 10px 0 0 0;
-}
-
-#UserStatisticsPane {
- text-align: left;
-}
-
-#FriendsPane,
-#FavoritesPane {
- clear: right;
- margin: 10px 0 0 0;
-}
-
-#UserAssetsPane {
- margin-bottom: 10px;
-}
-
-#UserBadgesPane #UserBadges {
- background-color: #fff;
- text-align: center;
-}
-
-#ProfilePane h4 {
- background-color: #ccc;
- border-top: solid 1px #000;
- color: #333;
- font-family: Comic Sans MS, Verdana, Sans-Serif;
- font-size: 1.3em;
- margin: 0;
- text-align: center;
-}
-
-#ProfilePane p {
- margin: .9em 0;
- line-height: 1.6em;
-}
-
-#UserAssetsPane #UserAssets h4,
-#UserBadgesPane #UserBadges h4,
-#UserPlacesPane #UserPlaces h4,
-#UserStatisticsPane #UserStatistics h4,
-#FavoritesPane #Favorites h4 {
- background-color: #ccc;
- border-bottom: solid 1px #000;
- color: #333;
- font-family: Comic Sans MS, Verdana, Sans-Serif;
- margin: 0;
- text-align: center;
-}
-
-#UserPlacesPane #UserPlaces h4 {
- background-color: #6e99c9;
- color: #fff;
- font-family: Verdana, Sans-Serif;
- font-size: 1.4em;
- font-weight: normal;
- letter-spacing: .1em;
- line-height: 1.5em;
-}
-
-#UserStatisticsPane #UserStatistics {
- background-color: #eee;
- padding-bottom: 10px;
-}
-
-#UserStatisticsPane #UserStatistics h4 {
- margin-bottom: 5px;
-}
-
-#UserStatisticsPane #UserStatistics .Statistic {
- line-height: 1.8em;
- margin: 0 auto;
- width: 385px;
-}
-
-#UserStatisticsPane #UserStatistics .Label {
- float: left;
- text-align: right;
- width: 178px;
-}
-
-#UserStatisticsPane #UserStatistics .Value {
- float: right;
- width: 177px;
-}
-
-#UserModelsContainer {
- text-align: left;
-}
-
-#Friends {
- margin-top: 10px;
-}
-
-#Friends h4,
-#FriendRequests h4 {
- font-size: 10pt;
- font-weight: bold;
- line-height: 1em;
- margin-bottom: 5px;
- margin-top: 5px;
-}
-
-.NoResults {
- line-height: 1.3em;
- padding: 10px;
- text-align: center;
-}
-
-.Badge {
- margin: 10px 10px;
- text-align: center;
-}
-
-.Friend {
- margin: 10px;
-}
-
-.Friend .Avatar {
- text-align: center;
-}
-
-.Friend .Summary,
-.Friend .Options {
- margin-top: 5px;
- text-align: center;
-}
-
-#UserContainer .CollapsiblePanelHint {
- color: #999;
- padding: 5px;
- text-align: center;
-}
-
-#UserContainer #AssetsMenu {
- float: left;
- width: 158px;
-}
-
-#UserContainer #AssetSearchOption {
- float: left;
-}
-
-#UserContainer #AssetUploadOption {
- float: right;
-}
-
-#UserContainer #AssetsList {
- clear: both;
-}
-
-#UserAssetsPane .AssetsMenuItem {
- border: solid 1px #777;
- margin: 15px;
- padding: 3px 10px;
- width: 100px;
-}
-
-#UserAssetsPane .AssetsMenuItem:hover {
- border: solid 1px #000;
- cursor: pointer;
- margin: 15px;
- width: 100px;
-}
-
-#UserAssetsPane .AssetsMenuItem_Selected {
- background-color: #6e99c9;
- border: solid 1px #000;
- margin: 15px;
- padding: 3px 10px;
- width: 100px;
-}
-
-#UserAssetsPane .AssetsMenuButton {
- color: #777;
- font: normal 14px/normal Verdana, sans-serif;
-}
-
-#UserAssetsPane .AssetsMenuButton:hover {
- color: #000;
- text-decoration: none;
-}
-
-#UserAssetsPane .AssetsMenuButton_Selected {
- color: #fff;
- font: normal 14px/normal Verdana, sans-serif;
- text-decoration: none;
-}
-
-#UserPlaces .PanelFooter,
-#GroupPlaces .PanelFooter,
-#Favorites .PanelFooter {
- background-color: #fff;
- color: #333;
- font-family: Verdana, Sans-Serif;
- margin: 0;
- padding: 3px;
- text-align: center;
-}
-
-#UserPlaces .AccordionHeader {
- background-color: #ccc;
- border: solid 1px #000;
- cursor: pointer;
- font: bold 1em/normal Verdana, sans-serif;
- letter-spacing: .1em;
- margin: 1px 0;
- padding: 1px 1em;
- text-align: left;
-}
-
-#UserPlaces .AccordionHeader:hover {
- background-color: #6e99c9;
- color: #fff;
-}
-
-#UserPlaces .Place .PlayStatus {
- margin: 5px 0 0 0;
- display: inline;
-}
-
-#UserPlaces .Place .PlayOptions {
- margin: 5px 0 0 0;
- display: inline;
-}
-
-#UserPlaces .Place .PlayOptions .Button {
- border-color: #333;
- color: #333;
- margin: 0 3px;
-}
-
-#UserPlaces .Place .PlayOptions .Button:hover {
- background-color: #6e99c9;
- color: #fff;
-}
-
-#UserPlaces .Place .Statistics {
- border-top: dashed 1px #555;
- border-left: dashed 1px #555;
- border-right: dashed 1px #555;
- color: #555;
- font: normal 1em/normal Verdana, sans-serif;
- letter-spacing: .1em;
- line-height: 1.7em;
- margin: 0;
- margin-top: 10px;
-}
-
-#UserPlaces .Place .Thumbnail {
- border: solid 1px #555;
- margin: 0;
-}
-
-#UserPlaces .Place .Description {
- border: dashed 1px #555;
- color: #555;
- font: normal 1em/normal Verdana, sans-serif;
- max-height: 75px;
- line-height: 1.7em;
- margin: 5px 0 0 0;
- padding: 5px 10px;
- overflow: auto;
- text-align: left;
-}
-
-#UserPlaces .Place .Configuration {
- border-bottom: dashed 1px #555;
- border-left: dashed 1px #555;
- border-right: dashed 1px #555;
- font: normal 1em/normal Verdana, sans-serif;
- line-height: 1.7em;
- padding: 5px 10px;
-}
-
-#UserContainer #AssetsContent {
- float: left;
- font-family: Verdana, Sans-Serif;
- margin: 0 auto;
- margin-left: 28px;
- margin-right: 28px;
- min-width: 0;
- padding-bottom: 10px;
- padding-left: 0;
- padding-right: 0;
- position: relative;
- text-align: left;
- width: 662px;
-}
-
-#UserContainer #AssetsContent .HeaderPager,
-#UserContainer #FavoritesContent .HeaderPager,
-#UserContainer #AssetsContent .FooterPager,
-#UserContainer #FavoritesContent .FooterPager {
- clear: both;
- margin: 0 12px 0 10px;
- padding: 2px 0;
- text-align: center;
-}
-
-#UserContainer #AssetsContent .HeaderPager,
-#UserContainer #FavoritesContent .HeaderPager {
- margin-bottom: 10px;
-}
-
-#UserContainer #AssetsContent .HeaderPager .Label,
-#UserContainer #FavoritesContent .HeaderPager .Label,
-#UserContainer #AssetsContent .FooterPager .Label,
-#UserContainer #FavoritesContent .FooterPager .Label {
- font-size: 1em;
- vertical-align: middle;
-}
-
-#UserContainer .Asset {
- margin: 0 10px 15px 10px;
- vertical-align: top;
- width: 112px;
-}
-
-#UserContainer .Asset .AssetThumbnail {
- border: solid 1px #000;
- height: 110px;
- position: relative;
- text-align: center;
- width: 110px;
-}
-
-#UserContainer .Asset .AssetDetails {
- overflow: hidden;
- padding: 2px 0 6px 0;
- text-align: left;
- width: 110px;
-}
-
-#UserContainer .AssetName a {
- font-size: .9em;
- font-weight: bold;
- line-height: 1.5em;
- vertical-align: top;
-}
-
-.AssetsBullet {
- padding-right: 3px;
-}
-
-#UserContainer .Label,
-#UserContainer .Detail,
-#UserContainer .DetailHighlighted,
-#UserContainer .PriceInRobux,
-#UserContainer .PriceInTickets {
- font-size: .8em;
-}
-
-#UserContainer .DetailHighlighted {
- color: Red;
- font-weight: bold;
-}
-
-#UserContainer .PriceInRobux {
- color: Green;
- font-weight: bold;
-}
-
-#UserContainer .PriceInTickets {
- color: #fbb117;
- font-weight: bold;
-}
-
-.UserOnlineMessage {
- font-family: Verdana;
- font-size: 8pt;
- color: Red;
-}
-
-.UserOfflineMessage {
- font-family: Verdana;
- font-size: 8pt;
- color: Gray;
-}
-
-.AdPanel {
- position: relative;
- margin: 0 auto;
-}
-
-.BanishButtonOverlay {
- background-color: #eee;
- border: solid 1px #444;
- font-size: .8em;
- padding: 1px 3px 2px 3px;
- position: absolute;
- text-align: center;
- top: 0;
- right: 0;
-}
-
-.BanishButtonOverlay:hover {
- background-color: #fff;
- border: solid 1px #000;
- text-decoration: none;
-}
-
-.DeleteButtonOverlay {
- background-color: #eee;
- border: solid 1px #444;
- font-size: .8em;
- padding: 1px 3px 2px 3px;
- position: absolute;
- right: 2px;
- text-align: center;
- top: 2px;
-}
-
-.DeleteFavoriteOverlay {
- background-color: #eee;
- border: solid 1px #444;
- font-size: .8em;
- padding: 1px 3px 2px 3px;
- position: relative;
- left: -57px;
- text-align: center;
- top: -97px;
-}
-
-.DeleteButtonOverlay:hover {
- background-color: #fff;
- border: solid 1px #000;
- text-decoration: none;
-}
-
-.PlaceAccessIndicator {
- color: #000;
-}
-
-.SubscriptionStatusPanel {
- width: 348px;
- font-weight: bold;
- margin-top: 5px;
- padding: 5px 5px 5px 5px;
- border: solid 1px black;
- background-color: #ccc;
-}
-
-.ProfileAlertPanel {
- width: 348px;
- padding: 5px 5px 5px 5px;
- background-color: #FFF;
- border: solid 1px black;
- height: 64px;
-}
-
-.UserBlurb {
- overflow: hidden;
- width: 348px;
- padding: 5px 5px 5px 5px;
- line-height: 20px;
- background-color: #FFF;
- border: solid 1px #000;
-}
-
-#AccountSettingsForm {
- font-size: 11px;
- line-height: 18px;
-}
-
-#AccountSettingsForm fieldset {
- border: 1px solid #ddd;
- padding: 5px 5px 5px 5px;
-}
-
-.MyRobloxContainer {
- font-family: Verdana, Sans-Serif;
- margin: 0 auto;
- width: 900px;
-}
-
-.ThemeStandardColorBackground {
- background: #6e99c9;
-}
-
-.StandardBox,
-.StandardBoxWhite,
-.StandardBoxGray {
- float: none;
- border: 2px solid #6e99c9;
- background-color: White;
- padding: 10px 10px 10px 10px;
- margin-bottom: 10px;
- display: block;
-}
-
-.StandardBoxWhite {
- *zoom: 1;
-}
-
-.StandardBoxGrey {
- float: inherit;
- border: 2px solid #6e99c9;
- background-color: #A6A6A6;
- padding: 10px 10px 10px 10px;
- margin-bottom: 10px;
- display: block;
-}
-
-.StandardBoxHeader,
-.StandardBoxHeaderGray,
-.StandardTabWhite,
-.StandardTabGray,
-.StandardTabGrayActive {
- float: none;
- background-color: #6e99c9;
- text-align: center;
- color: White;
- font-size: 16px;
- font-weight: bold;
- padding: 5px 12px 5px 12px;
- display: block;
- *display: inline;
- *zoom: 1;
- cursor: pointer;
-}
-
-.StandardBoxHeaderGray {
- background-color: #A6A6A6;
-}
-
-.StandardTabWhite,
-.StandardTabGrayActive,
-.StandardTabGray {
- display: inline-block;
- height: 26px;
- z-index: 2;
- position: relative;
- *display: inline;
- *zoom: 1;
-}
-
-.StandardTabWhite span {
- *padding-right: 14px;
-}
-
-.StandardTabGray {
- background-color: #b4cde9;
- margin-right: 4px;
-}
-
-.StandardTabGrayActive {
- margin-right: 4px;
-}
-
-.StandardTabGray a,
-.StandardTabGrayActive a {
- color: White;
-}
-
-.StandardTabGray:hover,
-.StandardTabGrayActive {
- background-color: #6c98cb;
- color: White;
-}
-
-.Column1a {
- width: 290px;
- float: left;
- margin-top: 10px;
-}
-
-.Column2a {
- margin-top: 10px;
- width: 600px;
- float: right;
-}
-
-.Column1a .StandardBox {
- width: 266px;
-}
-
-.Column1a .StandardBoxHeader,
-.Column1a .StandardBoxHeaderGray {
- width: 266px;
-}
-
-.Column2a .StandardBox {
- width: 576px;
-}
-
-.Column2a .StandardBoxHeader,
-.Column2a .StandardBoxHeaderGray {
- width: 576px;
-}
-
-.Column1b {
- margin-top: 10px;
- width: 190px;
- float: left;
- margin-right: 15px;
-}
-
-.Column2b {
- margin-top: 10px;
- width: 490px;
- float: left;
-}
-
-.Column3b {
- margin-top: 10px;
- width: 190px;
- float: right;
-}
-
-.Column1b .StandardBox {
- width: 166px;
-}
-
-.Column1b .StandardBoxHeader,
-.Column1b .StandardBoxHeaderGray {
- width: 166px;
-}
-
-.Column2b .StandardBox {
- width: 466px;
-}
-
-.Column2b .StandardBoxHeader,
-.Column2b .StandardBoxHeaderGray {
- width: 466px;
-}
-
-.Column3b .StandardBox {
- width: 166px;
-}
-
-.Column3b .StandardBoxHeader,
-.Column3b .StandardBoxHeaderGray {
- width: 166px;
-}
-
-.Column1c {
- margin-top: 10px;
- width: 590px;
- float: left;
-}
-
-.Column2c {
- margin-top: 10px;
- width: 290px;
- float: right;
-}
-
-.Column1c .StandardBox {
- width: 556px;
-}
-
-.Column1c .StandardBoxHeader,
-.Column1c .StandardBoxHeaderGray {
- width: 556px;
-}
-
-.Column2c .StandardBox {
- width: 266px;
-}
-
-.Column2c .StandardBoxHeader,
-.Column2c .StandardBoxHeaderGray {
- width: 266px;
-}
-
-.Column1d {
- margin-top: 10px;
- width: 440px;
- float: left;
-}
-
-.Column2d {
- margin-top: 10px;
- width: 440px;
- float: right;
-}
-
-.Column1d .StandardBox,
-.Column1d .StandardBoxWhite {
- width: 416px;
-}
-
-.Column1d .StandardBoxHeader,
-.Column1d .StandardBoxHeaderGray,
-.Column1d .StandardTabWhite {
- width: 416px;
-}
-
-.Column2d .StandardBox,
-.Column2d .StandardBoxWhite {
- width: 416px;
-}
-
-.Column2d .StandardBoxHeader,
-.Column2d .StandardBoxHeaderGray,
-.Column2d .StandardTabWhite {
- width: 416px;
-}
-
-.Column1e {
- margin-top: 10px;
- width: 150px;
- float: left;
-}
-
-.Column2e {
- margin-top: 10px;
- width: 740px;
- margin-left: 10px;
- float: left;
-}
-
-.Column1e .StandardBox {
- width: 136px;
-}
-
-.Column1e .StandardBoxHeader,
-.Column1e .StandardBoxHeaderGray {
- width: 126px;
-}
-
-.Column2e .StandardBoxGray {
- width: 726px;
- padding: 5px;
-}
-
-.Column2e .StandardBoxHeader,
-.Column2e .StandardBoxHeaderGray {
- width: 356px;
-}
-
-.Column1f {
- margin-top: 10px;
- width: 380px;
- float: left;
-}
-
-.Column2f {
- margin-top: 10px;
- width: 500px;
- float: right;
-}
-
-.Column1f .StandardBox {
- width: 356px;
-}
-
-.Column1f .StandardBoxHeader,
-.Column1f .StandardBoxHeaderGray {
- width: 356px;
-}
-
-.Column2f .StandardBox {
- width: 476px;
-}
-
-.Column2f .StandardBoxHeader,
-.Column2f .StandardBoxHeaderGray {
- width: 476px;
-}
-
-.Repeater {
- border: 0;
- width: 100%;
-}
-
-.Repeater .AlternatingItemTemplateOdd {
- background-color: #eee;
- padding: 5px 5px 5px 5px;
-}
-
-.Repeater .AlternatingItemTemplateEven {
- background-color: #fff;
- padding: 5px 5px 5px 5px;
-}
-
-.Repeater .RepeaterImage {
- float: left;
- vertical-align: top;
- margin: 5px 5px 5px 5px;
-}
-
-.Repeater .RepeaterText {
- float: left;
- vertical-align: top;
- margin: 5px 5px 5px 5px;
-}
-
-.Repeater .RepeaterImageNoFloat {
- text-align: left;
- vertical-align: middle;
- padding-left: 5px;
-}
-
-.Repeater .RepeaterTextNoFloat {
- text-align: left;
- vertical-align: top;
- padding: 5px;
-}
-
-.Repeater thead {
- font-size: 15px;
- font-weight: normal;
- color: #2163A5;
- border-bottom: 1px solid #D3D3D3;
-}
-
-.Column2b .Repeater .AlternatingItemTemplateOdd,
-.Column2b .Repeater .AlternatingItemTemplateEven {
- width: 466;
- height: 50px;
-}
-
-.GreySearchBar {
- background-color: #7F7F7F;
- border-color: #385D8A;
- width: 150px;
- color: White;
- cursor: default;
-}
-
-.GreySearchButton {
- background-color: #7F7F7F;
- border-color: #385D8A;
- width: 50px;
- color: White;
-}
-
-.DescriptionText {
- font-size: 14px;
- padding: 10px;
- background: #D2E3F7;
-}
-
-.tab_white_31h_container .ajax__tab_header {
- font-family: verdana, tahoma, helvetica;
- font-size: 11px;
- background: url(/images/tab-line.gif) repeat-x bottom;
-}
-
-.tab_white_31h_container .ajax__tab_outer {
- margin: 0;
- background: url(/images/tab-right.gif) no-repeat right;
- height: 21px;
-}
-
-.tab_white_31h_container .ajax__tab_inner {
- padding-left: 3px;
- background: url(/images/tab-left.gif) no-repeat;
-}
-
-.tab_white_31h_container .ajax__tab_tab {
- height: 13px;
- padding: 4px;
- margin: 0;
- background: url(/images/tab.gif) repeat-x;
-}
-
-.tab_white_31h_container .ajax__tab_hover .ajax__tab_outer {
- background: url(/images/tab-hover-right.gif) no-repeat right;
-}
-
-.tab_white_31h_container .ajax__tab_hover .ajax__tab_inner {
- background: url(/images/tab-hover-left.gif) no-repeat;
-}
-
-.tab_white_31h_container .ajax__tab_hover .ajax__tab_tab {
- background: url(/images/tab-hover.gif) repeat-x;
-}
-
-.tab_white_31h_container .ajax__tab_active .ajax__tab_outer {
- background: url(/images/tab-active-right.gif) no-repeat right;
-}
-
-.tab_white_31h_container .ajax__tab_active .ajax__tab_inner {
- background: url(/images/tab-active-left.gif) no-repeat;
-}
-
-.tab_white_31h_container .ajax__tab_active .ajax__tab_tab {
- background: url(/images/tab-active.gif) repeat-x;
-}
-
-.tab_white_31h_container .ajax__tab_body {
- font-family: verdana, tahoma, helvetica;
- font-size: 10pt;
- border: 1px solid #999;
- border-top: 0;
- padding: 8px;
- background-color: #fff;
-}
-
-.rbx2only {
- display: none;
-}
-
-.GreenButton {
- height: 30px;
- background: url(/images/btn_green_30h_t1.png) no-repeat;
- display: inline-block;
- font-family: Arial, Helvetica, Sans-Serif;
- font-weight: bold;
- font-size: 14px;
- cursor: pointer;
- *display: inline;
- *zoom: 1;
-}
-
-.GreenButton span {
- height: 23px;
- background: url(/images/btn_green_30h_t2.png) no-repeat top right;
- margin: 0 0 0 4px;
- display: block;
- padding: 7px 12px 0 5px;
- cursor: pointer;
- color: White;
-}
-
-.GreenButton span a {
- color: White;
- text-decoration: none;
-}
-
-.GreenButton:hover {
- background-position: 0 -30px;
- cursor: pointer;
- text-decoration: none;
-}
-
-.GreenButton span:hover {
- background-position: right -30px;
- cursor: pointer;
-}
-
-.RedButton {
- height: 30px;
- background: url(/images/btn_red_30h_t1.png) no-repeat;
- display: inline-block;
- font-family: Arial, Helvetica, Sans-Serif;
- font-weight: bold;
- font-size: 14px;
- cursor: pointer;
- *display: inline;
- *zoom: 1;
-}
-
-.RedButton span {
- height: 23px;
- background: url(/images/btn_red_30h_t2.png) no-repeat top right;
- margin: 0 0 0 4px;
- display: block;
- padding: 7px 12px 0 5px;
- cursor: pointer;
- color: White;
-}
-
-.RedButton span a {
- color: White;
- text-decoration: none;
-}
-
-.RedButton:hover {
- background-position: 0 -30px;
- cursor: pointer;
- text-decoration: none;
-}
-
-.RedButton span:hover {
- background-position: right -30px;
- cursor: pointer;
-}
-
-.Money {
- color: #090;
-}
-
-.SuccessBox {
- border: solid 2px #a6dba6;
- color: #090;
- font-weight: bold;
- padding: 5px;
- margin: 20px 0;
-}
-
-.ErrorBox,
-.MessageBox {
- border: solid 2px #ffa6a6;
- color: #f00;
- font-weight: bold;
- padding: 5px;
- margin: 20px 0;
-}
-
-.MessageBox {
- height: 65px;
-}
-
-.GameCardMessageBox {
- border: solid 2px #ffa6a6;
- color: #f00;
- font-weight: bold;
- height: 56px;
- padding: 5px;
- *height: 66px;
- margin: 20px 0;
-}
-
-.GameCardSpecialOffer {
- left: 73px;
- position: relative;
- top: -45px;
-}
-
-.GameCardMessage {
- color: #333;
- left: 73px;
- position: relative;
- top: -44px;
-}
-
-.BoxTextAligned {
- margin-left: 10px;
- position: relative;
- top: -20px;
-}
-
-#RedeemContainer {
- font-family: Arial, Helvetica, Sans-Serif;
- font-size: 14px;
- color: Black;
-}
-
-#RedeemContainer a {
- color: #00f;
-}
-
-#RedeemContainer a:hover {
- text-decoration: none;
-}
-
-#RedeemContainer #pin {
- height: 21px;
- font-size: 12px;
-}
-
-.BigLinks {
- font-size: 16px;
- font-weight: bold;
-}
-
-.SkinnyRightArrow {
- cursor: pointer;
- background: url(/images/arrow_skinny55h_right.png) no-repeat;
- width: 12px;
- height: 55px;
- display: inline-block;
- *display: inline;
- *zoom: 1;
-}
-
-.SkinnyRightArrow:hover {
- background-position: 0 -55px;
-}
-
-.SkinnyRightArrowDisabled {
- background: url(/images/arrow_skinny55h_right.png) no-repeat 0 -110px;
- width: 12px;
- height: 55px;
- display: inline-block;
- *display: inline;
- *zoom: 1;
-}
-
-.SkinnyLeftArrow {
- cursor: pointer;
- background: url(/images/arrow_skinny55h_left.png) no-repeat;
- width: 12px;
- height: 55px;
- display: inline-block;
- *display: inline;
- *zoom: 1;
-}
-
-.SkinnyLeftArrow:hover {
- background-position: 0 -55px;
-}
-
-.SkinnyLeftArrowDisabled {
- background: url(/images/arrow_skinny55h_left.png) no-repeat 0 -110px;
- width: 12px;
- height: 55px;
- display: inline-block;
- *display: inline;
- *zoom: 1;
-}
-
-.BlueLeftArrow {
- cursor: pointer;
- background: url(/images/arrow_36px_left.png) no-repeat;
- width: 36px;
- height: 36px;
- display: inline-block;
- *display: inline;
- *zoom: 1;
-}
-
-.BlueLeftArrow:hover {
- background: url(/images/arrow36px_leftOn.png) no-repeat;
-}
-
-.BlueRightArrow {
- cursor: pointer;
- background: url(/images/arrow_36px_right.png) no-repeat;
- width: 36px;
- height: 36px;
- display: inline-block;
- *display: inline;
- *zoom: 1;
-}
-
-.BlueRightArrow:hover {
- background: url(/images/arrow36px_rightOn.png) no-repeat;
-}
-
-.BCHat {
- background: url(/images/Games/gamesPage_bcHelmet.png) no-repeat;
- width: 35px;
- height: 29px;
- display: inline-block;
- margin-top: 3px;
- *display: inline;
- *zoom: 1;
-}
-
-.notificationBox {
- display: inline-block;
- background-color: #f00;
- color: #fff;
- height: 16px;
- min-width: 18px;
- width: auto;
- font-size: 14px;
- font-weight: bold;
- margin: 2px 2px 4px 2px;
- padding: 0 2px;
- line-height: 1.1em;
- text-align: center;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
-}
-
-.notificationBoxIE {
- display: inline-block;
- color: #fff;
- background-image: url(/images/bg-notifications.png);
- background-repeat: repeat-x;
- background-position: left top;
- min-width: 24px;
- width: auto;
- height: 16px;
- text-align: center;
- font-size: 14px;
- font-weight: bold;
- *display: inline;
- *zoom: 1;
-}
-
-#BuildersClubContainer {
- margin-left: -5px;
-}
-
-#CatalogContainer>.StandardBox {
- padding: 3px 6px 8px 5px;
-}
-
-.Assets .StandardBoxHeader {
- width: 660px;
-}
-
-.Assets .StandardBox {
- width: 660px;
-}
-
-.Contests {
- margin-left: -5px;
-}
-
-.DarkGradientBox {
- background: none;
- width: 150px;
- color: Black;
- position: relative;
- border: none;
-}
-
-.DarkGradientBox .DGB_Header {
- font-size: 14px;
- font-weight: bold;
- text-align: center;
- padding-top: 5px;
- padding-bottom: 5px;
- border-bottom: none;
-}
-
-.DarkGradientBox .DGB_TextBox {
- border: solid 1px #888;
-}
-
-.DarkGradientBox .DGB_Label {
- color: Black;
- font-size: 10px;
- font-weight: bold;
- text-align: left;
-}
-
-.DarkGradientBox .DGB_Button {
- cursor: pointer;
- background-color: #435D77;
- color: White;
- text-decoration: none;
- border: solid 1px #777;
- padding: 6px 10px 6px 10px;
- font-family: Verdana, Sans-Serif;
- font-size: 12px;
- font-weight: bold;
- text-align: center;
- white-space: nowrap;
-}
-
-.DarkGradientBox .DGB_Button:link,
-.DarkGradientBox .DGB_Button:visited {
- background-color: #435D77;
- color: White;
- text-decoration: none;
-}
-
-.DarkGradientBox .DGB_Button:hover,
-.DarkGradientBox .DGB_Button:active {
- background-color: #B6CCE4;
- color: #435D77;
- text-decoration: none;
-}
-
-#GamesContainer .DisplayFilters {
- width: 126px;
-}
-
-.WaitCursor,
-.WaitCursor * {
- cursor: wait!important;
-}
-
-.PlayButton,
-.BuildButton,
-.PlayButtonSelected,
-.BuildButtonSelected {
- height: 54px;
- width: 123px;
- display: block;
- cursor: pointer;
-}
-
-.PlayButton {
- background-image: url('/images/games/playBtn_off.png');
- background-repeat: no-repeat;
-}
-
-.BuildButton {
- background-image: url('/images/games/buildBtn_off.png');
- background-repeat: no-repeat;
-}
-
-.PlayButton:hover,
-.PlayButtonSelected {
- background-image: url('/images/games/playBtn_on.png');
- background-repeat: no-repeat;
-}
-
-.BuildButton:hover,
-.BuildButtonSelected {
- background-image: url('/images/games/buildBtn_on.png');
- background-repeat: no-repeat;
-}
-
-#BCOnlyPlaces {
- width: 416px;
-}
-
-#BCOnlyPlaces .StandardBoxHeaderGray {
- width: 399px;
- height: 33px;
- padding: 0 7px 0 16px;
-}
-
-#BCOnlyPlaces .StandardBox {
- padding: 5px;
-}
-
-#GamesLeftColumn {
- width: 126px;
-}
-
-#InboxTabs {
- position: relative;
- top: 2px;
-}
-
-#ItemContainer #Summary {
- background-color: Transparent;
- border: none;
- font-family: Verdana, Geneva, sans-serif;
- font-size: 11px;
- color: Black;
-}
-
-#ItemContainer #Summary .label {
- color: #888;
-}
-
-#ItemContainer #Summary .box .head {
- color: Black;
-}
-
-#ItemContainer #Summary .box .body {
- border: 1px solid #CCC;
- padding: 4px 8px 8px;
- color: #000;
-}
-
-#ItemContainer h3 {
- font-family: Verdana, Geneva, sans-serif;
- font-size: 11px;
- color: #888;
- letter-spacing: normal;
-}
-
-.ReportAbuse {
- text-align: right;
-}
-
-.ReportAbuse .AbuseButton a {
- color: #F99;
- background: none;
- padding-left: 16px;
- padding-bottom: 2px;
-}
-
-.ReportAbuse .AbuseButton a:hover {
- background: url("/images/css/abuse.png") no-repeat scroll 0 2px transparent;
- color: #F00;
-}
-
-.ReportAbuse img {
- display: none;
-}
-
-.MultiplayerVisit:hover {
- background-position: 0 54px;
-}
-
-.MultiplayerVisit {
- width: 212px;
- height: 54px;
- background: url(/images/css/btn_play_54h.png);
-}
-
-.SoloVisit:hover {
- color: #0C0;
-}
-
-.SoloVisit {
- background: none;
- color: #080;
- font-size: 14px;
- position: relative;
- top: -20px;
- left: 28px;
- width: auto;
- height: auto;
-}
-
-.SoloVisitText {
- display: inline;
-}
-
-#ItemContainer .PlayGames {
- background-color: Transparent;
- border: none;
- padding: 0;
- width: 100%;
- margin: 4px 0 16px 0;
-}
-
-.PlaceInfoIcons {
- margin: 4px 0 0 1px;
- text-align: right;
-}
-
-.iPublic,
-.iUnlocked {
- background: url(/images/css/icon_public.png);
- width: 20px;
- height: 20px;
-}
-
-.iLocked {
- background: url(/images/css/icon_public.png);
- width: 20px;
- height: 20px;
- background-position: -20px;
-}
-
-.SharedIcon {
- background: url(/images/css/icon_locked.png);
- width: 20px;
- height: 20px;
- background-position: -20px;
-}
-
-.CopyLockedIcon {
- background: url(/images/css/icon_locked.png);
- width: 20px;
- height: 20px;
-}
-
-.AllGearIcon {
- background: url(/images/css/icon_gear.png);
- width: 20px;
- height: 20px;
-}
-
-.GenreGearIcon {
- background: url(/images/css/icon_gear.png);
- background-position: 0 -20px;
- width: 20px;
- height: 20px;
-}
-
-.NoGearIcon {
- background: url(/images/css/icon_gear.png);
- background-position: 0 -40px;
- width: 20px;
- height: 20px;
-}
-
-#ItemContainer .ajax_tab_label {
- color: #333;
- font-size: 16px;
- font-weight: bold;
- font-family: Arial, Helvetica, sans-serif;
- letter-spacing: normal;
-}
-
-#ItemContainer #Thumbnail,
-#ItemContainer #Thumbnail_Place {
- border: none;
-}
-
-#ItemContainer .CommentsContainer .Comments {
- border: 0 none;
-}
-
-#ItemContainer .CommentsContainer .Comment {
- background: none;
-}
-
-#ItemContainer .CommentsContainer .Avatar {
- border: 0 none;
-}
-
-#ItemContainer .CommentsContainer .Post .Audit {
- color: #888;
-}
-
-#BadgeStatsHeader {
- width: auto;
-}
-
-.sbMini {
- margin-top: 5px;
- font-family: Verdana, Sans-Serif;
- font-size: 16px;
- margin-right: 7px;
-}
-
-.ProfileAlertPanel {
- border: none;
-}
-
-#UserPlaces .Place .Statistics,
-#UserPlaces .Place .Configuration {
- border: none;
-}
-
-#GroupTitle {
- width: 888px;
-}
-
-.Column2b .StandardBoxGrey {
- width: 454px;
-}
-
-.subMenu {
- background: url(/images/topNav_black.png);
- width: 900px;
- height: 30px;
- border: none;
- text-align: center;
- margin-top: -5px;
- margin-left: -5px;
-}
-
-.subMenu ul {
- margin: 0 0 0 27px;
-}
-
-.subMenu>ul>li {
- height: 30px;
- margin: 0 2px;
-}
-
-.subMenu ul ul {
- left: -27px;
-}
-
-.subMenu ul ul a,
-.subMenu ul ul a:visited {
- background: #444;
- border: none;
-}
-
-.subMenu ul ul a:hover {
- background: #777;
-}
-
-.subMenu>ul>li:hover {
- background: url(/images/topNav_black.png);
- background-position: 0 30px;
-}
-
-.subMenu :hover>a,
-.subMenu ul ul :hover>a {
- text-decoration: none;
-}
-
-.subMenu a:hover {
- background: none;
- text-decoration: none;
-}
-
-.subMenu a,
-.subMenu a:visited {
- border: none;
-}
-
-.subMenu .subMenuItemselected {
- border: none;
-}
-
-#CancelBuildersClubContainer h2,
-#PaymentMethodsContainer h2,
-#PaymentContainer h2,
-#PayPalContainer h2,
-#CashContainer h2,
-#UpgradeCompleteContainer h2,
-#ManageAccountUpgradesContainer h2,
-#CancelAccountUpgradeContainer h2,
-#AccountUpgradesConfirmationContainer h2 {
- font-family: Arial, Helvetica, Sans-Serif;
- color: #444;
- font-size: 32px;
- font-weight: bold;
- letter-spacing: 0;
-}
-
-#BuildersClubContainer #LeftColumn {
- margin-left: 5px;
-}
-
-#BuildersClubContainer #RightColumn {
- margin-right: 5px;
- font-family: Arial, Helvetica, Sans-Serif;
- font-size: 14px;
- color: #000;
- width: 285px;
-}
-
-#BuildersClubContainer #RightColumn .StandardBox {
- width: 273px;
-}
-
-#BuildersClubContainer #RightColumn .StrongRed {
- font-family: Arial, Helvetica, Sans-Serif;
- font-size: 14px;
- font-weight: bold;
- color: #f00;
-}
-
-#BuildersClubContainer #RightColumn h3 {
- font-weight: bold;
- font-family: Arial, Helvetica, Sans-Serif;
- font-size: 18px;
- color: #333;
-}
-
-#BuildersClubContainer #RightColumn .RefCode {
- font-weight: bold;
- font-family: Arial, Helvetica, Sans-Serif;
- font-size: 30px;
- color: #666;
- display: block;
- margin-bottom: 16px;
-}
-
-#Header {
- font-family: Arial, Helvetica, sans-serif;
- position: absolute;
- bottom: 0;
-}
-
-#hlNews {
- margin-right: 4px;
-}
-
-.AlertSpace {
- position: relative;
- top: 0;
- width: 147px;
- height: 50px;
- border: 1px solid #ccc;
- margin: 0;
- padding: 0;
- margin-left: auto;
- margin-right: auto;
- font-family: Arial, Helvetica, sans-serif;
- font-size: 14px;
- font-weight: bold;
-}
-
-#Header .AlertSpace {
- float: right;
- border: none;
- margin-left: 0;
- margin-right: 0;
- background: url(/images/css/head_sign.png) 0 0;
- height: 78px;
-}
-
-.AlertSpace a {
- position: absolute;
- width: 43px;
- padding-left: 18px;
- background: url(/images/css/head_infobox_icons.png) no-repeat 0 0;
-}
-
-.AlertSpace a:hover,
-#Header .AlertSpace a:active {
- text-decoration: none;
-}
-
-.AlertSpace .MessageAlert {
- border: none;
- background: none;
-}
-
-.AlertSpace .MessageAlert a {
- left: 13px;
- top: 8px;
- color: #444;
- background-position: -2px 0;
-}
-
-.AlertSpace .MessageAlert a:hover {
- color: #aaa;
- background-position: -2px -20px;
-}
-
-.AlertSpace .RobuxAlert {
- border: none;
- background: none;
-}
-
-.AlertSpace .RobuxAlert a {
- left: 13px;
- top: 28px;
- color: #080;
- background-position: -2px -41px;
-}
-
-.AlertSpace .RobuxAlert a:hover {
- color: #0d0;
- background-position: -2px -61px;
-}
-
-.AlertSpace .FriendsAlert {
- border: none;
- background: none;
-}
-
-.AlertSpace .FriendsAlert a {
- left: 79px;
- top: 8px;
- color: #05b;
- background-position: -2px -81px;
-}
-
-.AlertSpace .FriendsAlert a:hover {
- color: #0cf;
- background-position: -2px -101px;
-}
-
-.AlertSpace .TicketsAlert {
- border: none;
- background: none;
-}
-
-.AlertSpace .TicketsAlert a {
- left: 79px;
- top: 28px;
- color: #a61;
- background-position: -2px -121px;
-}
-
-.AlertSpace .TicketsAlert a:hover {
- color: #fb6;
- background-position: -2px -141px;
-}
-
-div.icons,
-a.icons {
- display: none;
-}
-
-div.message_icon {
- display: none;
-}
-
-div.friends_icon {
- display: none;
-}
-
-div.robux_icon {
- display: none;
-}
-
-div.tickets_icon {
- display: none;
-}
-
-#Header .Navigation {
- width: 900px;
- height: 30px;
- background: url(/images/css/topNav_blue.png);
- background-position: 0 0;
- text-align: center;
- line-height: 20px;
-}
-
-.Navigation ul {
- margin: 0 auto;
- padding: 0;
-}
-
-.Navigation li {
- display: inline-block;
- margin: 0;
- padding: 6px 10px 0 10px;
- height: 24px;
- font-size: 16px;
- font-weight: bold;
-}
-
-.Navigation li:hover {
- background: url(/images/css/topNav_blue.png);
- background-position: 0 30px;
-}
-
-.Navigation a {
- display: inline-block;
- color: #fff;
-}
-
-.Navigation a:hover {
- text-decoration: none;
-}
-
-.Navigation ul li a,
-.Navigation ul li a:visited {
- border: none;
- font-size: 16px;
- padding: 0;
-}
-
-.Navigation .dropdownmainnav {
- border: none;
- line-height: 2em;
- background: #444;
-}
-
-.Navigation .dropdownmainnav div {
- background-color: #444;
- cursor: pointer;
-}
-
-.Navigation .dropdownmainnav div:hover {
- background-color: #888;
-}
-
-.StandardBox {
- padding: 5px;
- margin-bottom: 8px;
- background: url(/images/css/standardBox_01_bkg.png) top repeat-x #fff;
- border: 1px solid #aaa;
- z-index: 0;
-}
-
-.StandardBoxHeader,
-.StandardBoxHeaderGray {
- height: 33px;
- padding: 0 7px 0 5px;
- text-align: left;
- z-index: 2;
- background: url(/images/css/tab_black_33h_t1.png) no-repeat left top;
- font-family: Arial, Helvetica, sans-serif;
- font-size: 20px;
- font-weight: bold;
- color: #fff;
- z-index: 0;
-}
-
-.StandardBoxHeaderGray {
- background: url(/images/css/tab_gray_33h_t1.png) no-repeat left top;
-}
-
-.StandardBoxHeader span,
-.StandardBoxHeaderGray span {
- display: block;
- width: 100%;
- height: 29px;
- padding: 5px 5px 0 2px;
- background: url(/images/css/tab_black_33h_t2.png) no-repeat right top;
- overflow: hidden;
-}
-
-.StandardBoxHeaderGray span {
- background: url(/images/css/tab_gray_33h_t2.png) no-repeat right top;
-}
-
-.StandardTabWhite {
- background: url(/images/css/tab_white_26h_t1.png) no-repeat left top;
- padding: 0 4px;
- float: none;
- text-align: left;
-}
-
-.StandardTabWhite span {
- display: block;
- width: 100%;
- *width: 115%;
- height: 26px;
- padding: 5px 5px 0 9px;
- background: url(/images/css/tab_white_26h_t2.png) no-repeat right top;
- font-family: Arial, Helvetica, sans-serif;
- font-size: 14px;
- color: #000;
- font-weight: normal;
-}
-
-.StandardBoxWhite {
- position: relative;
- top: -1px;
- background: #fff;
- border: 1px solid #ccc;
- padding: 8px;
- color: Black;
-}
-
-.StandardTabGray,
-.StandardTabGrayActive {
- position: relative;
- background: url(/images/css/tab_white_31h_t1.png) no-repeat left top;
- background-position: left 0;
- height: 31px;
- padding: 0;
- text-align: left;
- cursor: pointer;
- margin: 0;
-}
-
-.StandardTabGray span,
-.StandardTabGrayActive span {
- background: url(/images/css/tab_white_31h_t2.png) no-repeat right top;
- background-position: right 0;
- height: 25px;
- padding: 6px 16px 0 8px;
- margin: 0 0 0 4px;
- color: #333;
- font-family: Arial, Helvetica, sans-serif;
- font-size: 16px;
- font-weight: bold;
- display: block;
-}
-
-.StandardTabGray a,
-.StandardTabGrayActive a {
- color: #333;
-}
-
-.StandardTabGrayActive {
- background-position: left -62px;
-}
-
-.StandardTabGrayActive span {
- background-position: right -62px;
-}
-
-.StandardTabGray:hover {
- position: relative;
- background: url(/images/css/tab_white_31h_t1.png) no-repeat left top;
- background-position: left -31px;
- height: 31px;
- padding: 0;
- z-index: 2;
- text-align: left;
- margin: 0;
-}
-
-.StandardTabGray span:hover {
- background: url(/images/css/tab_white_31h_t2.png) no-repeat right top;
- background-position: right -31px;
- height: 25px;
- padding: 6px 16px 0 8px;
- margin: 0 0 0 4px;
- color: #333;
- font-family: Arial, Helvetica, sans-serif;
- font-size: 16px;
- font-weight: bold;
- display: block;
-}
-
-.StandardBoxGray {
- position: relative;
- top: -2px;
- padding: 8px 5px;
- background: url(/images/css/standardBox_01_bkg.png) top repeat-x #fff;
- border: 1px solid #aaa;
-}
-
-.tab_white_31h_container .ajax__tab_header {
- background: none;
-}
-
-.tab_white_31h_container .ajax__tab_outer {
- background: none;
- height: auto;
-}
-
-.tab_white_31h_container .ajax__tab_inner {
- position: relative;
- background: url(/images/css/tab_white_31h_t1.png) no-repeat left top;
- height: 31px;
- padding-left: 0;
- z-index: 2;
-}
-
-.tab_white_31h_container .ajax__tab_header .ajax__tab_tab {
- background: url(/images/css/tab_white_31h_t2.png) no-repeat right top;
- height: 25px;
- padding: 6px 16px 0 8px;
- margin: 0 0 0 4px;
-}
-
-.tab_white_31h_container .ajax__tab_hover .ajax__tab_outer {
- background: none;
- height: auto;
-}
-
-.tab_white_31h_container .ajax__tab_hover .ajax__tab_inner {
- position: relative;
- background: url(/images/css/tab_white_31h_t1.png) no-repeat left top;
- background-position: left -31px;
- height: 31px;
- padding-left: 0;
- z-index: 2;
-}
-
-.tab_white_31h_container .ajax__tab_hover .ajax__tab_tab {
- background: url(/images/css/tab_white_31h_t2.png) no-repeat right top;
- background-position: right -31px;
- height: 25px;
- padding: 6px 16px 0 8px;
- margin: 0 0 0 4px;
-}
-
-.tab_white_31h_container .ajax__tab_active .ajax__tab_outer {
- background: none;
- height: auto;
-}
-
-.tab_white_31h_container .ajax__tab_active .ajax__tab_inner {
- position: relative;
- background: url(/images/css/tab_white_31h_t1.png) no-repeat left top;
- background-position: left -62px;
- height: 31px;
- padding-left: 0;
- z-index: 2;
-}
-
-.tab_white_31h_container .ajax__tab_active .ajax__tab_tab {
- background: url(/images/css/tab_white_31h_t2.png) no-repeat right top;
- background-position: right -62px;
- height: 25px;
- padding: 6px 16px 0 8px;
- margin: 0 0 0 4px;
-}
-
-.tab_white_31h_container .ajax__tab_body {
- position: relative;
- top: -2px;
- padding: 8px 5px;
- background: url(/images/css/standardBox_01_bkg.png) top repeat-x #fff;
- border: 1px solid #aaa;
-}
-
-.Column2a {
- float: left;
-}
-
-.Column3b {
- float: left;
-}
-
-.Column2c {
- float: left;
- margin-left: 10px;
-}
-
-.Column2d {
- float: left;
-}
-
-.Column1e {
- width: 140px;
-}
-
-.Column2e .StandardBoxHeaderGray {
- margin: 0;
- width: 726px;
-}
-
-.Column2e .StandardBoxGray {
- width: 726px;
-}
-
-.Column2f {
- float: left;
-}
-
-div.rbx2only {
- display: block;
-}
-
-.rbx2only {
- display: inline;
-}
-
-.rbx2hide {
- display: none;
-}
-
-#RobloxCentralBank {
- overflow: hidden;
-}
-
-.transparentBkg {
- background-color: Transparent;
-}
-
-.FriendRequestsPane {
- width: 890px;
-}
-
-.Shadow {
- display: none;
-}
-
-.ShadowedStandardBox .Header {
- height: 33px;
- padding: 0 7px 0 5px;
- text-align: left;
- z-index: 2;
- background: url(/images/css/tab_black_33h_t1.png) no-repeat left top;
- font-family: Arial, Helvetica, sans-serif;
- font-size: 20px;
- font-weight: bold;
- color: #fff;
-}
-
-.ShadowedStandardBox .Header span {
- display: block;
- width: 100%;
- height: 29px;
- background: url(/images/css/tab_black_33h_t2.png) no-repeat right top;
- overflow: hidden;
- height: 26px;
- padding: 7px 4px 0 3px;
-}
-
-.ShadowedStandardBox .Content {
- padding: 5px;
- margin-bottom: 8px;
- background: url(/images/css/standardBox_01_bkg.png) top repeat-x #fff;
- border: 1px solid #aaa;
-}
-
-a.rss_icon {
- background: url(/images/css/topNav_rss.png) no-repeat;
-}
-
-.Column1d .StandardTabWhite,
-.Column2d .StandardTabWhite {
- width: auto;
-}
-
-.MyRobloxContainer {
- width: 890px;
-}
-
-.BCHat {
- margin-top: 1px;
-}
-
-#partycontainer
-{
- bottom: 110px;
- right: 10px;
-}
-
-.partyWindow {
- color: #666;
- font-family: Verdana, Geneva, sans-serif;
- font-size: 11px;
- width: 250px;
-}
-
-.partyWindow .title
-{
- background: transparent url('/images/friendsbar/tab_blue19h_l.gif') no-repeat left top;
- display: block;
- text-decoration: none;
- padding-left: 2px;
- height: 19px;
- width:248px;
- cursor: pointer;
-}
-.partyWindow .title span
-{
- background: transparent url('/images/friendsbar/tab_blue19h_r.gif') no-repeat right top;
- display: block;
- height: 15px;
- padding: 2px 15px 2px 7px;
- text-decoration: none;
- color:#fff;
-}
-
-.partyWindow .title_flash
-{
- background: transparent url('/images/friendsbar/tab_white19h_l2.gif') no-repeat left top;
-}
-.partyWindow .title_flash span
-{
- background: transparent url('/images/friendsbar/tab_white19h_r2.gif') no-repeat right top;
- color:#444;
-}
-
-.partyWindow .title strong {
- display:block;
- padding:2px 15px 4px 6px;
- background:url("/images/chat/tab_blue21h_r.png") no-repeat right top;
- color: #fff;
- width: 227px;
- font-weight: bold;
-}
-
-.partyWindow .closeparty {
- width:10px;
- height:9px;
- /*float:right;*/
- margin: 5px 9px 0 0;
- cursor:pointer;
- position:absolute;
- right:0;
- top:0;
- color: #fff;
- font-weight: bold;
- font-size:14px;
-}
-
-.partyWindow .main {
- clear: both;
- width: 248px;
- height: auto;
- margin: 0;
- /*padding: 10px;*/
- background: #f2f2f2;
- border: 1px solid #a6a6a6;
- border-top: 0px none;
- overflow:auto;
-}
-
-.partyWindow .kickuser
-{
- float: right;
- padding-right: 5px;
- color: Red;
- cursor: pointer;
-}
-#new_party p {
- text-align:center;
- padding: 40px 0 0 0;
-}
-
-#party_none .main .btn_green21h {
- margin: 15px 0 0 77px;
-}
-
-.clear {
- clear:both;
-}
-
-.main #new_party_clear {
- padding: 40px 0 0 0;
-}
-
-
-
-/* Buttons using sliding doors */
-
-.btn_green21h {
- float:left;
- background:url("/images/chat/btn_green21h_l.png") no-repeat left top;
- padding:0 0 0 2px;
-}
-.btn_green21h a {
- display:block;
- padding:2px 14px 4px 10px;
- background:url("/images/chat/btn_green21h_r.png") no-repeat right top;
- color: White;
- font-family: verdana;
- font-weight: bold;
- text-decoration: none;
-}
-.btn_green21h:hover {
- background:url("/images/chat/btn_green21h_over_l.png") no-repeat left top;
-}
-.btn_green21h:hover a {
- background:url("/images/chat/btn_green21h_over_r.png") no-repeat right top;
-}
-.btn_red21h {
- float:left;
- background:url("/images/chat/btn_red21h_l.png") no-repeat left top;
- padding:0 0 0 2px;
-}
-.btn_red21h a {
- display:block;
- padding:2px 14px 4px 10px;
- background:url("/images/chat/btn_red21h_r.png") no-repeat right top;
- color: White;
- font-family: verdana;
- font-weight: bold;
- text-decoration: none;
-}
-.btn_red21h:hover {
- background:url("/images/chat/btn_red21h_over_l.png") no-repeat left top;
-}
-.btn_red21h:hover a {
- background:url("/images/chat/btn_red21h_over_r.png") no-repeat right top;
-}
-
-.btn_black21h {
- float:left;
- background:url("/images/chat/btn_black21h_l.png") no-repeat left top;
- padding:0 0 0 2px;
- color: White;
-}
-.btn_black21h a {
- display:block;
- padding:2px 14px 4px 10px;
- background:url("/images/chat/btn_black21h_r.png") no-repeat right top;
- color: #FFF;
- font-family: verdana;
- font-weight: bold;
- text-decoration: none;
-}
-.btn_black21h:hover {
- background:url("/images/chat/btn_black21h_over_l.png") no-repeat left top;
-}
-.btn_black21h:hover a {
- background:url("/images/chat/btn_black21h_over_r.png") no-repeat right top;
-}
-
-/* Party Invite CSS */
-
-.main h1 {
- padding: 15px 20px 15px 20px;
- font-size: 130%;
- text-align:center;
-}
-
-
-.main #invite_status {
- padding: 10px 0 10px 0;
-}
-
-.main p {
- padding: 0 0 7px 0;
-}
-
-.main .btn_green21h {
- float:left;
- margin: 0 0 0 35px;
-}
-.main .btn_black21h {
- float:right;
- margin: 0 35px 0 0;
-}
-
-.main #invite_clear {
- padding: 15px 0 0 0;
-}
-
-/* Party Leader css */
-
-dd {
-}
-dt {
- float: left;
-}
-dd {
- margin-left: 30px;
-}
-
-.grey9{
- color:gray;
- font-size:9px;
-}
-.status{
- color:gray;
- font-size:11px;
-}
-.name_me {
- font-weight:bold;
- color:#0066cc;
-}
-.name_other {
- font-weight:bold;
- color:#007b00;
-}
-.name_status {
- font-weight:bold;
-}
-
-.partyWindow {
- color:black;
- font-size:11px;
- height:auto;
-}
-
-.members dl {
- padding: 0 0 0 5px;
-}
-.members dt {
- padding: 4px 0 0 0;
-}
-.members dd {
- padding: 4px 0 1px 0;
-}
-
-.main p {
- padding: 10px 0 5px 0px;
- text-align:center;
-}
-
-#chat_messages {
- padding: 0px 3px 3px 3px;
- margin: 5px 5px 0 5px;
- height:217px;
- overflow:auto;
- background-color:white;
- border-style: solid;
- border-width:1px;
- border-color:#aaa;
-}
-#chat_messages li {
- padding: 6px 0 0 0;
- list-style-type: none;
-}
-
-#party_game_thumb
-{
- width: 75px;
- margin-right: 5px;
- float: left;
-}
-#party_current_game
-{
- margin: 5px;
-}
-#party_game_name
-{
- width: 140px;
- float: left;
-}
-#party_game_follow_me
-{
- margin-top: 5px;
-}
-
-#chat_input {
- margin: 5px 5px 0 5px;
- padding-right:2px;
-}
-
-#chat_input input {
- border: 1px solid #ccc;
- width:236px;
- height: 40px;
-}
-
-#chat_input textarea {
- border: 1px solid #aaa;
- overflow: auto;
- width:100%;
- height:50px;
-}
-
-.main #leader_clear {
- padding: 15px 0 0 0;
-}
-
-#party_my .main .btn_black21h {
- /*margin: 20px 0 0 73px;*/
- margin: 15px 70px 0 0;
- /*position:absolute;
- left:83px;
- top:402px;
- */
-}
-
-// Roblox Forum
-a.linkSmallBold, a.linkMenuSink
-{
- font-weight: bold;
- color: #0000FF;
-}
-
-a.linkSmall, a.LinkSmallBold, a.linkMenuSink
-{
- color: navy;
- font-size: 0.9em;
-}
-
-
-a.linkSmallBold:visited, a.linkMenuSink:visited
-{
- font-weight: normal;
- color: #013DA4;
-}
-
-a.linkSmallBold:Hover, a.linkMenuSink:Hover
-{
- color: #DD6900;
-}
-
-
-/*****************************************************
-Text and Anchor to display when a user is online
-*****************************************************/
-.userOnlineLinkBold, a.userOnlineLinkBold, a.userOnlineLinkBold:Visited, a.userOnlineLinkBold:Hover, a.userOnlineLinkBold:Link
-{
- font-weight: bold;
- color: #0055E7;
-}
-
-.moderatorOnlineLinkBold, a.moderatorOnlineLinkBold, a.moderatorOnlineLinkBold:Visited, a.moderatorOnlineLinkBold:Hover, a.moderatorOnlineLinkBold:Link
-{
- font-weight: bold;
- color: #00008B;
-}
-
-.adminOnlineLinkBold, a.adminOnlineLinkBold, a.adminOnlineLinkBold:Visited, a.adminOnlineLinkBold:Hover, a.adminOnlineLinkBold:Link
-{
- font-weight: bold;
- color: black;
-}
-
-/*****************************************************
-Text and anchors used in the navigation menu
-*****************************************************/
-.menuTitle
-{
- font-weight: bold;
- font-size: 20px;
- FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
- color: navy;
-}
-
-.menuText
-{
- font-size: 0.9em;
- font-weight: bold;
- color: #FFFFFF;
-}
-
-a.menuTextLink:visited, a.menuTextLink:link
-{
- font-size: 0.9em;
- text-decoration: none;
- color: #013DA4;
-}
-
-a.menuTextLink:Hover
-{
- color: #000000;
-}
-
-
-/*****************************************************
-Text and anchors used in the search
-*****************************************************/
-.searchPager
-{
- font-size : 0.9em;
- font-weight: bold;
-}
-
-.searchItem
-{
- background-color: #DDEEFF;
-}
-
-.searchAlternatingItem
-{
- background-color: #FFFFFF;
-}
-
-
-/*****************************************************
-Default separator style for PostList
-*****************************************************/
-td.flatViewSpacing
-{
- height: 2px;
- background-color: #80B7FF;
-}
-
-/*****************************************************
-Table Header and cell definitions
-*****************************************************/
-th
-{
- /* background-image: url(ForumC/skins/default/images/forumHeaderBackground.gif); */
- background-color: #6e99c9;
-}
-
-td.forumHeaderBackgroundAlternate
-{
- /* background-image: url(ForumC/skins/default/images/forumHeaderBackgroundAlternate.gif); */
- background-color: #BDD6F5;
-}
-
-/*****************************************************
-Body
-*****************************************************/
-body
-{
- FONT-SIZE: 8pt;
- COLOR: #000000;
- FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
- scrollbar-face-color: #DEE3E7;
- scrollbar-highlight-color: #FFFFFF;
- scrollbar-shadow-color: #DEE3E7;
- scrollbar-3dlight-color: #D1D7DC;
- scrollbar-arrow-color: #006699;
- scrollbar-track-color: #EFEFEF;
- scrollbar-darkshadow-color: #98AAB1;
-}
-
-
-/*****************************************************
-Validation Text
-*****************************************************/
-.validationWarningSmall
-{
- color: Red;
- font-size : 0.9em;
-}
-
-/*****************************************************
-General Text
-*****************************************************/
-.normalTextSmall
-{
- font-size : 1.0em;
-}
-
-.CenterColumn a
-{
- color : #0000FF;
-}
-.CenterColumn a:visited
-{
- color : #013DA4;
-}
-
-
-.normalTextSmallBold
-{
- font-size : 1.0em;
- font-weight: bold;
-}
-
-.normalTextSmaller
-{
- font-size: 0.9em;
-}
-
-.normalTextSmall, .normalTextSmallBold, .normalTextSmaller
-{
- color : #000000;
- FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
-}
-
-.normalTextSmall a, .normalTextSmallBold a, .normalTextSmaller a
-{
- color : #0000FF;
- FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
-}
-.normalTextSmall a:visited, .normalTextSmallBold a:visited, .normalTextSmaller a:visited
-{
- color : #013DA4;
- FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
-}
-
-/*****************************************************
-Text used on tables with a background
-*****************************************************/
-.tableHeaderText
-{
- color: white;
- font-size: 11px;
- padding: 5px;
- font-weight:bold;
- text-align: center;
- font-family: Verdana, Helvetica, Arial, Sans-Serif;
-}
-
-/*****************************************************
-Border used around tables
-*****************************************************/
-.tableBorder
-{
- border: 1px #013DA4 solid;
- background-color: #FFFFFF;
-}
-
-/*****************************************************
-Main forum colors
-*****************************************************/
-td.forumRow
-{
- background-color: #DDEEFF;
-}
-
-
-td.forumAlternate
-{
- background-color: #DAE7FD;
-}
-
-/*****************************************************
-Background color and text used in threaded view
-*****************************************************/
-td.threadTitle
-{
- background-color: #D4D9EC;
-}
-
-.threadDetailTextSmall
-{
- color: #0055E7;
- font-size: 0.9em;
-}
-
-.threadDetailTextSmallBold
-{
- color: #0055E7;
- font-size: 0.9em;
- font-weight: bold;
-}
-
-td.forumRowHighlight
-{
- background-color: #dfe9fc;
-}
-
-/*****************************************************
-Text and links used in ForumGroupRepeater and ForumRepeater
-*****************************************************/
-.forumTitle
-{
- font-size: 1.0em;
- font-weight: bold;
- color: #013DA4;
-}
-
-
-a.forumTitle:visited, a.forumTitle:link
-{
- font-size: 1.0em;
- font-weight: bold;
- color: #013DA4;
-}
-
-a.forumTitle:hover
-{
- color: #DD6900;
-}
-
-.forumName
-{
- font-weight: bold;
- font-size: 16px;
- FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
- text-decoration: none;
- color: navy;
-}
-
-a.forumName:hover
-{
- color: #DD6900;
- text-decoration: underline;
-}
-
-
-/*****************************************************
-Form Elements
-*****************************************************/
-select
-{
- FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
- font-size: 0.9em;
- font-weight: bold;
- background-color: #DAE7FD;
- border-color: Black;
-}
-
-textarea
-{
- FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
- font-size: 0.9em;
- background-color: White;
- border-color: Black;
-}
-
-/*****************************************************
-Menu Controls
-*****************************************************/
-A.linkMenuSink
-{
- font-size: 0.9em;
- FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
- position: relative;
-}
-
-TD.popupMenuSink
-{
- position: relative;
-}
-
-DIV.popupMenu
-{
- border: 1px solid blue;
-}
-
-DIV.popupTitle
-{
- FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
- color: white;
- font-weight: bold;
- background-color: #4455AA;
-}
-
-DIV.popupItem
-{
- font-size: 1.0em;
- font-weight: bold;
- FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
- background-color: #DDEEFF;
-}
\ No newline at end of file
diff --git a/resources/views/admin/ban.blade.php b/resources/views/admin/ban.blade.php
deleted file mode 100644
index 66bab49..0000000
--- a/resources/views/admin/ban.blade.php
+++ /dev/null
@@ -1,54 +0,0 @@
-@inject('user', 'App\Http\Controllers\UsersController')
-
-@extends('layouts.app')
-
-@section('title')
-Ban
-@endsection
-
-@section('content')
-
-
Ban user
-
Ban a user from Tadah, temporarily or forever.
-
- @if (session()->has('error'))
-
- {{ session()->get('error') }}
-
- @endif
- @if (session()->has('success'))
-
- {{ session()->get('success') }}
-
- @endif
-
-
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/admin/createinvitekey.blade.php b/resources/views/admin/createinvitekey.blade.php
deleted file mode 100644
index 0364b60..0000000
--- a/resources/views/admin/createinvitekey.blade.php
+++ /dev/null
@@ -1,32 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Create Invite Key
-@endsection
-
-@section('content')
-
-
Generate Invite Key
-
Used for inviting new users to Tadah. Inviting random or unknown people is not permitted. Minimum uses: 1 Maximum uses: 50
-
- @if (session()->has('error'))
-
- {{ session()->get('error') }}
-
- @endif
- @if (session()->has('success'))
-
- {{ session()->get('success') }}
-
- @endif
-
- @csrf
-
-
- Uses
-
-
- Create
-
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/admin/index.blade.php b/resources/views/admin/index.blade.php
deleted file mode 100644
index 48da736..0000000
--- a/resources/views/admin/index.blade.php
+++ /dev/null
@@ -1,29 +0,0 @@
-@inject('user', 'App\Http\Controllers\UsersController')
-
-@extends('layouts.app')
-
-@section('title')
-Admin
-@endsection
-
-@section('content')
-
- @if (session()->has('message'))
-
- {{ session()->get('message') }}
-
- @endif
-
Admin Panel
-
They will repent.
-
-
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/admin/invitekeys.blade.php b/resources/views/admin/invitekeys.blade.php
deleted file mode 100644
index 898470c..0000000
--- a/resources/views/admin/invitekeys.blade.php
+++ /dev/null
@@ -1,60 +0,0 @@
-@inject('user', 'App\Http\Controllers\UsersController')
-
-@extends('layouts.app')
-
-@section('title')
-Invite Keys
-@endsection
-
-@section('content')
-
- @if (session()->has('message'))
-
- {{ session()->get('message') }}
-
- @endif
-
Invite Keys
-
All invite keys, depleted or not. Disabling a key turns its uses to zero, it doesn't delete it for archival purposes.
- @if ($invitekeys->count() > 0)
-
-
-
- ID
- Creator
- Key
- Uses Remaining
- Created
- Updated
- Disable
-
-
-
- @foreach ($invitekeys as $invitekey)
-
- {{ $invitekey->id }}
- {{ $invitekey->user->username }}
- {{ $invitekey->token }}
- {{ $invitekey->uses }}
- {{ date('m/d/Y ', strtotime($invitekey->created_at)) }}
- {{ date('m/d/Y ', strtotime($invitekey->updated_at)) }}
-
-
- @csrf
-
-
-
-
-
- @endforeach
-
-
-
- {{ $invitekeys->links('pagination::bootstrap-4') }}
-
- @else
-
-
No invite keys
-
Well, you obviously can't invite anyone without any invite keys, so go make some.
- @endif
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/admin/newxmlitem.blade.php b/resources/views/admin/newxmlitem.blade.php
deleted file mode 100644
index 7687723..0000000
--- a/resources/views/admin/newxmlitem.blade.php
+++ /dev/null
@@ -1,101 +0,0 @@
-@inject('user', 'App\Http\Controllers\UsersController')
-
-@extends('layouts.app')
-
-@section('title')
-New XML Asset
-@endsection
-
-@section('content')
-
-
New XML Asset
-
Create a new XML asset on Tadah.
-
- @if (session()->has('error'))
-
- {{ session()->get('error') }}
-
- @endif
- @if (session()->has('success'))
-
- {{ session()->get('success') }}
-
- @endif
-
- @csrf
-
-
- Item Name
-
-
-
-
- Description
-
-
-
-
- XML Data
-
-
-
-
- Roblox ID - Get item info
-
-
-
-
- Roblox Version
-
-
-
-
- Thumbnail URL
-
-
-
-
- Type
-
- Hat
- Gear
- Head
- Package
- Model
-
-
-
-
- Price
-
-
-
- Create XML Asset
-
-
-@endsection
-
-@section('scripts')
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/admin/unban.blade.php b/resources/views/admin/unban.blade.php
deleted file mode 100644
index 6c38d4b..0000000
--- a/resources/views/admin/unban.blade.php
+++ /dev/null
@@ -1,34 +0,0 @@
-@inject('user', 'App\Http\Controllers\UsersController')
-
-@extends('layouts.app')
-
-@section('title')
-Ban
-@endsection
-
-@section('content')
-
-
Unban user
-
Unban a user from Tadah. Usually used during moderation errors.
-
- @if (session()->has('error'))
-
- {{ session()->get('error') }}
-
- @endif
- @if (session()->has('success'))
-
- {{ session()->get('success') }}
-
- @endif
-
- @csrf
-
-
- Username
-
-
- Unban
-
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/auth/login-old.blade.php b/resources/views/auth/login-old.blade.php
deleted file mode 100644
index 173cca6..0000000
--- a/resources/views/auth/login-old.blade.php
+++ /dev/null
@@ -1,73 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
- @csrf
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-@endsection
diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php
deleted file mode 100644
index d5cf582..0000000
--- a/resources/views/auth/login.blade.php
+++ /dev/null
@@ -1,94 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
- Create a Free {{ config('app.name') }} Account
-
-
-
- Creating an account on {{ config('app.name') }} allows you to customize your character, make friends,
- build places, earn money, and more!
-
-
-
- Register
-
-
-
-
-
-
-
-
-
- @csrf
-
-
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/auth/passwords/confirm.blade.php b/resources/views/auth/passwords/confirm.blade.php
deleted file mode 100644
index ca78fc1..0000000
--- a/resources/views/auth/passwords/confirm.blade.php
+++ /dev/null
@@ -1,49 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
- {{ __('Please confirm your password before continuing.') }}
-
-
- @csrf
-
-
-
-
-
-
-
-
-
-
-@endsection
diff --git a/resources/views/auth/passwords/email.blade.php b/resources/views/auth/passwords/email.blade.php
deleted file mode 100644
index 1fea984..0000000
--- a/resources/views/auth/passwords/email.blade.php
+++ /dev/null
@@ -1,47 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
- @if (session('status'))
-
- {{ session('status') }}
-
- @endif
-
-
- @csrf
-
-
-
-
-
-
-
-
-
-
-@endsection
diff --git a/resources/views/auth/passwords/reset.blade.php b/resources/views/auth/passwords/reset.blade.php
deleted file mode 100644
index 989931d..0000000
--- a/resources/views/auth/passwords/reset.blade.php
+++ /dev/null
@@ -1,65 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
- @csrf
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-@endsection
diff --git a/resources/views/auth/register-old.blade.php b/resources/views/auth/register-old.blade.php
deleted file mode 100644
index 2e3a221..0000000
--- a/resources/views/auth/register-old.blade.php
+++ /dev/null
@@ -1,99 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
- @if (config('app.registration_enabled'))
-
- @csrf
-
-
-
-
-
- @if (config('app.invite_keys_required'))
-
- @endif
-
-
-
-
-
-
-
- @else
-
Registration closed
-
Sorry, we're not taking new users at the moment. Check back in a bit.
- @endif
-
-
-
-
-
-@endsection
diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php
deleted file mode 100644
index cd40c3e..0000000
--- a/resources/views/auth/register.blade.php
+++ /dev/null
@@ -1,89 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
Sign Up and Play
-
Step 1 of 2: Create Account
-
-
-
- Choose a name for your ROBLOX character
-
- Use 3-20 alphanumeric characters: A-Z, a-z, 0-9, no spaces
-
-
-
- Character Name:
-
-
-
-
-
-
-
- Provide your parent's email address
-
- This will allow you to recover a lost password
-
-
-
- Your Parent's Email:
-
-
-
-
-
-
-
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/auth/verify.blade.php b/resources/views/auth/verify.blade.php
deleted file mode 100644
index 9f8c1bc..0000000
--- a/resources/views/auth/verify.blade.php
+++ /dev/null
@@ -1,28 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
- @if (session('resent'))
-
- {{ __('A fresh verification link has been sent to your email address.') }}
-
- @endif
-
- {{ __('Before proceeding, please check your email for a verification link.') }}
- {{ __('If you did not receive the email') }},
-
- @csrf
- {{ __('click here to request another') }} .
-
-
-
-
-
-
-@endsection
diff --git a/resources/views/catalog/configure.blade.php b/resources/views/catalog/configure.blade.php
deleted file mode 100644
index 57c3817..0000000
--- a/resources/views/catalog/configure.blade.php
+++ /dev/null
@@ -1,123 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Configure Item
-@endsection
-
-@section('content')
-
-
-
-
-
-
-
-
- @csrf
-
- @if (session()->has('error'))
-
- {{ session()->get('error') }}
-
- @endif
-
-
-
-
-
-
-
- @if ($item->isXmlAsset())
-
-
-
- @endif
-
-
-
-
-
-
-
-
-
-
-
-
-@endsection
diff --git a/resources/views/catalog/index-old.blade.php b/resources/views/catalog/index-old.blade.php
deleted file mode 100644
index 56bfd74..0000000
--- a/resources/views/catalog/index-old.blade.php
+++ /dev/null
@@ -1,74 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Catalog
-@endsection
-
-@section('meta')
-
-
-
-
-
-
-@endsection
-
-@section('content')
-
-
-
-
- @if ($items->count() > 0)
-
- @foreach ($items->all() as $item)
-
- @endforeach
-
- @else
-
-
Nothing found
-
Looks like there are no items to display for this query.
-
- @endif
-
- {{ $items->links('pagination::bootstrap-4') }}
-
-
-@endsection
diff --git a/resources/views/catalog/index.blade.php b/resources/views/catalog/index.blade.php
deleted file mode 100644
index 9a00007..0000000
--- a/resources/views/catalog/index.blade.php
+++ /dev/null
@@ -1,245 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Browse
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Category
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
LEGEND
-
-
-
Builders Club Only items are those which can only be purchased by users with a
Builders Club membership.
-
-
-
Limited Items are those which were once sold by Roblox and will not be sold again. Users who own these items can re-sell them to other users for the price of their choice.
-
-
-
Limited Unique Items are sold by Roblox until they run out (we could release, say, 100 of a certain hat.) When you buy these, they are stamped with a serial number (i.e. 7 / 100) that shows which one you got.
-
- Once these items run out, they can also be sold to other users.
-
-
-
-
-
-
-
- {{ $type }} For Sale
-
-
-
- @foreach (array_chunk($items->items(), 5) as $rowitems)
-
- @foreach ($rowitems as $item)
-
-
-
-
-
-
-
-
- Updated:
- {{ $item->updated_at->diffForHumans() }}
-
-
-
- Number Sold:
- {{ number_format($item->sales) }}
-
-
-
- D$: {{ number_format($item->price) }}
-
-
-
-
- @endforeach
-
- @endforeach
-
-
-
- Avatar Items - {{ config('app.name') }} has a full virtual goods catalog with avatar items and other virtual items. Create a free account on {{ config('app.name') }} and start collecting
-
virtual avatar items
- , virtual goods, virtual items, and other gear for your virtual avatars.
-
-
-
-
-
-
-
-
-
-
-@endsection
diff --git a/resources/views/catalog/item-old.blade.php b/resources/views/catalog/item-old.blade.php
deleted file mode 100644
index f62e6ae..0000000
--- a/resources/views/catalog/item-old.blade.php
+++ /dev/null
@@ -1,53 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-{{ $item->name }}
-@endsection
-
-@section('content')
-
- @if (session()->has('message'))
-
- {{ session()->get('message') }}
-
- @endif
-
-
-
-
-
-
{{ $item->name }} @if (Auth::user()->id == $item->user->id || Auth::user()->admin) @endif
-
-
-
-
Description: {{ $item->description }}
-
-
-
-
-
-
-
-
-
Creator: {{ $item->user->username }} Sales: {{ $item->sales }}
-
-
Price: {{ $item->price }}
- @if ($item->onsale && $item->approved)
- @if (!$ownedItem)
-
- @csrf
-
- Buy
-
- @else
-
You already own this.
- @endif
- @else
-
Item not for sale.
- @endif
-
-
-
-
-
-@endsection
diff --git a/resources/views/catalog/item.blade.php b/resources/views/catalog/item.blade.php
deleted file mode 100644
index 0dd5cb9..0000000
--- a/resources/views/catalog/item.blade.php
+++ /dev/null
@@ -1,310 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ config('app.name') }} {{ $item->type }}
-
-
-
- @if ($item->onsale && $item->approved)
- @if (!$ownedItem)
-
-
-
- D$: {{ number_format($item->price) }}
-
-
-
-
- @else
-
You already own this.
- @endif
- @else
-
Item not for sale.
- @endif
-
-
-
-
-
-
- Created:
- {{ $item->created_at->diffForHumans() }}
-
-
- Updated:
- {{ $item->updated_at->diffForHumans() }}
-
-
-
- Total Sold:
- {{ $item->sales }}
-
-
-
-
-
- Description:
-
-
- {{ $item->description }}
-
-
-
- @if ($item->user == Auth::user() || Auth::user()->admin)
-
- @endif
-
-
-
-
-
Recommendations
-
-
Here are some other items that we think you might like.
-
-
-
- There's nothing here.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/catalog/upload.blade.php b/resources/views/catalog/upload.blade.php
deleted file mode 100644
index 575ad46..0000000
--- a/resources/views/catalog/upload.blade.php
+++ /dev/null
@@ -1,114 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Upload Item
-@endsection
-
-@section('content')
-
-
-
-
-
-
-
- @if (config('app.item_creation_enabled'))
-
- @csrf
-
- @if (session()->has('error'))
-
- {{ session()->get('error') }}
-
- @endif
-
- Uploading an asset costs {{ config('app.asset_upload_cost') }} {{ config('app.currency_name_multiple') }}.
-
-
-
-
-
-
-
-
-
-
-
-
-
- @else
-
Item creation disabled
-
Sorry, item creation has been disabled. Check back later.
- @endif
-
-
-
-
-
-@endsection
diff --git a/resources/views/client/admin.blade.php b/resources/views/client/admin.blade.php
deleted file mode 100644
index b0b2e1b..0000000
--- a/resources/views/client/admin.blade.php
+++ /dev/null
@@ -1,1455 +0,0 @@
---[[
- File Name: admin.lua
- Description: The main admin commands for CNT. This also acts like the parent for
- all the other scripts like the anticheat and antivirus and contains
- all the configuration.
- Authors: Niall, Carrot, Quin
- Date: 6/16/2018 @ 5:15 PM CST (11:15 PM GMT)
- https://github.com/carat-ye/cnt
---]]
-
-_G.CNT = {}
-_G.CNT.AV = {}
-
---- Configuration
---[[
- Names & ID's are allowed. Entries in the admin table are structured as [name] (or id) = powerLevel.
- Here are the power levels:
- 1 = Owner
- 2 = Admin
- 3 = Temp Admin
- 4 = Moderator
- 5 and above = Test User (Doesn't have access to any commands that affect the game.)
---]]
-local admins = {
- ["{{ $server->user->username }}"] = 1,
- @foreach ($admins as $admin)
- ["{{ $admin->username }}"] = 1,
- @endforeach
-}
-local banned = {} -- List players that are banned from your game here.
-local prefixes = { -- Admin prefixes, e.g "
kill Carrot"
- ":",
- ";",
- "@",
- ".",
- ">",
- "/",
- "$",
- "!",
-}
-
-local DAY_NIGHT_INTERVAL = .2
-local DAY_NIGHT = false
-local INFECTED = false
-local SERVER_LOCKED = false
-local MESSAGE_TIMEOUT = 5
-
---- Antivirus
-local QUARANTINE = true
-local CLASSES = {
- "AutoJoint",
- "BackpackItem",
- "Feature",
- "Glue",
- "HtmlWindow",
- "JointInstance",
- "LocalBackpack",
- "LocalBackpackItem",
- "MotorFeature",
- "Mouse",
- "Rotate",
- "RotateP",
- "RotateV",
- "Snap",
- "StockSound",
- "VelocityMotor",
- "Geometry",
- "Timer",
- "Weld",
- "ChangeHistoryService",
-}
-local NAMES = {
- "infection",
- "lol",
- "wut",
- "hoo",
- "you",
- "got",
- "hack",
- "vaccine",
- "virise",
- "virus",
- "xd",
- "infected",
- "oh",
- "snap",
- "vir",
- "virisis",
- "snapreducer",
- "viris",
- "anti",
- "lag",
- "wildfire",
- "4D",
- "being",
- "plz",
- "ohai",
- "no",
-}
-
-local TO_SCAN = {
- "Workspace",
-}
-
---//========================================================================================================================\\--
---// !! !!!!!!!!!! !! \\--
---// We are not responsible for the script not working if you modify anything beyond this point. \\--
---// !! !!!!!!!!!! !! \\--
---//========================================================================================================================\\--
-
---- Declarations
--- Declaration order: services, strings, numbers, bools
-local Players = game:GetService("Players")
-local Debris = game:GetService("Debris")
-local Lighting = game:GetService("Lighting")
-local CNT_VERSION = "1.0.0 Early Alpha"
-local CLIENT_VERSION = version()
-local LUA_VERSION = _VERSION
-_G.CNT.NewVersion = false
-
---- Functions
-
---- Deletes an object.
--- @param Instance object: The object to be removed.
-local function Destroy(instance)
- Debris:AddItem(instance, 0)
-end
-
--- Random string generation.
-local characters = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x",
- "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
- "W", "X", "Y", "Z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"}
-
---- Generate a random script with described length.
--- @param length number: The length of the desired random string.
--- @return random string: The random string that was generated.
-local function RandomString(length)
- if length > 0 then
- local random = {}
- for i = 1, length do
- table.insert(random, characters[math.random(#characters)])
- end
- return table.concat(random, "")
- else
- return ""
- end
-end
-
---- Check if a table has a value.
--- @param table check: The table to check for the value described.
--- @param string checkValue: The value to check in the table.
--- @return bool: Whether it could find the value in the table. If it does, then it's true.
--- Otherwise, false.
-local function HasValue(check, checkValue)
- for index, value in ipairs(check) do
- if value:lower() == checkValue then
- return true
- end
- end
-
- return false
-end
-
---- Checks if a user is banned.
--- @param string name: The name or ID of the player.
--- @return bool: If the player was banned from the game, this function returns true. Otherwise, false.
-local function IsBanned(name)
- if type(name) == "string" then
- local name = name:lower()
- end
-
- if HasValue(banned, name) then
- return true
- end
-
- return false
-end
-
---- Checks if a user is admin.
--- @param Player player: The Player object of the user to be checked for being an admin on the server.
--- @return bool: If the player is an admin, this function returns true. Otherwise, false.
-local function IsAdmin(player)
- local name = player.Name
- local id = player.UserId
-
- if admins[name] or admins[id] then
- return true
- end
-
- return false
-end
-
---- Returns an index of a value in a table.
--- @param table seeking: The table to look in.
--- @param string or (number, table) value: The value to find the index of.
--- @return number or (bool): The index of the value. Returns false if it couldn't find it.
-local function ReturnIndexOf(seeking, value)
- for index, seekingValue in ipairs(seeking) do
- if seekingValue == value then
- return index
- end
- end
-end
-
---- Finds if a string starts with a certain character.
--- @param string string: The string to look in.
--- @param string starting: The starting character to find.
--- @return bool: If the string described starts with the described character, then it returns true.
--- Otherwise, false.
-local function Starts(string, starting)
- return string.sub(string, 1, string.len(starting)) == starting
-end
-
---- Gets the version and returns it in number format.
--- @return number version: The version.
-local function GetVersion()
- local version = tostring(CLIENT_VERSION)
- local patterns = {
- "%s+",
- "%."
- }
- local length = version:len()
-
- for _, pattern in pairs(patterns) do
- version = version:gsub(pattern, "")
- end
- version = version:sub(1, length)
-
- return tonumber(version)
-end
-
---- New Version Check
-_G.CNT.NewVersion = (GetVersion() >= 2810)
-
---- Commands
-local commands = {}
-
--- Prints the arguments to console with the sender's name.
-commands.print = {}
-commands.print["name"] = "print"
-commands.print["command"] = function(sender, arguments)
- local message = table.concat(arguments, " ")
- print(sender.Name .. ": " .. message)
-end
-commands.print["level"] = 5
-commands.print["description"] = "Prints the arguments to console."
-
--- Kills a player.
-commands.kill = {}
-commands.kill["name"] = "kill"
-commands.kill["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character and player.Character.Humanoid.Health > 0 then
- player.Character:BreakJoints()
- end
- end
-end
-commands.kill["level"] = 4
-commands.kill["description"] = "Kills a player."
-commands.murder = commands.kill
-
--- Adds sparkles to a player's torso.
-commands.sparkles = {}
-commands.sparkles["name"] = "sparkles"
-commands.sparkles["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character and player.Character.Torso then
- local sparkles = Instance.new("Sparkles")
- sparkles.Parent = player.Character.Torso
- end
- end
-end
-commands.sparkles["level"] = 4
-commands.sparkles["description"] = "Adds sparkles to a player's torso."
-
--- Adds fire to a player's torso.
-commands.fire = {}
-commands.fire["name"] = "fire"
-commands.fire["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character and player.Character.Torso then
- local fire = Instance.new("Fire")
- fire.Parent = player.Character.Torso
- end
- end
-end
-commands.fire["level"] = 4
-commands.fire["description"] = "Adds fire to a player's torso."
-
--- Adds smoke to a player's torso.
-commands.smoke = {}
-commands.smoke["name"] = "smoke"
-commands.smoke["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character and player.Character.Torso then
- local smoke = Instance.new("Smoke")
- smoke.Parent = player.Character.Torso
- end
- end
-end
-commands.smoke["level"] = 4
-commands.smoke["description"]= "Adds smoke to a player's torso."
-
--- Locks the server preventing players from joining.
-commands.lockserver = {}
-commands.lockserver["name"] = "lockserver"
-commands.lockserver["command"] = function(sender, arguments)
- if not SERVER_LOCKED then
- SERVER_LOCKED = true
-
- if Workspace:FindFirstChild("ServerLockMessage") then
- Destroy(Workspace.ServerLockMessage)
- end
- local display = Instance.new("Hint")
- display.Name = "ServerLockMessage"
- display.Text = "Server locked."
- display.Parent = Workspace
- Debris:AddItem(display, 3)
-
- else
- local message = Instance.new("Hint")
- message.Text = "Server already locked!"
- message.Parent = sender.PlayerGui
- Debris:AddItem(message, 3)
- end
-end
-commands.lockserver["level"] = 1
-commands.lockserver["description"] = "Locks the server."
-commands.serverlock = commands.lockserver
-commands.slock = commands.lockserver
-
--- Unlocks the server.
-commands.unlockserver = {}
-commands.unlockserver["name"] = "unlockserver"
-commands.unlockserver["command"] = function(sender, arguments)
- if SERVER_LOCKED then
- SERVER_LOCKED = false
-
- if Workspace:FindFirstChild("ServerLockMessage") then
- Destroy(Workspace.ServerLockMessage)
- end
-
- local display = Instance.new("Hint")
- display.Name = "ServerLockMessage"
- display.Text = "Server unlocked."
- display.Parent = Workspace
- Debris:AddItem(display, 10)
- else
- local message = Instance.new("Message")
- message.Text = "Server already unlocked!"
- message.Parent = sender.PlayerGui
- Debris:AddItem(message, 3)
- end
-end
-commands.unlockserver["level"] = 1
-commands.unlockserver["description"] = "Unlocks the server if its locked."
-commands.unslock = commands.unlockserver
-
--- Freezes a player in place.
-commands.freeze = {}
-commands.freeze["name"] = "freeze"
-commands.freeze["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character and player.Character.Head and player.Character.Head.Anchored == false then
- player.Character.Head.Anchored = true
- end
- end
-end
-commands.freeze["level"] = 4
-commands.freeze["description"] = "Freezes a player in place."
-
--- Thaws a player.
-commands.unfreeze = {}
-commands.unfreeze["name"] = "unfreeze"
-commands.unfreeze["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character and player.Character.Head and player.Character.Head.Anchored == true then
- player.Character.Head.Anchored = false
- end
- end
-end
-commands.unfreeze["level"] = 4
-commands.unfreeze["description"] = "Unfreezes a player."
-commands.thaw = commands.unfreeze
-
--- Explodes a player.
-commands.explode = {}
-commands.explode["name"] = "explode"
-commands.explode["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character and player.Character.Torso then
- local explosion = Instance.new("Explosion")
- explosion.Position = player.Character.Torso.Position
- explosion.Parent = player.Character.Torso
- end
- end
-end
-commands.explode["level"] = 3
-commands.explode["description"] = "Explodes a player."
-
--- Makes a player transparent.
-commands.invisible = {}
-commands.invisible["name"] = "invisible"
-commands.invisible["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character then
- for _, part in pairs(player.Character:GetChildren()) do
- if part:IsA("Part") then
- part.Transparency = 1
- end
- end
- end
- end
-end
-commands.invisible["level"] = 3
-commands.invisible["description"] = "Makes a player invisible."
-commands.ghost = commands.invisible
-commands.ghostify = commands.invisible
-
--- Makes a player visible again.
-commands.uninvisible = {}
-commands.uninvisible["name"] = "uninvisible"
-commands.uninvisible["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character then
- for _, part in pairs(player.Character:GetChildren()) do
- if part:IsA("Part") then
- part.Transparency = 0
- end
- end
- end
- end
-end
-commands.uninvisible["level"] = 3
-commands.uninvisible["description"] = "Makes a player visible."
-commands.unghost = commands.uninvisible
-commands.unghostify = commands.uninvisible
-
--- Plays a song from Roblox or from a URL.
-commands.music = {}
-commands.music["name"] = "music"
-commands.music["command"] = function(sender, arguments)
- local url = HasValue(arguments, "url")
- local looped = HasValue(arguments, "looped")
-
- local status = Instance.new("Hint")
- status.Parent = Workspace
- status.Text = "Stopping all music..."
- for _, object in pairs(Workspace:GetChildren()) do
- if object:IsA("Sound") then
- object:Stop()
- Destroy(object)
- end
- end
-
- status.Text = "Playing music..."
-
- local music = Instance.new("Sound")
- music.Parent = Workspace
- music.Name = "CNTMusic"
- if url then
- music.SoundId = arguments[1]
- else
- music.SoundId = "http://roblox.com/asset?id=".. arguments[1]
- end
- music.Volume = 1
- music.Looped = looped
- -- Play
- repeat
- music:Play()
- wait(2.5)
- music:Stop()
- wait(.5)
- music:Play()
- until music.IsPlaying
-
- Destroy(status)
-end
-commands.music["level"] = 3
-commands.music["description"] = "Plays music."
-
--- Modifies a command's power level.
-commands.modifycommand = {}
-commands.modifycommand["name"] = "modifycommand"
-commands.modifycommand["command"] = function(sender, arguments)
- local command = arguments[1]
- local level = arguments[2]
-
- if commands[command] and command and level then
- commands[command][level] = level
- end
-end
-commands.modifycommand["level"] = 1
-commands.modifycommand["description"] = "Modifies a command's power level."
-
--- Kicks a player from the game.
-commands.kick = {}
-commands.kick["name"] = "kick"
-commands.kick["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- Destroy(player)
- end
-end
-commands.kick["level"] = 3
-commands.kick["description"] = "Kicks a player from the game."
-
--- Bans a player from the game.
-commands.ban = {}
-commands.ban["name"] = "ban"
-commands.ban["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if admins[player.Name] and admins[player.Name] > admins[sender.Name] or not admins[player.Name] then
- table.insert(banned, player)
- Destroy(player)
- end
- end
-end
-commands.ban["level"] = 2
-commands.ban["description"] = "Bans a user from the game."
-
--- Bans a player by UserId instead of name.
--- Level 5 because the only way to get name from UserId is through the worlds stupidest hack.
-commands.banid = {}
-commands.banid["name"] = "banid"
-commands.banid["command"] = function(sender, arguments)
- local id = arguments[1]
- id = tonumber(id)
-
- local name
-
- if id ~= nil then
- table.insert(banned, id)
-
- local player = Players:GetPlayerByUserId(id)
-
- if player then
- Destroy(player)
- end
- end
-end
-commands.banid["level"] = 1
-commands.banid["description"] = "Bans a user by ID."
-
--- Unbans a player from the game.
-commands.unban = {}
-commands.unban["name"] = "unban"
-commands.unban["command"] = function(sender, arguments, targets)
- local player = arguments[1]
-
- if ReturnIndexOf(banned, player) then
- local index = ReturnIndexOf(banned, player)
- table.remove(banned, index)
- end
-end
-commands.unban["level"] = 2
-commands.unban["description"] = "Unbans a user from the game."
-
--- Constantly kills a player.
-commands.loopkill = {}
-commands.loopkill["name"] = "loopkill"
-commands.loopkill["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- local loopKillValue = Instance.new("BoolValue")
- loopKillValue.Name = "CNTLoopKill"
- loopKillValue.Parent = player
- player.Character:BreakJoints()
- end
-end
-commands.loopkill["level"] = 3
-commands.loopkill["description"] = "Kills a player over and over."
-
--- Stops loop killing a player.
-commands.unloopkill = {}
-commands.unloopkill["name"] = "unloopkill"
-commands.unloopkill["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- player:FindFirstChild("CNTLoopKill"):Destroy()
- end
-end
-commands.unloopkill["level"] = 3
-commands.unloopkill["description"] = "Stops loop killing a player."
-
--- Makes a player sit.
-commands.sit = {}
-commands.sit["name"] = "sit"
-commands.sit["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character and player.Character.Humanoid then
- player.Character.Humanoid.Sit = true
- end
- end
-end
-commands.sit["level"] = 4
-commands.sit["description"] = "Makes a player sit."
-
--- Makes a character jump.
-commands.jump = {}
-commands.jump["name"] = "jump"
-commands.jump["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character and player.Character.Humanoid then
- player.Character.Humanoid.Jump = true
- end
- end
-end
-commands.jump["level"] = 4
-commands.jump["description"] = "Makes a player jump."
-
--- Lock's a players character.
-commands.lock = {}
-commands.lock["name"] = "lock"
-commands.lock["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character then
- for _, object in pairs(player.Character:GetDescendants()) do
- if object:IsA("BasePart") then
- object.Locked = true
- end
- end
- end
- end
-end
-commands.lock["level"] = 3
-commands.lock["description"] = "Locks a players character."
-
--- Unlock's a players character.
-commands.unlock = {}
-commands.unlock["name"] = "unlock"
-commands.unlock["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character then
- for _, object in pairs(player.Character:GetDescendants()) do
- if object:IsA("BasePart") then
- object.Locked = false
- end
- end
- end
- end
-end
-commands.unlock["level"] = 3
-commands.unlock["description"] = "Unlocks a players character."
-
--- Changes a players walkspeed.
-commands.walkspeed = {}
-commands.walkspeed["name"] = "walkspeed"
-commands.walkspeed["command"] = function(sender, arguments, targets)
- if not arguments[2] or tonumber(arguments[2]) == nil then
- return
- end
-
- for _, player in pairs(targets) do
- if player.Character and player.Character.Humanoid then
- player.Character.Humanoid.WalkSpeed = arguments[2]
- end
- end
-end
-commands.walkspeed["level"] = 4
-commands.walkspeed["description"] = "Makes a player jump."
-commands.ws = commands.walkspeed
-
--- Changes a value in a player's leaderstats.
-commands.valset = {}
-commands.valset["name"] = "valset"
-commands.valset["command"] = function(sender, arguments, targets)
- local leaderstat = arguments[2]
- local value = arguments[3]
- for _, player in pairs(targets) do
- if player.leaderstats then
- for _, stat in pairs(player.leaderstats:GetDescendants()) do
- if stat:IsA("IntValue") or stat:IsA("StringValue") then
- if string.find(stat.Name:lower(), leaderstat:lower()) then
- stat.Value = value
- end
- end
- end
- end
- end
-end
-commands.valset["level"] = 3
-commands.valset["description"] = "Sets a player's leaderstat."
-commands.set = commands.valset
-commands.change = commands.valset
-
--- Teleports a player to another.
-commands.teleport = {}
-commands.teleport["name"] = "teleport"
-commands.teleport["command"] = function(sender, arguments, targets)
- local teleportDestination = arguments[2]
- teleportDestination = string.lower(teleportDestination)
- local playerFound = false
-
- if teleportDestination == "me" then
- playerFound = true
- teleportDestination = sender.Name
- else
- for _, player in pairs(Players:GetPlayers()) do
- if string.find(string.lower(player.Name), string.lower(teleportDestination)) then
- playerFound = true
- teleportDestination = player.Name
- end
- end
- end
-
- if not playerFound then
- return
- end
- teleportDestinationName = teleportDestination
- teleportDestination = Players:FindFirstChild(teleportDestination).Character.Torso.CFrame
-
- for i, player in pairs(targets) do
- if player.Name == teleportDestinationName then
- table.remove(targets, i)
- end
- end
-
- for i, player in pairs(targets) do
- if player.Character and player.Character.Humanoid and player.Character.Torso and player.Character.Humanoid.Health > 0 then
- player.Character.Torso.CFrame = teleportDestination + Vector3.new(0, i * 5, 0)
- end
- end
-end
-commands.teleport["level"] = 4
-commands.teleport["description"] = "Telports a player to another."
-commands.tp = commands.teleport
-
--- Immortalizes a player.
-commands.immortalize = {}
-commands.immortalize["name"] = "god"
-commands.immortalize["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character and player.Character:FindFirstChild("Humanoid") then
- player.Character.Humanoid.MaxHealth = math.huge
- end
- end
-end
-commands.immortalize["level"] = 4
-commands.immortalize["description"] = "Gods a player."
-commands.god = commands.immortalize
-commands.immortalise = commands.immortalize
-
--- Mortalizes a player.
-commands.mortalize = {}
-commands.mortalize["name"] = "ungod"
-commands.mortalize["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character and player.Character:FindFirstChild("Humanoid") then
- player.Character.Humanoid.MaxHealth = 100
- end
- end
-end
-commands.mortalize["level"] = 4
-commands.mortalize["description"] = "Ungods a player."
-commands.ungod = commands.mortalize
-commands.mortalise = commands.mortalize
-
--- Changes a players body colors to the "noob" colors.
-commands.noobify = {}
-commands.noobify["name"] = "noobify"
-commands.noobify["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character and player.Character:FindFirstChild("Head") and player.Character.Head:FindFirstChild("face") and player.Character:FindFirstChild("Body Colors") then
- for _, object in pairs(player.Character:GetChildren()) do
- if object:IsA("Hat") or object:IsA("Accessory") or string.find(object.ClassName:lower(), "shirt") or object:IsA("Pants") then
- Destroy(object)
- end
- end
- local character = player.Character
- character.Head.face.Texture = "rbxasset://textures/face.png"
- character["Body Colors"]["HeadColor"] = BrickColor.new("Bright yellow")
- character["Body Colors"]["TorsoColor"] = BrickColor.new("Bright blue")
- character["Body Colors"]["RightArmColor"] = BrickColor.new("Bright yellow")
- character["Body Colors"]["LeftArmColor"] = BrickColor.new("Bright yellow")
- character["Body Colors"]["RightLegColor"] = BrickColor.new("Br. yellowish green")
- character["Body Colors"]["LeftLegColor"] = BrickColor.new("Br. yellowish green")
- end
- end
-end
-commands.noobify["level"] = 4
-commands.noobify["description"] = "Makes a player a noob."
-commands.noob = commands.noobify
-
--- Blinds a player.
-commands.blind = {}
-commands.blind["name"] = "blind"
-commands.blind["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.PlayerGui and not player.PlayerGui:FindFirstChild("CNTBlindGui") then
- local blindGui = Instance.new("ScreenGui")
- blindGui.Name = "CNTBlindGui"
- blindGui.Parent = player.PlayerGui
- local blindFrame = Instance.new("Frame")
- blindFrame.Size = UDim2.new(1, 0, 1, 0)
- blindFrame.BorderSizePixel = 0
- blindFrame.ZIndex = 10
- blindFrame.Parent = blindGui
- end
- end
-end
-commands.blind["level"] = 4
-commands.blind["description"] = "Makes a player blind."
-
--- Sends a server message.
-commands.m = {}
-commands.m["name"] = "message"
-commands.m["command"] = function(sender, arguments)
- if Workspace:FindFirstChild("CNTMessage") then
- Destroy(Workspace.CNTMessage)
- end
-
- local userMessage = ""
- userMessage = arguments[1]
- local timeOut = 0
-
- local timeOut = tonumber(arguments[2])
-
- local message = Instance.new("Message")
- message.Name = "CNTMessage"
- message.Text = userMessage
- message.Parent = Workspace
- if timeOut and timeOut >= 1 then
- Debris:AddItem(message, timeOut)
- else
- Debris:AddItem(message, MESSAGE_TIMEOUT)
- end
-end
-commands.m["level"] = 3
-commands.m["description"] = "Creates a message to all."
-commands.message = commands.m
-
--- Creates a hint.
-commands.h = {}
-commands.h["name"] = "hint"
-commands.h["command"] = function(sender, arguments)
- if Workspace:FindFirstChild("CNTHint") then
- Destroy(Workspace.CNTHint)
- end
-
- local userMessage = ""
- userMessage = arguments[1]
- local timeOut = 0
-
- local timeOut = tonumber(arguments[2])
-
- local hint = Instance.new("Hint")
- hint.Name = "CNTHint"
- hint.Text = userMessage
- hint.Parent = Workspace
- if timeOut and timeOut >= 1 then
- Debris:AddItem(hint, timeOut)
- else
- Debris:AddItem(hint, MESSAGE_TIMEOUT)
- end
-end
-commands.h["level"] = 3
-commands.h["description"] = "Creates a hint."
-commands.hint = commands.h
-
--- Unblinds a player.
-commands.unblind = {}
-commands.unblind["name"] = "unblind"
-commands.unblind["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.PlayerGui and player.PlayerGui:FindFirstChild("CNDBlindGui") then
- Destroy(player.PlayerGui:FindFirstChild("CNTBlindGui"))
- end
- end
-end
-commands.unblind["level"] = 4
-commands.unblind["description"] = "Makes a player able to see again."
-
--- Controls a player.
-commands.control = {}
-commands.control["name"] = "control"
-commands.control["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character and sender.Character and sender.Character.Head then
- player.Character.Humanoid.PlatformStand = true
- player.Character.Humanoid.Changed:connect(function()
- player.Character.Humanoid.PlatformStand = true
- end)
-
- for _, object in pairs(sender.Character:GetChildren()) do
- if object:IsA("BasePart") then
- for _, object_ in pairs(player.Character:GetChildren()) do
- if object_:IsA("BasePart") then
- local weld = Instance.new("Weld")
- weld.Parent = object
- weld.Part0 = object
- weld.Part1 = object_
- object.CanCollide = false
- object.Transparency = 1
- end
- end
- elseif object:IsA("Hat") or object:IsA("Accessory") then
- Destroy(object)
- end
- end
-
- if sender.Character.Head:FindFirstChild("face") then
- Destroy(sender.Character.Head.face)
- end
- end
- end
-end
-commands.control["level"] = 3
-commands.control["description"] = "Controls a player."
-
--- Gives a player building tools.
-commands.btools = {}
-commands.btools["name"] = "btools"
-commands.btools["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- local clone, hammer, grab = Instance.new("HopperBin"), Instance.new("HopperBin"), Instance.new("HopperBin")
- clone.BinType, hammer.BinType, grab.BinType = "Clone", "Hammer", "Grab"
- clone.Parent, hammer.Parent, grab.Parent = sender.Backpack, sender.Backpack, sender.Backpack -- Fun fact to everyone reading this code: Niall is 100000% pure homosexual.
- end
-end
-commands.btools["level"] = 3
-commands.btools["description"] = "Gives a player building tools."
-
--- Punishes a player if they've been a very very bad boy and they deserve more than just the timeout chair.
-commands.punish = {}
-commands.punish["name"] = "punish"
-commands.punish["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character then
- player.Character.Parent = Lighting
- end
- end
-end
-commands.punish["level"] = 3
-commands.punish["description"] = "Punishes a player."
-
--- Unpunishes a player if you think they've redeemed themself.
-commands.unpunish = {}
-commands.unpunish["name"] = "unpunish"
-commands.unpunish["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character then
- player.Character.Parent = Workspace
- player.Character:MakeJoints()
- end
- end
-end
-commands.unpunish["level"] = 3
-commands.unpunish["description"] = "Unpunishes a player."
-
--- Gives a player a forcefield, to protect from unholy beings (e.g Niall)
-commands.forcefield = {}
-commands.forcefield["name"] = "forcefield"
-commands.forcefield["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character then
- local forcefield = Instance.new("ForceField")
- forcefield.Name = "CNTForcefield"
- forcefield.Parent = player.Character
- end
- end
-end
-commands.forcefield["level"] = 4
-commands.forcefield["description"] = "Gives a player a forcefield."
-commands.ff = commands.forcefield
-
--- Removes a forcefield from a player, revealing themselves to the wrath of Niall.
-commands.unforcefield = {}
-commands.unforcefield["name"] = "unforcefield"
-commands.unforcefield["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character then
- for _, object in pairs(player.Character:GetChildren()) do
- if object:IsA("ForceField") or object.Name == "CNTForcefield" then
- Destroy(object)
- end
- end
- end
- end
-end
-commands.unforcefield["level"] = 4
-commands.unforcefield["description"] = "Removes a forcefield."
-commands.unff = commands.unforcefield
-
--- Sets a players gravity.
-commands.gravity = {}
-commands.gravity["name"] = "gravity"
-commands.gravity["command"] = function(sender, arguments, targets)
- local gravity = arguments[2]
-
- for _, player in pairs(targets) do
- if player.Character and player.Character:FindFirstChild("Torso") then
- for _, object in pairs(player.Character.Torso:GetChildren()) do
- if object.Name == "CNTForce" then
- Destroy(object)
- end
- end
-
- local bodyForce = Instance.new("BodyForce")
- bodyForce.Name = "CNTForce"
- bodyForce.Parent = player.Character.Torso
- bodyForce.Force = Vector3.new(0, 0, 0)
- for _, object in pairs(player.Character:GetChildren()) do
- if object:IsA("BasePart") then
- bodyForce.Force = bodyForce.Force - Vector3.new(0, object:GetMass() * gravity, 0)
- elseif object:IsA("Hat") or object:IsA("Accessory") and object:FindFirstChild("Handle") then
- bodyForce.force = bodyForce.force - Vector3.new(0, object.Handle:GetMass() * gravity, 0)
- end
- end
- end
- end
-end
-commands.gravity["level"] = 4
-commands.gravity["description"] = "Sets a players gravity."
-
--- Straps a rocket to a player and makes them go boom.
-commands.rocket = {}
-commands.rocket["name"] = "rocket"
-commands.rocket["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- if player.Character and player.Character:FindFirstChild("Torso") then
- local torso = player.Character:FindFirstChild("Torso")
-
- local rocket = Instance.new("Part")
- rocket.Name = "Rocket"
- rocket.Size = Vector3.new(1, 8, 1)
- rocket.CanCollide = false
- rocket.TopSurface = "Smooth"
- rocket.BottomSurface = "Smooth"
-
- local weld = Instance.new("Weld")
- weld.Name = "RocketWeld"
- weld.Part1 = torso
- weld.Part0 = rocket
- weld.C0 = CFrame.new(0, 0 , -1)
-
- local thrust = Instance.new("BodyThrust")
- thrust.Name = "RocketThrust"
- thrust.Force = Vector3.new(0, 5700, 0)
-
- thrust.Parent = rocket
- rocket.Parent = player.Character
- weld.Parent = torso
-
- Delay(3, function()
- local explosion = Instance.new("Explosion")
- explosion.BlastRadius = 10
- Destroy(thrust)
- explosion.Position = rocket.Position
- Destroy(rocket)
- local humanoid = player.Character:FindFirstChild("Humanoid")
- if humanoid then
- humanoid.Health = 0
- end
- explosion.Parent = torso
- end)
- end
- end
-end
-commands.rocket["level"] = 3
-commands.rocket["description"] = "Straps a rocket to a player."
-
--- Gives a player admin.
-commands.admin = {}
-commands.admin["name"] = "admin"
-commands.admin["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- admins[player.Name] = 2
- end
-end
-commands.admin["level"] = 1
-commands.admin["description"] = "Gives a player admin."
-
--- Removes a players admin.
-commands.unadmin = {}
-commands.unadmin["name"] = "unadmin"
-commands.unadmin["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- admins[player.Name] = nil
- end
-end
-commands.unadmin["level"] = 1
-commands.unadmin["description"] = "Removes a player's permissions."
-commands.unmod = commands.unadmin
-
--- Sets a players perm levels.
-commands.setpermlevel = {}
-commands.setpermlevel["name"] = "setpermlevel"
-commands.setpermlevel["command"] = function(sender, arguments, targets)
- local permission = arguments[2]
-
- if tonumber(permission) == nil or tonumber(permission) == 0 then return end
-
- permission = tonumber(permission)
-
- for _, player in pairs(targets) do
- admins[player.Name] = permission
- end
-end
-commands.setpermlevel["level"] = 1
-commands.setpermlevel["description"] = "Sets a players permission level."
-commands.setpermissionlevel = commands.setpermlevel
-commands.level = commands.setpermlevel
-
--- Gives a player mod.
-commands.mod = {}
-commands.mod["name"] = "mod"
-commands.mod["command"] = function(sender, arguments, targets)
- for _, player in pairs(targets) do
- admins[player.Name] = 4
- end
-end
-commands.mod["level"] = 2
-commands.mod["description"] = "Gives a player mod."
-commands.moderator = commands.mod
-
--- Shows commands and their descriptions.
-commands.help = {}
-commands.help["name"] = "help"
-if not _G.CNT.NewVersion then
- commands.help["command"] = function(sender, arguments, targets)
- local message = Instance.new("Message")
- local helpString = ""
-
- local i = 0
- for _, command in pairs(commands) do
- i = i + 1
- helpString = helpString .. command["name"] .. " - " .. command["description"] .. " "
- if i >= 3 then
- helpString = helpString .. "\n"
- i = 0
- end
- end
-
- message.Text = helpString
- message.Parent = sender.PlayerGui
-
- Debris:AddItem(message, 10)
-end
-elseif _G.CNT.NewVersion then
- commands.help["command"] = function(sender, arguments, targets)
- local gui = Instance.new("ScreenGui")
- gui.Name = "HelpGUI"
-
- local mainFrame = Instance.new("ScrollingFrame")
- mainFrame.BackgroundTransparency = 0.5
- mainFrame.BorderSizePixel = 0
- mainFrame.BackgroundColor3 = Color3.new(0, 0, 0)
- mainFrame.Size = UDim2.new(0.15, 0, 0.5, 0)
- mainFrame.Position = UDim2.new(0.425, 0, 0.25, 0)
- mainFrame.ScrollBarThickness = 2
- mainFrame.ZIndex = 3
- mainFrame.Name = "HelpFrame"
- mainFrame.Parent = gui
-
- descriptionLabel = Instance.new("TextLabel")
- descriptionLabel.Size = UDim2.new(0.15, 0, 0.06, 0)
- descriptionLabel.Position = UDim2.new(0.425, 0, 0.15, 0)
- descriptionLabel.BackgroundColor3 = Color3.new(0, 0, 0)
- descriptionLabel.BackgroundTransparency = 1
- descriptionLabel.TextColor3 = Color3.new(1, 1, 1)
- descriptionLabel.TextScaled = true
- descriptionLabel.Text = ""
- descriptionLabel.TextStrokeTransparency = 0
- descriptionLabel.BorderSizePixel = 0
- descriptionLabel.Name = "DescriptionLabel"
- descriptionLabel.ZIndex = 5
- descriptionLabel.Parent = gui
-
- titleLabel = Instance.new("TextLabel")
- titleLabel.Size = UDim2.new(0.15, 0, 0.025, 0)
- titleLabel.Position = UDim2.new(0.425, 0, 0.218, 0)
- titleLabel.Text = " Help"
- titleLabel.TextXAlignment = "Left"
- titleLabel.BorderSizePixel = 0
- titleLabel.TextColor3 = Color3.new(1, 1, 1)
- titleLabel.TextScaled = true
- titleLabel.BackgroundColor3 = Color3.new(0, 0, 0)
- titleLabel.BackgroundTransparency = 0.5
- titleLabel.Name = "Title"
-
- closeButton = Instance.new("TextButton")
- closeButton.Size = UDim2.new(0.06, 0, 0.75, 0)
- closeButton.Position = UDim2.new(0.9, 0, 0.1, 0)
- closeButton.TextScaled = true
- closeButton.Text = "X"
- closeButton.TextColor3 = Color3.new(1, 1, 1)
- closeButton.BackgroundColor3 = Color3.new(170/255, 0, 0)
- closeButton.BackgroundTransparency = 0.5
- closeButton.BorderSizePixel = 0
-
- closeButton.MouseButton1Click:connect(function()
- gui:Destroy()
- end)
-
- closeButton.Parent = titleLabel
- titleLabel.Parent = gui
-
- i = 0
- for _, command in pairs(commands) do
- local textLabel = Instance.new("TextLabel")
- textLabel.Size = UDim2.new(0.5, 0, 0.01, 0)
- textLabel.Position = UDim2.new(0.25, 0, 0.01 * i, 0)
- textLabel.BorderSizePixel = 0
- textLabel.BackgroundTransparency = 1
- textLabel.TextColor3 = Color3.new(1, 1, 1)
- textLabel.TextScaled = true
- textLabel.Text = command["name"] .. " (" .. command["level"] .. ")"
- textLabel.ZIndex = 4
- textLabel.Name = command["name"]
-
- textLabel.MouseEnter:connect(function(x, y)
- descriptionLabel.Position = UDim2.new(0, x, 0, y)
- descriptionLabel.BackgroundTransparency = 1
- descriptionLabel.Text = command["description"]
- end)
-
- mainFrame.MouseLeave:connect(function()
- descriptionLabel.Text = ""
- end)
-
- textLabel.Parent = mainFrame
- i = i + 1
- end
-
- gui.Parent = sender.PlayerGui
- end
-end
-commands.help["level"] = 5
-commands.help["description"] = "Shows commands."
-
--- Command Functions
-
---- Gets a list of targets from a table of arguments.
--- Possible arguments can be "me", "all", "others", "random", "admins", and "nonadmins". If the first
--- argument is blank then it returns the sender as a table.
--- @param table arguments: The arguments to look in for targets.
--- @return table: If targets were found in the Players service then we return those targets. The table
--- will be empty if no targets were found.
-local function GetTargets(player, arguments)
- local targets = {}
- if #arguments == 0 then
- return {player}
- end
-
- for _, v in pairs(arguments) do
- local arg = v:lower()
-
- if arg == "all" then
- for _, v in pairs(Players:GetPlayers()) do
- table.insert(targets, v)
- end
- return targets
-
- elseif arg == "others" then
- for _, v in pairs(Players:GetPlayers()) do
- if v ~= player then
- table.insert(targets, v)
- end
- end
- return targets
-
- elseif arg == "me" then
- table.insert(targets, player)
- return targets
-
- elseif arg == "nonadmins" then
- for _, v in pairs(Players:GetPlayers()) do
- if not IsAdmin(v) then
- table.insert(targets, v)
- end
- end
- return targets
-
- elseif arg == "admins" then
- for _, v in pairs(Players:GetPlayers()) do
- if IsAdmin(v) then
- table.insert(targets, v)
- end
- end
- return targets
-
- elseif arg == "random" then
- local players = Players:GetPlayers()
- local randomIndex = math.random(1, #players)
- local selectedPlayer = players[randomIndex]
- table.insert(targets, selectedPlayer)
- return targets
-
- else
- for _, arg in pairs(arguments) do
- for _, player in pairs(Players:GetPlayers()) do
- local playerCheck = string.find(player.Name:lower(), arg)
- if playerCheck then
- table.insert(targets, player)
- end
- end
- end
- return targets
- end
- end
-end
-
---- Parses a message for any admin commands.
--- If it does find an admin command, then it executes the command's function.
--- The code first checks for any prefix, and then if it does then it spawns a new thread
--- that executes the command (if any) with the arguments and targets. Targets are resolved
--- with the GetTargets function. Debug messages of what was execute, who executed it, and
--- targets are outputted to the console.
--- @param string message: The message that was sent by the player.
-local function ParseMessage(player, message)
- local prefixMatch
- local chosenPrefix
- local powerLevel
-
- for _, prefix in pairs(prefixes) do
- prefixMatch = Starts(message, prefix)
- if prefixMatch then
- chosenPrefix = prefix
- break
- end
- end
-
- if prefixMatch then
- message = string.sub(message, string.len(chosenPrefix) + 1)
- local arguments = {}
-
- for argument in string.gmatch(message, "[^%s]+") do
- table.insert(arguments, argument)
- end
-
- local commandName = arguments[1]
- commandName = commandName:lower()
-
- if commandName and commands[commandName] == nil then
- return
- end
-
- local commandFunction = commands[commandName]["command"]
- table.remove(arguments, 1)
- local targets = GetTargets(player, arguments)
- local targetNames = {}
-
- for _, target in pairs(targets) do
- table.insert(targetNames, target.Name)
- end
-
- if admins[player.Name] then
- powerLevel = admins[player.Name]
- elseif admins[player.UserId] then
- powerLevel = admins[player.UserId]
- end
-
- if commandFunction ~= nil and powerLevel <= commands[commandName]["level"] then
- print("CNT: Executing command \"".. commandName .."\" with arguments \"".. table.concat(arguments, " ") .. "\" with targets \"" .. table.concat(targetNames, " ") .. "\"")
- Spawn(function()
- local success, fail = pcall(function()
- commandFunction(player, arguments, targets)
- end)
-
- if not success then
- warn("CNT: Error occurred while executing command \"".. commandName .."\". Lua reports this error: \"".. fail .. "\"")
- end
- end)
- end
- end
-end
-
-commands.cmdbar = {}
-commands.cmdbar["name"] = "cmdbar"
-commands.cmdbar["command"] = function(sender, arguments, targets)
- local gui = Instance.new("ScreenGui")
- gui.Name = "CommandBar"
- local commandBar = Instance.new("TextBox")
- commandBar.Name = "CommandBarBox"
-
- commandBar.Text = ""
- commandBar.BackgroundColor3 = Color3.new(0, 0, 0)
- commandBar.BackgroundTransparency = 0.5
- commandBar.TextScaled = true
- commandBar.TextColor3 = Color3.new(1, 1, 1)
- commandBar.TextStrokeTransparency = 0
- commandBar.Size = UDim2.new(1, 0, 0.05, 0)
- commandBar.Position = UDim2.new(0, 0, 0.95, 0)
-
- commandBar.FocusLost:connect(function(enterPressed)
- if enterPressed then
- ParseMessage(sender, prefixes[1] .. commandBar.Text)
- commandBar:Destroy()
- end
- end)
-
- commandBar.Parent = gui
- gui.Parent = sender.PlayerGui
- commandBar.PlaceholderText = "Enter command..."
-end
-commands.cmdbar["description"] = "Creates a command bar for executing commands."
-commands.cmdbar["level"] = 1
-
---- Shuts down the current instance CNT is running on.
--- @param reason string: The reason why the instance had to be shutdown.
-local function ShutDown()
- SERVER_LOCKED = true
- for _, player in pairs(Players:GetPlayers()) do
- Destroy(player)
- end
-end
-
---- Day and Night
-if DAY_NIGHT then
- while wait(DAY_NIGHT_INTERVAL) do
- Lighting:SetMinutesAfterMidnight(Lighting:GetMinutesAfterMidnight() + 1)
- end
-end
-
---- Connections
-local function OnPlayerAdded(player)
- -- loadstring(anticheatHelper)()
- if IsBanned(player.Name) or IsBanned(player.UserId) or SERVER_LOCKED and not IsAdmin(player.Name) then
- Destroy(player)
- end
-
- player.Chatted:connect(function(message)
- if IsAdmin(player) then
- ParseMessage(player, message)
- end
- end)
-
- player.CharacterAdded:connect(function(character)
- if player:FindFirstChild("CNTLoopKill") then
- wait()
- character:BreakJoints()
- end
- end)
-end
-
-Players.PlayerAdded:connect(OnPlayerAdded)
-
---- Enable additional scripts
---[[
-local anticheat = game:WaitForChild("Anticheat")
-anticheat.Name = RandomString(math.random(50, 75))
-anticheat.Disabled = false
-anticheat.Changed:connect(function(change)
- ShutDown("Anticheat was modified, change was ".. change)
-end)
-]]
-
-if INFECTED then
- _G.CNT.AV.Quarantine = QUARANTINE
- _G.CNT.AV.Names = NAMES
- _G.CNT.AV.Classes = CLASSES
- _G.CNT.AV.Scanning = TO_SCAN
- game:WaitForChild("Scan").Disabled = false
-end
-
-local message = "CNT v%s has loaded! (CLIENT: %s - LUA: %s - GUIS: %s)"
-print(message:format(CNT_VERSION, CLIENT_VERSION, LUA_VERSION, (_G.CNT.NewVersion and "YES" or "NO")))
\ No newline at end of file
diff --git a/resources/views/client/download.blade.php b/resources/views/client/download.blade.php
deleted file mode 100644
index c8ccff1..0000000
--- a/resources/views/client/download.blade.php
+++ /dev/null
@@ -1,37 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Download
-@endsection
-
-@section('content')
-
-
Download {{ config('app.name') }}
-
Download it now to play games with your friends, host servers of your own, or to create classic-styled games.
-
-
-
-
-@endsection
diff --git a/resources/views/client/host.blade.php b/resources/views/client/host.blade.php
deleted file mode 100644
index 1637b0f..0000000
--- a/resources/views/client/host.blade.php
+++ /dev/null
@@ -1,52 +0,0 @@
-local a={"Texture","TextureId","SoundId","MeshId","SkyboxUp","SkyboxLf","SkyboxBk","SkyboxRt","SkyboxFt","SkyboxDn","PantsTemplate","ShirtTemplate","Graphic","Image","LinkedSource","AnimationId"}local b={"http://www%.roblox%.com/asset/%?id=","http://www%.roblox%.com/asset%?id=","http://%roblox%.com/asset/%?id=","http://%roblox%.com/asset%?id="}function GetDescendants(c)local d={}function FindChildren(e)for f,g in pairs(e:GetChildren())do table.insert(d,g)FindChildren(g)end end;FindChildren(c)return d end;local h=0;for i,g in pairs(GetDescendants(game))do for f,j in pairs(a)do pcall(function()if g[j]and not g:FindFirstChild(j)then assetText=string.lower(g[j])for f,k in pairs(b)do g[j],matches=string.gsub(assetText,k,"https://assetdelivery%.roblox%.com/v1/asset/%?id=")if matches>0 then h=h+1;print("Replaced "..j.." asset link for "..g.Name)break end end end end)end end;print("DONE! Replaced "..h.." properties")
-local ServerPort = {{ $server->port }}
-
-local deathSounds = {
- "http://{{ request()->getHttpHost() }}/audio/cans.mp3"
-}
-
-local NetworkServer = game:GetService("NetworkServer")
-NetworkServer:Start(ServerPort)
-
-local RunService = game:GetService("RunService")
-RunService:Run()
-
-local Players = game:GetService("Players")
-Players.PlayerAdded:connect(function(Player)
- Player.CharacterAdded:connect(function(Character)
- local Humanoid = Character:FindFirstChild("Humanoid")
- Humanoid.Died:connect(function()
- wait(5)
- Player:LoadCharacter()
- end)
- end)
-
- Player.Chatted:connect(function(Message)
- if Message == ";ec" or Message == ";reset" or Message == "kys" then
- if Player.Character then
- local Head = Player.Character:FindFirstChild("Head")
- if Head then
- local Sound = Instance.new("Sound", Head)
- Sound.SoundId = deathSounds[math.random(1,#deathSounds)]
- Sound:Play()
- end
-
- Player.Character:BreakJoints()
- end
- end
- end)
-end)
-
-NetworkServer.ChildAdded:connect(function(child)
- child.Name = "Connection"
-end)
-
-local SitePingerCoro = coroutine.create(function()
- while true do
- game:HttpGet('http://{{ request()->getHttpHost() }}/server/ping/{{ $server->secret }}')
- wait(60)
- end
-end)
-coroutine.resume(SitePingerCoro)
-
-loadstring('http://{{ request()->getHttpHost() }}/server/admin/{{ $server->secret }}')()
\ No newline at end of file
diff --git a/resources/views/client/humanoidHealth.blade.php b/resources/views/client/humanoidHealth.blade.php
deleted file mode 100644
index 28bd101..0000000
--- a/resources/views/client/humanoidHealth.blade.php
+++ /dev/null
@@ -1,153 +0,0 @@
-
- null
- nil
- -
-
- false
-
- HealthScript v2.0
- local humanoid = script.Parent.Humanoid
-
-if (humanoid == nil) then
- print("ERROR: no humanoid found in 'HealthScript v2.0'")
-end
-
-
-function CreateGUI()
- local p = game.Players:GetPlayerFromCharacter(humanoid.Parent)
- print("Health for Player: " .. p.Name)
- script.HealthGUI.Parent = p.PlayerGui
-end
-
-function UpdateGUI(health)
- local pgui = game.Players:GetPlayerFromCharacter(humanoid.Parent).PlayerGui
- local tray = pgui.HealthGUI.Tray
-
- tray.HealthBar.Size = UDim2.new(0.2, 0, 0.8 * (health / humanoid.MaxHealth), 0)
- tray.HealthBar.Position = UDim2.new(0.4, 0, 0.8 * (1- (health / humanoid.MaxHealth)) , 0)
-
-end
-
-
-function HealthChanged(health)
- UpdateGUI(health)
-end
-
-
-CreateGUI()
-humanoid.HealthChanged:connect(HealthChanged)
- true
-
- -
-
- HealthGUI
- true
-
- -
-
- false
- 4285215356
- 1
- 4279970357
- 1
- Tray
-
- 0.949999988
- 0
- 0.380000025
- 0
-
-
- 0.0450000018
- 0
- 0.340000004
- 0
-
- 0
- true
- 1
- true
-
- -
-
- false
- 4294967295
- 1
- 4279970357
- 1
- http://{{ request()->getHttpHost() }}/Asset/?id=18441769
- ImageLabel
-
- 0
- 0
- 0.800000012
- 3
-
-
- 1
- 0
- 0.25
- 0
-
- 1
- true
- 1
- true
-
-
- -
-
- false
- 4286826262
- 0
- 4278190080
- 0
- HealthBar
-
- 0.420000017
- 0
- 0
- 0
-
-
- 0.159999996
- 0
- 0.800000012
- 0
-
- 0
- true
- 2
- true
-
-
- -
-
- false
- 4289667875
- 0
- 4278190080
- 0
- HealthBarBacking
-
- 0.419999987
- 0
- 0
- 0
-
-
- 0.159999996
- 0
- 0.800000012
- 0
-
- 0
- true
- 1
- true
-
-
-
-
-
-
\ No newline at end of file
diff --git a/resources/views/client/join.blade.php b/resources/views/client/join.blade.php
deleted file mode 100644
index e68a503..0000000
--- a/resources/views/client/join.blade.php
+++ /dev/null
@@ -1,54 +0,0 @@
-local PlayerName = "{{ $token->user->username }}"
-local CharacterAppearance = "http://{{ request()->getHttpHost() }}/users/{{ $token->user->id }}/character?tick=" .. tick()
-local ServerAddress = "{{ $token->server->ip }}"
-local ServerPort = {{ $token->server->port }}
-
-local Players = game:GetService("Players")
-Players:SetChatStyle(Enum.ChatStyle.ClassicAndBubble)
-
-local Player = Players:CreateLocalPlayer({{ $token->user->id }})
-Player.Name = PlayerName
-Player.CharacterAppearance = CharacterAppearance
-
-local Visit = game:GetService("Visit")
-Visit:SetUploadUrl("")
-
-game:SetMessage("Connecting to server...")
-local NetworkClient = game:GetService("NetworkClient")
-NetworkClient:Connect(ServerAddress, ServerPort)
-
-NetworkClient.ConnectionAccepted:connect(function(Peer, NetworkReplicator)
- NetworkReplicator.Disconnection:connect(function(Peer, LostConnection)
- if LostConnection then
- game:SetMessage("You have lost connection to the game")
- else
- game:SetMessage("This game has shut down")
- end
- end)
-
- game:SetMessageBrickCount()
-
- local MarkerReceived = false
-
- local NetworkMarker = NetworkReplicator:SendMarker()
- NetworkMarker.Received:connect(function()
- MarkerReceived = true
-
- game:SetMessage("Requesting character")
- NetworkReplicator:RequestCharacter()
-
- game:SetMessage("Waiting for character")
- Player.CharacterAdded:connect(function()
- game:ClearMessage()
- end)
- end)
-
- while not MarkerReceived do
- workspace:ZoomToExtents()
- wait(0.5)
- end
-end)
-
-NetworkClient.ConnectionFailed:connect(function(Peer, ErrorCode, ErrorMessage)
- game:SetMessage(string.format("Failed to connect to the Game. (ID=%d)", ErrorCode))
-end)
\ No newline at end of file
diff --git a/resources/views/client/landing.blade.php b/resources/views/client/landing.blade.php
deleted file mode 100644
index a25bfb0..0000000
--- a/resources/views/client/landing.blade.php
+++ /dev/null
@@ -1,16 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Studio Landing
-@endsection
-
-@section('content')
-
-
Tadah Studio
-
-
You launched this from Studio! Congratulations!
-
To create a new place, go to File > New.
-
BEWARE! Old versions of Studio are very buggy, and I don't recommend them for long-term building. You should build a place in modern Roblox Studio (or Roblox Studio 2013 so you don't need to convert) and then convert it to XML format. Importing models with tools that use the modern XML format for Roblox is broken.
-
Credit to all-knowing Bepis for helping out with Tadah.
-
-@endsection
diff --git a/resources/views/client/playsolo.blade.php b/resources/views/client/playsolo.blade.php
deleted file mode 100644
index 0dbd53b..0000000
--- a/resources/views/client/playsolo.blade.php
+++ /dev/null
@@ -1,18 +0,0 @@
-%ZAhRSnnAub7257XTr2+RQULLqh6Bw12qTYVls7GCLl4Ujyc6qx2eignDaSvkh4naoECaOQUC8NmCd2dDmkVY9muNMxK83q2k8jrk9pfXUZRLt6iHNziCL48v9DTvnfVrtj4RP1LJjY5MVouOFZaRDq15OgEfJjwsfPvaamrnRFs=%
-local runService = game:GetService("RunService")
-local players = game:GetService("Players")
-
-local player = players:CreateLocalPlayer(0)
-
-player.CharacterAdded:connect(function(character)
- repeat wait() until character:FindFirstChild("Humanoid")
- local humanoid = character:FindFirstChild("Humanoid")
-
- humanoid.Died:connect(function()
- wait(5)
- player:LoadCharacter()
- end)
-end)
-
-runService:Run()
-player:LoadCharacter()
\ No newline at end of file
diff --git a/resources/views/client/studioscript.blade.php b/resources/views/client/studioscript.blade.php
deleted file mode 100644
index 1c0a365..0000000
--- a/resources/views/client/studioscript.blade.php
+++ /dev/null
@@ -1,32 +0,0 @@
-%e8nfZykIKovs9V+UPpRMF4zaphwZnJI11MGNuHBhnQYDTMgEzlO7/C6RNt5o/+gh7qSZVgERc2ww9UNCQJiy9KhaB/0WmXAk85OahgPL7qdpyO4HTKlS6fr+WCiiPyPwBvP337Fr9TyI14LWvq+JuyGEbic5z9EShdpPszHfswI=%
--- Setup studio cmd bar & load core scripts
-
-print("hi")
-
-local starterScriptID = 0
-
-pcall(function() game:GetService("InsertService"):SetFreeModelUrl("http://tadah.rocks/Game/Tools/InsertAsset.ashx?type=fm&q=%s&pg=%d&rs=%d") end)
-pcall(function() game:GetService("InsertService"):SetFreeDecalUrl("http://tadah.rocks/Game/Tools/InsertAsset.ashx?type=fd&q=%s&pg=%d&rs=%d") end)
-
-game:GetService("ScriptInformationProvider"):SetAssetUrl("http://tadah.rocks/asset/")
-game:GetService("InsertService"):SetBaseSetsUrl("http://www.roblox.com/Game/Tools/InsertAsset.ashx?nsets=10&type=base")
-game:GetService("InsertService"):SetUserSetsUrl("http://www.roblox.com/Game/Tools/InsertAsset.ashx?nsets=20&type=user&userid=%d&t=2")
-game:GetService("InsertService"):SetCollectionUrl("http://www.roblox.com/Game/Tools/InsertAsset.ashx?sid=%d")
-game:GetService("InsertService"):SetAssetUrl("http://tadah.rocks/asset/?id=%d")
-game:GetService("InsertService"):SetAssetVersionUrl("http://tadah.rocks/Asset/?assetversionid=%d")
-game:GetService("InsertService"):SetTrustLevel(0)
-
-pcall(function() game:GetService("SocialService"):SetFriendUrl("http://tadah.rocks/Game/LuaWebService/HandleSocialRequest.ashx?method=IsFriendsWith&playerid=%d&userid=%d") end)
-pcall(function() game:GetService("SocialService"):SetBestFriendUrl("http://tadah.rocks/Game/LuaWebService/HandleSocialRequest.ashx?method=IsBestFriendsWith&playerid=%d&userid=%d") end)
-pcall(function() game:GetService("SocialService"):SetGroupUrl("http://tadah.rocks/Game/LuaWebService/HandleSocialRequest.ashx?method=IsInGroup&playerid=%d&groupid=%d") end)
-pcall(function() game:GetService("SocialService"):SetGroupRankUrl("http://tadah.rocks/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRank&playerid=%d&groupid=%d") end)
-pcall(function() game:GetService("SocialService"):SetGroupRoleUrl("http://tadah.rocks/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRole&playerid=%d&groupid=%d") end)
-
-if game.CoreGui.Version == 7 then starterScriptID = 839 end --2012
-
-print("done")
-
-local result = pcall(function() game:GetService("ScriptContext"):AddStarterScript(starterScriptID) end)
-if not result then
- pcall(function() game:GetService("ScriptContext"):AddCoreScript(starterScriptID,game:GetService("ScriptContext"),"StarterScript") end)
-end
diff --git a/resources/views/client/xmlasset.blade.php b/resources/views/client/xmlasset.blade.php
deleted file mode 100644
index 52e17ca..0000000
--- a/resources/views/client/xmlasset.blade.php
+++ /dev/null
@@ -1,54 +0,0 @@
-@if ($item->type == "Face")
-
- null
- nil
- -
-
- 5
- face
- 20
- 0
- {{ url('/asset?id=' . $item->id) }}
- true
-
-
-
-@elseif ($item->type == "T-Shirt")
-
- null
- nil
- -
-
- {{ url('/asset?id=' . $item->id) }}
- Shirt Graphic
- true
-
-
-
-@elseif ($item->type == "Shirt")
-
- null
- nil
- -
-
- {{ url('/asset?id=' . $item->id) }}
- Shirt
- true
-
-
-
-@elseif ($item->type == "Pants")
-
- null
- nil
- -
-
- {{ url('/asset?id=' . $item->id) }}
- Pants
- true
-
-
-
-@else
-Invalid asset.
-@endif
\ No newline at end of file
diff --git a/resources/views/errors/401.blade.php b/resources/views/errors/401.blade.php
deleted file mode 100644
index 5c586db..0000000
--- a/resources/views/errors/401.blade.php
+++ /dev/null
@@ -1,5 +0,0 @@
-@extends('errors::minimal')
-
-@section('title', __('Unauthorized'))
-@section('code', '401')
-@section('message', __('Unauthorized'))
diff --git a/resources/views/errors/403.blade.php b/resources/views/errors/403.blade.php
deleted file mode 100644
index a825608..0000000
--- a/resources/views/errors/403.blade.php
+++ /dev/null
@@ -1,24 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Error
-@endsection
-
-@section('content')
-
-
-
-
-
-
-
-
403
-
Access Denied
-
Looks like you shouldn't be here...
-
Main
-
-
-
-
-
-@endsection
diff --git a/resources/views/errors/404.blade.php b/resources/views/errors/404.blade.php
deleted file mode 100644
index c5d4934..0000000
--- a/resources/views/errors/404.blade.php
+++ /dev/null
@@ -1,24 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Error
-@endsection
-
-@section('content')
-
-
-
-
-
-
-
-
404
-
Not Found
-
Whatever you are looking for isn't here. It might have gotten deleted or never existed in the first place.
-
Main
-
-
-
-
-
-@endsection
diff --git a/resources/views/errors/419.blade.php b/resources/views/errors/419.blade.php
deleted file mode 100644
index c09216e..0000000
--- a/resources/views/errors/419.blade.php
+++ /dev/null
@@ -1,5 +0,0 @@
-@extends('errors::minimal')
-
-@section('title', __('Page Expired'))
-@section('code', '419')
-@section('message', __('Page Expired'))
diff --git a/resources/views/errors/429.blade.php b/resources/views/errors/429.blade.php
deleted file mode 100644
index f01b07b..0000000
--- a/resources/views/errors/429.blade.php
+++ /dev/null
@@ -1,5 +0,0 @@
-@extends('errors::minimal')
-
-@section('title', __('Too Many Requests'))
-@section('code', '429')
-@section('message', __('Too Many Requests'))
diff --git a/resources/views/errors/500.blade.php b/resources/views/errors/500.blade.php
deleted file mode 100644
index 2e7e0e3..0000000
--- a/resources/views/errors/500.blade.php
+++ /dev/null
@@ -1,24 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Error
-@endsection
-
-@section('content')
-
-
-
-
-
-
-
-
500
-
Internal Server Error
-
The website had a hard time processing this request. Try again later. If this persists, please contact the owners. They can be reached at tadahcommunity@gmail.com or on the help section of the forums.
-
Main
-
-
-
-
-
-@endsection
diff --git a/resources/views/errors/503.blade.php b/resources/views/errors/503.blade.php
deleted file mode 100644
index c5a9dde..0000000
--- a/resources/views/errors/503.blade.php
+++ /dev/null
@@ -1,5 +0,0 @@
-@extends('errors::minimal')
-
-@section('title', __('Service Unavailable'))
-@section('code', '503')
-@section('message', __('Service Unavailable'))
diff --git a/resources/views/errors/illustrated-layout.blade.php b/resources/views/errors/illustrated-layout.blade.php
deleted file mode 100644
index 2e5b824..0000000
--- a/resources/views/errors/illustrated-layout.blade.php
+++ /dev/null
@@ -1,486 +0,0 @@
-
-
-
-
-
-
- @yield('title')
-
-
-
-
-
-
-
-
-
-
-
-
-
- @yield('image')
-
-
-
-
diff --git a/resources/views/errors/layout.blade.php b/resources/views/errors/layout.blade.php
deleted file mode 100644
index 4f2318f..0000000
--- a/resources/views/errors/layout.blade.php
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
-
- @yield('title')
-
-
-
-
-
-
-
-
-
-
-
-
- @yield('message')
-
-
-
-
-
diff --git a/resources/views/errors/minimal.blade.php b/resources/views/errors/minimal.blade.php
deleted file mode 100644
index ee16d44..0000000
--- a/resources/views/errors/minimal.blade.php
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
- @yield('title')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @yield('code')
-
-
-
- @yield('message')
-
-
-
-
-
-
diff --git a/resources/views/forum/category-old.blade.php b/resources/views/forum/category-old.blade.php
deleted file mode 100644
index e468849..0000000
--- a/resources/views/forum/category-old.blade.php
+++ /dev/null
@@ -1,55 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-{{ $category->name }}
-@endsection
-
-@section('content')
-
- @if (!$category->admin_only)
-
- @else
- @if (Auth::user()->admin)
-
- @else
-
You can't post here.
- @endif
- @endif
-
-
-
-
- {{ $posts->links('pagination::bootstrap-4') }}
-
-
-@endsection
diff --git a/resources/views/forum/category.blade.php b/resources/views/forum/category.blade.php
deleted file mode 100644
index 7c51923..0000000
--- a/resources/views/forum/category.blade.php
+++ /dev/null
@@ -1,113 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/forum/editpost.blade.php b/resources/views/forum/editpost.blade.php
deleted file mode 100644
index 234e950..0000000
--- a/resources/views/forum/editpost.blade.php
+++ /dev/null
@@ -1,156 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @csrf
-
-
-
-@endsection
-
-@section('scripts')
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/forum/editreply.blade.php b/resources/views/forum/editreply.blade.php
deleted file mode 100644
index 30d5cd0..0000000
--- a/resources/views/forum/editreply.blade.php
+++ /dev/null
@@ -1,148 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @csrf
-
-
-
-@endsection
-
-@section('scripts')
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/forum/index-old.blade.php b/resources/views/forum/index-old.blade.php
deleted file mode 100644
index eeb0673..0000000
--- a/resources/views/forum/index-old.blade.php
+++ /dev/null
@@ -1,38 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Forum
-@endsection
-
-@section('content')
-
-
-
-
-
- Category
- Threads
- Posts
- Last Post
-
-
- @foreach ($categories as $category)
-
-
-
-
-
{{ $category->name }}
-
{{ $category->description }}
-
-
-
- {{ $category->threads()->count() }}
- {{ $category->threads()->count() + $category->posts()->count() }}
- {{ $category->updated_at->diffForHumans() }}
-
- @endforeach
-
-
-
-
-@endsection
diff --git a/resources/views/forum/index.blade.php b/resources/views/forum/index.blade.php
deleted file mode 100644
index 08ba4ce..0000000
--- a/resources/views/forum/index.blade.php
+++ /dev/null
@@ -1,94 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @foreach ($categories as $category)
-
-
- {{ $category->name }} {{ $category->description }}
- {{ $category->threads()->count() }}
- {{ $category->threads()->count() + $category->posts()->count() }}
- {{ $category->updated_at->diffForHumans() }}
-
- @endforeach
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/forum/newpost.blade.php b/resources/views/forum/newpost.blade.php
deleted file mode 100644
index 9dbd78a..0000000
--- a/resources/views/forum/newpost.blade.php
+++ /dev/null
@@ -1,164 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @csrf
-
-
-
-
-@endsection
-
-@section('scripts')
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/forum/newreply.blade.php b/resources/views/forum/newreply.blade.php
deleted file mode 100644
index 4fabed9..0000000
--- a/resources/views/forum/newreply.blade.php
+++ /dev/null
@@ -1,176 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The message you are replying to:
-
-
- Posted By:
- {{ $post->user->username }} on {{ date('F j, Y, g:i A', strtotime($post->created_at)) }}
-
-
- Subject:
- {{ $post->title }}
-
-
- Message:
- @parsedown($post->body)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @csrf
-
-
-
-@endsection
-
-@section('scripts')
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/forum/post.blade.php b/resources/views/forum/post.blade.php
deleted file mode 100644
index 862b4c6..0000000
--- a/resources/views/forum/post.blade.php
+++ /dev/null
@@ -1,269 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- user->id)) src="/ForumC/skins/default/images/user_IsOnline.gif" @else src="/ForumC/skins/default/images/user_IsOffline.gif" @endif style="border-width:0px;" /> {{ $post->user->username }}
-
-
-
-
- @if ($post->user->admin)
-
-
-
- @endif
-
- Joined: {{ date('m/d/Y', strtotime($post->user->joined)) }}
-
-
- Total Posts: {{ $post->user->posts->count() + $post->user->threads->count() }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- @foreach ($replies as $reply)
-
-
-
-
- user->id)) src="/ForumC/skins/default/images/user_IsOnline.gif" @else src="/ForumC/skins/default/images/user_IsOffline.gif" @endif style="border-width:0px;" /> {{ $reply->user->username }}
-
-
-
-
- @if ($reply->user->admin)
-
-
-
- @endif
-
- Joined: {{ date('m/d/Y', strtotime($reply->user->joined)) }}
-
-
- Total posts: {{ $reply->user->posts->count() + $reply->user->threads->count() }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- @endforeach
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php
deleted file mode 100644
index 5a1102d..0000000
--- a/resources/views/home.blade.php
+++ /dev/null
@@ -1,138 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
- Hi, {{ Auth::user()->username }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Current Status
-
-
-
-
- Right now I'm:
-
-
-
-
-
-
-
-
-
- My Feed
-
-
-
-
-
-
-
- There is no Feed yet. This'll be added later.
-
-
-
-
-
-
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/layouts/app-old.blade.php b/resources/views/layouts/app-old.blade.php
deleted file mode 100644
index f3ade76..0000000
--- a/resources/views/layouts/app-old.blade.php
+++ /dev/null
@@ -1,132 +0,0 @@
-
-
-
-
-
-
-
-
-
- @yield('title') - {{ config('app.name') }}
-
- @yield('meta')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @yield('content')
-
-
-
-
- @yield('scripts')
-
-
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php
deleted file mode 100644
index bb3fc2e..0000000
--- a/resources/views/layouts/app.blade.php
+++ /dev/null
@@ -1,294 +0,0 @@
-
-
-
-
-
-
-
- {{ config('app.name') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Installation Instructions
-
-
Close Window
-
-
-
-
-
-
-
-
-
-
-
-
- Starting {{ config('app.name') }}...
-
-
Connecting to Players...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Tadah Eleven is not finished at the moment. Please hang tight as development continues!
-
-
-
-
- @yield('content')
-
-
-
- @yield('scripts')
-
@csrf
-
-
-
diff --git a/resources/views/pagination/simple.blade.php b/resources/views/pagination/simple.blade.php
deleted file mode 100644
index a6aa9ac..0000000
--- a/resources/views/pagination/simple.blade.php
+++ /dev/null
@@ -1,19 +0,0 @@
-@if ($paginator->hasPages())
-
-
- {{-- Previous Page Link --}}
- @if ($paginator->onFirstPage())
- @lang('pagination.previous')
- @else
- @lang('pagination.previous')
- @endif
-
- {{-- Next Page Link --}}
- @if ($paginator->hasMorePages())
- @lang('pagination.next')
- @else
- @lang('pagination.next')
- @endif
-
-
-@endif
diff --git a/resources/views/servers/configure.blade.php b/resources/views/servers/configure.blade.php
deleted file mode 100644
index 5479826..0000000
--- a/resources/views/servers/configure.blade.php
+++ /dev/null
@@ -1,81 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Configure Server
-@endsection
-
-@section('content')
-
-
-
-
-
-
-
-
- @csrf
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-@endsection
diff --git a/resources/views/servers/create.blade.php b/resources/views/servers/create.blade.php
deleted file mode 100644
index f6fdb0e..0000000
--- a/resources/views/servers/create.blade.php
+++ /dev/null
@@ -1,86 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Create Server
-@endsection
-
-@section('content')
-
-
-
-
-
-
-
- @if (config('app.server_creation_enabled'))
-
- @csrf
-
-
-
-
-
-
-
-
-
-
-
- @else
-
Server creation disabled
-
Sorry, server creation has been disabled. Check back later.
- @endif
-
-
-
-
-
-@endsection
diff --git a/resources/views/servers/index.blade.php b/resources/views/servers/index.blade.php
deleted file mode 100644
index 18cb259..0000000
--- a/resources/views/servers/index.blade.php
+++ /dev/null
@@ -1,265 +0,0 @@
-@inject('user', 'App\Http\Controllers\UsersController')
-
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
- THUMBNAIL
-
-
- CURRENTPLAYERSCOUNT
-
-
-
-
-
-
-
-
-
- Played PLAYSCOUNT
-
-
- Favorited FAVORITESCOUNT
-
-
- Updated LASTUPDATED
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Builders Club Games
-
-
-
-
-
- @foreach ($servers as $server)
-
-
-
-
-
-
- 0 players online
-
-
-
-
-
- Played 0 times
-
-
- Favorited 0 times
-
-
- Updated {{ $server->updated_at->diffForHumans() }}
-
-
-
-
- @endforeach
-
-
-
-
-
-
-
-
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/servers/server.blade.php b/resources/views/servers/server.blade.php
deleted file mode 100644
index 0740073..0000000
--- a/resources/views/servers/server.blade.php
+++ /dev/null
@@ -1,251 +0,0 @@
-@inject('user', 'App\Http\Controllers\UsersController')
-
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Friends-only
-
- Friends-only: You are friends
-
-
-
-
-
- This place is locked because the creator's Builders
- Club / Turbo Builders Club has expired.
-
-
-
Copy Protection: CopyLocked
-
-
Gear Not Allowed
-
-
-
-
-
-
-
-
- Installation Instructions
-
-
- 1) A window will open. Click Run . (If there is no "Run" button, click Open).
- 2) Click Run and start playing ROBLOX!
-
-
-
-
Close Window
-
-
-
-
-
-
-
-
-
-
-
-
- {{ config('app.name') }} Place
-
-
-
-
-
-
- Created:
- {{ $server->created_at->diffForHumans() }}
-
-
- Updated:
- {{ $server->updated_at->diffForHumans() }}
-
-
- Favorited:
- 0 times
-
-
- Visited:
- 0 times
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/terms/credits.blade.php b/resources/views/terms/credits.blade.php
deleted file mode 100644
index 20128a7..0000000
--- a/resources/views/terms/credits.blade.php
+++ /dev/null
@@ -1,30 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Contributors
-@endsection
-
-@section('content')
-
-
-
-
-
-
-
{{ config('app.name') }} Contributors
-
- kinery - Created Tadah
- Anonymous - Making our thumbnails possible and giving me tips on the client.
- Shambler - Ideas guy, helped found Tadah and give me motivation to create.
- Carrot - Made the server page less ugly and some more client tips.
- Anonymous - Cleaning up my code and hacking the GitHub repository, helped properly style the catalog page.
- spike - Artist, made the Dahllor icon we use today.
- kaykayko - existing
-
-
Without these people lending out their help Tadah would not be as good as it is today. Thanks, everyone.
-
-
-
-
-
-@endsection
diff --git a/resources/views/terms/rules.blade.php b/resources/views/terms/rules.blade.php
deleted file mode 100644
index 71d160c..0000000
--- a/resources/views/terms/rules.blade.php
+++ /dev/null
@@ -1,48 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Rules
-@endsection
-
-@section('content')
-
-
-
-
-
-
-
Rules and Terms
-
The rules here apply to the website, and objects that appear on the website. For example, server names, server descriptions, user-created assets, user-created asset names and descriptions, user biographies, everything like that.
-
We offer leniency for content that appears on all users' servers, and things that go on in users' servers. We are not responsible for what occurs within a server, such as chats, nor content that is downloaded and/or displayed from a server. Chat is not logged (and will never be logged by {{ config('app.name') }}).
-
Content that is not provided by {{ config('app.name') }} from a third party that is used within servers do not need to follow these rules, with exceptions being that you may not host any servers that contain any child abuse content or gore. Anything illegal will be reported to the authorities, and you will be permanently removed from {{ config('app.name') }}.
-
-
- No pornographic content uploaded to the website.
- No content depicting child abuse of any sort. This includes all content within servers.
- No content that depicts heavy gore. This includes all content within servers.
- This is a game. Respect everyone.
- Our moderators have the right to remove anyone at any time for any reason.
- Server hosts are the sole people responsible for what occurs within their servers, except if there was an exploiter/hacker/cheater present.
-
-
-
-
Privacy
-
In the event that there is ever a breach of data, all users will be notified via the website and our community Discord server. We will create a page that tells you the date of the breach and what data was stolen. Below is data that we store in our database that identifies you:
-
-
- Your email
- Your password (hashed, never plain text)
- Your IP address (register IP address and last used IP address)
- Invite key used to register
-
-
-
If you want your data removed from {{ config('app.name') }}, contact us by email.
-
-
Contact Us
-
You may contact us via our email .
-
-
-
-
-
-@endsection
diff --git a/resources/views/users/banned.blade.php b/resources/views/users/banned.blade.php
deleted file mode 100644
index 22ba9f1..0000000
--- a/resources/views/users/banned.blade.php
+++ /dev/null
@@ -1,27 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Banned
-@endsection
-
-@section('content')
-
- @if (Auth::user()->banned)
-
Banned
-
-
You've been banned from {{ config('app.name') }}.
-
Reason: {{ Auth::user()->ban_reason }}
-
Banned until {{ date('m/d/Y', strtotime(Auth::user()->banned_until)) }} .
- @if (Auth::user()->banned_until->isPast())
-
- @csrf
-
- Reactivate
-
- @endif
- @else
-
Hey!
-
You're not banned, and you shouldn't be here!
- @endif
-
-@endsection
diff --git a/resources/views/users/bodycolors.blade.php b/resources/views/users/bodycolors.blade.php
deleted file mode 100644
index 1880559..0000000
--- a/resources/views/users/bodycolors.blade.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- null
- nil
- -
-
- {{ $bodycolors->head_color }}
- {{ $bodycolors->left_arm_color }}
- {{ $bodycolors->left_leg_color }}
- Body Colors
- {{ $bodycolors->right_arm_color }}
- {{ $bodycolors->right_leg_color }}
- {{ $bodycolors->torso_color }}
- true
-
-
-
\ No newline at end of file
diff --git a/resources/views/users/character.blade.php b/resources/views/users/character.blade.php
deleted file mode 100644
index e69de29..0000000
diff --git a/resources/views/users/charactercolors.blade.php b/resources/views/users/charactercolors.blade.php
deleted file mode 100644
index 410ff91..0000000
--- a/resources/views/users/charactercolors.blade.php
+++ /dev/null
@@ -1,217 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Character
-@endsection
-
-@section('meta')
-
-
-
-
-
-
-@endsection
-
-@section('content')
-
-
-
-
-
-
-
-
- @foreach($codes as $color)
-
- @endforeach
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Select a color
-
-
-
- @foreach($codes as $color)
-
- @endforeach
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Regenerate
-
-
-
-
-
-
-
-@endsection
-
-@section('scripts')
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/users/characteritems.blade.php b/resources/views/users/characteritems.blade.php
deleted file mode 100644
index a8a6c58..0000000
--- a/resources/views/users/characteritems.blade.php
+++ /dev/null
@@ -1,105 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Character
-@endsection
-
-@section('meta')
-
-
-
-
-
-
-@endsection
-
-@section('content')
-
-
-
-
-
-
-
Regenerate
-
-
-
-
-
-
-
-
- @if ($items->count() > 0)
-
- @foreach ($items->all() as $item)
-
-
-
-
-
-
- @csrf
- {{ ($item->wearing) ? "Remove" : "Equip" }}
-
-
-
-
- @endforeach
-
- @else
-
-
Nothing found
-
You don't own any items in this category.
-
- @endif
-
-
-
-
-
-@endsection
-
-@section('scripts')
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/users/index-old.blade.php b/resources/views/users/index-old.blade.php
deleted file mode 100644
index cf7666a..0000000
--- a/resources/views/users/index-old.blade.php
+++ /dev/null
@@ -1,61 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Users
-@endsection
-
-@section('meta')
-
-
-
-
-
-
-@endsection
-
-@section('content')
-
-
-
-
-
-
-
-
- @if ($users->count() > 0)
-
- @else
-
-
Nothing found
-
Looks like there are no users to display for this query.
-
- @endif
-
-
- {{ $users->links('pagination::bootstrap-4') }}
-
-
-@endsection
diff --git a/resources/views/users/index.blade.php b/resources/views/users/index.blade.php
deleted file mode 100644
index f855057..0000000
--- a/resources/views/users/index.blade.php
+++ /dev/null
@@ -1,82 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
-
-
- {{ $users->links('pagination.simple') }}
-
-
-
-
-@endsection
-
-@section('scripts')
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/users/profile.blade.php b/resources/views/users/profile.blade.php
deleted file mode 100644
index f80deab..0000000
--- a/resources/views/users/profile.blade.php
+++ /dev/null
@@ -1,58 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-{{ $user->username }}'s Profile
-@endsection
-
-@section('meta')
-
-
-
-
-
-
-@endsection
-
-@section('content')
-
- @if ($user->banned)
-
- This user is banned. Reason: {{ $user->ban_reason }}
-
- @endif
-
-
-
-
-
- @if (Cache::has('last_online' . $user->id))
-
[ Online ]
- @else
-
[ Offline ]
- @endif
-
-
{{ $user->blurb }}
-
-
Joined: {{ date('m/d/Y', strtotime($user->joined)) }}
-
-
-
-
-
-
-
- @if ($servers->count() > 0 )
- @foreach ($servers as $server)
-
- @endforeach
- @else
- This user has no servers.
- @endif
-
-
-
-
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/users/settings.blade.php b/resources/views/users/settings.blade.php
deleted file mode 100644
index 91bc1a7..0000000
--- a/resources/views/users/settings.blade.php
+++ /dev/null
@@ -1,55 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Settings
-@endsection
-
-@section('content')
-
-
-
-
-
-
- @if (session()->has('error'))
-
- {{ session()->get('error') }}
-
- @endif
- @if (session()->has('message'))
-
- {{ session()->get('message') }}
-
- @endif
-
Username: {{ Auth::user()->username }} Email: {{ Auth::user()->email }}
-
-
- @csrf
-
-
- Blurb (max 700 chars)
- {{ Auth::user()->blurb }}
-
- @error('blurb')
-
- {{ $message }}
-
- @enderror
-
-
-
- Save
-
-
-
-
-
-
-
-@endsection
-
-@section('scripts')
-
-@endsection
\ No newline at end of file
diff --git a/resources/views/users/user.blade.php b/resources/views/users/user.blade.php
deleted file mode 100644
index 4e1778c..0000000
--- a/resources/views/users/user.blade.php
+++ /dev/null
@@ -1,503 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
-
-
-
- Your Profile
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ config('app.name') }} Badges
-
-
-
-
-
- You have no Badges. This feature will come later.
-
-
-
-
-
Statistics
-
-
-
-
- Friends :
-
-
- 0
-
-
-
- Forum Posts :
- {{ Auth::user()->threads->count() + Auth::user()->posts->count() }}
-
-
-
-
-
-
-
- Active Places
-
-
-
-
-
-
- @foreach ($servers as $server)
-
-
-
- @endforeach
-
-
-
-
-
-
-
-
-
- You have no Friends. This feature will come later.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Stuff
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Recommendations
-
-
Here are some other Hats that we think you might like.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-@endsection
diff --git a/resources/views/vendor/mail/html/button.blade.php b/resources/views/vendor/mail/html/button.blade.php
deleted file mode 100644
index e74fe55..0000000
--- a/resources/views/vendor/mail/html/button.blade.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
diff --git a/resources/views/vendor/mail/html/footer.blade.php b/resources/views/vendor/mail/html/footer.blade.php
deleted file mode 100644
index 3ff41f8..0000000
--- a/resources/views/vendor/mail/html/footer.blade.php
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
diff --git a/resources/views/vendor/mail/html/header.blade.php b/resources/views/vendor/mail/html/header.blade.php
deleted file mode 100644
index fa1875c..0000000
--- a/resources/views/vendor/mail/html/header.blade.php
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
diff --git a/resources/views/vendor/mail/html/layout.blade.php b/resources/views/vendor/mail/html/layout.blade.php
deleted file mode 100644
index 21d349b..0000000
--- a/resources/views/vendor/mail/html/layout.blade.php
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{{ $header ?? '' }}
-
-
-
-
-
-
-
-
-{{ Illuminate\Mail\Markdown::parse($slot) }}
-
-{{ $subcopy ?? '' }}
-
-
-
-
-
-
-{{ $footer ?? '' }}
-
-
-
-
-
-
diff --git a/resources/views/vendor/mail/html/message.blade.php b/resources/views/vendor/mail/html/message.blade.php
deleted file mode 100644
index deec4a1..0000000
--- a/resources/views/vendor/mail/html/message.blade.php
+++ /dev/null
@@ -1,27 +0,0 @@
-@component('mail::layout')
-{{-- Header --}}
-@slot('header')
-@component('mail::header', ['url' => config('app.url')])
-{{ config('app.name') }}
-@endcomponent
-@endslot
-
-{{-- Body --}}
-{{ $slot }}
-
-{{-- Subcopy --}}
-@isset($subcopy)
-@slot('subcopy')
-@component('mail::subcopy')
-{{ $subcopy }}
-@endcomponent
-@endslot
-@endisset
-
-{{-- Footer --}}
-@slot('footer')
-@component('mail::footer')
-© {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.')
-@endcomponent
-@endslot
-@endcomponent
diff --git a/resources/views/vendor/mail/html/panel.blade.php b/resources/views/vendor/mail/html/panel.blade.php
deleted file mode 100644
index 2975a60..0000000
--- a/resources/views/vendor/mail/html/panel.blade.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-{{ Illuminate\Mail\Markdown::parse($slot) }}
-
-
-
-
-
-
-
diff --git a/resources/views/vendor/mail/html/subcopy.blade.php b/resources/views/vendor/mail/html/subcopy.blade.php
deleted file mode 100644
index 790ce6c..0000000
--- a/resources/views/vendor/mail/html/subcopy.blade.php
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-{{ Illuminate\Mail\Markdown::parse($slot) }}
-
-
-
diff --git a/resources/views/vendor/mail/html/table.blade.php b/resources/views/vendor/mail/html/table.blade.php
deleted file mode 100644
index a5f3348..0000000
--- a/resources/views/vendor/mail/html/table.blade.php
+++ /dev/null
@@ -1,3 +0,0 @@
-
-{{ Illuminate\Mail\Markdown::parse($slot) }}
-
diff --git a/resources/views/vendor/mail/html/themes/default.css b/resources/views/vendor/mail/html/themes/default.css
deleted file mode 100644
index 2483b11..0000000
--- a/resources/views/vendor/mail/html/themes/default.css
+++ /dev/null
@@ -1,290 +0,0 @@
-/* Base */
-
-body,
-body *:not(html):not(style):not(br):not(tr):not(code) {
- box-sizing: border-box;
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif,
- 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
- position: relative;
-}
-
-body {
- -webkit-text-size-adjust: none;
- background-color: #ffffff;
- color: #718096;
- height: 100%;
- line-height: 1.4;
- margin: 0;
- padding: 0;
- width: 100% !important;
-}
-
-p,
-ul,
-ol,
-blockquote {
- line-height: 1.4;
- text-align: left;
-}
-
-a {
- color: #3869d4;
-}
-
-a img {
- border: none;
-}
-
-/* Typography */
-
-h1 {
- color: #3d4852;
- font-size: 18px;
- font-weight: bold;
- margin-top: 0;
- text-align: left;
-}
-
-h2 {
- font-size: 16px;
- font-weight: bold;
- margin-top: 0;
- text-align: left;
-}
-
-h3 {
- font-size: 14px;
- font-weight: bold;
- margin-top: 0;
- text-align: left;
-}
-
-p {
- font-size: 16px;
- line-height: 1.5em;
- margin-top: 0;
- text-align: left;
-}
-
-p.sub {
- font-size: 12px;
-}
-
-img {
- max-width: 100%;
-}
-
-/* Layout */
-
-.wrapper {
- -premailer-cellpadding: 0;
- -premailer-cellspacing: 0;
- -premailer-width: 100%;
- background-color: #edf2f7;
- margin: 0;
- padding: 0;
- width: 100%;
-}
-
-.content {
- -premailer-cellpadding: 0;
- -premailer-cellspacing: 0;
- -premailer-width: 100%;
- margin: 0;
- padding: 0;
- width: 100%;
-}
-
-/* Header */
-
-.header {
- padding: 25px 0;
- text-align: center;
-}
-
-.header a {
- color: #3d4852;
- font-size: 19px;
- font-weight: bold;
- text-decoration: none;
-}
-
-/* Logo */
-
-.logo {
- height: 75px;
- max-height: 75px;
- width: 75px;
-}
-
-/* Body */
-
-.body {
- -premailer-cellpadding: 0;
- -premailer-cellspacing: 0;
- -premailer-width: 100%;
- background-color: #edf2f7;
- border-bottom: 1px solid #edf2f7;
- border-top: 1px solid #edf2f7;
- margin: 0;
- padding: 0;
- width: 100%;
-}
-
-.inner-body {
- -premailer-cellpadding: 0;
- -premailer-cellspacing: 0;
- -premailer-width: 570px;
- background-color: #ffffff;
- border-color: #e8e5ef;
- border-radius: 2px;
- border-width: 1px;
- box-shadow: 0 2px 0 rgba(0, 0, 150, 0.025), 2px 4px 0 rgba(0, 0, 150, 0.015);
- margin: 0 auto;
- padding: 0;
- width: 570px;
-}
-
-/* Subcopy */
-
-.subcopy {
- border-top: 1px solid #e8e5ef;
- margin-top: 25px;
- padding-top: 25px;
-}
-
-.subcopy p {
- font-size: 14px;
-}
-
-/* Footer */
-
-.footer {
- -premailer-cellpadding: 0;
- -premailer-cellspacing: 0;
- -premailer-width: 570px;
- margin: 0 auto;
- padding: 0;
- text-align: center;
- width: 570px;
-}
-
-.footer p {
- color: #b0adc5;
- font-size: 12px;
- text-align: center;
-}
-
-.footer a {
- color: #b0adc5;
- text-decoration: underline;
-}
-
-/* Tables */
-
-.table table {
- -premailer-cellpadding: 0;
- -premailer-cellspacing: 0;
- -premailer-width: 100%;
- margin: 30px auto;
- width: 100%;
-}
-
-.table th {
- border-bottom: 1px solid #edeff2;
- margin: 0;
- padding-bottom: 8px;
-}
-
-.table td {
- color: #74787e;
- font-size: 15px;
- line-height: 18px;
- margin: 0;
- padding: 10px 0;
-}
-
-.content-cell {
- max-width: 100vw;
- padding: 32px;
-}
-
-/* Buttons */
-
-.action {
- -premailer-cellpadding: 0;
- -premailer-cellspacing: 0;
- -premailer-width: 100%;
- margin: 30px auto;
- padding: 0;
- text-align: center;
- width: 100%;
-}
-
-.button {
- -webkit-text-size-adjust: none;
- border-radius: 4px;
- color: #fff;
- display: inline-block;
- overflow: hidden;
- text-decoration: none;
-}
-
-.button-blue,
-.button-primary {
- background-color: #2d3748;
- border-bottom: 8px solid #2d3748;
- border-left: 18px solid #2d3748;
- border-right: 18px solid #2d3748;
- border-top: 8px solid #2d3748;
-}
-
-.button-green,
-.button-success {
- background-color: #48bb78;
- border-bottom: 8px solid #48bb78;
- border-left: 18px solid #48bb78;
- border-right: 18px solid #48bb78;
- border-top: 8px solid #48bb78;
-}
-
-.button-red,
-.button-error {
- background-color: #e53e3e;
- border-bottom: 8px solid #e53e3e;
- border-left: 18px solid #e53e3e;
- border-right: 18px solid #e53e3e;
- border-top: 8px solid #e53e3e;
-}
-
-/* Panels */
-
-.panel {
- border-left: #2d3748 solid 4px;
- margin: 21px 0;
-}
-
-.panel-content {
- background-color: #edf2f7;
- color: #718096;
- padding: 16px;
-}
-
-.panel-content p {
- color: #718096;
-}
-
-.panel-item {
- padding: 0;
-}
-
-.panel-item p:last-of-type {
- margin-bottom: 0;
- padding-bottom: 0;
-}
-
-/* Utilities */
-
-.break-all {
- word-break: break-all;
-}
diff --git a/resources/views/vendor/mail/text/button.blade.php b/resources/views/vendor/mail/text/button.blade.php
deleted file mode 100644
index 97444eb..0000000
--- a/resources/views/vendor/mail/text/button.blade.php
+++ /dev/null
@@ -1 +0,0 @@
-{{ $slot }}: {{ $url }}
diff --git a/resources/views/vendor/mail/text/footer.blade.php b/resources/views/vendor/mail/text/footer.blade.php
deleted file mode 100644
index 3338f62..0000000
--- a/resources/views/vendor/mail/text/footer.blade.php
+++ /dev/null
@@ -1 +0,0 @@
-{{ $slot }}
diff --git a/resources/views/vendor/mail/text/header.blade.php b/resources/views/vendor/mail/text/header.blade.php
deleted file mode 100644
index aaa3e57..0000000
--- a/resources/views/vendor/mail/text/header.blade.php
+++ /dev/null
@@ -1 +0,0 @@
-[{{ $slot }}]({{ $url }})
diff --git a/resources/views/vendor/mail/text/layout.blade.php b/resources/views/vendor/mail/text/layout.blade.php
deleted file mode 100644
index 9378baa..0000000
--- a/resources/views/vendor/mail/text/layout.blade.php
+++ /dev/null
@@ -1,9 +0,0 @@
-{!! strip_tags($header) !!}
-
-{!! strip_tags($slot) !!}
-@isset($subcopy)
-
-{!! strip_tags($subcopy) !!}
-@endisset
-
-{!! strip_tags($footer) !!}
diff --git a/resources/views/vendor/mail/text/message.blade.php b/resources/views/vendor/mail/text/message.blade.php
deleted file mode 100644
index 1ae9ed8..0000000
--- a/resources/views/vendor/mail/text/message.blade.php
+++ /dev/null
@@ -1,27 +0,0 @@
-@component('mail::layout')
- {{-- Header --}}
- @slot('header')
- @component('mail::header', ['url' => config('app.url')])
- {{ config('app.name') }}
- @endcomponent
- @endslot
-
- {{-- Body --}}
- {{ $slot }}
-
- {{-- Subcopy --}}
- @isset($subcopy)
- @slot('subcopy')
- @component('mail::subcopy')
- {{ $subcopy }}
- @endcomponent
- @endslot
- @endisset
-
- {{-- Footer --}}
- @slot('footer')
- @component('mail::footer')
- © {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.')
- @endcomponent
- @endslot
-@endcomponent
diff --git a/resources/views/vendor/mail/text/panel.blade.php b/resources/views/vendor/mail/text/panel.blade.php
deleted file mode 100644
index 3338f62..0000000
--- a/resources/views/vendor/mail/text/panel.blade.php
+++ /dev/null
@@ -1 +0,0 @@
-{{ $slot }}
diff --git a/resources/views/vendor/mail/text/subcopy.blade.php b/resources/views/vendor/mail/text/subcopy.blade.php
deleted file mode 100644
index 3338f62..0000000
--- a/resources/views/vendor/mail/text/subcopy.blade.php
+++ /dev/null
@@ -1 +0,0 @@
-{{ $slot }}
diff --git a/resources/views/vendor/mail/text/table.blade.php b/resources/views/vendor/mail/text/table.blade.php
deleted file mode 100644
index 3338f62..0000000
--- a/resources/views/vendor/mail/text/table.blade.php
+++ /dev/null
@@ -1 +0,0 @@
-{{ $slot }}
diff --git a/resources/views/vendor/notifications/email.blade.php b/resources/views/vendor/notifications/email.blade.php
deleted file mode 100644
index e7a56b4..0000000
--- a/resources/views/vendor/notifications/email.blade.php
+++ /dev/null
@@ -1,62 +0,0 @@
-@component('mail::message')
-{{-- Greeting --}}
-@if (! empty($greeting))
-# {{ $greeting }}
-@else
-@if ($level === 'error')
-# @lang('Whoops!')
-@else
-# @lang('Hello!')
-@endif
-@endif
-
-{{-- Intro Lines --}}
-@foreach ($introLines as $line)
-{{ $line }}
-
-@endforeach
-
-{{-- Action Button --}}
-@isset($actionText)
-
-@component('mail::button', ['url' => $actionUrl, 'color' => $color])
-{{ $actionText }}
-@endcomponent
-@endisset
-
-{{-- Outro Lines --}}
-@foreach ($outroLines as $line)
-{{ $line }}
-
-@endforeach
-
-{{-- Salutation --}}
-@if (! empty($salutation))
-{{ $salutation }}
-@else
-@lang('Regards'),
-{{ config('app.name') }}
-@endif
-
-{{-- Subcopy --}}
-@isset($actionText)
-@slot('subcopy')
-@lang(
- "If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\n".
- 'into your web browser:',
- [
- 'actionText' => $actionText,
- ]
-) [{{ $displayableActionUrl }}]({{ $actionUrl }})
-@endslot
-@endisset
-@endcomponent
diff --git a/resources/views/vendor/pagination/bootstrap-4.blade.php b/resources/views/vendor/pagination/bootstrap-4.blade.php
deleted file mode 100644
index 63c6f56..0000000
--- a/resources/views/vendor/pagination/bootstrap-4.blade.php
+++ /dev/null
@@ -1,46 +0,0 @@
-@if ($paginator->hasPages())
-
-
-
-@endif
diff --git a/resources/views/vendor/pagination/default.blade.php b/resources/views/vendor/pagination/default.blade.php
deleted file mode 100644
index 0db70b5..0000000
--- a/resources/views/vendor/pagination/default.blade.php
+++ /dev/null
@@ -1,46 +0,0 @@
-@if ($paginator->hasPages())
-
-
-
-@endif
diff --git a/resources/views/vendor/pagination/semantic-ui.blade.php b/resources/views/vendor/pagination/semantic-ui.blade.php
deleted file mode 100644
index ef0dbb1..0000000
--- a/resources/views/vendor/pagination/semantic-ui.blade.php
+++ /dev/null
@@ -1,36 +0,0 @@
-@if ($paginator->hasPages())
-
-@endif
diff --git a/resources/views/vendor/pagination/simple-bootstrap-4.blade.php b/resources/views/vendor/pagination/simple-bootstrap-4.blade.php
deleted file mode 100644
index 4bb4917..0000000
--- a/resources/views/vendor/pagination/simple-bootstrap-4.blade.php
+++ /dev/null
@@ -1,27 +0,0 @@
-@if ($paginator->hasPages())
-
-
-
-@endif
diff --git a/resources/views/vendor/pagination/simple-default.blade.php b/resources/views/vendor/pagination/simple-default.blade.php
deleted file mode 100644
index 36bdbc1..0000000
--- a/resources/views/vendor/pagination/simple-default.blade.php
+++ /dev/null
@@ -1,19 +0,0 @@
-@if ($paginator->hasPages())
-
-
-
-@endif
diff --git a/resources/views/vendor/pagination/simple-tailwind.blade.php b/resources/views/vendor/pagination/simple-tailwind.blade.php
deleted file mode 100644
index 6872cca..0000000
--- a/resources/views/vendor/pagination/simple-tailwind.blade.php
+++ /dev/null
@@ -1,25 +0,0 @@
-@if ($paginator->hasPages())
-
- {{-- Previous Page Link --}}
- @if ($paginator->onFirstPage())
-
- {!! __('pagination.previous') !!}
-
- @else
-
- {!! __('pagination.previous') !!}
-
- @endif
-
- {{-- Next Page Link --}}
- @if ($paginator->hasMorePages())
-
- {!! __('pagination.next') !!}
-
- @else
-
- {!! __('pagination.next') !!}
-
- @endif
-
-@endif
diff --git a/resources/views/vendor/pagination/tailwind.blade.php b/resources/views/vendor/pagination/tailwind.blade.php
deleted file mode 100644
index 2dd4d0e..0000000
--- a/resources/views/vendor/pagination/tailwind.blade.php
+++ /dev/null
@@ -1,102 +0,0 @@
-@if ($paginator->hasPages())
-
-
-
-
-
-
- {!! __('Showing') !!}
- {{ $paginator->firstItem() }}
- {!! __('to') !!}
- {{ $paginator->lastItem() }}
- {!! __('of') !!}
- {{ $paginator->total() }}
- {!! __('results') !!}
-
-
-
-
-
- {{-- Previous Page Link --}}
- @if ($paginator->onFirstPage())
-
-
-
-
-
-
-
- @else
-
-
-
-
-
- @endif
-
- {{-- Pagination Elements --}}
- @foreach ($elements as $element)
- {{-- "Three Dots" Separator --}}
- @if (is_string($element))
-
- {{ $element }}
-
- @endif
-
- {{-- Array Of Links --}}
- @if (is_array($element))
- @foreach ($element as $page => $url)
- @if ($page == $paginator->currentPage())
-
- {{ $page }}
-
- @else
-
- {{ $page }}
-
- @endif
- @endforeach
- @endif
- @endforeach
-
- {{-- Next Page Link --}}
- @if ($paginator->hasMorePages())
-
-
-
-
-
- @else
-
-
-
-
-
-
-
- @endif
-
-
-
-
-@endif
diff --git a/resources/views/welcome-old.blade.php b/resources/views/welcome-old.blade.php
deleted file mode 100644
index b0156d4..0000000
--- a/resources/views/welcome-old.blade.php
+++ /dev/null
@@ -1,31 +0,0 @@
-@extends('layouts.app')
-
-@section('title')
-Welcome
-@endsection
-
-@section('meta')
-
-
-
-
-
-
-@endsection
-
-@section('content')
-
-
- @if (session('status'))
-
- {{ session('status') }}
-
- @endif
-
-
-
{{ config('app.quotes')[array_rand(config('app.quotes'))] }}
-
-
{{ config('app.name') }} is meant to be a tight-knit community of like-minded people. Our community is closed, so you'll have to know somebody already inside to get invited. {{ config('app.name') }} is entirely non-profit! The owners of the site make no money from hosting {{ config('app.name') }}.Check out the people that helped to make Tadah what it is today.
-
-
-@endsection
diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php
deleted file mode 100644
index b0919c6..0000000
--- a/resources/views/welcome.blade.php
+++ /dev/null
@@ -1,482 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-
-
-
-
-
-
-
-
-
-
-
- @if (!Auth::user())
-
-
- @else
-
-
-
-
- @endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Customize your Character
- Earn Tickets
- Did we mention it's Free?
-
-
-
-
-
-
- Already have an account?
-
-
-
-
-
-
-
-
-
-
- Choose Your Character:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{{ config('app.name') }} IS NOT affiliated with Roblox Corporation, K'Nex, The LEGO Group, or MEGA Brands.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @foreach ($announcements as $announcement)
-
- @endforeach
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Updated:
-
Never
-
Favorited:
-
0 times
-
Visited:
-
0 times
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @csrf
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-@endsection
diff --git a/routes/api.php b/routes/api.php
deleted file mode 100644
index 450535f..0000000
--- a/routes/api.php
+++ /dev/null
@@ -1,17 +0,0 @@
-id === (int) $id;
-});
diff --git a/routes/console.php b/routes/console.php
deleted file mode 100644
index e05f4c9..0000000
--- a/routes/console.php
+++ /dev/null
@@ -1,19 +0,0 @@
-comment(Inspiring::quote());
-})->purpose('Display an inspiring quote');
diff --git a/routes/web.php b/routes/web.php
deleted file mode 100644
index 999d346..0000000
--- a/routes/web.php
+++ /dev/null
@@ -1,137 +0,0 @@
-name('welcome');
-
-// Authentication routes
-Auth::routes();
-
-// Home
-Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
-
-// Rules
-Route::get('/rules', function () {
- return view('terms.rules');
-});
-
-Route::get('/credits', function () {
- return view('terms.credits');
-});
-
-// Users routes
-Route::get('/settings', [App\Http\Controllers\UsersController::class, 'settings'])->name('users.settings');
-Route::post('/settings', [App\Http\Controllers\UsersController::class, 'savesettings'])->name('users.savesettings');
-Route::get('/users', [App\Http\Controllers\UsersController::class, 'index'])->name('users.index');
-Route::get('/user', [App\Http\Controllers\UsersController::class, 'me'])->name('users.me');
-Route::get('/users/{id}/thumbnail', [App\Http\Controllers\UsersController::class, 'getthumbnail'])->name('users.thumbnail');
-Route::get('/users/{id}/profile', [App\Http\Controllers\UsersController::class, 'profile'])->name('users.profile');
-Route::get('/banned', [App\Http\Controllers\UsersController::class, 'banned'])->name('users.banned');
-
-// Catalog routes
-Route::get('/catalog/upload', [App\Http\Controllers\CatalogController::class, 'upload'])->name('catalog.upload');
-Route::post('/catalog/upload', [App\Http\Controllers\CatalogController::class, 'processupload'])->name('catalog.processupload');
-Route::get('/catalog/thumb/{id}', [App\Http\Controllers\CatalogController::class, 'getthumbnail'])->name('catalog.getthumbnail');
-Route::get('/catalog/{type}', [App\Http\Controllers\CatalogController::class, 'index'])->name('catalog.index');
-Route::get('/catalog', function () { return redirect(route('catalog.index', 'hats')); });
-Route::post('/item/buy/{id}', [App\Http\Controllers\CatalogController::class, 'buyitem'])->name('catalog.buy');
-Route::get('/item/{id}', [App\Http\Controllers\CatalogController::class, 'item'])->name('catalog.item');
-Route::get('/item/{id}/configure', [App\Http\Controllers\CatalogController::class, 'configure'])->name('catalog.configure');
-Route::post('/item/{id}/configure', [App\Http\Controllers\CatalogController::class, 'processconfigure'])->name('catalog.processconfigure');
-
-// Forum routes
-Route::get('/forum', [App\Http\Controllers\ForumController::class, 'index'])->name('forum.index');
-Route::get('/forum/{id}', [App\Http\Controllers\ForumController::class, 'getcategory'])->name('forum.category');
-Route::get('/forum/thread/{id}', [App\Http\Controllers\ForumController::class, 'getthread'])->name('forum.getthread');
-Route::get('/forum/create/{id}', [App\Http\Controllers\ForumController::class, 'createthread'])->name('forum.createthread');
-Route::post('/forum/create/{id}', [App\Http\Controllers\ForumController::class, 'docreatethread'])->name('forum.docreatethread');
-Route::get('/forum/createreply/{id}', [App\Http\Controllers\ForumController::class, 'createreply'])->name('forum.createreply');
-Route::post('/forum/createreply/{id}', [App\Http\Controllers\ForumController::class, 'docreatereply'])->name('forum.docreatereply');
-Route::get('/forum/editthread/{id}', [App\Http\Controllers\ForumController::class, 'editthread'])->name('forum.editthread');
-Route::post('/forum/editthread/{id}', [App\Http\Controllers\ForumController::class, 'doeditthread'])->name('forum.doeditthread');
-Route::post('/forum/togglestickythread/{id}', [App\Http\Controllers\ForumController::class, 'togglestickythread'])->name('forum.togglesticky');
-Route::post('/forum/togglelock/{id}', [App\Http\Controllers\ForumController::class, 'togglelock'])->name('forum.togglelock');
-Route::post('/forum/deletethread/{id}', [App\Http\Controllers\ForumController::class, 'deletethread'])->name('forum.deletethread');
-Route::get('/forum/editreply/{id}', [App\Http\Controllers\ForumController::class, 'editreply'])->name('forum.editreply');
-Route::post('/forum/editreply/{id}', [App\Http\Controllers\ForumController::class, 'doeditreply'])->name('forum.doeditreply');
-Route::post('/forum/deletereply/{id}', [App\Http\Controllers\ForumController::class, 'deletereply'])->name('forum.deletereply');
-
-// Admin routes
-Route::get('/admin', [App\Http\Controllers\AdminController::class, 'index'])->name('admin.index');
-Route::get('/admin/truncategametokens', [App\Http\Controllers\AdminController::class, 'truncategametokens']);
-Route::get('/admin/truncateservers', [App\Http\Controllers\AdminController::class, 'truncateservers']);
-Route::get('/admin/invitekeys', [App\Http\Controllers\AdminController::class, 'invitekeys']);
-Route::post('/admin/invitekeys/{id}/disable', [App\Http\Controllers\AdminController::class, 'disableinvitekey'])->name('admin.disableinvitekey');
-Route::get('/admin/createinvitekey', [App\Http\Controllers\AdminController::class, 'createinvitekey']);
-Route::post('/admin/createinvitekey', [App\Http\Controllers\AdminController::class, 'generateinvitekey'])->name('admin.generateinvitekey');
-Route::get('/admin/ban', [App\Http\Controllers\AdminController::class, 'ban']);
-Route::post('/admin/ban', [App\Http\Controllers\AdminController::class, 'banuser'])->name('admin.banuser');
-Route::get('/admin/unban', [App\Http\Controllers\AdminController::class, 'unban']);
-Route::post('/admin/unban', [App\Http\Controllers\AdminController::class, 'unbanuser'])->name('admin.unbanuser');
-Route::get('/admin/newxmlitem', [App\Http\Controllers\AdminController::class, 'xmlitem']);
-Route::post('/admin/newxmlitem', [App\Http\Controllers\AdminController::class, 'createxmlitem'])->name('admin.createxmlitem');
-Route::get('/admin/robloxitemdata/{id}', [App\Http\Controllers\AdminController::class, 'robloxitemdata']);
-Route::get('/admin/robloxxmldata/{id}/{version}', [App\Http\Controllers\AdminController::class, 'robloxxmldata']);
-Route::get('/admin/regenalluserthumbs', [App\Http\Controllers\AdminController::class, 'regenalluserthumbs']);
-
-// Thumbnail generator routes
-Route::get('/thumbnail/getqueue', [App\Http\Controllers\RenderController::class, 'getQueue'])->name('thumbnails.getqueue');
-Route::post('/thumbnail/upload', [App\Http\Controllers\RenderController::class, 'upload'])->name('thumbnails.uploadthumbnail');
-Route::get('/thumbnail/clothingcharapp/{id}', [App\Http\Controllers\RenderController::class, 'getClothingCharApp'])->name('thumbnails.getclothingcharapp');
-
-// Servers routes
-Route::get('/servers', [App\Http\Controllers\ServersController::class, 'index'])->name('servers.index');
-Route::get('/server/{id}', [App\Http\Controllers\ServersController::class, 'server'])->name('servers.server');
-Route::get('/server/{id}/configure', [App\Http\Controllers\ServersController::class, 'configure'])->name('servers.configure');
-Route::post('/server/{id}/configure', [App\Http\Controllers\ServersController::class, 'processconfigure'])->name('servers.processconfigure');
-Route::post('/server/{id}/delete', [App\Http\Controllers\ServersController::class, 'delete'])->name('servers.delete');
-Route::get('/servers/create', function () { return view('servers.create'); });
-Route::post('/servers/create', [App\Http\Controllers\ServersController::class, 'create'])->name('servers.create');
-
-// Launcher routes
-Route::get('/client/versionstring', function () { return config('app.version_string'); });
-Route::get('/client/join/{token}', [App\Http\Controllers\ClientController::class, 'join'])->name('client.join');
-Route::get('/client/generate/{serverId}', [App\Http\Controllers\ClientController::class, 'generate'])->name('client.generate');
-
-// Client routes
-Route::get('/Asset/GetScriptState.ashx', function () { return '0 0 0 0'; }); // breaks script sig check in clients if removed
-Route::get('/asset/GetScriptState.ashx', function () { return '0 0 0 0'; }); // breaks script sig check in clients if removed
-Route::get('/Game/KeepAlivePinger.ashx', function () { return ''; });
-Route::get('/UploadMedia/PostImage.aspx', function () { return 'lol, this stupid person meant to screenshot using their normal screenshotting tool but instead triggered the old Roblox one'; });
-Route::get('/game/visit.ashx', function () { return view('client.playsolo'); });
-Route::get('/game/studio.ashx', function () { return view('client.studioscript'); });
-Route::get('/IDE/ClientToolbox.aspx', function () { return 'Toolbox not yet implemented!'; });
-Route::get('/IDE/Landing.aspx', function () { return view('client.landing'); });
-Route::get('/thumbs/avatar.ashx', [App\Http\Controllers\ClientController::class, 'getuserthumbnail'])->name('client.userthumbnail');
-Route::get('/server/host/{secret}', [App\Http\Controllers\ClientController::class, 'host'])->name('client.host');
-Route::get('/server/ping/{secret}', [App\Http\Controllers\ClientController::class, 'ping'])->name('client.ping');
-Route::get('/server/admin/{secret}', [App\Http\Controllers\ClientController::class, 'admin'])->name('client.admin');
-Route::get('/download', [App\Http\Controllers\UsersController::class, 'download'])->name('client.download');
-Route::get('/signscript', [App\Http\Controllers\ClientController::class, 'signscript'])->name('client.signscript');
-
-// Asset routes
-Route::get('/asset', [App\Http\Controllers\AssetController::class, 'getasset'])->name('asset.getasset');
-Route::get('/xmlasset', [App\Http\Controllers\AssetController::class, 'getxmlasset'])->name('asset.getxmlasset');
-Route::get('/Asset', [App\Http\Controllers\AssetController::class, 'robloxredirect'])->name('asset.robloxredirect');
-
-// Character routes
-Route::get('/character', [App\Http\Controllers\BodyColorsController::class, 'characterBodyColors'])->name('users.characterbodycolors');
-Route::post('/character/toggle/{id}', [App\Http\Controllers\UsersController::class, 'toggleWearing'])->name('users.togglewearing');
-Route::post('/character/setcolor', [App\Http\Controllers\BodyColorsController::class, 'changeBodyColor'])->name('users.setbodycolor');
-Route::post('/character/regen', [App\Http\Controllers\UsersController::class, 'regenThumbnail'])->name('users.regenthumbnail');
-Route::get('/character/{type}', [App\Http\Controllers\UsersController::class, 'characterItems'])->name('users.characteritems');
-Route::get('/users/{id}/bodycolors', [App\Http\Controllers\ClientController::class, 'bodycolors'])->name('users.bodycolors');
-Route::get('/users/{id}/character', [App\Http\Controllers\ClientController::class, 'charapp'])->name('users.getcharacter');
\ No newline at end of file
diff --git a/server.php b/server.php
deleted file mode 100644
index 5fb6379..0000000
--- a/server.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- */
-
-$uri = urldecode(
- parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
-);
-
-// This file allows us to emulate Apache's "mod_rewrite" functionality from the
-// built-in PHP web server. This provides a convenient way to test a Laravel
-// application without having installed a "real" web server software here.
-if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
- return false;
-}
-
-require_once __DIR__.'/public/index.php';
diff --git a/storage/app/.gitignore b/storage/app/.gitignore
deleted file mode 100644
index 8f4803c..0000000
--- a/storage/app/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-*
-!public/
-!.gitignore
diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore
deleted file mode 100644
index 7c240f7..0000000
--- a/storage/app/public/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*
-!.gitignore
-!items
-!users
\ No newline at end of file
diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore
deleted file mode 100644
index 05c4471..0000000
--- a/storage/framework/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-compiled.php
-config.php
-down
-events.scanned.php
-maintenance.php
-routes.php
-routes.scanned.php
-schedule-*
-services.json
diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore
deleted file mode 100644
index 01e4a6c..0000000
--- a/storage/framework/cache/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-*
-!data/
-!.gitignore
diff --git a/storage/framework/cache/data/.gitignore b/storage/framework/cache/data/.gitignore
deleted file mode 100644
index d6b7ef3..0000000
--- a/storage/framework/cache/data/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore
deleted file mode 100644
index d6b7ef3..0000000
--- a/storage/framework/sessions/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore
deleted file mode 100644
index d6b7ef3..0000000
--- a/storage/framework/testing/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore
deleted file mode 100644
index d6b7ef3..0000000
--- a/storage/framework/views/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore
deleted file mode 100644
index d6b7ef3..0000000
--- a/storage/logs/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php
deleted file mode 100644
index 547152f..0000000
--- a/tests/CreatesApplication.php
+++ /dev/null
@@ -1,22 +0,0 @@
-make(Kernel::class)->bootstrap();
-
- return $app;
- }
-}
diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php
deleted file mode 100644
index 4ae02bc..0000000
--- a/tests/Feature/ExampleTest.php
+++ /dev/null
@@ -1,21 +0,0 @@
-get('/');
-
- $response->assertStatus(200);
- }
-}
diff --git a/tests/TestCase.php b/tests/TestCase.php
deleted file mode 100644
index 2932d4a..0000000
--- a/tests/TestCase.php
+++ /dev/null
@@ -1,10 +0,0 @@
-assertTrue(true);
- }
-}
diff --git a/webpack.mix.js b/webpack.mix.js
deleted file mode 100644
index 1a2a958..0000000
--- a/webpack.mix.js
+++ /dev/null
@@ -1,16 +0,0 @@
-const mix = require('laravel-mix');
-
-/*
- |--------------------------------------------------------------------------
- | Mix Asset Management
- |--------------------------------------------------------------------------
- |
- | Mix provides a clean, fluent API for defining some Webpack build steps
- | for your Laravel application. By default, we are compiling the Sass
- | file for the application as well as bundling up all the JS files.
- |
- */
-
-mix.js('resources/js/app.js', 'public/js')
- .sass('resources/sass/app.scss', 'public/css')
- .sourceMaps();
Comment on this Model
-