GE Lua Documentation

Press F to search!

dumps

Definition


-- @/lua/common/utils.lua:106

function dumps(...)
  local arg = {...}
  local narg = table.maxn(arg)
  if narg > 1 then
    local res = {}
    for k=1, narg do
      table.insert(res, inspect(arg[k]))
    end
    return table.concat(res, ', ')
  else
    if narg == 0 then return '' end
    if type(...) == "userdata" then
      local metatable = getmetatable(...)
      if metatable then
        return inspect(metatable)
      end
    end
    return inspect(...)
  end
end

Callers

@/lua/ge/extensions/editor/materialEditor.lua
            if tmp ~= "" and FS:fileExists(filepath) then
              log("D", "reloadTex", dumps(k).."["..dumps(i).."]="..dumps(filepath))
              files[#files+1] = filepath
            if tmp ~= "" and FS:fileExists(filepath) then
              log("D", "reloadTex", dumps(k).."["..dumps(i).."]="..dumps(filepath))
              files[#files+1] = filepath
            if tmp ~= "" and FS:fileExists(filepath) then
              log("D", "reloadTex", dumps(k).."["..dumps(i).."]="..dumps(filepath))
              files[#files+1] = filepath
@/lua/ge/extensions/util/stepHandler.lua
      step.complete = true
      log("E","","Could not spawn vehicle! " .. dumps(step) )
    end
      im.TextWrapped(string.format("%s%d - %s",taskData.currentStep == i and "ACTIVE " or "", i, step.name or "Unnamed Step"))
      im.Text(dumps(step))
      if debugApprove and i==taskData.currentStep and step.complete then
        local descriptor = string.format("%s: %s", stepToHandle.name or "Unknown Step", stepToHandle.origin or "Unknown Step")
        log("E","","This step timed out ("..(stepToHandle.timeout or 120).."s). Step will be set to complete. Origin: "..dumps(descriptor))
        dump(stepToHandle)
@/lua/ge/extensions/editor/fileDialog.lua
  if not isok then
    log("E", "", "Callback failed : "..dumps(msg))
  end
@/lua/ge/extensions/util/docCreator.lua
      if out.pidvid ~= out.vidpid then
        log("E", "", "Mismatching file vidpid "..dumps(out.vidpid)".. vs filename "..dumps(out.pidvid)..". Fix the mismatch.")
      end
      if out.pidvid ~= out.vidpid then
        log("E", "", "Mismatching file vidpid "..dumps(out.vidpid)".. vs filename "..dumps(out.pidvid)..". Fix the mismatch.")
      end
    if not out.vendorName then
      log("W", "", "Unrecognized vendor "..dumps(out.vendorId).." for device named: "..dumps(out.name, out.displayName))
    end
    if not out.vendorName then
      log("W", "", "Unrecognized vendor "..dumps(out.vendorId).." for device named: "..dumps(out.name, out.displayName))
    end
    if mergedInfo[out.identifier] then
      log("W", "", "Found additional inputmap files for identifier "..dumps(out.identifier)..". Extra filename: "..dumps(out.filename))
    else
    if mergedInfo[out.identifier] then
      log("W", "", "Found additional inputmap files for identifier "..dumps(out.identifier)..". Extra filename: "..dumps(out.filename))
    else
      if info.displayName then
        log("E", "", "Conflict: both displayNames and displayName fields are provided: "..dumps(info.displayName, info.displayNames))
      end
@/lua/ge/extensions/editor/dynamicDecals/history.lua
local function getTooltipTextFromAction(action)
  local actionData = dumps(action)
  local lines = {}
@/lua/ge/extensions/flowgraph/modules/prefabModule.lua
            if string.startswith(name, "clone") then
              log("W", "prefabModule", "Prefab BeamNGVehicle object with Name value starting with 'clone': "..dumps(name).."; to prevent conflicts, please rename this to something else.")
            end
            if name ~= "" then
              log("W", "prefabModule", "Prefab object with Name field: "..dumps(name).."; to prevent conflicts, please clear Name field and use Internal Name field instead.")
            end
  if not obj then
    log("E","","Trying to add a prefab that doesnt exist! id: " .. dumps(id))
  end
  else
    log("W","","Trying to setKeepPrefab for a non-tracked prefab: " .. dumps(id) .. "/" .. dumps(keep))
  end
  else
    log("W","","Trying to setKeepPrefab for a non-tracked prefab: " .. dumps(id) .. "/" .. dumps(keep))
  end
  local data = self.prefabs[id]
  if not data then log("W","","Tried to remove a prefab that doesnt exist - " .. dumps(id)) return end
  if not data.dontDelete or force then
      local obj = scenetree.findObjectById(id)
      --print("data.unpackVehiclesBeforeDeletion ->" .. dumps(data.unpackVehiclesBeforeDeletion))
      if obj then
    else
      log("I","","Not deleting prefab, because it was requested: " .. dumps(id))
    end
@/lua/ge/extensions/career/modules/delivery/vehicleOfferManager.lua
  local offer = getOfferById(offerId)
  if not offer then log("E","","Could not find offer with it "..dumps(offerId)) return end
  log("I","","Spawning offer " .. offerId)
          if not part then
            log("W","","Could not find part "..dumps(mainPartName) .." - starting odometer will be -1")
            offer.startingOdometer = -1
@/lua/ge/extensions/core/commandhandler.lua
  if #args < 2  then
    log('E', 'scheme', 'invalid/unsupported starting command: ' .. dumps(args))
    return

  log('D', 'scheme', "invoked by scheme: " .. tostring(scheme) .. ' = ' .. dumps(args))
  elseif cmd == "tech_utils" and version == "v1" then
    log("I", "", "Received commandHandler request for "..dumps(cmd)..": "..dumps(data))
    local functionName = data
  elseif cmd == "tech_utils" and version == "v1" then
    log("I", "", "Received commandHandler request for "..dumps(cmd)..": "..dumps(data))
    local functionName = data
    -- for example using the URL like this:  beamng:v1/core_input_actions/triggerDownUp/toggleCamera
    log("I", "", "Received commandHandler request for "..dumps(cmd)..": "..dumps(data))
    local params = split(data, "/")
    -- for example using the URL like this:  beamng:v1/core_input_actions/triggerDownUp/toggleCamera
    log("I", "", "Received commandHandler request for "..dumps(cmd)..": "..dumps(data))
    local params = split(data, "/")

  log('E', 'scheme', 'unsupported scheme command: ' .. dumps(args))
end
@/lua/ge/extensions/editor/flowgraph/variables.lua
  if editor.getPreference("flowgraph.general.alwaysExpandVariables") then variable.expanded = true end
  im.PushID1(target.id..varName..dumps(global).."pushed")
  local flags = (not variable.expanded) and bit.bor(im.WindowFlags_NoScrollbar, im.WindowFlags_NoScrollWithMouse) or nil
  local flags = (not variable.expanded) and bit.bor(im.WindowFlags_NoScrollbar, im.WindowFlags_NoScrollWithMouse) or nil
  im.BeginChild1(target.id..varName..dumps(global), im.ImVec2(im.GetContentRegionAvailWidth(), scale*(variable.expanded and 68 or 24)+16), true, flags)
      im.PushStyleVar2(im.StyleVar_FramePadding, im.ImVec2(0, 0))
      im.BeginChild1(target.id..varName..dumps(global).."clicker", im.ImVec2(im.GetContentRegionAvailWidth()-90*scale, endPos.y-prePos.y+3))
      im.EndChild()
@/lua/ge/extensions/flowgraph/nodes/gameplay/timers/simpleTimer.lua
function C:onNodeReset()
print("setting timer back. id" .. dumps(self.pinOut.timerId.value))
  if self.pinOut.timerId.value then
@/lua/vehicle/guistreams.lua
local function setRequiredStreams(state)
  --log('E', '', objectId .. ' - got streams: ' .. dumps(state))
  hasBeenSet = true
@/lua/vehicle/controller/advancedCouplerControl.lua
      log("E", "advancedCouplerControl.toggleGroupConditional", "Wrong amount of data for condition, expected 2:")
      log("E", "advancedCouplerControl.toggleGroupConditional", dumps(c))
      return
      log("W", "advancedCouplerControl.init", "Cid1: " .. (cnp.cid1 or "nil"))
      log("W", "advancedCouplerControl.init", "Cid2: " .. (dumps(cnp.cid2) or "nil"))
      log("W", "advancedCouplerControl.init", "forceCid1: " .. ((cnp.forceCid1 or cnp.cid1) or "nil"))
      log("W", "advancedCouplerControl.init", "forceCid1: " .. ((cnp.forceCid1 or cnp.cid1) or "nil"))
      log("W", "advancedCouplerControl.init", "forceCid2: " .. ((cnp.forceCid2 or dumps(cnp.cid2)) or "nil"))
    end
@/lua/ge/extensions/freeroam/facilities/fuelPrice.lua
  local obj = scenetree.findObject(objName)
  if not obj then log("E","setPrices",dumps(objName).."was not found");return end
  obj:preApply()
        v2.price = price
        log("D","price",dumps(v.id).."\t"..dumps(fuelType) .. "\t".. dumps(price))
        if not v2.displayObjects then goto continueFuelType end
        v2.price = price
        log("D","price",dumps(v.id).."\t"..dumps(fuelType) .. "\t".. dumps(price))
        if not v2.displayObjects then goto continueFuelType end
        v2.price = price
        log("D","price",dumps(v.id).."\t"..dumps(fuelType) .. "\t".. dumps(price))
        if not v2.displayObjects then goto continueFuelType end
            local obj = scenetree.findObject(objName)
            if not obj then log("E","setPrices",dumps(objName).."was not found");return end
            obj:preApply()
@/lua/ge/map.lua
  if not jsonMap or not jsonMap.segments then
    log('W', 'map', 'map file is empty or invalid: '.. dumps(mapFilename))
    return
    local vehicle = getObjectByID(k)
    v.licensePlate = vehicle and vehicle:getDynDataFieldbyName("licenseText", 0) or dumps(k)
  end
@/lua/common/json-ast.lua

    local dumpAst = dumps(res.transient.luaDataRaw)
    local dumpFast = dumps(dataFast)
    local dumpAst = dumps(res.transient.luaDataRaw)
    local dumpFast = dumps(dataFast)
@/lua/vehicle/controller/propAnimation/hPattern.lua
  else
    log("W", "propAnimation/hPattern.init", "Can't find node id for sound location. Specified data: " .. dumps(jbeamData.shiftSoundNode_nodes))
    shiftSoundNodeId = 0
    --gearbox device is the wrong type
    log("E", "propAnimation/hPattern.init", "Relevant gearbox device is the wrong type. Expected: " .. dumps(supportedGearboxTypes) .. ", actual: " .. relevantGearbox.type)
    M.updateGFX = nop
@/gameplay/missionTypes/flowgraph/constructor.lua
  if not self.fgPath then
    log("W", "", "No FG file found for " .. dumps(self.id).."; a default FG file has been provided")
    local newFile = self.missionFolder..'/flowgraph.flow.json'
@/lua/ge/extensions/career/modules/branches/landing.lua
  for _, skill in pairs(career_branches.getSortedBranches()) do
    --dump(branchId .. " is a skill of " .. skill.id.." / "..dumps( skill.parentId))
    if skill.parentId == branchId then
@/lua/ge/extensions/flowgraph/modules/foreachModule.lua
function C:executionStarted()
--  self.mgr:logEvent("This FG is a foreach-Child.","I", "Key: " .. dumps(self.key) .. "  \n  Value: " ..  dumps(self.value))
end
function C:executionStarted()
--  self.mgr:logEvent("This FG is a foreach-Child.","I", "Key: " .. dumps(self.key) .. "  \n  Value: " ..  dumps(self.value))
end
@/lua/ge/extensions/flowgraph/nodes/debug/log.lua
  if type(self.pinIn.value.value) == 'table' then
    msg = dumps(self.pinIn.value.value)
  end
@/lua/ge/extensions/gameplay/rally/loop/rallyLoopManager.lua
      self.fgVariables = mission.fgVariables
      log('D', logTag, 'fgVariables='..dumps(self.fgVariables))
  self.currentMissionIndex = 0
  log('D', logTag, 'Mission sequence built: '..dumps(self.missionSequence))
  -- log('D', logTag, 'Added serviceIn to schedule')
  -- log('D', logTag, 'ServiceIn serviceStallPos from fgVariables: ' .. dumps(stallPos))
  -- log('D', logTag, 'ServiceIn schedule entry: ' .. dumps(self.schedule[#self.schedule]))
  -- log('D', logTag, 'ServiceIn serviceStallPos from fgVariables: ' .. dumps(stallPos))
  -- log('D', logTag, 'ServiceIn schedule entry: ' .. dumps(self.schedule[#self.schedule]))
end
function C:setVehiclePosRot(pos, rot)
  log('D', logTag, 'setVehiclePosRot called with pos='..dumps(pos)..' rot='..dumps(rot))
  self:setExecutionVar('vehiclePos', pos)
function C:setVehiclePosRot(pos, rot)
  log('D', logTag, 'setVehiclePosRot called with pos='..dumps(pos)..' rot='..dumps(rot))
  self:setExecutionVar('vehiclePos', pos)
  local rot = self:getExecutionVar('vehicleRot')
  log('D', logTag, 'getVehiclePosRot called, returning pos='..dumps(pos)..' rot='..dumps(rot))
  if rot then
  local rot = self:getExecutionVar('vehicleRot')
  log('D', logTag, 'getVehiclePosRot called, returning pos='..dumps(pos)..' rot='..dumps(rot))
  if rot then
@/lua/common/jbeam/sections/camera.lua
        if v.type ~= nil then
          --log("W", "", "Renaming deprecated 'type' camera field to 'name': vehicle."..oldName.."::"..dumps(v.type))
          v.name = v.type
    end
    --log("I", "", "Found cameras: "..dumps(vehicle.cameras.onboard))
  end
@/lua/ge/extensions/gameplay/rally/tools/rallyToolbox.lua

          -- log('D', logTag, 'start pos: '..dumps(sp.pos))
          -- local side = finish.normal:cross(vec3(0,0,1)) *(finish.radius-finish.sidePadding.y - midWidth/2)
          -- log('D', logTag, 'finish pos: '..dumps(finish.pos))
          -- local straightLineDist = finish.pos:distance(sp.pos)
          -- local straightLineDist = finish.pos:distance(sp.pos)
          -- log('D', logTag, 'straight line dist: '..dumps(straightLineDist))
          debugDrawer:drawSquarePrism(
@/lua/common/jbeam/links.lua
                    if not rowValue.optional then
                      log('W', "jbeam.prepareLinksDestructive", "link target not found: " .. keyEntry .. "/" .. rowKey .. " > ".. sectionName.."/"..tValue .. " id1:" .. tostring(rowValue.id1) .. ", id2:" .. tostring(rowValue.id2) .. ", partPath:" .. tostring(rowValue.partPath) .. " - DATA DISCARDED".. (rowValue.id1 == nil and rowValue.id2 == nil and rowValue.partPath == nil and ": "..dumps(rowValue) or ""))
                    else
              else
                log('W', "jbeam.prepareLinksDestructive", "link target section not existing: " .. tostring(sectionName) .. ", partPath:" .. tostring(rowValue.partPath) .. " - DATA DISCARDED".. dumps(rowValue))
              end
                            if not rowValue.optional then
                              log('W', "jbeam.prepareLinksDestructive", "link target not found: " .. keyEntry .. "/" .. rowKey .. " > ".. sectionName.."/"..tValue .. " id1:" .. tostring(rowValue.id1) .. ", id2:" .. tostring(rowValue.id2) .. ", partPath: " .. tostring(rowValue.partPath) .. " - DATA DISCARDED".. (rowValue.id1 == nil and rowValue.id2 == nil and rowValue.partPath == nil and ": "..dumps(rowValue) or ""))
                            else
                            if not rowValue.optional then
                              log('W', "jbeam.prepareLinksDestructive", "link target not found: " .. keyEntry .. "/" .. rowKey .. " > ".. sectionName.."/"..cellValue .. " id1:" .. tostring(rowValue.id1) .. ", id2:" .. tostring(rowValue.id2) .. ", partPath: " .. tostring(rowValue.partPath) .. " - DATA DISCARDED".. (rowValue.id1 == nil and rowValue.id2 == nil and rowValue.partPath == nil and ": "..dumps(rowValue) or ""))
                            else
                    else
                      log('W', "jbeam.prepareLinksDestructive", "link target section not existing: " .. tostring(sectionName) .. ", partPath:" .. tostring(rowValue.partPath) .. " - DATA DISCARDED".. dumps(rowValue))
                    end
@/lua/ge/extensions/editor/api/decal.lua
  if decalFileName == defaultFilepath then
    log("E","createDecalTemplate", "Error while getting mission path, decal will be used/saved in "..dumps(decalFileName))
  end
@/lua/ge/extensions/core/input/virtualInput.lua
  if deviceInstance < 0 then
    log("E", "", "No device instance '"..dumps(deviceInstance).." found: "..dumps(info))
    return
  if deviceInstance < 0 then
    log("E", "", "No device instance '"..dumps(deviceInstance).." found: "..dumps(info))
    return
  end
  log('I', '', "Registered device '"..dumps(deviceInstance).."' as vinput: "..dumps(info))
  M.devices[deviceInstance] = info
  end
  log('I', '', "Registered device '"..dumps(deviceInstance).."' as vinput: "..dumps(info))
  M.devices[deviceInstance] = info
  local deviceInfo = M.devices[deviceInstance]
  log('I', '', "Deleted device '"..dumps(deviceInstance).."' as vinput: "..dumps(deviceInfo))
  M.devices[deviceInstance] = nil
  local deviceInfo = M.devices[deviceInstance]
  log('I', '', "Deleted device '"..dumps(deviceInstance).."' as vinput: "..dumps(deviceInfo))
  M.devices[deviceInstance] = nil
@/lua/ge/extensions/freeroam/bigMapPoiProvider.lua
          if not groupData[tag] then
            log("W","","Unknown group tag: " .. dumps(tag) .. " for poi " .. dumps(poi.id))
            groupData[tag] = {label = tag, elements = {}, visible = M.getGroupVisibility(tag)}
          if not groupData[tag] then
            log("W","","Unknown group tag: " .. dumps(tag) .. " for poi " .. dumps(poi.id))
            groupData[tag] = {label = tag, elements = {}, visible = M.getGroupVisibility(tag)}
@/lua/ge/extensions/freeroam/freeroamConfigurator.lua
  if not tile then
    log("W", "freeroamConfigurator", "Failed to get vehicle details: " .. dumps(currentConfiguration.vehicle) .. ", defaulting to pickup")
    currentConfiguration.vehicle = deepcopy(defaultVehicle)
@/lua/vehicle/extensions/test/ffbCalibration.lua
local function start(mode, fastmotion)
  log("I", "", " >>> VLUA FFB calibration started in mode: '"..dumps(mode).."'")
  -- initialize variables
  else
    log("E", "", "Unknown mode: "..dumps(M.mode))
    M.finish()
@/lua/ge/extensions/gameplay/drift/freeroam/driftSpots.lua
  hasAlreadyShownNewRecord = false
  log("I","","Started freeroam drift zone: " .. dumps(line.id))
  gameplay_drift_general.setContext("inFreeroamChallenge")
  if not line then
    log("E","","Could not find drift line with id " .. dumps(lineId))
    return
@/lua/vehicle/beamstate.lua
local function exportCouplerData(nodeid, dataList)
  --print(obj:getId() .. "<-exportCouplerData(" .. nodeid .. "," .. dumps(dataList) .. ")")
  transmitCouplers[nodeid] = attachedCouplers[nodeid] or {}
local function importCouplerData(nodeId, data)
  --print(obj:getId() .. "<-importCouplerData(" .. nodeId .. "," .. dumps(data) .. ")")
@/lua/ge/extensions/editor/missionEditor/careerSetup.lua
  end
  im.tooltip("Paste Rewards: " ..dumps(self.copiedRewards))
  if not self.copiedRewards then
@/lua/ge/client/postFx/utils.lua
    if filepath == nil or filepath == "" then return end
    log('I','postfx','load preset callback.....'..dumps(data))
    lastUsedFolder = data.path
    if filepath == nil or filepath == "" then return end
    log('I','postfx','save preset callback.....'..dumps(data))
    lastUsedFolder = data.path
@/lua/ge/extensions/editor/assetBrowser.lua
      end
      file.inspectorData.rawdata = dumps(file.inspectorData.data)
    elseif file.type == "part configuration" or file.type == "jbeam" then
      file.inspectorData.data = jsonReadFile(file.sourcefilename or file.path)
      file.inspectorData.rawdata = dumps(file.inspectorData.data)
    elseif file.type == "materials" then
      file.inspectorData.data = jsonReadFile(file.sourcefilename or file.path)
      file.inspectorData.rawdata = dumps(file.inspectorData.data)
      file.inspectorData.materials = {}
@/lua/ge/extensions/editor/vehicleEditor/staticEditor/vePartTree.lua
      vEditor.propertyTableEditTarget = node
      --print('editing ... ' .. dumps(node))
    end
@/lua/ge/extensions/editor/flowgraph/legend.lua
  im.EndTabBar()
  im.Text(dumps(itms))
@/lua/ge/extensions/core/camera.lua
  if success then
    log("D","", "Camera switched to "..dumps(camConfig.name))
    local oldCam = vdata.cameras[vdata.focusedCamName]
  end
  log("E", "", "Unable to switch to requested camera: '"..dumps(camName).."'")
  return false
  if not veh then
    log("E", "", "Player #"..dumps(player).." is not seated in a vehicle")
    return false
  if not veh then
    log("E", "", "Player #"..dumps(player).." is not seated in a vehicle")
    return false
        else
          log("E", "", "Incorrectly defined camera, 'order' field is not numeric: "..dumps(type(order)))
        end
      log("E", "", "Invalid camera calculations detected (should only happen after a vehicle instability)")
      log("D", "", "Attempting to fix invalid camera data: "..dumps(data))
    end
      if fallbackCam then
        log("E", "", "Vehicle cam \""..dumps(vdata.focusedCamName).."\" not found. Falling back to \""..dumps(fallbackCamName).."\"")
        setByName(0, fallbackCamName)
      if fallbackCam then
        log("E", "", "Vehicle cam \""..dumps(vdata.focusedCamName).."\" not found. Falling back to \""..dumps(fallbackCamName).."\"")
        setByName(0, fallbackCamName)
      else
        log("E", "", "Vehicle cam \""..dumps(vdata.focusedCamName).."\" not found. Fallback cam \""..dumps(fallbackCamName).."\" not found either. Falling back to free camera")
        commands.setFreeCamera()
      else
        log("E", "", "Vehicle cam \""..dumps(vdata.focusedCamName).."\" not found. Fallback cam \""..dumps(fallbackCamName).."\" not found either. Falling back to free camera")
        commands.setFreeCamera()
  else
    log("E", "", "Unrecognized parameter camId: "..dumps(camId))
  end
  if not cam then
    log("E", "", "Camera "..dumps(globalCameraName).." not found, cannot call its "..dumps(functionName).." function")
    return
  if not cam then
    log("E", "", "Camera "..dumps(globalCameraName).." not found, cannot call its "..dumps(functionName).." function")
    return
  if not cam[functionName] then
    log("E", "", "Camera "..dumps(globalCameraName).." function "..dumps(functionName).." is invalid, cannot call it")
    return
  if not cam[functionName] then
    log("E", "", "Camera "..dumps(globalCameraName).." function "..dumps(functionName).." is invalid, cannot call it")
    return
    else
      log('E', 'camera', 'camera not found for trigger: ' .. dumps(trigger.cameraOnEnter))
    end
@/lua/ge/extensions/core/cameraModes/relative.lua
        else
          log("W","","Relative camera #"..dumps(k)..": missing node name: "..dumps(cr))
        end
        else
          log("W","","Relative camera #"..dumps(k)..": missing node name: "..dumps(cr))
        end
@/lua/ge/extensions/gameplay/sites/zone.lua
      local steps = math.max(math.floor((dist-0.1) / (maxStep)), 1)
      --print("from: " .. dumps(cur) .. " to " .. dumps(nex))
      --print(string.format("Distance: %0.2f, steps: %d", dist, steps))
      local steps = math.max(math.floor((dist-0.1) / (maxStep)), 1)
      --print("from: " .. dumps(cur) .. " to " .. dumps(nex))
      --print(string.format("Distance: %0.2f, steps: %d", dist, steps))
        table.insert(newVerts, {pos = p})
        --print("Adding: "..dumps(p))
      end
@/lua/vehicle/extensions/straightLine.lua
  targetPosOffset = vec3(0, 1, 0)
  print("Targetpos: " .. dumps(baseTargetPos))
@/lua/ge/extensions/editor/missionEditor/general.lua
    im.Text("Description is a table, editing is not supported!")
    im.Text(dumps(self.mission.description))
  end
@/lua/ge/extensions/editor/resourceChecker/resourceUtil.lua
    local m = scenetree.findObject(v)
    if not m then log("E", "", "TSStatic object broken "..dumps(v))
    else
    local m = scenetree.findObject(v)
    if not m then log("E", "", "ForestItem object broken "..dumps(v))
    else
    local m = scenetree.findObject(v)
    if not m then log("E", "", "TerrainBlock object broken "..dumps(v))
    else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "ForestItem object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "TSStatic object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "TerrainBlock object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "GroundPlane object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "GroundCover object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "DecalRoad object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "MeshRoad object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "DecalData object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "Prefab object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "ForestItem object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "TSStatic object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "TerrainBlock object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "GroundPlane object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "GroundCover object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "DecalRoad object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "MeshRoad object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "DecalData object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "Prefab object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "TSStatic object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "TSStatic object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "ForestItem object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "GroundCover object broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "Material broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "TerrainMaterial broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "WaterPlane broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "WaterBlock broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "River broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "CloudLayer broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "ScatterSky broken "..dumps(v))
      else
      local m = scenetree.findObject(v)
      if not m then log("E", "", "Cubemap broken "..dumps(v))
      else
@/lua/ge/extensions/core/settings/graphic.lua
  updateDisplayInfoWindowRegion()
  -- log('I','','graphicInformation: '..dumps(graphicInformation))
end
      local levelData = overallQualityPresets[value]
      -- log('I','','Overall quality to be applied is '..value..' : '..dumps(levelData))
      for k,v in pairs(levelData) do
      end
      -- log('I','','building preset keys: '..dumps(presetKeys))
    end,

  log('D', 'graphic', 'Available Video Modes : '..dumps(graphicsOptions.GraphicDisplayResolutions.getModes().keys))
@/lua/ge/extensions/core/online.lua
  --print('=== downloadURL ===')
  --print(' uri = ' .. dumps(uri) .. ' / ' .. type(uri))
  --print(' finishCallback = ' .. dumps(finishCallback) .. ' / ' .. type(finishCallback))
  --print(' uri = ' .. dumps(uri) .. ' / ' .. type(uri))
  --print(' finishCallback = ' .. dumps(finishCallback) .. ' / ' .. type(finishCallback))
  --print(' postDataTbl = ' .. dumps(postDataTbl) .. ' / ' .. type(postDataTbl))
  --print(' finishCallback = ' .. dumps(finishCallback) .. ' / ' .. type(finishCallback))
  --print(' postDataTbl = ' .. dumps(postDataTbl) .. ' / ' .. type(postDataTbl))
  --print(' outfile = ' .. dumps(outfile) .. ' / ' .. type(outfile))
  --print(' postDataTbl = ' .. dumps(postDataTbl) .. ' / ' .. type(postDataTbl))
  --print(' outfile = ' .. dumps(outfile) .. ' / ' .. type(outfile))
  --print(' reqType = ' .. dumps(reqType) .. ' / ' .. type(reqType))
  --print(' outfile = ' .. dumps(outfile) .. ' / ' .. type(outfile))
  --print(' reqType = ' .. dumps(reqType) .. ' / ' .. type(reqType))
  --print(' progressCallback = ' .. dumps(progressCallback) .. ' / ' .. type(progressCallback))
  --print(' reqType = ' .. dumps(reqType) .. ' / ' .. type(reqType))
  --print(' progressCallback = ' .. dumps(progressCallback) .. ' / ' .. type(progressCallback))
  --print(' isJson = ' .. dumps(isJson) .. ' / ' .. type(isJson))
  --print(' progressCallback = ' .. dumps(progressCallback) .. ' / ' .. type(progressCallback))
  --print(' isJson = ' .. dumps(isJson) .. ' / ' .. type(isJson))
  d.priv.authorizationHeader = authorizationHeader
  -- print('calling API: ' .. tostring(reqType) .. ' | request: ' .. dumps(d))
    log('E', 'online', 'unknown request completed: '..tostring(id))
    log('E', 'online', 'curlCode= '..dumps(curlCode))
    log('E', 'online', 'curlErrorStr= '..dumps(curlErrorStr))
    log('E', 'online', 'curlCode= '..dumps(curlCode))
    log('E', 'online', 'curlErrorStr= '..dumps(curlErrorStr))
    log('E', 'online', 'effectiveURL= '..dumps(effectiveURL))
    log('E', 'online', 'curlErrorStr= '..dumps(curlErrorStr))
    log('E', 'online', 'effectiveURL= '..dumps(effectiveURL))
    return
  --if responseCode ~= 200 then
  --  log('E', 'online', 'unable to communicate with API: ' .. dumps(r, responseCode, responseBuffer, responseHeaders, responseData))
  --end
local function callbackSecureCommCppProgress(id, dltotal, dlnow, ultotal, ulnow, dlspeed, ulspeed, time)
  --log('E', 'online', 'callbackSecureCommCppProgress: ' .. dumps(id, dltotal, dlnow, ultotal, ulnow, dlspeed, ulspeed, time))
  local r = requests[id]
local function onInstructions(data)
  --log('D', 'online.onInstructions', 'got instructions: ' .. dumps(data))
  if not data.origin or data.origin ~= 'gameauth' or type(data.cmds) ~= 'table' then
    log('E', 'online.onInstructions', 'unknown instructions. Discarded: ' .. dumps(data))
    return
    else
      log('E', 'online.onInstructions', 'unknown instruction: ' .. dumps(cmd))
    end
@/lua/ge/extensions/gameplay/rally/driveline/drivelineRoute.lua
  -- log('D', logTag, string.format("dist: %s, stableId: %s", dist, stableId))
  -- log('D', logTag, "item: " .. dumps(item))
  local itemIdx = item.idx
@/lua/ge/extensions/flowgraph/variableStorage.lua
    else
      log("E", "VariableStorage", "Failed to get value of " .. dumps(name) .. " " .. self:getName())
    end
    else
      log("E", "VariableStorage", "Failed to get full value of " .. dumps(name) .. " " .. self:getName())
    end
  if self.variables[name] ~= nil then
    log("E", "VariableStorage", "Failed to add variable: " .. dumps(name) .. " / " ..  dumps(value) .. " to " .. self:getName())
    return false
  if self.variables[name] ~= nil then
    log("E", "VariableStorage", "Failed to add variable: " .. dumps(name) .. " / " ..  dumps(value) .. " to " .. self:getName())
    return false
  if not self.variables[name] then
    log("E", "VariableStorage", "Tried setting MergeStart value of nonexistent variable " .. dumps(name) .. " " .. self:getName())
    return false
  if not self.variables[name] then
    log("E", "VariableStorage", "Tried updating type of nonexistent variable " .. dumps(name) .. " " .. self:getName())
    return false
  if self.variables[name].fixedType then
    log("E", "VariableStorage", "Tried updating type of fixed-type variable " .. dumps(name) .. " " .. self:getName())
    return false
  if not self.variables[name] then
    log("E", "VariableStorage", "Tried setting fixed-type-property of nonexistent variable " .. dumps(name) .. " " .. self:getName())
    return false
  if not self.variables[name] then
    log("E", "VariableStorage", "Tried setting monitor-property of nonexistent variable " .. dumps(name) .. " " .. self:getName())
    return false
  if not self.variables[name] then
    log("E", "VariableStorage", "Tried setting keep-after-stop-property of nonexistent variable " .. dumps(name) .. " " .. self:getName())
    return false
  if not self.variables[name] then
    log("E", "VariableStorage", "Tried removing nonexistent variable " .. dumps(name) .. " " .. self:getName())
    return false
  if self.variables[name].undeletable then
    log("E", "VariableStorage", "Tried removing undeletable variable " .. dumps(name) .. " " .. self:getName())
    return false
  if not self.variables[name] then
    log("E", "VariableStorage", "Tried changing base value of nonexistent variable " .. dumps(name) .. " " .. self:getName())
    return false
  if not fg_utils.isVariableCompatible(value, self.variables[name].type) then
    log("E", "VariableStorage", "Tried changing base value variable, but type mismatch (old:"..self.variables[name].type..", new:"..fg_utils.getVariableType(value)..") for variable " .. dumps(name) .. " " .. self:getName())
    return false
  if not self.variables[name] then
    log("E", "VariableStorage", "Tried changing instant value of nonexistent variable " .. dumps(name) .. " " .. self:getName())
    return false
  if not self.variables[name] then
    log("E", "VariableStorage", "Tried changing value of nonexistent variable " .. dumps(name) .. " " .. self:getName())
    return false
  if value == nil then
    log("E", "VariableStorage", "Tried changing value to invalid nil for variable " .. dumps(name) .. " " .. self:getName())
    return false
@/lua/common/jbeam/sections/vropes.lua
    if prop.name == propName then
      --dump{ "Prop found: " .. tostring(propName) .. " with id: " .. tostring(prop.cid) .. dumps(prop) }
      return prop.cid
@/lua/ge/extensions/flowgraph/nodes/scene/spawnPrefab.lua
    if string.endswith(file, '.prefab') then
      log("W","","Loading a .prefab file; please upgrade to .prefab.json. " .. dumps(file),{type = "node", node = self})
    end
@/lua/ge/extensions/editor/missionEditor/progressSetup.lua
      end
      im.Text(dumps(self.missionInstance.saveData or {}))
    else
        -- display char limit
        im.Text("(char limit: "..dumps(self._text[2]/8-2)..")")
      end
@/lua/ge/extensions/editor/flowgraph/properties.lua
    for i, ht in ipairs(pin.hardTemplates or {}) do
      if im.Selectable1(ht.label or dumps(ht.value)) then
        selected = ht.value
          -- History
          self.fgEditor.addHistory("Changed generic property of node ("..dumps(kc)..")")
        end
          -- History
          self.fgEditor.addHistory("Changed generic property of node ("..dumps(kc)..")")
        end
@/lua/ge/extensions/editor/missionEditor/genericTypeData.lua
  if not FS:fileExists(luaPath) then
    log("W", "", "found no editor for mission type " .. missionType ..": "..dumps(luaPath))
  else
    if not self.missionTypeEditors[missionType] then
      log("E", "", "could not load editor for mission type " .. missionType .. ": "..dumps(reqPath))
    end
          im.Text(elem.fieldName)
          im.tooltip(elem.fieldName .." with type: " .. dumps(elem.type))
          im.NextColumn()
          im.Text(elem.fieldName)
          im.tooltip(elem.fieldName .." with type: " .. dumps(elem.typeInFG) .. " but should be: " .. dumps(elem.type))
          im.NextColumn()
          im.Text(elem.fieldName)
          im.tooltip(elem.fieldName .." with type: " .. dumps(elem.typeInFG) .. " but should be: " .. dumps(elem.type))
          im.NextColumn()
          im.Text(elem.fieldName)
          im.tooltip(elem.fieldName .." with type: " .. dumps(elem.type))
          im.NextColumn()
          im.Text(elem.name)
          im.tooltip(elem.name .." with type: " .. dumps(elem.type))
        end
    end
    im.tooltip(dumps(self.mtdIssues))
  else
      end
      im.Text(dumps(self.mission.missionTypeData or {}))
    else
        -- display char limit
        im.Text("(char limit: "..dumps(self._text[2]/8-2)..")")
      end
@/lua/vehicle/extensions/tech/CANBus/ButtonBox.lua
local function virtualInputCallback(deviceInstance, deviceInfo)
  log("I", "ButtonBox.virtualInputCallback", string.format("Received virtual input callback with deviceInstance %d and device info %s", deviceInstance or -1, dumps(deviceInfo)))
@/lua/ge/extensions/career/modules/branches/leagues.lua
          if leaguesById[league.id] then
            log("E","","League already exists: " .. league.id .. " (from file " .. dumps(file)..") Ignored.")
          else
      if not m then
        log("E","","Mission does not exist: " .. dumps(mId) .. " in league " .. dumps(id)..". Removed from league.")
      end
      if not m then
        log("E","","Mission does not exist: " .. dumps(mId) .. " in league " .. dumps(id)..". Removed from league.")
      end
        else
          log("E","","Mission is used in more than one league: " .. dumps(mId) .. " in league " .. dumps(missionsUsedInLeagues[mId]) .. " and " .. dumps(id))
        end
        else
          log("E","","Mission is used in more than one league: " .. dumps(mId) .. " in league " .. dumps(missionsUsedInLeagues[mId]) .. " and " .. dumps(id))
        end
        else
          log("E","","Mission is used in more than one league: " .. dumps(mId) .. " in league " .. dumps(missionsUsedInLeagues[mId]) .. " and " .. dumps(id))
        end
    local fallbackLeague = getFallbackLeague(skillId, list)
    --log("I", "", string.format("Creating fallback league for skill '%s' with missions: %s", skillId, dumps(list)))
    leaguesById[fallbackLeagueId] = fallbackLeague
      if not spot then
        log("E","","Drift spot " .. dumps(dsId) .. " listed in league " .. dumps(id).. " does not exist.")
      else
      if not spot then
        log("E","","Drift spot " .. dumps(dsId) .. " listed in league " .. dumps(id).. " does not exist.")
      else
        if spot._isInLeague then
          log("E","","Drift spot " .. dumps(dsId) .. " is listed in more than one league! " .. dumps(spot._isInLeague) ..  " and " .. dumps(id))
        end
        if spot._isInLeague then
          log("E","","Drift spot " .. dumps(dsId) .. " is listed in more than one league! " .. dumps(spot._isInLeague) ..  " and " .. dumps(id))
        end
        if spot._isInLeague then
          log("E","","Drift spot " .. dumps(dsId) .. " is listed in more than one league! " .. dumps(spot._isInLeague) ..  " and " .. dumps(id))
        end
@/lua/vehicle/thrusters.lua
        if not invalidThrusterControlWarned then
          log("E", "", "Thruster with id1="..dumps(thruster.id1).." and id2="..dumps(thruster.id2).." in vehicle "..dumps(vehiclePath).." tried to use an invalid control="..dumps(thruster.control)..". The vehicle creator should instead use vehicle-specific bindings (or an electrics channel) to control this thruster")
          invalidThrusterControlWarned = true
        if not invalidThrusterControlWarned then
          log("E", "", "Thruster with id1="..dumps(thruster.id1).." and id2="..dumps(thruster.id2).." in vehicle "..dumps(vehiclePath).." tried to use an invalid control="..dumps(thruster.control)..". The vehicle creator should instead use vehicle-specific bindings (or an electrics channel) to control this thruster")
          invalidThrusterControlWarned = true
        if not invalidThrusterControlWarned then
          log("E", "", "Thruster with id1="..dumps(thruster.id1).." and id2="..dumps(thruster.id2).." in vehicle "..dumps(vehiclePath).." tried to use an invalid control="..dumps(thruster.control)..". The vehicle creator should instead use vehicle-specific bindings (or an electrics channel) to control this thruster")
          invalidThrusterControlWarned = true
        if not invalidThrusterControlWarned then
          log("E", "", "Thruster with id1="..dumps(thruster.id1).." and id2="..dumps(thruster.id2).." in vehicle "..dumps(vehiclePath).." tried to use an invalid control="..dumps(thruster.control)..". The vehicle creator should instead use vehicle-specific bindings (or an electrics channel) to control this thruster")
          invalidThrusterControlWarned = true
@/lua/ge/extensions/core/vehiclePaints.lua
  if type(paintKeyOrPaint) == 'string' then
    debugLog("resolving paint " .. dumps(paintKeyOrPaint))
    paint = modelPaints[paintKeyOrPaint]
  elseif type(paintKeyOrPaint) == 'table' then
    debugLog("resolving paint " .. dumps(paintKeyOrPaint.name))
    paint = paintKeyOrPaint
  if paint then
    debugLog("paint found: " .. dumps(paint.name))
    if not modelPaints[paint.name] then
    if not modelPaints[paint.name] then
      debugLog("added paint " .. dumps(paint.name) .. " to model. This paint was explicitly defined")
      paint.class = 'custom'
      if paint then
        debugLog("paint found: " .. dumps(paint.name) .. ". Paint was already added to the model")
        return paint
      paintIdsToPaintNames[paintKeyOrPaint] = paint.name
      debugLog("adding paint to model: " .. dumps(paint.id) .. "/" .. dumps(paint.name) .. " (from library) ")
      return paint, true
      paintIdsToPaintNames[paintKeyOrPaint] = paint.name
      debugLog("adding paint to model: " .. dumps(paint.id) .. "/" .. dumps(paint.name) .. " (from library) ")
      return paint, true
    if paints then
      log("W", "vehicles", "paint " .. dumps(paintKeyOrPaint) .. " from config " .. dumps(debugModelKey) .. "/" .. dumps(debugConfigKey) .. " not found in the model file. But found by name in the paint library.. Please use the id instead: " .. dumps(paints[1].id) .. " or add the paint to the model file.")
      paint = deepcopy(paints[1])
    if paints then
      log("W", "vehicles", "paint " .. dumps(paintKeyOrPaint) .. " from config " .. dumps(debugModelKey) .. "/" .. dumps(debugConfigKey) .. " not found in the model file. But found by name in the paint library.. Please use the id instead: " .. dumps(paints[1].id) .. " or add the paint to the model file.")
      paint = deepcopy(paints[1])
    if paints then
      log("W", "vehicles", "paint " .. dumps(paintKeyOrPaint) .. " from config " .. dumps(debugModelKey) .. "/" .. dumps(debugConfigKey) .. " not found in the model file. But found by name in the paint library.. Please use the id instead: " .. dumps(paints[1].id) .. " or add the paint to the model file.")
      paint = deepcopy(paints[1])
    if paints then
      log("W", "vehicles", "paint " .. dumps(paintKeyOrPaint) .. " from config " .. dumps(debugModelKey) .. "/" .. dumps(debugConfigKey) .. " not found in the model file. But found by name in the paint library.. Please use the id instead: " .. dumps(paints[1].id) .. " or add the paint to the model file.")
      paint = deepcopy(paints[1])
    if not multiPaintSetup then
      log("E", "vehicles", "multiPaintSetup " .. dumps(multiPaintSetupKeyOrMultiPaintSetup) .. " not found in any paint library or model " ..dumps(debugModelKey) .. " " .. dumps(debugConfigKey))
      return nil
    if not multiPaintSetup then
      log("E", "vehicles", "multiPaintSetup " .. dumps(multiPaintSetupKeyOrMultiPaintSetup) .. " not found in any paint library or model " ..dumps(debugModelKey) .. " " .. dumps(debugConfigKey))
      return nil
    if not multiPaintSetup then
      log("E", "vehicles", "multiPaintSetup " .. dumps(multiPaintSetupKeyOrMultiPaintSetup) .. " not found in any paint library or model " ..dumps(debugModelKey) .. " " .. dumps(debugConfigKey))
      return nil

  debugLog("resolving multiPaintSetup: " .. dumps(multiPaintSetupWithNames.name))
  for i = 1, 3 do
      else
        log("E", "vehicles", "paint " .. dumps(multiPaintSetup[defaultPaintKey]) .. " not found in default paint list or any library for model " .. dumps(key) .. ", used as " ..dumps(defaultPaintKey) .. " in multiPaintSetup " .. dumps(multiPaintSetup.name or "unknown"))
      end
      else
        log("E", "vehicles", "paint " .. dumps(multiPaintSetup[defaultPaintKey]) .. " not found in default paint list or any library for model " .. dumps(key) .. ", used as " ..dumps(defaultPaintKey) .. " in multiPaintSetup " .. dumps(multiPaintSetup.name or "unknown"))
      end
      else
        log("E", "vehicles", "paint " .. dumps(multiPaintSetup[defaultPaintKey]) .. " not found in default paint list or any library for model " .. dumps(key) .. ", used as " ..dumps(defaultPaintKey) .. " in multiPaintSetup " .. dumps(multiPaintSetup.name or "unknown"))
      end
      else
        log("E", "vehicles", "paint " .. dumps(multiPaintSetup[defaultPaintKey]) .. " not found in default paint list or any library for model " .. dumps(key) .. ", used as " ..dumps(defaultPaintKey) .. " in multiPaintSetup " .. dumps(multiPaintSetup.name or "unknown"))
      end
    else
      debugLog("paint " .. dumps(multiPaintSetup[defaultPaintKey]) .. " not found in default paint list or any library for model " .. dumps(key) .. ", used as " ..dumps(defaultPaintKey) .. " in multiPaintSetup " .. dumps(multiPaintSetup.name or "unknown"))
    end
    else
      debugLog("paint " .. dumps(multiPaintSetup[defaultPaintKey]) .. " not found in default paint list or any library for model " .. dumps(key) .. ", used as " ..dumps(defaultPaintKey) .. " in multiPaintSetup " .. dumps(multiPaintSetup.name or "unknown"))
    end
    else
      debugLog("paint " .. dumps(multiPaintSetup[defaultPaintKey]) .. " not found in default paint list or any library for model " .. dumps(key) .. ", used as " ..dumps(defaultPaintKey) .. " in multiPaintSetup " .. dumps(multiPaintSetup.name or "unknown"))
    end
    else
      debugLog("paint " .. dumps(multiPaintSetup[defaultPaintKey]) .. " not found in default paint list or any library for model " .. dumps(key) .. ", used as " ..dumps(defaultPaintKey) .. " in multiPaintSetup " .. dumps(multiPaintSetup.name or "unknown"))
    end
  --debugLog = model.key == 'simple_traffic' and debugLogFun or nop
  debugLog("setupPaints for model " .. dumps(model.key))
    if paintFromLibrary then
      debugLog("adding paint from model.libraryPaints to model: " .. dumps(paintFromLibrary.id) .. "/" .. dumps(paintFromLibrary.name) .. " (from library) ")
      tableMerge(paintFromLibrary, paint)
    if paintFromLibrary then
      debugLog("adding paint from model.libraryPaints to model: " .. dumps(paintFromLibrary.id) .. "/" .. dumps(paintFromLibrary.name) .. " (from library) ")
      tableMerge(paintFromLibrary, paint)
    else
      log('E', 'vehicles', "paint " .. dumps(paint.id) .. " not found in any paint library for model " .. dumps(key))
    end
    else
      log('E', 'vehicles', "paint " .. dumps(paint.id) .. " not found in any paint library for model " .. dumps(key))
    end
      for _, paint in pairs(collection) do
        debugLog("adding paint from model.paintCollections to model: " .. dumps(paint.id) .. "/" .. dumps(paint.name) .. " (from collection " .. dumps(collectionId) .. ")")
        tableMerge(paint, paintsByIdCache[paint.id])
      for _, paint in pairs(collection) do
        debugLog("adding paint from model.paintCollections to model: " .. dumps(paint.id) .. "/" .. dumps(paint.name) .. " (from collection " .. dumps(collectionId) .. ")")
        tableMerge(paint, paintsByIdCache[paint.id])
      for _, paint in pairs(collection) do
        debugLog("adding paint from model.paintCollections to model: " .. dumps(paint.id) .. "/" .. dumps(paint.name) .. " (from collection " .. dumps(collectionId) .. ")")
        tableMerge(paint, paintsByIdCache[paint.id])
    else
      log('E', 'vehicles', "paint collection " .. dumps(collectionId) .. " not found for model " .. dumps(key))
    end
    else
      log('E', 'vehicles', "paint collection " .. dumps(collectionId) .. " not found for model " .. dumps(key))
    end
  if not defaultMultiPaintSetup then
    debugLog("no defaultMultiPaintSetup found for model " .. dumps(model.key)..". Using defaultPaintName1, defaultPaintName2, defaultPaintName3: " .. dumps(model.defaultPaintName1) .. ", " .. dumps(model.defaultPaintName2) .. ", " .. dumps(model.defaultPaintName3))
    defaultMultiPaintSetup = {
  if not defaultMultiPaintSetup then
    debugLog("no defaultMultiPaintSetup found for model " .. dumps(model.key)..". Using defaultPaintName1, defaultPaintName2, defaultPaintName3: " .. dumps(model.defaultPaintName1) .. ", " .. dumps(model.defaultPaintName2) .. ", " .. dumps(model.defaultPaintName3))
    defaultMultiPaintSetup = {
  if not defaultMultiPaintSetup then
    debugLog("no defaultMultiPaintSetup found for model " .. dumps(model.key)..". Using defaultPaintName1, defaultPaintName2, defaultPaintName3: " .. dumps(model.defaultPaintName1) .. ", " .. dumps(model.defaultPaintName2) .. ", " .. dumps(model.defaultPaintName3))
    defaultMultiPaintSetup = {
  if not defaultMultiPaintSetup then
    debugLog("no defaultMultiPaintSetup found for model " .. dumps(model.key)..". Using defaultPaintName1, defaultPaintName2, defaultPaintName3: " .. dumps(model.defaultPaintName1) .. ", " .. dumps(model.defaultPaintName2) .. ", " .. dumps(model.defaultPaintName3))
    defaultMultiPaintSetup = {
    if config.defaultPaintName1 and config.defaultMultiPaintSetup then
      log("W","", model.key .. " " .. dumps(config.key) .. ": defaultPaintName1 overriden by defaultMultiPaintSetup")
    end
      }
      debugLog("no defaultMultiPaintSetup found for config " .. dumps(config.key)..". Using defaultPaintName1, defaultPaintName2, defaultPaintName3: " .. dumps(defaultMultiPaintSetup.paint1) .. ", " .. dumps(defaultMultiPaintSetup.paint2) .. ", " .. dumps(defaultMultiPaintSetup.paint3))
    end
      }
      debugLog("no defaultMultiPaintSetup found for config " .. dumps(config.key)..". Using defaultPaintName1, defaultPaintName2, defaultPaintName3: " .. dumps(defaultMultiPaintSetup.paint1) .. ", " .. dumps(defaultMultiPaintSetup.paint2) .. ", " .. dumps(defaultMultiPaintSetup.paint3))
    end
      }
      debugLog("no defaultMultiPaintSetup found for config " .. dumps(config.key)..". Using defaultPaintName1, defaultPaintName2, defaultPaintName3: " .. dumps(defaultMultiPaintSetup.paint1) .. ", " .. dumps(defaultMultiPaintSetup.paint2) .. ", " .. dumps(defaultMultiPaintSetup.paint3))
    end
      }
      debugLog("no defaultMultiPaintSetup found for config " .. dumps(config.key)..". Using defaultPaintName1, defaultPaintName2, defaultPaintName3: " .. dumps(defaultMultiPaintSetup.paint1) .. ", " .. dumps(defaultMultiPaintSetup.paint2) .. ", " .. dumps(defaultMultiPaintSetup.paint3))
    end
  if model.key == 'pickup' then
    log("I", "vehicles", "model " .. dumps(key) .. "Factory paints: " .. table.concat(model.factoryPaintNames, ", "))
    log("I", "vehicles", "model " .. dumps(key) .. "Custom paints: " .. table.concat(model.customPaintNames, ", "))
    log("I", "vehicles", "model " .. dumps(key) .. "Factory paints: " .. table.concat(model.factoryPaintNames, ", "))
    log("I", "vehicles", "model " .. dumps(key) .. "Custom paints: " .. table.concat(model.customPaintNames, ", "))
  end
  if debugLog ~= nop then
    debugLog("model " .. dumps(key) .. " has " .. #allPaintResults .. " paint results with total probability " .. totalProbability)
    for _, paintResult in pairs(allPaintResults) do
    for _, paintResult in pairs(allPaintResults) do
      debugLog("paint result: " .. dumps(paintResult.type) .. ", " .. dumps(paintResult.paintName1) .. ", " .. dumps(paintResult.paintName2) .. ", " .. dumps(paintResult.paintName3) .. ", probability: " .. dumps(paintResult.probability))
    end
    for _, paintResult in pairs(allPaintResults) do
      debugLog("paint result: " .. dumps(paintResult.type) .. ", " .. dumps(paintResult.paintName1) .. ", " .. dumps(paintResult.paintName2) .. ", " .. dumps(paintResult.paintName3) .. ", probability: " .. dumps(paintResult.probability))
    end
    for _, paintResult in pairs(allPaintResults) do
      debugLog("paint result: " .. dumps(paintResult.type) .. ", " .. dumps(paintResult.paintName1) .. ", " .. dumps(paintResult.paintName2) .. ", " .. dumps(paintResult.paintName3) .. ", probability: " .. dumps(paintResult.probability))
    end
    for _, paintResult in pairs(allPaintResults) do
      debugLog("paint result: " .. dumps(paintResult.type) .. ", " .. dumps(paintResult.paintName1) .. ", " .. dumps(paintResult.paintName2) .. ", " .. dumps(paintResult.paintName3) .. ", probability: " .. dumps(paintResult.probability))
    end
    for _, paintResult in pairs(allPaintResults) do
      debugLog("paint result: " .. dumps(paintResult.type) .. ", " .. dumps(paintResult.paintName1) .. ", " .. dumps(paintResult.paintName2) .. ", " .. dumps(paintResult.paintName3) .. ", probability: " .. dumps(paintResult.probability))
    end
    if debugLog ~= nop  and config.key == 'van_delivery' then
      debugLog("config " .. dumps(config.key) .. " has " .. #allPaintResults .. " paint results with total probability " .. totalProbability)
      for _, paintResult in pairs(allPaintResults) do
      for _, paintResult in pairs(allPaintResults) do
        debugLog("paint result: " .. dumps(paintResult.type) .. ", " .. dumps(paintResult.paintName1) .. ", " .. dumps(paintResult.paintName2) .. ", " .. dumps(paintResult.paintName3) .. ", probability: " .. dumps(paintResult.probability))
      end
      for _, paintResult in pairs(allPaintResults) do
        debugLog("paint result: " .. dumps(paintResult.type) .. ", " .. dumps(paintResult.paintName1) .. ", " .. dumps(paintResult.paintName2) .. ", " .. dumps(paintResult.paintName3) .. ", probability: " .. dumps(paintResult.probability))
      end
      for _, paintResult in pairs(allPaintResults) do
        debugLog("paint result: " .. dumps(paintResult.type) .. ", " .. dumps(paintResult.paintName1) .. ", " .. dumps(paintResult.paintName2) .. ", " .. dumps(paintResult.paintName3) .. ", probability: " .. dumps(paintResult.probability))
      end
      for _, paintResult in pairs(allPaintResults) do
        debugLog("paint result: " .. dumps(paintResult.type) .. ", " .. dumps(paintResult.paintName1) .. ", " .. dumps(paintResult.paintName2) .. ", " .. dumps(paintResult.paintName3) .. ", probability: " .. dumps(paintResult.probability))
      end
      for _, paintResult in pairs(allPaintResults) do
        debugLog("paint result: " .. dumps(paintResult.type) .. ", " .. dumps(paintResult.paintName1) .. ", " .. dumps(paintResult.paintName2) .. ", " .. dumps(paintResult.paintName3) .. ", probability: " .. dumps(paintResult.probability))
      end
@/lua/ge/extensions/flowgraph/nodes/environment/planet.lua
    end
    if not ret then print("No RET! " .. index ..  " " .. dumps(startPos) .. dumps(info)) end
    end
    if not ret then print("No RET! " .. index ..  " " .. dumps(startPos) .. dumps(info)) end
@/lua/ge/extensions/gameplay/rally/transcripts/entry.lua
    local rotatedUpVector = rot * upVector * h  -- Rotate and scale the up vector
    -- log('D', logTag, dumps(rotatedUpVector:normalized()))
      -- clr = cap.calc.color_within_angle
      -- log('D', 'wtf', dumps(clr))
@/lua/ge/extensions/gameplay/rally/notebook/pacenote.lua
  if self:useStructured() then
    noteText = dumps(self:noteOutputStructured())
  else
    if #struc > 0 then
      preview = dumps(struc)
      preview = string.gsub(preview, "\n", " ")
@/lua/ge/extensions/core/hardwareinfo.lua
local function diskInfoCallback(data)
  -- log('D', 'hardwareinfo.diskInfoCallback', 'data: ' .. dumps(data))
  guihooks.trigger('diskInfoCallback', data)
    requestInfo()
    --log('D', 'hardwareinfo.diskInfoCallback', 'diskUsage: ' .. dumps(diskUsage))
  else
@/lua/vehicle/htmlTexture.lua
local function callJS(self, jsMethod, data)
  --print('call(' .. tostring(self.webViewTag) .. ',' .. tostring(jsMethod) .. ',' .. dumps(data) .. ')')
  obj:queueWebViewJS(self.webViewTag, string.format("%s(%s)", jsMethod, jsonEncode(data)))
local function streamJS(self, streamName, jsMethod, data)
  --print('call(' .. tostring(self.webViewTag) .. ',' .. tostring(jsMethod) .. ',' .. dumps(data) .. ')')
  obj:queueWebViewStreamJS(self.webViewTag, streamName, string.format("%s(%s)", jsMethod, jsonEncode(data)))
local function call(webViewTag, jsMethod, data)
  --print('call(' .. tostring(webViewTag) .. ',' .. tostring(jsMethod) .. ',' .. dumps(data) .. ')')
  local jsCmd = string.format("%s(%s)", jsMethod, jsonEncode(data))
@/lua/vehicle/extensions/tech/CANBus/ProjectBavariaController.lua
local function virtualInputCallback(deviceInstance, deviceInfo)
  log("I", "ProjectBavariaController.virtualInputCallback", string.format("Received virtual input callback with deviceInstance %d and device info %s", deviceInstance or -1, dumps(deviceInfo)))
@/lua/common/jbeam/sections/mirror.lua
        elseif v.offset then
          -- log("E","proc","Migrate "..dumps(v.mesh) .." baseTranslationGlobal="..dumps(v.offset + vehicle.nodes[v.idRef].pos) )
          mirror.offset = v.offset
        elseif v.offset then
          -- log("E","proc","Migrate "..dumps(v.mesh) .." baseTranslationGlobal="..dumps(v.offset + vehicle.nodes[v.idRef].pos) )
          mirror.offset = v.offset
          mirror.normal = vec3(0,1,0):rotated(q)
          -- log("I","proc","Migrated "..dumps(v.mesh) .." baseRotationGlobal="..dumps(mirror.normal) )
        elseif v.normal then
          mirror.normal = vec3(0,1,0):rotated(q)
          -- log("I","proc","Migrated "..dumps(v.mesh) .." baseRotationGlobal="..dumps(mirror.normal) )
        elseif v.normal then
          local r = q:toEulerYXZ()
          log("E","proc","Migrate "..dumps(v.mesh) .." baseRotationGlobal="..dumps(math.deg(r.y)).."|"..dumps(math.deg(r.z)).."|"..dumps(math.deg(r.x)) )
          mirror.normal = v.normal
          local r = q:toEulerYXZ()
          log("E","proc","Migrate "..dumps(v.mesh) .." baseRotationGlobal="..dumps(math.deg(r.y)).."|"..dumps(math.deg(r.z)).."|"..dumps(math.deg(r.x)) )
          mirror.normal = v.normal
          local r = q:toEulerYXZ()
          log("E","proc","Migrate "..dumps(v.mesh) .." baseRotationGlobal="..dumps(math.deg(r.y)).."|"..dumps(math.deg(r.z)).."|"..dumps(math.deg(r.x)) )
          mirror.normal = v.normal
          local r = q:toEulerYXZ()
          log("E","proc","Migrate "..dumps(v.mesh) .." baseRotationGlobal="..dumps(math.deg(r.y)).."|"..dumps(math.deg(r.z)).."|"..dumps(math.deg(r.x)) )
          mirror.normal = v.normal
        if v.offsetRotationGlobal then
          log("E","proc","offsetRotationGlobal is depracted, fix mesh normals "..dumps(v.mesh))
          local q = quatFromEuler(mrad(v.offsetRotationGlobal.x),mrad(v.offsetRotationGlobal.y),mrad(v.offsetRotationGlobal.z))
          mirror.offsetNormal = vec3(0,1,0):rotated(q)
          -- log("I","proc","Migrated "..dumps(v.mesh) .." offsetRotationGlobal="..dumps(mirror.offsetNormal) )
        elseif v.offsetNormal then
          mirror.offsetNormal = vec3(0,1,0):rotated(q)
          -- log("I","proc","Migrated "..dumps(v.mesh) .." offsetRotationGlobal="..dumps(mirror.offsetNormal) )
        elseif v.offsetNormal then
        elseif v.offsetNormal then
          log("E","proc","offsetNormal is depracted, fix mesh normals "..dumps(v.mesh))
          local q = vec3(0,1,0):getRotationTo(vec3(v.offsetNormal))
          local r = q:toEulerYXZ()
          log("E","proc","Migrate "..dumps(v.mesh) .." offsetRotationGlobal="..dumps(math.deg(r.y)).."|"..dumps(math.deg(r.z)).."|"..dumps(math.deg(r.x)) )
          mirror.offsetNormal = v.offsetNormal
          local r = q:toEulerYXZ()
          log("E","proc","Migrate "..dumps(v.mesh) .." offsetRotationGlobal="..dumps(math.deg(r.y)).."|"..dumps(math.deg(r.z)).."|"..dumps(math.deg(r.x)) )
          mirror.offsetNormal = v.offsetNormal
          local r = q:toEulerYXZ()
          log("E","proc","Migrate "..dumps(v.mesh) .." offsetRotationGlobal="..dumps(math.deg(r.y)).."|"..dumps(math.deg(r.z)).."|"..dumps(math.deg(r.x)) )
          mirror.offsetNormal = v.offsetNormal
          local r = q:toEulerYXZ()
          log("E","proc","Migrate "..dumps(v.mesh) .." offsetRotationGlobal="..dumps(math.deg(r.y)).."|"..dumps(math.deg(r.z)).."|"..dumps(math.deg(r.x)) )
          mirror.offsetNormal = v.offsetNormal
@/lua/ge/extensions/scenario/busdriver.lua
    nextStop = currentLine.tasklist[1]
    -- log("E", logTag, "onRaceStart  nextStop '"..dumps(nextStop).."'   currentLine.tasklist ='"..dumps(currentLine.tasklist).."'")
  else
    nextStop = currentLine.tasklist[1]
    -- log("E", logTag, "onRaceStart  nextStop '"..dumps(nextStop).."'   currentLine.tasklist ='"..dumps(currentLine.tasklist).."'")
  else
  --wpList = scenario_scenarios.getScenario().lapConfig
  --getObjectByID(vehicleId):queueLuaCommand("controller.getController('busNextStopDsp').onDepartedStop( "..dumps({unpack(wpList, 1,#wpList)}).." )")
  if running == false then return end
  -- log('E', logTag,'onBeamNGTrigger called '..dumps(data))
  if data.type and data.type == "busstop" and data.subjectName == playerInstance and isTriggerOnBusLine(currentLine.tasklist,data.triggerName) then
local function onVehicleSwitched(oldId, newId, player)
  log('I', logTag,'onVehicleSwitched called: '..dumps(oldId, newId, player))
  if player == 0 then
    local smoothness = max(abs(smAcc) + smJer)
    --log("I", "", graphs(20*smAcc, 20)..graphs(20*smJer, 20)..graphs(20*smoothness, 20)..dumps(smoothness).." \t "..dumps(smAcc).." \t "..dumps(smJer))
    stats[stop].smoothness.mark = smoothness
    local smoothness = max(abs(smAcc) + smJer)
    --log("I", "", graphs(20*smAcc, 20)..graphs(20*smJer, 20)..graphs(20*smoothness, 20)..dumps(smoothness).." \t "..dumps(smAcc).." \t "..dumps(smJer))
    stats[stop].smoothness.mark = smoothness
    local smoothness = max(abs(smAcc) + smJer)
    --log("I", "", graphs(20*smAcc, 20)..graphs(20*smJer, 20)..graphs(20*smoothness, 20)..dumps(smoothness).." \t "..dumps(smAcc).." \t "..dumps(smJer))
    stats[stop].smoothness.mark = smoothness

  --log("E", logTag, "onPreRender  nextStop("..dumps(type(nextStop))..")="..dumps(nextStop))
  local vec3Destination = vec3(nextStop[3])

  --log("E", logTag, "onPreRender  nextStop("..dumps(type(nextStop))..")="..dumps(nextStop))
  local vec3Destination = vec3(nextStop[3])
local function onBusUpdate(state)
  -- log('E', logTag..".onBusUpdate",'event='..dumps(state))
  if state.event == "onTriggerTick" and not stopComplete and nextStop and nextStop[1] == state.triggerName then
        end
        -- log("E", logTag, "onBeamNGTrigger  nextStop '"..dumps(nextStop).."'   cur ='"..dumps(cur).."'")
      end
        end
        -- log("E", logTag, "onBeamNGTrigger  nextStop '"..dumps(nextStop).."'   cur ='"..dumps(cur).."'")
      end
@/lua/ge/extensions/core/busRouteManager.lua
local function vehicleCommand(id,cmd,arg)
  -- log("E", logTag, "vehicleCommand id='"..tostring(id).."' cmd='"..tostring(cmd).."' arg='"..dumps(arg).."'")
  if arg ==nil then arg =""end
      end
      -- log('I',logtagFN("load"),"data.routes= "..dumps(data.routes))
    end
  end
  -- log('E',logtagFN("load"),"triggerNames="..dumps(triggerNames))
  -- log('E',logtagFN("load"),"triggerPos="..dumps(triggerPos))
  -- log('E',logtagFN("load"),"triggerNames="..dumps(triggerNames))
  -- log('E',logtagFN("load"),"triggerPos="..dumps(triggerPos))
  end
  -- log('E',logtagFN("load"),"after CHK, busLines="..dumps(busLines))
end
  end
  log('E',logtagFN("getLine"),"could not find the line "..dumps(routeID).." "..dumps(variance))
  return nil
  end
  log('E',logtagFN("getLine"),"could not find the line "..dumps(routeID).." "..dumps(variance))
  return nil
local function onAtStop(data)
  --log("E",logTag,"onAtStop data="..dumps(data))
  -- guihooks.trigger('Message', {ttl = 3, msg = 'onAtStop', icon = 'directions_bus'})
  if data.type and data.type == "busstop" then
    -- log("E",logTag,"onBeamNGTrigger data="..dumps(data))
    if data.event == "enter" then onAtStop(data) end
@/lua/ge/extensions/editor/rallyEditor/pacenotes/customForm.lua
  im.HeaderText("Preview - Custom")
  -- im.tooltip(dumps(pacenote.structured.fields))
  im.PushFont3("cairo_semibold_large")
  -- im.Text(dumps(noteText))
  im.PopFont()
@/lua/ge/extensions/editor/rallyEditor/pacenotes.lua
    if self.path:useStructured() then
      tooltipText = dumps(note:noteOutputStructured())
    else
@/lua/vehicle/extensions/api.lua
    --print('code:' .. tostring(code))
    --print('headers:' .. dumps(headers))
    --print('status:' .. tostring(status))
@/lua/ge/extensions/scenario/scenariosLoader.lua
      if not path then
        log("E", "", "Unable to locate flowgraph for scenario "..dumps(sc.name)..", neither as relative nor absolute dir: "..dumps(sc.flowgraph))
        return true
      if not path then
        log("E", "", "Unable to locate flowgraph for scenario "..dumps(sc.name)..", neither as relative nor absolute dir: "..dumps(sc.flowgraph))
        return true
@/lua/ge/extensions/career/modules/delivery/vehicleTasks.lua
  if im.Begin("Trailer Tasks Debug") then
    im.Text(dumps(vehicleTasks))
@/lua/ge/extensions/editor/vehicleEditor/staticEditor/veJBeamSpellchecker.lua
        if tableIsDict(header) then
          log('W', "", filePath .. " *** Invalid table header, must be a list, not a dict: "..dumps(header))
          return -1
          if type(rowValue) ~= "table" then
            log('W', "", filePath .. " *** Invalid table row: "..dumps(rowValue))
            return -1
              log('W', "", "*** Invalid table header, must be as long as all table cells (plus one additional options column):")
              log('W', "", "*** Table header: "..dumps(header))
              log('W', "", "*** Mismatched row: "..dumps(rowValue))
              log('W', "", "*** Table header: "..dumps(header))
              log('W', "", "*** Mismatched row: "..dumps(rowValue))
              return -1
@/lua/ge/extensions/career/career.lua
local function interactWithOrganization(id)
  --print("Interact with: " .. dumps(id))
  organizationInteraction[id] = true
@/lua/ge/extensions/editor/rallyEditor/pacenotes/structuredForm.lua
  im.HeaderText("Preview - Structured")
  im.tooltip(dumps(pacenote.structured.fields))
  im.PushFont3("cairo_semibold_large")
  im.Text(dumps(noteText))
  im.PopFont()
@/lua/ge/extensions/editor/dynamicDecals/widgets.lua
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    else
      im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    end
    else
      im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    end
    else
      im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    end
    else
      im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    end
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
    end
    im.tooltip(string.format("Reset to default: %s", dumps(baseProp.default)))
    im.SameLine()
@/lua/ge/extensions/editor/dynamicDecals/layerStack.lua
      editor.uiIconImageButton(editor.icons.warning, im.ImVec2(tool.getIconSize(), tool.getIconSize()), editor.color.warning.Value, nil, nil, string.format("missingTextureFiles", guiId, layer.uid))
      im.tooltip("Missing texture files: " .. dumps(layer.status.missingTextureFiles))
    end
@/lua/ge/extensions/core/vehicle/manager.lua
  if not vehicleObj then
    log('E', 'loader', 'Spawning vehicle failed, missing vehicle obj: '..dumps(objID, vehicleDir, configDataIn))
    additionalVehicleData = nil
  local jbeamLoader = require("jbeam/loader")
  log('D', 'vehicleLoader', 'partConfigData [' .. type(configDataIn) .. '] = ' .. dumps(configDataIn))
  local vehicleConfig = extensions.core_vehicle_partmgmt.buildConfigFromString(vehicleDir, configDataIn)
  if not vehicleBundle then
    log('E', 'loader', 'Spawning vehicle failed, missing stage 1 data: '..dumps(objID, vehicleDir, configDataIn))
    if err then log('E', 'loader', err) end
@/lua/ge/extensions/util/maptiles.lua
          else
            hoverTooltip = dumps(tile)
          end
@/lua/ge/extensions/freeroam/dragRace.lua
local function updateDisplay(side, finishTime, finishSpeed)
  log("D","updateDisplay",dumps(side).." = "..dumps(finishTime).." ="..dumps(finishSpeed))
local function updateDisplay(side, finishTime, finishSpeed)
  log("D","updateDisplay",dumps(side).." = "..dumps(finishTime).." ="..dumps(finishSpeed))
local function updateDisplay(side, finishTime, finishSpeed)
  log("D","updateDisplay",dumps(side).." = "..dumps(finishTime).." ="..dumps(finishSpeed))
local function setupPrestage()
  log("D","setupPrestage", dumps(playerPrestageReady) )
  lights.stageLights.prestageLightL.obj:setHidden(false)
  end
  -- log("D","trig",dumps(data.triggerName).." = "..dumps(data.event).." player="..dumps((veh and veh:getId())==data.subjectID))
  if data.event == "enter" and data.triggerName == "endTrigger" then
  end
  -- log("D","trig",dumps(data.triggerName).." = "..dumps(data.event).." player="..dumps((veh and veh:getId())==data.subjectID))
  if data.event == "enter" and data.triggerName == "endTrigger" then
  end
  -- log("D","trig",dumps(data.triggerName).." = "..dumps(data.event).." player="..dumps((veh and veh:getId())==data.subjectID))
  if data.event == "enter" and data.triggerName == "endTrigger" then
@/lua/ge/extensions/gameplay/playmodeMarkers.lua
  for _, key in ipairs({"id","visibilityPos","visibilityRadius"}) do
    if not cluster[key] then log("E","","No ".. key .. " for cluster " .. (cluster.id or dumps(cluster)))
    end
@/lua/ge/extensions/gameplay/route/raceRoute.lua
  self.wZ = wZ
  --log("I","",dumps("setRouteParams", cutOffDrivability, dirMult, penaltyAboveCutoff, penaltyBelowCutoff, wD, wZ))
end
@/lua/ge/extensions/ui/extApp.lua
  -- all stream data handles in c++ now
  log('E', '', 'unknown command: ' .. dumps(data))
end
      else
        log('E', '', 'Unable to decode json in ws data: ' .. dumps(evt))
      end
@/lua/vehicle/hydros.lua
  if tableSize(rCurve) < 2 then
    log("W", "", "FFB response functionality disabled due to invalid curve table size: "..dumps(rCurve))
    responseCorrected = false
  if maxx == 0 or maxy == 0 then
    log("W", "", "FFB response functionality disabled due to flat curve: "..dumps(rCurve))
    responseCorrected = false
  if tableSize(result) < 2 then
    log("W", "", "FFB response functionality disabled due to invalid normalized curve: "..dumps(result))
    responseCorrected = false
    curForceLimitSmoother:set(0)
    log("D", "hydros.init", "Response to FFB config request: "..dumps(newFFBConfig))
        if type(input.lowspeedCoefFFB) == "boolean" then
          log("I", "", string.format("This vehicle's steering hydro has specified a custom lowspeedCoefFFB setting. Overriding the binding setting lowspeedCoef=%s with the hydro setting lowspeedCoef=%s", dumps(ffbParams.lowspeedCoef), dumps(input.lowspeedCoefFFB)))
          ffbParams.lowspeedCoef = input.lowspeedCoefFFB
        if type(input.lowspeedCoefFFB) == "boolean" then
          log("I", "", string.format("This vehicle's steering hydro has specified a custom lowspeedCoefFFB setting. Overriding the binding setting lowspeedCoef=%s with the hydro setting lowspeedCoef=%s", dumps(ffbParams.lowspeedCoef), dumps(input.lowspeedCoefFFB)))
          ffbParams.lowspeedCoef = input.lowspeedCoefFFB
        log("D", "hydros.init", string.format("FFB settings: requested freq: %5.3f, rate selection mode: %s, final used frequency: %5.3f", frequency, automaticRate and "auto" or "manual",  finalFrequency))
        log("D", "hydros.init", string.format("FFB summary: vehicle: %s (id %s), type: '%s', strength: %5.3f, smoothing: %5.3f", dumps(v.data.vehicleDirectory), dumps(obj:getId()), "steering", M.wheelFFBForceCoef, wheelFFBSmoothing))
        turnOffFFBInterfaces()
        log("D", "hydros.init", string.format("FFB settings: requested freq: %5.3f, rate selection mode: %s, final used frequency: %5.3f", frequency, automaticRate and "auto" or "manual",  finalFrequency))
        log("D", "hydros.init", string.format("FFB summary: vehicle: %s (id %s), type: '%s', strength: %5.3f, smoothing: %5.3f", dumps(v.data.vehicleDirectory), dumps(obj:getId()), "steering", M.wheelFFBForceCoef, wheelFFBSmoothing))
        turnOffFFBInterfaces()
        FFBID = -1
        log("E", "hydros.init", "Couldn't find ffbParams in ffbconfig: ffbParams: "..dumps(ffbParams).."\nffbConfig.ffbParams: "..dumps(ffbConfig.ffbParams))
      end
        FFBID = -1
        log("E", "hydros.init", "Couldn't find ffbParams in ffbconfig: ffbParams: "..dumps(ffbParams).."\nffbConfig.ffbParams: "..dumps(ffbConfig.ffbParams))
      end
@/lua/ge/extensions/scenario/quickRaceLoader.lua
  else
    -- log('I', logTag, 'Start of quickrace: ' .. dumps(trackFile))
    local modules = {}
    end
    -- log("I",logTag,"Make Modules.." .. dumps(modules))
    unloadAutoExtensions()
@/lua/ge/extensions/core/cameraModes/unicycle.lua
  if not self.pos or not self.rotVec then
    log("W", "", "Unicycle camera cannot provide a position or a rotation: "..dumps(self.pos).." / "..dumps(self.rotVec))
    return vec3(), quat()
  if not self.pos or not self.rotVec then
    log("W", "", "Unicycle camera cannot provide a position or a rotation: "..dumps(self.pos).." / "..dumps(self.rotVec))
    return vec3(), quat()
@/lua/ge/extensions/editor/rallyEditor.lua

  log("D", logTag, dumps(paths))
@/lua/ge/extensions/gameplay/race/race.lua
  if events.pacenoteReached then
    table.insert(state.eventLog, {name = "Pacenote reached: " .. dumps(self.path.pacenotes.objects[events.pacenoteIdReached].note), time = self.time, dt = dt})
  end
  for _, node in ipairs(state.nextPathnodes) do
    node[1]:drawDebug('simple', {1,0.16,0.08,1}, dumps(node[2]))
  end
  for _, node in ipairs(state.overNextPathnodes) do
    node[1]:drawDebug('simple', {0.91,0.64,0.1,1}, dumps(node[2]))
  end
@/lua/vehicle/extensions/gameplayInterface.lua
  local params = {...}
  --print(string.format("Doing thing %q with data %q", action, dumps(params)))
  if id and action then
@/lua/ge/extensions/editor/sceneTree.lua
  local submitBatchedOperation = function(operation, batchedData)
    -- log('I','','Submitting batch '..opTypeToString[operation + 1]..' batchedData = '..dumps(batchedData))
    if operation == opClearSet then
@/lua/ge/extensions/gameplay/missions/missionManager.lua
    if mission:processUserSettings(userSettings or {}) then
      log("E", logTag, "Couldn't start mission, 'processUserSettings' didn't return nil/false: "..dumps(mission.id))
      --return
        if obj == nil then
          log("E", "", "Couldn't start mission "..dumps(mission.id)..", could not load prefab: "..dumps(p))
          unloadMissionPrefabs(mission)
        if obj == nil then
          log("E", "", "Couldn't start mission "..dumps(mission.id)..", could not load prefab: "..dumps(p))
          unloadMissionPrefabs(mission)
        else
          log("D", "", "Loaded prefab for mission"..dumps(mission.id) .. " - " .. dumps(p))
          table.insert(mission._spawnedPrefabs, obj)
        else
          log("D", "", "Loaded prefab for mission"..dumps(mission.id) .. " - " .. dumps(p))
          table.insert(mission._spawnedPrefabs, obj)
  mission._isOngoing = true -- in case onStart guys ask about our own state - yes, we're kinda ongoing now...
  --dump("Mission now _isOngoing : " .. dumps(mission.id))
  if mission:onStart() then
    mission._isOngoing = false -- ...but we'll stop in case of problems
    log("E", logTag, "Couldn't start mission, 'onStart' didn't return nil/false: "..dumps(mission.id))
    --unloadMissionPrefabs(mission)
  if not mission._isOngoing then
    log("E", logTag, "Couldn't stop mission, it's not ongoing: "..dumps(mission.id))
    return true
  if mission:attemptAbandonMission() then
    log("I", logTag, "Requesting faded abandon for mission, not force stopping. : "..dumps(mission.id))
    return true
  if not mission._isOngoing then
    log("E", logTag, "Couldn't stop mission, it's not ongoing: "..dumps(mission.id))
    return true
      im.TextWrapped(string.format("%s%d - %s",taskData.currentStep == i and "ACTIVE " or "", i, step.name or "Unnamed Step"))
      im.Text(dumps(step))
      if debugApprove and i==taskData.currentStep and step.complete then
        else
          log("I", logTag, "Delayed mission now loading: " .. dumps(delayedStartFromWithinMission.mission.id))
          fadedScreen = true
@/lua/ge/extensions/ui/missionInfo.lua
M.performAction = function(actionName)
  -- log('I', logTag, tostring(actionName) .. " action triggered. Looking for " .. tostring(actionName) .. " action in "..dumps(M.buttonsTable))
  if M.buttonsTable then
M.performActivityAction = function(id)
  log('I', logTag, tostring(actionName) .. " action triggered. Looking for " .. tostring(actionName) .. " action in "..dumps(M.buttonsTable))
  if M.buttonsTable then
@/lua/ge/extensions/flowgraph/nodes/macro/integrated.lua
      if full.monitored then
        im.Text(name .. " = " .. dumps(full.value))
      end
@/lua/ge/extensions/flowgraph/modules/threadModule.lua
function C:sendMessage(targetId, message, sourceNode)
  log("I","","Sending Message" .. dumps(targetId) .. dumpsz(message, 2))
  local name = message.name or ""
  local name = message.name or ""
  self.mgr:logEvent("Sent Message "..name.." to " .. dumps(targetId),"I", "A message has been sent to id " .. dumps(targetId)..". Contents: " .. dumpsz(message, 2), {type = "node", node = sourceNode})
  local target = core_flowgraphManager.getManagerByID(targetId)
  local name = message.name or ""
  self.mgr:logEvent("Sent Message "..name.." to " .. dumps(targetId),"I", "A message has been sent to id " .. dumps(targetId)..". Contents: " .. dumpsz(message, 2), {type = "node", node = sourceNode})
  local target = core_flowgraphManager.getManagerByID(targetId)
  local name = message.name or ""
  self.mgr:logEvent("Received Message " .. name.. " from " .. dumps(sourceId),"I", "A message has been received from " .. dumps(sourceId)..". Contents: " .. dumpsz(message, 2))
end
  local name = message.name or ""
  self.mgr:logEvent("Received Message " .. name.. " from " .. dumps(sourceId),"I", "A message has been received from " .. dumps(sourceId)..". Contents: " .. dumpsz(message, 2))
end
  dumpz(self.children, 2)
  self.mgr:logEvent("Loaded Child Project","I", "A Child has been loaded from path " .. dumps(file), {type = "node", node = sourceNode})
  return mgr.id
@/lua/ge/extensions/editor/shapeEditor.lua
      if v.size > highestDetail then highestDetail = v.size end
      comboCtxTxt = comboCtxTxt..dumps(v.meshName).." - "..dumps(v.size).."\0"
      ::continue_info::
      if v.size > highestDetail then highestDetail = v.size end
      comboCtxTxt = comboCtxTxt..dumps(v.meshName).." - "..dumps(v.size).."\0"
      ::continue_info::
      for k,v in pairs(shapeInfo.sequences) do
        log("I","info.seq", dumps(k).."|"..dumps(v.name))
        comboSeqCtxTxt = comboSeqCtxTxt..dumps(v.name).."\0"
      for k,v in pairs(shapeInfo.sequences) do
        log("I","info.seq", dumps(k).."|"..dumps(v.name))
        comboSeqCtxTxt = comboSeqCtxTxt..dumps(v.name).."\0"
        log("I","info.seq", dumps(k).."|"..dumps(v.name))
        comboSeqCtxTxt = comboSeqCtxTxt..dumps(v.name).."\0"
      end
  if not mat then
    log("E", "_getMaterialObj", dumps(matName) .. " sceneobject was not found")
    return nil
  if mat:getClassName():lower() ~= "material" then
    log("E", "_getMaterialObj", dumps(matName) .. " is not a Material. type="..dumps(mat:getClassName()))
    return nil
  if mat:getClassName():lower() ~= "material" then
    log("E", "_getMaterialObj", dumps(matName) .. " is not a Material. type="..dumps(mat:getClassName()))
    return nil
  else
    log("E", "unknwon Material version "..dumps(matVer))
  end
  else
    log("E", "unknwon Material version "..dumps(matVer))
  end
  if obj then
    --log("E", "del obj "..dumps(obj.name))
    obj:deleteObject()
  if highlightMaterial then
    -- log("E", "del obj "..dumps(highlightMaterial.name))
    if highlightMaterialName and highlightMaterial.name ~= highlightMaterialName then
    if highlightMaterialName and highlightMaterial.name ~= highlightMaterialName then
      -- log("E", "name diff "..dumps(highlightMaterial.name) .." | ".. dumps(highlightMaterialName))
      local mat = _getMaterialObj(highlightMaterialName)
    if highlightMaterialName and highlightMaterial.name ~= highlightMaterialName then
      -- log("E", "name diff "..dumps(highlightMaterial.name) .." | ".. dumps(highlightMaterialName))
      local mat = _getMaterialObj(highlightMaterialName)
    if highlightMaterialName then
      -- log("E", "only name ".. dumps(highlightMaterialName))
      local mat = _getMaterialObj(highlightMaterialName)
    if mat then
      -- print("preview mat"..dumps(matName))
      selectedMaterialName = matName
    else
      log("E","_updateSelectedMaterial", "highlight material invalid "..dumps(matName))
    end
      _writeMeshConstructor()
      log("I","_removeLod", "k="..dumps(k).." - "..dumps(meshConstructor.createMeshLOD))
      _getShapeInfo()
      _writeMeshConstructor()
      log("I","_removeLod", "k="..dumps(k).." - "..dumps(meshConstructor.createMeshLOD))
      _getShapeInfo()
        if shapePrev.getTSShapeInfo and beamng_buildtype=="INTERNAL" and im.Button("getTSShapeInfo") then
          log("I","getTSShapeInfo", dumps(shapePrev:getTSShapeInfo()))
        end
        --   im.NextColumn()
        --   im.Text(dumps(v))
        --   im.Separator()
          if im.Combo2("animation", comboSeqCurrentItem, comboSeqCtxTxt) then
            -- log( "E", "seq", dumps(comboSeqCurrentItem[0])  )
            -- log( "E", "seq", dumps(shapeInfo.sequences[comboSeqCurrentItem[0]+1] ) )
            -- log( "E", "seq", dumps(comboSeqCurrentItem[0])  )
            -- log( "E", "seq", dumps(shapeInfo.sequences[comboSeqCurrentItem[0]+1] ) )
            shapePrev:setActiveThreadSequence(shapeInfo.sequences[comboSeqCurrentItem[0]+1].name, 0,0, true)
        --   else
        --     log("I","dump", dumps(info))
        --   end
            if shapeInfo and shapeInfo.details[v.src+1] then
              src = src .. " " .. dumps(shapeInfo.details[v.src+1].name)
              src = src .. " " .. shapeInfo.details[v.src+1].meshName
@/lua/ge/extensions/editor/flowgraph/missionVariableHelper.lua
        applied = applied + 1
        log("D", logTag, string.format("  [+] %s -> set to %s", name, dumps(value, 2)))
      else
@/lua/ge/extensions/editor/driftDataEditor.lua
      if im.Begin("Raw drift spot's data") then
        im.Text(dumps(currDriftSpots[selectedDriftSpotId]))
        im.End()
@/lua/ge/extensions/core/settings/settings.lua
  else
    log('D','','refreshLanguages(): oldLanguage = '..dumps(oldLanguage)..'  appliedLanguage = '..dumps(appliedLanguage)..' userLanguage = '..dumps(values.userLanguage))
    log('D','','       switching language.')
  else
    log('D','','refreshLanguages(): oldLanguage = '..dumps(oldLanguage)..'  appliedLanguage = '..dumps(appliedLanguage)..' userLanguage = '..dumps(values.userLanguage))
    log('D','','       switching language.')
  else
    log('D','','refreshLanguages(): oldLanguage = '..dumps(oldLanguage)..'  appliedLanguage = '..dumps(appliedLanguage)..' userLanguage = '..dumps(values.userLanguage))
    log('D','','       switching language.')
  end
  --print(' * languagesAvailable: ' .. dumps(options.userLanguagesAvailable))
  if settingInProgress[key] then
    --log("W", "", "This call to setValue() settings is being ignored, because it is flagged as a recursive call via 'M.settingInProgress["..dumps(key).."]'. This should not happen, please review callstack below:")
    --print(debug.tracesimple())
      --pcall puts the error message in the 2nd return value
      log('W', '', "Couldn't decode json for userColorPresets: "..dumps(userColorPresets))
      log('W', '', "JSON data: "..dumps(data.userColorPresets))
      log('W', '', "Couldn't decode json for userColorPresets: "..dumps(userColorPresets))
      log('W', '', "JSON data: "..dumps(data.userColorPresets))
    end
          else
            log("E", "", string.format("Unable to parse setting '%s': it should be a %s, but is a %s. The ignored value is: %s", k, type(CppSettings[k]), type(value), dumps(value)))
          end
@/lua/ge/extensions/gameplay/missions/startTrigger.lua
    else
      return {}, "Missing fields for type " .. trigger.type .. ": " .. dumps(missingFields)
    end
  else
    return {}, "Type invalid: " .. dumps(trigger.type)
  end
@/lua/ge/extensions/campaign/exploration.lua
  if not subsection then
    log('W', logTag, 'Cannot find subsection : '..dumps(spawningData.subsectionKey))
    return
local function onFocusPOI(poi)
  -- log('I', logTag, 'onFocusPOI: '..dumps(poi))
  setFocusPOI(nil)
  -- dump(data)
  -- writeFile("campaign_exploration.txt", dumps(data))
  return data
@/lua/ge/extensions/gameplay/missions/missions.lua
    if not FS:fileExists(luaPath) then
      log("E", "", "Unable to load mission type, file not found: "..dumps(luaPath))
    else
      if not missionTypeConstructors[missionTypeName] then
        log("E", "", "Unable to load mission type, couldn't require path: "..dumps(reqPath))
      end
      if not missionProgressSetupData[missionTypeName] then
        log("E", "", "Unable to read progress Setup json file: "..dumps(reqPath))
        missionProgressSetupData[missionTypeName] = {}
      if not missionStaticData[missionTypeName] then
        log("E", "", "Unable to read static data json file: "..dumps(reqPath))
        missionStaticData[missionTypeName] = {}
    if not FS:fileExists(luaPath) then
      log("W", "", "found no editor for mission type " .. missionTypeName ..": "..dumps(luaPath))
    else
      if not missionEditors[missionTypeName] then
        log("E", "", "could not load editor for mission type " .. missionTypeName .. ": "..dumps(reqPath))
      end
      if not reward.rewardAmount then
        log("E", "", "Found nil rewardAmount in starRewards for mission " .. mission.id .. " and key " .. key .. " and reward " .. dumps(reward.attributeKey))
        reward.rewardAmount = 0
  if missionData.name == "" or string.find(missionData.name, ".json") then
    log("E", "", "Incorrect 'name' field, please clean it up (no filepaths, no underscores, etc): "..dumps(missionData.name).." at: "..filepath)
    missionData.name = "INCORRECT NAME, CHECK LOGS ("..(missionData.name or "")..")"
  if isNonNumeric then
    log("W", "", "defaultStarKeys contains non-numeric keys, re-saving mission to fix: " ..dumps(missionData.id))
    table.sort(defaultStarKeys, function(a,b) return a[1] < b[1] end)
  if not string.startswith(missionDir, missionsDir) then
    log("E", "", "Unable to load mission, not placed in "..missionsDir..": "..dumps(missionDir))
    return
  if string.find(missionDir, " ") then
    log("E", "", "Unable to load mission, the path cannot contain spaces: "..dumps(missionDir))
    return
  if not FS:fileExists(infoPath) then
    log("E", "", "Unable to load mission, info file not found: "..dumps(infoPath))
    return nil
  if not missionData then
    log("E", "", "Unable to load mission data, couldn't parse file: "..dumps(infoPath))
    return nil
        else
          log("W","Reward had no _originalRewardAmount? " .. dumps(missionData.id) .. " - "..dumps(key) .. " : " .. dumps(reward.attributeKey))
        end
        else
          log("W","Reward had no _originalRewardAmount? " .. dumps(missionData.id) .. " - "..dumps(key) .. " : " .. dumps(reward.attributeKey))
        end
        else
          log("W","Reward had no _originalRewardAmount? " .. dumps(missionData.id) .. " - "..dumps(key) .. " : " .. dumps(reward.attributeKey))
        end
      if not missionTypeConstructor then
        log("E", "", "Mission "..dumps(infoPath).." did not specify a valid missionType: "..dumps(missionData.missionType))
        goto continue
      if not missionTypeConstructor then
        log("E", "", "Mission "..dumps(infoPath).." did not specify a valid missionType: "..dumps(missionData.missionType))
        goto continue
      if add == true or not mission then
        log("E", "", "Unable to construct mission "..dumps(missionData.id).." of type "..dumps(missionData.missionType)..", its constructor returned "..dumps(add))
        goto continue
      if add == true or not mission then
        log("E", "", "Unable to construct mission "..dumps(missionData.id).." of type "..dumps(missionData.missionType)..", its constructor returned "..dumps(add))
        goto continue
      if add == true or not mission then
        log("E", "", "Unable to construct mission "..dumps(missionData.id).." of type "..dumps(missionData.missionType)..", its constructor returned "..dumps(add))
        goto continue
      if type(mission) == 'string' then
        log("E", "", "Unable to construct mission "..dumps(missionData.id).." of type "..dumps(missionData.missionType)..", something went wrong:")
        log("E", "", mission)
      if type(mission) == 'string' then
        log("E", "", "Unable to construct mission "..dumps(missionData.id).." of type "..dumps(missionData.missionType)..", something went wrong:")
        log("E", "", mission)
        if err then
          log("E", "", "Mission specific constructor of mission "..dumps(missionData.id).." failed to resolve, something went wrong:")
          log("E", "", err)
      if not mission.startTrigger then
        log("E", "", "Unable to load mission due to missing startTrigger information: "..dumps(missionData.id))
        goto continue
  if not t then
    log("E", "", "Mission "..dumps(mission.id).." has no startTrigger information")
    return locationsCache[mission.id]
  if err then
    log("E", "", "Error while parsing startTrigger for mission " .. mission.id .. ": " .. dumps(err))
  else
@/lua/ge/extensions/core/input/bindings.lua
local function dumpbinding(binding)
  if binding == nil then return dumps(binding) end
  return dumps(cleanBindingDefaults(deepcopy(binding))):gsub("\n", " "):gsub(" +", " ")
  if binding == nil then return dumps(binding) end
  return dumps(cleanBindingDefaults(deepcopy(binding))):gsub("\n", " "):gsub(" +", " ")
end
      if not success then
        log('E', 'bindings', "Error decoding json content from file "..dumps(path)..": "..dumps(fileData))
        fileData = nil
      if not success then
        log('E', 'bindings', "Error decoding json content from file "..dumps(path)..": "..dumps(fileData))
        fileData = nil
          if ignoreRemoved then
            log('E', 'bindings', "Ignoring 'removed' binding in file "..dumps(path).." that shouldn't contain any 'removed' binding: "..dumpbinding(b))
            goto nextRemoved
        if result[k] and (result[k] ~= v) then
          log("W", "", "Overwriting inputmap field "..dumps(k)..": "..dumps(result[k]).." --> "..dumps(v).." (new value read from "..dumps(path)..")")
        end
        if result[k] and (result[k] ~= v) then
          log("W", "", "Overwriting inputmap field "..dumps(k)..": "..dumps(result[k]).." --> "..dumps(v).." (new value read from "..dumps(path)..")")
        end
        if result[k] and (result[k] ~= v) then
          log("W", "", "Overwriting inputmap field "..dumps(k)..": "..dumps(result[k]).." --> "..dumps(v).." (new value read from "..dumps(path)..")")
        end
        if result[k] and (result[k] ~= v) then
          log("W", "", "Overwriting inputmap field "..dumps(k)..": "..dumps(result[k]).." --> "..dumps(v).." (new value read from "..dumps(path)..")")
        end
      if result[v.control.."\0"..v.action] then
        log("W", "", "Found duplicate binding. The last seen binding will override earlier bindings: "..dumps(v.control, v.action))
      end
  for k,v in pairs(markedForRemoval) do
    log('D', 'bindings', "Removed binding (added to list): "..dumps(v.control).." : "..dumps(v.action))
    table.insert(result.removed, { control = v.control, action = v.action } )
  for k,v in pairs(markedForRemoval) do
    log('D', 'bindings', "Removed binding (added to list): "..dumps(v.control).." : "..dumps(v.action))
    table.insert(result.removed, { control = v.control, action = v.action } )
  for k,v in pairs(dictNew) do
    if dumps(dictOld[k]) ~= dumps(v) then
      if dictOld[k] then log('D', 'bindings', "Modified binding (added to list): "..dumps(v.control).." : "..dumps(v.action))
  for k,v in pairs(dictNew) do
    if dumps(dictOld[k]) ~= dumps(v) then
      if dictOld[k] then log('D', 'bindings', "Modified binding (added to list): "..dumps(v.control).." : "..dumps(v.action))
    if dumps(dictOld[k]) ~= dumps(v) then
      if dictOld[k] then log('D', 'bindings', "Modified binding (added to list): "..dumps(v.control).." : "..dumps(v.action))
      else           log('D', 'bindings',    "New binding (added to list): "..dumps(v.control).." : "..dumps(v.action)) end
    if dumps(dictOld[k]) ~= dumps(v) then
      if dictOld[k] then log('D', 'bindings', "Modified binding (added to list): "..dumps(v.control).." : "..dumps(v.action))
      else           log('D', 'bindings',    "New binding (added to list): "..dumps(v.control).." : "..dumps(v.action)) end
      if dictOld[k] then log('D', 'bindings', "Modified binding (added to list): "..dumps(v.control).." : "..dumps(v.action))
      else           log('D', 'bindings',    "New binding (added to list): "..dumps(v.control).." : "..dumps(v.action)) end
      table.insert(result.bindings, cleanBindingDefaults(v) )
      if dictOld[k] then log('D', 'bindings', "Modified binding (added to list): "..dumps(v.control).." : "..dumps(v.action))
      else           log('D', 'bindings',    "New binding (added to list): "..dumps(v.control).." : "..dumps(v.action)) end
      table.insert(result.bindings, cleanBindingDefaults(v) )
                if xcolumn == nil or ycolumn == nil then
                  log("W", "", "Cannot recognize column headers in FFB response curve file: "..dumps(path))
                  if xcolumn == nil then
                  if xcolumn == nil then
                    log("W", "", "Assuming X column is at: "..dumps(column))
                    xcolumn = column
                    if ycolumn == nil then
                    log("W", "", "Assuming Y column is at: "..dumps(column))
                    ycolumn = column
            table.insert(responseCurve, {x, y})
            --log("I", "", dumps({x,y}))
          else
      if curveInverted then
        log("D", "", "Inverting curve path: "..dumps(path))
        for n,v in ipairs(responseCurve) do
      end
      --log("I", "", "Response curve: "..dumps(responseCurve))
      binding.ffb.responseCurve = responseCurve
        if vv.control == v.control then
          log("I", "bindings", "Upgrading inputmap from old v0 format - Removing duplicate binding: "..dumps(v.control).." : "..dumps(v.action))
          dictDiffRemoved[kk] = vv
        if vv.control == v.control then
          log("I", "bindings", "Upgrading inputmap from old v0 format - Removing duplicate binding: "..dumps(v.control).." : "..dumps(v.action))
          dictDiffRemoved[kk] = vv
    if dictBase[k] == nil then
      log("D", "bindings", "Merge: trying to remove a binding that is not there anymore: "..dumps(v))
    end
  if ffbConfig == nil then
    log("E", "", "Got a nil ffbConfig for vehicle with ID "..dumps(veh:getId())..", ffb action "..dumps(action).." and FFFBID "..dumps(FFBID))
    return nil
  if ffbConfig == nil then
    log("E", "", "Got a nil ffbConfig for vehicle with ID "..dumps(veh:getId())..", ffb action "..dumps(action).." and FFFBID "..dumps(FFBID))
    return nil
  if ffbConfig == nil then
    log("E", "", "Got a nil ffbConfig for vehicle with ID "..dumps(veh:getId())..", ffb action "..dumps(action).." and FFFBID "..dumps(FFBID))
    return nil
  if state ~= true then
    log("E", "", "Couldn't parse FFB params: state:"..dumps(state).."\nffbParams: \n"..dumps(ffbParams).."\nffbParamsJson: "..dumps(ffbConfig.ffbParamsJson))
    return nil
  if state ~= true then
    log("E", "", "Couldn't parse FFB params: state:"..dumps(state).."\nffbParams: \n"..dumps(ffbParams).."\nffbParamsJson: "..dumps(ffbConfig.ffbParamsJson))
    return nil
  if state ~= true then
    log("E", "", "Couldn't parse FFB params: state:"..dumps(state).."\nffbParams: \n"..dumps(ffbParams).."\nffbParamsJson: "..dumps(ffbConfig.ffbParamsJson))
    return nil
    if vehicleName == "none" then vehicleName = nil end
    log("D", "bindings", "Saving "..tableSize(v.bindings).." bindings for vehicle: "..dumps(vehicleName))
    saveBindingsFileToDisk(v, vehicleName)
local function resetBindings(desiredDevName)
  log("I", "", "Resetting bindings for: "..dumps(desiredDevName))
  local resetAllDevices = desiredDevName == nil
@/lua/ge/extensions/util/showroom.lua
  if not prefab then
    log("E", "", "Unable to load prefab "..dumps(prefabPath).." at "..dumps(position))
    return
  if not prefab then
    log("E", "", "Unable to load prefab "..dumps(prefabPath).." at "..dumps(position))
    return
@/lua/ge/extensions/editor/flowgraph/main.lua
              im.EndDisabled()
              ui_flowgraph_editor.tooltip("No File Found under " .. dumps(file) .. " !")
            end
          if not focussed and ((not self.mgr.graph) or (gr.id ~= self.mgr.graph.id)) and im.IsWindowFocused() then
            --print("mgr graph " .. dumps(self.mgr.graph and self.mgr.graph.id) .. " vs this graphs id: " .. gr.id .." " .. gr.name)
            setGraphAfter = gr
    if setGraphAfter and not focusGraphNow then
      --print("setgraph id is " .. dumps(setGraphAfter.id))
      self.mgr:selectGraph(setGraphAfter)
@/lua/ge/extensions/util/compileMeshes.lua
      if (i % 500) == 0 then
        log('D', 'work', 'allFilesCheckOnly : ' .. dumps(i).."/"..dumps(#allFilesCheckOnly))
        --job.yield()
      if (i % 500) == 0 then
        log('D', 'work', 'allFilesCheckOnly : ' .. dumps(i).."/"..dumps(#allFilesCheckOnly))
        --job.yield()
@/lua/ge/extensions/flowgraph/groupHelper.lua
  end
  --print('graphRect = ' .. dumps(graphRect))
    if not sourcePin or not targetPin then
      log('E', '', 'unable to recreate link: unable to find pins: ' .. dumps(linkData))
    else
    if not sourcePin or not targetPin then
      log('E', '', 'unable to recreate link: unable to find pins: ' .. dumps(linkData))
    else
    if not sourcePin or not targetPin then
      log('E', '', 'unable to recreate link: unable to find pins: ' .. dumps(linkData))
    else
      if not sourcePin or not targetPin then
        log('E', '', 'unable to recreate link: unable to find pins: ' .. dumps(linkData))
      else
      if not sourcePin or not targetPin then
        log('E', '', 'unable to recreate link: unable to find pins: ' .. dumps(linkData))
      else
@/lua/ge/extensions/core/vehicleTriggers.lua
                          if debugUIEnabled and actionsExecuted == 0 then
                            log('E', 'triggers', 'Nothing executed on action [1]: '.. dumps({lnk, 1}))
                          end
                          if debugUIEnabled and actionsExecuted == 0 then
                            log('E', 'triggers', 'Nothing executed on action [2]: '.. dumps({lnk, 0}))
                          end
                          if debugUIEnabled and actionsExecuted == 0 then
                            log('E', 'triggers', 'Nothing executed on action [3]: '.. dumps({lnk, 1}))
                          end
                          if debugUIEnabled and actionsExecuted == 0 then
                            log('E', 'triggers', 'Nothing executed on action [4]: '.. dumps({lnk, 0}))
                          end
                        if debugUIEnabled and actionsExecuted == 0 then
                          log('E', 'triggers', 'Nothing executed on action [5]: '.. dumps({lnk, 1}))
                        end
                        if debugUIEnabled and actionsExecuted == 0 then
                          log('E', 'triggers', 'Nothing executed on action [6]: '.. dumps({lnk, 0}))
                        end
                        if debugUIEnabled and actionsExecuted == 0 then
                          log('E', 'triggers', 'Nothing executed on action [7]: '.. dumps({lnk, 1}))
                        end
                        if debugUIEnabled and actionsExecuted == 0 then
                          log('E', 'triggers', 'Nothing executed on action [8]: '.. dumps({lnk, 0}))
                        end
    if not vehicleObj then
      log("E", "", "Invalid vehicle id "..dumps(currentlyUsedTrigger.v).." for vehicle trigger "..dumps(currentlyUsedTrigger.t))
      return
    if not vehicleObj then
      log("E", "", "Invalid vehicle id "..dumps(currentlyUsedTrigger.v).." for vehicle trigger "..dumps(currentlyUsedTrigger.t))
      return
    if not to then
      log("E", "", "Invalid vehicle trigger "..dumps(currentlyUsedTrigger.t).." for vehicle id "..dumps(currentlyUsedTrigger.v))
      return
    if not to then
      log("E", "", "Invalid vehicle trigger "..dumps(currentlyUsedTrigger.t).." for vehicle id "..dumps(currentlyUsedTrigger.v))
      return
      end
      log('W', 'triggers', 'Nothing executed on value '.. valuetext .. ' for triggerEvent: ' .. dumps({lnk, actionValue}))
    end
@/lua/ge/extensions/editor/util/searchUtil.lua
      self.frecency[self.undoFrecency.fId] = self.undoFrecency.value
      log("D","","Undid a frecency update: " .. dumps(self.undoFrecency))
    end
@/lua/ge/extensions/core/checkpoints.lua
  -- dump(data)
  --writeFile("checkpoints.txt", dumps(data))
  return data
@/lua/ge/extensions/gameplay/traffic/baseRole.lua
  if not FS:fileExists(fgFile or '') then
    log('E', 'traffic', 'Flowgraph file not found: '..dumps(fgFile))
    return
    else
      log('W', 'traffic', 'Flowgraph missing required variable when setting up baserole: '..dumps(key) .. " -> " .. dumps(value))
    end
    else
      log('W', 'traffic', 'Flowgraph missing required variable when setting up baserole: '..dumps(key) .. " -> " .. dumps(value))
    end
@/lua/common/settings.lua
      if vmType == 'game' then
        log('W', '', "Unrecognized setting name \""..setting.."\" (not defined in defaults file: "..dumps(M.pathDefaults)..")")
      end
    end
    log('E', '', "Couldn't process deprecated setting "..setting..": "..dumps(M.deprecated[setting]))
    return
    else
      log("E", "", string.format("Unable to apply a steamdeck setting '%s'=%s that is not defined in the defaults file: '%s'", k, dumps(v), M.pathDefaults))
    end
          if type(CppSettings[k]) ~= type(value) then
            log("E", "", string.format("Unable to parse setting '%s': it should be a %s, but is a %s. The ignored value is: %s", k, type(CppSettings[k]), type(value), dumps(value)))
            values[k] = nil
@/lua/common/jbeam/materials.lua
  --for flexKey, flexbody in pairs(vehicle.flexbodies) do
  --    log('D', "material.init", "flexbody mesh '"..flexbody.mesh.."' contains the following materials: " .. dumps(vehicleObj:getMeshsMaterialsTbl(flexbody.mesh)))
  --end
      --log('I', "material.init", "[deformgroup] meshes containing material " .. flexbody.deformMaterialBase .. ": " .. tostring(meshStr))
      --log('I', "material.init", "flexbody mesh '"..flexbody.mesh.."' contains the following materials: " .. dumps(vehicleObj:getMeshsMaterialsTbl(flexbody.mesh)))
@/lua/ge/extensions/gameplay/drift/quickMessages.lua
          if im.IsItemHovered() then
            im.tooltip(im.ArrayChar(4096, dumps(data)))
          end
@/lua/ge/extensions/core/settings/audio.lua
  if not providerOK then
    log( 'E', 'settings.audio', 'incorrect audio provider: "' .. tostring(audioProviderName) .. '": ' .. dumps(devices) )
  if not provider then
    log('E', 'audio', 'incorrect audio provider: "' .. tostring(providerName) .. '": ' .. dumps(providers))
@/lua/ge/extensions/editor/rallyEditor/missionSettings.lua

  -- print(dumps(self.missionSettingsFormData))
  -- print(dumps(self.settings))
  -- print(dumps(self.missionSettingsFormData))
  -- print(dumps(self.settings))
@/lua/ge/extensions/core/input/actions.lua
    else
      log("E", "", "Unable to convert uniqueName to name: "..dumps(uniqueActionName))
    end
    for uniqueActionName,action in pairs(readFromActionsFile(vehicleName, active)) do
      if result[uniqueActionName] and result[uniqueActionName].source ~= action.source then log("E", "", "Detected duplication of action: "..dumps(uniqueActionName)..", vid: "..dumps(vid)..", source A: "..dumps(result[uniqueActionName].source)..", source B: "..dumps(action.source)) end
      if action.namespace ~= 'common' then
    for uniqueActionName,action in pairs(readFromActionsFile(vehicleName, active)) do
      if result[uniqueActionName] and result[uniqueActionName].source ~= action.source then log("E", "", "Detected duplication of action: "..dumps(uniqueActionName)..", vid: "..dumps(vid)..", source A: "..dumps(result[uniqueActionName].source)..", source B: "..dumps(action.source)) end
      if action.namespace ~= 'common' then
    for uniqueActionName,action in pairs(readFromActionsFile(vehicleName, active)) do
      if result[uniqueActionName] and result[uniqueActionName].source ~= action.source then log("E", "", "Detected duplication of action: "..dumps(uniqueActionName)..", vid: "..dumps(vid)..", source A: "..dumps(result[uniqueActionName].source)..", source B: "..dumps(action.source)) end
      if action.namespace ~= 'common' then
    for uniqueActionName,action in pairs(readFromActionsFile(vehicleName, active)) do
      if result[uniqueActionName] and result[uniqueActionName].source ~= action.source then log("E", "", "Detected duplication of action: "..dumps(uniqueActionName)..", vid: "..dumps(vid)..", source A: "..dumps(result[uniqueActionName].source)..", source B: "..dumps(action.source)) end
      if action.namespace ~= 'common' then
    for uniqueActionName,action in pairs(actionsToUniqueActions(vd and vd.vdata and vd.vdata.inputActions or {}, vehicleName)) do
      if result[uniqueActionName] and result[uniqueActionName].source ~= action.source then log("E", "", "Detected duplication of action: "..dumps(uniqueActionName)..", vid: "..dumps(vid)..", source A: "..dumps(result[uniqueActionName].source)..", source B: "..dumps(action.source)) end
      if action.namespace ~= 'common' then
    for uniqueActionName,action in pairs(actionsToUniqueActions(vd and vd.vdata and vd.vdata.inputActions or {}, vehicleName)) do
      if result[uniqueActionName] and result[uniqueActionName].source ~= action.source then log("E", "", "Detected duplication of action: "..dumps(uniqueActionName)..", vid: "..dumps(vid)..", source A: "..dumps(result[uniqueActionName].source)..", source B: "..dumps(action.source)) end
      if action.namespace ~= 'common' then
    for uniqueActionName,action in pairs(actionsToUniqueActions(vd and vd.vdata and vd.vdata.inputActions or {}, vehicleName)) do
      if result[uniqueActionName] and result[uniqueActionName].source ~= action.source then log("E", "", "Detected duplication of action: "..dumps(uniqueActionName)..", vid: "..dumps(vid)..", source A: "..dumps(result[uniqueActionName].source)..", source B: "..dumps(action.source)) end
      if action.namespace ~= 'common' then
    for uniqueActionName,action in pairs(actionsToUniqueActions(vd and vd.vdata and vd.vdata.inputActions or {}, vehicleName)) do
      if result[uniqueActionName] and result[uniqueActionName].source ~= action.source then log("E", "", "Detected duplication of action: "..dumps(uniqueActionName)..", vid: "..dumps(vid)..", source A: "..dumps(result[uniqueActionName].source)..", source B: "..dumps(action.source)) end
      if action.namespace ~= 'common' then
  for uniqueActionName,action in pairs(getNormalActions(active)) do
    if result[uniqueActionName] and result[uniqueActionName].source ~= action.source then log("E", "", "Detected duplication of action: "..dumps(uniqueActionName)..", vid: "..dumps(vid)..", source A: "..dumps(result[uniqueActionName].source)..", source B: "..dumps(action.source)) end
    result[uniqueActionName] = action
  for uniqueActionName,action in pairs(getNormalActions(active)) do
    if result[uniqueActionName] and result[uniqueActionName].source ~= action.source then log("E", "", "Detected duplication of action: "..dumps(uniqueActionName)..", vid: "..dumps(vid)..", source A: "..dumps(result[uniqueActionName].source)..", source B: "..dumps(action.source)) end
    result[uniqueActionName] = action
  for uniqueActionName,action in pairs(getNormalActions(active)) do
    if result[uniqueActionName] and result[uniqueActionName].source ~= action.source then log("E", "", "Detected duplication of action: "..dumps(uniqueActionName)..", vid: "..dumps(vid)..", source A: "..dumps(result[uniqueActionName].source)..", source B: "..dumps(action.source)) end
    result[uniqueActionName] = action
  for uniqueActionName,action in pairs(getNormalActions(active)) do
    if result[uniqueActionName] and result[uniqueActionName].source ~= action.source then log("E", "", "Detected duplication of action: "..dumps(uniqueActionName)..", vid: "..dumps(vid)..", source A: "..dumps(result[uniqueActionName].source)..", source B: "..dumps(action.source)) end
    result[uniqueActionName] = action
    end
    log('E', 'bindings', "Couldn't process deprecated action "..action..": "..dumps(core_input_deprecatedActions[action]))
    return
  if core_input_categories[c.cat] == nil then
    log('W', 'bindings', 'Invalid category '..dumps(c.cat)..' defined for '..dumps(actionName).."' action. Suggested fix: modify the 'cat' action field to a valid category, or add the category to categories.lua")
  end
  if core_input_categories[c.cat] == nil then
    log('W', 'bindings', 'Invalid category '..dumps(c.cat)..' defined for '..dumps(actionName).."' action. Suggested fix: modify the 'cat' action field to a valid category, or add the category to categories.lua")
  end
    ctxStr = 'elua'
    log('E', 'bindings', 'Replacing deprecated "slua" context with "elua", for action: '..dumps(actionName))
  end
  if     ctxStr == 'ts'    then
    log("E", "", "The 'ts' context is deprecated. please use tlua. Action: "..dumps(actionName))
    ctx.type = COMMAND_CONTEXT_TS
  elseif ctxStr == 'ui'    then
    log("E", "", "The ui context is deprecated. please use tlua and guihooks. Action: "..dumps(actionName))
  elseif ctxStr == 'vlua'  then ctx.type = COMMAND_CONTEXT_VLUA
  if actsOnUp and not actsOnDown then
    log("W", "", "Action "..dumps(actionName).." uses 'onUp' instead of 'onDown', which adds input lag. If you're the author of this action, please double check and see if you can switch to 'onDown' instead.")
  end
@/lua/ge/extensions/core/audio.lua

  -- log("I", "onFirstUpdate", 'found bank files'..dumps(bankFiles))

  -- log("I", "populateAssetBanks", 'Asset banks: '..dumps(asset_banks))
  return asset_banks

  -- log("I", "populateMetaBanks", 'Meta banks: '..dumps(meta_banks))
  return meta_banks

  --log("I", "populateAssetBanks", 'Asset banks: '..dumps(asset_banks))
  --log("I", "populateMetaBanks", 'Meta banks: '..dumps(meta_banks))
  --log("I", "populateAssetBanks", 'Asset banks: '..dumps(asset_banks))
  --log("I", "populateMetaBanks", 'Meta banks: '..dumps(meta_banks))
  --log("I", "onFirstUpdate", 'Ambients banks: '..dumps(ambient_banks))
  --log("I", "populateMetaBanks", 'Meta banks: '..dumps(meta_banks))
  --log("I", "onFirstUpdate", 'Ambients banks: '..dumps(ambient_banks))
end
@/lua/vehicle/controller/hydraulics/hydraulicsCombustionEngineControl.lua
    if not controlledEngine then
      log("E", "hydraulicsIdleRaise.init", "Can't find relevant engine with name: " .. dumps(relevantEngineName))
      return
    if not relevantPump then
      log("D", "hydraulicsIdleRaise.init", "Can't find relevant pump with name: " .. dumps(relevantPumpName))
    end
    elseif relevantElectricsNames then
      log("E", "hydraulicsIdleRaise.init", "Found wrong type for relevantElectrics, expected table, actual data: " .. dumps(jbeamData.relevantElectrics))
      return
@/lua/vehicle/extensions/scenario/functionFreezer.lua
      else
        log("D", "functionFreezer", "Attempted to freeze a function that is already frozen. Ignoring... "..dumps(funcString))
      end
      if loadstring("return "..funcString.."_freeze_backup")() == nil then
        log("E", "functionFreezer", "Attempted to unfreeze a function that was never frozen. Ignoring... "..dumps(funcString))
      else
      else
        log("E", "functionFreezer", "Cannot add action to freeze list (\""..dumps(functionString).."\"), it's not a function: "..dumps(func))
      end
      else
        log("E", "functionFreezer", "Cannot add action to freeze list (\""..dumps(functionString).."\"), it's not a function: "..dumps(func))
      end
    else
      log("E", "functionFreezer", "Cannot add action to freeze list, it doesn't exist: "..dumps(functionString))
    end
  end
  log("D", "functionFreezer", "Added "..dumps(tableSize(functionNames)).." functions to freeze list")
end
@/lua/common/jbeam/slotSystem.lua
  local source = deepcopy(source_raw)
  --log('I', "jbeam.unifyParts",string.rep(" ", level).."* merging part "..tostring(source.partName).."{".. tostring(source) .. "}["..dumps(source.slotType).."] => "..tostring(target.partName).." ["..tostring(target.slotType).."] ... ")
  -- walk and merge all sections
        if not partFitsSlot(chosenPart, slotDef) then
          log('E', 'slotSystem', 'Chosen part has wrong slot type. Required is ' .. tostring(slotDef.type) .. ' provided by part ' .. tostring(userPartName) .. ' is ' .. dumps(chosenPart.slotType) .. '. Resetting to default')
          chosenPart, chosenPartName = nil, nil
@/lua/ge/extensions/gameplay/statistic.lua
      if extensions[extensionName] then
        -- log("E","ld",dumps(extensions[extensionName]));
        addSchedule(extensions[extensionName].workload)
  end
  -- log("E", "_runCallback "..name, dumps(cbs).."\t career="..dumps(callbacksCareer[name]).."\t gen="..dumps(callbacks[name]))
  if not cbs then return end
  end
  -- log("E", "_runCallback "..name, dumps(cbs).."\t career="..dumps(callbacksCareer[name]).."\t gen="..dumps(callbacks[name]))
  if not cbs then return end
  end
  -- log("E", "_runCallback "..name, dumps(cbs).."\t career="..dumps(callbacksCareer[name]).."\t gen="..dumps(callbacks[name]))
  if not cbs then return end
  if name==nil then log("E", "metricAdd", "invalid metric name") return end
  if value==nil then log("E", "metricAdd", "invalid value metric="..dumps(name)) return end
  local oldEntry = deepcopy(fileData.entries[name])
  if timers[name] then
    log("W","timerStart", "Timer "..dumps(name).." already started. will be ignored")
    return
  if not timers[name] then
    log("W","timerStop", "Timer "..dumps(name).." not started. will be ignored")
    return 0
  if not target then
    log("E", "callbackRemove", "no callback registered for `"..dumps(name).."`")
    return false
  end
  log("E", "callbackRemove", "callback not found for `"..dumps(name).."`")
  return false
  --   levelFolder =
  --   log("E","1", "levelFolder="..dumps(levelFolder))
  --   log("E","2", "getMissionFilename="..dumps(getMissionFilename()))
  --   log("E","1", "levelFolder="..dumps(levelFolder))
  --   log("E","2", "getMissionFilename="..dumps(getMissionFilename()))
  -- else
    missionId = gameplay_missions_missionManager.getForegroundMissionId()
    -- log("I","startAct", "missionId="..dumps(missionId))
    --small_island/crawl/002-CTrialsA
local function _callbackTest(name,old,new)
  log("E","_callbackTest", dumps(name).."\t"..dumps(old.value).."\t"..dumps(new.value).."\t"..dumps(new.career))
  callbackRegister("vehicle/burnout.time", new.value+2 ,_callbackTest, new.career)
local function _callbackTest(name,old,new)
  log("E","_callbackTest", dumps(name).."\t"..dumps(old.value).."\t"..dumps(new.value).."\t"..dumps(new.career))
  callbackRegister("vehicle/burnout.time", new.value+2 ,_callbackTest, new.career)
local function _callbackTest(name,old,new)
  log("E","_callbackTest", dumps(name).."\t"..dumps(old.value).."\t"..dumps(new.value).."\t"..dumps(new.career))
  callbackRegister("vehicle/burnout.time", new.value+2 ,_callbackTest, new.career)
local function _callbackTest(name,old,new)
  log("E","_callbackTest", dumps(name).."\t"..dumps(old.value).."\t"..dumps(new.value).."\t"..dumps(new.career))
  callbackRegister("vehicle/burnout.time", new.value+2 ,_callbackTest, new.career)
local function onWorldReadyState(worldReadyState)
  -- log("E","onWorldReadyState", "fgAct="..dumps(missionId))
end
local function onUiChangedState(toState, fromState)
  -- log("E","onUiChangedState", dumps(toState))
  if "scenario-start" == toState then
  -- data.nodes = nil
  -- log("E","onScenarioLoaded", dumps(data))
  startActivity()
  -- data.nodes = nil
  -- log("E","onScenarioLoaded", dumps(data))
  metricAdd("scenario/finished",1)
  -- data.nodes = nil
  -- log("E","onScenarioLoaded", dumps(data))
  startActivity()
      if im.BeginTabItem("module") then
        im.TextUnformatted("activity: "..dumps(currentActivity))
        im.TextUnformatted("mod: "..dumps(currentMod))
        im.TextUnformatted("activity: "..dumps(currentActivity))
        im.TextUnformatted("mod: "..dumps(currentMod))
        im.TextUnformatted("level: "..dumps(currentLevel))
        im.TextUnformatted("mod: "..dumps(currentMod))
        im.TextUnformatted("level: "..dumps(currentLevel))
        if im.TreeNode1("Timers") then
          for k,v in pairs(timers) do
            im.TextUnformatted(k..": "..dumps(v))
          end
          if v.max then
            im.TextUnformatted(k..": "..dumps(v))
          else
          else
            im.TextUnformatted(k..": v="..dumps(v.value))
          end
      if im.BeginTabItem("entries career") then
        --im.TextUnformatted("save : "..dumps(type(fileNameCareer))..dumps(string.len(fileNameCareer or "") )..dumps(fileNameCareer))
        if fileDataCareer then
      if im.BeginTabItem("entries career") then
        --im.TextUnformatted("save : "..dumps(type(fileNameCareer))..dumps(string.len(fileNameCareer or "") )..dumps(fileNameCareer))
        if fileDataCareer then
      if im.BeginTabItem("entries career") then
        --im.TextUnformatted("save : "..dumps(type(fileNameCareer))..dumps(string.len(fileNameCareer or "") )..dumps(fileNameCareer))
        if fileDataCareer then
            if v.max then
              im.TextUnformatted(k..": "..dumps(v))
            else
            else
              im.TextUnformatted(k..": v="..dumps(v.value))
            end
          for k,v in pairs(callbacks) do
            im.TextUnformatted(k..": v="..dumps(v))
          end
          for k,v in pairs(callbacksCareer) do
            im.TextUnformatted(k..": v="..dumps(v))
          end
@/lua/ge/extensions/gameplay/missions/unlocks/conditions/missionConditions.lua
  local mission = gameplay_missions_missions.getMissionById(id)
  if not mission then log("E","","Trying to get progress for nonexistent mission: " .. dumps(id)) return false end
  local pKeys = progressKey
  local mission = gameplay_missions_missions.getMissionById(id)
  if not mission then log("E","","Trying to getTargetString: for nonexistent mission: " .. dumps(id)) return "Missing Mission: " .. dumps(id) end
  if progressKey == 'default' or progressKey == nil or progressKey == '' then
  local mission = gameplay_missions_missions.getMissionById(id)
  if not mission then log("E","","Trying to getTargetString: for nonexistent mission: " .. dumps(id)) return "Missing Mission: " .. dumps(id) end
  if progressKey == 'default' or progressKey == nil or progressKey == '' then
@/lua/ge/extensions/career/modules/delivery/general.lua
    }
    if not cargo.weight then log("W","","No weight on cargo? " .. dumps(cargo.name)) dump(cargo) end
        --  dParcelManager.getLocationLabelShort({type="facilityParkingspot", facId = fac.id, psPath = ps:getPath()}),
        --  dumps(dProgress.isFacilityVisible(fac.id)),
        --  dumps(targetFacilityIds[fac.id] and true or false)
        --  dumps(dProgress.isFacilityVisible(fac.id)),
        --  dumps(targetFacilityIds[fac.id] and true or false)
        --  ))
@/lua/ge/extensions/editor/flowgraphEditor.lua
                im.EndDisabled()
                ui_flowgraph_editor.tooltip("No File Found under " .. dumps(file) .. " !")
              end
@/lua/ge/extensions/editor/missionPlaybook.lua
        end
        dump(m.id .. " -> " .. dumps(isTier))
        useMission = useMission and isTier
local function drawElement(e)
  --im.Text(dumps(e))
end
@/lua/ge/extensions/freeroam/freeroam.lua
        mgr.removeOnStopping = true -- make mgr self-destruct when level is ended.
        log("I", "Flowgraph loading", "Loaded level-associated flowgraph from file "..dumps(path))
      else
@/lua/ge/extensions/flowgraph/nodes/gameplay/race/pathEndTransform.lua
    elseif self.path.endNode == -1 then
      log("W","","No end node found! It should be explicitely marked in the race editor." .. dumps(self.id).."!")
    end
@/lua/common/extensions.lua
    if not tableIsEmpty(toPrint) then
      log('D', logTag, 'Force resolved cycle dependencies for: '..dumps(toPrint))
    end
      for k, v in pairs(failedModules) do
        log('W', logTag, '    ' .. tostring(k) .. ' dependencies not resolved: '..dumps(v))
      end

    --print("Unloading "..vmType.." extension: "..dumps(extName, extPath).."\n"..debug.tracesimple())
    --print("Unloading "..vmType.." extension: "..dumps(extName, extPath))
    --print("Unloading "..vmType.." extension: "..dumps(extName, extPath).."\n"..debug.tracesimple())
    --print("Unloading "..vmType.." extension: "..dumps(extName, extPath))
  if not isAvailable(extPath) then
    log('E', logTag, 'extension unavailable: ' .. dumps(extName)..' at location: '..dumps(extPath))
    return
  if not isAvailable(extPath) then
    log('E', logTag, 'extension unavailable: ' .. dumps(extName)..' at location: '..dumps(extPath))
    return

  --print("Loading "..vmType.." extension: "..dumps(extName, extPath).."\n"..debug.tracesimple())
  --print("Loading "..vmType.." extension: "..dumps(extName, extPath))
  --print("Loading "..vmType.." extension: "..dumps(extName, extPath).."\n"..debug.tracesimple())
  --print("Loading "..vmType.." extension: "..dumps(extName, extPath))
  --dump{vmType, "LOADING EXT: ", extPath}
  if type(m) ~= 'table' then
    log('E', 'logtag', 'Module does not return the module exports M. is "return M" missing at the end of the file? Extension unavailable: ' .. dumps(extName)..' at location: '..dumps(extPath))
    return
  if type(m) ~= 'table' then
    log('E', 'logtag', 'Module does not return the module exports M. is "return M" missing at the end of the file? Extension unavailable: ' .. dumps(extName)..' at location: '..dumps(extPath))
    return
        else
          log('W', logTag, "Loading extension enty is not valid. It should be a string. entry = " .. dumps(v))
        end
        if m.onExtensionLoaded then
          -- log('I','','  '..m.__extensionName__..'.onExtensionLoaded('..dumps(deserializedData[m.__extensionName__])..')')
          res = m.onExtensionLoaded(deserializedData[m.__extensionName__])
        if m and type(m.onInit) == 'function' then
          -- log('I','','  '..m.__extensionName__..'.onInit('..dumps(deserializedData[m.__extensionName__])..')')
          m.onInit(deserializedData[m.__extensionName__])
  -- This is performance sensitive, please disable transient debug code
  -- dump("Extension Hook: " .. funcName .. " : " .. dumps(... or {}))
  local funcList = luaExtensionFuncs[funcName]
  -- This is performance sensitive, please disable transient debug code
  -- dump("Extension Hook: " .. funcName .. " : " .. dumps(... or {}))
  local funcList = luaExtensionFuncs[funcName]
  for j, m in ipairs(resolvedModules) do
    log("I", "", " - ".. m.__extensionName__ .. " : " .. dumps(m.dependencies))
  end
        else
          log('W', logTag, "Disabling extension from serialization entry is not valid. It should be a string. entry = " .. dumps(v))
        end
    if not parentExtension.__extensionName__ then
      log('E', '', 'Parent extension is not a valid extension: ' .. dumps(parentExtension))
      return
@/lua/ge/extensions/flowgraph/states.lua
  local state = self.states[id]
  if not state then log("E","","Could not find state to start: " .. dumps(id)) return end
  local name = "State ".. state.name.."/"..id
  log("D","","State has been started: " ..name)
  self.mgr:logEvent("State started: " ..state.name,"S","The state "..name.. " has been started.\n - Transition Stack data added: " .. dumps(transData).."\n - Stack: " .. dumpsz(state.transitionStack,2),{type = 'graph',graph = state.graph})
end
  local state = self.states[id]
  if not state then log("E","","Could not find state to stop: " .. dumps(id)) return end
  local name = "State ".. state.name.."/"..id
    if link.sourceNode.nodeType == "states/stateEntry" and link.targetNode.nodeType == "states/stateExit" then
      log("E","","Connection fron Entry to Exit detected. This groupstate is invalid and will be ignored completely. " .. dumps(graph.name))
      return
    table.insert(deps, state.extProxy.extName)
    --dump(state.id .. dumps(state.ports))
  end
        local ids = self:getStateIdsForDepth(port.stopDepth)
        log("D","","Exiting groupstate. Stopping these states: " .. dumps(ids) .. " because of stopdepth: " .. dumps(port.stopDepth))
        for _, id in ipairs(ids) do
        local ids = self:getStateIdsForDepth(port.stopDepth)
        log("D","","Exiting groupstate. Stopping these states: " .. dumps(ids) .. " because of stopdepth: " .. dumps(port.stopDepth))
        for _, id in ipairs(ids) do
      if onStates[id][2] or onStates[id][3] then
        log("D","","Adding to transition stack of " .. dumps(self.states[id].name).."/"..dumps(id)..":")
        for key, val in pairs(onStates[id][3] or {}) do
      if onStates[id][2] or onStates[id][3] then
        log("D","","Adding to transition stack of " .. dumps(self.states[id].name).."/"..dumps(id)..":")
        for key, val in pairs(onStates[id][3] or {}) do
@/lua/ge/extensions/gameplay/markerInteraction.lua
              end
              --simpleDebugText3d(dumps(marker.cluster.clusterId), marker.cluster.pos, 0.25)
            end
  end
  --print("Force forceReevaluateOpenPrompt " .. dumps(forceReevaluateOpenPrompt))
  forceReevaluateOpenPrompt = false
@/lua/ge/extensions/editor/api/roadRiver.lua
    if not road then --this will happen if one name will begin with numbers
      log("E","", "Invalid DecalRoad name "..dumps(name).." Please rename it.")
    else
@/lua/ge/extensions/gameplay/rally/notebook/missionSettings.lua

  log("D", logTag, dumps(paths))
@/lua/ge/extensions/ui/gridSelectorUtils/tilesModule.lua
            defaultTile.forceAutoFocus = true
            print("Overriding default tile to:"..dumps(defaultTile.key))
            break
@/lua/vehicle/extensions/tech/LINBus/LINBusPeak.lua
  end
  return string.format("0x%x -> %s", msg.FrameId, dumps(data))
end
@/lua/ge/extensions/core/multiseat.lua
  end
  if logEnabled and players > 1 then log((players>1) and "I" or "D", "", "Assigned players: "..dumps(result):gsub("\n", ""):gsub("  ", " ")) end
@/lua/vehicle/input.lua
  if not keysDeprecatedWarned then
    log("E", "", "Vehicle " .. dumps(vehiclePath) .. " tried to use input.keys[" .. dumps(key) .. "] which is outdated. The vehicle creator should instead use vehicle-specific bindings (see https://go.beamng.com/vehicleSpecificBindings for more info)")
    keysDeprecatedWarned = true
  if not keysDeprecatedWarned then
    log("E", "", "Vehicle " .. dumps(vehiclePath) .. " tried to use input.keys[" .. dumps(key) .. "] which is outdated. The vehicle creator should instead use vehicle-specific bindings (see https://go.beamng.com/vehicleSpecificBindings for more info)")
    keysDeprecatedWarned = true
      if foundSteeringHydro and not next(rearWheels) then
        log("W", "", "Unable to identify any rear wheels for front wheel: "..dumps(wd1.name))
      end
      end
      print(string.format("front wheel '%s' has these rear wheels: %s", namef, dumps(namesr)))
    end
          lockTypeWarned = true
          log("E", "", "Unsupported steering lock type: " .. dumps(lockType))
        end
  if M.state[itype] == nil then -- probably a vehicle-specific input
    log("W", "", "The vehicle-specific input event " .. dumps(itype) .. " was not defined, so gamepad smoothing, keyboard smoothing, and safe range of values is unknown. The vehicle creator should define this input event type, for example executing lua code such as 'input.state[" .. dumps(itype) .. "] = { minLimit=xxx, maxLimit=xxx, smootherKBD=..., smootherPAD=... }' during vehicle initialization (please search input.lua for more context). As safety fallback, a default definition will be used, which may or may not be suitable")
    M.state[itype] = getDefaultState(itype)
  if M.state[itype] == nil then -- probably a vehicle-specific input
    log("W", "", "The vehicle-specific input event " .. dumps(itype) .. " was not defined, so gamepad smoothing, keyboard smoothing, and safe range of values is unknown. The vehicle creator should define this input event type, for example executing lua code such as 'input.state[" .. dumps(itype) .. "] = { minLimit=xxx, maxLimit=xxx, smootherKBD=..., smootherPAD=... }' during vehicle initialization (please search input.lua for more context). As safety fallback, a default definition will be used, which may or may not be suitable")
    M.state[itype] = getDefaultState(itype)
  if slowdownEnabled and slowdownStartSpeed > slowdownEndSpeed then
    log("W", "", "Invalid configuration for slower steering at high speed. Sanitizing by swapping: [" .. dumps(slowdownStartSpeed) .. ".." .. dumps(slowdownEndSpeed) .. "]")
    slowdownStartSpeed, slowdownEndSpeed = slowdownEndSpeed, slowdownStartSpeed
  if slowdownEnabled and slowdownStartSpeed > slowdownEndSpeed then
    log("W", "", "Invalid configuration for slower steering at high speed. Sanitizing by swapping: [" .. dumps(slowdownStartSpeed) .. ".." .. dumps(slowdownEndSpeed) .. "]")
    slowdownStartSpeed, slowdownEndSpeed = slowdownEndSpeed, slowdownStartSpeed
  if limitEnabled and limitStartSpeed > limitEndSpeed then
    log("W", "", "Invalid configuration for limit steering at high speed. Sanitizing by swapping: [" .. dumps(limitStartSpeed) .. ".." .. dumps(limitEndSpeed) .. "]")
    limitStartSpeed, limitEndSpeed = limitEndSpeed, limitStartSpeed
  if limitEnabled and limitStartSpeed > limitEndSpeed then
    log("W", "", "Invalid configuration for limit steering at high speed. Sanitizing by swapping: [" .. dumps(limitStartSpeed) .. ".." .. dumps(limitEndSpeed) .. "]")
    limitStartSpeed, limitEndSpeed = limitEndSpeed, limitStartSpeed
@/lua/ge/extensions/flowgraph/pin.lua
    if type(self.type) == 'table' then
      typeTxt = typeTxt .. ' types: ' .. dumps(self.type)
    else
    if connectedLink and connectedLink.targetPin == self then
      typeTxt = 'Connected type: ' .. dumps(connectedLink.sourcePin.type)
      val = connectedLink.sourcePin._value
@/lua/common/utils/simpleHttpServer.lua
local function handle(req)
  --print('new request: ' .. dumps(req))
@/lua/ge/extensions/flowgraph/nodes/util/loadLevel.lua
  if self.state ~= 4 then
    --log("I","","Working " .. self.state .. " " .. dumps(self.primed))
    self.primed = nil
@/lua/ge/extensions/util/wsTest.lua
  else
    log('E', '', 'unknown command: ' .. dumps(data))
  end
        else
          log('E', '', 'Unable to decode json in ws data: ' .. dumps(e))
        end
@/lua/ge/extensions/editor/missionEditor/progressSingle.lua
      im.SameLine()
      im.Checkbox(dumps(star.label.txt), im.BoolPtr(star.unlocked))
      im.PopID()
  im.PushItemWidth(200)
  im.Text("Default Key: " .. dumps(self.missionInstance.defaultProgressKey))
  if im.BeginCombo("Progress Key", self.currentProgressKey) then
  else
    im.TextWrapped(dumps(self.formattedSaveData))
  end
      end
      im.Text(dumps(self.missionInstance.saveData or {}))
    else
        -- display char limit
        im.Text("(char limit: "..dumps(self._text[2]/8-2)..")")
      end
@/lua/ge/extensions/editor/api/dynamicDecals.lua
  if M.debug then
    print(string.format("%s.addMaskDecal()\ndecalData:\n%s\n### ######## ###", logTag, dumps(decalData)))
  end
  if M.debug then
    print(string.format("%s.addDecal()\ndecalData:\n%s\n### ######## ###", logTag, dumps(decalData)))
  end
    if M.debug then
      print(string.format("%s.addPathDataPoint()\nlayerData:\n%s\n### ######## ###", logTag, dumps(layerData)))
    end
  if M.debug then
    print(string.format("%s.addFillLayer()\nlayerData:\n%s\n### ######## ###", logTag, dumps(layerData)))
  end
  if M.debug then
    print(string.format("%s.addTextureFillLayer()\nlayerData:\n%s\n### ######## ###", logTag, dumps(layerData)))
  end
  if M.debug then
    print(string.format("%s.addGroup()\nlayerData:\n%s\n### ######## ###", logTag, dumps(layerData)))
  end
  if M.debug then
    print(string.format("%s.addLinkedSet()\nlayerData:\n%s\n### ######## ###", logTag, dumps(layerData)))
  end
  if M.debug then
    print(string.format("%s.addBrushStrokeLayer()\nlayerData:\n%s\n### ######## ###", logTag, dumps(layerData)))
  end
  if M.debug then
    print(string.format("%s.bakeLayers(layers)\nresult:\n%s\n### ######## ###", logTag, dumps(res)))
  end
  if M.debug then
    print(string.format("%s.highlightLayer(decal)\ndecal:\n%s\n### ######## ###", logTag, dumps(layer_table)))
  end
  if M.debug then
    print(string.format("%s.highlightLayerByUid(decal)\ndecal:\n%s\n### ######## ###", logTag, dumps(layer)))
  end
@/lua/vehicle/scriptai.lua
local function startFollowing(_inScript, _timeOffset, _loopCounter, _loopType, _externalForce)
  -- print(">>> AI.startFollowing: " .. dumps(inScript))
  -- inScript = testrec
@/lua/ge/extensions/core/highscores.lua

  log('I', 'highscores', 'Writing Highscore for '..levelName.."/"..scenarioName.."/"..configKey .. ' = ' .. dumps(record))
@/lua/ge/extensions/scenario/scenarios.lua
          else
            log("E", logTag, "Couldn't find vehicle: "..dumps(vehicleName))
          end
      else
        log('D', logTag, "Can't unload scenario extension:" .. dumps(e))
      end
          else
            log('E', logTag, 'unable to find waypoint: ' .. dumps(wp))
          end
      log('I', "tickPreStart", 'Searching for vehicles: Found ' .. #vehicles)
      -- log('I', "tickPreStart", 'userSelectedVehicle: '..dumps(scenario.userSelectedVehicle))
      local model = scenario.userSelectedVehicle.model
          local vehicleData = extractVehicleData(vehicleId)
          -- log('I', "tickPreStart", '     checking : vehicle '..tostring(vehicle.obj:getId()).. '  '..dumps(vehicleData))
          if vehicleId == scenario.userSelectedVehicle.returnedVehicleId then
  if not scenario then return end
  -- log('I', logTag, 'onVehicleSelected called: '..dumps(vehicleData))
  if vehicleData.model and vehicleData.config then
@/lua/ge/extensions/editor/flowgraph/events.lua
      ui_flowgraph_editor.tooltip("Global Time: " .. e.globalTime)
      ui_flowgraph_editor.tooltip("Frame: " .. dumps(e.frame))
      im.NextColumn()
@/lua/ge/extensions/gameplay/statisticModules/watchRollover.lua
      -- else
      --   log("I","","rol timeout r" ..dumps(lastRoof + TIMEOUT > simTime).."\tup="..dumps(lastUpright + TIMEOUT*2 > simTime))
      end
      -- else
      --   log("I","","rol timeout r" ..dumps(lastRoof + TIMEOUT > simTime).."\tup="..dumps(lastUpright + TIMEOUT*2 > simTime))
      end
  end
  -- print( dumps(vup.z).."\t"..dumps(vdir:dot(velocity)) .."\ttr="..dumps(triggered) )
end
  end
  -- print( dumps(vup.z).."\t"..dumps(vdir:dot(velocity)) .."\ttr="..dumps(triggered) )
end
  end
  -- print( dumps(vup.z).."\t"..dumps(vdir:dot(velocity)) .."\ttr="..dumps(triggered) )
end
@/lua/vehicle/partCondition.lua
  if not spawnTimeCondition then
    log("E", "partCondition.getCondition", "No spawnTimeCondition found for part: " .. dumps(partId))
    return nil
      function(err)
        log("E", "partCondition.getConditions", "Unable to get condition for partId " .. dumps(partId) .. ":")
        log("E", "partCondition.getConditions", err)
  if not partsCondition then
    log("I", "partCondition.initConditions", "Parts condition not provided for vehicle, assuming fresh vehicle state for vehicle Id: " .. dumps(objectId))
    for partId, _ in pairs(activeParts) do
    else
      log("E", "partCondition.initConditions", "Missing odometer, integrityValue or visualValue for part name " .. dumps(partId) .. " in vehicle " .. dumps(objectId) .. ": " .. dumps(partCondition))
    end
    else
      log("E", "partCondition.initConditions", "Missing odometer, integrityValue or visualValue for part name " .. dumps(partId) .. " in vehicle " .. dumps(objectId) .. ": " .. dumps(partCondition))
    end
    else
      log("E", "partCondition.initConditions", "Missing odometer, integrityValue or visualValue for part name " .. dumps(partId) .. " in vehicle " .. dumps(objectId) .. ": " .. dumps(partCondition))
    end
@/lua/vehicle/extensions/core/quickAccess.lua
    -- TODO: add proper warning/error
    log("W", "quickaccess", "Menu item needs at least a title and an onSelect function callback: " .. dumps(args))
  --return false
  if type(args.level) ~= "string" then
    log("E", "quickaccess", "Menu item level incorrect, needs to be a string: " .. dumps(args))
    return false
@/lua/ge/extensions/gameplay/drag/debug.lua
            im.TextColored(phase.completed and green or red, "Completed")
            im.Text(dumps(phase))
            im.Separator()
@/lua/ge/extensions/statistics/statistics.lua

  -- log('D','statistics', 'setStatProgress called '..vehicleID ..','..statName..','..instanceId..','..dumps(statData))
        if statData[fieldName] ~= nil then
          -- log('D','statistics', 'statData['..fieldName..'] = '..dumps(statData[fieldName]))
          statEntry[fieldName] = statData[fieldName]
  data.scenarioStats = scenarioStats
  --writeFile("statistics_data.txt", dumps(data))
@/lua/ge/extensions/gameplay/rally/tools/devTools.lua
  table.sort(compositors)
  log('I', logTag, 'loaded textCompositors: ' .. dumps(compositors))
  self.compositors = compositors
@/lua/ge/extensions/render/openxr.lua
local function logState()
    log("D", "", "Current OpenXR state: "..dumps(M.state))
end
  else
    log("E", "", "Unknown requested stateString: "..dumps(stateString)". Disabling...")
    M.setStateUI("disabled")
  if request == false and request ~= lastCenterRequest then
    log("D", "", "Headset centered, current OpenXR state:\n"..dumps(M.state))
  end
local function errorDetected(err)
  log("E", "", "An OpenXR error was detected with error ID: "..dumps(err))
  local translationId
    translationId = "unkownType"
    log("E", "", string.format("An OpenXR error was detected, but a wrong error type was passed: %s ('%s')", type(err), dumps(err)))
  end
@/lua/ge/extensions/flowgraph/nodes/ui/imgui/imDialogue.lua
  local remove = nil
  im.Text(dumps(self.options))
  im.Text(tostring(self.id))
@/lua/ge/extensions/core/groundMarkers.lua
        if not map.getMap().nodes[w] then
          log("W","","Could not find WP to build route! Ignoring WP: " .. dumps(w))
        else
@/lua/ge/extensions/core/loadMapCmd.lua
  if not data then return end
  -- log("I", "set", "map ="..tostring(mname).."   a="..dumps(a))
  -- log("I", "set", "startCmd ="..tostring(startCmd).." ignoreStartupCmd="..dumps(ignoreStartupCmd))
  -- log("I", "set", "map ="..tostring(mname).."   a="..dumps(a))
  -- log("I", "set", "startCmd ="..tostring(startCmd).." ignoreStartupCmd="..dumps(ignoreStartupCmd))
  if startCmd and ignoreStartupCmd then
@/lua/ge/extensions/editor/api/object.lua
  editor.clearObjectSelection()
  log('I','','prefabs = '..dumps(prefabInstanceList))
  for i,v in ipairs(prefabInstanceList) do
  end
  dumps(prefabInstanceList)
@/lua/common/jbeam/tableSchema.lua
  if type(rowValue) ~= "table" then
    log('W', "", "*** Invalid table row: "..dumps(rowValue))
    return -1
      if #data[1] ~= ctx.headerSize then
        log('E', '', 'CSV file has mismatching header. Required: ' .. dumps(ctx.header) .. ' - present in file: ' .. dumps(headerCsv))
        return
      if #data[1] ~= ctx.headerSize then
        log('E', '', 'CSV file has mismatching header. Required: ' .. dumps(ctx.header) .. ' - present in file: ' .. dumps(headerCsv))
        return
        if ctx.header[i] ~= data[1][i] then
          log('E', '', 'CSV file has mismatching header column ' .. tostring(i) .. '. Required: ' .. dumps(ctx.header) .. ' - present in file: ' .. dumps(data[1]))
          return
        if ctx.header[i] ~= data[1][i] then
          log('E', '', 'CSV file has mismatching header column ' .. tostring(i) .. '. Required: ' .. dumps(ctx.header) .. ' - present in file: ' .. dumps(data[1]))
          return
        log('W', "", "*** Invalid table header, must be as long as all table cells (plus one additional options column):")
        log('W', "", "*** Table header: "..dumps(ctx.header))
        log('W', "", "*** Mismatched row: "..dumps(rowValue))
        log('W', "", "*** Table header: "..dumps(ctx.header))
        log('W', "", "*** Mismatched row: "..dumps(rowValue))
      end
          log('E', "", "*** unable to parse row, header for entry is missing: ")
          log('E', "", "*** header: "..dumps(ctx.header) .. ' missing key: ' .. tostring(rk) .. ' -- is the section header too short?')
          log('E', "", "*** row: "..dumps(rowValue))
          log('E', "", "*** header: "..dumps(ctx.header) .. ' missing key: ' .. tostring(rk) .. ' -- is the section header too short?')
          log('E', "", "*** row: "..dumps(rowValue))
        else
    if not omitWarnings then
      log('W', "", "*** Invalid table header, must be a list, not a dict: "..dumps(header))
    end
@/lua/ge/extensions/editor/dynamicDecals/vehicleColorPalette.lua
          if im.Button(string.format("Dump##LoadVehicleColorPalette_dumpButton_%d%s", k, guiId)) then
            print(dumps(palette))
          end
@/lua/ge/extensions/flowgraph/nodes/util/customLua.lua
      self:__setNodeError('work', 'Error while executing custom lua: '..code..' ' .. tostring(err))
      self.mgr:logEvent("Node Error in " .. dumps(self.name),"E", 'Error while executing custom lua: '..code..' ' .. tostring(err), {type = "node", node = self})
    end
@/lua/ge/extensions/flowgraph/link.lua
  im.SameLine()
  im.TextUnformatted(dumps(self.sourcePin.type))
  ui_flowgraph_editor.fullDisplay(self.sourcePin._value, self.sourcePin.hardCodeType and self.sourcePin.hardCodeType or self.sourcePin.type)
  ui_flowgraph_editor.fullDisplay(self.sourcePin._value, self.sourcePin.hardCodeType and self.sourcePin.hardCodeType or self.sourcePin.type)
  --im.TextUnformatted(dumps(self.sourcePin._frameLastUsed))
  im.EndTooltip()
@/lua/ge/extensions/gameplay/race/path.lua
        else
          log("E","","Could not find node for conversion from track! " .. dumps(cp))
            for _, p in ipairs(spawnedPrefabs) do
      else
        log("E","","Could not find node for conversion from track! " .. dumps(cp))
          for _, p in ipairs(spawnedPrefabs) do
@/lua/ge/extensions/freeroam/organizations.lua
  else
    log("E","","Could not find organization with id " .. dumps(id))
  end
@/lua/ge/extensions/flowgraph/nodes/logic/booleanExpression.lua
      self.mgr:DrawTypeIcon(pin.type, true, 1)
      ui_flowgraph_editor.tooltip(dumps(pin.type))
      im.SameLine()
@/lua/ge/extensions/core/vehicle/partmgmt.lua
  if not vehicleInfo.default_pc then return end
  log('W', 'main', "Supplied config file: " .. dumps(configData) .. " not found. Using default config instead.")
  return vehicleDir .. vehicleInfo.default_pc .. ".pc"
    else
      log("W", "", "Unable to read json contents for configData file path: "..dumps(configData))
    end
  if not fileData then
    log("W", "", "Problems reading requested configuration: "..dumps(configData))
    configData = getDefaultConfigFileFromDir(vehicleDir, configData)
  if not inData or type(inData) ~= 'table' then
    log('W', "partmgmt.mergeConfig", "invalid argument [" .. type(inData) .. '] = '..dumps(inData))
    return
@/lua/ge/extensions/career/modules/delivery/generator.lua
    for name, ap in pairs(accessPointsByName) do
      print(name .. " -> " .. dumps(ap[typeLookupKey]))
    end
      if not template then
        log("E","","No Template! " .. dumps(generator.logisticTypesLookup))
        for _, item in ipairs(getDeliveryParcelTemplates()) do
      if remainingAttempts <= 0 then
        log("D","","Could not generate items after 10 tries: " .. fac.id.. " -> " .. dumps(generator))
        return
  if not storage then
    log("E","","Missing storage! " .. fac.id .. dumps(generator.generatorLabel))
    return
          if not psFound then
            log("E","missing parking spot DropOff: " .. dumps(name))
          end
    for _, key in ipairs(tableKeysSorted(allTypes)) do
      --print(string.format("%s -> %s", key, dumps(logisticTypeToSystem(key))))
    end
@/lua/common/extensions/ui/flowgraph/editor.lua
      if m.key == self.model then
        self.modelName = dumps(m.Name)
      end
      if m.key == self.config then
        self.configName = dumps(m.value.Name)
      end
          if modelData and modelData.model then
            self.modelName = dumps(modelData.model.Name)
            self.configs = modelData.configs
    im.PushItemWidth(im.GetContentRegionAvailWidth() - 28)
    if im.BeginCombo("##vehType" .. dumps(self.id), self.vehType) then
      for _, t in ipairs({ 'Car', 'Truck', 'Prop', 'Trailer', 'Utility', 'Unknown', 'Any'}) do
    im.PushItemWidth(im.GetContentRegionAvailWidth())
    if im.BeginCombo("##models" .. dumps(self.id), self.modelName .. " [" .. self.model .. "]") then
      for _, m in ipairs(self.models) do
              self.model = m.key
              self.modelName = dumps(m.Name)
              if not onlyModel then
              end
              reason = "Changed Model to " .. dumps(m.Name)
            end
        im.PushItemWidth(im.GetContentRegionAvailWidth())
        if im.BeginCombo("##configs" .. dumps(self.id), self.configName .. " [" .. self.config .. "]") then
          for _, m in ipairs(self.configs) do
          for _, m in ipairs(self.configs) do
            if im.Selectable1((dumps(m.value.Name) .. " [" .. m.key .. "]"), m.key == self.config) then
              self.config = m.key
              self.config = m.key
              self.configName = dumps(m.value.Name)
              self.configPath = "vehicles/" .. self.model .. "/" .. m.key .. ".pc"
              self.configPath = "vehicles/" .. self.model .. "/" .. m.key .. ".pc"
              reason = "Changed Vehicle to " .. dumps(m.value.Name)
            end
            if modelData and modelData.model then
              self.modelName = dumps(modelData.model.Name)
              self.configs = modelData.configs
@/lua/ge/extensions/career/modules/delivery/parcelManager.lua
  if not newLocation or not next(newLocation) then
    log("E","","Trying to set location to nil or empty! " .. dumps(cargoId) .. " -> ".. dumps(newLocation))
  end
  if not newLocation or not next(newLocation) then
    log("E","","Trying to set location to nil or empty! " .. dumps(cargoId) .. " -> ".. dumps(newLocation))
  end
    if cargo.id == cargoId then
      --log("I", "", cargo.name .. " -> " .. dumps(newLocation))
  local cargo = M.getCargoById(cargoId)
  --print("Adding Transient Move to Cargo " .. cargo.name .. " -> " .. dumps(move))
  if cargo._transientMove then
  if cargo._transientMove then
    log("E","",string.format("Cargo %d already has a transient move: %s!", cargoId, dumps(move)))
    return
    if not cargo then
      log("W","","Missing Cargo for transient move? " .. dumps(move))
    else
      if not currentLocation or M.sameLocation(currentLocation, cargo.location) then
        --print("Moved Transient Cargo " .. cargo.name .. " -> " .. dumps(move))
        -- basic cargo fields
        table.insert(remainingCargo, cargo)
        --print("Not moving transient cargo " .. cargo.name .. " -> " .. dumps(move))
      end
@/lua/common/guihooks.lua
  else
    log("E", "", "No csvfile to write to: "..dumps(csvfile)..", "..dumps(csvfilename))
  end
  else
    log("E", "", "No csvfile to write to: "..dumps(csvfile)..", "..dumps(csvfilename))
  end
@/lua/ge/extensions/gameplay/statisticModules/watchJturn.lua
      lastBack = simTime
      -- log("I","","back"..dumps(simTime))
      backingdir:set(vdir)
    if (lastBack + TIMEOUT) < simTime then
      -- log("I","","FRONT 1="..dumps((lastBack + TIMEOUT) < simTime))
      cancel()
  --     else
  --       log("I","","rol timeout r" ..dumps(lastRoof + TIMEOUT > simTime).."\tup="..dumps(lastUpright + TIMEOUT*2 > simTime))
  --     end
  --     else
  --       log("I","","rol timeout r" ..dumps(lastRoof + TIMEOUT > simTime).."\tup="..dumps(lastUpright + TIMEOUT*2 > simTime))
  --     end
  -- end
  -- print( dumps(upWorldVector:dot(vup)).."\t"..dumps(vdir:dot(velocity)) .."\ttr="..dumps(triggered) )
end
  -- end
  -- print( dumps(upWorldVector:dot(vup)).."\t"..dumps(vdir:dot(velocity)) .."\ttr="..dumps(triggered) )
end
  -- end
  -- print( dumps(upWorldVector:dot(vup)).."\t"..dumps(vdir:dot(velocity)) .."\ttr="..dumps(triggered) )
end
@/lua/common/jbeam/sections/events.lua
      if abid ~= ab.cid then
        log('E', 'jbeam.events', 'Trigger cId desync: ' .. dumps(ab) .. ' / ' .. tostring(abid) ..  ' != ' .. tostring(ab.cid))
        goto continue
      else
        log('E', 'trigger', "Trigger not found: " .. dumps(ab))
      end
      if not lnk.targetEventId then
        print("targetEventId is missing: " .. dumps(lnk))
        goto continue2
      if not lnk.triggerId then
        print("triggerId is missing or wrong: " .. dumps(lnk))
        goto continue2
      if not lnk.action then
        print("action is missing: " .. dumps(lnk))
        goto continue2
      if not vehicle.events[lnk.targetEventId] then
        print("targetEvent is missing / wrong: " .. dumps(lnk))
        goto continue2
      if not lnk.triggerId then
        print("triggerId is missing or wrong: " .. dumps(lnk))
        goto continue3
      if not lnk.triggerInput then
        print("triggerInput is missing: " .. dumps(lnk))
        goto continue3
      if not lnk.inputAction then
        print("inputAction is missing: " .. dumps(lnk))
        goto continue3
@/lua/ge/extensions/editor/missionEditor/objectives.lua
  end
  im.tooltip("Paste Rewards: " ..dumps(self.copiedRewards))
  if not self.copiedRewards then
  end
  im.tooltip("Paste Career Setup and Rewards: " ..dumps(self.copiedStars[self.mission.missionType]))
  if not self.copiedStars[self.mission.missionType] then
      end
      im.Text(dumps(self.mission.careerSetup or {}))
    else
        -- display char limit
        im.Text("(char limit: "..dumps(self._text[2]/8-2)..")")
      end
@/lua/ge/extensions/flowgraph/nodes/events/customizedTriggerBox.lua
    else
      --dump("Checking: " .. dumps(cPos))
      --dump("Against: " ..dumps(self.trigger.pos) .. " X: " .. dumps(self.trigger.x) .. "  Y: " .. dumps(self.trigger.y) .. "  Z:".. dumps(self.trigger.z))
      --dump("Checking: " .. dumps(cPos))
      --dump("Against: " ..dumps(self.trigger.pos) .. " X: " .. dumps(self.trigger.x) .. "  Y: " .. dumps(self.trigger.y) .. "  Z:".. dumps(self.trigger.z))
      --dump("Result is: " .. (containsEllipsoid_Point(self.trigger.pos, self.trigger.x, self.trigger.y, self.trigger.z, cPos) and "True" or "False"))
      --dump("Checking: " .. dumps(cPos))
      --dump("Against: " ..dumps(self.trigger.pos) .. " X: " .. dumps(self.trigger.x) .. "  Y: " .. dumps(self.trigger.y) .. "  Z:".. dumps(self.trigger.z))
      --dump("Result is: " .. (containsEllipsoid_Point(self.trigger.pos, self.trigger.x, self.trigger.y, self.trigger.z, cPos) and "True" or "False"))
      --dump("Checking: " .. dumps(cPos))
      --dump("Against: " ..dumps(self.trigger.pos) .. " X: " .. dumps(self.trigger.x) .. "  Y: " .. dumps(self.trigger.y) .. "  Z:".. dumps(self.trigger.z))
      --dump("Result is: " .. (containsEllipsoid_Point(self.trigger.pos, self.trigger.x, self.trigger.y, self.trigger.z, cPos) and "True" or "False"))
      --dump("Checking: " .. dumps(cPos))
      --dump("Against: " ..dumps(self.trigger.pos) .. " X: " .. dumps(self.trigger.x) .. "  Y: " .. dumps(self.trigger.y) .. "  Z:".. dumps(self.trigger.z))
      --dump("Result is: " .. (containsEllipsoid_Point(self.trigger.pos, self.trigger.x, self.trigger.y, self.trigger.z, cPos) and "True" or "False"))
@/lua/ge/extensions/flowgraph/manager.lua
        if not sourcePin or not newPin then
          log('E', logTag, 'unable to recreate link: unable to find pins: ' .. dumps(linkData))
        elseif graph:canCreateLink(sourcePin, newPin) then
        -- link is now obsolete or could not be connected.
        log('E', logTag, 'Link no longer valid: ' .. dumps(linkData))
      end
        if not newPin or not targetPin then
          log('E', logTag, 'unable to recreate link: unable to find pins: ' .. dumps(linkData))
        elseif graph:canCreateLink(newPin, targetPin) then
        -- link is now obsolete or could not be connected.
        log('E', logTag, 'Link no longer valid: ' .. dumps(linkData))
      end
        if not sourcePin or not targetPin then
          log('E', logTag, 'unable to recreate link: unable to find pins: ' .. dumps(linkData))
          if not sourcePin and sourceNode.nodeType == 'util/ghost' then
    end
    --for k, v in pairs(oldIdMap) do print(k .. "=>" .. (v.nodeType ~= nil and "Node" or "Graph") .. dumps(v.name)) end
    -- rebuild stategraph or create new one
        if not status then
          self:logEvent("Error with hook  " .. dumps(h), "E", 'Error while executing Hook ' .. dumps(h) .. ": " .. tostring(err))
        end
        if not status then
          self:logEvent("Error with hook  " .. dumps(h), "E", 'Error while executing Hook ' .. dumps(h) .. ": " .. tostring(err))
        end
  if not disableLogEntryOnFail then
    log("W", logTag, "Unable to locate file for flowgraph " .. dumps(self.name) .. ", in neither of these paths: " .. dumps(files))
  end
  if not disableLogEntryOnFail then
    log("W", logTag, "Unable to locate file for flowgraph " .. dumps(self.name) .. ", in neither of these paths: " .. dumps(files))
  end
@/lua/ge/extensions/editor/util/vehicleSelectUtil.lua
    if modelData and modelData.model then
      self.modelName = dumps(modelData.model.Name)

  im.BeginChild1("##vehicleSelector"..dumps(self.id), im.ImVec2(im.GetContentRegionAvailWidth(), elemCount * elemHeight + elemPadding))

  if im.BeginCombo("##vehicleSelectorTypes"..dumps(self.id), self.vehType) then
    for _, t in ipairs(self.allowedTypes) do
    for _, t in ipairs(self.allowedTypes) do
      if im.Selectable1(t.."##vehicleSelectorTypeNames"..dumps(self.id), t == self.vehType) then
        self.vehType = t
  if self.model then
    label = dumps(self.modelName).." ["..self.model.."]"
  end

  if im.BeginCombo("##vehicleSelectorModels"..dumps(self.id), label) then
    for _, m in ipairs(self.models) do
      local label = m.Name and (m.Name.." ["..m.key.."]")
      if im.Selectable1(label.."##vehicleSelectorModelNames"..dumps(self.id) or m.key, m.key == self.model) then
        self.model = m.key
    if self.configs then
      label = self.config and dumps(self.configName).." ["..self.config.."]" or "(Default)"
    end
    im.PushItemWidth(im.GetContentRegionAvailWidth())
    if im.BeginCombo("##vehicleSelectorConfigs"..dumps(self.id), label) then
      if self.configs then

        if im.Selectable1("(Default)##vehicleSelectorConfigNames"..dumps(self.id), self.config == nil) then
          self.config = nil
        for _, c in ipairs(self.configs) do
          local label = dumps(c.Name).." ["..dumps(c.key).."]"
          if im.Selectable1(label.."##vehicleSelectorConfigNames"..dumps(self.id), c.key == self.config) then
        for _, c in ipairs(self.configs) do
          local label = dumps(c.Name).." ["..dumps(c.key).."]"
          if im.Selectable1(label.."##vehicleSelectorConfigNames"..dumps(self.id), c.key == self.config) then
          local label = dumps(c.Name).." ["..dumps(c.key).."]"
          if im.Selectable1(label.."##vehicleSelectorConfigNames"..dumps(self.id), c.key == self.config) then
            self.config = c.key
          if i == self._hoveredIdx then currPaint = self._hoveredPaint end
          im.ColorEdit4("##vehicleSelectorPaintPreview"..dumps(self.id).."_"..i, self:getPaintPtr(currPaint), im.flags(im.ColorEditFlags_NoPicker, im.ColorEditFlags_NoInputs))
        end
        im.PushItemWidth(im.GetContentRegionAvailWidth())
        if im.BeginCombo("##vehicleSelectorPaints"..dumps(self.id).."_"..i, label) then
          if im.Selectable1("(Default)##vehicleSelectorPaintNames"..dumps(self.id).."_"..i, self[key] == nil) then
        if im.BeginCombo("##vehicleSelectorPaints"..dumps(self.id).."_"..i, label) then
          if im.Selectable1("(Default)##vehicleSelectorPaintNames"..dumps(self.id).."_"..i, self[key] == nil) then
            self[key] = nil
          for _, paint in ipairs(self.paintKeys) do
            if im.Selectable1(paint.."##vehicleSelectorPaintNames"..dumps(self.id).."_"..i, self[key] == paint) then
              self[key] = paint
    im.PushItemWidth(im.GetContentRegionAvailWidth() - 40)
    if editor.uiInputFile("##vehicleSelectorCustom"..dumps(self.id), self.customConfigPtr, nil, nil, {{"Part config files", ".pc"}}, im.InputTextFlags_EnterReturnsTrue) then
      local customConfigPath = ffi.string(self.customConfigPtr)
@/lua/ge/extensions/core/replay.lua
  guihooks.trigger("toastrMsg", {type=level, title="Replay "..level, msg=msg, context=context})
  log(string.gsub(level, "^(.).*", string.upper), "", "Replay msg: "..dumps(level, msg, context))
end
  else
    log("E","",'Will not toggle play from state: '..dumps(M.state.state))
  end
    if map == nil then
      log("E", "", "Cannot start recording replay. Map filename: "..dumps(getMissionFilename()))
    else
@/lua/ge/extensions/gameplay/missions/missionTypes/editorHelper.lua
  if not model or not next(model) then
    table.insert(issues, {label = 'Model set for ' .. e.fieldNameModel ..' does not exist: ' .. dumps(mtd[e.fieldNameModel]), severity='error'})
    return issues
  if not config then
    table.insert(issues, {label = 'Config set for ' .. e.fieldNameConfig ..' does not exist: ' .. dumps(mtd[e.fieldNameConfig]), severity='error'})
    return issues
  if not foundFile then
    return {{label = string.format('File does not exist: %s - fieldName %s does not exist: %s', e.fieldName, dumps(file)), severity = 'error'}}
  end
  if not foundFile then
    return {{label = 'Fixed File set for ' .. e.label .. ' does not exist: ' ..dumps(e.filepathsInMissionfolder), severity = 'error'}}
  end
    if not gameplay_missions_missions.getMissionById(mtd[e.fieldName]) then
      return {{label = 'Mission ID Reference for ' .. e.label .. ' does not exist: ' ..dumps(mtd[e.fieldName]), severity = 'error'}}
    end
    if not fieldsChecked[field] then
      table.insert(issues, {label = 'Extra Missiontype field: ' .. field .. " : ".. dumps(mtd[field]), data={fieldName=field}, fixable=true, severity='warning'})
    end
    editor.uiIconImage(editor.icons.star, imVec16x16 ,imVec4TransparentWhite)
    im.tooltip("Associated to star " .. dumps(e.displayOptions.associatedStars))
  end
      editEnded[0] = false
      --im.Text(string.format("%d - %s", index, dumps(element.hidden)))
      if not element.hidden and (drawFunctions[element.type] or nop)(element, self.mission.missionTypeData, self.mission, self.mouseInfo) then
@/lua/ge/extensions/editor/vehicleEditor/staticEditor/vePartTextView.lua
    im.TextUnformatted(tostring(nodeType) .. ' - ' .. tostring(editNodeIdx))
    im.TextUnformatted('Raw node data: ' .. dumps(node))
    if nodeType == 'string' or nodeType == 'string_single' then
@/lua/ge/extensions/gameplay/missions/progress.lua
local function setSaveSlot(slotName)
  plog("I", "", "Progress Save Slot changed to " .. dumps(slotName))
  savePath = saveRoot .. slotName .. "/"
local function saveMissionSaveData(id, dirtyDate)
  plog("I", "", "Saved Mission Progress for mission id " .. dumps(id))
  local mission = gameplay_missions_missions.getMissionById(id)
  if not mission then
    plog("E", "", "Trying to saveMissionAttempt nonexitent mission by ID: " .. dumps(id))
    return
    else
      plog("E", "", "Could not read permaProgress version file under " .. dumps(permaLogFile))
    end
  jsonWriteFile(permaLogFile, file, true)
  --log("","D",dumps(entry))
end
  if not mission then
    plog("E", "", "Trying to saveMissionAttempt nonexitent mission by ID: " .. dumps(id))
    return
  local aggregateChange = { list = {}, newBestKeysByKey = {} }
  --log("","D",dumps(attempt))
    if not succ then
      plog("E", "", "Error while aggregating attempt for mission ID: " .. dumps(id) .. ". Error follows:")
      plog("E", "", err)
    if not succ then
      plog("E", "", "Error setting up custom mission progress, ID: " .. dumps(id) .. ". Error follows:")
      plog("E", "", err)
  FS:removeFile(backupFile)
  plog("I", "", "Updated Mission Progress for mission id " .. dumps(mission.id) .. " (this log should only appear once)")
        if not career_modules_missionWrapper then
          plog("E", "", "Trying to load mission with career_modules_missionWrapper not loaded but career_career is active ("..dumps(id)..")")
        else
        if not succ then
          plog("E", "", "Error loading custom mission progress, ID: " .. dumps(id) .. ". Error follows:")
          plog("E", "", err)
      -- check for backupFile
      plog("E", "", "Error loading mission save data for ID: " .. dumps(id) .. ". Error follows:")
      plog("E", "", result)
  if not missionInstance.saveData.progress[progressKey] then
    plog("I", "Created Missing Progress for key " .. dumps(progressKey))
    missionInstance.saveData.progress[progressKey] = {
  if not mission then
    plog("E", "", "Trying to missionHasQuickTravelUnlocked nonexistent mission by ID: " .. dumps(id))
    return false
  if not mission then
    plog("E", "", "Trying to missionHasUserSettingsUnlocked nonexistent mission by ID: " .. dumps(id))
    return false
  if not mission then
    plog("E", "", "Trying to formatSaveDataForUi nonexitent mission by ID: " .. dumps(id))
    return
  if not mission then
    plog("E", "", "Trying to saveMissionAttempt nonexitent mission by ID: " .. dumps(id))
    return
  if not mission then
    log("E","","Mission not found! " .. dumps(id))
    return 0, 0, 0
  if not mission then
    plog("E", "", "Trying to saveMissionAttempt nonexitent mission by ID: " .. dumps(id))
    return
    if not career_modules_missionWrapper then
      plog("E", "", "Trying to save mission with career_modules_missionWrapper not loaded but career_career is active ("..dumps(id)..")")
    else
  if not mission then
    plog("E", "", "Trying to saveMissionAttempt nonexitent mission by ID: " .. dumps(id))
    return
    if not career_modules_missionWrapper then
      plog("E", "", "Trying to save mission with career_modules_missionWrapper not loaded but career_career is active ("..dumps(id)..")")
    else
@/lua/ge/extensions/flowgraph/nodes/mission/UpdateDisplayDragRace.lua
function C:updateDisplay(side, finishTime, finishSpeed)
  --log("D","updateDisplay",dumps(side).." = "..dumps(finishTime).." ="..dumps(finishSpeed))
function C:updateDisplay(side, finishTime, finishSpeed)
  --log("D","updateDisplay",dumps(side).." = "..dumps(finishTime).." ="..dumps(finishSpeed))
function C:updateDisplay(side, finishTime, finishSpeed)
  --log("D","updateDisplay",dumps(side).." = "..dumps(finishTime).." ="..dumps(finishSpeed))
@/lua/ge/extensions/editor/forestView.lua
-- local function selectForestItemData(item, addToSelection)
--   log('I','','selecting item: '..dumps(item))
--   editor.selection = {}
  table.sort(forestItemsInfo, forestItemSortByNameFunc)
  -- log('I','','populateForestItems: '..dumps(forestItemsInfo))
end
@/lua/ge/extensions/editor/util/editorElementHelper.lua
  if not model or not next(model) then
    table.insert(issues, {label = 'Model set for ' .. e.fieldNameModel ..' does not exist: ' .. dumps(ctd[e.fieldNameModel]), severity='error'})
    return issues
  if not config then
    table.insert(issues, {label = 'Config set for ' .. e.fieldNameConfig ..' does not exist: ' .. dumps(ctd[e.fieldNameConfig]), severity='error'})
    return issues
  if not foundFile then
    return {{label = 'File set for ' .. e.fieldName .. ' does not exist: ' ..dumps(file), severity = 'error'}}
  end
  if not foundFile then
    return {{label = 'Fixed File set for ' .. e.label .. ' does not exist: ' ..dumps(e.filepathsInfolder), severity = 'error'}}
  end
    if not gameplay_missions_missions.getMissionById(ctd[e.fieldName]) then
      return {{label = 'Mission ID Reference for ' .. e.label .. ' does not exist: ' ..dumps(ctd[e.fieldName]), severity = 'error'}}
    end
    if not fieldsChecked[field] then
      table.insert(issues, {label = 'Extra '..self.typeDataFieldName..' field: ' .. field .. " : ".. dumps(ctd[field]), data={fieldName=field}, fixable=true, severity='warning'})
    end
    editor.uiIconImage(editor.icons.star, imVec16x16 ,imVec4TransparentWhite)
    im.tooltip("Associated to star " .. dumps(e.displayOptions.associatedStars))
  end
@/lua/ge/client/init.lua
  -- log('I','client', "initBaseClient start...")
  -- dumps(debug.tracesimple())
  local canvas = scenetree.findObject("Canvas")
  -- log('I','main_entry','scenetree.findObject("Canvas") = '..dumps(canvas))
  if canvas then
    if cursor then
      -- log('I','main_entry','scenetree.findObject("DefaultCursor") = '..dumps(cursor))
      canvas:setCursor(cursor)
@/lua/ge/extensions/core/cameraModes/observer.lua
  if not cam then
    log("E", "", "Associated observer camera does not exist: "..dumps(self.cameraName))
    return
    if targetObject then
      --log('A','observer','self.targetOverride: ' ..dumps(self.targetOverride))
      data.pos = vec3(targetObject:getPosition())
@/lua/vehicle/ve_utils.lua
    if type(rowValue) ~= "table" then
      log("W", "tableFromHeaderTable", "*** Invalid table row: " .. dumps(rowValue))
      return false
        log("W", "tableFromHeaderTable", "*** Invalid table header, must be as long as all table cells (plus one additional options column):")
        log("W", "tableFromHeaderTable", "*** Table header: " .. dumps(header))
        log("W", "tableFromHeaderTable", "*** Mismatched row: " .. dumps(rowValue))
        log("W", "tableFromHeaderTable", "*** Table header: " .. dumps(header))
        log("W", "tableFromHeaderTable", "*** Mismatched row: " .. dumps(rowValue))
        return false
@/lua/ge/extensions/campaign/campaigns.lua
    processedScenario = scenario_scenariosLoader.loadScenario(scenarioPath, key)
    -- log('D', logTag, 'campaign scenarioPath: ' .. location.path..'  '..dumps(processedScenario))
    local vehicleData = campaign.state.userVehicle
    -- log('I', logTag, 'campaign.state.userVehicle = '..dumps(campaign.state.userVehicle))
@/lua/ge/extensions/core/vehicleBridge.lua
M.logCommandFunction = function(veh, command)
  log("D","","To Vehicle " .. dumps(veh:getId()) .." -> " ..dumps(command))
end
M.logCommandFunction = function(veh, command)
  log("D","","To Vehicle " .. dumps(veh:getId()) .." -> " ..dumps(command))
end
  if deserializedData.failReason then
    log("E","","Callback with id " .. callbackId.." failed to execute on vehicle side: " .. dumps(deserializedData.failReason))
  end
@/lua/ge/extensions/gameplay/missions/proceduralMissionGenerators/timeTrialMissions.lua
    for _, race in ipairs(level.tracks) do
      --dump(dumps(race.ignoreAsMission or "fals").."  ".. dumps(race.trackName) )
      if not race.ignoreAsMission then
    for _, race in ipairs(level.tracks) do
      --dump(dumps(race.ignoreAsMission or "fals").."  ".. dumps(race.trackName) )
      if not race.ignoreAsMission then
@/lua/ge/extensions/flowgraph/nodes/types/setVariable.lua
  if not var then
    log("E","","Invalid name for variable " .. dumps(name))
    return
@/lua/vehicle/extensions/gameplayStatistic.lua
local function metricAdd(name,value,aggregate)
  obj:queueGameEngineLua("gameplay_statistic.metricAdd("..dumps(name)..","..tostring(value)..","..tostring(aggregate)..")")
end
local function metricSet(name,value,aggregate)
  obj:queueGameEngineLua("gameplay_statistic.metricSet("..dumps(name)..","..tostring(value)..","..tostring(aggregate)..")")
end
@/lua/ge/extensions/core/modmanager.lua
  modname = modname:gsub('.zip$', '')
  --log('I', 'getModNameFromPath', "getModNameFromPath path = "..path .."    name = "..dumps(modname) )
  return modname
          table.insert(mods[modname].conflict,{file=vf, path=FS:getFileRealPath(vf)})
          log('I', 'checkMod', "Mods "..modname.." have a file conflict "..dumps({file=vf, path=FS:getFileRealPath(vf)}) )
        end
local function updateZIPEntry(filename)
  --log('I', 'updateZIPEntry', "filename : "..dumps(filename))
  local modname = getModNameFromPath(filename)
  if not zip:openArchiveName( filename, "R" ) and FS:fileExists(filename) then
    local errMsg = "Invalid ZIP file: "..dumps(filename)
    log("E","updZipEntry", errMsg)
  elseif mods[modname] and mods[modname].fullpath ~= filename then --fix for FS changes (mandatory root slash), could also fix reactivation when you mode around
    log('D', 'updateZIPEntry', "mod changed path: " .. dumps(mods[modname].fullpath) .. " -> " .. dumps(filename))
    mods[modname].fullpath = filename
  elseif mods[modname] and mods[modname].fullpath ~= filename then --fix for FS changes (mandatory root slash), could also fix reactivation when you mode around
    log('D', 'updateZIPEntry', "mod changed path: " .. dumps(mods[modname].fullpath) .. " -> " .. dumps(filename))
    mods[modname].fullpath = filename
        if not mods[modname].modData then
          local errMsg = "Coudn't decode repo manifest for "..dumps(v2).." inside "..dumps(filename)
          log('E', "checkDuplicatedMods", errMsg)
        if not mods[modname].modData then
          local errMsg = "Coudn't decode repo manifest for "..dumps(v2).." inside "..dumps(filename)
          log('E', "checkDuplicatedMods", errMsg)
  for _, filepath in ipairs(filelist) do
    -- log('D', 'checkDuplicatedMods', "filepath = ".. dumps(filepath) )
    local modname = getModNameFromPath(filepath)
          if modID then
            -- log('D', 'checkDuplicatedMods', "found repo metadate = "..dumps(modID))
            local jsonContent = zip:readFileEntryByIdx(k2)
              if not modInfo then
                log('E', "checkDuplicatedMods", "Coudn't decode repo manifest for "..dumps(v2).." inside "..dumps(filepath))
                break
              if not modInfo then
                log('E', "checkDuplicatedMods", "Coudn't decode repo manifest for "..dumps(v2).." inside "..dumps(filepath))
                break
              end
              -- log('D', 'checkDuplicatedMods', dumps(modInfo.filename).."  "..modID.."  "..dumps(modInfo.last_update).."  res="..tostring(modInfo.resource_date).."  rel="..tostring(modInfo.release_date).."")
              if idModList[modID] ~= nil then
              end
              -- log('D', 'checkDuplicatedMods', dumps(modInfo.filename).."  "..modID.."  "..dumps(modInfo.last_update).."  res="..tostring(modInfo.resource_date).."  rel="..tostring(modInfo.release_date).."")
              if idModList[modID] ~= nil then
                  local mi = modInfo or {}
                  log('D', 'checkDuplicatedMods', "modInfo = ".. dumps(mi) )
                  log('D', 'checkDuplicatedMods', "modID = "..tostring(mi.modID or mi.tagid or filepath).." => "..tostring(mi.lastUpdate) )
                end
                log('D', 'checkDuplicatedMods', "needManualAction = "..dumps(needManualAction))
              else
  for _,v in pairs(oldModToDelete) do
    log('E', 'chkDupli.oldModToDelete', dumps(v.name))
    M.deleteMod(v.name)
    M.deleteMod(v.name)
    if FS:fileExists(v.path) then log('D', 'checkDuplicatedMods', "delete '"..tostring(v.path).."' = "..dumps(FS:removeFile(v.path)) ) end
    if FS:fileExists(v.path) then
      log('E', 'initDB.modScript', 'Failed to execute ' .. v)
      log('E', 'initDB.modScript', dumps(ret))
    end
  if FS:remove(filename) ~= 0 then
    log('E', 'safeDelete', 'unable to delete : ' .. dumps(filename))
    return false
  for mod,files in pairs(mods) do
    log("W", "", "Possibly broken mod detected: "..dumps(mod)..". It overwrites the following files:")
    for _,file in ipairs(files) do
    for _,file in ipairs(files) do
      log("W", "", " - Overwriten file: "..dumps(file))
    end
    else
      log("E","_getModFsNotifFileList", "Invalid ZIP file: "..dumps(mods[modname].fullpath))
      mountedFilesChange = {}
    else
      log("E","activateMod.modScript", "Invalid ZIP file: "..dumps(mods[modname].fullpath))
    end

  log('D', 'activateMod', 'modScripts' .. dumps(modScripts))
      log('E', 'activateMod.modScript', 'Failed to execute ' .. v)
      log('E', 'activateMod.modScript', dumps(ret))
    end

  log('D', 'activateAllMods', 'modScripts' .. dumps(modScripts))
      log('E', 'activateAllMods.modScript', 'Failed to execute ' .. v)
      log('E', 'activateAllMods.modScript', dumps(ret))
    end
    Engine.Platform.taskbarSetProgressState(4)
    guihooks.trigger('modmanagerError', 'Error : could not safe delete: ' .. dumps(filename))
    log('E', 'unpackMod', 'Error : could not safe delete: ' .. dumps(filename))
    guihooks.trigger('modmanagerError', 'Error : could not safe delete: ' .. dumps(filename))
    log('E', 'unpackMod', 'Error : could not safe delete: ' .. dumps(filename))
    messageBox("BeamNG - Modmager",
    messageBox("BeamNG - Modmager",
    "The zip file could not be deleted properlly.\nThis happens when it's open by another software.\nYou need to close that software and manually delete the file bellow :\n"..dumps(filename), 0, 0)
  end
  if not FS:directoryExists(dirPath) then
    log('E', 'packMod', 'path is not a folder path='..dumps(dirPath))
    return false
  end
  log('D', 'checkUpdate', dumps(data))
      end
      --print(dumps( request.responseData) )
      if not request.responseData and request.responseData.ok == 1 then
@/lua/ge/extensions/editor/scriptAIManager.lua
local function onVehicleSubmitRecording(vehId, data)
  --print(' * got data: ' .. tostring(vehId)) -- .. ' : ' .. dumps(data))
  recordings[vehId] = data
@/lua/ge/extensions/career/modules/milestones/general.lua
    if not milestones.saveData.general[milestone.id].claimedStep then
      log("W","",string.format("Milestone %s has no 'claimedStep' in its savedata. Please addd it you make custom savedata!", dumps(milestone.id)))
    end
      local name = c.getLabel(s, -1, -1)
      if type(name) == "table" then name = translateLanguage(name.txt,name.txt, true) .. (dumps(name.context or {})) end
      local target = c.getTarget(s)
      local desc = c.getDescription(s, -1, target)
      if type(desc) == "table" then desc = translateLanguage(desc.txt,desc.txt, true) .. (dumps(desc.context or {})) end
@/lua/vehicle/sounds.lua
            -- print (string.format("Suspension : %s color=%.2f  attack=%.0f  volume=%.2f  decay=%.0f  pitch=%.2f  maxStress=%.0f", bm.soundFile, bm.colorFactor, bm.attackFactor, bm.volumeFactor, bm.decayFactor, bm.pitchFactor, bm.maxStress))
            -- print (string.format("Suspension : %s color=%s  attack=%s  volume=%s  decay=%s  pitch=%s  maxStress=%s", dumps(bm.soundFile), dumps(bm.colorFactor), dumps(bm.attackFactor), dumps(bm.volumeFactor), dumps(bm.decayFactor), dumps(bm.pitchFactor), dumps(bm.maxStress)))
            -- print (string.format("Suspension : %s color=%.2f  attack=%.0f  volume=%.2f  decay=%.0f  pitch=%.2f  maxStress=%.0f", bm.soundFile, bm.colorFactor, bm.attackFactor, bm.volumeFactor, bm.decayFactor, bm.pitchFactor, bm.maxStress))
            -- print (string.format("Suspension : %s color=%s  attack=%s  volume=%s  decay=%s  pitch=%s  maxStress=%s", dumps(bm.soundFile), dumps(bm.colorFactor), dumps(bm.attackFactor), dumps(bm.volumeFactor), dumps(bm.decayFactor), dumps(bm.pitchFactor), dumps(bm.maxStress)))
            -- print (string.format("Suspension : %s color=%.2f  attack=%.0f  volume=%.2f  decay=%.0f  pitch=%.2f  maxStress=%.0f", bm.soundFile, bm.colorFactor, bm.attackFactor, bm.volumeFactor, bm.decayFactor, bm.pitchFactor, bm.maxStress))
            -- print (string.format("Suspension : %s color=%s  attack=%s  volume=%s  decay=%s  pitch=%s  maxStress=%s", dumps(bm.soundFile), dumps(bm.colorFactor), dumps(bm.attackFactor), dumps(bm.volumeFactor), dumps(bm.decayFactor), dumps(bm.pitchFactor), dumps(bm.maxStress)))
            -- print (string.format("Suspension : %s color=%.2f  attack=%.0f  volume=%.2f  decay=%.0f  pitch=%.2f  maxStress=%.0f", bm.soundFile, bm.colorFactor, bm.attackFactor, bm.volumeFactor, bm.decayFactor, bm.pitchFactor, bm.maxStress))
            -- print (string.format("Suspension : %s color=%s  attack=%s  volume=%s  decay=%s  pitch=%s  maxStress=%s", dumps(bm.soundFile), dumps(bm.colorFactor), dumps(bm.attackFactor), dumps(bm.volumeFactor), dumps(bm.decayFactor), dumps(bm.pitchFactor), dumps(bm.maxStress)))
            -- print (string.format("Suspension : %s color=%.2f  attack=%.0f  volume=%.2f  decay=%.0f  pitch=%.2f  maxStress=%.0f", bm.soundFile, bm.colorFactor, bm.attackFactor, bm.volumeFactor, bm.decayFactor, bm.pitchFactor, bm.maxStress))
            -- print (string.format("Suspension : %s color=%s  attack=%s  volume=%s  decay=%s  pitch=%s  maxStress=%s", dumps(bm.soundFile), dumps(bm.colorFactor), dumps(bm.attackFactor), dumps(bm.volumeFactor), dumps(bm.decayFactor), dumps(bm.pitchFactor), dumps(bm.maxStress)))
            -- print (string.format("Suspension : %s color=%.2f  attack=%.0f  volume=%.2f  decay=%.0f  pitch=%.2f  maxStress=%.0f", bm.soundFile, bm.colorFactor, bm.attackFactor, bm.volumeFactor, bm.decayFactor, bm.pitchFactor, bm.maxStress))
            -- print (string.format("Suspension : %s color=%s  attack=%s  volume=%s  decay=%s  pitch=%s  maxStress=%s", dumps(bm.soundFile), dumps(bm.colorFactor), dumps(bm.attackFactor), dumps(bm.volumeFactor), dumps(bm.decayFactor), dumps(bm.pitchFactor), dumps(bm.maxStress)))
            -- print (string.format("Suspension : %s color=%.2f  attack=%.0f  volume=%.2f  decay=%.0f  pitch=%.2f  maxStress=%.0f", bm.soundFile, bm.colorFactor, bm.attackFactor, bm.volumeFactor, bm.decayFactor, bm.pitchFactor, bm.maxStress))
            -- print (string.format("Suspension : %s color=%s  attack=%s  volume=%s  decay=%s  pitch=%s  maxStress=%s", dumps(bm.soundFile), dumps(bm.colorFactor), dumps(bm.attackFactor), dumps(bm.volumeFactor), dumps(bm.decayFactor), dumps(bm.pitchFactor), dumps(bm.maxStress)))
@/lua/ge/extensions/editor/api/gui.lua
  if atlasInfo.iconDuplicates then
    log("E","createIconAtlas","Duplicate editor icons: " .. dumps(atlasInfo.iconDuplicates))
  end
@/lua/ge/extensions/flowgraph/nodes/gameplay/rally/loop/getLoopExecutionVar.lua
    else
      log('E', logTag, 'execution variable not found: '..dumps(self.pinIn.name.value))
    end
@/lua/ge/extensions/ui/freeroamSelector/general.lua
function M.executeDoubleClick(item)
  log("I", "", "Freeroam selector execute double click: " .. dumps(item))
  local details = M.getDetails(item)
@/lua/ge/extensions/editor/prefabInstanceEditor.lua
local function onEditorInspectorHeaderGui(inspectorInfo)
  -- log('I','prefabInstance','inspectorInfo = '..dumps(inspectorInfo))
  local showSubSection = true
  end
  -- log('I','prefabInstance','inspectorInfo = '..dumps(inspectorInfo))
@/lua/ge/extensions/editor/aiViz.lua
local function enableDrawMode(mode, enabled)
  if drawModes[mode] == nil then log('E','',"Drawmode " .. dumps(mode) .. " does not exist for aiViz!") return end
  -- disable all other drawmodes
@/lua/ge/extensions/core/recoveryPrompt.lua
local function setButtonActiveById(id, a)
  if not buttonOptions[id] then log("W","","Tried to set active for button, but the id couldnt be found: " .. dumps(id)) return end
  buttonOptions[id].active = a
local function getButtonActiveById(id)
  if not buttonOptions[id] then log("W","","Tried to get enable for button, but the id couldnt be found: " .. dumps(id)) return end
  return buttonOptions[id].active
local function setButtonEnabledById(id, e)
  if not buttonOptions[id] then log("W","","Tried to set enable for button, but the id couldnt be found: " .. dumps(id)) return end
  buttonOptions[id].enabled = e
  if not id then log("E","","Tried creating button without ID!" ) return end
  if buttonOptions[id] and not buttonOptions[id].customButton then log("E","Tried to add a button, but it already exists and it's not a custom button, so it's not allowed! " .. dumps(id)) return end
  -- fill some defaults for the button if it doesnt have them
    label = label or "No Label!",
    atFadeFunction = atFadeFunction or function() log("E","","No Function set for " .. dumps(id) ) end,
    order = order or highestOrderPlusOne(),
  if buttonOptions[id] then
    log("E","","Button for Id already exists and will be overwritten: " .. dumps(id) .. ": " .. dumps(buttonOptions[btn.id]))
  end
  if buttonOptions[id] then
    log("E","","Button for Id already exists and will be overwritten: " .. dumps(id) .. ": " .. dumps(buttonOptions[btn.id]))
  end
local function removeButtonById(id)
  if not buttonOptions[id] then log("W","","Tried removing button, but it doesnt exist: " .. dumps(id)) return end
  if not buttonOptions[id].customButton then log("E","Tried to remove a button, but it's not a custom button, so it's not allowed! " .. dumps(id)) return end
  if not buttonOptions[id] then log("W","","Tried removing button, but it doesnt exist: " .. dumps(id)) return end
  if not buttonOptions[id].customButton then log("E","Tried to remove a button, but it's not a custom button, so it's not allowed! " .. dumps(id)) return end
  buttonOptions[id] = nil
        local disableReason = reason or (not enabled and "Disabled")
        local uniqueID = "recovery_"..id .."_".. dumps(target)
        local btn = {
@/lua/ge/extensions/editor/vehicleEditor/staticEditor/veJBeamModifierLeakVis.lua
      if not (vEditor.vdata.nodes[cid] == currCount) then
        log('E', '', "node ids mismatch: expected: " .. dumps(lineData[1]) .. " got: " .. dumps(cid))
        valid = false
      if not (vEditor.vdata.nodes[cid] == currCount) then
        log('E', '', "node ids mismatch: expected: " .. dumps(lineData[1]) .. " got: " .. dumps(cid))
        valid = false
      if not (id1 == lineData[1] or id1 == lineData[2] and id2 == lineData[1] or id2 == lineData[2]) then
        log('E', '', "beam ids mismatch: expected: " .. dumps(lineData[1]) .. "," .. dumps(lineData[2]) .. " got: " .. dumps(id1) .. "," .. dumps(id2))
        valid = false
      if not (id1 == lineData[1] or id1 == lineData[2] and id2 == lineData[1] or id2 == lineData[2]) then
        log('E', '', "beam ids mismatch: expected: " .. dumps(lineData[1]) .. "," .. dumps(lineData[2]) .. " got: " .. dumps(id1) .. "," .. dumps(id2))
        valid = false
      if not (id1 == lineData[1] or id1 == lineData[2] and id2 == lineData[1] or id2 == lineData[2]) then
        log('E', '', "beam ids mismatch: expected: " .. dumps(lineData[1]) .. "," .. dumps(lineData[2]) .. " got: " .. dumps(id1) .. "," .. dumps(id2))
        valid = false
      if not (id1 == lineData[1] or id1 == lineData[2] and id2 == lineData[1] or id2 == lineData[2]) then
        log('E', '', "beam ids mismatch: expected: " .. dumps(lineData[1]) .. "," .. dumps(lineData[2]) .. " got: " .. dumps(id1) .. "," .. dumps(id2))
        valid = false
      if --vehDataModValType == "number" and modValType == "number" and not (vehDataModVal - 0.001 < modVal and vehDataModVal + 0.001 > modVal)
        dumps(vehDataModVal) ~= dumps(modVal) then
        log('E', '', sectionName .. "." .. mod .. ": expected: " .. dumps(vehDataModVal) .. " " .. vehDataModValType .. " got: " .. dumps(modVal) .. " " .. modValType)
      if --vehDataModValType == "number" and modValType == "number" and not (vehDataModVal - 0.001 < modVal and vehDataModVal + 0.001 > modVal)
        dumps(vehDataModVal) ~= dumps(modVal) then
        log('E', '', sectionName .. "." .. mod .. ": expected: " .. dumps(vehDataModVal) .. " " .. vehDataModValType .. " got: " .. dumps(modVal) .. " " .. modValType)
        dumps(vehDataModVal) ~= dumps(modVal) then
        log('E', '', sectionName .. "." .. mod .. ": expected: " .. dumps(vehDataModVal) .. " " .. vehDataModValType .. " got: " .. dumps(modVal) .. " " .. modValType)
        valid = false
        dumps(vehDataModVal) ~= dumps(modVal) then
        log('E', '', sectionName .. "." .. mod .. ": expected: " .. dumps(vehDataModVal) .. " " .. vehDataModValType .. " got: " .. dumps(modVal) .. " " .. modValType)
        valid = false
    print("Full JBeam Item Data:")
    print(dumps(item))
    print("Algorithm's Current Modifiers:")
    print("Algorithm's Current Modifiers:")
    print(dumps(newSectionModifiers))
    testSectionsWrongCounter[sectionName] = testSectionsWrongCounter[sectionName] + 1
@/lua/ge/extensions/flowgraph/modules/vehicleModule.lua
    -- instantly get the damage tracker
    --veh:queueLuaCommand('damageTracker.registerDamageUpdateCallback(function(a,b) obj:queueGameEngineLua("core_flowgraphManager.getManagerByID('..self.mgr.id..'):broadcastCall(\'onVehiclePartDamageTracker\',"..obj:getId()..","..dumps(a)..","..dumps(b)..")") end)')
  end
    -- instantly get the damage tracker
    --veh:queueLuaCommand('damageTracker.registerDamageUpdateCallback(function(a,b) obj:queueGameEngineLua("core_flowgraphManager.getManagerByID('..self.mgr.id..'):broadcastCall(\'onVehiclePartDamageTracker\',"..obj:getId()..","..dumps(a)..","..dumps(b)..")") end)')
  end
    if #data.couplerOffset > 1 then
      log("I","","Vehicle " .. id .. " has more than one tow hitch! This might cause problems. " .. dumps(data.couplerOffset))
    end
@/lua/ge/extensions/core/repository.lua
local function downloadProgressCallback(r)
  --log('I', 'repository', 'request progress: ' .. dumps(r))
  --log('D', 'repository', 'request progress: ' .. string.format('% 4.2f', r.dlnow / r.dltotal * 100) .. ' %. Speed: ' .. string.format('%2.2f kB/s', r.dlspeed / 1024))
  local function downloadFinishedCallback(r)
    --log('D', 'repository', 'downloadFinishedCallback: ' .. dumps(r))
    downloadProgressCallback(r)
    if r.responseCode ~= 200 then
      log('E', 'repo.downloadFinishedCallback', 'unable to download file: ' .. tostring(targetFilename) .. ' / reply: ' .. dumps(r))
      guihooks.trigger("toastrMsg", {type="error", title="Repo Error", msg="Could not download the file (Check console for details)"})
    if not FS:fileExists(r.outfile) then
      log('E', 'repo.downloadFinishedCallback', 'unable to download file: ' .. tostring(uri) .. ' / File missing: ' .. tostring(r.outfile) .. ' / reply: ' .. dumps(r))
      guihooks.trigger("toastrMsg", {type="error", title="Repo Error", msg="Could not download the file, File missing"})
    end
    -- log('I', 'repo.finish', "finished="..dumps(finished))
    if finished then
      local updmods = {}
      -- log('I', 'repo.finish', "updateQueue"..dumps(updateQueue) )
      for k,v in pairs(updateQueue) do
      end
      --print("updmods = "..dumps(updmods))
      core_online.apiCall('s2/v4/modUpdateSuccess', function(request)
  end
  --log('D', 'repo.requestModOffline', "dump="..dumps(data))
  guihooks.trigger('ModReceived', data )
  end
  log('D', 'repo.addUpdateQueue',"reason="..data.reason.."   "..dumps(data.id).." - "..dumps(core_modmanager.getModNameFromID(data.id)))
  table.insert(updateQueue,data)
  end
  log('D', 'repo.addUpdateQueue',"reason="..data.reason.."   "..dumps(data.id).." - "..dumps(core_modmanager.getModNameFromID(data.id)))
  table.insert(updateQueue,data)
local function updateOneMod(id)
  log('D', 'updateAllMods', "updateOneMod id="..dumps(id))
  updatingRepo = true
@/lua/common/jbeamWriter.lua
  else
    log("E", "jsonWriteFile", "Unable to open file for writing: "..dumps(filename))
    print(debug.tracesimple())
@/lua/ge/extensions/gameplay/missions/unlocks.lua
    if #backward[m.id] > 0 then
      --log(m.id .. " Backwards: " .. dumps(backward[m.id]))
    end
    if #forward[m.id] > 0 then
      --log(m.id .. " Forwards: " .. dumps(forward[m.id]))
    end
@/lua/ge/extensions/freeroam/facilities.lua
  local listName = facilityTypeToListName[type] or "none"
  if listName == "none" then log("E","","Tried to get facility of type " .. dumps(type)..", which is not a valid type! ("..dumps(tableKeysSorted(facilityTypeToListName))) end
  local listName = facilityTypeToListName[type] or "none"
  if listName == "none" then log("E","","Tried to get facility of type " .. dumps(type)..", which is not a valid type! ("..dumps(tableKeysSorted(facilityTypeToListName))) end
  end
  log("E","","Could not find facility with id " .. dumps(id))
end
  local listName = facilityTypeToListName[type] or "none"
  if listName == "none" then log("E","","Tried to get facilities of type " .. dumps(type)..", which is not a valid type! ("..dumps(tableKeysSorted(facilityTypeToListName))) end
  local listName = facilityTypeToListName[type] or "none"
  if listName == "none" then log("E","","Tried to get facilities of type " .. dumps(type)..", which is not a valid type! ("..dumps(tableKeysSorted(facilityTypeToListName))) end
    if not psFound then
      log("W","","Missing Spot for facility" .. dumps(facility.id).."?: " .. dumps(parkingSpotName))
    end
    if not psFound then
      log("W","","Missing Spot for facility" .. dumps(facility.id).."?: " .. dumps(parkingSpotName))
    end
  if tableIsEmpty(sites) then
    log("W","","Could not find sites file for facility: " .. dumps(facility.sitesFile))
  end
    if not psFound then
      log("W","","Missing Spot for facility" .. dumps(facility.id).."?: " .. dumps(v))
    end
    if not psFound then
      log("W","","Missing Spot for facility" .. dumps(facility.id).."?: " .. dumps(v))
    end
  if tableIsEmpty(sites) then
    log("W","","Could not find sites file for facility: " .. dumps(facility.sitesFile))
  end
    else
      log("E","","AABB is invalid: " .. dumps(aabb))
    end
  else
    log("E","","Could not load facility zone data! " .. dumps(data.id))
  end
  else
    log("E","","No objects found for facilitiy " .. f.id .. " ! " .. dumps(f.doors))
  end
@/lua/vehicle/extensions/odometer.lua
  if ((relativeOdometer - submitedStatOdo) / submitedTime) > 150 then --550kph
    --log("I","sub","Too fast".. dumps((relativeOdometer-submitedStatOdo) / submitedTime))
    submitedStatOdo = relativeOdometer
  local model = v.vehicleDirectory:match("/vehicles/([^/]+)")
  -- log("E","stat","m="..dumps(model).."\t"..dumps(relativeOdometer-submitedStatOdo))
  extensions.gameplayStatistic.metricAdd("vehicle/odometer/" .. model .. ".length", relativeOdometer - submitedStatOdo)
  local model = v.vehicleDirectory:match("/vehicles/([^/]+)")
  -- log("E","stat","m="..dumps(model).."\t"..dumps(relativeOdometer-submitedStatOdo))
  extensions.gameplayStatistic.metricAdd("vehicle/odometer/" .. model .. ".length", relativeOdometer - submitedStatOdo)
@/lua/ge/simTimeAuthority.lua
  if type(val) ~= "number" then
    log("E","bullettime","Tried to set non-numeric speed: "..dumps(val))
    return
@/lua/ge/extensions/gameplay/drift/display.lua
    im.Text("Drift display")
    im.TextWrapped(dumps(guiData))
    im.End()
@/lua/ge/extensions/core/levels.lua
    if info.hidden ~= nil then
      log("W", "", "Found deprecated flag 'hidden' in level: "..dumps(l.levelName)..". The flag has been renamed to 'isAuxiliary'")
      if info.isAuxiliary == nil then
    if string.find(level.fullfilename, ".mis") and jsonLevels[level.levelName] then
      --log('D', '', 'not adding .mis level as .json format is existing for the same level: ' .. dumps(level))
    else
  if not success then
    log("E", "", "Wrong 'spawnVehicle' parameter used on level load request: "..dumps(nextSpawnVehicle))
  end
    if not modelData or not next(modelData) then
      log("E", "", "Model: "..dumps(model).." does not exist. using default vehicle instead.")
      nextSpawnVehicle = core_vehicles.getDefaultVehicleParams()
    if not vehicle then
      log("E", "", "Failed to spawn vehicle: "..dumps(nextSpawnVehicle))
    end
    if not expandedLevelPath or expandedLevelPath == "" then
      log('E', '', 'Expanded mission file is invalid: "'..dumps(expandedLevelPath)..'" from "'..tostring(levelPath)..'"')
      core_gamestate.requestExitLoadingScreen('')
        else
          log("E","","Could not find spawnpoint object! " .. dumps(spawnPoint.objectname))
        end
@/lua/ge/extensions/gameplay/rally/driveline/pointList.lua
        pos,
        String(dumps(point.ts)),
        ColorF(clr_txt[1], clr_txt[2], clr_txt[3], 1),
@/lua/ge/extensions/ui/console.lua
    if not logs[newEntry] then
      log("E","runFilter", "entry not found newEntry="..dumps(newEntry).." head="..dumps(logsHead).." tail="..dumps(logsTail))
      return
    if not logs[newEntry] then
      log("E","runFilter", "entry not found newEntry="..dumps(newEntry).." head="..dumps(logsHead).." tail="..dumps(logsTail))
      return
    if not logs[newEntry] then
      log("E","runFilter", "entry not found newEntry="..dumps(newEntry).." head="..dumps(logsHead).." tail="..dumps(logsTail))
      return
function ConsoleInputCallback(data)
  --log('D', 'console', '>>> inputCallback 1 - ' .. dumps(data) .. ' / ' .. tostring(#history))
  if data.EventFlag == im.InputTextFlags_CallbackHistory then
      end
      --log('D', 'console', 'up prev=' .. dumps(prevHistoryPos) .. ' pos=' .. dumps(historyPos))
    elseif data.EventKey == im.Key_DownArrow then
      end
      --log('D', 'console', 'up prev=' .. dumps(prevHistoryPos) .. ' pos=' .. dumps(historyPos))
    elseif data.EventKey == im.Key_DownArrow then
      if prevHistoryPos == -1 then historyPos = 1 end
      --log('D', 'console', 'dw prev=' .. dumps(prevHistoryPos) .. ' pos=' .. dumps(historyPos))
    end
      if prevHistoryPos == -1 then historyPos = 1 end
      --log('D', 'console', 'dw prev=' .. dumps(prevHistoryPos) .. ' pos=' .. dumps(historyPos))
    end
  local slashed = split(line,"\n")
  -- print("slash "..dumps(slashed))
  if #slashed == 0 then slashed[1]="" end --fix for empty print

      filterCur = dumps(levelFilter) .. ffi.string(originFilterImC)
      if filterCur ~= filterOld then
      --   lines_count = lines_count+1
      --   filidx = filidx..dumps(k)..","
      --   table.insert(idxfilter,k)
      -- im.CalcListClipping(lines_count, lines_height, displayStart, displayEnd);
      -- print("cursorY="..dumps(im.GetCursorPosY()).."\tset="..dumps((im.GetCursorPosY() + (displayStart[0]*2 * lines_height))))
      -- im.SetCursorPosY(im.GetCursorPosY() + (displayStart[0]*2 * lines_height));
      -- im.CalcListClipping(lines_count, lines_height, displayStart, displayEnd);
      -- print("cursorY="..dumps(im.GetCursorPosY()).."\tset="..dumps((im.GetCursorPosY() + (displayStart[0]*2 * lines_height))))
      -- im.SetCursorPosY(im.GetCursorPosY() + (displayStart[0]*2 * lines_height));
      -- im.SetCursorPosY(im.GetCursorPosY() + (displayStart[0]*2 * lines_height));
      -- print("lcount="..lines_count.."\t"..dumps(displayStart[0]).."-"..dumps(displayEnd[0]).."\tlen="..dumps(displayEnd[0]-displayStart[0]))
      -- im.SetCursorPosY(im.GetCursorPosY() + (displayStart[0]*2 * lines_height));
      -- print("lcount="..lines_count.."\t"..dumps(displayStart[0]).."-"..dumps(displayEnd[0]).."\tlen="..dumps(displayEnd[0]-displayStart[0]))
      -- im.SetCursorPosY(im.GetCursorPosY() + (displayStart[0]*2 * lines_height));
      -- print("lcount="..lines_count.."\t"..dumps(displayStart[0]).."-"..dumps(displayEnd[0]).."\tlen="..dumps(displayEnd[0]-displayStart[0]))
          -- end
          -- -- print("logsHead="..dumps(logsHead).."\toffset="..dumps(offset))
          -- prtidx = prtidx .. dumps(i+logsHead+offset)..","
          -- end
          -- -- print("logsHead="..dumps(logsHead).."\toffset="..dumps(offset))
          -- prtidx = prtidx .. dumps(i+logsHead+offset)..","
          -- -- print("logsHead="..dumps(logsHead).."\toffset="..dumps(offset))
          -- prtidx = prtidx .. dumps(i+logsHead+offset)..","
          -- local l = logs[i+logsHead+offset]
          local l = logs[logFiltered[i+1]]
          -- prtidx = prtidx .. dumps(idxfilter[i+1])..","
          if not l then

          --print("> history 1 = " .. dumps(history))
          if history[historyPos] ~= cmd then
          end
          --print("> history 2 = " .. dumps(history))
          historyPos = -1
            if sandboxCmd[0] then
              log("I", "exec", "GELua(Sandboxed) < "..dumps(cmd))
              local res, out = executeLuaSandboxed(cmd, 'GEConsole')
              --print(" RES = " .. tostring(res))
              --print(" OUT = " .. dumps(out))
              if res then
                else
                  log("I", "exec", "return > "..dumps(res))
                end
              log("I", "exec", "GELua(Queue) hex_dump="..hex_dump(cmd))
              log("I", "exec", "GELua(Queue) < "..dumps(cmd))
              Lua:queueLuaCommand(cmd)
            if not cmd:find(";[\n\r\t ]-$") then cmd = cmd..";" end --append semi-colon if missing
            log("I", "exec", "GE TS < "..dumps(cmd))
            TorqueScript.eval(cmd)
          elseif comboCurrentItem[0] == 2 then
            log("I", "exec", "GE UI < "..dumps(cmd))
            be:queueJS(cmd)
            if not v then log("E","exec","Selected vehicle dosn't exist");refreshCombo();goto skipcmd end
            log("I", "exec", "veh "..tostring(vid).." < "..dumps(cmd))
            v:queueLuaCommand(cmd)
  im.End() --Begin
  -- log("D","stats", "#logs="..dumps(#logs).." | #logFiltered="..dumps(#logFiltered).. " | update "..dumps(tim:stopAndReset()))
  -- rollAvgAppend(rollAvgUpdate, tim:stopAndReset())
  im.End() --Begin
  -- log("D","stats", "#logs="..dumps(#logs).." | #logFiltered="..dumps(#logFiltered).. " | update "..dumps(tim:stopAndReset()))
  -- rollAvgAppend(rollAvgUpdate, tim:stopAndReset())
  im.End() --Begin
  -- log("D","stats", "#logs="..dumps(#logs).." | #logFiltered="..dumps(#logFiltered).. " | update "..dumps(tim:stopAndReset()))
  -- rollAvgAppend(rollAvgUpdate, tim:stopAndReset())
  --     print("----------")
  --     print("lH="..dumps(lines_height).."\tframeH="..dumps(im.GetFrameHeightWithSpacing()))
  --     while(im.ImGuiListClipper_Step(listClip)) do
  --     print("----------")
  --     print("lH="..dumps(lines_height).."\tframeH="..dumps(im.GetFrameHeightWithSpacing()))
  --     while(im.ImGuiListClipper_Step(listClip)) do
  --     while(im.ImGuiListClipper_Step(listClip)) do
  --       print(dumps(listClip.DisplayStart).."--"..dumps(listClip.DisplayEnd))
  --       for i = listClip.DisplayStart,listClip.DisplayEnd,1 do
  --     while(im.ImGuiListClipper_Step(listClip)) do
  --       print(dumps(listClip.DisplayStart).."--"..dumps(listClip.DisplayEnd))
  --       for i = listClip.DisplayStart,listClip.DisplayEnd,1 do
  --           im.TableSetColumnIndex(j-1)
  --           im.TextUnformatted("data["..dumps(j).."]["..dumps(i).."]")
  --         end
  --           im.TableSetColumnIndex(j-1)
  --           im.TextUnformatted("data["..dumps(j).."]["..dumps(i).."]")
  --         end
  --     --     im.TableSetColumnIndex(j-1)
  --     --     im.TextUnformatted("data["..dumps(j).."]["..dumps(i).."]")
  --     --   end
  --     --     im.TableSetColumnIndex(j-1)
  --     --     im.TextUnformatted("data["..dumps(j).."]["..dumps(i).."]")
  --     --   end
  end
  strI = strI..", "..dumps(vobj.licenseText).."\0"
  return strI
@/lua/ge/extensions/core/vehicles.lua
    if shouldBeStringLookup[key] and type(value) ~= "string" then
      log('W', '', 'Info file '..filepath..' has a non-string value for key '..key..': '..dumps(value)..'('..type(value)..'). Converting to string.')
      newData[key] = tostring(value)
      if newData[key] == nil then
        log('E', '', 'Info file '..filepath..' has a non-number value for key '..key..': '..dumps(value)..'('..type(value)..') that could not be converted to a number.')
      else
      else
        log('W', '', 'Info file '..filepath..' has a non-number value for key '..key..': '..dumps(value)..'('..type(value)..'). Converting to number.')
      end
      if type(value) ~= "table" then
        --log('W', '', 'Info file '..filepath..' has a non-table value for key '..key..': '..dumps(value)..'('..type(value)..'). Converting to table.')
        newData[key] = { [value] = true }
        if newData[key] == nil then
          log('E', '', 'Info file '..filepath..' has a invalid value for key '..key..': '..dumps(value)..'('..type(value)..') that could not be converted to a string.')
        else
        else
          log('W', '', 'Info file '..filepath..' has a invalid value for key '..key..': '..dumps(value)..'('..type(value)..'). Converting to string.')
        end
        if newData[key].min == nil or newData[key].max == nil then
          log('E', '', 'Info file '..filepath..' has a invalid value for key '..key..': '..dumps(value)..'('..type(value)..') that could not be converted to a number.')
        else
        else
          log('W', '', 'Info file '..filepath..' has a invalid value for key '..key..': '..dumps(value)..'('..type(value)..'). Converting to number.')
        end
      else
        log("E", "", string.format("Cannot parse path %s with regex %s. Can be caused by uncommon characters, subfolders...", dumps(path), dumps(modelRegex)))
      end
      else
        log("E", "", string.format("Cannot parse path %s with regex %s. Can be caused by uncommon characters, subfolders...", dumps(path), dumps(modelRegex)))
      end
      else
        log("E", "", string.format("Cannot parse path %s with regex %s. Can be caused by uncommon characters, subfolders...", dumps(path), dumps(modelRegexPC)))
      end
      else
        log("E", "", string.format("Cannot parse path %s with regex %s. Can be caused by uncommon characters, subfolders...", dumps(path), dumps(modelRegexPC)))
      end
      if not model then
        log("E", "", string.format("Cannot parse path %s with regex %s. Can be caused by uncommon characters, subfolders...", dumps(path), dumps(modelRegexDir)))
        goto continue
      if not model then
        log("E", "", string.format("Cannot parse path %s with regex %s. Can be caused by uncommon characters, subfolders...", dumps(path), dumps(modelRegexDir)))
        goto continue
local function convertVehicleInfo(info, infoFilename)
  --log('I', 'convert', 'Convert vehicle info: '..dumps(infoFilename))
  local color = {x=0,y=0,z=0,w=0}
      metallicData[4] = tonumber(colorTable[8])
      -- log('I','convert', name..' colorTable: '..dumps(colorTable)..' color: '..dumps(color)..' metallicData: '..dumps(metallicData))
      local paint = createVehiclePaint(color, metallicData)
      metallicData[4] = tonumber(colorTable[8])
      -- log('I','convert', name..' colorTable: '..dumps(colorTable)..' color: '..dumps(color)..' metallicData: '..dumps(metallicData))
      local paint = createVehiclePaint(color, metallicData)
      metallicData[4] = tonumber(colorTable[8])
      -- log('I','convert', name..' colorTable: '..dumps(colorTable)..' color: '..dumps(color)..' metallicData: '..dumps(metallicData))
      local paint = createVehiclePaint(color, metallicData)
    if info[key] and type(info[key]) == 'table' and #info[key] == 4 then
      log("W","", "Outdated default color format in "..dumps(infoFilename)..". Converting to paint: "..dumps(info[key]))
      info[key] = createVehiclePaint({x = info[key][1], y = info[key][2], z = info[key][3], w = info[key][4]})
    if info[key] and type(info[key]) == 'table' and #info[key] == 4 then
      log("W","", "Outdated default color format in "..dumps(infoFilename)..". Converting to paint: "..dumps(info[key]))
      info[key] = createVehiclePaint({x = info[key][1], y = info[key][2], z = info[key][3], w = info[key][4]})
        if type(data) ~= 'table' then
          log("E","","Invalid paint setup in "..dumps(infoFilename)..". Paint "..dumps(name).." is not a valid paint: "..dumps(data))
          validatedPaints[name] = createVehiclePaint({x = 1, y = 1, z = 1, w = 1})
        if type(data) ~= 'table' then
          log("E","","Invalid paint setup in "..dumps(infoFilename)..". Paint "..dumps(name).." is not a valid paint: "..dumps(data))
          validatedPaints[name] = createVehiclePaint({x = 1, y = 1, z = 1, w = 1})
        if type(data) ~= 'table' then
          log("E","","Invalid paint setup in "..dumps(infoFilename)..". Paint "..dumps(name).." is not a valid paint: "..dumps(data))
          validatedPaints[name] = createVehiclePaint({x = 1, y = 1, z = 1, w = 1})
  if not modelsData then
    log('E', '', 'Vehicle not available: ' .. dumps(key))
    return {}
      if type(data) ~= 'table' then
        log("E","","Invalid paint setup in "..dumps(infoFilename)..". Paint "..dumps(name).." is not a valid paint: "..dumps(data))
        validatedPaints[name] = createVehiclePaint({x = 1, y = 1, z = 1, w = 1})
      if type(data) ~= 'table' then
        log("E","","Invalid paint setup in "..dumps(infoFilename)..". Paint "..dumps(name).." is not a valid paint: "..dumps(data))
        validatedPaints[name] = createVehiclePaint({x = 1, y = 1, z = 1, w = 1})
      if type(data) ~= 'table' then
        log("E","","Invalid paint setup in "..dumps(infoFilename)..". Paint "..dumps(name).." is not a valid paint: "..dumps(data))
        validatedPaints[name] = createVehiclePaint({x = 1, y = 1, z = 1, w = 1})
      model.Type = "Unknown"
      --log('E', 'vehicles', "model" .. dumps(model) .. "has type \"Unknown\"")
    end
    else
      log('E', 'main', "Model of vehicle via parseArgs (" ..dumps(arg)..") ("..dumps(model)..") doesn't exist.")
    end
    else
      log('E', 'main', "Model of vehicle via parseArgs (" ..dumps(arg)..") ("..dumps(model)..") doesn't exist.")
    end
    local mycolor = getVehicleColor()
    log('I', 'main', 'myColor = '..dumps(mycolor))
    --TorqueScriptLua.setVar( '$beamngVehicleColor', mycolor )
    else
      log('E', 'main', "Model of vehicle via TorqueScriptLua.getVar('$beamngVehicleArgs') (" ..dumps(myveh)..") doesn't exist.")
    end
    local mycolor = getVehicleColor()
    log('I', 'main', 'myColor = '..dumps(mycolor))
    TorqueScriptLua.setVar( '$beamngVehicleColor', mycolor )
@/lua/common/jbeam/sections/meshs.lua
          if not plight then
            log('E', 'jbeam.pushToPhysics', 'unable to create light for prop:'.. dumps(prop))
          else
            if #prop.materialOverride == 2 and type(prop.materialOverride[1])=="string" and type(prop.materialOverride[2])=="string" then
              log('E', "jbeam.pushToPhysics", "prop="..dumps(prop.mesh)..".`materialOverride`: need to be array of array")
            else
              -- f:setMaterialOverride(flexbody.materialOverride[1], flexbody.materialOverride[2])
              log('E', "jbeam.pushToPhysics", dumps(flexbody.mesh)..".`materialOverride`: need to be array of array")
            else
@/lua/ge/extensions/core/vehicle/mirror.lua
      for k,v in pairs(imguiMirrordata) do
        im.TextUnformatted(dumps(k))
        local hover = im.IsItemHovered()
@/lua/ge/extensions/flowgraph/nodes/vehicle/spawnVehicle.lua
                allPaints = nil
                self.mgr:logEvent("Vehicle Spawned ".. dumps(self.pinIn.model.value), "I", "Vehicle " ..dumps(self.pinIn.model.value) .. ": ignoring random color.", {type = "node", node = self})
              end
                allPaints = nil
                self.mgr:logEvent("Vehicle Spawned ".. dumps(self.pinIn.model.value), "I", "Vehicle " ..dumps(self.pinIn.model.value) .. ": ignoring random color.", {type = "node", node = self})
              end
        self.veh = core_vehicles.spawnNewVehicle(self.spawningOptions.model, self.spawningOptions)
        self.mgr:logEvent("Vehicle Spawned ".. dumps(self.pinIn.model.value), "I", "A Vehicle " ..dumps(self.pinIn.model.value) .. " was spawned.", {type = "node", node = self})
      end
        self.veh = core_vehicles.spawnNewVehicle(self.spawningOptions.model, self.spawningOptions)
        self.mgr:logEvent("Vehicle Spawned ".. dumps(self.pinIn.model.value), "I", "A Vehicle " ..dumps(self.pinIn.model.value) .. " was spawned.", {type = "node", node = self})
      end
    elseif self.state == 2 then
      --dump(self.id .. dumps(self.veh))
      if self.mgr.modules.vehicle:getVehicle(self.spawnedObjectId).ready then
    end
    --print("final state: " .. self.id .. " is " .. dumps(self.state))
  end
@/lua/ge/extensions/editor/dynamicDecals/brushes.lua
  if im.TreeNode1("data##inspectorGuiBrush") then
    im.TextUnformatted(dumps(brush))
    im.TreePop()
@/lua/ge/extensions/scenario/raceGoals.lua
            if not string.startswith(val, "scenarios.") then
              log("W", "", "Possible missing localization for '"..dumps(gkey).."' in scenario goal: "..dumps(val))
            end
            if not string.startswith(val, "scenarios.") then
              log("W", "", "Possible missing localization for '"..dumps(gkey).."' in scenario goal: "..dumps(val))
            end
  local reason
  if invalidKey   then reason = 'invalid key: '  ..dumps(  id) end
  if invalidType  then reason = 'invalid type: ' ..dumps(gkey) end
  if invalidKey   then reason = 'invalid key: '  ..dumps(  id) end
  if invalidType  then reason = 'invalid type: ' ..dumps(gkey) end
  if invalidValue then reason = 'invalid value: '..dumps(gkey)..', or its value is not related to "'..dumps(id) .. '"' end
  if invalidType  then reason = 'invalid type: ' ..dumps(gkey) end
  if invalidValue then reason = 'invalid value: '..dumps(gkey)..', or its value is not related to "'..dumps(id) .. '"' end
  log("E", logTag, "Schema error in scenario json: "..reason)
  if invalidType  then reason = 'invalid type: ' ..dumps(gkey) end
  if invalidValue then reason = 'invalid value: '..dumps(gkey)..', or its value is not related to "'..dumps(id) .. '"' end
  log("E", logTag, "Schema error in scenario json: "..reason)
      if not goal then
        log("E", logTag, 'Cannot find goal: '..dumps(goalPaths))
      end
  end
  -- log("D", logTag, 'LoadGoals ended...'..dumps(M.state.goals))
end
@/lua/ge/extensions/gameplay/missions/missionScreen.lua

      log("I","","Player has vehicle: " .. dumps(classInfo))
    else
      log("E","","Trying to start mission that is not startable due to unlocks: " .. dumps(id))
    end
  else
    log("E","","Trying to start mission with invalid id: " .. dumps(id))
  end
@/lua/ge/extensions/util/nodeStream.lua
local function handleWebSocketData(evt, jsonData)
  log("I", "nodeStream", "Received WS data: " .. dumps(jsonData))
@/lua/ge/main.lua
  local filenames = FS:findFiles(levelPath, "*.prefab\t*.prefab.json", -1, true, false)
  log('I', 'convertLevelPrefabs', 'Converting the following files: '..dumps(filenames or {}))
  for _,file in ipairs(filenames) do
  local filenames = FS:findFiles(levelPath, "*.prefab.json", -1, true, false)
  log('I', 'validateLevelPrefabs', 'Validating the following files: '..dumps(filenames or {}))
  for _,file in ipairs(filenames) do
function convertCStoJson(filenames, newExtSuffix)
  log('I', 'convertCStoJson', 'Conversion started: '..dumps(filenames or {}))
    local knownObjects = scenetree.getAllObjects()
    log('I', 'convertCStoJson', 'knownObjects: '..dumps(knownObjects))
    -- convert to map
    end
    log('I', 'convertCStoJson', 'newObjects: '..dumps(newObjects))
  if type(extName) ~= 'string' then
    log('E','','Failed to set unload mode "'..dumps(unloadMode)..'" due to unrecognized extension: '..dumps(extension))
    return
  if type(extName) ~= 'string' then
    log('E','','Failed to set unload mode "'..dumps(unloadMode)..'" due to unrecognized extension: '..dumps(extension))
    return
  else
    log('E','','Failed to set unrecognised unload mode "'..dumps(unloadMode)..'" for extension: '..dumps(extension))
    return
  else
    log('E','','Failed to set unrecognised unload mode "'..dumps(unloadMode)..'" for extension: '..dumps(extension))
    return
      guihooks.trigger("toastrMsg", {type="error", title="ui.fsError.title", msg="ui.fsError.msg", config={closeButton=true, timeOut=0, extendedTimeOut=0}})
      log("E", "", "Filesystem errors detected. This typically means a corrupted install and can lead to missing content/levels/vehicles/uiapps/etc and generally broken behaviour.\n - If you are a user please follow the instructions at https://go.beamng.com/verify\n - If you are a dev/support debugging this problem, please check logs during startup, there might be errors with additional information\nDebug data: "..dumps(fsInfo))
      return
function onFileChanged(files)
  --print("onFileChanged: " .. dumps(files))
  settings.onFilesChanged(files)
  local nid = newVehicle and newVehicle:getId() or -1
  -- local oldinfo = oldVehicle and ("id "..dumps(oid).." ("..oldVehicle:getPath()..")") or dumps(oldVehicle)
  -- local newinfo = newVehicle and ("id "..dumps(nid).." ("..newVehicle:getPath()..")") or dumps(newVehicle)
  local nid = newVehicle and newVehicle:getId() or -1
  -- local oldinfo = oldVehicle and ("id "..dumps(oid).." ("..oldVehicle:getPath()..")") or dumps(oldVehicle)
  -- local newinfo = newVehicle and ("id "..dumps(nid).." ("..newVehicle:getPath()..")") or dumps(newVehicle)
  -- local oldinfo = oldVehicle and ("id "..dumps(oid).." ("..oldVehicle:getPath()..")") or dumps(oldVehicle)
  -- local newinfo = newVehicle and ("id "..dumps(nid).." ("..newVehicle:getPath()..")") or dumps(newVehicle)
  --log('I', 'main', "Player #"..dumps(player).." vehicle switched from: "..oldinfo.." to: "..newinfo)
  -- local oldinfo = oldVehicle and ("id "..dumps(oid).." ("..oldVehicle:getPath()..")") or dumps(oldVehicle)
  -- local newinfo = newVehicle and ("id "..dumps(nid).." ("..newVehicle:getPath()..")") or dumps(newVehicle)
  --log('I', 'main', "Player #"..dumps(player).." vehicle switched from: "..oldinfo.." to: "..newinfo)
  -- local newinfo = newVehicle and ("id "..dumps(nid).." ("..newVehicle:getPath()..")") or dumps(newVehicle)
  --log('I', 'main', "Player #"..dumps(player).." vehicle switched from: "..oldinfo.." to: "..newinfo)
  --OnlineServiceProvider.setStat('meters_driven', 1)
  d.levelLoaded = levelLoaded
  -- log('D', 'main', 'persistent data exported: ' .. dumps(d))
  -- jsonWriteFile('persistentData.json', d, true)
  simTimeAuthority.pause(true)
  log('E', "", "Instability detected for vehicle ID: "..dumps(vid)..", jbeamFilename: "..dumps(jbeamFilename))
  log("E", "", "Information about all vehicles:")
  simTimeAuthority.pause(true)
  log('E', "", "Instability detected for vehicle ID: "..dumps(vid)..", jbeamFilename: "..dumps(jbeamFilename))
  log("E", "", "Information about all vehicles:")
  for vid,v in vehiclesIterator() do
    log("E", "", " - Vehicle ID: "..dumps(vid)..", jbeamFilename: "..v:getJBeamFilename()..", position: "..dumps(v:getPosition())..", partConfig: "..dumps(v.partConfig))
  end
  for vid,v in vehiclesIterator() do
    log("E", "", " - Vehicle ID: "..dumps(vid)..", jbeamFilename: "..v:getJBeamFilename()..", position: "..dumps(v:getPosition())..", partConfig: "..dumps(v.partConfig))
  end
  for vid,v in vehiclesIterator() do
    log("E", "", " - Vehicle ID: "..dumps(vid)..", jbeamFilename: "..v:getJBeamFilename()..", position: "..dumps(v:getPosition())..", partConfig: "..dumps(v.partConfig))
  end
function onSpawnError(status, jbeamFilename)
  log("E", "onSpawnError", "Error "..dumps(status).." spawning vehicle "..dumps(jbeamFilename))
  guihooks.trigger("toastrMsg", {type="error", title="vehicle.main.spawnError.title", msg="vehicle.main.spawnError.msg", context={status=status, vehicle=jbeamFilename}, config={closeButton=true, timeOut=0, extendedTimeOut=0}})
function onSpawnError(status, jbeamFilename)
  log("E", "onSpawnError", "Error "..dumps(status).." spawning vehicle "..dumps(jbeamFilename))
  guihooks.trigger("toastrMsg", {type="error", title="vehicle.main.spawnError.title", msg="vehicle.main.spawnError.msg", context={status=status, vehicle=jbeamFilename}, config={closeButton=true, timeOut=0, extendedTimeOut=0}})
  if mainEventManager then
    -- log("I","", "mainEventManager = "..dumps(mainEventManager))
    mainEventManager.queue = "mainEventManagerQueue"
  log('E','','== OUTDATED MOD CODE ==')
  log('E','',"registerCoreModule("..dumps(extensionName).." will be deprecated soon. Instead, replace with: setExtensionUnloadMode(M, \"manual\")")
  print(debug.tracesimple())
@/lua/ge/extensions/editor/missionEditor.lua
        if saveable then
          im.tooltip(dumps(lastShownMission.id) .. " to " .. lastShownMission.missionFolder .. "/info.json")
        end
@/lua/ge/extensions/gameplay/missions/missionTypes/flowMission.lua
  if not path then
    log("E", "", "Unable to locate fgPath file for activity "..dumps(self.id)..", neither as relative nor absolute dir: "..dumps(fgFile))
    return true
  if not path then
    log("E", "", "Unable to locate fgPath file for activity "..dumps(self.id)..", neither as relative nor absolute dir: "..dumps(fgFile))
    return true
  if self.progressVariables.attempts then
    log("E", "", "Cannot use reserved word \"attempts\" as a progress variable name in activity "..dumps(self.id)..". Value: "..dumps(self.progressVariables.attempts))
    return true
  if self.progressVariables.attempts then
    log("E", "", "Cannot use reserved word \"attempts\" as a progress variable name in activity "..dumps(self.id)..". Value: "..dumps(self.progressVariables.attempts))
    return true
    if self.progressVariables[name] ~= nil then
      log("E", "", "Cannot use "..dumps(name).." from 'fgVariables', since it was already reserved for use by 'progressVariables': "..self.id)
      return true
    if self:setupFlowgraphManager(fgPath, tempVariables) then
      log("E", "", "There has been an error setting up the FG. See errors above. ("..dumps(self.id)..")")
      return true
  --   if self:setupFlowgraphManager(self.fgPath, self.fgVariables) then
  --     log("E", "", "There has been an error setting up the FG. See errors above. ("..dumps(self.id)..")")
  --     return true
    if self:addOrSetVariable(name, value) then
      log("E", "", "Cannot set fg variable "..dumps(name).." for activity "..dumps(self.id).." to value: "..dumps(value))
    end
    if self:addOrSetVariable(name, value) then
      log("E", "", "Cannot set fg variable "..dumps(name).." for activity "..dumps(self.id).." to value: "..dumps(value))
    end
    if self:addOrSetVariable(name, value) then
      log("E", "", "Cannot set fg variable "..dumps(name).." for activity "..dumps(self.id).." to value: "..dumps(value))
    end
      if self:addOrSetVariable(name, value) then
        log("E", "", "Cannot set user setting variable "..dumps(name).." for activity "..dumps(self.id).." to value: "..dumps(value))
      end
      if self:addOrSetVariable(name, value) then
        log("E", "", "Cannot set user setting variable "..dumps(name).." for activity "..dumps(self.id).." to value: "..dumps(value))
      end
      if self:addOrSetVariable(name, value) then
        log("E", "", "Cannot set user setting variable "..dumps(name).." for activity "..dumps(self.id).." to value: "..dumps(value))
      end
function C:addOrSetVariable(name, value)
  log("D","","Setting Mission Variable: " .. name .. " --> " .. dumps(value))
  local t = type(value)
  else
    log("E", "", "Cannot add Mission Variable "..dumps(name).." for activity "..dumps(self.id)..": unable to find a usable type, given its value: "..dumps(value))
    return true
  else
    log("E", "", "Cannot add Mission Variable "..dumps(name).." for activity "..dumps(self.id)..": unable to find a usable type, given its value: "..dumps(value))
    return true
  else
    log("E", "", "Cannot add Mission Variable "..dumps(name).." for activity "..dumps(self.id)..": unable to find a usable type, given its value: "..dumps(value))
    return true
    if not self.mgr.variables:changeBase(name, value) then -- modify value only
      log("E", "", "Cannot set Mission Variable "..dumps(name).." for activity "..dumps(self.id))
      return true
    if not self.mgr.variables:changeBase(name, value) then -- modify value only
      log("E", "", "Cannot set Mission Variable "..dumps(name).." for activity "..dumps(self.id))
      return true
  else
    log("D", "", "  Ignoring Mission Variable "..dumps(name).." for activity "..dumps(self.id) .." - The variable does not exist in the FG.")
    --if not self.mgr.variables:addVariable(name, value, t, mergeStrat, fixedType, undeletable) then
  else
    log("D", "", "  Ignoring Mission Variable "..dumps(name).." for activity "..dumps(self.id) .." - The variable does not exist in the FG.")
    --if not self.mgr.variables:addVariable(name, value, t, mergeStrat, fixedType, undeletable) then
    --if not self.mgr.variables:addVariable(name, value, t, mergeStrat, fixedType, undeletable) then
    --  log("E", "", "Cannot add fg variable "..dumps(name).." for activity "..dumps(self.id))
    --  return true
    --if not self.mgr.variables:addVariable(name, value, t, mergeStrat, fixedType, undeletable) then
    --  log("E", "", "Cannot add fg variable "..dumps(name).." for activity "..dumps(self.id))
    --  return true
    else
      log("E", "", "Unable to read progresss variable "..dumps(name).." for activity: "..dumps(self.id))
    end
    else
      log("E", "", "Unable to read progresss variable "..dumps(name).." for activity: "..dumps(self.id))
    end
@/lua/ge/extensions/editor/rallyEditor/pacenotes/pacenoteForm.lua
  end
  im.tooltip(dumps(pacenote:getNoteFieldStructured()))
end
@/lua/ge/extensions/flowgraph/graph.lua

    local exprFunc, message = load(funstr, "Compiled FG Code for " .. dumps(self.mgr.name) .. " / " .. dumps(color.name), 't', env)
    -- print(message)

    local exprFunc, message = load(funstr, "Compiled FG Code for " .. dumps(self.mgr.name) .. " / " .. dumps(color.name), 't', env)
    -- print(message)
  if not lookup[nodeType] then
    log('E', 'flowgraph_graph.createNode', 'unable to find node type: "' .. tostring(nodeType) .. '". Available types: ' .. dumps(tableKeys(lookup)))
    return
  if node.obsolete then
    log('W', self.mgr.logTag, 'Node ' .. node.name .. " is obsolete: " .. dumps(node.obsolete))
    node.name = node.name .. " (OBSOLETE)"
        if not sourcePin or not targetPin then
          log('E', self.mgr.logTag, 'unable to recreate link: unable to find pins: ' .. dumps(linkData) .. ". Tried to create links between " .. sourceNode.name .. "(" .. linkData[2] .. ") -> " .. targetNode.name .. "(" .. linkData[4] .. ")")
@/gameplay/missionTypes/aiRace/constructor.lua
        self.userSettings.missionVehicleClass = self._startingInfo.vehicleClass
        log("I", "aiRace", "Challenge started with automatic vehicle class: " .. dumps(self.userSettings.missionVehicleClass))
      else
        self.userSettings.missionVehicleClass = "B" -- default performance class
        log("I", "aiRace", "Challenge started with default vehicle class: " .. dumps(self.userSettings.missionVehicleClass))
      end
      self.userSettings.missionVehicleClass = mode
      log("I", "aiRace", "Challenge started with vehicle class: " .. dumps(self.userSettings.missionVehicleClass))
    end
@/lua/vehicle/controller/propAnimation/singleAxisLever.lua
  else
    log("W", "propAnimation/singleAxisLever.init", "Can't find node id for sound location. Specified data: " .. dumps(jbeamData.shiftSoundNode_nodes))
    shiftSoundNodeId = 0
@/lua/ge/extensions/flowgraph/nodes/states/transitionStack.lua
    im.Text("(Stack)")
    ui_flowgraph_editor.tooltip(dumps(self._stack))
  else
@/lua/ge/extensions/flowgraph/nodes/vehicle/customPartsConfigProvider.lua
          self._opened = true
          im.Text(dumps(deserialize(veh.partConfig)))
          im.TreePop()
@/lua/ge/client/postFx.lua
  local exports = exportToJson("$PostFXManager::Settings::*")
  -- log('I','','exported $PostFXManager::Settings::* = '..dumps(exports))
  exports.header = {version = 1}
@/lua/ge/extensions/util/richPresence.lua
      -- end
      --log("E","msgFormat", dumps(dActivity))
      Discord.setActivity(dActivity)
    local s = extensions.core_gamestate.state.state
    --log("E","onUiReady",dumps(s))
    if string.startswith(s,"menu.") then
local function onUiChangedState(toState, fromState)
  -- log("I","onUiChangedState", "from="..dumps(fromState))
  -- log("I","onUiChangedState", "to="..dumps(toState))
  -- log("I","onUiChangedState", "from="..dumps(fromState))
  -- log("I","onUiChangedState", "to="..dumps(toState))
  local state = 0 --invalid
      "steam_flag",
      "Race lap "..dumps(data.lap),
      timeStr,
local function onRaceBranchChosen(data)
  -- log("E","onRaceBranchChosen", "  data="..dumps(data))
  if Steam then
      "steam_flag",
      "Mission "..dumps(attempt.type),
      mission.name,
@/lua/vehicle/extensions/core/booster.lua
  if #planets > 0 then
    print("obj:setPlanets(" .. dumps(planets) .. ")")
  end
@/lua/ge/client/lighting.lua
  local files = FS:findFiles('lua/ge/client/lighting/', 'init.lua', 1, true, false)
  -- log('I', 'lightManager', '      files = '..dumps(files))
  for _,filepath in ipairs(files) do
@/lua/ge/extensions/gameplay/achievement.lua
  if key == "vehicle/total_odometer.length" then
    -- log("E","cb",key..""..dumps(newvalue))
    OnlineServiceProvider.setStat("KMPASSED",newvalue.value*0.001)
@/lua/ge/ge_utils.lua
  if not veh or not geluaFunctionName or not vluaCommand then
    log("E", "", "Unable to queue callback, invalid parameters: "..dumps(veh, geluaFunctionName, vluaCommand))
    return
  if type(colorTable) ~= 'table' then
    log('W','vehiclePaint','colorTable parameter should be a table of colors. type = '..type(colors)..' colors = '..dumps(colors))
    colorTable = {}
  end
  -- log('I', 'vehicle', 'spawnFilldefaults: opt Before = '..dumps(opt))
  local config
          else
            log("E", "", "Unable to recognize opt.config "..dumps(opt.config).." for vehicle "..dumps(modelName))
            config = {}
          else
            log("E", "", "Unable to recognize opt.config "..dumps(opt.config).." for vehicle "..dumps(modelName))
            config = {}
  end
  -- log('I', 'vehicle', 'spawnFilldefaults: opt After = '..dumps(opt))
  return opt
          name = ("vehicle_by_Id_"..vehicle:getID())
          log("W", "", "Vehicle does not have name, using id as string instead: "..dumps(vid) .." -> " .. dumps(name))
        end
          name = ("vehicle_by_Id_"..vehicle:getID())
          log("W", "", "Vehicle does not have name, using id as string instead: "..dumps(vid) .." -> " .. dumps(name))
        end
      else
        log("E", "", "Cannot convert vehicleID to vehicleName, vid does not exist: "..dumps(vid))
      end
  else
    log("E", "", "Cannot convert table from vehicleIDs to vehicleNames, not a table: "..dumps(data))
  end
      else
        log("E", "", "Cannot convert vehicleID to vehicleName, vid does not exist: "..dumps(vid))
      end
  else
    log("E", "", "Cannot convert table from vehicleNames to vehicleIDs, not a table: "..dumps(data))
  end
@/lua/vehicle/protocols.lua
  if not protocol.module then
    log("W", "", "Unable to load protocol, require() failed for module: "..dumps(protocol.moduleName))
    return
    if not enabled then
      --log("D", "", "Protocol disabled in configuration, not initializing: "..dumps(name))
      goto continue
@/lua/vehicle/controller/esc.lua
    log("D", "ESC", "ESC configuration data:")
    log("D", "ESC", dumps(configData))
    log("D", "ESC", "Using ESC configuration: " .. currentESCConfiguration.name)
@/lua/ge/extensions/core/environment.lua
    if not myTexture[gradientFile]:loadFile(gradientFile) then
      log("E", "transformTime2Colors", "fail to load "..dumps(gradientFile))
      return nil
@/lua/vehicle/bullettime.lua
local function selectPreset(v)
  obj:queueGameEngineLua('simTimeAuthority.selectPreset('..dumps(v)..')')
end
@/lua/ge/extensions/util/export.lua
  if gltfRoot.nodes[luaIndex] then
    return dumps(gltfRoot.nodes[luaIndex].name).."["..dumps(jsonIndex).."]"
  else
  if gltfRoot.nodes[luaIndex] then
    return dumps(gltfRoot.nodes[luaIndex].name).."["..dumps(jsonIndex).."]"
  else
  else
    return "NodeDoesNotExist!!!!["..dumps(jsonIndex).."]"
  end
local function _addBuffer(gltfRoot, data, dataSize, name)
  -- log('D', logTag, 'Adding buffer ' ..dumps(name) .. " size=" .. tostring(dataSize))
  -- buffer table goes first
    bufferID = #binaryBuffers - 1
    --log('D', logTag, 'Buffers binary'..dumps(bufferID))
  else
local function _addBufferviewAccessor(gltfRoot, bufferID, byteOffset, byteLength, accessor, name)
  -- log('D', logTag, 'Adding bufferViewAccessor ' ..dumps(name) .. " buf=" ..dumps(bufferID) .. " offset=" ..dumps(byteOffset).. " len=" .. tostring(byteLength))
local function _addBufferviewAccessor(gltfRoot, bufferID, byteOffset, byteLength, accessor, name)
  -- log('D', logTag, 'Adding bufferViewAccessor ' ..dumps(name) .. " buf=" ..dumps(bufferID) .. " offset=" ..dumps(byteOffset).. " len=" .. tostring(byteLength))
local function _addBufferviewAccessor(gltfRoot, bufferID, byteOffset, byteLength, accessor, name)
  -- log('D', logTag, 'Adding bufferViewAccessor ' ..dumps(name) .. " buf=" ..dumps(bufferID) .. " offset=" ..dumps(byteOffset).. " len=" .. tostring(byteLength))
local function _addIndexBuffer(gltfRoot, meshInfo)
  -- log('I', logTag, 'Mesh index count: ' .. dumps(meshInfo.indicesCount) .. ', bytes: ' .. dumps(meshInfo.indicesCount * unsignedIntByteSize))
  local indices = ffi.new('unsigned int[?]', meshInfo.indicesCount)
local function _addIndexBuffer(gltfRoot, meshInfo)
  -- log('I', logTag, 'Mesh index count: ' .. dumps(meshInfo.indicesCount) .. ', bytes: ' .. dumps(meshInfo.indicesCount * unsignedIntByteSize))
  local indices = ffi.new('unsigned int[?]', meshInfo.indicesCount)
    if v.extras.bngMaterialId == matId then
      -- log("I", logTag, "mat reuse "..dumps(v.bngMaterialId) .. " k="..dumps(k))
      return k-1
    if v.extras.bngMaterialId == matId then
      -- log("I", logTag, "mat reuse "..dumps(v.bngMaterialId) .. " k="..dumps(k))
      return k-1
    doubleSided = true,
    name = dumps(matId),
  }

  -- log("I", logTag, "mat create "..dumps(mat.bngMaterialId))
  for primI = 0, (submeshInfo.primitivesCount - 1 ) do
    -- log("I", logTag, "mesh="..dumps(meshName).." prim="..dumps(primI).."/"..dumps(submeshInfo.primitivesCount))
    if primitives == nil then goto continue end
  for primI = 0, (submeshInfo.primitivesCount - 1 ) do
    -- log("I", logTag, "mesh="..dumps(meshName).." prim="..dumps(primI).."/"..dumps(submeshInfo.primitivesCount))
    if primitives == nil then goto continue end
  for primI = 0, (submeshInfo.primitivesCount - 1 ) do
    -- log("I", logTag, "mesh="..dumps(meshName).." prim="..dumps(primI).."/"..dumps(submeshInfo.primitivesCount))
    if primitives == nil then goto continue end
    local startIndex = primitive.startIndex
    -- log("I", logTag, "primitive "..dumps(primitive.startIndex) .."-"..dumps(primitive.indexCount) .." max=" ..dumps(meshInfo.indicesCount) .." mat="..dumps(primitive.materialId) )
    -- find min/max triangle
    local startIndex = primitive.startIndex
    -- log("I", logTag, "primitive "..dumps(primitive.startIndex) .."-"..dumps(primitive.indexCount) .." max=" ..dumps(meshInfo.indicesCount) .." mat="..dumps(primitive.materialId) )
    -- find min/max triangle
    local startIndex = primitive.startIndex
    -- log("I", logTag, "primitive "..dumps(primitive.startIndex) .."-"..dumps(primitive.indexCount) .." max=" ..dumps(meshInfo.indicesCount) .." mat="..dumps(primitive.materialId) )
    -- find min/max triangle
    local startIndex = primitive.startIndex
    -- log("I", logTag, "primitive "..dumps(primitive.startIndex) .."-"..dumps(primitive.indexCount) .." max=" ..dumps(meshInfo.indicesCount) .." mat="..dumps(primitive.materialId) )
    -- find min/max triangle
    else
      log("E", logTag,"mesh not found "..dumps(mesh))
    end
  -- for k,v in pairs(gltfRoot.nodes) do
  --   log("I", logTag, dbgNodeName(gltfRoot,k-1) .. dumps(v.children))
  -- end
    else
      log("E", logTag, "could not convert "..dumps(value)" to "..dumps(fieldInfo.type))
      return value
    else
      log("E", logTag, "could not convert "..dumps(value)" to "..dumps(fieldInfo.type))
      return value
    else
      log("E", logTag, "could not convert "..dumps(value)" to "..dumps(fieldInfo.type))
      return value
    else
      log("E", logTag, "could not convert "..dumps(value)" to "..dumps(fieldInfo.type))
      return value
  else
    log("W", logTag, "unkwnon field type "..dumps(fieldInfo.type).."\n"..dumps(fieldInfo))
    return value
  else
    log("W", logTag, "unkwnon field type "..dumps(fieldInfo.type).."\n"..dumps(fieldInfo))
    return value
  else
    log("E", logTag,"unkwnon material version "..dumps(gltfCurrentMaterial.version))

  --log("D", logTag,"export image indexes "..dumps(materialObj.name))
  for k,v in pairs(gltfCurrentMaterial) do
      --else
        --log("D", logTag,k.."Index = "..dumps(gltfCurrentMaterial[k.."Index"]))
      end
    local flexmesh = lastMeshInfo:flexmeshes(i)
    -- log("I", logTag, "flexmesh="..dumps(i))
    local nodeID = _addMesh(gltfRoot, attributes, indexBufferID, lastMeshInfo, flexmesh)
    local propmesh = lastMeshInfo:propmeshes(i)
    -- log("I", logTag, "propmesh="..dumps(i))
    local nodeID = _addMeshProp(gltfRoot, propmesh)
  for _, prop in pairs(v.vdata.props or {}) do
    -- print("prop["..dumps(_)..dumps(prop.mesh))
    if prop.mesh ~= "SPOTLIGHT" then
  for _, prop in pairs(v.vdata.props or {}) do
    -- print("prop["..dumps(_)..dumps(prop.mesh))
    if prop.mesh ~= "SPOTLIGHT" then
      if not mat then
        log("E", logTag, dumps(matNames[v.extras.bngMaterialId+1]) .. " sceneobject was not found")
        goto continueMat
      if mat:getClassName():lower() ~= "material" then
        log("E", logTag, dumps(matNames[v.extras.bngMaterialId+1]) .. " is not a Material. type="..dumps(mat:getClassName()))
        goto continueMat
      if mat:getClassName():lower() ~= "material" then
        log("E", logTag, dumps(matNames[v.extras.bngMaterialId+1]) .. " is not a Material. type="..dumps(mat:getClassName()))
        goto continueMat
      else
        log("E", logTag, "unknwon Material version "..dumps(matVer))
      end
    bufferPathPattern = nil
    log("I", logTag, "GLTF json exported "..dumps(filename))
  end
      end
      --log("E", logTag,"broken? idx="..dumps(index).." tmp="..dumps(tmp))
      --now a feature to get total len of buffers
      end
      --log("E", logTag,"broken? idx="..dumps(index).." tmp="..dumps(tmp))
      --now a feature to get total len of buffers
    --chunk[0] JSON
    -- log("I", logTag, "#jsonContent="..dumps(#jsonContent).."|"..dumps(string.len(jsonContent)).. " pad = "..dumps(fourByteAlignPaddingSize(#jsonContent)))
    f:write( string.char(sepbytes(#jsonContent + fourByteAlignPaddingSize(#jsonContent))) ) --size
    --chunk[0] JSON
    -- log("I", logTag, "#jsonContent="..dumps(#jsonContent).."|"..dumps(string.len(jsonContent)).. " pad = "..dumps(fourByteAlignPaddingSize(#jsonContent)))
    f:write( string.char(sepbytes(#jsonContent + fourByteAlignPaddingSize(#jsonContent))) ) --size
    --chunk[0] JSON
    -- log("I", logTag, "#jsonContent="..dumps(#jsonContent).."|"..dumps(string.len(jsonContent)).. " pad = "..dumps(fourByteAlignPaddingSize(#jsonContent)))
    f:write( string.char(sepbytes(#jsonContent + fourByteAlignPaddingSize(#jsonContent))) ) --size

    log("I", logTag, "GLTF binary exported "..dumps(filename))
  end
  end
  guihooks.message("GLTF Vehicle exported "..dumps(filename), 5, "GLTFexport")
end
@/ui/ui-vue/mockdata/inputBindings.js
                "title": "ui.inputActions.vehicle.ffbForceCoefDec.title",
                "onDown": "local c = hydros.getFFBConfig(); c.forceCoef = c.forceCoef - 10; hydros.setFFBConfig(c) ui_message('Testing FFB strength at  '..dumps(c.forceCoef))",
                "order": 61,
                "title": "ui.inputActions.vehicle.ffbSmoothingDec.title",
                "onDown": "local c = hydros.getFFBConfig(); c.smoothing = c.smoothing - 10; hydros.setFFBConfig(c) ui_message('Testing FFB smoothing at '..dumps(c.smoothing))",
                "order": 63,
                "title": "ui.inputActions.vehicle.ffbSmoothingInc.title",
                "onDown": "local c = hydros.getFFBConfig(); c.smoothing = c.smoothing + 10; hydros.setFFBConfig(c) ui_message('Testing FFB smoothing at '..dumps(c.smoothing))",
                "order": 62,
                "title": "ui.inputActions.vehicle.ffbForceCoefInc.title",
                "onDown": "local c = hydros.getFFBConfig(); c.forceCoef = c.forceCoef + 10; hydros.setFFBConfig(c) ui_message('Testing FFB strength at '..dumps(c.forceCoef))",
                "order": 60,
@/lua/ge/extensions/flowgraph/nodes/math/math.lua
      self.mgr:DrawTypeIcon(pin.type, true, 1)
      ui_flowgraph_editor.tooltip(dumps(pin.type))
      im.SameLine()
@/lua/ge/extensions/campaign/rewards.lua

  log('I', logTag, 'pendingChoice: ' .. dumps(pendingChoice))
  log('I', logTag, 'earned: ' .. dumps(earned))
  log('I', logTag, 'pendingChoice: ' .. dumps(pendingChoice))
  log('I', logTag, 'earned: ' .. dumps(earned))
local function processUserSelection(scenarioKey, selectionIndex)
  log('I', logTag, 'processUserSelection called... '..selectionIndex .. ' / ' .. dumps(M.pendingUserChoices))
  local choices = M.pendingUserChoices[scenarioKey]
@/lua/vehicle/controller/propAnimation/sequentialLever.lua
  else
    log("W", "propAnimation/sequentialLever.init", "Can't find node id for sound location. Specified data: " .. dumps(jbeamData.shiftSoundNode_nodes))
    shiftSoundNodeId = 0
    --gearbox device is the wrong type
    log("E", "propAnimation/sequentialLever.init", "Relevant gearbox device is the wrong type. Expected: " .. dumps(supportedGearboxTypes) .. ", actual: " .. relevantGearbox.type)
    M.updateGFX = nop
@/lua/vehicle/jbeam/stage2.lua
  if type(beam.id1) == "string" or type(beam.id2) == "string" and tostring(beam.optional) == "true" then
    log('W', "jbeam.pushToPhysics","- beam not committed as node was not found: " .. tostring(beam.id1) .. " -> " .. tostring(beam.id2) .. ' : ' .. dumps(beam))
    beam.beamType = BEAM_BROKEN
    local msg = "beam has same node at both ends " ..(vehicle.nodes[beam.id1].name or '-')..' and '..(vehicle.nodes[beam.id2].name or '-') .. ', beam details are:\n'
    log('E', "jbeam.pushToPhysics", msg .. dumps(beam))
    beam.beamType = BEAM_BROKEN
    local msg = "zero size beam between nodes " ..(vehicle.nodes[beam.id1].name or '-')..' and '..(vehicle.nodes[beam.id2].name or '-') .. ', beam details are:\n'
    log('W', "jbeam.pushToPhysics", msg .. dumps(beam))
  end
        log('W', "jbeam.pushToPhysics", msg)
        msg = "duplicated beam details are:\n beam1=" .. dumps(dedup[key]) .. "\n"
        msg = msg .. "beam2=" .. dumps(beam)
        msg = "duplicated beam details are:\n beam1=" .. dumps(dedup[key]) .. "\n"
        msg = msg .. "beam2=" .. dumps(beam)
        --log('D', "jbeam.pushToPhysics", msg)
@/lua/ge/extensions/flowgraph/nodes/activity/activityStop.lua
  if self.mgr.activity then
    --log("I", "", "Saving attempt: "..dumps(att))
    --
  else
    log("W", "", "No associated activity, attempt discarded: "..dumps(att))
    self.mgr:setRunning(false)
@/lua/vehicle/controller/tirePressureControl.lua
        log("E", "tirePressureControl.initSecondStage", "Invalid jbeam data provided")
        log("E", "tirePressureControl.initSecondStage", dumps(jbeamData))
      end
@/lua/vehicle/powertrain.lua
    end
    return dumps(deviceData)
  else
  for _, relevantDevice in ipairs(relevantDevices) do
    --print("--> " .. dumps(relevantDevice))
    local device = M.getDevice(relevantDevice.device)
@/lua/ge/extensions/gameplay/rally/geometry.lua
  if #route < 3 then
    log("E", "", "Unable to compute pacenotes, route too short: "..dumps(#route))
    return
@/lua/ge/extensions/gameplay/route/route.lua
  self.wZ = wZ
  --log("I","",dumps("setRouteParams", cutOffDrivability, dirMult, penaltyAboveCutoff, penaltyBelowCutoff, wD, wZ))
end
@/lua/ge/extensions/flowgraph/basenode.lua
          if v.default then
            log("W","Node Creation","Default values for output pins not supported. (".. self.name .. " / " .. v.name .. " / " .. dumps(v.default) ..")")
          end
    self:__setNodeError('work', 'Error while executing node:work(): ' .. tostring(err))
    self.mgr:logEvent("Node Error in " .. dumps(self.name), "E", 'Error while executing node:work(): ' .. tostring(err), { type = "node", node = self })
  end
    self:__setNodeError('onNodeReset', 'Error while executing node:onNodeReset(): ' .. tostring(err))
    self.mgr:logEvent("Node Error in " .. dumps(self.name), "E", 'Error while executing node:onNodeReset(): ' .. tostring(err), { type = "node", node = self })
  end
        self:__setNodeError('work', 'Error while executing node:workOnce(): ' .. tostring(err))
        self.mgr:logEvent("Node Error in " .. dumps(self.name), "E", 'Error while executing node:workOnce(): ' .. tostring(err), { type = "node", node = self })
      end
        self:__setNodeError('work', 'Error while executing node:work(): ' .. tostring(err))
        self.mgr:logEvent("Node Error in " .. dumps(self.name), "E", 'Error while executing node:work(): ' .. tostring(err), { type = "node", node = self })
      end
@/lua/ge/extensions/gameplay/rally/client.lua
  if code ~= 200 then
    log('E', logTag, 'rally client error: '..dumps(code))
    return {ok = false, error = tostring(code)}
    --print('code:' .. tostring(code))
    --print('headers:' .. dumps(headers))
    --print('status:' .. tostring(status))
  if code ~= 200 then
    log('E', logTag, 'rally client error: '..dumps(code))
    return {ok = false, error = tostring(code)}
-- local function update_next_pacenotes(data)
--   -- log('D', 'wtf', dumps(data))
--   --
@/gameplay/missionTypes/precisionParking/constructor.lua
  if not self.fgPath then
    log("E","","No FG file found for " .. dumps(self.id).."!")
    return true
@/lua/ge/extensions/editor/undoHistory.lua
local function getTooltipTextFromAction(action)
  local actionData = dumps(action)
  local lines = {}
@/lua/ge/extensions/career/modules/logbook.lua
  if entryId == -1 then return end
  --print("Setting Logbook entry to read" .. entryId .. " ->  " ..dumps(read))
  for _, e in ipairs(logbook) do
    table.insert(logbook,1, entry)
    --log("I","","New Unlock Event: " ..dumps(entry))
    if entry.showMessage and not career_modules_linearTutorial.isLinearTutorialActive() then
@/lua/vehicle/extensions/tech/CANBus/CANBusPeak.lua
  end
  return string.format("0x%x -> %s", msg.ID, dumps(data))
end
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/veFlexbodyDebug.lua
        im.Text("Potential Spiking Vertices Count: " .. string.format("%d / %d", state.verticesOOBCoordsData.count, totalVertices))
        im.Text("Problematic Locators Count (NX,NY,NZ): " .. dumps(state.verticesOOBCoordsData.countVec))
        im.Separator()
@/lua/common/jbeam/variables.lua
                else
                  log('I', 'component', 'path processed: "' .. tostring(componentKey) .. '" = ' .. dumps(new_val))
                  d[key] = deepcopy(new_val)
      if type(vv.min) ~= 'number' then
        log('E', 'postProcess.variables', 'variable ' .. vv.name .. ' ignored, min not a number: ' .. dumps(vv))
        goto continue
      if type(vv.max) ~= 'number' then
        log('E', 'postProcess.variables', 'variable ' .. vv.name .. ' ignored, max not a number' .. dumps(vv))
        goto continue
      if type(vv.default) ~= 'number' then
        log('E', 'postProcess.variables', 'variable ' .. vv.name .. ' ignored, default not a number' .. dumps(vv))
        goto continue
      if vv.step ~= vv.step then --NaN
        log("D",'postProcess.variables', dumps(vv.name) .." have max and min the same!" )
        vv.step = vv.stepDis
      else
        -- log('W', 'variables', 'anonymous variable ignored: ' .. dumps(v))
      end

  --log('I', "jbeam.processComponents", "Final components: " .. dumps(rootPart.components))
@/lua/ge/extensions/ui/apps.lua
      else
        log('E', 'apps', 'invalid app data:' .. tostring(fn) .. ': missing "domElement" or "directive" in app.json - IGNORING APP: ' .. dumps(appData))
      end
@/lua/common/jbeam/io.lua

  --log('I', "jbeam.startLoading", "*** loading jbeam files: " .. dumps(directories))
      if res[partName] then
        log('E', "jbeam.getAvailableParts", "parts names are duplicate: " .. tostring(partName) .. ' in folders: ' .. dumps(ioCtx.preloadedDirs))
      end
        if partMap[partName] then
          log('E', "jbeam.getAvailableSlotNameMap", "parts names are duplicate: " .. tostring(partName) .. ' in folders: ' .. dumps(ioCtx.preloadedDirs))
        end
@/lua/ge/extensions/freeroam/bigMapMode.lua
  -- deselecting the current marker
  --log("I", "", string.format("Sel: %s Hov: %s HasTgt: %s", M.selectedPoiId, M.hoveredPoiId, dumps(core_groundMarkers.currentlyHasTarget())))
  if M.selectedPoiId and (not M.hoveredPoiId or M.selectedPoiId == M.hoveredPoiId) then
@/lua/ge/extensions/core/versionUpdate.lua
  local lastMajor = getMajorVersion(lastVersion)
  log("D", "", string.format("Current version: '%s' ('%s'), last version: '%s' ('%s'), newInstall: '%s'", dumps(beamng_version), dumps(currentMajor), dumps(lastVersion), dumps(lastMajor), dumps(newInstall)))
  if newInstall or (currentMajor == lastMajor) then
  local lastMajor = getMajorVersion(lastVersion)
  log("D", "", string.format("Current version: '%s' ('%s'), last version: '%s' ('%s'), newInstall: '%s'", dumps(beamng_version), dumps(currentMajor), dumps(lastVersion), dumps(lastMajor), dumps(newInstall)))
  if newInstall or (currentMajor == lastMajor) then
  local lastMajor = getMajorVersion(lastVersion)
  log("D", "", string.format("Current version: '%s' ('%s'), last version: '%s' ('%s'), newInstall: '%s'", dumps(beamng_version), dumps(currentMajor), dumps(lastVersion), dumps(lastMajor), dumps(newInstall)))
  if newInstall or (currentMajor == lastMajor) then
  local lastMajor = getMajorVersion(lastVersion)
  log("D", "", string.format("Current version: '%s' ('%s'), last version: '%s' ('%s'), newInstall: '%s'", dumps(beamng_version), dumps(currentMajor), dumps(lastVersion), dumps(lastMajor), dumps(newInstall)))
  if newInstall or (currentMajor == lastMajor) then
  local lastMajor = getMajorVersion(lastVersion)
  log("D", "", string.format("Current version: '%s' ('%s'), last version: '%s' ('%s'), newInstall: '%s'", dumps(beamng_version), dumps(currentMajor), dumps(lastVersion), dumps(lastMajor), dumps(newInstall)))
  if newInstall or (currentMajor == lastMajor) then
  M.updateBackupPath = FS:folderCleanup(M.lastVersion)
  log("I", "", string.format("Folder cleanup done. Destination backup path: %s", dumps(M.updateBackupPath)))
end
  extensions.hookUpdate("onUpdate")
  log("D", "", string.format("Saving lastVersion to disk: %s", dumps(beamng_version)))
  settings.setValue('lastVersion', beamng_version)
@/lua/ge/extensions/editor/dynamicDecals/layerTypes/decal.lua
  end,
  string.format("Reset to default: %s", dumps({false, false})))
  local btnCol = im.GetStyleColorVec4(im.Col_Button)
    end
    im.tooltip(string.format("Reset to default: %s", dumps({horizontally = true, vertically = true})))
    im.SameLine()
@/lua/ge/extensions/core/weather.lua
          else
            log('D', 'weather',  ' * ' .. tostring(obj.name or '(no name)') .. ' [' .. objClassStr .. '].' .. tostring(attrName) .. ' = ' .. dumps(attrValue) .. ' / ' .. tostring(val))
            obj[attrName] = val
  local filePresets = jsonReadFile(filename)
  --log('D', 'weather', "Weather preset loaded: " .. tostring(filename) .. ": "..dumps(filePresets))
  if tableIsEmpty(filePresets) then
@/lua/ge/extensions/core/quickAccess.lua
    -- TODO: add proper warning/error
    log('W', 'quickaccess', 'Menu item needs at least a title and an onSelect function callback: ' .. dumps(args))
    --return false
  if type(args.level) ~= 'string' then
    log('E', 'quickaccess', 'Menu item level incorrect, needs to be a string: ' .. dumps(args))
    return false
      if isEmpty then
        --log("I", "quickAccess", "removing level " .. dumps(level))
        menuTreeCopy[level] = nil
local function itemSelectCallback(actionResult)
  log('D', 'quickaccess.itemSelectCallback', 'called: ' .. dumps(actionResult))
  if type(actionResult) ~= 'table' then
  if type(actionResult) ~= 'table' then
    log('E', 'quickaccess.itemSelectCallback', 'invalid item result args: ' .. dumps(actionResult))
    return
  end
  --log("I", "trackRecentAction", "actionRecord: " .. dumps(actionRecord))
  if not actionRecord.uniqueID or not actionRecord.level then
    log("E", "trackRecentAction", "actionRecord is missing uniqueID or level: " .. dumps(actionRecord))
    return
    if not veh then
      log('E', 'quickaccess', 'unable to select item. vehicle got missing: ' .. tostring(objID) .. ' - menu item: ' .. dumps(item))
      return
local function vehicleItemSelectCallback(objID, args)
  log('D', 'quickAccess.vehicleItemSelectCallback', 'got result from id: ' .. tostring(objID) .. ' : ' .. dumps(args))
  --we don't need objID for now
@/lua/ge/client/core.lua
  local subfiles = FS:findFiles("core/", '*.materials.json', -1, true, false)
  -- log('I','core', 'loadCoreMaterials json materials  = '..dumps(subfiles))
  -- log('I','core', 'Loading: ')
@/lua/ge/extensions/editor/vehicleBridgeTest.lua
    end
    im.Text(dumps(result))
    editor.endWindow()
@/lua/vehicle/powertrain/torsionReactor.lua
    log("W", "torsionReactor.validate", "Wrong torque reaction node setup, node data:")
    log("W", "torsionReactor.validate", dumps(device.torqueReactionNodes))
    device.torqueUpdate = updateTorqueDisabled
@/lua/common/jbeam/loader.lua

  --log('D', 'loadVehicle', 'spawn config: ' .. dumps(vehicleConfig))
  --if hashStringSHA256 then
  --  spawnHash = hashStringSHA256(dumps(vehicleDirectories) .. '#' .. jsonEncode(vehicleConfig))
  --end
@/lua/ge/extensions/core/sounds.lua
local function onActivityAcceptGatherData(elemData, activityData)
  audioBlurLog('I','AUDIO',string.format("onActivityAcceptGatherData: elemData = %s, activityData = %s",dumps(elemData),(activityData)))
  missionMarkerInteraction = false
@/lua/ge/client/postFx/dof.lua
  -- log('I','dof','DOF onadd called....')
  -- log('I','dof','dof = '..dumps(dof))
  -- log('I','dof','dofPostEffect = '..dumps(dofPostEffect))
  -- log('I','dof','dof = '..dumps(dof))
  -- log('I','dof','dofPostEffect = '..dumps(dofPostEffect))
  setLerpDist(dofPostEffect, 0.2, 0.3, 0.5)
  if dofPostEffect.autoFocusEnabled == true then
    -- log('I','dof', ' setShaderConsts dofPostEffect = '..dumps(dofPostEffect))
    -- log('I','dof', '     dof = '..dumps(dof))
    -- log('I','dof', ' setShaderConsts dofPostEffect = '..dumps(dofPostEffect))
    -- log('I','dof', '     dof = '..dumps(dof))
    autoFocus(dofPostEffect)
@/lua/ge/extensions/career/modules/delivery/cargoScreen.lua
M.setCargoScreenTab = function(tab)
    --print("cargo tab -> " .. dumps(tab))
    cargoOverviewTab = tab
@/lua/common/utils/filterchain.lua
        get = function (self, ...)
            log('D', 'filterchain.examine', str .. ' ' .. dumps(...))
            return select(commonArgumentsCount + 1, ...)
        --local out = led1:update(dt, 1, 2, 3)
        --print('### ' .. timer .. ' = ' .. dumps(unpack({out})))
    end
@/lua/vehicle/controller/propAnimation/dualAxisLever.lua
  else
    log("W", "propAnimation/dualAxisLever.init", "Can't find node id for sound location. Specified data: " .. dumps(jbeamData.moveSoundNode_nodes))
    moveSoundNodeId = 0
@/lua/ge/extensions/freeroam/vueBigMap.lua
          if not groupData[tag] then
            log("W","","Unknown group tag: " .. dumps(tag) .. " for poi " .. dumps(poi.id))
            groupData[tag] = {label = tag, elements = {}}
          if not groupData[tag] then
            log("W","","Unknown group tag: " .. dumps(tag) .. " for poi " .. dumps(poi.id))
            groupData[tag] = {label = tag, elements = {}}
@/lua/ge/extensions/util/worker.lua
  if not w.filename then
    log('E', 'util_worker.compileMesh', 'filename missing: ' .. dumps(w))
    return
  local levels = w.levels
  log('D', 'worker', 'Queueing imposter compilation for: ' .. dumps(levels))
  util_compileImposters.compileImposters(levels)
N.testVehiclesPerformances = function(w)
  log('I', 'worker', "testVehiclesPerformances: " .. dumps(w.pcFile))
  util_saveDynamicData.work(w.pcFile, w.vehicle)
N.calibrateESC = function(w)
  log('I', 'worker', "calibrateESC: " .. dumps(w.pcFile))
  util_calibrateESC.work(w.pcFile, w.vehicle)
local function onJobDone(job, totalRunning)
  -- log('E', 'util_worker', 'onJobDone : ' .. dumps(job) .. ', # = ' .. tostring(totalRunning))
  if queued and totalRunning == 0 then
  end
  log('I', 'util_worker', tostring(#workItems) .. " items to work off from file " .. tostring(jobfile) .. " ...") -- .. dumps(workItems))
end
        else
          log('E', 'util_worker', " - unknown work type: " .. dumps(w))
        end
      else
        log('E', 'util_worker', " - unknown work type: " .. dumps(w))
      end
@/lua/ge/extensions/editor/sitesEditor/zones.lua

  --log("I","",dumps(self.currentVertices))
  editor.history:commitAction("Dragged Vertices", { oldPos = self._prevVerticesPos, newPos = newVerticesPos, self = self }, draggingUndo, draggingRedo)

  im.Text("Inside: " .. dumps(inside))
  im.Text("Calc Time: " .. (time) .. " ms")
@/lua/common/utils.lua

  log('A', "lua.utils", dumps(...))
end
  if x ~= nil then
    Lua:log('A', '', dumps(x))
  end
  if objType ~= "table" then
    log("E", "jsonWriteFile", "Provided objType is not a table but "..dumps(objType)..", unable to write to: "..dumps(filename))
    print(debug.tracesimple())
  if objType ~= "table" then
    log("E", "jsonWriteFile", "Provided objType is not a table but "..dumps(objType)..", unable to write to: "..dumps(filename))
    print(debug.tracesimple())
  else
    log("E", "jsonWriteFile", "Unable to open file for writing: "..dumps(filename))
    print(debug.tracesimple())
      bufTmp:put('nil')
      log("E", "serialize", "Unrecognized data ___type: "..dumps(v.___type))
    end
@/lua/ge/spawn.lua
  if vehicleModel and vehicleModel ~= "" then
    log("W", logTag, "Using Old TS Spawning Code to spawn vehicle!: " .. dumps(vehicleModel))
    print(debug.tracesimple())
@/lua/vehicle/extensions/dynamicVehicleData.lua
local function saveInfo(newData, whiteList)
  log("I", logTag, (string.format("Got data (%s/%s):", model_key, config_key)) .. " = " .. dumps(newData))
  local filepath = "vehicles/" .. model_key .. "/info_" .. config_key .. ".json"
  local perfData = getVehiclePerformanceData()
  --log('E', logTag, dumps(perfData))
  saveInfo(perfData.data, perfData.whiteList)

  --log('E', logTag, dumps(perfData))
  saveInfo(powertrainData, whitelist)

  --log('E', logTag, dumps(perfData))
  saveInfo(powertrainLayoutData, whitelist)