// this script was compiled with wurst 1.8.1.0-jenkins-Wurst-1367
globals
// originframetype ORIGIN_FRAME_GAME_UI=null
// integer bj_MAX_PLAYER_SLOTS=0
string array Colors_hexs
integer Colors_decs=0
hashtable ErrorHandling_HT=null
framehandle Framehandle_GAME_UI=null
real GameTimer_currentTime=0.
boolean MagicFunctions_compiletime=false
player Player_localPlayer=null
hashtable Table_ht=null
integer TypeCasting_typecastdata=0
hashtable hashtable_compiletime=null
hashtable hashtable_compiletime_16=null
integer array Table_nextFree
integer Table_firstFree=0
integer Table_maxIndex=0
integer array Table_typeId
code ref_function_init_AbilityIds=null
code ref_function_init_Real=null
code ref_function_init_Integer=null
code ref_function_init_Angle=null
code ref_function_init_String=null
code ref_function_init_Vectors=null
code ref_function_init_Destructable=null
code ref_function_init_Player=null
code ref_function_init_Basics=null
code ref_function_init_MagicFunctions=null
code ref_function_init_Table=null
code ref_function_init_Playercolor=null
code ref_function_init_Maths=null
code ref_function_init_Colors=null
code ref_function_init_Printing=null
code ref_function_init_GameTimer=null
code ref_function_init_ErrorHandling=null
code ref_function_init_HashList=null
code ref_function_init_Matrices=null
code ref_function_init_Quaternion=null
code ref_function_init_Framehandle=null
code ref_function_init_Group=null
code ref_function_init_Lightning=null
code ref_function_init_WeatherEffects=null
code ref_function_init_TypeCasting=null
code ref_function_init_EventHelper=null
code ref_function_init_Test=null
code ref_function_code__startPeriodic_GameTimer=null
endglobals
function Loglevel_getTag takes integer this returns string
	if this == 0 then
		return "|cffADADADtrace|r"
	elseif this == 1 then
		return "|cff2685DCdebug|r"
	elseif this == 2 then
		return "|cffFFCC00info|r"
	elseif this == 3 then
		return "|cffF47E3Ewarning|r"
	else
		return "|cffFB2700error|r"
	endif
endfunction

function compileError takes string msg returns nothing
endfunction

function error takes string msg returns nothing
	local integer hash
	local player showTo
	if MagicFunctions_compiletime then
		call compileError("ERROR: " + msg)
	else
		set hash = StringHash(msg)
		if HaveSavedInteger(ErrorHandling_HT, -1, hash) then
			if LoadInteger(ErrorHandling_HT, -1, hash) + 60 < GameTimer_currentTime then
				set msg = msg + ""
				set showTo = Player_localPlayer
				if 2 <= 4 then
					call DisplayTimedTextToPlayer(showTo, 0., 0., 45., Loglevel_getTag(4) + " - " + msg)
				endif
				call SaveInteger(ErrorHandling_HT, -1, hash, R2I(GameTimer_currentTime))
				call SaveBoolean(ErrorHandling_HT, -1, hash, false)
			elseif HaveSavedBoolean(ErrorHandling_HT, -1, hash) then
				if  not LoadBoolean(ErrorHandling_HT, -1, hash) then
					set showTo = Player_localPlayer
					if 2 <= 4 then
						call DisplayTimedTextToPlayer(showTo, 0., 0., 45., Loglevel_getTag(4) + " - " + "|cffFF3A29Excessive repeating errors are being omitted")
					endif
					call SaveBoolean(ErrorHandling_HT, -1, hash, true)
				endif
			else
				set showTo = Player_localPlayer
				if 2 <= 4 then
					call DisplayTimedTextToPlayer(showTo, 0., 0., 45., Loglevel_getTag(4) + " - " + "|cffFF3A29Excessive repeating errors are being omitted")
				endif
				call SaveBoolean(ErrorHandling_HT, -1, hash, true)
			endif
		else
			call SaveInteger(ErrorHandling_HT, -1, hash, R2I(GameTimer_currentTime))
			set msg = "Message: " + msg + ""
			set showTo = Player_localPlayer
			if 2 <= 4 then
				call DisplayTimedTextToPlayer(showTo, 0., 0., 45., Loglevel_getTag(4) + " - " + msg)
			endif
		endif
		call I2S(1 / 0)
	endif
endfunction

