true null nil 0 0 0 0 1 0 0 0 1 0 0 0 1 yuZpQdnvvUBOTYh1jqZ2cA== 0 0 0 0 false null 1 yuZpQdnvvUBOTYh1jqZ2cA== 17.5 4.171 -26.4860001 8.47889225e-08 0.207909048 -0.978148162 4.37113883e-08 0.978148162 0.207909048 1 -6.03846004e-08 7.38481347e-08 0 false Restrafes XCS 7108324788 yuZpQdnvvUBOTYh1jqZ2cA== {B88BC829-2E70-458E-9567-27196412A674} 0 false config -1 yuZpQdnvvUBOTYh1jqZ2cA== false 0 {CD756DAA-C3CA-4FCF-8E82-33ACB5E578B6} 0 false loader -1 yuZpQdnvvUBOTYh1jqZ2cA== {ef7612db-42e6-4525-8e79-9c583fec2bff} 17996771963439872 true xcssrc 7108284356 yuZpQdnvvUBOTYh1jqZ2cA== true 0 {cd26dcdf-c1c0-4c32-a66e-890426c8e596} 17996771963439872 true httpm -1 yuZpQdnvvUBOTYh1jqZ2cA== true 0 1 2 true false 0 true null 0 0 0 0 false 0 false XCS_HTTP -1 yuZpQdnvvUBOTYh1jqZ2cA== 0 false 0 0 0 0 0 0 0 0.105882362 0.164705887 0.207843155 0 0 false false 0 true 0 null null null null 0.5 -300 0 0 0 false null 0 0 600 0 50 0 true 1 true null 0 0 0 0 false 0 false Frame -1 yuZpQdnvvUBOTYh1jqZ2cA== http://www.roblox.com/asset/?id=14511145204 1 1 1 0 0 0 0 0 0 3 0 0 0 0 1 1 0 1 0 false null false null false 0 true 0 0.5 0 1 1 1 1 0.105882362 0.164705887 0.207843155 0 0 false false 0 true 0 null null null null 0 10 0.5 0 0 false null 0 0 80 0 18 0 true 1 true null 0 0 0 0 false 0 false Logo -1 yuZpQdnvvUBOTYh1jqZ2cA== rbxasset://fonts/families/Roboto.json 400 1 -1 false HttpService is required, please enable it in game settings. 1 1 1 0 false 18 0 0 0 1 0 0 true 0 0 false 0 0 0 1 1 1 1 0.105882362 0.164705887 0.207843155 0 0 false false 0 true 0 null null null null 0 100 0 25 0 false null 0 0 500 0 25 0 true 1 true null 0 0 0 0 false 0 false Line2 -1 yuZpQdnvvUBOTYh1jqZ2cA== rbxasset://fonts/families/Roboto.json 400 1 -1 false Restrafes XCS Controller Error 1 1 1 0 false 18 0 0 0 1 0 0 true 0 2 false 0 0 0 1 1 1 1 0.105882362 0.164705887 0.207843155 0 0 false false 0 true 0 null null null null 0 100 0 0 0 false null 0 0 500 0 25 0 true 1 true null 0 0 0 0 false 0 false Line1 -1 yuZpQdnvvUBOTYh1jqZ2cA== {8416f780-f0d8-4765-95fe-36fa95288001} 17996771963439872 true controllerAxesys -1 yuZpQdnvvUBOTYh1jqZ2cA== syncTimed spawn(function() _m.events["accessReady"](); end) _m.api:Fire({["request"]="setDoorTrigger";["value"]=false;["player"]=player;}); if (proximityObject) then proximityObject.Enabled = true; end else spawn(function() _m.events["accessDenied"](player); end) _m.api:Fire({["request"]="onAccessDenied";["player"]=player;["timerLength"]=_m.config["accessDeniedTimer"];}); if (_m.sound) then _m.sound.SoundId = _m.sounds["accessDenied"]; _m.sound:Play(); end if (proximityObject) then proximityObject.Enabled = false; end wait(_m.config["accessDeniedTimer"]); _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",1); if (proximityObject) then proximityObject.Enabled = true; end end _m.cardScan = false end end function _m.touchScan(x) if (x.Parent:FindFirstChild("CardNumber") or x.Parent:FindFirstChild("_axesysCard") and x.Name == "Handle" and x.Parent.ClassName == "Tool") then local player = game.Players:GetPlayerFromCharacter(x.Parent.Parent); local uid = tostring(player.UserId); _m.negotiate(player); end end function readerSettings() local newSettings = _m.superiorApi:Invoke({["reader"]=_m.doorId;["request"]="settings"})["data"]; _m.doorActive = (newSettings["Active"] == "1" and true or false); _m.doorLocked = (newSettings["Locked"] == "1" and true or false); _m.api:Fire({["request"]="setDoorTrigger";["value"]=(newSettings["Locked"] == "0" and true or false);["player"]=player;}); _m.indicatorChange("LEDR",(newSettings["Active"] == "0" and 1 or 0)); _m.indicatorChange("LEDG",(newSettings["Locked"] == "1" and 0 or 1)); _m.indicatorChange("LEDS",(newSettings["Active"] == "1" and newSettings["Locked"] == "1" and 1 or 0)); if (_m.doorActive and _m.doorLocked) then spawn(function() _m.events["accessReady"](); end) elseif (_m.doorActive and not _m.doorLocked) then spawn(function() _m.events["enabled"](); end) elseif (not _m.doorActive) then spawn(function() _m.events["disabled"](); end) end _m.doorTimer = tonumber(newSettings["Timer"]); wait(60); readerSettings(); end function _m.indicatorChange(N,S) for _,x in pairs(_m.model:GetChildren()) do if (x.Name == N) then x.BrickColor = BrickColor.new(_m.config["_legacy_indicators"][N][S]) if (S == 1) then x.Material = "Neon"; else x.Material = "SmoothPlastic"; end end end end function _m.init(data) wait(2.5) _m.config = data["config"]; _m.model = _m.config["model"]; _m.doorId = _m.config["doorId"]; _m.sounds = _m.config["sounds"]; _m.events = _m.config["events"]; _m.sound = nil; _m.api = _m.model.API; if (_m.model:FindFirstChild("_main")) then _m.sound = _m.model:FindFirstChild("_main"):FindFirstChild("sound"); end if (_m.config["_legacy_indicators"] == nil) then _m.config["_legacy_indicators"] = { ["LEDR"]={[0]="Really black",[1]="Really red"}; ["LEDG"]={[0]="Really black",[1]="Lime green"}; ["LEDS"]={[0]="Really black",[1]="Institutional white"}; }; end if (_m.events["accessGranted"] == nil) then _m.events["accessGranted"] = function(player) _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",1); _m.indicatorChange("LEDS",0); end end if (_m.events["accessDenied"] == nil) then _m.events["accessDenied"] = function(player) _m.indicatorChange("LEDR",1); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); end end if (_m.events["enabled"] == nil) then _m.events["enabled"] = function() _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",1); _m.indicatorChange("LEDS",0); end end if (_m.events["disabled"] == nil) then _m.events["disabled"] = function() _m.indicatorChange("LEDR",1); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); end end if (_m.events["accessReady"] == nil) then _m.events["accessReady"] = function() _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",1); end end _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); local startUp = true; repeat _m.indicatorChange("LEDR",1) local waitPing = _m.superiorApi:Invoke({["reader"]=_m.doorId;["request"]="ping";}) if (waitPing["response"]) then startUp = false; break; end if (waitPing["response"] == "invalid-reader") then _m.indicatorChange("LEDR",1); assert(false,"eve axesys (reader): [".._m.doorId.."]: invalid reader!"); end until not startUp _m.indicatorChange("LEDR",0); wait(0.2); _m.indicatorChange("LEDR",1); wait(0.2); _m.indicatorChange("LEDG",1); wait(0.2); _m.indicatorChange("LEDS",1); wait(2.5); _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); if (_m.model:FindFirstChild("_main")) then _m.model:FindFirstChild("_main").Touched:connect(_m.touchScan); end -- new interaction method _m.api.Event:Connect(function(data) if (data["request"] == "onScan") then if (data["isProximityPrompt"]) then if (data["proximityPrompAccessWithoutCard"]) then _m.negotiate(data["player"]); else for _,v in pairs(data["player"]:FindFirstChild("Backpack"):GetChildren()) do if (v:FindFirstChild("CardNumber") or v:FindFirstChild("_axesysCard") and v.Parent.ClassName == "Tool") then _m.negotiate(data["player"], data["proximityObject"]); return; end end for _,v in pairs(data["player"].Character:GetChildren()) do if (v:FindFirstChild("CardNumber") or v:FindFirstChild("_axesysCard") and v.Parent.ClassName == "Tool") then _m.negotiate(data["player"], data["proximityObject"]); return; end end end else _m.negotiate(data["player"]); end elseif (data["request"] == "setDoorTrigger") then _m._legacy_trigger(data["value"]); end end) readerSettings() end return _m ]]> {2ca9fb29-cd45-4b62-b6c1-f333e2d89b32} 17996771963439872 true unitAxesys -1 yuZpQdnvvUBOTYh1jqZ2cA== {c94b318e-9267-42d2-8881-9790a1f569d9} 17996771963439872 true controller -1 yuZpQdnvvUBOTYh1jqZ2cA== syncTimed spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessReady"] or _m.events["ready"], checkUser["scan_data"]); end) _m.api:Fire({["request"]="setDoorTrigger";["value"]=false;["player"]=player;}); if (proximityObject and _m.doorActive) then proximityObject.Enabled = true; end else if (_m.sound and _m.sounds) then _m.sound.SoundId = _m.sounds["denied"] or _m.sounds["accessDenied"]; _m.sound:Play(); end spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessDenied"] or _m.events["denied"], player, checkUser["scan_data"]); end) _m.api:Fire({["request"]="onAccessDenied";["player"]=player;["timerLength"]=_m.config["accessDeniedTimer"];}); wait(_m.config["accessDeniedTimer"]); _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",1); spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessReady"] or _m.events["ready"], checkUser["scan_data"]); end) if (proximityObject and _m.doorActive) then proximityObject.Enabled = true; end end _m.cardScan = false end end) if (not s0) then print(string.format("There was an error while negotiating an access point: %s", m0)) end end function _m.touchScan(x) if (_m.findAny(x.Parent, {"CardNumber", "_xcsCard", "XCS"}) and x.Name == "Handle" and x.Parent.ClassName == "Tool") then local player = game.Players:GetPlayerFromCharacter(x.Parent.Parent); local uid = tostring(player.UserId); local cardNumber = nil; local cardNumberObject = _m.findAny(x.Parent, {"CardNumber", "_xcsCard", "XCS"}); if (cardNumberObject and (cardNumberObject:IsA("StringValue") or cardNumberObject:IsA("NumberValue") or cardNumberObject:IsA("IntValue"))) then cardNumber = cardNumberObject.Value; end _m.negotiate(player, nil, {cardNumber}); end end function readerSettings() local s0, m0 = pcall(function() spawn(function() local proximityObject = _m.model:FindFirstChild("xcsInteraction", true); local newSettings = _m.superiorApi:Invoke({["reader"]=_m.doorId;["request"]="settings"}); if (newSettings["response"] == "invalid-reader") then spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessDisabled"] or _m.events["disabled"], {}); end) assert(false, string.format("Restrafes XCS (reader): [%s]: Invalid reader ID!\n%s", _m.doorId, _m.model:GetFullName())); end newSettings = newSettings["data"]; _m.doorActive = (newSettings["active"]); _m.doorLocked = (newSettings["armed"]); _m.api:Fire({["request"]="setDoorTrigger";["value"]=(newSettings["armed"]);["player"]=player;}); _m.indicatorChange("LEDR",(newSettings["active"] == false and 1 or 0)); _m.indicatorChange("LEDG",(newSettings["armed"] == true and 0 or 1)); _m.indicatorChange("LEDS",(newSettings["active"] == true and newSettings["armed"] == true and 1 or 0)); if (_m.doorActive and _m.doorLocked) then if (not _m.cardScan) then spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessReady"] or _m.events["ready"], newSettings["scanData"]["ready"] or {}); end) if (proximityObject and _m.doorActive) then proximityObject.Enabled = true; end end elseif (_m.doorActive and not _m.doorLocked) then spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["enabled"] or _m.events["disarmed"], newSettings["scanData"]["disarmed"] or {}); end) if (proximityObject) then proximityObject.Enabled = false; end elseif (not _m.doorActive) then spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessDisabled"] or _m.events["disabled"], {}); end) if (proximityObject) then proximityObject.Enabled = false; end end _m.doorTimer = tonumber(newSettings["unlockTime"] or 5); wait(15); readerSettings(); end) end) if (not s0) then print(string.format("There was an error while grabbing up-to-date reader settings: %s", m0)) end end function _m.indicatorChange(N,S) for _,x in pairs(_m.model:GetChildren()) do if (x.Name == N) then x.BrickColor = BrickColor.new(_m.config["_legacy_indicators"][N][S]) if (S == 1) then x.Material = "Neon"; else x.Material = "SmoothPlastic"; end end end end function _m.remoteUnlock(unlockSeconds) if (not _m.doorActive or _m.cardScan) then return; end _m.cardScan = true; if (_m.sound and _m.sounds) then _m.sound.SoundId = _m.sounds["granted"] or _m.sounds["accessGranted"]; _m.sound:Play(); end spawn(function() local proximityObject = _m.model:FindFirstChild("xcsInteraction", true); if (proximityObject) then proximityObject.Enabled = false; end spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessGranted"] or _m.events["granted"], nil, {}); end) _m.api:Fire({["request"]="setDoorTrigger";["value"]=true;}); local time = 0; local syncTimed = tonumber(unlockSeconds) or _m.doorTimer; _m.api:Fire({["request"]="onAccessGranted";["timerLength"]=syncTimed;}); repeat wait(1); time += 1; until time > syncTimed spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessReady"] or _m.events["ready"], {}); end) _m.api:Fire({["request"]="setDoorTrigger";["value"]=false;}); if (proximityObject and _m.doorActive) then proximityObject.Enabled = true; end _m.cardScan = false; end) end function _m.init(data) _m.config = data["config"]; _m.model = _m.config["model"]; _m.doorId = _m.config["accessPointId"] or _m.config["doorId"]; _m.sounds = _m.config["sounds"]; _m.events = _m.config["events"]; _m.sound = nil; _m.api = _m.model.API; if (_m.model:FindFirstChild("_main")) then _m.sound = _m.model:FindFirstChild("_main"):FindFirstChild("sound"); if (_m.sound and _m.sounds) then _m.sounds["granted"] = _m.sounds["granted"] or _m.sounds["accessGranted"] or ""; _m.sounds["denied"] = _m.sounds["denied"] or _m.sounds["accessDenied"] or ""; _m.sounds["pending"] = _m.sounds["pending"] or _m.sounds["accessPending"] or ""; end end if (_m.config["_legacy_indicators"] == nil) then _m.config["_legacy_indicators"] = { ["LEDR"]={[0]="Really black",[1]="Really red"}; ["LEDG"]={[0]="Really black",[1]="Lime green"}; ["LEDS"]={[0]="Really black",[1]="Institutional white"}; }; end if (_m.events["accessGranted"] == nil and _m.events["granted"] == nil) then _m.events["accessGranted"] = function(player) _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",1); _m.indicatorChange("LEDS",0); end end if (_m.events["accessDenied"] == nil and _m.events["denied"] == nil) then _m.events["accessDenied"] = function(player) _m.indicatorChange("LEDR",1); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); end end if (_m.events["enabled"] == nil and _m.events["disarmed"] == nil) then _m.events["enabled"] = function() _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",1); _m.indicatorChange("LEDS",0); end end if (_m.events["accessDisabled"] == nil and _m.events["disabled"] == nil) then _m.events["disabled"] = function() _m.indicatorChange("LEDR",1); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); end end if (_m.events["accessReady"] == nil and _m.events["ready"] == nil) then _m.events["accessReady"] = function() _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",1); end end _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); local startUp = true; repeat _m.indicatorChange("LEDR",1) local waitPing = _m.superiorApi:Invoke({["reader"]=_m.doorId;["request"]="ping";}) if (waitPing["response"]) then startUp = false; break; end if (waitPing["response"] == "invalid-reader") then _m.indicatorChange("LEDR",1); assert(false, string.format("Restrafes XCS (reader): [%s]: Invalid reader ID!\n%s", _m.doorId, _m.model:GetFullName())); end until not startUp _m.indicatorChange("LEDR",0); wait(0.2); _m.indicatorChange("LEDR",1); wait(0.2); _m.indicatorChange("LEDG",1); wait(0.2); _m.indicatorChange("LEDS",1); wait(2.5); _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); if (_m.model:FindFirstChild("_touch")) then _m.model:FindFirstChild("_touch").Touched:connect(_m.touchScan); end if (_m.model:FindFirstChild("_main")) then _m.model:FindFirstChild("_main").Touched:connect(_m.touchScan); end -- new interaction method _m.api.Event:Connect(function(data) if (data["request"] == "onScan") then local cardNumbers = {}; for _,v in pairs(data["player"]:FindFirstChild("Backpack"):GetChildren()) do if (v:FindFirstChild("CardNumber") and v.ClassName == "Tool") then table.insert(cardNumbers, v:FindFirstChild("CardNumber").Value); end end for _,v in pairs(data["player"].Character:GetChildren()) do if (v:FindFirstChild("CardNumber") and v.ClassName == "Tool") then table.insert(cardNumbers, v:FindFirstChild("CardNumber").Value); end end if (data["isProximityPrompt"]) then if (data["proximityPromptAccessWithoutCard"]) then _m.negotiate(data["player"], data["proximityObject"], cardNumbers); end else _m.negotiate(data["player"], nil, cardNumbers); end elseif (data["request"] == "setDoorTrigger") then _m._legacy_trigger(data["value"]); end end) repeat wait() until _G.xcsRemoteUnlock ~= nil; _G.xcsRemoteUnlock.Event:Connect(function(accessPointId, payload) if (accessPointId ~= _m.doorId) then return; end local unlockSeconds = nil; if (type(payload) == "table") then unlockSeconds = payload["unlockTime"]; end _m.remoteUnlock(unlockSeconds); end) readerSettings() end return _m ]]> {c00ee4b0-06dd-4ca9-a4a3-038539ed2047} 17996771963439872 true unit -1 yuZpQdnvvUBOTYh1jqZ2cA== 0 false Readers -1 yuZpQdnvvUBOTYh1jqZ2cA== 0 0 0 0 1 0 0 0 1 0 0 0 1 yuZpQdnvvUBOTYh1jqZ2cA== 0 0 0 0 false null 1 yuZpQdnvvUBOTYh1jqZ2cA== 4.9749999 4 -19.75 -4.37113883e-08 0 -1 0 1 0 1 0 -4.37113883e-08 0 false XCS Ax1 -1 yuZpQdnvvUBOTYh1jqZ2cA== false false false 0.200000003 0.600000024 0.0500000007 0 0 0 rbxassetid://14392193893 0 606 yuZpQdnvvUBOTYh1jqZ2cA== 0 true 9youQqgpV70GZVe57RLKHg== -2.40652412e-06 -2.03360287e-06 3.12777206e-06 4.21279692e-05 6.70220561e-06 4.84613956e-05 -9.36211109e-11 -6.75776058e-13 5.57743999e-12 0.000885298126 true true -0.5 0.5 0 0 -0.5 0.5 0 0 4.9749999 4 -19.75 -4.37113883e-08 0 -1 0 1 0 1 0 -4.37113883e-08 true true true true Default 0 4280492835 false true -0.5 0.5 0 0 -0.5 0.5 0 0 false false 272 0 0 0 1 0 0 0 1 0 0 0 1 0 -0.5 0.5 0 0 0 0 0 0 -0.5 0.5 0 0 0 0 0 0 0.200000003 0.600000024 0.0500000007 0 false finish -1 yuZpQdnvvUBOTYh1jqZ2cA== false false false 0.180000007 0.579999983 0.0290130004 0 0 0 rbxassetid://14392195965 0 4352 yuZpQdnvvUBOTYh1jqZ2cA== 0 true aTIjYIeEFqyQ2bhuh8rtLg== -1.80013018e-07 4.32734441e-06 3.48552157e-06 8.50336146e-05 8.37962762e-06 9.29887392e-05 -3.94808665e-12 -3.17759881e-12 -1.5377595e-12 0.00302734436 true true -0.5 0.5 0 0 -0.5 0.5 0 0 4.98549414 4 -19.75 -4.37113883e-08 0 -1 0 1 0 1 0 -4.37113883e-08 true true true true Default 0 4280821800 false true -0.5 0.5 0 0 -0.5 0.5 0 0 false false 272 0 0 0 1 0 0 0 1 0 0 0 1 0 -0.5 0.5 0 0 0 0 0 0 -0.5 0.5 0 0 0 0 0 0 0.180000007 0.579999983 0.0290130004 0 false _main -1 yuZpQdnvvUBOTYh1jqZ2cA== true 0 60000 false false 0 60000 false 4 false 20 10 0 null rbxassetid://138093550 0 0.200000003 0 false sound 138093550 yuZpQdnvvUBOTYh1jqZ2cA== Present your card true true true 0 1000 0.5 101 3 0 Restrafes XCS true null 0 0 0 0 false xcsInteraction -1 yuZpQdnvvUBOTYh1jqZ2cA== 1 1 true true -0.5 0.5 0 0 -0.5 0.5 0 0 4.99205351 4.20106602 -19.75 -4.37113883e-08 0 -1 0 1 0 1 0 -4.37113883e-08 true true true true Default 0 4289350989 false true -0.5 0.5 0 0 -0.5 0.5 0 0 false false 288 0 0 0 1 0 0 0 1 0 0 0 1 0 -0.5 0.5 0 0 0 0 0 0 -0.5 0.5 0 0 0 0 0 0 0.129999995 0.0299999993 0.0140100848 0 false LED -1 yuZpQdnvvUBOTYh1jqZ2cA== 1 1 true true -0.5 0.5 0 0 -0.5 0.5 0 0 4.9922843 3.75778842 -19.75 -4.37113883e-08 0 -1 0 1 0 1 0 -4.37113883e-08 true true true true Default 0 4280821800 false true -0.5 0.5 0 0 -0.5 0.5 0 0 false false 272 0 0 0 1 0 0 0 1 0 0 0 1 0.25 -0.5 0.5 0 0 0 0 0 0 -0.5 0.5 0 0 0 0 0 0 0.129999995 0.0464786291 0.0144716632 0 false logo -1 yuZpQdnvvUBOTYh1jqZ2cA== {E15B3E24-9BEB-4154-9296-28F128C272E9} 0 false config -1 yuZpQdnvvUBOTYh1jqZ2cA== false 0 {02982804-CB63-4C38-9D47-006FC5451CFB} 0 false loader -1 yuZpQdnvvUBOTYh1jqZ2cA== {6E7ABAAB-C1D7-4974-9A2A-6C2921275D30} 17996771963439872 true xcssrc 7108284356 yuZpQdnvvUBOTYh1jqZ2cA== true 0 {CB14BE36-E440-4206-BD11-413CD05BF88C} 17996771963439872 true httpm -1 yuZpQdnvvUBOTYh1jqZ2cA== true 0 1 2 true false 0 true null 0 0 0 0 false 0 false XCS_HTTP -1 yuZpQdnvvUBOTYh1jqZ2cA== 0 false 0 0 0 0 0 0 0 0.105882362 0.164705887 0.207843155 0 0 false false 0 true 0 null null null null 0.5 -300 0 0 0 false null 0 0 600 0 50 0 true 1 true null 0 0 0 0 false 0 false Frame -1 yuZpQdnvvUBOTYh1jqZ2cA== http://www.roblox.com/asset/?id=14511145204 1 1 1 0 0 0 0 0 0 3 0 0 0 0 1 1 0 1 0 false null false null false 0 true 0 0.5 0 1 1 1 1 0.105882362 0.164705887 0.207843155 0 0 false false 0 true 0 null null null null 0 10 0.5 0 0 false null 0 0 80 0 18 0 true 1 true null 0 0 0 0 false 0 false Logo -1 yuZpQdnvvUBOTYh1jqZ2cA== rbxasset://fonts/families/Roboto.json 400 1 -1 false HttpService is required, please enable it in game settings. 1 1 1 0 false 18 0 0 0 1 0 0 true 0 0 false 0 0 0 1 1 1 1 0.105882362 0.164705887 0.207843155 0 0 false false 0 true 0 null null null null 0 100 0 25 0 false null 0 0 500 0 25 0 true 1 true null 0 0 0 0 false 0 false Line2 -1 yuZpQdnvvUBOTYh1jqZ2cA== rbxasset://fonts/families/Roboto.json 400 1 -1 false Restrafes XCS Controller Error 1 1 1 0 false 18 0 0 0 1 0 0 true 0 2 false 0 0 0 1 1 1 1 0.105882362 0.164705887 0.207843155 0 0 false false 0 true 0 null null null null 0 100 0 0 0 false null 0 0 500 0 25 0 true 1 true null 0 0 0 0 false 0 false Line1 -1 yuZpQdnvvUBOTYh1jqZ2cA== {37B9E8B8-0A75-4BA1-8AC7-90F7F2A33ECF} 17996771963439872 true controllerAxesys -1 yuZpQdnvvUBOTYh1jqZ2cA== syncTimed spawn(function() _m.events["accessReady"](); end) _m.api:Fire({["request"]="setDoorTrigger";["value"]=false;["player"]=player;}); if (proximityObject) then proximityObject.Enabled = true; end else spawn(function() _m.events["accessDenied"](player); end) _m.api:Fire({["request"]="onAccessDenied";["player"]=player;["timerLength"]=_m.config["accessDeniedTimer"];}); if (_m.sound) then _m.sound.SoundId = _m.sounds["accessDenied"]; _m.sound:Play(); end if (proximityObject) then proximityObject.Enabled = false; end wait(_m.config["accessDeniedTimer"]); _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",1); if (proximityObject) then proximityObject.Enabled = true; end end _m.cardScan = false end end function _m.touchScan(x) if (x.Parent:FindFirstChild("CardNumber") or x.Parent:FindFirstChild("_axesysCard") and x.Name == "Handle" and x.Parent.ClassName == "Tool") then local player = game.Players:GetPlayerFromCharacter(x.Parent.Parent); local uid = tostring(player.UserId); _m.negotiate(player); end end function readerSettings() local newSettings = _m.superiorApi:Invoke({["reader"]=_m.doorId;["request"]="settings"})["data"]; _m.doorActive = (newSettings["Active"] == "1" and true or false); _m.doorLocked = (newSettings["Locked"] == "1" and true or false); _m.api:Fire({["request"]="setDoorTrigger";["value"]=(newSettings["Locked"] == "0" and true or false);["player"]=player;}); _m.indicatorChange("LEDR",(newSettings["Active"] == "0" and 1 or 0)); _m.indicatorChange("LEDG",(newSettings["Locked"] == "1" and 0 or 1)); _m.indicatorChange("LEDS",(newSettings["Active"] == "1" and newSettings["Locked"] == "1" and 1 or 0)); if (_m.doorActive and _m.doorLocked) then spawn(function() _m.events["accessReady"](); end) elseif (_m.doorActive and not _m.doorLocked) then spawn(function() _m.events["enabled"](); end) elseif (not _m.doorActive) then spawn(function() _m.events["disabled"](); end) end _m.doorTimer = tonumber(newSettings["Timer"]); wait(60); readerSettings(); end function _m.indicatorChange(N,S) for _,x in pairs(_m.model:GetChildren()) do if (x.Name == N) then x.BrickColor = BrickColor.new(_m.config["_legacy_indicators"][N][S]) if (S == 1) then x.Material = "Neon"; else x.Material = "SmoothPlastic"; end end end end function _m.init(data) wait(2.5) _m.config = data["config"]; _m.model = _m.config["model"]; _m.doorId = _m.config["doorId"]; _m.sounds = _m.config["sounds"]; _m.events = _m.config["events"]; _m.sound = nil; _m.api = _m.model.API; if (_m.model:FindFirstChild("_main")) then _m.sound = _m.model:FindFirstChild("_main"):FindFirstChild("sound"); end if (_m.config["_legacy_indicators"] == nil) then _m.config["_legacy_indicators"] = { ["LEDR"]={[0]="Really black",[1]="Really red"}; ["LEDG"]={[0]="Really black",[1]="Lime green"}; ["LEDS"]={[0]="Really black",[1]="Institutional white"}; }; end if (_m.events["accessGranted"] == nil) then _m.events["accessGranted"] = function(player) _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",1); _m.indicatorChange("LEDS",0); end end if (_m.events["accessDenied"] == nil) then _m.events["accessDenied"] = function(player) _m.indicatorChange("LEDR",1); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); end end if (_m.events["enabled"] == nil) then _m.events["enabled"] = function() _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",1); _m.indicatorChange("LEDS",0); end end if (_m.events["disabled"] == nil) then _m.events["disabled"] = function() _m.indicatorChange("LEDR",1); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); end end if (_m.events["accessReady"] == nil) then _m.events["accessReady"] = function() _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",1); end end _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); local startUp = true; repeat _m.indicatorChange("LEDR",1) local waitPing = _m.superiorApi:Invoke({["reader"]=_m.doorId;["request"]="ping";}) if (waitPing["response"]) then startUp = false; break; end if (waitPing["response"] == "invalid-reader") then _m.indicatorChange("LEDR",1); assert(false,"eve axesys (reader): [".._m.doorId.."]: invalid reader!"); end until not startUp _m.indicatorChange("LEDR",0); wait(0.2); _m.indicatorChange("LEDR",1); wait(0.2); _m.indicatorChange("LEDG",1); wait(0.2); _m.indicatorChange("LEDS",1); wait(2.5); _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); if (_m.model:FindFirstChild("_main")) then _m.model:FindFirstChild("_main").Touched:connect(_m.touchScan); end -- new interaction method _m.api.Event:Connect(function(data) if (data["request"] == "onScan") then if (data["isProximityPrompt"]) then if (data["proximityPrompAccessWithoutCard"]) then _m.negotiate(data["player"]); else for _,v in pairs(data["player"]:FindFirstChild("Backpack"):GetChildren()) do if (v:FindFirstChild("CardNumber") or v:FindFirstChild("_axesysCard") and v.Parent.ClassName == "Tool") then _m.negotiate(data["player"], data["proximityObject"]); return; end end for _,v in pairs(data["player"].Character:GetChildren()) do if (v:FindFirstChild("CardNumber") or v:FindFirstChild("_axesysCard") and v.Parent.ClassName == "Tool") then _m.negotiate(data["player"], data["proximityObject"]); return; end end end else _m.negotiate(data["player"]); end elseif (data["request"] == "setDoorTrigger") then _m._legacy_trigger(data["value"]); end end) readerSettings() end return _m ]]> {4214A8E4-66AA-4E63-99F9-A5806F1460C1} 17996771963439872 true unitAxesys -1 yuZpQdnvvUBOTYh1jqZ2cA== {0216645A-D8E9-4C6D-96F1-A05978DA1E36} 17996771963439872 true controller -1 yuZpQdnvvUBOTYh1jqZ2cA== syncTimed spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessReady"] or _m.events["ready"], checkUser["scan_data"]); end) _m.api:Fire({["request"]="setDoorTrigger";["value"]=false;["player"]=player;}); if (proximityObject and _m.doorActive) then proximityObject.Enabled = true; end else if (_m.sound and _m.sounds) then _m.sound.SoundId = _m.sounds["denied"] or _m.sounds["accessDenied"]; _m.sound:Play(); end spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessDenied"] or _m.events["denied"], player, checkUser["scan_data"]); end) _m.api:Fire({["request"]="onAccessDenied";["player"]=player;["timerLength"]=_m.config["accessDeniedTimer"];}); wait(_m.config["accessDeniedTimer"]); _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",1); spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessReady"] or _m.events["ready"], checkUser["scan_data"]); end) if (proximityObject and _m.doorActive) then proximityObject.Enabled = true; end end _m.cardScan = false end end) if (not s0) then print(string.format("There was an error while negotiating an access point: %s", m0)) end end function _m.touchScan(x) if (_m.findAny(x.Parent, {"CardNumber", "_xcsCard", "XCS"}) and x.Name == "Handle" and x.Parent.ClassName == "Tool") then local player = game.Players:GetPlayerFromCharacter(x.Parent.Parent); local uid = tostring(player.UserId); local cardNumber = nil; local cardNumberObject = _m.findAny(x.Parent, {"CardNumber", "_xcsCard", "XCS"}); if (cardNumberObject and (cardNumberObject:IsA("StringValue") or cardNumberObject:IsA("NumberValue") or cardNumberObject:IsA("IntValue"))) then cardNumber = cardNumberObject.Value; end _m.negotiate(player, nil, {cardNumber}); end end function readerSettings() local s0, m0 = pcall(function() spawn(function() local proximityObject = _m.model:FindFirstChild("xcsInteraction", true); local newSettings = _m.superiorApi:Invoke({["reader"]=_m.doorId;["request"]="settings"}); if (newSettings["response"] == "invalid-reader") then spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessDisabled"] or _m.events["disabled"], {}); end) assert(false, string.format("Restrafes XCS (reader): [%s]: Invalid reader ID!\n%s", _m.doorId, _m.model:GetFullName())); end newSettings = newSettings["data"]; _m.doorActive = (newSettings["active"]); _m.doorLocked = (newSettings["armed"]); _m.api:Fire({["request"]="setDoorTrigger";["value"]=(newSettings["armed"]);["player"]=player;}); _m.indicatorChange("LEDR",(newSettings["active"] == false and 1 or 0)); _m.indicatorChange("LEDG",(newSettings["armed"] == true and 0 or 1)); _m.indicatorChange("LEDS",(newSettings["active"] == true and newSettings["armed"] == true and 1 or 0)); if (_m.doorActive and _m.doorLocked) then if (not _m.cardScan) then spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessReady"] or _m.events["ready"], newSettings["scanData"]["ready"] or {}); end) if (proximityObject and _m.doorActive) then proximityObject.Enabled = true; end end elseif (_m.doorActive and not _m.doorLocked) then spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["enabled"] or _m.events["disarmed"], newSettings["scanData"]["disarmed"] or {}); end) if (proximityObject) then proximityObject.Enabled = false; end elseif (not _m.doorActive) then spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessDisabled"] or _m.events["disabled"], {}); end) if (proximityObject) then proximityObject.Enabled = false; end end _m.doorTimer = tonumber(newSettings["unlockTime"] or 5); wait(15); readerSettings(); end) end) if (not s0) then print(string.format("There was an error while grabbing up-to-date reader settings: %s", m0)) end end function _m.indicatorChange(N,S) for _,x in pairs(_m.model:GetChildren()) do if (x.Name == N) then x.BrickColor = BrickColor.new(_m.config["_legacy_indicators"][N][S]) if (S == 1) then x.Material = "Neon"; else x.Material = "SmoothPlastic"; end end end end function _m.remoteUnlock(unlockSeconds) if (not _m.doorActive or _m.cardScan) then return; end _m.cardScan = true; if (_m.sound and _m.sounds) then _m.sound.SoundId = _m.sounds["granted"] or _m.sounds["accessGranted"]; _m.sound:Play(); end spawn(function() local proximityObject = _m.model:FindFirstChild("xcsInteraction", true); if (proximityObject) then proximityObject.Enabled = false; end spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessGranted"] or _m.events["granted"], nil, {}); end) _m.api:Fire({["request"]="setDoorTrigger";["value"]=true;}); local time = 0; local syncTimed = tonumber(unlockSeconds) or _m.doorTimer; _m.api:Fire({["request"]="onAccessGranted";["timerLength"]=syncTimed;}); repeat wait(1); time += 1; until time > syncTimed spawn(function() _m.cancelEventThread() _m.eventThread = task.spawn(_m.events["accessReady"] or _m.events["ready"], {}); end) _m.api:Fire({["request"]="setDoorTrigger";["value"]=false;}); if (proximityObject and _m.doorActive) then proximityObject.Enabled = true; end _m.cardScan = false; end) end function _m.init(data) _m.config = data["config"]; _m.model = _m.config["model"]; _m.doorId = _m.config["accessPointId"] or _m.config["doorId"]; _m.sounds = _m.config["sounds"]; _m.events = _m.config["events"]; _m.sound = nil; _m.api = _m.model.API; if (_m.model:FindFirstChild("_main")) then _m.sound = _m.model:FindFirstChild("_main"):FindFirstChild("sound"); if (_m.sound and _m.sounds) then _m.sounds["granted"] = _m.sounds["granted"] or _m.sounds["accessGranted"] or ""; _m.sounds["denied"] = _m.sounds["denied"] or _m.sounds["accessDenied"] or ""; _m.sounds["pending"] = _m.sounds["pending"] or _m.sounds["accessPending"] or ""; end end if (_m.config["_legacy_indicators"] == nil) then _m.config["_legacy_indicators"] = { ["LEDR"]={[0]="Really black",[1]="Really red"}; ["LEDG"]={[0]="Really black",[1]="Lime green"}; ["LEDS"]={[0]="Really black",[1]="Institutional white"}; }; end if (_m.events["accessGranted"] == nil and _m.events["granted"] == nil) then _m.events["accessGranted"] = function(player) _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",1); _m.indicatorChange("LEDS",0); end end if (_m.events["accessDenied"] == nil and _m.events["denied"] == nil) then _m.events["accessDenied"] = function(player) _m.indicatorChange("LEDR",1); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); end end if (_m.events["enabled"] == nil and _m.events["disarmed"] == nil) then _m.events["enabled"] = function() _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",1); _m.indicatorChange("LEDS",0); end end if (_m.events["accessDisabled"] == nil and _m.events["disabled"] == nil) then _m.events["disabled"] = function() _m.indicatorChange("LEDR",1); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); end end if (_m.events["accessReady"] == nil and _m.events["ready"] == nil) then _m.events["accessReady"] = function() _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",1); end end _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); local startUp = true; repeat _m.indicatorChange("LEDR",1) local waitPing = _m.superiorApi:Invoke({["reader"]=_m.doorId;["request"]="ping";}) if (waitPing["response"]) then startUp = false; break; end if (waitPing["response"] == "invalid-reader") then _m.indicatorChange("LEDR",1); assert(false, string.format("Restrafes XCS (reader): [%s]: Invalid reader ID!\n%s", _m.doorId, _m.model:GetFullName())); end until not startUp _m.indicatorChange("LEDR",0); wait(0.2); _m.indicatorChange("LEDR",1); wait(0.2); _m.indicatorChange("LEDG",1); wait(0.2); _m.indicatorChange("LEDS",1); wait(2.5); _m.indicatorChange("LEDR",0); _m.indicatorChange("LEDG",0); _m.indicatorChange("LEDS",0); if (_m.model:FindFirstChild("_touch")) then _m.model:FindFirstChild("_touch").Touched:connect(_m.touchScan); end if (_m.model:FindFirstChild("_main")) then _m.model:FindFirstChild("_main").Touched:connect(_m.touchScan); end -- new interaction method _m.api.Event:Connect(function(data) if (data["request"] == "onScan") then local cardNumbers = {}; for _,v in pairs(data["player"]:FindFirstChild("Backpack"):GetChildren()) do if (v:FindFirstChild("CardNumber") and v.ClassName == "Tool") then table.insert(cardNumbers, v:FindFirstChild("CardNumber").Value); end end for _,v in pairs(data["player"].Character:GetChildren()) do if (v:FindFirstChild("CardNumber") and v.ClassName == "Tool") then table.insert(cardNumbers, v:FindFirstChild("CardNumber").Value); end end if (data["isProximityPrompt"]) then if (data["proximityPromptAccessWithoutCard"]) then _m.negotiate(data["player"], data["proximityObject"], cardNumbers); end else _m.negotiate(data["player"], nil, cardNumbers); end elseif (data["request"] == "setDoorTrigger") then _m._legacy_trigger(data["value"]); end end) repeat wait() until _G.xcsRemoteUnlock ~= nil; _G.xcsRemoteUnlock.Event:Connect(function(accessPointId, payload) if (accessPointId ~= _m.doorId) then return; end local unlockSeconds = nil; if (type(payload) == "table") then unlockSeconds = payload["unlockTime"]; end _m.remoteUnlock(unlockSeconds); end) readerSettings() end return _m ]]> {B5B5954E-557A-4C96-9012-20855D9E30F8} 17996771963439872 true unit -1 yuZpQdnvvUBOTYh1jqZ2cA== 0 false API -1 yuZpQdnvvUBOTYh1jqZ2cA== false 0 {78B78716-EAE9-4F7E-AC3F-B6940EE03A8A} 0 false LICENSE -1 yuZpQdnvvUBOTYh1jqZ2cA== Q1NHUEhTCAAAAAIAKLUv/WDEDW0mANQiEgAAACsBAAAOAgAAI0IACgQAAIQEDgAA7FG4veF6 lL6srG28PT48bcstFNduQeHrAsVdLZS7tgsFb1sUbrd1yl3XLVuU2y1RLRS3QGkBbtJSbbXr um7bcAHgrqVVJ1UC7Vmqb92ivK5yu0W5AC0FgGpVVbW3Ps+q3tqtXaBaABRVVa0WujerqlvX bu3bckHBC4r3LoJyu3YtrdKWgOJunbZVZrm/AwAAsEg4vfzrgbztUTi9EM6MRfeTad0/Xezi ehQ+rJg5YEO2CEa39Z9lCeW2N6ZovD0+krd3QGO8QhG4+ktfhUL3k+GamTlSuF48Dj1uEq49 8nmUzxCwPdttBvmtPc72kyy6Xgb/sT25Rxs2sT3hzTKrrz2k62Cesj2EnRLdsz1pXAnitD1a DbihtT00spLOGbY9i1C545G4POqRHR+4PahpkgGJtz1b5YSWtj3mVeNQtT1ruavDsz1EC5TO HLi9qWm9PX8Xtr2MvVy9Nb1bw9qzvWpcvYW94r2lt/atvbq9571svUW9ur3cvfN2tl4+y/aT LOqRvZtpkrKGt71S5c5Wk5ROtb1VulzBs70wDJQY+LG9uEceE7C97WxEpK+9kOx8MbG9zM5/ nb1iXLrftL1ADr0pspK9bFG9qeORPT09PT09PT09PVC8fBQWwLYYxGm8bH9iuGu87KAsdLaY 0LctTGFwc83QRb0AAIAyAOBttwfiu1JET7cUvpRMNz6hawo9sh9qVr2B66jR1pBEqVHZ48Gp gAxZ3TaREKioUkIVJSlIljG36P19NSaVnLYUhh8RfWdRvA3Z9AL9spQ/ifrjF93u+BDlio1e knVdtX9mEpY7vRawre1I/ky0iw8X/HlBojb3wNqite/f94/qejz8DKXGc3vCfBMyuHvh/tMe /fps740Yfue3HK/EWmoETlIKC09s3ItHuhLQKmipFe3pBMcLAEh0+7i/d2v+AqA9gNdOnEcd 7h/H5WZULctuiB48uzb71/sH506nrkn7lfe/5EzqD4ldv4j341NvrmdXos/5Xaf9+zxxHhMx 7oIbX17XgI54Ri+MiJpd2CySHFbFx42MvRsuAMnOnOzYpzKWdHQH7ND16sh6CvEMPHCo9OAW 5zaHC6JJ//gYtffm7C1fpY5iPSV3wp0CFs2E9Ivje170mD/X+14mdq0kHayHZnjqG5uL+lnS FLWnKSYNKFeCfjUHdL67bWzoAhCT8ttmEva7Gx9kx0jyvhLmHgJJl/hx1MelIU+8bhEfYpTj bdGvyWu1aBtTHpX21N81HJedvnscC1Pf5xHH9EJk+ELEzkcOgJ3Ig2NfQl2A+K38mUfTYZ9j dcd7+Lw5BO5ajR9D9B2C6QnzcmY/p2VfJLIasitcmMwvcBFxdj5bvuMAwMvTFmS8TyiGsL2I WzzwjQTyvzk4pZ3rXQ3uJZ6mKNkinrCLNIHvJe6U6NwCvYLc/qnfzVxDXWsOmd45Kstz1D+4 AeGqMQun/40XOaJg43Oka76Ix/kP8GIj6p2+U9O234z32UtSRfnhWO3nzmMSsNRFu8ieyuyX X65/JKc8afeH6TJhnbIGjTgWidthBEOH80ZsdrzeInUep+fzIHAR09lq2190t4LMh6fqgXpl JeyXlfLQLZEK Q1NHUEhTCAAAAAIAKLUv/WCUDl0lAIQdFAAAADwBAAAoAgAAIAA8BAAAiNAOAABJzMy9mpmZ vs3MzLw9PjwtZxUoBQpet9y167q7dVahu3ULhWVpQXFVFG73ULw9td2ebimtlkK5VoHys+D1 S6296dSiVrWgvBaUu62A8ranLcBZBda1WVVev67rWygAoFsA125uXdd1AMrrul3XpFWv67p1 FACUu67rtgDXdd26hQtvXVDenlWgvD2rlJ9ttW+r1QLsZYa++e+4XmdmPLxHc2mNybxzjeY7 yrybbBdaybxwUj6suDxi+J2822KCHMm9ZmaGPmZmCt/lW8yaq8i+zcxMvetSlzx6q8dMveJ6 lAAApLa8AAAAMmWilDB4mE6LlL6xWsq8zveClD4mg8m8rEnghrs8PT08gZUAQKQ2qw6XpI6U vs6syj09uJaWh5sZPnpkZrxoYMLldzSsybyDyjPMy7wOpdzVyrw9hvo5yz3xb5Y+zD0tm2PM PRx6leJmhjzRTbjw0UzPzEyOTbw9oH8+JMA9DjWGsMM907uYWMnGPTgZDFXJPYhSl7ygoZTs cpmUPv3qy7zuvjzKzNAKatSI5Ow8moVFkZS+chPLvBDXvZ+9+1IMrGNqvX293b31vS69zb2H 7jw9m8KVNp+9PYIeqEJGZaNJUqlsjQFikwIJUarheWIwLR/BRHAURLWWAwd/tNCt9PnwvMbN LYop0FF3bmHPj9/vocNnLXY3wy76/P97Vt/lfBr+teAS6QVM4KXFNep6+lCiYVjysh+sFBdg zNn1Mcc8sdr/cLy8QTT4V5tryf3wH2cG2btpC2suVHTe3ZbjMKTVDZNF2q+g4jKxw7PvgUzx thmBUM33t5eLgSOcqk2d/ijjXKvN9vvpbJ64E4vytzzBDLM6Xxf6K+cc2sN+w/mvs24x+qxf Dvq/HrkM/DWOpH5o/5WFwJpj7ZI2zbh5+1X0zP34pQ6/pRvRpxreM7lew+X2H/K3d7iW/zP7 h0CckfG14aKZ39k+MlQ/rtScyMemUxhMFyf4LsDmXhzTOdmu2F+NJ0tbpwtzYoQcv/Dh6RxA TCzDThWH98fYd/1Cu79HCv1/vevUrmKxt+p8bNgmM584vkf1T63DGa9oF02+PMj9hCbhUBRE 8hGbeMHL6VKNcOypOewFTM9YFoH+lNCxONuXy4ydiFrXuXdGL7/wTbm+mDT1i+p1t9vkKQ71 nUnW/DQsfm4EBnLO8XEXGAf99UrhDiIt1f9/jO8u3pfpJ7+OG7VyvBy9rMz+rK++eGZl9ziO yC71/pLxnn3qZLHEr/3fr3ECzjP7/Xmm/squBT3iN8JWdV6CZ6H/vXo6XOgFvIzh9VbkLO3c mHGiBaaxBXxNh75o8oiRXvdnyO9sgX5ycfDCwTI5/z8Pdl/93kq56J7oEpv/CStP8kdmDmz3 KGMsjj5i/+FA48J5u759Ip740/P4HNS31UFZvAApdrQTDJcuvEgfGZ1H90Lu44zwyXvEJipM 1ueNVz+vYUX+5G/1lB1fLu+nLXTeHTEJMwcWPUKfJbyxILXP2Qqn576J+15DMY0EDAn6AiYs LuKtU0gzSvcSdFWagwuh7d7qGDI/hgP8xIsHV7Q=