function initCompiletimeState_0 takes nothing returns nothing
	call InitHashtable()
	call InitHashtable()
	set hashtable_compiletime_16 = InitHashtable()
	set hashtable_compiletime = InitHashtable()
	call SaveInteger(hashtable_compiletime_16, 1, -242600650, 0)
	call SaveInteger(hashtable_compiletime_16, 1, 1132341824, 1)
	call SaveInteger(hashtable_compiletime_16, 1, -647782241, 2)
	call SaveInteger(hashtable_compiletime_16, 1, -854572045, 3)
	call SaveInteger(hashtable_compiletime_16, 1, -680649701, 4)
	call SaveInteger(hashtable_compiletime_16, 1, -943650483, 5)
	call SaveInteger(hashtable_compiletime_16, 1, -671760605, 6)
	call SaveInteger(hashtable_compiletime_16, 1, 349230650, 7)
	call SaveInteger(hashtable_compiletime_16, 1, -1894922563, 8)
	call SaveInteger(hashtable_compiletime_16, 1, -1474492777, 9)
	call SaveInteger(hashtable_compiletime_16, 1, -1587459251, 10)
	call SaveInteger(hashtable_compiletime_16, 1, -1676716706, 11)
	call SaveInteger(hashtable_compiletime_16, 1, -1559655710, 12)
	call SaveInteger(hashtable_compiletime_16, 1, -1663695754, 13)
	call SaveInteger(hashtable_compiletime_16, 1, 597637742, 14)
	call SaveInteger(hashtable_compiletime_16, 1, 789744696, 15)
	call SaveStr(hashtable_compiletime_16, 2, 0, "")
endfunction

function code__startPeriodic_GameTimer takes nothing returns nothing
	set GameTimer_currentTime = GameTimer_currentTime + 0.030
endfunction

function init_AbilityIds takes nothing returns boolean
	return true
endfunction

function init_Angle takes nothing returns boolean
	return true
endfunction

function init_Basics takes nothing returns boolean
	return true
endfunction

function dispatch_Table_Table_Table_saveInt takes integer this, integer parentKey, integer value returns nothing
	if Table_typeId[this] == 0 then
		if this == 0 then
			call error("Nullpointer exception when calling Table.saveInt")
		else
			call error("Called Table.saveInt on invalid object.")
		endif
	endif
	call SaveInteger(Table_ht, this, parentKey, value)
endfunction

function new_Table takes nothing returns integer
	local integer this
	if Table_firstFree == 0 then
		if Table_maxIndex < 32768 then
			set Table_maxIndex = Table_maxIndex + 1
			set this = Table_maxIndex
			set Table_typeId[this] = 12
		else
			call error("Out of memory: Could not create Table.")
			set this = 0
		endif
	else
		set Table_firstFree = Table_firstFree - 1
		set this = Table_nextFree[Table_firstFree]
		set Table_typeId[this] = 12
	endif
	return this
endfunction

function init_Colors takes nothing returns boolean
	local integer firstpart
	set Colors_hexs[0] = "0"
	set Colors_hexs[1] = "1"
	set Colors_hexs[2] = "2"
	set Colors_hexs[3] = "3"
	set Colors_hexs[4] = "4"
	set Colors_hexs[5] = "5"
	set Colors_hexs[6] = "6"
	set Colors_hexs[7] = "7"
	set Colors_hexs[8] = "8"
	set Colors_hexs[9] = "9"
	set Colors_hexs[10] = "A"
	set Colors_hexs[11] = "B"
	set Colors_hexs[12] = "C"
	set Colors_hexs[13] = "D"
	set Colors_hexs[14] = "E"
	set Colors_hexs[15] = "F"
	set Colors_decs = new_Table()
	set firstpart = 0
	loop
		exitwhen firstpart > 15
		call dispatch_Table_Table_Table_saveInt(Colors_decs, StringHash(Colors_hexs[firstpart]), firstpart)
		set firstpart = firstpart + 1
	endloop
	return true
endfunction

function init_Destructable takes nothing returns boolean
	return true
endfunction

function init_ErrorHandling takes nothing returns boolean
	set ErrorHandling_HT = hashtable_compiletime
	return true
endfunction

function new_HashMap takes nothing returns integer
	local integer this
	if Table_firstFree == 0 then
		if Table_maxIndex < 32768 then
			set Table_maxIndex = Table_maxIndex + 1
			set this = Table_maxIndex
			set Table_typeId[this] = 13
		else
			call error("Out of memory: Could not create HashMap.")
			set this = 0
		endif
	else
		set Table_firstFree = Table_firstFree - 1
		set this = Table_nextFree[Table_firstFree]
		set Table_typeId[this] = 13
	endif
	return this
endfunction

function init_EventHelper takes nothing returns boolean
	call new_HashMap()
	call new_HashMap()
	call new_Table()
	return true
endfunction

function verifyFrameNameLength takes string name returns boolean
	if StringLength(name) > 560 then
		call error("Trying to address frame with exceeding maximum frame name length (" + I2S(560) + ") for: " + name)
		return false
	endif
	return true
endfunction

function init_Framehandle takes nothing returns boolean
	local framehandle owner
	set Framehandle_GAME_UI = BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0)
	set owner = Framehandle_GAME_UI
	call verifyFrameNameLength("SetMousePositionCage")
	set owner = BlzCreateFrameByType("FRAME", "SetMousePositionCage", owner, null, 0)
	call BlzFrameSetSize(owner, 0.0001, 0.0001)
	return true
endfunction

function init_GameTimer takes nothing returns boolean
	call TimerStart(CreateTimer(), 100000., false, null)
	call TimerStart(CreateTimer(), 0.030, true, ref_function_code__startPeriodic_GameTimer)
	return true
endfunction

function init_Group takes nothing returns boolean
	call CreateGroup()
	return true
endfunction

function init_HashList takes nothing returns boolean
	return true
endfunction

function init_Integer takes nothing returns boolean
	return true
endfunction

function init_Lightning takes nothing returns boolean
	return true
endfunction

function init_MagicFunctions takes nothing returns boolean
	set MagicFunctions_compiletime = false
	return true
endfunction

function init_Maths takes nothing returns boolean
	return true
endfunction

function init_Matrices takes nothing returns boolean
	return true
endfunction

function init_Player takes nothing returns boolean
	local integer i
	local integer temp
	set Player_localPlayer = GetLocalPlayer()
	set i = 0
	set temp = bj_MAX_PLAYER_SLOTS - 1
	loop
		exitwhen i > temp
		set i = i + 1
	endloop
	return true
endfunction

function init_Playercolor takes nothing returns boolean
	return true
endfunction

function init_Printing takes nothing returns boolean
	return true
endfunction

function init_Quaternion takes nothing returns boolean
	return true
endfunction

function init_Real takes nothing returns boolean
	return true
endfunction

function init_String takes nothing returns boolean
	return true
endfunction

function init_Table takes nothing returns boolean
	set Table_ht = hashtable_compiletime_16
	return true
endfunction

function init_Test takes nothing returns boolean
	call SetTerrainType(0., 0., 0, -1, 1, 1)
	return true
endfunction

function init_TypeCasting takes nothing returns boolean
	local integer this
	set TypeCasting_typecastdata = new_Table()
	set this = TypeCasting_typecastdata
	if Table_typeId[this] == 0 then
		if this == 0 then
			call error("Nullpointer exception when calling Table.saveString")
		else
			call error("Called Table.saveString on invalid object.")
		endif
	endif
	call SaveStr(Table_ht, this, 0, "")
	return true
endfunction

function init_Vectors takes nothing returns boolean
	call Location(0., 0.)
	return true
endfunction

function init_WeatherEffects takes nothing returns boolean
	return true
endfunction

function initGlobals takes nothing returns nothing
	set ref_function_init_AbilityIds = function init_AbilityIds
	set ref_function_init_Real = function init_Real
	set ref_function_init_Integer = function init_Integer
	set ref_function_init_Angle = function init_Angle
	set ref_function_init_String = function init_String
	set ref_function_init_Vectors = function init_Vectors
	set ref_function_init_Destructable = function init_Destructable
	set ref_function_init_Player = function init_Player
	set ref_function_init_Basics = function init_Basics
	set ref_function_init_MagicFunctions = function init_MagicFunctions
	set ref_function_init_Table = function init_Table
	set ref_function_init_Playercolor = function init_Playercolor
	set ref_function_init_Maths = function init_Maths
	set ref_function_init_Colors = function init_Colors
	set ref_function_init_Printing = function init_Printing
	set ref_function_init_GameTimer = function init_GameTimer
	set ref_function_init_ErrorHandling = function init_ErrorHandling
	set ref_function_init_HashList = function init_HashList
	set ref_function_init_Matrices = function init_Matrices
	set ref_function_init_Quaternion = function init_Quaternion
	set ref_function_init_Framehandle = function init_Framehandle
	set ref_function_init_Group = function init_Group
	set ref_function_init_Lightning = function init_Lightning
	set ref_function_init_WeatherEffects = function init_WeatherEffects
	set ref_function_init_TypeCasting = function init_TypeCasting
	set ref_function_init_EventHelper = function init_EventHelper
	set ref_function_init_Test = function init_Test
	set ref_function_code__startPeriodic_GameTimer = function code__startPeriodic_GameTimer
endfunction

function main takes nothing returns nothing
	local trigger initTrig
	call initGlobals()
	call ExecuteFunc("initCompiletimeState_0")
	set initTrig = CreateTrigger()
	call TriggerAddCondition(initTrig, Condition(ref_function_init_AbilityIds))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package AbilityIds.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Real))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Real.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Integer))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Integer.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Angle))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Angle.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_String))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package String.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Vectors))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Vectors.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Destructable))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Destructable.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Player))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Player.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Basics))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Basics.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_MagicFunctions))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package MagicFunctions.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Table))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Table.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Playercolor))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Playercolor.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Maths))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Maths.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Colors))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Colors.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Printing))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Printing.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_GameTimer))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package GameTimer.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_ErrorHandling))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package ErrorHandling.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_HashList))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package HashList.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Matrices))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Matrices.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Quaternion))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Quaternion.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Framehandle))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Framehandle.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Group))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Group.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Lightning))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Lightning.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_WeatherEffects))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package WeatherEffects.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_TypeCasting))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package TypeCasting.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_EventHelper))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package EventHelper.")
	endif
	call TriggerClearConditions(initTrig)
	call TriggerAddCondition(initTrig, Condition(ref_function_init_Test))
	if  not TriggerEvaluate(initTrig) then
		call error("Could not initialize package Test.")
	endif
	call TriggerClearConditions(initTrig)
	call DestroyTrigger(initTrig)
endfunction

function config takes nothing returns nothing
endfunction