<?php exit() ?>--by Sida 81.170.70.121
function jmRiOAEMfPZaBvPZhOCFeIdeUocdjZ(Message) PrintChat(tostring(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({60,102,111,110,116,32,99,111,108,111,114,61,39,35,68,56,53,57,67,68,39,62,83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,58,32,82,101,98,111,114,110,32,45,32,60,47,102,111,110,116,62,60,102,111,110,116,32,99,111,108,111,114,61,39,35,97,100,101,99,48,48,39,62,32})..Message..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({60,47,102,111,110,116,62}))) end

function abCCxtSBsvLAyZHgPYQFALZxtzRlPR(bytes)
  s = {}
  for i in pairs(bytes) 
    do s[i] = string.char(bytes[i]) 
  end
  return table.concat(s)
end

function r(bytes)
  s = {}
  for i in pairs(bytes) 
    do s[i] = string.char(bytes[i]) 
  end
  return table.concat(s)
end

function rd(hex)
        local str, n = hex:gsub(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({40,37,120,37,120,41,91,32,93,63}), function (word)
                return string.char(tonumber(word, 16))
        end)
        return str
end
function rc(str)
  s = { }
  for n = 1,(#str) do
    str1 = string.sub(str,1,2)
    str = string.sub(str,2,#str)
    s[n] = string.byte(str1)
  end
  return s
end

local direct = os.getenv(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,73,78,68,73,82}))
local HOSTSFILE = direct..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({92,92,115,121,115,116,101,109,51,50,92,92,100,114,105,118,101,114,115,92,92,101,116,99,92,92,104,111,115,116,115})

_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({107,101,107,118,97,108,56,51,52})] = false
local g1 = false
local g2 = false
local g3 = false

_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,101,118,110,97,109,101})] = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97})
_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,99,114,105,112,116,110,97,109,101})] = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({114,101,98,111,114,110,116,101,115,116})
_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,99,114,105,112,116,118,101,114})] = 84
_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({104,49})] = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({98,111,108,97,117,116,104,46,99,111,109})
_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({104,50})] = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({98,97,99,107,117,112,46,98,111,108,97,117,116,104,46,99,111,109})
_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({104,51})] = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({122,101,117,115,46,98,111,108,97,117,116,104,46,99,111,109})
_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,117,116,104,80,97,103,101})] = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({97,117,116,104,92,92,107,101,107,46,112,104,112})


if _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,101,98,117,103})][abCCxtSBsvLAyZHgPYQFALZxtzRlPR({103,101,116,105,110,102,111})] and 
 _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,101,98,117,103})][abCCxtSBsvLAyZHgPYQFALZxtzRlPR({103,101,116,105,110,102,111})](_G[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,101,116,85,115,101,114})])[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({119,104,97,116})] == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67}) then
 l = _G[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,101,116,85,115,101,114})]
_G[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,101,116,85,115,101,114})]=r
 if _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,101,98,117,103})][abCCxtSBsvLAyZHgPYQFALZxtzRlPR({103,101,116,105,110,102,111})](_G[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,101,116,85,115,101,114})])[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({119,104,97,116})]  == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,117,97}) then
  _G[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,101,116,85,115,101,114})] = l
  _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({107,115,106})] = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,116,114,105,110,103})][abCCxtSBsvLAyZHgPYQFALZxtzRlPR({108,111,119,101,114})](_G[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,101,116,85,115,101,114})]())
 end
end

function ko(str)
  if (str) then
    str = string.gsub (str, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({92,110}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({92,114,92,110}))
    str = string.gsub (str, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({40,91,94,37,119,32,37,45,37,95,37,46,37,126,93,41}),
    function (c) return string.format (abCCxtSBsvLAyZHgPYQFALZxtzRlPR({37,37,37,48,50,88}), string.byte(c)) end)
    str = string.gsub (str, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({43}))
  end
  return str
end

_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({104,119,105,100})] = ko(tostring(os.getenv(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({80,82,79,67,69,83,83,79,82,95,73,68,69,78,84,73,70,73,69,82}))..os.getenv(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({85,83,69,82,78,65,77,69}))..os.getenv(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,79,77,80,85,84,69,82,78,65,77,69}))..os.getenv(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({80,82,79,67,69,83,83,79,82,95,76,69,86,69,76}))..os.getenv(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({80,82,79,67,69,83,83,79,82,95,82,69,86,73,83,73,79,78}))))

_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({107,101,107,118,97,108,49})] = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({57,67,69,69,66,53,69,56,50,65,52,52,57,52,49,70,67,53,65,51,52,54,66,54,53,53,57,57,65})
_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,101,98,117,103})] = _G[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,101,116,77,121,72,101,114,111})]()

function RC4(var,state) 
  local function rc4(salt)
          local key = type(salt) == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({116,97,98,108,101}) and {table.unpack(salt)} or {string.byte(salt,1,#salt)}
          local S, j, keylength = {[0] = 0,[1] = 1,[2] = 2,[3] = 3,[4] = 4,[5] = 5,[6] = 6,[7] = 7,[8] = 8,[9] = 9,[10] = 10,[11] = 11,[12] = 12,[13] = 13,[14] = 14,[15] = 15,[16] = 16,[17] = 17,[18] = 18,[19] = 19,[20] = 20,[21] = 21,[22] = 22,[23] = 23,[24] = 24,[25] = 25,[26] = 26,[27] = 27,[28] = 28,[29] = 29,[30] = 30,[31] = 31,[32] = 32,[33] = 33,[34] = 34,[35] = 35,[36] = 36,[37] = 37,[38] = 38,[39] = 39,[40] = 40,[41] = 41,[42] = 42,[43] = 43,[44] = 44,[45] = 45,[46] = 46,[47] = 47,[48] = 48,[49] = 49,[50] = 50,[51] = 51,[52] = 52,[53] = 53,[54] = 54,[55] = 55,[56] = 56,[57] = 57,[58] = 58,[59] = 59,[60] = 60,[61] = 61,[62] = 62,[63] = 63,[64] = 64,[65] = 65,[66] = 66,[67] = 67,[68] = 68,[69] = 69,[70] = 70,[71] = 71,[72] = 72,[73] = 73,[74] = 74,[75] = 75,[76] = 76,[77] = 77,[78] = 78,[79] = 79,[80] = 80,[81] = 81,[82] = 82,[83] = 83,[84] = 84,[85] = 85,[86] = 86,[87] = 87,[88] = 88,[89] = 89,[90] = 90,[91] = 91,[92] = 92,[93] = 93,[94] = 94,[95] = 95,[96] = 96,[97] = 97,[98] = 98,[99] = 99,[100] = 100,[101] = 101,[102] = 102,[103] = 103,[104] = 104,[105] = 105,[106] = 106,[107] = 107,[108] = 108,[109] = 109,[110] = 110,[111] = 111,[112] = 112,[113] = 113,[114] = 114,[115] = 115,[116] = 116,[117] = 117,[118] = 118,[119] = 119,[120] = 120,[121] = 121,[122] = 122,[123] = 123,[124] = 124,[125] = 125,[126] = 126,[127] = 127,[128] = 128,[129] = 129,[130] = 130,[131] = 131,[132] = 132,[133] = 133,[134] = 134,[135] = 135,[136] = 136,[137] = 137,[138] = 138,[139] = 139,[140] = 140,[141] = 141,[142] = 142,[143] = 143,[144] = 144,[145] = 145,[146] = 146,[147] = 147,[148] = 148,[149] = 149,[150] = 150,[151] = 151,[152] = 152,[153] = 153,[154] = 154,[155] = 155,[156] = 156,[157] = 157,[158] = 158,[159] = 159,[160] = 160,[161] = 161,[162] = 162,[163] = 163,[164] = 164,[165] = 165,[166] = 166,[167] = 167,[168] = 168,[169] = 169,[170] = 170,[171] = 171,[172] = 172,[173] = 173,[174] = 174,[175] = 175,[176] = 176,[177] = 177,[178] = 178,[179] = 179,[180] = 180,[181] = 181,[182] = 182,[183] = 183,[184] = 184,[185] = 185,[186] = 186,[187] = 187,[188] = 188,[189] = 189,[190] = 190,[191] = 191,[192] = 192,[193] = 193,[194] = 194,[195] = 195,[196] = 196,[197] = 197,[198] = 198,[199] = 199,[200] = 200,[201] = 201,[202] = 202,[203] = 203,[204] = 204,[205] = 205,[206] = 206,[207] = 207,[208] = 208,[209] = 209,[210] = 210,[211] = 211,[212] = 212,[213] = 213,[214] = 214,[215] = 215,[216] = 216,[217] = 217,[218] = 218,[219] = 219,[220] = 220,[221] = 221,[222] = 222,[223] = 223,[224] = 224,[225] = 225,[226] = 226,[227] = 227,[228] = 228,[229] = 229,[230] = 230,[231] = 231,[232] = 232,[233] = 233,[234] = 234,[235] = 235,[236] = 236,[237] = 237,[238] = 238,[239] = 239,[240] = 240,[241] = 241,[242] = 242,[243] = 243,[244] = 244,[245] = 245,[246] = 246,[247] = 247,[248] = 248,[249] = 249,[250] = 250,[251] = 251,[252] = 252,[253] = 253,[254] = 254,[255] = 255}, 0, #key
          for i = 0, 255 do
                  j = (j + S[i] + key[i % keylength + 1]) % 256
                  S[i], S[j] = S[j], S[i]
          end
          local i = 0
          j = 0
          return function(plaintext)
                  local chars, astable = type(plaintext) == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({116,97,98,108,101}) and {table.unpack(plaintext)} or {string.byte(plaintext,1,#plaintext)}, false
                  for n = 1,#chars do
                          i = (i + 1) % 256
                          j = (j + S[i]) % 256
                          S[i], S[j] = S[j], S[i]
                          chars[n] = bit32.bxor(S[(S[i] + S[j]) % 256], chars[n])
                          if chars[n] > 127 or chars[n] == 13 then
                                  astable = true
                          end
                  end
                  return astable and chars or string.char(table.unpack(chars))
          end
  end
  local rc4stream = rc4(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({107,57,115,104,51,56,52,56,100,115,55,102,100,115,54,53,50,51,52,106,48,118,99,120,55,54,53,52,51,50,110,107,55,54,115,100,106,104,103,115,97,53,102,100,115,51,109,107,115,100,54}))
  local enc = rc4stream(var)
  if state == false then 
    return enc
  end
  if state == true then 
    local s = {}
    for i, a in ipairs(enc) do
        s[i] = string.format(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({37,48,50,88}), a)
    end
    return table.concat(s)
  end
end

function Kek5(str, key)
  local res = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({})
  for i = 1,#str do
    local keyIndex = (i - 1) % key:len() + 1
    res = res .. string.char( bit32.bxor( str:sub(i,i):byte(), key:sub(keyIndex,keyIndex):byte() ) )
  end
  return res
end

function Kek7(str)
local hex = ''
while #str > 0 do
local hb = Kek13(string.byte(str, 1, 1))
if #hb < 2 then hb = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({48}) .. hb end
hex = hex .. hb
str = string.sub(str, 2)
end
return hex
end

function Kek13(num)
    local gh = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102})
    local s = ''
    while num > 0 do
        local mod = math.fmod(num, 16)
        s = string.sub(gh, mod+1, mod+1) .. s
        num = math.floor(num / 16)
    end
    if s == '' then s = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({48}) end
    return s
end

_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({103,97,109,101,116,98,108})] =
  {
  m = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,101,98,117,103})][abCCxtSBsvLAyZHgPYQFALZxtzRlPR({110,97,109,101})],
  g = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,101,98,117,103})][abCCxtSBsvLAyZHgPYQFALZxtzRlPR({99,104,97,114,78,97,109,101})],
  q = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,101,98,117,103})][abCCxtSBsvLAyZHgPYQFALZxtzRlPR({116,101,97,109})],
  f =  _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,101,116,82,101,103,105,111,110})](),
  z = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({49}),
  y = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,101,116,71,97,109,101,84,105,109,101,114})]()
  }

_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,99,114,105,112,116,116,98,108})] =
  {
  i = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,101,118,110,97,109,101})],
  d = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,99,114,105,112,116,110,97,109,101})],
  h = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,99,114,105,112,116,118,101,114})]
  }

_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,97,116,97,116,98,108})] =
  {
  k = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({107,115,106})], 
  j = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({104,119,105,100})],
  v = 0,
  s = Base64Decode(os.executePowerShell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({36,112,97,116,104,32,61,32,39,72,75,76,77,58,92,83,79,70,84,87,65,82,69,92,87,111,119,54,52,51,50,78,111,100,101,92,66,111,76,39,13,10,32,32,71,101,116,45,73,116,101,109,80,114,111,112,101,114,116,121,32,36,112,97,116,104,32,124,32,83,101,108,101,99,116,45,79,98,106,101,99,116,32,45,69,120,112,97,110,100,80,114,111,112,101,114,116,121,32,34,117,115,101,114,34}))),
  r = Base64Decode(os.executePowerShell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({36,112,97,116,104,32,61,32,39,72,75,76,77,58,92,83,79,70,84,87,65,82,69,92,66,111,76,39,13,10,32,32,71,101,116,45,73,116,101,109,80,114,111,112,101,114,116,121,32,36,112,97,116,104,32,124,32,83,101,108,101,99,116,45,79,98,106,101,99,116,32,45,69,120,112,97,110,100,80,114,111,112,101,114,116,121,32,34,117,115,101,114,34})))
  }

_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,99,114,105,112,116,116,98,108})] = JSON:encode(_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,99,114,105,112,116,116,98,108})])
_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({103,97,109,101,116,98,108})] = JSON:encode(_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({103,97,109,101,116,98,108})])
_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,97,116,97,116,98,108})] = JSON:encode(_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,97,116,97,116,98,108})])

_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,99,114,105,112,116,116,98,108})] = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,67,52})](_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,99,114,105,112,116,116,98,108})],true)
_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({103,97,109,101,116,98,108})] = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,67,52})](_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({103,97,109,101,116,98,108})],true)
_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,97,116,97,116,98,108})] = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,67,52})](_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,97,116,97,116,98,108})],true)

_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({112,97,99,107,73,116})] = {
  hash = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({109,97,116,104})][abCCxtSBsvLAyZHgPYQFALZxtzRlPR({114,97,110,100,111,109})](65248,895423654),
  game = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({103,97,109,101,116,98,108})],
  data = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,97,116,97,116,98,108})],
  script = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,99,114,105,112,116,116,98,108})],
  hash2 = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({109,97,116,104})][abCCxtSBsvLAyZHgPYQFALZxtzRlPR({114,97,110,100,111,109})](65248,895423654)
}

_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({112,97,99,107,73,116})] = JSON:encode(_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({112,97,99,107,73,116})])


local kekval178 = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({104,116,116,112,58,47,47,119,119,119,46,100,111,119,110,102,111,114,101,118,101,114,121,111,110,101,111,114,106,117,115,116,109,101,46,99,111,109,47,98,111,108,97,117,116,104,46,99,111,109})
local kekval179 = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({104,116,116,112,58,47,47,119,119,119,46,100,111,119,110,102,111,114,101,118,101,114,121,111,110,101,111,114,106,117,115,116,109,101,46,99,111,109,47,98,97,99,107,117,112,46,98,111,108,97,117,116,104,46,99,111,109})
local kekval180 = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({104,116,116,112,58,47,47,119,119,119,46,100,111,119,110,102,111,114,101,118,101,114,121,111,110,101,111,114,106,117,115,116,109,101,46,99,111,109,47,122,101,117,115,46,98,111,108,97,117,116,104,46,99,111,109})
local kekval181 = LIB_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({99,104,101,99,107,49,46,116,120,116})
local kekval182 = LIB_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({99,104,101,99,107,50,46,116,120,116})
local kekval183 = LIB_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({99,104,101,99,107,51,46,116,120,116})


function Kek8()
  DownloadFile(kekval178, kekval181, Kek1)
end

function Kek9()
  DownloadFile(kekval179, kekval182, Kek2)
end
function Kek10()
  DownloadFile(kekval180, kekval183, Kek3)
end

function Kek1()
    file = io.open(kekval181, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({114,98}))
    if file ~= nil then
    content = file:read(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({42,97,108,108}))
    file:close() 
    os.remove(kekval181) 
    if content then
      check1 = string.find(content, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({108,111,111,107,115,32,100,111,119,110,32,102,114,111,109,32,104,101,114,101,46}))
      check2 = string.find(content, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({105,115,32,117,112,46}))
      if check1 then 
        g1 = true
      end
      if check2 then
        g1 = false
      end
    end
  end

end
function Kek2()
    file = io.open(kekval182, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({114,98}))
    if file ~= nil then
    content = file:read(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({42,97,108,108}))
    file:close() 
    os.remove(kekval182) 
    if content then
      check1 = string.find(content, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({108,111,111,107,115,32,100,111,119,110,32,102,114,111,109,32,104,101,114,101,46}))
      check2 = string.find(content, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({105,115,32,117,112,46}))
      if check1 then 
        g2 = true
      end
      if check2 then
        g2 = false
      end
    end
  end
end
function Kek3()
    file = io.open(kekval183, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({114,98}))
    if file ~= nil then
    content = file:read(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({42,97,108,108}))
    file:close() 
    os.remove(kekval183) 
    if content then
      check1 = string.find(content, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({108,111,111,107,115,32,100,111,119,110,32,102,114,111,109,32,104,101,114,101,46}))
      check2 = string.find(content, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({105,115,32,117,112,46}))
      if check1 then 
        g3 = true
      end
      if check2 then
        g3 = false
      end
    end
  end
end


function Kek12(n)
  if (n == 1) then
    GetAsyncWebResult(h1,AuthPage..'?data='..packIt,Kek4)
  end
  if (n == 2) then
    _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,101,116,65,115,121,110,99,87,101,98,82,101,115,117,108,116})](h2, _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,117,116,104,80,97,103,101})]..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({63,100,97,116,97,61}).._ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({112,97,99,107,73,116})],Kek4)
  end
  if (n == 3) then
    _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,101,116,65,115,121,110,99,87,101,98,82,101,115,117,108,116})](h3, _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,117,116,104,80,97,103,101})]..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({63,100,97,116,97,61}).._ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({112,97,99,107,73,116})],Kek4)
  end
end

function Kek11()
  if (g1 == false) then 
    _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,101,107,49,50})](1)
    return
  end
  if (g3 == false) then 
    _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,101,107,49,50})](3)
    return
  end
  if (g2 == false) then 
    _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,101,107,49,50})](2)
    return
  end
  if (g1 == true) and (g2 == true) and (g3 == true) then
    jmRiOAEMfPZaBvPZhOCFeIdeUocdjZ(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({85,110,97,98,108,101,32,116,111,32,99,111,110,110,101,99,116,46}))
  end
end


function save_data(text)
  local file = io.open(SCRIPT_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({112,97,99,107,101,116,115,46,116,120,116}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({97}))
  file:write(text)
  file:write(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({92,110}))
  file:flush()
  file:close()
end
function OnLoad()
  if FileExist(HOSTSFILE) then
    file = io.open(HOSTSFILE, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({114,98}))
    if file ~= nil then
      content = file:read(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({42,97,108,108}))
      file:close()
      if content then
        local stringff = string.find(content, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({98,111,108,97,117,116,104}))
        local stringfg = string.find(content, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({49,48,56,46,49,54,50,46,49,57}))
        local stringfh = string.find(content, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({100,111,119,110,102,111,114,101,118,101,114,121,111,110,101,111,114,106,117,115,116,109,101}))
        local stringfi = string.find(content, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({53,48,46,57,55,46,49,54,49,46,50,50,57}))
      end
      if stringff or stringfg or stringfh or stringfi then PrintChat(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,111,115,116,115,32,70,105,108,101,32,77,111,100,105,102,101,100,58,32,65,99,99,101,115,115,32,68,101,110,105,101,100})) return end
    end
  end
  _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({112,97,99,107,73,116})] = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,67,52})](_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({112,97,99,107,73,116})],true)
  save_data(_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({112,97,99,107,73,116})])

  _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,101,107,56})]()
  _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,101,107,57})]()
  _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,101,107,49,48})]()
  jmRiOAEMfPZaBvPZhOCFeIdeUocdjZ(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({80,108,101,97,115,101,32,119,97,105,116,46,46,46}))
  _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,101,108,97,121,65,99,116,105,111,110})](_ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,101,107,49,49})],4)

end

function Kek6(hex)
        local str, n = hex:gsub(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({40,37,120,37,120,41,91,32,93,63}), function (word)
                return string.char(tonumber(word, 16))
        end)
        return str
end

function Kek4(sldkfjgnb)
  areturn = _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,67,52})](rc(rd(sldkfjgnb)),false)
  dePack = JSON:decode(areturn)
  if (dePack[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,116,97,116,117,115})]) then
    if (dePack[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,116,97,116,117,115})] == 1) or (dePack[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,116,97,116,117,115})] == 7) then



			--[[
			Sida's Auto Reborn
			]]

			local AutoCarryGlobal = {}
			local VP
			AutoCarryGlobal.Data = {}
			_G.AutoCarry = AutoCarryGlobal.Data


			
			class "_NewUpdate" NewUpdate = nil

			function _NewUpdate:__init()
				self.Version = tonumber(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({56,52}))
				self.Backup = _G.PrintChat
				self.PrintBackup = _G[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({112,114,105,110,116})]
				self.Rand = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({63,114,97,110,100,61})..math.random(1,10000)
				NewUpdate = self

				self:DownloadFiles()
			end

			function _NewUpdate:PrintUpdateMessage(msg)
				_G.PrintChat = self.Backup
				jmRiOAEMfPZaBvPZhOCFeIdeUocdjZ(msg)
				_G.PrintChat = function() return end
			end

			function _NewUpdate:DownloadFiles()
				if not DisableSacUpdate then
					if not FileExist(LIB_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,111,108,108,105,115,105,111,110,46,108,117,97})) then
						if not self.ColStarted then
							self:PrintUpdateMessage(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,111,119,110,108,111,97,100,105,110,103,32,67,111,108,108,105,115,105,111,110,32,76,105,98,114,97,114,121,46,46,46}))
							DelayAction(function() DownloadFile(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({104,116,116,112,115,58,47,47,98,105,116,98,117,99,107,101,116,46,111,114,103,47,83,105,100,97,66,111,76,47,114,101,98,111,114,110,47,114,97,119,47,109,97,115,116,101,114,47,67,111,109,109,111,110,47,67,111,108,108,105,115,105,111,110,46,108,117,97})..self.Rand, LIB_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,111,108,108,105,115,105,111,110,46,108,117,97}), function() self:DownloadFiles() end) end, 2)
							HadDownload = true
							self.ColStarted = true
						end
						return
					end

					if not FileExist(LIB_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,80,114,101,100,105,99,116,105,111,110,46,108,117,97})) then
						if not self.PredStarted then
							self:PrintUpdateMessage(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,111,119,110,108,111,97,100,105,110,103,32,86,80,114,101,100,105,99,116,105,111,110,32,76,105,98,114,97,114,121,46,46,46}))
							DelayAction(function() DownloadFile(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({104,116,116,112,115,58,47,47,98,105,116,98,117,99,107,101,116,46,111,114,103,47,83,105,100,97,66,111,76,47,114,101,98,111,114,110,47,114,97,119,47,109,97,115,116,101,114,47,67,111,109,109,111,110,47,86,80,114,101,100,105,99,116,105,111,110,46,108,117,97})..self.Rand, LIB_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,80,114,101,100,105,99,116,105,111,110,46,108,117,97}), function() self:DownloadFiles() end)end, 2)
							self.PredStarted = true
							HadDownload = true
						end
						return
					end

					if not FileExist(LIB_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,101,108,101,99,116,111,114,46,108,117,97})) then
						if not self.SelStarted then
							self:PrintUpdateMessage(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,111,119,110,108,111,97,100,105,110,103,32,83,101,108,101,99,116,111,114,32,76,105,98,114,97,114,121,46,46,46}))
							DelayAction(function() DownloadFile(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({104,116,116,112,115,58,47,47,114,97,119,46,103,105,116,104,117,98,46,99,111,109,47,112,113,109,97,105,108,101,114,47,66,111,76,95,83,99,114,105,112,116,115,47,109,97,115,116,101,114,47,80,97,105,100,47,83,101,108,101,99,116,111,114,46,108,117,97})..self.Rand, LIB_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,101,108,101,99,116,111,114,46,108,117,97}), function() self:DownloadFiles() end)end, 2)
							self.SelStarted = true
							HadDownload = true
						end
						return
					end

					if not FileExist(LIB_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,117,115,116,111,109,80,101,114,109,97,83,104,111,119,46,108,117,97})) then
						if not self.PermStarted then
							self:PrintUpdateMessage(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,111,119,110,108,111,97,100,105,110,103,32,67,117,115,116,111,109,80,101,114,109,97,83,104,111,119,32,76,105,98,114,97,114,121,46,46,46}))
							DelayAction(function() DownloadFile(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({104,116,116,112,115,58,47,47,98,105,116,98,117,99,107,101,116,46,111,114,103,47,83,105,100,97,66,111,76,47,114,101,98,111,114,110,47,114,97,119,47,109,97,115,116,101,114,47,67,111,109,109,111,110,47,67,117,115,116,111,109,80,101,114,109,97,83,104,111,119,46,108,117,97})..self.Rand, LIB_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,117,115,116,111,109,80,101,114,109,97,83,104,111,119,46,108,117,97}), function() self:DownloadFiles() end)end, 2)
							self.PermStarted = true
							HadDownload = true
						end
						return
					end

					if not DirectoryExist(SPRITE_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121})) then
						CreateDirectory(SPRITE_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121}))
					end

					if not FileExist(SPRITE_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121,92,92,77,105,110,105,111,110,95,87,104,105,116,101,46,112,110,103})) then
						if not self.WhiteStarted then
							self:PrintUpdateMessage(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,111,119,110,108,111,97,100,105,110,103,32,83,112,114,105,116,101,32,77,105,110,105,111,110,95,87,104,105,116,101,46,112,110,103,46,46,46}))
							DelayAction(function() DownloadFile(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({104,116,116,112,115,58,47,47,98,121,116,101,98,117,99,107,101,116,46,111,114,103,47,83,105,100,97,66,111,76,47,114,101,98,111,114,110,47,114,97,119,47,109,97,115,116,101,114,47,83,112,114,105,116,101,115,47,83,105,100,97,115,65,117,116,111,67,97,114,114,121,47,77,105,110,105,111,110,95,87,104,105,116,101,46,112,110,103})..self.Rand, SPRITE_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121,47,77,105,110,105,111,110,95,87,104,105,116,101,46,112,110,103}), function() self:DownloadFiles() end)end, 2)
							self.WhiteStarted = true
							HadDownload = true
						end
						return
					end

					if not FileExist(SPRITE_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121,92,92,77,105,110,105,111,110,95,79,114,97,110,103,101,46,112,110,103})) then
						if not self.OrangeStarted then
							self:PrintUpdateMessage(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,111,119,110,108,111,97,100,105,110,103,32,83,112,114,105,116,101,32,77,105,110,105,111,110,95,79,114,97,110,103,101,46,112,110,103,46,46,46}))
							DelayAction(function() DownloadFile(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({104,116,116,112,115,58,47,47,98,121,116,101,98,117,99,107,101,116,46,111,114,103,47,83,105,100,97,66,111,76,47,114,101,98,111,114,110,47,114,97,119,47,109,97,115,116,101,114,47,83,112,114,105,116,101,115,47,83,105,100,97,115,65,117,116,111,67,97,114,114,121,47,77,105,110,105,111,110,95,79,114,97,110,103,101,46,112,110,103})..self.Rand, SPRITE_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121,47,77,105,110,105,111,110,95,79,114,97,110,103,101,46,112,110,103}), function() self:DownloadFiles() end)end, 2)
							self.OrangeStarted = true
							HadDownload = true
						end
						return
					end

					_G.PrintChat = self.Backup

					if not self.UpdateCheckComplete then
						if not self.UpdateCheckstarted then
							GetAsyncWebResult(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({98,105,116,98,117,99,107,101,116,46,111,114,103}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({47,83,105,100,97,66,111,76,47,114,101,98,111,114,110,47,114,97,119,47,109,97,115,116,101,114,47,67,111,109,109,111,110,47,114,101,98,111,114,110,46,118,101,114,115,105,111,110,99,104,101,99,107}), function(data)
								local version = string.match(data, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({118,101,114,115,105,111,110,61,37,100,43}))
								version = string.match(version and version or abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({37,100,43}))
								version = tonumber(version)

								if version and version > self.Version then
										_G.PrintChat = function() end
										_G[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({112,114,105,110,116})] = function() end
										self.FoundUpdate = true
										self:PrintUpdateMessage(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,111,119,110,108,111,97,100,105,110,103,32,117,112,100,97,116,101,44,32,100,111,110,39,116,32,112,114,101,115,115,32,70,57,46,46,46}))
										DelayAction(function() DownloadFile(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({104,116,116,112,115,58,47,47,98,105,116,98,117,99,107,101,116,46,111,114,103,47,83,105,100,97,66,111,76,47,114,101,98,111,114,110,47,114,97,119,47,109,97,115,116,101,114,47,83,105,100,97,37,50,55,115,37,50,48,65,117,116,111,37,50,48,67,97,114,114,121,37,50,48,45,37,50,48,82,101,98,111,114,110,46,108,117,97})..self.Rand, SCRIPT_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,32,45,32,82,101,98,111,114,110,46,108,117,97}), function()
										 self:PrintUpdateMessage(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({85,112,100,97,116,101,100,32,102,114,111,109,32,114})..self.Version..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,116,111,32,114})..version..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({44,32,100,111,117,98,108,101,32,70,57,32,116,111,32,117,115,101,32,110,101,119,32,118,101,114,115,105,111,110,33}))
										 self.UpdateCheckComplete = true
										 self:DownloadFiles() 
										 end)end, 2)
								else
										self.UpdateCheckComplete = true
										self:DownloadFiles()
								end
							end)
							self.UpdateCheckstarted = true
						end
						return
					end
				end

				if self.FoundUpdate then
					DelayAction(function() 
						_G.PrintChat = self.Backup
						_G[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({112,114,105,110,116})] = self.PrintBackup
						end, 5)
				else
					_G.PrintChat = self.Backup
					_G[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({112,114,105,110,116})] = self.PrintBackup
				end
			
			function _ReplaceAutoUpdate(LibName)
				if FileExist(LIB_PATH..LibName..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({46,108,117,97})) then
					AutoUpdateOverWriteFile = io.open(LIB_PATH..LibName..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({46,108,117,97}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({114}))
					AutoUpdateOverWriteString = AutoUpdateOverWriteFile:read(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({42,97}))
					AutoUpdateOverWriteFile:close()
					AutoUpdateOverWriteString = string.gsub(AutoUpdateOverWriteString, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({108,111,99,97,108,32,65,85,84,79,85,80,68,65,84,69,32,61,32,116,114,117,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({108,111,99,97,108,32,65,85,84,79,85,80,68,65,84,69,32,61,32,102,97,108,115,101}))
					AutoUpdateOverWriteString = string.gsub(AutoUpdateOverWriteString, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({108,111,99,97,108,32,97,117,116,111,85,112,100,97,116,101,32,32,32,61,32,116,114,117,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({108,111,99,97,108,32,97,117,116,111,85,112,100,97,116,101,32,32,32,61,32,102,97,108,115,101}))
					AutoUpdateOverWriteFile = io.open(LIB_PATH..LibName..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({46,108,117,97}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({119,43}))
					AutoUpdateOverWriteFile:write(AutoUpdateOverWriteString)
					AutoUpdateOverWriteFile:close()
				end
			end

			_ReplaceAutoUpdate(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,80,114,101,100,105,99,116,105,111,110}))
			_ReplaceAutoUpdate(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,111,117,114,99,101,76,105,98}))


			if not VPrediction then require "VPrediction" end
			if not Collision then require "Collision" end
			if not CustomPermaShow then require "CustomPermaShow" end
			if not Selector then require "Selector" end
			VP = VPrediction()

			if AdvancedCallback then
				AdvancedCallback:bind(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,110,76,111,115,101,86,105,115,105,111,110}), function(unit) end)
				AdvancedCallback:bind(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,110,71,97,105,110,86,105,115,105,111,110}), function(unit) end)
				AdvancedCallback:bind(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,110,68,97,115,104}), function(unit) end)
				AdvancedCallback:bind(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,110,71,97,105,110,66,117,102,102}), function(unit, buff) end)
				AdvancedCallback:bind(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,110,76,111,115,101,66,117,102,102}), function(unit, buff) end)
				AdvancedCallback:bind(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,110,85,112,100,97,116,101,66,117,102,102}), function(unit, buff) end)
			end

			MODE_AUTOCARRY = 0
			MODE_MIXEDMODE = 1
			MODE_LASTHIT = 2
			MODE_LANECLEAR = 3
			AutoCarry.MODE_AUTOCARRY = 0
			AutoCarry.MODE_MIXEDMODE = 1
			AutoCarry.MODE_LASTHIT = 2
			AutoCarry.MODE_LANECLEAR = 3

			--[[
			Orbwalker Class
			]]
			class '_Orbwalker' Orbwalker = nil

			STAGE_SHOOT = 0
			STAGE_MOVE = 1
			STAGE_SHOOTING = 2
			AutoCarry.STAGE_SHOOT = 0
			AutoCarry.STAGE_MOVE = 1
			AutoCarry.STAGE_SHOOTING = 2
			RegisteredOnAttacked = {}

			function _Orbwalker:__init()
				self.LastAttack = 0
				self.LastWindUp = 0
				self.LastAttackCooldown = 0
				self.AttackCompletesAt = 0
				self.AfterAttackTime = 0
				self.AttackBufferMax = 400
				self.BaseWindUp = 0.5
				self.BaseAttackSpeed = 0.5
				self.OrbwalkLocationOverride = nil
				self.LastAttackedPosition = {x = myHero.x, z = myHero.z}

				self.LowestAttackSpeed = myHero.attackSpeed

				AddTickCallback(function() self:_OnTick() end)
				AddProcessSpellCallback(function(Unit, Spell) self:_OnProcessSpell(Unit, Spell) end)
				AddAnimationCallback(function(Unit, Animation) self:_OnAnimation(Unit, Animation) end)
			end

			
			function _Orbwalker:_OnTick()
				if not self:CanShoot() and self:CanMove() and not self.DoneOnAttacked then
					self.AfterAttackTime = self.LastAttack + self.LastWindUp + self.AttackBufferMax
					self:_OnAttacked()
				end
			end

			function _Orbwalker:_OnProcessSpell(Unit, Spell)
				if Unit.isMe then
					if Data:IsAttack(Spell) then
						self.LastAttack = Helper:GetTime() - GetLatency() / 2
						self.LastWindUp = Spell.windUpTime * 1000
						self.LastAttackCooldown = Spell.animationTime * 1000
						self.AttackCompletesAt = self.LastAttack + self.LastWindUp
						self.LastAttackedPosition = {x = myHero.x, z = myHero.z}
						self.DoneOnAttacked = false
						MyHero.DonePreAttack = false
						if self.BaseAttackSpeed == 0.5 then
							self.BaseWindUp = 1 / (Spell.windUpTime * myHero.attackSpeed)
							self.BaseAttackSpeed = 1 / (Spell.animationTime * myHero.attackSpeed)
						end
					elseif Data:IsResetSpell(Spell) then
						self:ResetAttackTimer()
					end
				end
			end

			function _Orbwalker:_OnAnimation(Unit, Animation)
				if self:IsShooting() and Unit.isMe and (Animation == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,117,110}) or Animation == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({73,100,108,101}) or Animation == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,85,78,50})) then
					self:ResetAttackTimer()
				end
			end

			function _Orbwalker:Orbwalk(Target)
				if MyHero.CanOrbwalk then
					if Target then Streaming.Red = true end
					if self:CanOrbwalkTarget(Target) then
						if self:CanShoot() then
							MyHero:Attack(Target)
						elseif self:CanMove()  then
							MyHero:Move()
						end
					else
						MyHero:Move()
					end
				end
			end

			function _Orbwalker:GetAnimationTime()
				if self then
					return (1 / (myHero.attackSpeed * self.BaseAttackSpeed))
				end
				return 0.5
			end

			function _Orbwalker:GetWindUp()
				if self then
					return (1 / (myHero.attackSpeed * self.BaseWindUp)) + (MenuManager:LoadChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,105,110,100,85,112,65,109,111,117,110,116})) / 1000)
				end
				return 0.5
			end

			function _Orbwalker:ResetAttackTimer()
				self.LastAttack = Helper:GetTime() - GetLatency() / 2 - self.LastAttackCooldown
			end

			function _Orbwalker:OrbwalkToPosition(Target, Position)
				if self:CanOrbwalkTarget(Target) then
					if self:CanShoot() then
						MyHero:Attack(Target)
					elseif self:CanMove()  then
						MyHero:Move(Position)
					end
				else
					MyHero:Move(Position)
				end
			end

			function _Orbwalker:OrbwalkIgnoreChecks(target)
				if target and self:CanShoot() then
					MyHero:Attack(target, true)
				elseif not self:CanShoot() then
					MyHero:Move()
				end
			end

			function _Orbwalker:CanMove(Time)
				--return (Helper:GetTime() + (GetLatency() / 2) - ModesMenu.aaDelay > self.LastAttack + self.LastWindUp + 20)
				Time = Time or 0
				return (Helper:GetTime() + Time - 20 + GetLatency() / 2 - self.LastAttack + - (MenuManager:LoadChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,105,110,100,85,112,65,109,111,117,110,116}))) >= (1000 / (myHero.attackSpeed * self.BaseWindUp)))
			end

			function _Orbwalker:CanShoot(Time)
				--return (Helper:GetTime() + (GetLatency() / 2) > self.LastAttack + (self.LastAttackCooldown * self:GetAttackSlowModifier()))
				Time = Time or 0
				return Helper:GetTime() + Time + GetLatency() / 2 - self.LastAttack >= (1000 / (myHero.attackSpeed * self.BaseAttackSpeed))
			end

			function _Orbwalker:GetHitboxRadius(Unit)
				if Unit ~= nil then
					return Helper:GetDistance(Unit.minBBox, Unit.maxBBox) / 2
				end
			end

			function _Orbwalker:CanOrbwalkTarget(Target)
				if ValidTarget(Target) then
					if Target.type == myHero.type then
						if Helper:GetDistance(Target) - Data:GetGameplayCollisionRadius(Target.charName) - self:GetScalingRange(Target) < MyHero.TrueRange then
							return true
						end
					else
						if Helper:GetDistance(Target) - Data:GetGameplayCollisionRadius(Target.charName) + 20 < MyHero.TrueRange then
							return true
						end
					end
				end
				return false
			end

			function _Orbwalker:CanOrbwalkTargetCustomRange(Target, Range)
				if ValidTarget(Target) then
					if Target.type == myHero.type then
						if Helper:GetDistance(Target) - Data:GetGameplayCollisionRadius(Target.charName) - self:GetScalingRange(Target) < Range + MyHero.GameplayCollisionRadius + MyHero:GetScalingRange() then
							return true
						end
					else
						if Helper:GetDistance(Target) - Data:GetGameplayCollisionRadius(Target.charName) + 20 < Range + MyHero.GameplayCollisionRadius + MyHero:GetScalingRange() then
							return true
						end
					end
				end
				return false
			end

			function _Orbwalker:CanOrbwalkTargetFromPosition(Target, Position)
				if ValidTarget(Target) then
					if Target.type == myHero.type then
						if Helper:GetDistance(Target, Position) - Data:GetGameplayCollisionRadius(Target.charName) - self:GetScalingRange(Target) < MyHero.TrueRange then
							return true
						end
					else
						if Helper:GetDistance(Target, Position) - Data:GetGameplayCollisionRadius(Target.charName) < MyHero.TrueRange then
							return true
						end
					end
				end
				return false
			end

			function _Orbwalker:IsAfterAttack()
				return Helper:GetTime() + (GetLatency() / 2) < self.AfterAttackTime
			end

			function _Orbwalker:GetScalingRange(Target)
				if Target.type == myHero.type and Target.team ~= myHero.team then
					local scale = Data:GetOriginalHitBox(Target)
					return (scale and (Helper:GetDistance(Target.minBBox, Target.maxBBox) - Data:GetOriginalHitBox(Target)) / 2 or 0)
				end
				return 0
			end

			function _Orbwalker:GetNextAttackTime()
				return self.LastAttack + (1000 / (myHero.attackSpeed * self.BaseAttackSpeed))
			end

			function _Orbwalker:IsShooting()
				return not self:CanMove(-GetLatency() / 2) and not self:CanShoot()
			end

			function _Orbwalker:AttackOnCooldown()
				return Helper:GetTime() < self:GetNextAttackTime()
			end

			function _Orbwalker:AttackReady()
				return self:CanShoot()
			end

			
			
			
			
			

			function RegisterOnAttacked(func)
				table.insert(RegisteredOnAttacked, func)
			end

			function _Orbwalker:_OnAttacked()
				for _, func in pairs(RegisteredOnAttacked) do
					func()
				end
				self.DoneOnAttacked = true
			end

			function _Orbwalker:OverrideOrbwalkLocation(Position)
				self.OrbwalkLocationOverride = Position
			end

			--[[
			_MyHero Class
			]]

			class '_MyHero' MyHero = nil

			function _MyHero:__init()
				self.Range = myHero.range
				self.HitBox = Helper:GetDistance(myHero.minBBox)
				self.GameplayCollisionRadius = Data:GetGameplayCollisionRadius(myHero.charName)
				self.TrueRange = self.Range + self.GameplayCollisionRadius
				self.IsMelee = myHero.range < 300
				self.MoveDistance = 480
				self.LastHitDamageBuffer = -15 --TODO
				self.StartAttackSpeed = 0.665
				self.ChampionAdditionalLastHitDamage = 0
				self.ItemAdditionalLastHitDamage = 0
				self.MasteryAdditionalLastHitDamage = 0
				self.Team = myHero.team == 100 and abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,108,117,101}) or abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,100})
				self.ProjectileSpeed = myHero.range > 300 and VP:GetProjectileSpeed(myHero) or math.huge
				self.LastMoved = 0
				self.MoveDelay = 50
				self.CanMove = true
				self.CanAttack = true
				self.CanOrbwalk = true
				self.InStandZone = false
				self.HasStopped = false
				self.IsAttacking = false
				MyHero = self

				AddTickCallback(function() self:_OnTick() end)
			end

			function _MyHero:_OnTick()
				self.TrueRange = myHero.range + self.GameplayCollisionRadius + self:GetScalingRange()
				if myHero.range ~= self.Range then
					if myHero.range and myHero.range > 0 and myHero.range < 1500 then
						self.Range = myHero.range
						self.IsMelee = myHero.range < 300
					end
				end

				self:CheckStopMovement()
				--self.ChampionAdditionalLastHitDamage = ChampionBuffs:GetBonusDamage()
			end

			function _MyHero:GetScalingRange()
				local scale = Data:GetOriginalHitBox(myHero)
				return (scale and (Helper:GetDistance(myHero.minBBox, myHero.maxBBox) - Data:GetOriginalHitBox(myHero)) / 2 or 0)
			end

			function _MyHero:SetProjectileSpeed(Speed)
				self.ProjectileSpeed = Speed
			end

			function _MyHero:GetTimeToHitTarget(Target)
				if self.IsMelee then
					return Helper:GetTime() + Orbwalker.GetWindUp() + GetLatency() / 2
				else
					--return Orbwalker.LastWindUp + (math.max(GetDistance(Target.visionPos), GetDistance(Target)) - MyHero.GameplayCollisionRadius) / self.ProjectileSpeed - GetLatency() / 2000 - 0.07
					return (GetLatency() / 2 + (GetDistance(Target.visionPos, myHero.visionPos)) / MyHero.ProjectileSpeed + 1000 / (myHero.attackSpeed * Orbwalker.BaseWindUp))
				end
			end

			function _MyHero:GetTotalAttackDamageAgainstTarget(Target, LastHit)
				local MyDamage = myHero.totalDamage --:CalcDamage(Target, myHero.totalDamage)
				if LastHit then
					MyDamage = self:GetMasteryAdditionalLastHitDamage(MyDamage, Target)
					--MyDamage = MyDamage + self.ChampionAdditionalLastHitDamage
					--MyDamage = MyDamage + self.ItemAdditionalLastHitDamage
				end
				return MyDamage
			end

			function _MyHero:GetMasteryAdditionalLastHitDamage(Damage, Target)
				if not ConfigMenu then return Damage end

				local armorPen = 0
				local armorPenPercent = 0
				local magicPen = 0
				local magicPenPercent = 0
				local magicDamage = 0
				local physDamage = _Damage
				local dmgReductionPercent = 0

				local totalDamage = physDamage

				if ConfigMenu.ArcaneBlade then
					magicDamage = myHero.ap * .05
				end

				if ConfigMenu.DevastatingStrike then
					armorPenPercent = .06
				end

				if ConfigMenu.DoubleEdgedSword then
					physDamage = myHero.range < 400 and physDamage*1.02 or (physDamage*1.015)
					magicDamage = myHero.range < 400 and magicDamage*1.02 or (magicDamage*1.015)
				end

				if ConfigMenu.Butcher then
					physDamage = physDamage + 2
				end

				return ((physDamage * (100/(100 + target.armor * (1-armorPenPercent)))
					+ magicDamage * (100/(100 + target.magicArmor * (1-magicPenPercent))) ) * (1-dmgReductionPercent))
			end

			function _MyHero:Move(Position)
				Streaming:OnMove()
				if self:HeroCanMove() and not Helper:IsEvading() and not Orbwalker:IsShooting() and Orbwalker:CanMove() and (not Orbwalker:CanShoot(60) or Orbwalker:CanShoot()) then
					if ConfigurationMenu.HoldZone and GetDistance(mousePos) < 70 then
						if (Helper:GetTime() + GetLatency() / 2 - Orbwalker.LastAttack) * 0.6 >= (1000 / (myHero.attackSpeed * Orbwalker.BaseWindUp)) then
							myHero:HoldPosition()
						end
						return
					end

					local _Position = Position and Position or mousePos
					_Position = Orbwalker.OrbwalkLocationOverride or _Position

					local Distance = self.MoveDistance + Helper.Latency / 10
					if self.IsMelee and Crosshair.Attack_Crosshair.target and Crosshair.Attack_Crosshair.target.type == myHero.type and
						MeleeMenu.MeleeStickyRange > 0 and Helper:GetDistance(Crosshair.Attack_Crosshair.target) - Data:GetGameplayCollisionRadius(Crosshair.Attack_Crosshair.target) < MeleeMenu.MeleeStickyRange and
						Orbwalker:CanOrbwalkTarget(Crosshair.Attack_Crosshair.target) then
						return
					elseif Helper:GetDistance(_Position) < Distance and Helper:GetDistance(_Position) > 100 then
						Distance = Helper:GetDistance(_Position)
					end

					local MoveSqr = math.sqrt((_Position.x - myHero.x) ^ 2 + (_Position.z - myHero.z) ^ 2)
					local MoveX = myHero.x + Distance * ((_Position.x - myHero.x) / MoveSqr)
					local MoveZ = myHero.z + Distance * ((_Position.z - myHero.z) / MoveSqr)

					myHero:MoveTo(MoveX, MoveZ)
					self.LastMoved = Helper.Tick
					self.HasStopped = false
				end
			end

			function _MyHero:Attack(target, packetOverride)
				Streaming.Red = true
				if not self:HeroCanAttack() then
					MyHero:Move()
					return
				end
				if self.CanAttack and not Helper:IsEvading() and Orbwalker:CanShoot() then
					if target.type ~= myHero.type then
						MuramanaOff()
					end

					if not self.DonePreAttack then
						for _, func in pairs(Plugins.RegisteredPreAttack) do
							func(target)
						end
						self.DonePreAttack = true
					end

					if VIP_USER then
						if not packetOverride then
							Packet(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,95,77,79,86,69}), {type = 3, targetNetworkId = target.networkID}):send()
						else
							myHero:Attack(target)
						end
					else
						myHero:Attack(target)
					end
					Orbwalker.LastEnemyAttacked = target
				end
			end

			function _MyHero:MovementEnabled(canMove)
				self.CanMove = canMove
			end

			function _MyHero:AttacksEnabled(canAttack)
				self.CanAttack = canAttack
			end

			function _MyHero:OrbwalkingEnabled(canOrbwalk)
				self.CanOrbwalk = canOrbwalk
			end

			function _MyHero:HeroCanAttack()
				if not AutoCarryMenu.Attacks and Keys.AutoCarry then
					return false
				elseif not LastHitMenu.Attacks and Keys.LastHit then
					return false
				elseif not MixedModeMenu.Attacks and Keys.MixedMode then
					return false
				elseif not LaneClearMenu.Attacks and Keys.LaneClear then
					return false
				end
				return true
			end

			function _MyHero:HeroCanMove()
				if self.InStandZone or not self.CanMove then
					return false
				elseif not AutoCarryMenu.Movement and Keys.AutoCarry then
					return false
				elseif not LastHitMenu.Movement and Keys.LastHit then
					return false
				elseif not MixedModeMenu.Movement and Keys.MixedMode then
					return false
				elseif not LaneClearMenu.Movement and Keys.LaneClear then
					return false
				end
				return true
			end

			function _MyHero:CheckStopMovement()
				if not MyHero:HeroCanMove() and not self.HasStopped then
					myHero:HoldPosition()
					self.HasStopped = true
				end
			end

			--[[
			_Crosshair Class
			]]

			class '_Crosshair' Crosshair = nil

			--[[
			Initialise _Crosshair class

			damageType  	DAMAGE_PHYSICAL or DAMAGE_MAGIC
			attackRange 	Integer
			skillRange 		Integer
			targetFocused 	Boolean. Whether targets selected with left click should be focused.
			isCaster		Boolean. Whether spells should be prioritised over auto attacks.
			]]

			function _Crosshair:__init(damageType, attackRange, skillRange, targetFocused, isCaster)
				self.DamageType = damageType and damageType or DAMAGE_PHYSICAL
				self.AttackRange = attackRange
				self.SkillRange = skillRange
				self.TargetFocused = targetFocused
				self.IsCaster = isCaster
				self.Target = nil
				self.TargetMinion = nil
				self.Attack_Crosshair = {}
				self.Skills_Crosshair = {}
				self.RangeScaling = true
				Crosshair = self

				self:UpdateCrosshairRange()
				Selector.Instance()

				AddTickCallback(function() self:_OnTick() end)
			end

			function _Crosshair:_OnTick()
				self.Attack_Crosshair.target = Selector.GetTarget(nil, nil, {valid = function(unit) return Orbwalker:CanOrbwalkTarget(unit) end})

				if self.Attack_Crosshair.target then
					self.Target = self.Attack_Crosshair.target
				else
					self.Skills_Crosshair.target = Selector.GetTarget(nil, nil, {distance = self.SkillRange})
					self.Target = self.Skills_Crosshair.target
				end

				self.TargetMinion = Minions.Target
			end

			function _Crosshair:GetTarget()
				if ValidTarget(self.Attack_Crosshair.target) and not self.IsCaster then
					return self.Attack_Crosshair.target
				elseif ValidTarget(self.Skills_Crosshair.target) then
					return self.Skills_Crosshair.target
				end
			end

			function _Crosshair:HasOrbwalkTarget()
				return self and self.Target and self.Attack_Crosshair.target and self.Target == self.Attack_Crosshair.target
			end

			function _Crosshair:SetSkillCrosshairRange(Range)
				self.RangeScaling = false
				self.Skills_Crosshair.range = Range
			end

			function _Crosshair:UpdateCrosshairRange()
				for _, Skill in pairs(Skills.SkillsList) do
					if Skill:GetRange() > self.SkillRange then
						self.SkillRange = Skill:GetRange()
					end
				end
			end

			function _Crosshair:Conditional(Hero)
				return Orbwalker:CanOrbwalkTarget(Hero)
			end

			

			PRED_LAST_HIT = 0
			PRED_TWO_HITS = 1
			PRED_SKILL = 2
			PRED_UNKILLABLE = 3
			class '_DamagePred' DamagePred = nil

			function _DamagePred:__init()
				self.Preds = {}
				DamagePred = self
			end

			function _DamagePred:Reset()
				self.Preds = {}
			end

			function _DamagePred:GetPred(Minion, Type, Skill)
				local result = Minion.health
				local predhealth = Minion.health
				if Type == PRED_LAST_HIT then
					local time = Orbwalker:GetWindUp() + GetDistance(Minion.visionPos, myHero.visionPos) / MyHero.ProjectileSpeed - 0.07
					predhealth, _, count = VP:GetPredictedHealth(Minion, time, MenuManager:LoadChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,97,114,109,79,102,102,115,101,116,65,109,111,117,110,116})))

					result = predhealth
				elseif Type == PRED_TWO_HITS then
					local time = 0
					if DamagePredictionMenu.laneClearType == 1 then
						time = Orbwalker:GetAnimationTime() + GetDistance(Minion.visionPos, myHero.visionPos) / MyHero.ProjectileSpeed - 0.07
						time = time * 2
					elseif DamagePredictionMenu.laneClearType == 2 then
						time = (Orbwalker:GetWindUp() * 2) + Orbwalker:GetAnimationTime() * 2 + GetDistance(Minion.visionPos, myHero.visionPos) / MyHero.ProjectileSpeed - 0.07
					elseif DamagePredictionMenu.laneClearType == 3 then
						time = Orbwalker:GetAnimationTime() + GetDistance(Minion.visionPos, myHero.visionPos) / MyHero.ProjectileSpeed - 0.07
						time = time * 1.5
					end

					predhealth, _, count = VP:GetPredictedHealth2(Minion, time)

					result = predhealth
				elseif Type == PRED_SKILL then
					local object = self.Preds[Minion.networkID]
					if object and object.Skill and object.Skill[Skill.Key] then
						return object.Skill[Skill.Key]
					else
						local time = (Skill.Delay / 1000) + GetDistance(Minion.visionPos, myHero.visionPos) / (Skill.Speed * 1000) - 0.07
						predhealth, _, count = VP:GetPredictedHealth(Minion, time, MenuManager:LoadChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,97,114,109,79,102,102,115,101,116,65,109,111,117,110,116})))
						result = predhealth
					end
				elseif Type == PRED_UNKILLABLE then
					
					
					
					
					
					local time = Orbwalker:GetWindUp() + GetDistance(Minion.visionPos, myHero.visionPos) / MyHero.ProjectileSpeed - 0.07
					time = time * 1.5
					predhealth, _, count = VP:GetPredictedHealth(Minion, time, MenuManager:LoadChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,97,114,109,79,102,102,115,101,116,65,109,111,117,110,116})))

					result = predhealth
				end

				
				
				
				
				
				return result
			end




			--[[
			_Minions Class
			]]

			class '_Minions' Minions = nil

			function _Minions:__init()
				self.KillableMinion = nil
				self.AlmostKillable = nil
				self.AttackRangeBuffer = myHero.range + 50
				self.LastWait = 0
				self.LastMove = 0
				self.TowerHitTime = 0
				self.LowerLimit = -20
				self.Cannons = {}
				self.EnemyMinions = minionManager(MINION_ENEMY, 2000, player, MINION_SORT_HEALTH_ASC)
				self.OtherMinions = minionManager(MINION_OTHER, 2000, myHero, MINION_SORT_HEALTH_ASC)

				AddTickCallback(function() self:_OnTick() end)
				AddProcessSpellCallback(function(u,s) self:OnProcessSpell(u,s) end)

				
				spellDmg.Ezreal.QDmgP = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({50,48,42,81,108,118,108,43,49,53,43,46,52,42,97,112,43,97,100})
				
				spellDmg.Vayne.QDmgP = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({53,42,81,108,118,108,43,50,53,43,97,100})

				Minions = self
			end

			function _Minions:_OnTick()
				self.AttackRangeBuffer = myHero.range + 50
			end

			function _Minions:MyDamage(Minion, ignoreFreeze)
				local dmg = VP:CalcDamageOfAttack(myHero, Minion, {name = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,97,115,105,99})}, 0) + self:BonusDamage(Minion)
				if FarmMenu.LaneFreeze and not (Keys.LaneClear or Orbwalker:CanOrbwalkTarget(self.TowerTarget)) then
					return dmg < 80 and dmg or 80
				else
					return dmg
				end
				
			end

			function _Minions:OnProcessSpell(Unit, Spell)
				if Unit and Unit.valid and Spell.target and Unit.type ~= myHero.type and Spell.target.type == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({111,98,106,95,65,73,95,77,105,110,105,111,110}) and Unit.team == myHero.team and Spell and Unit.type == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({111,98,106,95,65,73,95,84,117,114,114,101,116}) and GetDistance(Spell.target) <= 2000 then
					self.TowerTarget = Spell.target
					local time = VP:GetTime() + Spell.windUpTime + GetDistance(Spell.target, Unit) / VP:GetProjectileSpeed(Unit) - GetLatency()/2000 + 1000
					--DelayAction(function() self.TowerTarget = nil end, time/1000)
				end
			end

			function _Minions:GetLaneClearTarget()
				for i, minion in ipairs(self.EnemyMinions.objects) do

					
					
					

					
					
					

					
					
					

					local time = Orbwalker:GetAnimationTime() + GetDistance(minion.visionPos, myHero.visionPos) / MyHero.ProjectileSpeed - 0.07
					local pdamage2 = minion.health - VP:GetPredictedHealth(minion, time, MenuManager:LoadChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,97,114,109,79,102,102,115,101,116,65,109,111,117,110,116})))
					local pdamage = VP:GetPredictedHealth2(minion, time * 2)
					if Orbwalker:CanOrbwalkTarget(minion) and (pdamage > 2 * VP:CalcDamageOfAttack(myHero, minion, {name = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,97,115,105,99})}, 0) + self:BonusDamage(minion) or pdamage2 == 0)  then
						return minion
					end
				end

				self.OtherMinions:update()
				for i, minion in ipairs(self.OtherMinions.objects) do
					if Orbwalker:CanOrbwalkTarget(minion) then
						return minion
					end
				end


				return Jungle:GetAttackableMonster()
			end

			function _Minions:ContainsTowerAttack(target)
				for _, attack in pairs(VP.ActiveAttacks) do
					if attack.Target == target and attack.Attacker.type == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({111,98,106,95,65,73,95,84,117,114,114,101,116}) then
						self.TowerHitTime = attack.hittime
						return attack.damage
					end
				end
				return false
			end

			local TOWER_TYPE_AA = 0
			local TOWER_TYPE_SKILL = 1
			local TOWER_TYPE_IGNORE = 2

			function _Minions:GetTowerMinion()
				if Orbwalker:CanOrbwalkTarget(self.TowerTarget) then
					local towerDamage = self:ContainsTowerAttack(self.TowerTarget)

					if not towerDamage then return end

					local myDamage = VP:CalcDamageOfAttack(myHero, self.TowerTarget, {name = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,97,115,105,99})}, 0)

					local time = (Orbwalker:GetWindUp() * 2) + Orbwalker:GetAnimationTime() + GetDistance(self.TowerTarget.visionPos, myHero.visionPos) / MyHero.ProjectileSpeed - 0.07
					local remainingHealth = VP:GetPredictedHealth2(self.TowerTarget, time)

					
					if remainingHealth > 0 and remainingHealth < myDamage then
						return nil
					end

					time = (Orbwalker:GetWindUp() * 2) + Orbwalker:GetAnimationTime() + GetDistance(self.TowerTarget.visionPos, myHero.visionPos) / MyHero.ProjectileSpeed - 0.07
					remainingHealth = VP:GetPredictedHealth2(self.TowerTarget, time)

					
					remainingHealth = remainingHealth - myDamage
					if remainingHealth > 0 and remainingHealth < myDamage then
						return self.TowerTarget, TOWER_TYPE_AA
					end

					
					if remainingHealth > 0 and remainingHealth > (myDamage + towerDamage) * 2 then
						return self.TowerTarget, TOWER_TYPE_IGNORE
					end



					
					

					
					
					

					
					
					
					

					

					
					
					
					
					

				end
			end

			function _Minions:WaitForCannon()
				local cans = {}
				for _, min in pairs(self.EnemyMinions.objects) do
					if Helper:GetDistance(min) <= 2000 and Data:IsCannonMinion(min) then
						table.insert(cans, min)
					end
				end

				for i, Cannon in pairs(cans) do
					if Orbwalker:CanOrbwalkTargetCustomRange(Cannon, self.AttackRangeBuffer) then
						if DamagePred:GetPred(Cannon, PRED_TWO_HITS) < self:MyDamage(Cannon) then
							return Cannon
						end
					end
				end
			end

			function _Minions:FindUnkillable()
				local cannon = self:WaitForCannon()

				if cannon then
					if DamagePred:GetPred(cannon, PRED_UNKILLABLE) < self:MyDamage(cannon) then
						if minion ~= self.LastHitMinion then
							local minionhealth = DamagePred:GetPred(cannon, PRED_UNKILLABLE)
							if minionhealth < 0 then
								return cannon
							end
						end
					end
				end

				for i, minion in ipairs(self.EnemyMinions.objects) do
					if minion ~= self.LastHitMinion then
						local minionhealth = DamagePred:GetPred(minion, PRED_UNKILLABLE)
						if minionhealth < 0 then
							return minion
						end
					end
				end
			end

			function _Minions:FindKillable()
				local cannon = self:WaitForCannon()

				if cannon then
					if Orbwalker:CanOrbwalkTarget(cannon, self.AttackRangeBuffer) and DamagePred:GetPred(cannon, PRED_LAST_HIT) < self:MyDamage(cannon) then
						local mydmg = self:MyDamage(cannon)
						local minionhealth = DamagePred:GetPred(cannon, PRED_LAST_HIT)
						if minionhealth < mydmg and minionhealth > self.LowerLimit then
							return cannon
						end
					end
					return
				end

				for i, minion in ipairs(self.EnemyMinions.objects) do
					local minionhealth = DamagePred:GetPred(minion, PRED_LAST_HIT)
					local mydmg = self:MyDamage(minion)

					if Orbwalker:CanOrbwalkTarget(minion) and minionhealth < mydmg and minionhealth > self.LowerLimit then
						self.LastHitMinion = minion
						return minion
					end
				end
			end

			function _Minions:ShouldWait()
				for i, minion in ipairs(self.EnemyMinions.objects) do
					local mydmg = self:MyDamage(minion)
					local minionhealth = DamagePred:GetPred(minion, PRED_TWO_HITS)
					if Orbwalker:CanOrbwalkTarget(minion, self.AttackRangeBuffer) and minionhealth < mydmg then
						self.LastWait = Helper:GetTime()
						self.LastWaitedFor = minion
						return minion
					end
				end
			end

			function _Minions:TowerFarm()
				if ConfigurationMenu.SupportMode then
					MyHero:Move()
					return
				end

				self.EnemyMinions:update()
				--DamagePred:Reset()

				local target = self:FindKillable()

				if target then
					self.KillableMinion = target
				else
					self.KillableMinion = nil
				end

				if target then
					Orbwalker:Orbwalk(target)
					return
				end

				if SkillsMenu and SkillsMenu.SkillFarm and SkillsMenu.FarmMinMana and myHero.mana / myHero.maxMana * 100 >= SkillsMenu.FarmMinMana then
					target = self:FindUnkillable()
					if target then
						target, skill = self:GetKillableSkillMinion(false, target)
						if target then
							self:CastOnMinion(target, skill)
						end
					end
				end

				target, _type = self:GetTowerMinion()
				if target and _type == TOWER_TYPE_AA then
					Orbwalker:Orbwalk(target)
					return
				end

				if target and _type == TOWER_TYPE_SKILL then
					self:LastHitWithSkill(target)
					return
				end

				if target and _type == TOWER_TYPE_IGNORE and Keys.LaneClear then
					self:LaneClear(true)
					return
				end

				MyHero:Move()
			end

			function _Minions:LaneClear(ignoreTower)
				if ConfigurationMenu.SupportMode then
					MyHero:Move()
					return
				end

				if ValidTarget(self.TowerTarget) and not ignoreTower then
					self:TowerFarm()
					return
				end

				self.EnemyMinions:update()
				--DamagePred:Reset()

				if SkillsMenu and SkillsMenu.SkillFarm and SkillsMenu.FarmMinMana and myHero.mana / myHero.maxMana * 100 >= SkillsMenu.FarmMinMana then
					local target, skill = self:GetKillableSkillMinion(true)
					if target then
						self:CastOnMinion(target, skill)
					end
				end

				local target = self:FindKillable()

				if not target and Structures:CanOrbwalkStructure() then
					Orbwalker:OrbwalkIgnoreChecks(Structures:GetTargetStructure())
					return
				end

				if Orbwalker:CanOrbwalkTarget(Crosshair.Attack_Crosshair.target) and (not LaneClearMenu.MinionPriority or not target) then
					Orbwalker:Orbwalk(Crosshair.Attack_Crosshair.target)
					return
				end


				if target then
					self.KillableMinion = target
				else
					self.KillableMinion = nil
				end

				if target and Orbwalker:CanShoot() then
					Orbwalker:Orbwalk(target)
					return
				end

				local waitMinion = self:ShouldWait()
				 if (not waitMinion and Helper:GetTime() > self.LastWait + 500) or not Orbwalker:CanOrbwalkTarget(self.LastWaitedFor) then
				 	Orbwalker:Orbwalk(self:GetLaneClearTarget())
				elseif Helper:GetTime() > self.LastMove then
					self.LastMove = Helper:GetTime() + 100
					MyHero:Move()
				 end

				if waitMinion and not self.KillableMinion then
					self.AlmostKillable = waitMinion
				elseif Helper:GetTime() > self.LastWait + 500 or not ValidTarget(waitMinion) then
					self.AlmostKillable = nil
				end
			end

			function _Minions:LastHit()
				if ConfigurationMenu.SupportMode then
					MyHero:Move()
					return
				end

				if ValidTarget(self.TowerTarget) then
					self:TowerFarm()
					return
				end

				self.EnemyMinions:update()
				--DamagePred:Reset()

				target = self:FindKillable()


				if target then
					self.KillableMinion = target
				else
					self.KillableMinion = nil
				end

				if target then
					Orbwalker:Orbwalk(target)
					return
				end

				
				
				
				
				
				
				

				MyHero:Move()
			end

			function _Minions:MarkerOnly()
				self.EnemyMinions:update()

				local target = self:FindKillable()

				if target then
					self.KillableMinion = target
				else
					self.KillableMinion = nil
				end

				if target then
					return
				end

				local waitMinion = self:ShouldWait()

				if waitMinion and not self.KillableMinion then
					self.AlmostKillable = waitMinion
				elseif Helper:GetTime() > self.LastWait + 500 or not ValidTarget(waitMinion) then
					self.AlmostKillable = nil
				end
			end

			function _Minions:CastOnMinion(Minion, Skill)
				local dmgString = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({});
				if Skill.Key == _Q then
					dmgString = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81})
				elseif Skill.Key == _W then
					dmgString = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87})
				elseif Skill.Key == _E then
					dmgString = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69})
				elseif Skill.Key == _R then
					dmgString = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82})
				end

				if ValidTarget(Minion, Skill.Range) then
					if Skill.Type == SPELL_TARGETED then
						CastSpell(Skill.Key, Minion)
					elseif Skill.Type == SPELL_SELF_AT_MOUSE then
						CastSpell(Skill.Key, Minion.x, Minion.z)
					elseif Skill.Type == SPELL_LINEAR then
						Skill:Cast(Minion)
					elseif Skill.Type == SPELL_LINEAR_COL then
						local pred = Skill:GetLinePrediction(Minion)
						if pred then
							CastSpell(Skill.Key, pred.x, pred.z)
						end
					else
						CastSpell(Skill.Key)
					end
				end
			end

			function _Minions:GetKillableSkillMinion(isLaneClear, fixedMinion)
				for i, Miniona in ipairs(self.EnemyMinions.objects) do
					Minion = fixedMinion or Miniona
					if Minion ~= self.LastHitMinion then
						for _, Skill in pairs(Skills:GetLastHitSkills()) do
							local dmgString = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({});
							if Skill.Key == _Q then
								dmgString = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81})
							elseif Skill.Key == _W then
								dmgString = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87})
							elseif Skill.Key == _E then
								dmgString = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69})
							elseif Skill.Key == _R then
								dmgString = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82})
							end

							if myHero:CanUseSpell(Skill.Key) == READY and ValidTarget(Minion, Skill.Range) and (isLaneClear and SkillsMenu[Skill.RawName].LaneClearFarm) then
								local _Damage = getDmg(dmgString, Minion, myHero)
								if Skill.Type == SPELL_LINEAR or Skill.Type == SPELL_LINEAR_COL then
									local minionhealth = DamagePred:GetPred(Minion, PRED_SKILL, Skill)
									if _Damage > minionhealth and minionhealth > self.LowerLimit then
										local pred = Skill:GetLinePrediction(Minion)
										if pred then
											return Minion, Skill
										end
									end
								elseif _Damage > Minion.health then
									return Minion, Skill
								end
							end
						end
					end
					if fixedMinion then
						return
					end
				end
			end

			function _Minions:PushWithSkills()
				for i, minion in ipairs(self.EnemyMinions.objects) do
					if minion ~= self.LastHitMinion then
						self:LastHitWithSkill(minion, true)
					end
				end
			end

			function _Minions:BonusDamage(minion)
				local AD = myHero:CalcDamage(minion, myHero.totalDamage)
				local BONUS = 0
				if myHero.charName == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,97,121,110,101}) then
					if myHero:GetSpellData(_Q).level > 0 and myHero:CanUseSpell(_Q) == SUPRESSED then
						BONUS = BONUS + myHero:CalcDamage(minion, ((0.05 * myHero:GetSpellData(_Q).level) + 0.25 ) * myHero.totalDamage)
					end
					if not VayneCBAdded then
						VayneCBAdded = true
						function VayneParticle(obj)
							if GetDistance(obj) < 1000 and obj.name:lower():find(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({118,97,121,110,101,95,119,95,114,105,110,103,50,46,116,114,111,121})) then
								VayneWParticle = obj
							end
						end
						AddCreateObjCallback(VayneParticle)
					end
					if VayneWParticle and VayneWParticle.valid and GetDistance(VayneWParticle, minion) < 10 then
						BONUS = BONUS + 10 + 10 * myHero:GetSpellData(_W).level + (0.03 + (0.01 * myHero:GetSpellData(_W).level)) * minion.maxHealth
					end
				elseif myHero.charName == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,101,101,109,111}) and myHero:GetSpellData(_E).level > 0 then
					BONUS = BONUS + myHero:CalcMagicDamage(minion, (myHero:GetSpellData(_E).level * 10) + (myHero.ap * 0.3) )
				elseif myHero.charName == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,111,114,107,105}) then
					BONUS = BONUS + myHero.totalDamage/10
				elseif myHero.charName == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,115,115,70,111,114,116,117,110,101}) and myHero:GetSpellData(_W).level > 0 then
					BONUS = BONUS + myHero:CalcMagicDamage(minion, (4 + 2 * myHero:GetSpellData(_W).level) + (myHero.ap/20))
				elseif myHero.charName == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,97,114,117,115}) and myHero:GetSpellData(_W).level > 0 then
					BONUS = BONUS + (6 + (myHero:GetSpellData(_W).level * 4) + (myHero.ap * 0.25))
				elseif myHero.charName == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,97,105,116,108,121,110}) then
					if not CallbackCaitlynAdded then
						function CaitlynParticle(obj)
							if GetDistance(obj) < 100 and obj.name:lower():find(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({99,97,105,116,108,121,110,95,104,101,97,100,115,104,111,116,95,114,100,121})) then
								HeadShotParticle = obj
							end
						end
						AddCreateObjCallback(CaitlynParticle)
						CallbackCaitlynAdded = true
					end
					if HeadShotParticle and HeadShotParticle.valid then
						BONUS = BONUS + AD * 1.5
					end
				elseif myHero.charName == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,114,105,97,110,110,97}) then



					
					
					
					
					
					
					
					

					
					
					
					
					
					

					
					
					
					
					
					
					
					




					BONUS = BONUS + myHero:CalcMagicDamage(minion, 10 + 8 * ((myHero.level - 1) % 3))
				elseif myHero.charName == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,119,105,115,116,101,100,70,97,116,101}) then
					if not TFCallbackAdded then
						function TFParticle(obj)
							if GetDistance(obj) < 100 and obj.name:lower():find(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({99,97,114,100,109,97,115,116,101,114,95,115,116,97,99,107,114,101,97,100,121,46,116,114,111,121})) then
								TFEParticle = obj
							elseif GetDistance(obj) < 100 and obj.name:lower():find(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({99,97,114,100,95,98,108,117,101,46,116,114,111,121})) then
								TFWParticle = obj
							end
						end
						AddCreateObjCallback(TFParticle)
						TFCallbackAdded = true
					end
					if TFEParticle and TFEParticle.valid then
						BONUS = BONUS + myHero:CalcMagicDamage(minion, myHero:GetSpellData(_E).level * 15 + 40 + 0.5 * myHero.ap)
					end
					if TFWParticle and TFWParticle.valid then
						BONUS = BONUS + math.max(myHero:CalcMagicDamage(minion, myHero:GetSpellData(_W).level * 20 + 20 + 0.5 * myHero.ap) - 40, 0)
					end
				elseif myHero.charName == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,97,115,117,115}) and VIP_USER then
					if myHero:GetSpellData(_Q).level > 0 and myHero:CanUseSpell(_Q) == SUPRESSED then
						local Qdamage = {30, 50, 70, 90, 110}
						NasusQStacks = NasusQStacks or 0
						BONUS = BONUS + myHero:CalcDamage(minion, 10 + 20 * (myHero:GetSpellData(_Q).level) + NasusQStacks)
						if not RecvPacketNasusAdded then
							function NasusOnRecvPacket(p)
								if p.header == 0xFE and p.size == 0xC then
									p.pos = 1
									pNetworkID = p:DecodeF()
									unk01 = p:Decode2()
									unk02 = p:Decode1()
									stack = p:Decode4()
									if pNetworkID == myHero.networkID then
										NasusQStacks = stack
									end
								end
							end
							RecvPacketNasusAdded = true
							AddRecvPacketCallback(NasusOnRecvPacket)
						end
					end
				end

				return BONUS
			end

			function _Minions:GetLowestHealthMinion()
				for i =1, #self.EnemyMinions.objects, 1 do
					local Minion = self.EnemyMinions.objects[i]
					if Orbwalker:CanOrbwalkTarget(Minion) then
						return Minion
					end
				end
			end

			function _Minions:GetSecondLowestHealthMinion()
				local found = nil
				for i =1, #self.EnemyMinions.objects, 1 do
					local Minion = self.EnemyMinions.objects[i]
					if Orbwalker:CanOrbwalkTarget(Minion) and found then
						return Minion
					elseif Orbwalker:CanOrbwalkTarget(Minion) then
						found = Minion
					end
				end
				return found
			end

			--[[
			_ChampionBuffs Class
			]]

			class '_ChampionBuffs' ChampionBuffs = nil

			function _ChampionBuffs:__init()
				AddCreateObjCallback(function(Obj) self:_OnCreateObj(Obj) end)
				AddDeleteObjCallback(function(Obj) self:_OnDeleteObj(Obj) end)

				self.HasPassive = false
				self.RangerStacks = 0
				self.qBuff = 0

				ChampionBuffs = self
			end

			function _ChampionBuffs:_OnCreateObj(object)
				if myHero.dead then return end
				if object.name:lower():find(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({99,97,105,116,108,121,110,95,104,101,97,100,115,104,111,116,95,114,100,121})) and Helper:GetDistance(object) < 65 then self.caitlynPassive = true end
				if object.name:lower():find(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,117,99,105,97,110,95,80,95,98,117,102,46,116,114,111,121})) and Helper:GetDistance(object) < 65 then self.LucianPassive = true end
				if object.name == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,110,103,97,114,80,97,115,115,105,118,101,77,97,120,46,116,114,111,121}) and Helper:GetDistance(object) < 65 then self.rengarStacks = 5 end
				if object.name == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,105,103,104,116,101,111,117,115,70,117,114,121,72,97,108,111,95,98,117,102,46,116,114,111,121}) and Helper:GetDistance(object) < 65 then self.kayleBuff = true end
				if object.name == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,114,97,118,101,110,95,81,95,98,117,102,46,116,114,111,121}) and Helper:GetDistance(object) < 65 then self.qBuff = (self.qBuff >= 0 and self.qBuff + 1) or 0 end
				if object.name == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,121,99,101,95,72,101,120,95,66,117,102,102,95,82,101,97,100,121,46,116,114,111,121}) and Helper:GetDistance(object) < 65 then self.jayceWcasted = true end
			end

			function _ChampionBuffs:_OnDeleteObj(object)
				if object.name:lower():find(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({99,97,105,116,108,121,110,95,104,101,97,100,115,104,111,116,95,114,100,121})) and Helper:GetDistance(object) < 65 then self.caitlynPassive = false end
				if object.name:lower():find(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,117,99,105,97,110,95,80,95,98,117,102,46,116,114,111,121})) and Helper:GetDistance(object) < 65 then self.LucianPassive = true end
				if object.name == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,117,99,105,97,110,95,82,95,115,101,108,102,46,116,114,111,121}) and LucianCulling == true and Helper:GetDistance(object) < 65 then self.LucianCulling = false end
				if object.name == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,110,103,97,114,80,97,115,115,105,118,101,77,97,120,46,116,114,111,121}) and Helper:GetDistance(object) < 65 then self.rengarStacks = 0 end
				if object.name == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,105,103,104,116,101,111,117,115,70,117,114,121,72,97,108,111,95,98,117,102,46,116,114,111,121}) and Helper:GetDistance(object) < 65 then self.kayleBuff = false end
				if object.name == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,114,97,118,101,110,95,81,95,98,117,102,46,116,114,111,121}) and Helper:GetDistance(object) < 600 then self.qBuff = self.qBuff - 1 end
				if object.name == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,121,99,101,95,72,101,120,95,66,117,102,102,95,82,101,97,100,121,46,116,114,111,121}) and Helper:GetDistance(object) < 65 then self.jayceWcasted = false end
			end

			function _ChampionBuffs:GetBonusDamage()
				local additionalDamage = {
					Teemo       = myHero:GetSpellData(_E).level > 0 and ((GetSpellData(_E).level * 10) + (myHero.ap * 0.3)) or 0,
					Vayne       = myHero:GetSpellData(_Q).level > 0 and myHero:CanUseSpell(_Q) == SUPRESSED and (((0.05*myHero:GetSpellData(_Q).level) + 0.25 )*(myHero.totalDamage)) or 0,
					Corki       = myHero.totalDamage/10,
					Caitlyn     = self.caitlynPassive and myHero.totalDamage * 1.5 or 0,
					Rengar      = myHero:GetSpellData(_Q).level > 0 and myHero:CanUseSpell(_Q) == SUPRESSED and (self.rengarStacks == 5 and (30*myHero:GetSpellData(_Q).level)+myHero.totalDamage or (30*myHero:GetSpellData(_Q).level)) or 0 ,
					MissFortune = myHero:GetSpellData(_W).level > 0 and ((2+2*myHero:GetSpellData(_W).level) + (myHero.ap*0.05)) or 0,
					Sivir       = myHero:GetSpellData(_W).level > 0 and myHero:CanUseSpell(_W) == SUPRESSED and (5+(15*myHero:GetSpellData(_W).level)) or 0,
					Orianna     = (8*(((myHero.level - 1) / 3) + 1) + 2 + 0.15*myHero.ap),
					Draven      = myHero:GetSpellData(_Q).level > 0 and self.qBuff > 0 and (myHero.totalDamage*(0.35 + (0.1 * myHero:GetSpellData(_Q).level))) or 0,
					Kayle       = self.kayleBuff and (10 + (10*myHero:GetSpellData(_E).level) + (0.4*myHero.ap)) or 0,
					Jayce       = self.jayceWcasted and ((myHero.totalDamage*(15*myHero:GetSpellData(_W).level+55)/100) - myHero.totalDamage) or 0,
					Lucian      = self.LucianPassive and myHero.totalDamage or 0
				}
				return additionalDamage[myHero.charName] or 0
			end

			--[[
			_Jungle Class
			]]

			class "_Jungle" Jungle = nil

			function _Jungle:__init()
				self.JungleMonsters = {}
				Jungle = self
				for i = 0, objManager.maxObjects do
					local object = objManager:getObject(i)
					if Data:IsJungleMinion(object) then
						table.insert(self.JungleMonsters, object)
					end
				end

				AddCreateObjCallback(function(Object) self:_OnCreateObj(Object) end)
				AddDeleteObjCallback(function(Object) self:_OnDeleteObj(Object) end)
			end

			function _Jungle:_OnCreateObj(Object)
				if Data:IsJungleMinion(Object) then
					table.insert(self.JungleMonsters, Object)
				end
			end

			function _Jungle:_OnDeleteObj(Object)
				if Data:IsJungleMinion(Object) then
					for i, Obj in pairs(self.JungleMonsters) do
						if obj == Object then
							table.remove(self.JungleMonsters, i)
						end
					end
				end
			end

			function _Jungle:GetJungleMonsters()
				return self.JungleMonsters
			end

			function _Jungle:GetAttackableMonster()
				local HighestPriorityMonster =  nil
				local Priority = 0
				for _, Monster in pairs(self.JungleMonsters) do
					if Orbwalker:CanOrbwalkTarget(Monster) then
						local CurrentPriority = Data:GetJunglePriority(Monster.name)
						if Monster.health < MyHero:GetTotalAttackDamageAgainstTarget(Monster) then
							return Monster
						elseif not HighestPriorityMonster then
							HighestPriorityMonster = Monster
							Priority = CurrentPriority
						else
							if CurrentPriority < Priority then
								HighestPriorityMonster = Monster
								Priority = CurrentPriority
							end
						end
					end
				end
				return HighestPriorityMonster
			end

			function _Jungle:GetFocusedMonster()
				if GetTarget() and Data:IsJungleMinion(GetTarget()) then
					return GetTarget()
				end
			end

			class "_Structures" Structures = nil

			function _Structures:__init()
				Structures = self
				self.TowerCollisionRange = 88.4
				self.InhibCollisionRange = 205
				self.NexusCollisionRange = 300
				self.TowerRange = 950
				self.EnemyTowers = {}
				self.AllyTowers = {}

				for i = 1, objManager.maxObjects do
					local Object = objManager:getObject(i)
					if Object and Object.type == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({111,98,106,95,65,73,95,84,117,114,114,101,116}) then
						if Object.team == myHero.team then
							table.insert(self.AllyTowers, Object)
						else
							table.insert(self.EnemyTowers, Object)
						end
					end
				end

				AddDeleteObjCallback(function(obj) self:_OnDeleteObj(obj) end)
			end

			function _Structures:_OnDeleteObj(Object)
				for i, Tower in pairs(self.AllyTowers) do
					if Object == Tower then
						table.remove(self.AllyTowers, i)
						return
					end
				end
				for i, Tower in pairs(self.EnemyTowers) do
					if Object == Tower then
						table.remove(self.EnemyTowers, i)
						return
					end
				end
			end

			function _Structures:TowerTargetted()
				return GetTarget() and GetTarget().type == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({111,98,106,95,65,73,95,84,117,114,114,101,116}) and GetTarget().team ~= myHero.team
			end

			function _Structures:InhibTargetted()
				return GetTarget() and GetTarget().type == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({111,98,106,95,66,97,114,114,97,99,107,115,68,97,109,112,101,110,101,114}) and GetTarget().team ~= myHero.team
			end

			function _Structures:NexusTargetted()
				return GetTarget() and GetTarget().type == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({111,98,106,95,72,81}) and GetTarget().team ~= myHero.team
			end

			function _Structures:CanOrbwalkStructure()
				return self:CanOrbwalkTower() or self:CanOrbwalkInhib() or self:CanOrbwalkNexus()
			end

			function _Structures:GetTargetStructure()
				return GetTarget()
			end

			function _Structures:CanOrbwalkTower()
				return self:TowerTargetted() and Helper:GetDistance(GetTarget()) - self.TowerCollisionRange < MyHero.TrueRange
			end

			function _Structures:CanOrbwalkInhib()
				return self:InhibTargetted() and Helper:GetDistance(GetTarget()) - self.InhibCollisionRange < MyHero.TrueRange
			end

			function _Structures:CanOrbwalkNexus()
				return self:NexusTargetted() and Helper:GetDistance(GetTarget()) - self.NexusCollisionRange < MyHero.TrueRange
			end

			function _Structures:PositionInEnemyTowerRange(Pos)
				for _, Tower in pairs(self.EnemyTowers) do
					if Helper:GetDistance(Tower, Pos) <= self.TowerRange then
						return true
					end
				end
				return false
			end

			function _Structures:PositionInAllyTowerRange(Pos)
				for _, Tower in pairs(self.AllyTowers) do
					if Helper:GetDistance(Tower, Pos) <= self.TowerRange then
						return true
					end
				end
				return false
			end

			function _Structures:GetClosestEnemyTower(Pos)
				local ClosestTower, Distance = nil, 0
				for i, Tower in pairs(self.EnemyTowers) do
					if not Tower or not Pos then return end
					if not ClosestTower then
						ClosestTower, Distance = Tower, Helper:GetDistance(Pos, Tower)
					elseif Helper:GetDistance(Pos, Tower) < Distance then
						ClosestTower, Distance = Tower, Helper:GetDistance(Pos, Tower)
					end
				end
				return ClosestTower
			end

			function _Structures:GetClosestAllyTower(Pos)
				local ClosestTower, Distance = nil, 0
				for _, Tower in pairs(self.AllyTowers) do
					if not ClosestTower then
						ClosestTower, Distance = Tower, Helper:GetDistance(Pos, Tower)
					elseif Helper:GetDistance(Pos, Tower) < Distance then
						ClosestTower, Distance = Tower, Helper:GetDistance(Pos, Tower)
					end
				end
				return ClosestTower
			end

			--[[
			_Skills Class
			]]

			class "_Skills" Skills = nil

			function _Skills:__init()
				self.SkillsList = {}
				Skills = self
				AddTickCallback(function() self:_OnTick() end)
			end

			function _Skills:_OnTick()
				for _, Skill in pairs(self.SkillsList) do
					if (Keys.AutoCarry and SkillsMenu[Skill.RawName].AutoCarry) or
						(Keys.MixedMode and SkillsMenu[Skill.RawName].MixedMode) or
						(Keys.LaneClear and SkillsMenu[Skill.RawName].LaneClear) then
						Skill.Active = true
					else
						Skill.Active = false
					end
					Skill.Killsteal = SkillsMenu[Skill.RawName].Killsteal
				end
				self:Killsteal()
			end

			function _Skills:CastAll(Target)
				for _, Skill in ipairs(self.SkillsList) do
					if Skill.Enabled then
						Skill:Cast(Target)
					end
				end
			end

			function _Skills:GetSkill(Key)
				for _, Skill in pairs(self.SkillsList) do
					if Skill.Key == Key then
						return Skill
					end
				end
			end

			function _Skills:HasSkillReady()
				for _, Skill in pairs(self.SkillsList) do
					if Skill.Ready then
						return true
					end
				end
			end

			function _Skills:NewSkill(enabled, key, range, displayName, type, minMana, afterAttack, reqAttackTarget, speed, delay, width, collision, isReset)
				return _Skill(enabled, key, range, displayName, type, minMana, afterAttack, reqAttackTarget, speed, delay, width, collision, isReset, true)
			end

			function _Skills:DisableAll()
				for _, Skill in pairs(self.SkillsList) do
					Skill.Enabled = false
				end
			end

			function _Skills:GetLastHitSkills()
				local Skills = {}
				for _, Skill in pairs(self.SkillsList) do
					if Skill.Type == SPELL_TARGETED or Skill.IsReset or Skill.Type == SPELL_LINEAR_COL or Skill.Type == SPELL_LINEAR then
						table.insert(Skills, Skill)
					end
				end
				return Skills
			end

			function _Skills:Killsteal()
				for _, Enemy in pairs(GetEnemyHeroes()) do
					for _, Skill in pairs(self.SkillsList) do
						local dmgString = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({});
						if Skill.Key == _Q then
							dmgString = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81})
						elseif Skill.Key == _W then
							dmgString = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87})
						elseif Skill.Key == _E then
							dmgString = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69})
						elseif Skill.Key == _R then
							dmgString = abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82})
						end
						if Skill.Killsteal and ValidTarget(Enemy, Skill.Range) then
							if Enemy.health < getDmg(dmgString, Enemy, myHero) then
								Skill:Cast(Enemy, true)
							end
						end
					end
				end
			end

			--[[
			_Skill Class
			]]

			class "_Skill"

			SPELL_TARGETED = 1
			SPELL_LINEAR = 2
			SPELL_CIRCLE = 3
			SPELL_CONE = 4
			SPELL_LINEAR_COL = 5
			SPELL_SELF = 6
			SPELL_SELF_AT_MOUSE = 7
			AutoCarry.SPELL_TARGETED = 1
			AutoCarry.SPELL_LINEAR = 2
			AutoCarry.SPELL_CIRCLE = 3
			AutoCarry.SPELL_CONE = 4
			AutoCarry.SPELL_LINEAR_COL = 5
			AutoCarry.SPELL_SELF = 6
			AutoCarry.SPELL_SELF_AT_MOUSE = 7

			
			

			
			
			
			
			
			
			
			
			
			
			
			

			
			function _Skill:__init(enabled, key, range, displayName, type, minMana, afterAttack, reqAttackTarget, speed, delay, width, collision, isReset, custom)
				self.Key = key
				self.Range = range
				self.DisplayName = displayName
				self.RawName = self.DisplayName:gsub(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({91,94,65,45,90,97,45,122,48,45,57,93}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				self.Type = type
				self.MinMana = minMana or 0
				self.AfterAttack = afterAttack or false
				self.ReqAttackTarget = reqAttackTarget or false
				self.Speed = speed or 0
				self.Delay = delay or 0
				self.Width = width or 0
				self.Collision = collision
				self.IsReset = isReset or false
				self.IsCustom = custom
				self.Active = true
				self.Enabled = enabled or false
				self.Ready = false
				self.Killsteal = false

				AddTickCallback(function() self:_OnTick() end)

				table.insert(Skills.SkillsList, self)
			end

			function _Skill:_OnTick()
				self.Ready = myHero:CanUseSpell(self.Key) == READY
			end

			function _Skill:Cast(Target, ForceCast)
				if not ForceCast then
					if (not self.Active and self.Enabled) or (not self.Enabled and not self.IsCustom) then
						return
					elseif self.AfterAttack and not Orbwalker:IsAfterAttack() then
						return
					elseif (self.ReqAttackTarget and not Orbwalker:CanOrbwalkTarget(Target)) then
						return
					end
				end


				if not self:IsReady() then
					return
				end

				if self.Type == SPELL_SELF then
					CastSpell(self.Key)
				elseif self.Type == SPELL_SELF_AT_MOUSE then
					CastSpell(self.Key, mousePos.x, mousePos.z)
				elseif self.Type == SPELL_TARGETED then
					if ValidTarget(Target, self.Range) then
						CastSpell(self.Key, Target)
					end
				elseif self.Type == SPELL_LINEAR or self.Type == SPELL_LINEAR_COL or self.Type == SPELL_CONE then
					if ValidTarget(Target) then
						local predPos = self:GetPrediction(Target, true, ForceCast)
						if predPos and GetDistance(predPos) <= self.Range then
							CastSpell(self.Key, predPos.x, predPos.z)
						end
					end
				elseif self.Type == SPELL_CIRCLE then
					if ValidTarget(Target) then
						local predPos = self:GetPrediction(Target, false, ForceCast)
						if predPos and GetDistance(predPos) <= self.Range then
							CastSpell(self.Key, predPos.x, predPos.z)
						end
					end
				end
			end

			function _Skill:ForceCast(Target)
				self:Cast(Target, true)
			end

			function _Skill:GetPrediction(Target, isLine, forceCast)
				local isCol = false
				if self.Collision or self.Type == SPELL_LINEAR_COL then
					isCol = true
				end

				if forceCast then
					isCol = false
				end

				if VIP_USER then
					if isLine then
						CastPosition,  HitChance,  Position = VP:GetLineCastPosition(Target, self.Delay / 1000, self.Width, self.Range, self.Speed * 1000, myHero, isCol)
					else
						CastPosition,  HitChance,  Position = VP:GetCircularCastPosition(Target, self.Delay / 1000, self.Width, self.Range, self.Speed * 1000, myHero, isCol)
					end

					if HitChance >= 2 then
						return CastPosition
					end
				elseif not VIP_USER then
					pred = TargetPrediction(self.Range, self.Speed, self.Delay, self.Width)
					pred = pred:GetPrediction(Target)

					if isCol then
						local collision = self:GetCollision(pred)
						if not collision then
							return pred
						end
					else
						return pred
					end
				end
			end

			function _Skill:GetLinePrediction(Target)
				return self:GetPrediction(Target, true)
			end

			function _Skill:GetCirclePrediction(Target)
				return self:GetPrediction(Target, false)
			end

			function _Skill:GetCollision(pos)
				if VIP_USER and self.Collision then
					local col = Collision(self.Range, self.Speed*1000, self.Delay/1000, self.Width)
					return col:GetMinionCollision(myHero, pos)
				elseif self.Collision then
					for _, Minion in pairs(Minions.EnemyMinions.objects) do
						if ValidTarget(Minion) and myHero.x ~= Minion.x then
							local myX = myHero.x
							local myZ = myHero.z
							local tarX = pos.x
							local tarZ = pos.z
							local deltaX = myX - tarX
							local deltaZ = myZ - tarZ
							local m = deltaZ/deltaX
							local c = myX - m*myX
							local minionX = Minion.x
							local minionZ = Minion.z
							local distanc = (math.abs(minionZ - m*minionX - c))/(math.sqrt(m*m+1))
							if distanc < self.Width and ((tarX - myX)*(tarX - myX) + (tarZ - myZ)*(tarZ - myZ)) > ((tarX - minionX)*(tarX - minionX) + (tarZ - minionZ)*(tarZ - minionZ)) then
								return true
							end
						end
					end
					return false
				end
			end

			function _Skill:GetHitChance(pred)
				if VIP_USER then
					return pred:GetHitChance(target) > ConfigMenu.HitChance/100
				end
			end

			function _Skill:GetRange()
				return self.reqAttackTarget and MyHero.TrueRange or self.Range
			end

			function _Skill:IsReady()
				return myHero:CanUseSpell(self.Key) == READY
			end

			--[[
			_Items Class
			]]

			class "_Items" Items = nil

			function _Items:__init()
				self.ItemList = {}
				Items = self

				AddTickCallback(function() self:_OnTick() end)
			end

			function _Items:_OnTick()
				for _, Item in pairs(self.ItemList) do
					if Keys.AutoCarry and AutoCarryMenu[Item.RawName..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,117,116,111,67,97,114,114,121})] or
						Keys.MixedMode and MixedModeMenu[Item.RawName..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,120,101,100,77,111,100,101})] or
						Keys.LaneClear and LaneClearMenu[Item.RawName..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,97,110,101,67,108,101,97,114})] then
						Item.Active = true
					else
						Item.Active = false
					end
				end
			end

			function _Items:UseAll(Target)
				if Target and Target.type == myHero.type then
					for _, Item in pairs(self.ItemList) do
						Item:Use(Target)
					end
				end
			end

			function _Items:UseItem(ID, Target)
				for _, Item in pairs(self.ItemList) do
					if Item.ID == ID then
						Item:Use(Target)
					end
				end
			end

			function _Items:GetItem(ID)
				for _, Item in pairs(self.ItemList) do
					if Item.ID == ID then
						return Item
					end
				end
			end

			function _Items:GetBotrkBonusLastHitDamage(StartingDamage, Target)
				local _BonusDamage = 0
				if GetInventoryHaveItem(3153) then
					if ValidTarget(Target) then
						_BonusDamage = Target.health / 20
						if _BonusDamage >= 60 then
							_BonusDamage = 60
						end
					end
				end
				return _BonusDamage
			end

			--[[
			_Item Class
			]]

			class "_Item"

			--TODO: Add Muramana
			function _Item:__init(_Name, _ID, _RequiresTarget, _Range, _Override)
				self.Name = _Name
				self.RawName = self.Name:gsub(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({91,94,65,45,90,97,45,122,48,45,57,93}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				self.ID = _ID
				self.RequiresTarget = _RequiresTarget
				self.Range = _Range
				self.Slot = nil
				self.Override = _Override
				self.Active = true
				self.Enabled = true

				table.insert(Items.ItemList, self)
			end

			function _Item:Use(Target)
				if self.Override then
					return self.Override()
				end
				if self.RequiresTarget and not Target then
					return
				end
				if not self.Active or not self.Enabled then
					return
				end

				self.Slot = GetInventorySlotItem(self.ID)

				if self.Slot then
					if self.ID == 3153 then 
						local _Menu = MenuManager:GetActiveMenu()
						if _Menu and _Menu.botrkSave then
							if  myHero.health <= myHero.maxHealth * 0.65 then
								CastSpell(self.Slot, Target)
							end
						elseif _Menu and _Menu.Active then
							CastSpell(self.Slot, Target)
						end
					elseif self.ID == 3042 then 
						if not MuramanaIsActive() then
							MuramanaOn()
					end
					elseif self.ID == 3069 then 
						if Helper:CountAlliesInRange(600) > 0 then
							CastSpell(self.Slot)
					end
					elseif not self.RequiresTarget and Orbwalker:CanOrbwalkTarget(Target) then
						CastSpell(self.Slot)
					elseif self.RequiresTarget and ValidTarget(Target) and Helper:GetDistance(Target) <= self.Range then
						CastSpell(self.Slot, Target)
					end
				end
			end

			--[[
			_Helper Class
			]]

			class "_Helper" Helper = nil

			function _Helper:__init()
				self.Tick = 0
				self.Latency = 0
				self.Colour = {Green = 0x00FF00}
				self.EnemyTable = {}
				Helper = self
				self.EnemyTable = GetEnemyHeroes()
				self.AllyTable = GetAllyHeroes()
				self.AllHeroes = {}
				self:GetAllHeroes()
				self.DebugStrings = {}
				AddTickCallback(function() self:_OnTick() end)
				AddDrawCallback(function() self:_OnDraw() end)
			end

			function _Helper:_OnTick()
				self.Tick = Helper:GetTime()
				self.Latency = GetLatency()
			end

			function _Helper:GetTime()
				return os.clock() * 1000
			end

			function _Helper:GetDistance(p1, p2)
				p2 = p2 or myHero

				if p1.type == myHero.type then
					p1 = p1.visionPos
				end
				if p1.type == myHero.type then
					p2 = p2.visionPos
				end

				return math.sqrt(GetDistanceSqr(p1, p2))
			end

			function _Helper:StringContains(string, contains)
				return string:lower():find(contains)
			end

			function _Helper:DrawCircleObject(Object, Range, Colour, Thickness)
				if not Object then return end
				Thickness = Thickness and Thickness or 0
				for i = 0, Thickness do
					if DrawingMenu.LowFPSCir then
						self:DrawCircle2(Object.x, Object.y, Object.z, Range + i, Colour)
					else
						DrawCircle(Object.x, Object.y, Object.z, Range + i, Colour)
					end
				end
			end

			
			function _Helper:DrawCircleNextLvl(x, y, z, radius, width, color, chordlength)
				radius = radius or 300
				quality = math.max(8,self:round(180/math.deg((math.asin((chordlength/(2*radius)))))))
				quality = 2 * math.pi / quality
				radius = radius*.92
				local points = {}
				for theta = 0, 2 * math.pi + quality, quality do
					local c = WorldToScreen(D3DXVECTOR3(x + radius * math.cos(theta), y, z - radius * math.sin(theta)))
					points[#points + 1] = D3DXVECTOR2(c.x, c.y)
				end
				if DrawLines2 then
					DrawLines2(points, width or 1, color or 4294967295)
				end
			end

			function _Helper:round(num)
				if num >= 0 then return math.floor(num+.5) else return math.ceil(num-.5) end
			end

			function _Helper:DrawCircle2(x, y, z, radius, color)
				local vPos1 = Vector(x, y, z)
				local vPos2 = Vector(cameraPos.x, cameraPos.y, cameraPos.z)
				local tPos = vPos1 - (vPos1 - vPos2):normalized() * radius
				local sPos = WorldToScreen(D3DXVECTOR3(tPos.x, tPos.y, tPos.z))
				if OnScreen({ x = sPos.x, y = sPos.y }, { x = sPos.x, y = sPos.y }) then
					self:DrawCircleNextLvl(x, y, z, radius, 1, color, 75)
				end
			end

			function _Helper:GetHitBoxDistance(Target)
				return Helper:GetDistance(Target) - Helper:GetDistance(Target, Target.minBBox)
			end

			function _Helper:TrimString(s)
				return s:find'^%s*$' and '' or s:match'^%s*(.*%S)'
			end

			function _Helper:GetClasses()
				return AutoCarry.Skills, AutoCarry.Keys, AutoCarry.Items, AutoCarry.Data, AutoCarry.Jungle, AutoCarry.Helper, AutoCarry.MyHero, AutoCarry.Minions, AutoCarry.Crosshair, AutoCarry.Orbwalker
			end

			function _Helper:ArgbFromMenu(menu)
				return ARGB(menu[1], menu[2], menu[3], menu[4])
			end

			function _Helper:DecToHex(Dec)
				local B, K, Hex, I, D = 16, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), 0
				while Dec > 0 do
					I = I + 1
					Dec, D = math.floor(Dec / B), math.fmod(Dec, B) + 1
					Hex = string.sub(K, D, D)..Hex
				end
				return Hex
			end

			function _Helper:HexFromMenu(menu)
				local argb = {}
				argb[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({97})] = menu[1]
				argb[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({114})] = menu[2]
				argb[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({103})] = menu[3]
				argb[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({98})] = menu[4]
				return tonumber(self:DecToHex(argb[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({97})]) .. self:DecToHex(argb[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({114})]) .. self:DecToHex(argb[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({103})]) .. self:DecToHex(argb[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({98})]), 16);
			end

			function _Helper:IsEvading()
				return _G.evade or _G.Evade
			end

			function _Helper:GetAllHeroes()
				for i = 1, heroManager.iCount do
					local hero = heroManager:GetHero(i)
					table.insert(self.AllHeroes, hero)
				end
			end

			function _Helper:Debug(str)
				table.insert(self.DebugStrings, str)
			end

			function _Helper:_OnDraw()
				local Height = 200
				for _, Str in pairs(self.DebugStrings) do
					DrawText(tostring(Str), 15, 100, Height, 0xFFFFFF00)
					Height = Height + 20
				end
				self.DebugStrings = {}
			end

			function _Helper:CountAlliesInRange(Range)
				local _Count = 0
				for _, Ally in pairs(GetAllyHeroes()) do
					if Ally ~= myHero and Helper:GetDistance(Ally) <= Range then
						_Count = _Count + 1
					end
				end
				return _Count
			end

			--[[
			_Wards Class
			]]

			class '_Wards' Wards = nil

			function _Wards:__init()
				self.EnemyWards = {}
				self.IncomingWards = {}
				self.AllyIncomingWards = {}
				self.PlacedWards = {}

				AddTickCallback(function() self:_OnTick() end)
				AddCreateObjCallback(function(Obj) self:_OnCreateObj(Obj) end)
				AddDeleteObjCallback(function(Obj) self:_OnDeleteObj(Obj) end)
				AddProcessSpellCallback(function(Unit, Spell) self:_OnProcessSpell(Unit, Spell) end)
				AddRecvPacketCallback(function(Packet) self:_OnReceivePacket(Packet) end)
				AdvancedCallback:bind(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,110,71,97,105,110,70,111,99,115}))
				Plugins:RegisterPreAttack(function(target) self:PreAttack(target) end)
				Wards = self
			end

			function _Wards:_OnReceivePacket(p)
				if p.header == 49 then 
					p.pos = 1
					local deaddid = p:DecodeF()
					local killerid = p:DecodeF()
					for networkID, ward in pairs(self.PlacedWards) do
						if ward and deaddid and networkID == deaddid and ward.vanga == 1 and (Helper:GetTime() - ward.spawnTime) > 200 then
							self.PlacedWards[networkID] = nil
						elseif ward and deaddid and networkID == deaddid and ward.vanga == 2 and killerid == 0 then
							self.PlacedWards[networkID] = nil
						end
					end
				end

				if p.header == 0xB4 then 
					p.pos = 12
					local wardtype2 = p:Decode1()
					p.pos = 1
					local creatorID = p:DecodeF()
					p.pos = p.pos + 20
					local creatorID2 = p:DecodeF()
					p.pos = 37
					local objectID = p:DecodeF()
					local objectX = p:DecodeF()
					local objectY = p:DecodeF()
					local objectZ = p:DecodeF()
					local objectX2 = p:DecodeF()
					local objectY2 = p:DecodeF()
					local objectZ2 = p:DecodeF()
					p:DecodeF()
					local warddet = p:Decode1()
					p.pos = p.pos + 4
					local warddet2 = p:Decode1()
					p.pos = 13
					local wardtype = p:Decode1()

					local objectID = DwordToFloat(AddNum(FloatToDword(objectID), 2))
					local creatorchamp = objManager:GetObjectByNetworkId(creatorID)
					local duration
					local range
					if creatorchamp and creatorchamp.team ~= myHero.team then return end

					if warddet == 0x3F and warddet2 == 0x33 and wardtype ~= 12 and wardtype ~= 48 then --wards 116 | wardtype 48 -> riven E
						if wardtype2 == 0x6E then
							self.PlacedWards[objectID] = {x = objectX2, y = objectY2, z = objectZ2, visionRange = 1100, spawnTime = Helper:GetTime(), duration = 60000, vanga = 1 }	
					elseif wardtype2 == 0x2E then
						self.PlacedWards[objectID] = {x = objectX2, y = objectY2, z = objectZ2, visionRange = 1100, spawnTime = Helper:GetTime(), duration = 120000, vanga = 1 }	
					elseif wardtype2 == 0xAE then
						self.PlacedWards[objectID] = {x = objectX2, y = objectY2, z = objectZ2, visionRange = 1100, spawnTime = Helper:GetTime(), duration = 180000, vanga = 1 }	
					elseif wardtype2 == 0xEE then
						self.PlacedWards[objectID] = {x = objectX2, y = objectY2, z = objectZ2, visionRange = 1100, spawnTime = Helper:GetTime(), duration = 180000, vanga = 1 }	
					elseif (wardtype==8 or wardtype2==0x7E) then
						self.PlacedWards[objectID] = {x = objectX2, y = objectY2, z = objectZ2, visionRange = 1100, spawnTime = Helper:GetTime(), duration = 180000, vanga = 1 } 
					else
						self.PlacedWards[objectID] = {x = objectX2, y = objectY2, z = objectZ2, visionRange = 1100, spawnTime = Helper:GetTime(), duration = 180000, vanga = 1 }
					end
					end
				end
				p.pos = 1
			end

			function _Wards:_OnTick()
				if self.LastWardAttacked then
					if Helper:GetTime() > self.LastWardAttacked.Time + 100 and self.LastWardAttacked.LastAttack == Orbwalker.LastAttack then
						for i, Ward in pairs(self.EnemyWards) do
							if Ward == self.LastWardAttacked.Object then
								table.remove(self.EnemyWards, i)
								self.LastWardAttacked = nil
								return
							end
						end
					end
				end
			end

			function _Wards:_OnProcessSpell(Unit, Spell)
				if Data:IsWardSpell(Spell) then
					if Unit.team ~= myHero.team then
						table.insert(self.IncomingWards, Spell.endPos)
					else
						table.insert(self.AllyIncomingWards, Spell.endPos)
					end
				end
			end

			function _Wards:_OnCreateObj(Obj)
				if Obj and Data:IsWard(Obj) then
					for i, Inc in pairs(self.IncomingWards) do
						if Helper:GetDistance(Inc, Obj) < 50 then
							table.insert(self.EnemyWards, Obj)
							table.remove(self.IncomingWards, i)
							return
						end
					end
					for i, Inc in pairs(self.PlacedWards) do
						if Helper:GetDistance(Inc, Obj) < 50 then
							table.remove(self.AllyIncomingWards, i)
							return
						end
					end
					
					table.insert(self.EnemyWards, Obj)
					
				end
			end

			function _Wards:PreAttack(Target)
				if not self.LastWardAttacked then
					for _, Ward in pairs(self.EnemyWards) do
						if Ward == Target then
							self.LastWardAttacked = {Time = Helper:GetTime(), LastAttack = Orbwalker.LastAttack, Object = Ward}
						end
					end
				end
			end

			function _Wards:_OnDeleteObj(Obj)
				for i, Ward in pairs(self.EnemyWards) do
					if Obj == Ward then
						table.remove(self.EnemyWards, i)
					end
				end
			end

			function _Wards:GetAttackableWard()
				for _, Ward in pairs(self.EnemyWards) do
					if Helper:GetDistance(Ward) < MyHero.TrueRange and Ward.visible and not Ward.dead then
						return Ward
					end
				end
			end

			--[[
			_Keys Class
			]]

			class '_Keys' Keys = nil

			function _Keys:__init()
				self.KEYS_KEY = 0
				self.KEYS_MENUKEY = 1
				self.AutoCarry = false
				self.MixedMode = false
				self.LastHit = false
				self.LaneClear = false
				self.AutoCarryKeys = {}
				self.MixedModeKeys = {}
				self.LastHitKeys = {}
				self.LaneClearKeys = {}
				self.LMouseDown = false
				self.AutoCarryKeyDown = false
				self.MixedModeKeyDown = false
				self.LaneClearKeyDown = false
				self.LastHitKeyDown = false
				Keys = self

				AddTickCallback(function() self:_OnTick() end)
				AddMsgCallback(function(Msg, Key) self:_OnWndMsg(Msg, Key) end)
			end

			function _Keys:_OnTick()
				self.AutoCarry = self:IsKeyEnabled(self.AutoCarryKeys)
				self.MixedMode = self:IsKeyEnabled(self.MixedModeKeys)
				self.LastHit = self:IsKeyEnabled(self.LastHitKeys)
				self.LaneClear = self:IsKeyEnabled(self.LaneClearKeys)
				self:ModeKeyPressed()
			end

			function _Keys:ModeKeyPressed()
				if self.AutoCarryKeyDown and not AutoCarryMenu.Active and not AutoCarryMenu.Toggle then
					self:EnableMode(MODE_AUTOCARRY)
				elseif self.MixedModeKeyDown and not MixedModeMenu.Active and not MixedModeMenu.Toggle then
					self:EnableMode(MODE_MIXEDMODE)
				elseif self.LaneClearKeyDown and not LaneClearMenu.Active and not LaneClearMenu.Toggle then
					self:EnableMode(MODE_LANECLEAR)
				elseif self.LastHitKeyDown and not LastHitMenu.Active and not LastHitMenu.Toggle then
					self:EnableMode(MODE_LASTHIT)
				end
			end

			function _Keys:EnableMode(Mode)
				AutoCarryMenu.Active = (Mode == MODE_AUTOCARRY and true or false)
				MixedModeMenu.Active = (Mode == MODE_MIXEDMODE and true or false)
				LaneClearMenu.Active = (Mode == MODE_LANECLEAR and true or false)
				LastHitMenu.Active = (Mode == MODE_LASTHIT and true or false)
			end

			function _Keys:_OnWndMsg(Msg, Key)
				if Msg == WM_LBUTTONDOWN then
					self.LMouseDown = true
				elseif Msg == WM_LBUTTONUP then
					self.LMouseDown = false
				elseif Msg == KEY_DOWN then
					if Key == AutoCarryMenu._param[5].key then
						self.AutoCarryKeyDown = true
					elseif Key == MixedModeMenu._param[3].key then
						self.MixedModeKeyDown = true
					elseif Key == LaneClearMenu._param[3].key then
						self.LaneClearKeyDown = true
					elseif Key == LastHitMenu._param[3].key then
						self.LastHitKeyDown = true
					end
				elseif Msg == KEY_UP then
					if Key == AutoCarryMenu._param[5].key then
						self.AutoCarryKeyDown = false
					elseif Key == MixedModeMenu._param[3].key then
						self.MixedModeKeyDown = false
					elseif Key == LaneClearMenu._param[3].key then
						self.LaneClearKeyDown = false
					elseif Key == LastHitMenu._param[3].key then
						self.LastHitKeyDown = false
					end
				end
			end

			function _Keys:IsKeyEnabled(List)
				for _, Key in pairs(List) do
					if Key.Type == self.KEYS_KEY then
						if IsKeyDown(Key.Key) then
							return true
						end
					elseif Key.Type == self.KEYS_MENUKEY then
						if Key.Menu[Key.Param] then
							return true
						end
					end
				end

				if List == self.AutoCarryKeys and AutoCarryMenu and AutoCarryMenu.LeftClick and self.LMouseDown then
					return true
				end

				return false
			end

			function _Keys:RegisterMenuKey(Menu, Param, Mode)
				local MenuKey = _MenuKey(Menu, Param)
				self:Insert(MenuKey, Mode)
			end

			function _Keys:RegisterKey(key, Mode)
				local Key = _Key(key)
				self:Insert(Key, Mode)
			end

			function _Keys:UnregisterKey(_Key, Mode)
				for i, Key in pairs(self:GetKeyList(Mode)) do
					if Key.Key == _Key then
						table.remove(self:GetKeyList(Mode), i)
					end
				end
			end

			function _Keys:Insert(Key, Mode)
				if Mode == MODE_AUTOCARRY then
					table.insert(self.AutoCarryKeys, Key)
				elseif Mode == MODE_MIXEDMODE then
					table.insert(self.MixedModeKeys, Key)
				elseif Mode == MODE_LASTHIT then
					table.insert(self.LastHitKeys, Key)
				elseif Mode == MODE_LANECLEAR then
					table.insert(self.LaneClearKeys, Key)
				end
			end

			function _Keys:GetKeyList(Mode)
				if Mode == MODE_AUTOCARRY then
					return self.AutoCarryKeys
				elseif Mode == MODE_MIXEDMODE then
					return self.MixedModeKeys
				elseif Mode == MODE_LASTHIT then
					return self.LastHitKeys
				elseif Mode == MODE_LANECLEAR then
					return self.LaneClearKeys
				end
			end


			--[[
			Key Class
			]]

			class '_Key'

			function _Key:__init(key)
				self.Key = key
				self.Type = Keys.KEYS_KEY
			end

			--[[
			MenuKey Class
			]]

			class '_MenuKey'

			function _MenuKey:__init(menu, param)
				self.Menu = menu
				self.Param = param
				self.Type = Keys.KEYS_MENUKEY
			end

			--[[
			MinionDraw Class
			]]

			class '_MinionDraw' MinionDraw = nil

			function _MinionDraw:__init()
				AddDrawCallback(function() self:_OnDraw() end)
			end

			function _MinionDraw:_OnDraw()
				if MinionHealthMenu.Enable then
					local max = MinionHealthMenu.MaxDraw
					local i = 1
					for _, Minion in ipairs(Minions.EnemyMinions.objects) do
						if i <= max then
							if Orbwalker:CanOrbwalkTargetCustomRange(Minion, myHero.range + 500) then
								self:DoDraw(Minion)
								i = i + 1
							end
						end
					end

					if ValidTarget(Minions.KillableMinion) then
						--self:DrawKillable(Minions.KillableMinion)
					elseif ValidTarget(Minions.AlmostKillable) then
						--self:DrawOutline(Minions.AlmostKillable, false)
					end
				end
			end

			function _MinionDraw:DoDraw(minion)
				--if minion.charName == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,101,115,116,67,117,98,101,82,101,110,100,101,114}) or minion.charName == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,84,95,66,117,102,102,112,108,97,116,95,82}) or minion.charName == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,84,95,66,117,102,102,112,108,97,116,95,76}) then return end

				local pos = GetUnitHPBarPos(minion)
				local myDamage = Minions:MyDamage(minion)
				local hitsRemaining = math.ceil(minion.maxHealth / myDamage)
				local barCount = math.ceil(minion.health / myDamage)
				barCount = barCount < 9 and barCount or 8
				--local barSize = 100 / (minion.maxHealth / 62)
				local barSize = myDamage / (minion.maxHealth / 62)

				local offset = 0
				for i = 1, barCount do
					offset = offset + barSize
					if offset < 62 then
						self:DrawTickerBar(pos.x - 32 + offset, pos.y, 2, 4, ARGB(255, 0, 0, 0))
					end
				end

			end

			function _MinionDraw:DrawTickerBar(x, y, w, h, colour)
				local Points = {}
				Points[1] = D3DXVECTOR2(math.floor(x), math.floor(y))
				Points[2] = D3DXVECTOR2(math.floor(x + w), math.floor(y))
				DrawLines2(Points, math.floor(h), colour)
			end

			function _MinionDraw:DrawOutline(minion, killable)
				local pos = GetUnitHPBarPos(minion)
				local colour = killable and ARGB(255, 0, 255, 0) or ARGB(255, 255, 0, 0)
				self:DrawTickerBar(pos.x - 32, pos.y - 3, 64, 1, colour)
				self:DrawTickerBar(pos.x - 32, pos.y + 2, 64, 1, colour)
				self:DrawTickerBar(pos.x - 32, pos.y, 1, 5, colour)
				self:DrawTickerBar(pos.x - 32 + 63, pos.y, 1, 5, colour)
			end

			function _MinionDraw:DrawKillable(minion)
				local pos = GetUnitHPBarPos(minion)
				pos.x = pos.x - 32

				DrawLine(pos.x, pos.y-1, pos.x + 62, pos.y-1, 3, ARGB(255, 0, 255, 0))
			end

			--[[
			_Streaming Class
			]]

			class '_Streaming'

			function _Streaming:__init()
				self.Save = GetSave(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121}))

				AddTickCallback(function()self:_OnTick() end)
				AddMsgCallback(function(msg, key)self:_OnWndMsg(msg, key) end)

				if self.Save.StreamingMode then
					self:EnableStreaming()
				else
					self:DisableStreaming()
				end
			end

			function _Streaming:_OnTick()
				if self.StreamEnabled then
					self:EnableStreaming()
				end
			end

			function _Streaming:_OnWndMsg(msg, key)
				if msg == KEY_DOWN and key == 118 then
					if not self.StreamEnabled then
						self:EnableStreaming()
					else
						self:DisableStreaming()
					end
				end
			end

			function _Streaming:EnableStreaming()
				self.Save.StreamingMode = true
				self.StreamEnabled = true
				if not self.ChatTimeout then
					self.ChatTimeout = os.clock() + 3
				elseif os.clock() < self.ChatTimeout then
					self:DisableOverlay()
					for i = 0, 15 do
						PrintChat(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
					end
				else
					_G.PrintChat = function() end
				end
			end

			function _Streaming:DisableStreaming()
				self.Save.StreamingMode = false
				self.StreamEnabled = false
				if self.ChatTimeout then
					EnableOverlay()
					self.ChatTimeout = nil
				end
			end

			function _Streaming:CreateMenu()
				self.StreamingMenu = scriptConfig(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,58,32,83,116,114,101,97,109,105,110,103}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,115,116,114,101,97,109,105,110,103}))
				self.StreamingMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,104,111,119}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,104,111,119,32,67,108,105,99,107,32,77,97,114,107,101,114}), SCRIPT_PARAM_LIST, 2, { abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,116,114,101,97,109,32,77,111,100,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,108,119,97,121,115}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,101,118,101,114})})
				self.StreamingMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,111,108,111,117,114}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,108,105,99,107,32,77,97,114,107,101,114,32,67,111,108,111,117,114}), SCRIPT_PARAM_LIST, 1, { abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,114,101,101,110}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,100}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,109,97,114,116})})
				self.StreamingMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,110,82,97,110,100}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,110,105,109,117,109,32,84,105,109,101,32,66,101,116,119,101,101,110,32,67,108,105,99,107,115}), SCRIPT_PARAM_SLICE, 150, 0, 1000, 0)
				self.StreamingMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,120,82,97,110,100}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,120,105,109,117,109,32,84,105,109,101,32,66,101,116,119,101,101,110,32,67,108,105,99,107,115}), SCRIPT_PARAM_SLICE, 650, 0, 1000, 0)
				self.StreamingMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				self.StreamingMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,111,103,103,108,101,32,83,116,114,101,97,109,105,110,103,32,77,111,100,101,32,119,105,116,104,32,70,55}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				self.MenuCreated = true
			end

			function _Streaming:OnMove()
				if self.MenuCreated then
					
					
					
					
					
					
					
				end
			end

			function _Streaming:Smart()
				if (Keys.MixedMode or Keys.AutoCarry) and Crosshair:GetTarget() then
					ShowRedClick(mousePos)
					self.Red = false
				elseif (Keys.LastHit or Keys.LaneClear or Keys.MixedMode) and ValidTarget(Minions.KillableMinion) then
					ShowRedClick(mousePos)
					self.Red = false
				elseif self.Red then
					ShowRedClick(mousePos)
					self.Red = false
				else
					ShowGreenClick(mousePos)
				end
			end

			function _Streaming:DisableOverlay()
				_G.DrawText,
				_G.PrintFloatText,
				_G.DrawLine,
				_G.DrawArrow,
				_G.DrawCircle,
				_G.DrawRectangle,
				_G.DrawLines,
				_G.DrawLines2 = function() end,
					function() end,
					function() end,
					function() end,
					function() end,
					function() end,
					function() end,
					function() end
			end

			Streaming = _Streaming()

			--[[
			_MenuManager Class
			]]

			class '_MenuManager' MenuManager = nil

			function _MenuManager:__init()
				self.AutoCarry = false
				self.MixedMode = false
				self.LastHit = false
				self.LaneClear = false
				self.LaneFreeze = false
				self.LastSaveTick = 0
				self.LoadedData = {}

				AddTickCallback(function() self:OnTick() end)
				AddMsgCallback(function(msg, key) self:OnWndMsg(msg, key) end)
				MenuManager = self


				
				ModesMenu = scriptConfig(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,58,32,83,101,116,117,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,115,101,116,117,112}))
				ModesMenu:addSubMenu(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,117,116,111,32,67,97,114,114,121,32,77,111,100,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,97,117,116,111,99,97,114,114,121,115,117,98}))
				ModesMenu:addSubMenu(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,97,115,116,32,72,105,116,32,77,111,100,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,108,97,115,116,104,105,116,115,117,98}))
				ModesMenu:addSubMenu(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,120,101,100,32,77,111,100,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,109,105,120,101,100,109,111,100,101,115,117,98}))
				ModesMenu:addSubMenu(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,97,110,101,32,67,108,101,97,114,32,77,111,100,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,108,97,110,101,99,108,101,97,114,115,117,98}))
				AutoCarryMenu = ModesMenu.sidasacautocarrysub
				LastHitMenu = ModesMenu.sidasaclasthitsub
				MixedModeMenu = ModesMenu.sidasacmixedmodesub
				LaneClearMenu = ModesMenu.sidasaclaneclearsub

				ConfigurationMenu = scriptConfig(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,58,32,67,111,110,102,105,103,117,114,97,116,105,111,110}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,99,111,110,102,105,103,115,117,98}))
				ConfigurationMenu:addSubMenu(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,114,97,119,105,110,103}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,100,114,97,119,105,110,103,115,117,98}))
				ConfigurationMenu:addSubMenu(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,110,101,109,121,32,65,65,32,82,97,110,103,101,32,67,105,114,99,108,101,115}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,101,110,101,109,121,114,97,110,103,101,115,117,98}))
				ConfigurationMenu:addSubMenu(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,110,105,111,110,32,68,114,97,119,105,110,103}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,109,105,110,105,111,110,104,101,97,108,116,104,115,117,98}))
				ConfigurationMenu:addSubMenu(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,101,108,101,101,32,67,111,110,102,105,103}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,109,101,108,101,101,115,117,98}))
				ConfigurationMenu:addSubMenu(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,100,118,97,110,99,101,100}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,97,100,118,97,110,99,101,100,115,117,98}))
				ConfigurationMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				ConfigurationMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,117,112,112,111,114,116,77,111,100,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,117,112,112,111,114,116,32,77,111,100,101}), SCRIPT_PARAM_ONOFF, false)
				ConfigurationMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,111,103,103,108,101,82,105,103,104,116,67,108,105,99,107,68,105,115,97,98,108,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,105,115,97,98,108,101,32,84,111,103,103,108,101,32,77,111,100,101,32,79,110,32,82,105,103,104,116,32,67,108,105,99,107}), SCRIPT_PARAM_ONOFF, true)
				ConfigurationMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,111,108,100,90,111,110,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,117,115,101,32,79,118,101,114,32,72,101,114,111,32,84,111,32,83,116,111,112,32,77,111,118,101}), SCRIPT_PARAM_ONOFF, false)
				DrawingMenu = ConfigurationMenu.sidasacdrawingsub
				EnemyRangeMenu = ConfigurationMenu.sidasacenemyrangesub
				MinionHealthMenu = ConfigurationMenu.sidasacminionhealthsub
				MeleeMenu = ConfigurationMenu.sidasacmeleesub
				UpdateMenu = ConfigurationMenu.sidasacupdatesub
				AdvancedMenu = ConfigurationMenu.sidasacadvancedsub
				if ConfigurationMenu.SupportMode then
					ConfigurationMenu.SupportMode = false
				end

				if #Skills.SkillsList > 0 then
					SkillsMenu = scriptConfig(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,58,32,83,107,105,108,108,115}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,115,107,105,108,108,115}))
					for _, Skill in pairs(Skills.SkillsList) do
						SkillsMenu:addSubMenu(Skill.DisplayName, Skill.RawName)
						SkillsMenu[Skill.RawName]:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,117,116,111,67,97,114,114,121}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({85,115,101,32,73,110,32,65,117,116,111,32,67,97,114,114,121}), SCRIPT_PARAM_ONOFF, false)
						SkillsMenu[Skill.RawName]:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,120,101,100,77,111,100,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({85,115,101,32,73,110,32,77,105,120,101,100,32,77,111,100,101}), SCRIPT_PARAM_ONOFF, false)
						SkillsMenu[Skill.RawName]:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,97,110,101,67,108,101,97,114}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({85,115,101,32,73,110,32,76,97,110,101,32,67,108,101,97,114}), SCRIPT_PARAM_ONOFF, false)
						SkillsMenu[Skill.RawName]:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,105,108,108,115,116,101,97,108}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,105,108,108,115,116,101,97,108}), SCRIPT_PARAM_ONOFF, false)
						SkillsMenu[Skill.RawName]:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,97,110,101,67,108,101,97,114,70,97,114,109}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,97,110,101,32,67,108,101,97,114,32,70,97,114,109,47,80,117,115,104}), SCRIPT_PARAM_ONOFF, false)
					end
					SkillsMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
					SkillsMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,107,105,108,108,70,97,114,109}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,110,97,98,108,101,47,68,105,115,97,98,108,101,32,83,107,105,108,108,32,70,97,114,109}), SCRIPT_PARAM_ONKEYTOGGLE, true, string.byte(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72})))
					SkillsMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,97,114,109,77,105,110,77,97,110,97}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,107,105,108,108,32,70,97,114,109,32,77,105,110,32,77,97,110,97}), SCRIPT_PARAM_SLICE, 30, 0, 100, 0)
				end


				
				FarmMenu = scriptConfig(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,58,32,70,97,114,109,105,110,103}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,102,97,114,109,105,110,103}))
				FarmMenu:addSubMenu(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,115,116,101,114,105,101,115}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,115,117,98,109,97,115,116,101,114,105,101,115}))
				--FarmMenu:addSubMenu(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,97,115,116,32,72,105,116,116,105,110,103,32,83,107,105,108,108,115,32,40,110,111,116,32,119,111,114,107,105,110,103,41}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,115,117,98,108,97,115,116,104,105,116,115,107,105,108,108}))
				FarmMenu:addSubMenu(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,97,109,97,103,101,32,80,114,101,100,105,99,116,105,111,110,32,83,101,116,116,105,110,103,115}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,112,114,101,100,105,99,116,105,111,110,102,97,114,109}))
				FarmMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				FarmMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,97,110,101,70,114,101,101,122,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,97,110,101,32,70,114,101,101,122,101}), SCRIPT_PARAM_ONKEYTOGGLE, false, 112)
				MasteryMenu = FarmMenu.sidasacsubmasteries
				DamagePredictionMenu = FarmMenu.sidasacpredictionfarm

				
				DamagePredictionMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({108,97,110,101,67,108,101,97,114,84,121,112,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,97,110,101,32,67,108,101,97,114,32,77,101,116,104,111,100}), SCRIPT_PARAM_LIST, 1, { abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,101,102,97,117,108,116}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,101,116,104,111,100,32,50}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,101,116,104,111,100,32,51})})


				
				MasteryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,117,116,99,104,101,114}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,117,116,99,104,101,114}), SCRIPT_PARAM_ONOFF, false)
				MasteryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,114,99,97,110,101,66,108,97,100,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,114,99,97,110,101,32,66,108,97,100,101}), SCRIPT_PARAM_ONOFF, false)
				MasteryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,97,118,111,99}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,97,118,111,99}), SCRIPT_PARAM_ONOFF, false)
				MasteryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,111,117,98,108,101,69,100,103,101,100,83,119,111,114,100}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,111,117,98,108,101,45,69,100,103,101,100,32,83,119,111,114,100}), SCRIPT_PARAM_ONOFF, false)
				MasteryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,101,118,97,115,116,97,116,105,110,103,83,116,114,105,107,101,115}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,101,118,97,115,116,97,116,105,110,103,32,83,116,114,105,107,101}), SCRIPT_PARAM_SLICE, 0, 0, 3, 0)

				MasteryMenu.Butcher = self:LoadChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,117,116,99,104,101,114})) or false
				MasteryMenu.ArcaneBlade = self:LoadChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,114,99,97,110,101,66,108,97,100,101})) or false
				MasteryMenu.Havoc = self:LoadChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,97,118,111,99})) or false
				MasteryMenu.DoubleEdgedSword = self:LoadChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,111,117,98,108,101,69,100,103,101,100,83,119,111,114,100})) or false
				MasteryMenu.DevastatingStrikes = self:LoadChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,101,118,97,115,116,97,116,105,110,103,83,116,114,105,107,101,115})) or 0

				
				
				
				
				
				
				
				
				
				
				


				

				--AutoCarryMenu = scriptConfig(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,58,32,65,117,116,111,32,67,97,114,114,121}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,97,117,116,111,99,97,114,114,121}))
				AutoCarryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({45,45,32,83,101,116,116,105,110,103,115,45,45}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				AutoCarryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,102,116,67,108,105,99,107}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,102,116,32,67,108,105,99,107,32,77,111,100,101}), SCRIPT_PARAM_ONOFF, false)
				AutoCarryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,111,103,103,108,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,111,103,103,108,101,32,109,111,100,101,32,40,114,101,113,117,105,114,101,115,32,114,101,108,111,97,100,41}), SCRIPT_PARAM_ONOFF, false)
				AutoCarryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,99,116,105,118,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,111,116,107,101,121}), AutoCarryMenu.Toggle and SCRIPT_PARAM_ONKEYTOGGLE or SCRIPT_PARAM_ONKEYDOWN, false, 32)
				Keys:RegisterMenuKey(AutoCarryMenu, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,99,116,105,118,101}), MODE_AUTOCARRY)

				AutoCarryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				AutoCarryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({45,45,32,73,116,101,109,115,32,45,45}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				for _, Item in pairs(Items.ItemList) do
					AutoCarryMenu:addParam(Item.RawName..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,117,116,111,67,97,114,114,121}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({85,115,101,32})..Item.Name, SCRIPT_PARAM_ONOFF, true)
				end
				AutoCarryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({98,111,116,114,107,83,97,118,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,97,118,101,32,66,111,116,82,75,32,102,111,114,32,109,97,120,32,104,101,97,108}), SCRIPT_PARAM_ONOFF, true)
				AutoCarryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				AutoCarryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({45,45,32,77,111,118,105,110,103,47,65,116,116,97,99,107,105,110,103,32,45,45}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				AutoCarryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,118,101,109,101,110,116}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,118,101,109,101,110,116,32,69,110,97,98,108,101,100}), SCRIPT_PARAM_ONOFF, true)
				AutoCarryMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,116,116,97,99,107,115}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,116,116,97,99,107,115,32,69,110,97,98,108,101,100}), SCRIPT_PARAM_ONOFF, true)


				

				--LastHitMenu = scriptConfig(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,58,32,76,97,115,116,32,72,105,116}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,108,97,115,116,104,105,116}))
				LastHitMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({45,45,32,83,101,116,116,105,110,103,115,45,45}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				LastHitMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,111,103,103,108,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,111,103,103,108,101,32,109,111,100,101,32,40,114,101,113,117,105,114,101,115,32,114,101,108,111,97,100,41}), SCRIPT_PARAM_ONOFF, false)
				LastHitMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,99,116,105,118,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,111,116,107,101,121}), LastHitMenu.Toggle and SCRIPT_PARAM_ONKEYTOGGLE or SCRIPT_PARAM_ONKEYDOWN, false, string.byte(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({88})))
				LastHitMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				LastHitMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({45,45,32,77,111,118,105,110,103,47,65,116,116,97,99,107,105,110,103,32,45,45}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				LastHitMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,118,101,109,101,110,116}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,118,101,109,101,110,116,32,69,110,97,98,108,101,100}), SCRIPT_PARAM_ONOFF, true)
				LastHitMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,116,116,97,99,107,115}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,116,116,97,99,107,115,32,69,110,97,98,108,101,100}), SCRIPT_PARAM_ONOFF, true)
				Keys:RegisterMenuKey(LastHitMenu, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,99,116,105,118,101}), MODE_LASTHIT)


				

				--MixedModeMenu = scriptConfig(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,58,32,77,105,120,101,100,32,77,111,100,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,109,105,120,101,100,109,111,100,101}))
				MixedModeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({45,45,32,83,101,116,116,105,110,103,115,45,45}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				MixedModeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,111,103,103,108,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,111,103,103,108,101,32,109,111,100,101,32,40,114,101,113,117,105,114,101,115,32,114,101,108,111,97,100,41}), SCRIPT_PARAM_ONOFF, false)
				MixedModeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,99,116,105,118,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,111,116,107,101,121}), MixedModeMenu.Toggle and SCRIPT_PARAM_ONKEYTOGGLE or SCRIPT_PARAM_ONKEYDOWN, false, string.byte(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67})))
				MixedModeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,110,105,111,110,80,114,105,111,114,105,116,121}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({80,114,105,111,114,105,116,105,115,101,32,76,97,115,116,32,72,105,116,32,79,118,101,114,32,72,97,114,97,115,115}), SCRIPT_PARAM_ONOFF, true)
				Keys:RegisterMenuKey(MixedModeMenu, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,99,116,105,118,101}), MODE_MIXEDMODE)

				MixedModeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				MixedModeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({45,45,32,73,116,101,109,115,32,40,65,103,97,105,110,115,116,32,67,104,97,109,112,105,111,110,115,32,79,110,108,121,41,32,45,45}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				for _, Item in pairs(Items.ItemList) do
					MixedModeMenu:addParam(Item.RawName..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,120,101,100,77,111,100,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({85,115,101,32})..Item.Name, SCRIPT_PARAM_ONOFF, true)
				end
				MixedModeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({98,111,116,114,107,83,97,118,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,97,118,101,32,66,111,116,82,75,32,102,111,114,32,109,97,120,32,104,101,97,108}), SCRIPT_PARAM_ONOFF, true)
				MixedModeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				MixedModeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({45,45,32,77,111,118,105,110,103,47,65,116,116,97,99,107,105,110,103,32,45,45}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				MixedModeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,118,101,109,101,110,116}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,118,101,109,101,110,116,32,69,110,97,98,108,101,100}), SCRIPT_PARAM_ONOFF, true)
				MixedModeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,116,116,97,99,107,115}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,116,116,97,99,107,115,32,69,110,97,98,108,101,100}), SCRIPT_PARAM_ONOFF, true)


				

				--LaneClearMenu = scriptConfig(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,58,32,76,97,110,101,32,67,108,101,97,114}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,108,97,110,101,99,108,101,97,114}))
				LaneClearMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({45,45,32,83,101,116,116,105,110,103,115,45,45}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				LaneClearMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,111,103,103,108,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,111,103,103,108,101,32,109,111,100,101,32,40,114,101,113,117,105,114,101,115,32,114,101,108,111,97,100,41}), SCRIPT_PARAM_ONOFF, false)
				LaneClearMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,99,116,105,118,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,111,116,107,101,121}), LaneClearMenu.Toggle and SCRIPT_PARAM_ONKEYTOGGLE or SCRIPT_PARAM_ONKEYDOWN, false, string.byte(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86})))
				LaneClearMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,116,116,97,99,107,69,110,101,109,105,101,115}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,116,116,97,99,107,32,69,110,101,109,105,101,115}), SCRIPT_PARAM_ONOFF, true)
				LaneClearMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,110,105,111,110,80,114,105,111,114,105,116,121}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({80,114,105,111,114,105,116,105,115,101,32,76,97,115,116,32,72,105,116,32,79,118,101,114,32,72,97,114,97,115,115}), SCRIPT_PARAM_ONOFF, true)
				Keys:RegisterMenuKey(LaneClearMenu, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,99,116,105,118,101}), MODE_LANECLEAR)

				LaneClearMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				LaneClearMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({45,45,32,73,116,101,109,115,32,40,65,103,97,105,110,115,116,32,67,104,97,109,112,105,111,110,115,32,79,110,108,121,41,32,45,45}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				for _, Item in pairs(Items.ItemList) do
					LaneClearMenu:addParam(Item.RawName..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,97,110,101,67,108,101,97,114}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({85,115,101,32})..Item.Name, SCRIPT_PARAM_ONOFF, true)
				end
				LaneClearMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({98,111,116,114,107,83,97,118,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,97,118,101,32,66,111,116,82,75,32,102,111,114,32,109,97,120,32,104,101,97,108}), SCRIPT_PARAM_ONOFF, true)
				LaneClearMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				LaneClearMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({45,45,32,77,111,118,105,110,103,47,65,116,116,97,99,107,105,110,103,32,45,45}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				LaneClearMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,118,101,109,101,110,116}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,118,101,109,101,110,116,32,69,110,97,98,108,101,100}), SCRIPT_PARAM_ONOFF, true)
				LaneClearMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,116,116,97,99,107,115}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,116,116,97,99,107,115,32,69,110,97,98,108,101,100}), SCRIPT_PARAM_ONOFF, true)

				
				--DrawingMenu = scriptConfig(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,58,32,68,114,97,119,105,110,103}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,100,114,97,119,105,110,103}))
				DrawingMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,97,110,103,101,67,105,114,99,108,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,104,97,109,112,105,111,110,32,82,97,110,103,101,32,67,105,114,99,108,101}), SCRIPT_PARAM_ONOFF, true)
				DrawingMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,97,110,103,101,67,105,114,99,108,101,67,111,108,111,117,114}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,111,108,111,117,114}), SCRIPT_PARAM_COLOR, {255, 0, 189, 22})
				DrawingMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				DrawingMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,101,108,101,101,83,116,105,99,107,121}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,116,105,99,107,32,84,111,32,84,97,114,103,101,116,32,82,97,110,103,101,32,40,77,101,108,101,101,32,79,110,108,121,41}), SCRIPT_PARAM_ONOFF, true)
				DrawingMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,101,108,101,101,83,116,105,99,107,121,67,111,108,111,117,114}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,116,105,99,107,32,84,111,32,84,97,114,103,101,116,32,67,111,108,111,117,114}), SCRIPT_PARAM_COLOR, {183, 0, 26, 173})
				DrawingMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				DrawingMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,111,119,70,80,83,67,105,114}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({85,115,101,32,76,111,119,32,70,80,83,32,67,105,114,99,108,101,115}), SCRIPT_PARAM_ONOFF, true)

				MeleeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,101,108,101,101,83,116,105,99,107,121,82,97,110,103,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,116,105,99,107,32,84,111,32,84,97,114,103,101,116,32,82,97,110,103,101,32,40,77,101,108,101,101,32,79,110,108,121,41}), SCRIPT_PARAM_SLICE, 0, 0, 300, 0)

				
				AdvancedMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,97,114,109,79,102,102,115,101,116,84,121,112,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,97,115,116,32,72,105,116,32,65,100,106,117,115,116,109,101,110,116,58}), SCRIPT_PARAM_LIST, 1, { abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,111,110,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,32,76,97,115,116,32,72,105,116,32,69,97,114,108,105,101,114,32,32}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,32,76,97,115,116,32,72,105,116,32,76,97,116,101,114,32,32})})
				AdvancedMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,97,114,109,79,102,102,115,101,116,65,109,111,117,110,116}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,100,106,117,115,116,109,101,110,116,32,65,109,111,117,110,116,58}), SCRIPT_PARAM_SLICE, 0, 0, 150, 0)
				AdvancedMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				AdvancedMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,105,110,100,85,112,84,121,112,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,110,105,109,97,116,105,111,110,32,67,97,110,99,101,108,32,65,100,106,117,115,116,109,101,110,116,58}), SCRIPT_PARAM_LIST, 1, { abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,111,110,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,32,67,97,110,99,101,108,32,69,97,114,108,105,101,114,32,32}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,32,67,97,110,99,101,108,32,76,97,116,101,114,32,32})})
				AdvancedMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,105,110,100,85,112,65,109,111,117,110,116}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,100,106,117,115,116,109,101,110,116,32,65,109,111,117,110,116,58}), SCRIPT_PARAM_SLICE, 0, 0, 150, 0)

				AdvancedMenu.FarmOffsetType = self:LoadChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,97,114,109,79,102,102,115,101,116,84,121,112,101})) or 1
				AdvancedMenu.FarmOffsetAmount = self:LoadChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,97,114,109,79,102,102,115,101,116,65,109,111,117,110,116})) or 0
				if AdvancedMenu.FarmOffsetAmount < 0 then AdvancedMenu.FarmOffsetAmount = AdvancedMenu.FarmOffsetAmount * -1 end
				AdvancedMenu.WindUpType = self:LoadChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,105,110,100,85,112,84,121,112,101})) or 1
				AdvancedMenu.WindUpAmount = self:LoadChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,105,110,100,85,112,65,109,111,117,110,116})) or 0
				if AdvancedMenu.WindUpAmount < 0 then AdvancedMenu.WindUpAmount = AdvancedMenu.WindUpAmount * -1 end

				
				EnemyRangeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,121,32,82,111,108,101,58}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				EnemyRangeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,111,108,101})..ROLE_AD_CARRY, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,32,32,32,68,114,97,119,32,65,68,67}), SCRIPT_PARAM_ONOFF, true)
				EnemyRangeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,111,108,101})..ROLE_AP, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,32,32,32,68,114,97,119,32,65,80,32,67,97,114,114,121}), SCRIPT_PARAM_ONOFF, true)
				EnemyRangeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,111,108,101})..ROLE_SUPPORT, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,32,32,32,68,114,97,119,32,83,117,112,112,111,114,116}), SCRIPT_PARAM_ONOFF, true)
				EnemyRangeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,111,108,101})..ROLE_BRUISER, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,32,32,32,68,114,97,119,32,66,114,117,105,115,101,114}), SCRIPT_PARAM_ONOFF, true)
				EnemyRangeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,111,108,101})..ROLE_TANK, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,32,32,32,68,114,97,119,32,84,97,110,107}), SCRIPT_PARAM_ONOFF, true)
				EnemyRangeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				EnemyRangeMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,101,112}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,121,32,67,104,97,109,112,105,111,110,58}), SCRIPT_PARAM_INFO, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}))
				for _, Enemy in pairs(GetEnemyHeroes()) do
					EnemyRangeMenu:addParam(Enemy.charName, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,32,32,32,68,114,97,119,32})..Enemy.charName, SCRIPT_PARAM_ONOFF, false)
				end

				MinionHealthMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,110,97,98,108,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,100,105,102,121,32,77,105,110,105,111,110,32,72,101,97,108,116,104,32,66,97,114,115}), SCRIPT_PARAM_ONOFF, true)
				MinionHealthMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,120,68,114,97,119}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,120,105,109,117,109,32,72,101,97,108,116,104,32,66,97,114,115,32,84,111,32,77,111,100,105,102,121}), SCRIPT_PARAM_SLICE, 10, 1, 30, 0)
				MinionHealthMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,110,105,111,110,65,114,114,111,119,115}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,114,97,119,32,76,97,115,116,32,72,105,116,32,65,114,114,111,119,115}), SCRIPT_PARAM_ONOFF, true)
				MinionHealthMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,110,105,111,110,77,97,114,107,101,114}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,108,119,97,121,115,32,68,114,97,119,32,75,105,108,108,97,98,108,101,32,65,114,114,111,119,115}), SCRIPT_PARAM_ONOFF, false)

				self:DisableAllModes()
			end

			function _MenuManager:OnTick()
				if AutoCarryMenu.Active ~= self.AutoCarry and not self.AutoCarry then
					self:SetToggles(true, false, false, false)
				elseif MixedModeMenu.Active ~= self.MixedMode and not self.MixedMode then
					self:SetToggles(false, true, false, false)
				elseif LastHitMenu.Active ~= self.LastHit and not self.LastHit then
					self:SetToggles(false, false, true, false)
				elseif LaneClearMenu.Active ~= self.LaneClear and not self.LaneClear then
					self:SetToggles(false, false, false, true)
				end

				CustomPermaShow(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,32,32,32,32,32,32,32,32,32,32,32,32,32,83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,58,32,82,101,98,111,114,110}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({}), true, nil)
				CustomPermaShow(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,117,116,111,32,67,97,114,114,121}), AutoCarryMenu.Active, true, nil, 1426521024, nil)
				CustomPermaShow(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,97,115,116,32,72,105,116}), LastHitMenu.Active, true, nil, 1426521024, nil)
				CustomPermaShow(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,120,101,100,32,77,111,100,101}), MixedModeMenu.Active, true, nil, 1426521024, nil)
				CustomPermaShow(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,97,110,101,32,67,108,101,97,114}), LaneClearMenu.Active, true, nil, 1426521024, nil)
				CustomPermaShow(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,97,110,101,32,70,114,101,101,122,101,32,40,70,49,41}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,32,32,32,32,32,65,99,116,105,118,101}), FarmMenu.LaneFreeze, 1426521024)
				CustomPermaShow(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,117,112,112,111,114,116,32,77,111,100,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,32,32,32,32,32,65,99,116,105,118,101}), ConfigurationMenu.SupportMode, 1426521024)
				if SkillsMenu then CustomPermaShow(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,107,105,108,108,32,70,97,114,109}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,32,32,32,32,32,65,99,116,105,118,101}), SkillsMenu.SkillFarm, 1426521024) end

				self:SaveConfig()
			end

			function _MenuManager:OnWndMsg(msg, key)
				if msg == WM_RBUTTONDOWN then
					local _Menu = self:GetActiveMenu()
					if _Menu and _Menu.Toggle and ConfigurationMenu.ToggleRightClickDisable then
						self:DisableAllModes()
					end
				end
			end

			function _MenuManager:SaveConfig()

				

				if AdvancedMenu.FarmOffsetType == 2 then
					FarmOffset = AdvancedMenu. FarmOffsetAmount * -1
				elseif AdvancedMenu.FarmOffsetType == 3 then
					FarmOffset = AdvancedMenu.FarmOffsetAmount
				else
					FarmOffset = 0
				end
				self:SaveChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,97,114,109,79,102,102,115,101,116,65,109,111,117,110,116}), FarmOffset)
				self:SaveChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,97,114,109,79,102,102,115,101,116,84,121,112,101}), AdvancedMenu.FarmOffsetType)

				

				if AdvancedMenu.WindUpType == 2 then
					WindOffset = AdvancedMenu.WindUpAmount * -1
				elseif AdvancedMenu.WindUpType == 3 then
					WindOffset = AdvancedMenu.WindUpAmount
				else
					WindOffset = 0
				end
				self:SaveChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,105,110,100,85,112,65,109,111,117,110,116}), WindOffset)
				self:SaveChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,105,110,100,85,112,84,121,112,101}), AdvancedMenu.WindUpType)

				self:SaveChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,117,116,99,104,101,114}), MasteryMenu.Butcher)
				self:SaveChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,114,99,97,110,101,66,108,97,100,101}), MasteryMenu.ArcaneBlade)
				self:SaveChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,97,118,111,99}), MasteryMenu.Havoc)
				self:SaveChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,111,117,98,108,101,69,100,103,101,100,83,119,111,114,100}), MasteryMenu.DoubleEdgedSword)
				self:SaveChampData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,101,118,97,115,116,97,116,105,110,103,83,116,114,105,107,101,115}), MasteryMenu.DevastatingStrikes)
			end

			function _MenuManager:SaveChampData(param, data)
				local Save = GetSave(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121}))[param]
				if not Save then
					GetSave(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121}))[param] = {}
				end
				GetSave(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121}))[param][myHero.charName] = data
			end

			function _MenuManager:LoadChampData(param)
				if not self.LoadedData[param] then
					self.LoadedData[param] = GetSave(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121}))[param] and GetSave(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121}))[param][myHero.charName]
				end

				return self.LoadedData[param]
			end

			function _MenuManager:SetToggles(ac, mm, lh, lc)
				AutoCarryMenu.Active, self.AutoCarry = ac, ac
				MixedModeMenu.Active, self.MixedMode = mm, mm
				LastHitMenu.Active, self.LastHit = lh, lh
				LaneClearMenu.Active, self.LaneClear = lc, lc
			end

			function _MenuManager:DisableAllModes()
				AutoCarryMenu.Active = false
				MixedModeMenu.Active = false
				LastHitMenu.Active = false
				LaneClearMenu.Active = false
			end

			function _MenuManager:GetActiveMenu()
				if AutoCarryMenu.Active then
					return AutoCarryMenu
				elseif MixedModeMenu.Active then
					return MixedModeMenu
				elseif LastHitMenu.Active then
					return LastHitMenu
				elseif LaneClearMenu.Active then
					return LaneClearMenu
				end
			end

			--[[
			_Plugins Class
			]]

			class '_Plugins' Plugins = nil

			function _Plugins:__init()
				self.Plugins = {}
				self.RegisteredBonusLastHitDamage = {}
				self.RegisteredPreAttack = {}
				Plugins = self
			end

			function _Plugins:RegisterPlugin(plugin, name)
				if plugin.OnTick then
					AddTickCallback(function() plugin:OnTick() end)
				end
				if plugin.OnDraw then
					AddDrawCallback(function() plugin:OnDraw() end)
				end
				if plugin.OnCreateObj then
					AddCreateObjCallback(function(obj) plugin:OnCreateObj(obj) end)
				end
				if plugin.OnDeleteObj then
					AddDeleteObjCallback(function(obj) plugin:OnDeleteObj(obj) end)
				end
				if plugin.OnLoad then
					plugin:OnLoad()
				end
				if plugin.OnUnload then
					AddUnloadCallback(function() plugin.OnUnload() end)
				end
				if plugin.OnWndMsg then
					AddMsgCallback(function(msg, key) plugin:OnWndMsg(msg, key) end)
				end
				if plugin.OnProcessSpell then
					AddProcessSpellCallback(function(unit, spell) plugin:OnProcessSpell(unit, spell) end)
				end
				if plugin.OnSendChat then
					AddChatCallback(function(text) plugin:OnSendChat(text) end)
				end
				if plugin.OnBugsplat then
					AddBugsplatCallback(function() plugin:OnBugsplat() end)
				end
				if plugin.OnAnimation then
					AddAnimationCallback(function(unit, anim) plugin:OnAnimation(unit, anim) end)
				end
				if plugin.OnSendPacket then
					AddSendPacketCallback(function(packet) plugin:OnSendPacket(packet) end)
				end
				if plugin.OnRecvPacket then
					AddRecvPacketCallback(function(packet) plugin:OnRecvPacket(packet) end)
				end
				if name then
					self.Plugins[name] = scriptConfig(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,32,80,108,117,103,105,110,58,32})..name, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,97,117,116,111,99,97,114,114,121,112,108,117,103,105,110})..name)
					return self.Plugins[name]
				end
			end

			function _Plugins:RegisterBonusLastHitDamage(func)
				table.insert(self.RegisteredBonusLastHitDamage, func)
			end

			function _Plugins:RegisterPreAttack(func)
				table.insert(self.RegisteredPreAttack, func)
			end

			function _Plugins:RegisterOnAttacked(func)
				RegisterOnAttacked(func)
			end

			function _Plugins:GetProdiction(Key, Range, Speed, Delay, Width, Source, Callback)
				--return ProdictManager.GetInstance():AddProdictionObject(Key, Range, Speed * 1000, Delay / 1000, Width, myHero, Callback)
				return {}
			end

			--[[
			Drawing Class
			]]

			class '_Drawing'

			function _Drawing:__init()
				self.EnemyRoles = {}

				for _, Enemy in pairs(GetEnemyHeroes()) do
					local _role = Data:GetChampionRole(Enemy.charName)
					if _role then
						self.EnemyRoles[Enemy.charName] = _role
					end
				end

				AddDrawCallback(function() self:_OnDraw() end)
			end

			function _Drawing:_OnDraw()

				if DrawingMenu.RangeCircle then
					Helper:DrawCircleObject(myHero, MyHero.TrueRange + 55, Helper:ArgbFromMenu(DrawingMenu.RangeCircleColour))
				end

				
				
				
				

				
				
				
				

				if DrawingMenu.MeleeSticky and MeleeMenu.MeleeStickyRange > 0 and myHero.range < 300 then
					Helper:DrawCircleObject(myHero, MeleeMenu.MeleeStickyRange, Helper:ArgbFromMenu(DrawingMenu.MeleeStickyColour))
				end

				if MinionHealthMenu.MinionArrows then
					if Minions.KillableMinion then
						self:DrawWhiteMinionSprite(Minions.KillableMinion)
					elseif Minions.AlmostKillable then
						self:DrawOrangeMinionSprite(Minions.AlmostKillable)
					end
				end

				for _, Enemy in pairs(GetEnemyHeroes()) do
					if Orbwalker:CanOrbwalkTargetCustomRange(Enemy, 1000) then
						local role = self.EnemyRoles[Enemy.charName]
						if (role and EnemyRangeMenu[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,111,108,101})..role]) or EnemyRangeMenu[Enemy.charName] then
							local range = Enemy.range + Data:GetGameplayCollisionRadius(Enemy.charName) + Orbwalker:GetScalingRange(Enemy)
							if GetDistance(Enemy) <= range then
								Helper:DrawCircleObject(Enemy, range, ARGB(255, 255, 0, 0) , 4)
							else
								Helper:DrawCircleObject(Enemy, range, ARGB(255, 0, 255, 0) , 1)
							end
						end
					end
				end
			end

			function _Drawing:DrawMinionHealthSprite(Minion, Sprite)
				if ValidTarget(Minion) then
					local pos = GetUnitHPBarPos(Minion)
					if pos and pos.x and pos.y then
						Sprite:Draw(pos.x - 59, pos.y - 16, 255)
					end
				end
			end

			function _Drawing:DrawGreenMinionSprite(Minion)
				if not self.GreenSprite then
					self.GreenSprite = createSprite(SPRITE_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121,92,92,77,105,110,105,111,110,95,71,114,101,101,110,46,112,110,103}))
				end
				self:DrawMinionHealthSprite(Minion, self.GreenSprite)
			end

			function _Drawing:DrawRedMinionSprite(Minion)
				if not self.RedSprite then
					self.RedSprite = createSprite(SPRITE_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121,92,92,77,105,110,105,111,110,95,82,101,100,46,112,110,103}))
				end
				self:DrawMinionHealthSprite(Minion, self.RedSprite)
			end

			function _Drawing:DrawOrangeMinionSprite(Minion)
				if not self.OrangeSprite then
					self.OrangeSprite = createSprite(SPRITE_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121,92,92,77,105,110,105,111,110,95,79,114,97,110,103,101,46,112,110,103}))
				end
				self:DrawMinionHealthSprite(Minion, self.OrangeSprite)
			end

			function _Drawing:DrawWhiteMinionSprite(Minion)
				if not self.WhiteSprite then
					self.WhiteSprite = createSprite(SPRITE_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121,92,92,77,105,110,105,111,110,95,87,104,105,116,101,46,112,110,103}))
				end
				self:DrawMinionHealthSprite(Minion, self.WhiteSprite)
			end

			function _Drawing:DrawPinkMinionSprite(Minion)
				if not self.PinkSprite then
					self.PinkSprite = createSprite(SPRITE_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121,92,92,77,105,110,105,111,110,95,80,105,110,107,46,112,110,103}))
				end
				self:DrawMinionHealthSprite(Minion, self.PinkSprite)
			end

			function _Drawing:DrawBlackMinionSprite(Minion)
				if not self.BlackSprite then
					self.BlackSprite = createSprite(SPRITE_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121,92,92,77,105,110,105,111,110,95,66,108,97,99,107,46,112,110,103}))
				end
				self:DrawMinionHealthSprite(Minion, self.BlackSprite)
			end

			function _Drawing:DrawGreyMinionSprite(Minion)
				if not self.GreySprite then
					self.GreySprite = createSprite(SPRITE_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121,92,92,77,105,110,105,111,110,95,71,114,101,121,46,112,110,103}))
				end
				self:DrawMinionHealthSprite(Minion, self.GreySprite)
			end



			--[[
			_Data Class
			]]


			class '_Data' Data = nil

			function _Data:__init()
				self.ResetSpells = {}
				self.SpellAttacks = {}
				self.NoneAttacks = {}
				self.ChampionData = {}
				self.MinionData = {}
				self.JungleData = {}
				self.ItemData = {}
				self.Skills = {}
				self.EnemyHitBoxes = {}
				self.ImmuneEnemies = {}
				self.WardData = {}
				Data = self

				self:__GenerateNoneAttacks()
				self:__GenerateSpellAttacks()
				self:__GenerateResetSpells()
				self:_GenerateMinionData()
				self:_GenerateJungleData()
				self:_GenerateItemData()
				self:__GenerateChampionData()
				self:__GenerateSkillData()
				Data:_GenerateWardData()

				AdvancedCallback:bind(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,110,71,97,105,110,66,117,102,102}), function(Unit, Buff) self:OnGainBuff(Unit, Buff) end)
				AdvancedCallback:bind(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,110,76,111,115,101,66,117,102,102}), function(Unit, Buff) self:OnLoseBuff(Unit, Buff) end)

				if GetGameTimer() < self:GetHitBoxLastSavedTime() then
					self:GenerateHitBoxData()
				else
					self:LoadHitBoxData()
				end
			end

			function _Data:OnGainBuff(Unit, Buff)
				if Unit.team ~= myHero.team and (Buff.name == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({85,110,100,121,105,110,103,82,97,103,101}) or Buff.name == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,117,100,105,99,97,116,111,114,73,110,116,101,114,118,101,110,116,105,111,110})) then
					self.ImmuneEnemies[Unit.charName] = true
				end
			end

			function _Data:OnLoseBuff(Unit, Buff)
				if Unit.team ~= myHero.team and (Buff.name == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({85,110,100,121,105,110,103,82,97,103,101}) or Buff.name == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,117,100,105,99,97,116,111,114,73,110,116,101,114,118,101,110,116,105,111,110})) then
					self.ImmuneEnemies[Unit.charName] = nil
				end
			end

			function _Data:__GenerateResetSpells()
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({80,111,119,101,114,102,105,115,116}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,97,114,105,117,115,78,111,120,105,97,110,84,97,99,116,105,99,115,79,78,72}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,97,107,101,100,111,119,110}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,105,99,111,99,104,101,116}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,108,105,110,100,105,110,103,68,97,114,116}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,97,121,110,101,84,117,109,98,108,101}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,120,69,109,112,111,119,101,114,84,119,111}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,114,100,101,107,97,105,115,101,114,77,97,99,101,79,102,83,112,97,100,101,115}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,112,104,111,110,105,110,103,83,116,114,105,107,101,78,101,119}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,110,103,97,114,81}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,110,107,101,121,75,105,110,103,68,111,117,98,108,101,65,116,116,97,99,107}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,111,114,105,99,107,83,112,101,99,116,114,97,108}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,105,69}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,97,114,101,110,83,108,97,115,104,51}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,101,99,97,114,105,109,82,97,109,112}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({88,101,110,90,104,97,111,67,111,109,98,111,84,97,114,103,101,116}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,111,110,97,83,104,105,101,108,100,79,102,68,97,121,98,114,101,97,107}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,104,121,118,97,110,97,68,111,117,98,108,101,65,116,116,97,99,107}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,104,121,118,97,110,97,100,111,117,98,108,101,97,116,116,97,99,107,100,114,97,103,111,110}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,97,108,111,110,78,111,120,105,97,110,68,105,112,108,111,109,97,99,121}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,114,117,110,100,108,101,84,114,111,108,108,83,109,97,115,104}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,111,108,105,98,101,97,114,81}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({80,111,112,112,121,68,101,118,97,115,116,97,116,105,110,103,66,108,111,119}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,118,105,114,87}))
				self:AddResetSpell(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,105,99,111,99,104,101,116}))
			end

			function _Data:__GenerateSpellAttacks()
				self:AddSpellAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({102,114,111,115,116,97,114,114,111,119}))
				self:AddSpellAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,97,105,116,108,121,110,72,101,97,100,115,104,111,116,77,105,115,115,105,108,101}))
				self:AddSpellAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,117,105,110,110,87,69,110,104,97,110,99,101,100}))
				self:AddSpellAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,114,117,110,100,108,101,81}))
				self:AddSpellAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({88,101,110,90,104,97,111,84,104,114,117,115,116}))
				self:AddSpellAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({88,101,110,90,104,97,111,84,104,114,117,115,116,50}))
				self:AddSpellAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({88,101,110,90,104,97,111,84,104,114,117,115,116,51}))
				self:AddSpellAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,97,114,101,110,83,108,97,115,104,50}))
				self:AddSpellAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,110,101,107,116,111,110,69,120,101,99,117,116,101}))
				self:AddSpellAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,110,101,107,116,111,110,83,117,112,101,114,69,120,101,99,117,116,101}))
				self:AddSpellAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,101,110,110,101,110,77,101,103,97,80,114,111,99}))
				self:AddSpellAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({114,101,100,99,97,114,100,112,114,101,97,116,116,97,99,107}))
				self:AddSpellAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({98,108,117,101,99,97,114,100,112,114,101,97,116,116,97,99,107}))
				self:AddSpellAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({103,111,108,100,99,97,114,100,112,114,101,97,116,116,97,99,107}))
				self:AddSpellAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,115,116,101,114,89,105,68,111,117,98,108,101,83,116,114,105,107,101}))
			end

			function _Data:__GenerateNoneAttacks()
				self:AddNoneAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,104,121,118,97,110,97,100,111,117,98,108,101,97,116,116,97,99,107,100,114,97,103,111,110}))
				self:AddNoneAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,104,121,118,97,110,97,68,111,117,98,108,101,65,116,116,97,99,107}))
				self:AddNoneAttack(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,110,107,101,121,75,105,110,103,68,111,117,98,108,101,65,116,116,97,99,107}))
			end

			function _Data:_GenerateMinionData()
				self:AddMinionData((myHero.team == 100 and abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,108,117,101}) or abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,100}))..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({95,77,105,110,105,111,110,95,66,97,115,105,99}), 400, 0)
				self:AddMinionData((myHero.team == 100 and abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,108,117,101}) or abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,100}))..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({95,77,105,110,105,111,110,95,67,97,115,116,101,114}), 484, 0.65)
				self:AddMinionData((myHero.team == 100 and abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,108,117,101}) or abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,100}))..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({95,77,105,110,105,111,110,95,87,105,122,97,114,100}), 484, 0.65)
				self:AddMinionData((myHero.team == 100 and abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,108,117,101}) or abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,100}))..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({95,77,105,110,105,111,110,95,77,101,99,104,67,97,110,110,111,110}), 365, 1.2)
				self:AddMinionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({111,98,106,95,65,73,95,84,117,114,114,101,116}), 150, 1.2)
			end

			function _Data:_GenerateJungleData()
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,111,114,109,49,50,46,49,46,49}), 		1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,114,97,103,111,110,54,46,49,46,49}), 		1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,110,99,105,101,110,116,71,111,108,101,109,49,46,49,46,49}), 	1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,110,99,105,101,110,116,71,111,108,101,109,55,46,49,46,49}), 	1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,111,117,110,103,76,105,122,97,114,100,49,46,49,46,50}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,111,117,110,103,76,105,122,97,114,100,55,46,49,46,51}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,111,117,110,103,76,105,122,97,114,100,49,46,49,46,51}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,111,117,110,103,76,105,122,97,114,100,55,46,49,46,50}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,105,122,97,114,100,69,108,100,101,114,52,46,49,46,49}), 	1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,105,122,97,114,100,69,108,100,101,114,49,48,46,49,46,49}), 	1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,111,117,110,103,76,105,122,97,114,100,52,46,49,46,50}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,111,117,110,103,76,105,122,97,114,100,52,46,49,46,51}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,111,117,110,103,76,105,122,97,114,100,49,48,46,49,46,50}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,111,117,110,103,76,105,122,97,114,100,49,48,46,49,46,51}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,105,97,110,116,87,111,108,102,50,46,49,46,51}), 	1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,105,97,110,116,87,111,108,102,50,46,49,46,49}), 	1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,105,97,110,116,87,111,108,102,56,46,49,46,51}), 	1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,105,97,110,116,87,111,108,102,56,46,49,46,49}), 	1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({119,111,108,102,50,46,49,46,49}), 			2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({119,111,108,102,50,46,49,46,50}), 			2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({119,111,108,102,56,46,49,46,49}), 			2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({119,111,108,102,56,46,49,46,50}), 			2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,111,108,102,56,46,49,46,51}), 			2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,111,108,102,56,46,49,46,50}), 			2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,111,108,102,50,46,49,46,51}), 			2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,111,108,102,50,46,49,46,50}), 			2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,114,97,105,116,104,51,46,49,46,51}), 		1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,114,97,105,116,104,51,46,49,46,49}), 		1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,114,97,105,116,104,57,46,49,46,51}), 		1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,114,97,105,116,104,57,46,49,46,49}), 		1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,115,115,101,114,87,114,97,105,116,104,51,46,49,46,49}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,115,115,101,114,87,114,97,105,116,104,51,46,49,46,51}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,115,115,101,114,87,114,97,105,116,104,51,46,49,46,50}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,115,115,101,114,87,114,97,105,116,104,51,46,49,46,52}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,115,115,101,114,87,114,97,105,116,104,57,46,49,46,49}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,115,115,101,114,87,114,97,105,116,104,57,46,49,46,50}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,115,115,101,114,87,114,97,105,116,104,57,46,49,46,52}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,115,115,101,114,87,114,97,105,116,104,57,46,49,46,51}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,111,108,101,109,53,46,49,46,50}), 		1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,111,108,101,109,49,49,46,49,46,50}), 		1)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,109,97,108,108,71,111,108,101,109,53,46,49,46,49}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,109,97,108,108,71,111,108,101,109,49,49,46,49,46,49}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,114,101,97,116,87,114,97,105,116,104,49,51,46,49,46,49}), 	2)		
				self:AddJungleMonster(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,114,101,97,116,87,114,97,105,116,104,49,52,46,49,46,49}), 	2)		
			end

			function _Data:_GenerateItemData()
				self:AddItemData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,108,97,100,101,32,111,102,32,116,104,101,32,82,117,105,110,101,100,32,75,105,110,103}), 	3153, true, 500)
				self:AddItemData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,105,108,103,101,119,97,116,101,114,32,67,117,116,108,97,115,115}), 			3144, true, 500)
				self:AddItemData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,101,97,116,104,102,105,114,101,32,71,114,97,115,112}), 			3128, true, 750)
				self:AddItemData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,101,120,116,101,99,104,32,71,117,110,98,108,97,100,101}), 			3146, true, 400)
				self:AddItemData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,108,97,99,107,102,105,114,101,32,84,111,114,99,104}), 			3188, true, 750)
				self:AddItemData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,114,111,115,116,32,81,117,101,101,110,115,32,67,108,97,105,109}), 			3098, true, 750)
				self:AddItemData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,97,108,105,115,109,97,110,32,111,102,32,65,115,99,101,110,115,105,111,110}), 		3098, false)
				self:AddItemData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,97,118,101,110,111,117,115,32,72,121,100,114,97}), 				3074, false)
				self:AddItemData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,119,111,114,100,32,111,102,32,116,104,101,32,68,105,118,105,110,101}), 		3131, false)
				self:AddItemData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,105,97,109,97,116}), 						3077, false)
				self:AddItemData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,110,116,114,111,112,121}), 					3184, false)
				self:AddItemData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,111,117,109,117,117,39,115,32,71,104,111,115,116,98,108,97,100,101}), 		3142, false)
				self:AddItemData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,117,114,97,109,97,110,97}), 					3042, false)
				self:AddItemData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,97,110,100,117,105,110,115,32,79,109,101,110}), 				3143, false)
			end
			OBJECT_TYPE_WARD = 0
			OBJECT_TYPE_BOX = 1
			OBJECT_TYPE_TRAP = 2
			function _Data:_GenerateWardData()
				
				self:AddWardData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,105,115,105,111,110,87,97,114,100}),		abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,105,115,105,111,110,87,97,114,100}), 		abCCxtSBsvLAyZHgPYQFALZxtzRlPR({118,105,115,105,111,110,119,97,114,100}), 		OBJECT_TYPE_WARD, 	 1450,		180000)
				self:AddWardData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,103,104,116,87,97,114,100}),		abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,103,104,116,87,97,114,100}), 		abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,103,104,116,119,97,114,100}), 		OBJECT_TYPE_WARD, 	 1450,		180000)
				self:AddWardData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,101,108,108,111,119,84,114,105,110,107,101,116}),	abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,103,104,116,87,97,114,100}), 		abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,103,104,116,119,97,114,100}), 		OBJECT_TYPE_WARD, 	 1450,		180000)
				self:AddWardData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,103,104,116,87,97,114,100}),		abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,105,115,105,111,110,87,97,114,100}), 		abCCxtSBsvLAyZHgPYQFALZxtzRlPR({105,116,101,109,103,104,111,115,116,119,97,114,100}), 	OBJECT_TYPE_WARD, 	 1450,		180000)
				self:AddWardData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,103,104,116,87,97,114,100}),		abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,105,115,105,111,110,87,97,114,100}), 		abCCxtSBsvLAyZHgPYQFALZxtzRlPR({105,116,101,109,109,105,110,105,119,97,114,100}), 	OBJECT_TYPE_WARD, 	 1450,		60000)
				self:AddWardData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,103,104,116,87,97,114,100}),		abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,103,104,116,87,97,114,100}), 		abCCxtSBsvLAyZHgPYQFALZxtzRlPR({119,114,105,103,103,108,101,108,97,110,116,101,114,110}), 	OBJECT_TYPE_WARD, 	 1450,		180000)
				self:AddWardData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,104,97,99,111,66,111,120}),		abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,99,107,32,73,110,32,84,104,101,32,66,111,120}), 	abCCxtSBsvLAyZHgPYQFALZxtzRlPR({106,97,99,107,105,110,116,104,101,98,111,120}), 	OBJECT_TYPE_BOX, 	 300,		60000)
			end

			ROLE_AD_CARRY = 1
			ROLE_AP = 2
			ROLE_SUPPORT = 3
			ROLE_BRUISER = 4
			ROLE_TANK = 5

			function _Data:__GenerateChampionData()
				
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,97,116,114,111,120}),			0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,104,114,105}),            1.6,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,107,97,108,105}),           0,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,108,105,115,116,97,114}),         0,   				80,						0,      		ROLE_SUPPORT)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,109,117,109,117}),           0,   				55,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,110,105,118,105,97}),          1.4,	   			65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,110,110,105,101}),           1,   				55,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,115,104,101}),            2,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,108,105,116,122,99,114,97,110,107}),      0,   				80,						0,      		ROLE_SUPPORT)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,114,97,110,100}),           1.975,  			65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,97,105,116,108,121,110}),         2.5,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,97,115,115,105,111,112,101,105,97}),      1.22,   			65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,104,111,103,97,116,104}),         0,   				80,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,111,114,107,105}),           2,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,97,114,105,117,115}),			0,					80,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,105,97,110,97}),           0,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,114,77,117,110,100,111}),         0,   				80,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,114,97,118,101,110}),          1.4,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,108,105,115,101}),			0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,118,101,108,121,110,110}),         0,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,122,114,101,97,108}),          2,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,105,100,100,108,101,83,116,105,99,107,115}),    1.75,   			65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,105,111,114,97}),			0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,105,122,122}),            0,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,97,108,105,111}),           0,   				80,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,97,110,103,112,108,97,110,107}),		0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,97,114,101,110}),			0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,114,97,103,97,115}),          0,   				80,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,114,97,118,101,115}),          3,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,101,99,97,114,105,109}),         0,   				80,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,101,105,109,101,114,100,105,110,103,101,114}),    1.4,   				55,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({73,114,101,108,105,97}),			0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,110,110,97}),           1.2,   				65,						0,      		ROLE_SUPPORT)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,114,118,97,110,73,86}),		0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,120}),				0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,121,99,101}),           2.2,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,105,110,120}),           	2,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,114,109,97}),           1.2,   				65,						0,      		ROLE_SUPPORT)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,114,116,104,117,115}),         1.25,   			65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,115,115,97,100,105,110}),        0,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,116,97,114,105,110,97}),        0,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,121,108,101}),           1.8,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,101,110,110,101,110}),          1.35,   			55,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,104,97,122,105,120}),			0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,111,103,77,97,119}),          1.8,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,98,108,97,110,99}),         1.7,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,101,83,105,110}),			0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,111,110,97}),           0,   				65,						0,      		ROLE_SUPPORT)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,105,115,115,97,110,100,114,97}),       0,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,117,99,105,97,110}),          2,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,117,108,117}),            2.5,   				65,						0,      		ROLE_SUPPORT)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,117,120}),            	1.55,   			65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,108,112,104,105,116,101}),        0,   				80,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,108,122,97,104,97,114}),        1.5,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,111,107,97,105}),          0,   				80,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,115,116,101,114,89,105}),        0,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,115,115,70,111,114,116,117,110,101}),     2,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,110,107,101,121,75,105,110,103}),		0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,114,100,101,107,97,105,115,101,114}),     0,   				80,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,114,103,97,110,97}),         1.6,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,97,109,105}),            0,   				65,						0,      		ROLE_SUPPORT)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,97,115,117,115}),           0,   				80,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,97,117,116,105,108,117,115}),		0,					80,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,105,100,97,108,101,101}),         1.7,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,111,99,116,117,114,110,101}),		0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,117,110,117}),            0,   				65,						0,      		ROLE_SUPPORT)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,108,97,102}),			0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,114,105,97,110,110,97}),         1.4,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({80,97,110,116,104,101,111,110}),        0,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({80,111,112,112,121}),			0,					55,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,117,105,110,110}),           1.85,   			65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,97,109,109,117,115}),          0,   				65,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,110,101,107,116,111,110}),		0,					80,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,110,103,97,114}),			0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,105,118,101,110}),			0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,117,109,98,108,101}),          0,   				80,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,121,122,101}),            2.4,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,101,106,117,97,110,105}),         0,   				80,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,104,97,99,111}),           0,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,104,101,110}),            0,   				65,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,104,121,118,97,110,97}),			0,					50,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,110,103,101,100}),          0,   				65,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,111,110}),            0,   				80,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,118,105,114}),           1.4,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,107,97,114,110,101,114}),         0,   				80,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,111,110,97}),            1.6,   				65,						0,      		ROLE_SUPPORT)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,111,114,97,107,97}),          1,   				65,						0,      		ROLE_SUPPORT)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,119,97,105,110}),           1.6,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,121,110,100,114,97}),          1.2,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,97,108,111,110}),           0,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,97,114,105,99}),           0,   				65,						0,      		ROLE_SUPPORT)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,101,101,109,111}),           1.3,   				55,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,104,114,101,115,104}),          0,   				55,						0,      		ROLE_SUPPORT)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,114,105,115,116,97,110,97}),        2.25,   			55,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,114,117,110,100,108,101}),			0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,114,121,110,100,97,109,101,114,101}),		0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,119,105,115,116,101,100,70,97,116,101}),     1.5,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,119,105,116,99,104}),          2.5,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({85,100,121,114}),			0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({85,114,103,111,116}),           1.3,   				80,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,97,114,117,115}),           2,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,97,121,110,101}),           2,   				65,						0,     			ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,101,105,103,97,114}),          1.05,   			55,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,101,108,107,111,122}),			1.8,				55,						0,				ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,105}),				0,					50,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,105,107,116,111,114}),          2.25,   			65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,108,97,100,105,109,105,114}),        1.4,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,111,108,105,98,101,97,114}),        0,   				80,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,97,114,119,105,99,107}),         0,   				65,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({88,101,114,97,116,104}),          1.2,   				65,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({88,105,110,90,104,97,111}),			0,					65,						0,				ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,97,115,117,111}),          	0,   				65,						0,      		ROLE_BRUISER)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,111,114,105,99,107}),          0,   				80,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({90,97,99}),             0,   				65,						0,      		ROLE_TANK)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({90,101,100}),             0,   				65,						0,      		ROLE_AD_CARRY)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({90,105,103,103,115}),           1.5,   				55,						0,      		ROLE_AP)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({90,105,108,101,97,110}),          1.25,   			65,						0,      		ROLE_SUPPORT)
				self:AddChampionData(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({90,121,114,97}),            1.7,   				65,						0,      		ROLE_AP)
			end

			function _Data:__GenerateSkillData()

				rebornskillslist = {
					
				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,97,116,114,111,120}),			true, _E,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,66,108,97,100,101,115,32,111,102,32,84,111,114,109,101,110,116,41}),			SPELL_LINEAR,		0, false, false,   1.1,  500, 100, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,104,114,105}),			true, _Q,	880, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,79,114,98,32,111,102,32,68,101,99,101,112,116,105,111,110,41}),			SPELL_LINEAR,		0, false, false,   1.1,  500, 100, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,104,114,105}),			true, _W,	750, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,70,111,120,45,70,105,114,101,41}),					SPELL_SELF,			0, false, false,   1.4,  500,   0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,104,114,105}),			true, _E,	975, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,67,104,97,114,109,41}),						SPELL_LINEAR_COL,	0, false, false,   1.2,  500,  60, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,107,97,108,105}),			true, _Q,	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,77,97,114,107,32,111,102,32,116,104,101,32,65,115,115,97,115,115,105,110,41}),		SPELL_TARGETED,		0, false, false,   1.1,  650,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,107,97,108,105}),			true, _E,	325, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,67,114,101,115,99,101,110,116,32,83,108,97,115,104,41}),				SPELL_SELF,			0, false, false,     0,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,107,97,108,105}),			true, _R,	800, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,83,104,97,100,111,119,32,68,97,110,99,101,41}),				SPELL_TARGETED,		0, false, false,   2.2,  0  ,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,108,105,115,116,97,114}), 		true, _Q,	365, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,80,117,108,118,101,114,105,122,101,41}),					SPELL_SELF,			0, false, false,  0.02,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,108,105,115,116,97,114}), 		true, _W,	650, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,72,101,97,100,98,117,116,116,41}),					SPELL_TARGETED,		0, false, false,  0   ,  550,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,108,105,115,116,97,114}), 		true, _R,	  0, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,85,110,98,114,101,97,107,97,98,108,101,32,87,105,108,108,41}),			SPELL_SELF,			0, false, true, 0.8285,  500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,109,117,109,117}),			true, _Q,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,66,97,110,100,97,103,101,32,84,111,115,115,41}),				SPELL_LINEAR_COL,	0, false, false,   0.2,  500,  80, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,109,117,109,117}),			true, _E,	350, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,84,97,110,116,114,117,109,41}),						SPELL_SELF,			0, false, false,     0,  500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,110,105,118,105,97}),			true, _E,	650, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,70,114,111,115,116,98,105,116,101,41}),					SPELL_TARGETED,		0, false, false,   1.2,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,110,105,118,105,97}),			true, _R,	625, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,71,108,97,99,105,97,108,32,83,116,111,114,109,41}),				SPELL_CIRCLE,		0, false, false,  0.02,  330, 150, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,110,110,105,101}),			true, _Q,	625, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,68,105,115,105,110,116,101,103,114,97,116,101,41}),				SPELL_TARGETED,		0, false, false,   1.4,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,110,110,105,101}),			true, _W,	625, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,73,110,99,105,110,101,114,97,116,101,41}),					SPELL_CONE,			0, false, false,     0,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,110,110,105,101}),			true, _R,	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,83,117,109,109,111,110,58,32,84,105,98,98,101,114,115,41}),				SPELL_CIRCLE,		0, false, false,     0,  500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,115,104,101}),			true, _W,	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,86,111,108,108,101,121,41}),						SPELL_LINEAR_COL,	0, false, false, 0.902,  500,  80, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,115,104,101}),			true, _R, 25000, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,69,110,99,104,97,110,116,101,100,32,67,114,121,115,116,97,108,32,65,114,114,111,119,41}),		SPELL_LINEAR,		0, false, false,   1.6,  500, 130, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,108,105,116,122,99,114,97,110,107}),		true, _Q,	925, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,82,111,99,107,101,116,32,71,114,97,98,41}),					SPELL_LINEAR_COL,	0, false, false,   1.8,  500,  70, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,108,105,116,122,99,114,97,110,107}),		true, _R,	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,83,116,97,116,105,99,32,70,105,101,108,100,41}),				SPELL_SELF,			0, false, false,   1.5,  500, 200, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,114,97,110,100}),			true, _Q,	900, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,83,101,97,114,41}),						SPELL_LINEAR_COL,	0, false, false,   1.2,  500,  80, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,114,97,110,100}),			true, _W,	200, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,80,105,108,108,97,114,32,111,102,32,70,108,97,109,101,41}),				SPELL_CIRCLE,		0, false, false,  0.02,  500,   0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,114,97,110,100}),			true, _E,	625, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,67,111,110,102,108,97,103,114,97,116,105,111,110,41}),				SPELL_TARGETED,		0, false, false,   1.4,  500,   0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,114,97,110,100}),			true, _R,	750, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,80,121,114,111,99,108,97,115,109,41}),					SPELL_TARGETED,		0, false, false,   1.1,  500,   0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,97,105,116,108,121,110}),			true, _Q,  1300, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,80,105,108,116,111,118,101,114,32,80,101,97,99,101,109,97,107,101,114,41}),			SPELL_LINEAR,		0, false, false,   2.2,  500,  90, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,97,105,116,108,121,110}),			true, _E,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,57,48,32,67,97,108,105,98,101,114,32,78,101,116,41}),				SPELL_LINEAR_COL,	0, false, false,   0.2,  700,  80, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,97,105,116,108,121,110}),			true, _R,  2200, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,65,99,101,32,105,110,32,116,104,101,32,72,111,108,101,41}),				SPELL_TARGETED,		0, false, false,   1.5,  500,   0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,97,115,115,105,111,112,101,105,97}),		true, _Q,	850, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,78,111,120,105,111,117,115,32,66,108,97,115,116,41}),				SPELL_CIRCLE,		0, false, false,	 0, 500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,97,115,115,105,111,112,101,105,97}),		true, _W,	850, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,77,105,97,115,109,97,41}),						SPELL_CIRCLE,		0, false, false,   2.5, 500,   90, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,97,115,115,105,111,112,101,105,97}),		true, _E,	700, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,84,119,105,110,32,70,97,110,103,41}),					SPELL_TARGETED,		0, false, false,   1.9, 750,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,97,115,115,105,111,112,101,105,97}),		true, _R,	825, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,80,101,116,114,105,102,121,105,110,103,32,71,97,122,101,41}),				SPELL_CONE,			0, false, false,	 0, 750,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,104,111,103,97,116,104}),			true, _Q,	950, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,82,117,112,116,117,114,101,41}),						SPELL_CIRCLE,		0, false, false,	 0, 0	,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,104,111,103,97,116,104}),			true, _W,	300, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,70,101,114,97,108,32,83,99,114,101,97,109,41}),				SPELL_CONE,			0, false, false,	 0, 0	,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,104,111,103,97,116,104}),			true, _R,	150, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,70,101,97,115,116,41}),						SPELL_TARGETED,		0, false, false,   0.5, 0	,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,111,114,107,105}),			true, _Q,	825, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,80,104,111,115,112,104,111,114,117,115,32,66,111,109,98,41}),				SPELL_CIRCLE,		0, false, false,	 0,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,111,114,107,105}),			true, _W,	800, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,86,97,108,107,121,114,105,101,41}),					SPELL_LINEAR,		0, false, false,   1.2,  500,  90, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,111,114,107,105}),			true, _E,	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,71,97,116,108,105,110,103,32,71,117,110,41}),					SPELL_CONE,			0, false, false, 0.902,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,111,114,107,105}),			true, _R,  1225, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,77,105,115,115,105,108,101,32,66,97,114,114,97,103,101,41}),				SPELL_LINEAR_COL,	0, false, false,0.8285,  500,  40, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,97,114,105,117,115}),			true, _Q,	270, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,68,101,99,105,109,97,116,101,41}),					SPELL_SELF,			0, false, false,	 0,  500,  80, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,97,114,105,117,115}),			true, _W,	145, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,67,114,105,112,112,108,105,110,103,32,83,116,114,105,107,101,41}),			SPELL_SELF,			0, true,  true,		 0,  230,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,97,114,105,117,115}),			true, _E,	550, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,65,112,112,114,101,104,101,110,100,41}),					SPELL_CONE,			0, false, false,   1.5,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,97,114,105,117,115}),			true, _R,	475, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,78,111,120,105,97,110,32,71,117,105,108,108,111,116,105,110,101,41}),			SPELL_TARGETED,		0, false, false,  0.02,  500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,105,97,110,97}),			true, _Q,	830, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,67,114,101,115,99,101,110,116,32,83,116,114,105,107,101,41}),				SPELL_LINEAR,		0, false, false,   0.2,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,105,97,110,97}),			true, _W,	625, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,80,97,108,101,32,67,97,115,99,97,100,101,41}),				SPELL_SELF,			0, false, false,   1.4,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,105,97,110,97}),			true, _R,	825, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,76,117,110,97,114,32,82,117,115,104,41}),					SPELL_TARGETED,		0, false, false,     0,  500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,114,77,117,110,100,111}),			true, _Q,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,73,110,102,101,99,116,101,100,32,67,108,101,97,118,101,114,41}),			SPELL_LINEAR_COL,	0, false, false,   1.5,  500,  75, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,114,97,118,101,110}),			true, _E,  1050, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,83,116,97,110,100,32,65,115,105,100,101,41}),					SPELL_LINEAR,		0, false, false,   1.6,  500, 130, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({68,114,97,118,101,110}),			true, _R, 20000, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,87,104,105,114,108,105,110,103,32,68,101,97,116,104,41}),				SPELL_LINEAR,		0, false, false,   0.2,  500, 160, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,108,105,115,101}),			true, _Q,	625, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,78,101,117,114,111,116,111,120,105,110,41}),					SPELL_TARGETED,		0, false, false,   2.2,  750,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,108,105,115,101}),			true, _W,	950, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,86,111,108,97,116,105,108,101,32,83,112,105,100,101,114,108,105,110,103,41}),			SPELL_SELF,			0, false, false,     0,  750,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,108,105,115,101}),			true, _E,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,67,111,99,111,111,110,41}),						SPELL_TARGETED,		0, false, false,   1.4,  500,  70, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,108,105,115,101,83,112,105,100,101,114}),		true, _Q,	475, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,86,101,110,111,109,111,117,115,32,66,105,116,101,41}),				SPELL_TARGETED,		0, false, false,  0.02, 750,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,108,105,115,101,83,112,105,100,101,114}),		true, _W,	700, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,83,107,105,116,116,101,114,105,110,103,32,70,114,101,110,122,121,41}),			SPELL_SELF,			0, false, true,		 0, 0  ,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,108,105,115,101,83,112,105,100,101,114}),		true, _E,	925, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,82,97,112,112,101,108,41}),						SPELL_TARGETED,		0, false, false,	 0, 0  ,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,118,101,108,121,110,110}),			true, _Q,	500, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,72,97,116,101,32,83,112,105,107,101,41}),					SPELL_SELF,			0, false, false,  0.02, 500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,118,101,108,121,110,110}),			true, _E,	225, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,82,97,118,97,103,101,41}),						SPELL_TARGETED,		0, false, false,   0.9, 500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,118,101,108,121,110,110}),			true, _R,	650, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,65,103,111,110,121,39,115,32,69,109,98,114,97,99,101,41}),				SPELL_LINEAR_COL,	0, false, false,   1.3, 500,   80, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,122,114,101,97,108}),			true, _Q,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,77,121,115,116,105,99,32,83,104,111,116,41}),					SPELL_LINEAR_COL,	0, false, false,   1.2, 500,   80, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,122,114,101,97,108}),			true, _W,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,69,115,115,101,110,99,101,32,70,108,117,120,41}),				SPELL_LINEAR,		0, false, false,   1.2, 500,   80, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,122,114,101,97,108}),			true, _E,	475, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,65,114,99,97,110,101,32,83,104,105,102,116,41}),				SPELL_CIRCLE,		0, false, false,     0, 500,    0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,122,114,101,97,108}),			true, _R,  2500, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,84,114,117,101,115,104,111,116,32,66,97,114,114,97,103,101,41}),			SPELL_LINEAR,		0, false, false,   0.2, 500,  160, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,105,100,100,108,101,83,116,105,99,107,115}),	true, _Q,	575, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,84,101,114,114,105,102,121,41}),						SPELL_TARGETED,		0, false, false,	 0, 500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,105,100,100,108,101,83,116,105,99,107,115}),	true, _W,	575, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,68,114,97,105,110,41}),						SPELL_TARGETED,		0, false, false,	 0, 500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,105,100,100,108,101,83,116,105,99,107,115}),	true, _E,	750, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,68,97,114,107,32,87,105,110,100,41}),					SPELL_TARGETED,		0, false, false,   1.1, 500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,105,111,114,97}),			true, _Q,	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,76,117,110,103,101,41}),						SPELL_TARGETED,		0, false, false,   2.2, 0  ,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,105,111,114,97}),			true, _E,	500, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,66,117,114,115,116,32,111,102,32,83,112,101,101,100,41}),				SPELL_SELF,			0, true,  true,		 0, 230,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,105,111,114,97}),			true, _R,	400, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,66,108,97,100,101,32,87,97,108,116,122,41}),					SPELL_TARGETED,		0, false, false,	 0, 500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,105,122,122}),			true, _Q,	550, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,85,114,99,104,105,110,32,83,116,114,105,107,101,41}),				SPELL_TARGETED,		0, false, false,	 0,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,105,122,122}),			true, _W,	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,83,101,97,115,116,111,110,101,32,84,114,105,100,101,110,116,41}),			SPELL_SELF,			0, false, true,    1.4,  500,  80, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({70,105,122,122}),			true, _R,  1300, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,67,104,117,109,32,116,104,101,32,87,97,116,101,114,115,41}),				SPELL_LINEAR,		0, false, false,   1.2,  500,  80, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,97,108,105,111}),			true, _Q,	900, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,82,101,115,111,108,117,116,101,32,83,109,105,116,101,41}),				SPELL_CIRCLE,		0, false, false,   1.3,  500, 120, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,97,108,105,111}),			true, _E,  1180, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,82,105,103,104,116,101,111,117,115,32,71,117,115,116,41}),				SPELL_LINEAR,		0, false, false,   1.2,  500, 120, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,97,110,103,112,108,97,110,107}),		true, _Q,	625, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,80,97,114,114,114,108,101,121,41}),					SPELL_TARGETED,		0, false, false,   0.2,  500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,97,114,101,110}),			true, _Q,	300, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,68,101,99,105,115,105,118,101,32,83,116,114,105,107,101,41}),				SPELL_SELF,			0, false, true,		 0,  230,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,97,114,101,110}),			true, _E,	165, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,74,117,100,103,109,101,110,116,41}),					SPELL_SELF,			0, false, false,   0.7,  0	, 160, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,97,114,101,110}),			true, _R,   400, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,68,101,109,97,99,105,97,110,32,74,117,115,116,105,99,101,41}),			SPELL_TARGETED,		0, false, false,   0.9,  130, 120, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,114,97,103,97,115}),			true, _Q,	850, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,66,97,114,114,101,108,32,82,111,108,108,41}),					SPELL_CIRCLE,		0, false, false,   1.1,  500, 110, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,114,97,103,97,115}),			true, _E,	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,66,111,100,121,32,83,108,97,109,41}),					SPELL_LINEAR_COL,	0, false, false,  0.02,  500,  50, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,114,97,103,97,115}),			true, _R,  1050, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,69,120,112,108,111,115,105,118,101,32,67,97,115,107,41}),				SPELL_CIRCLE,		0, false, false, 0.020,  500, 120, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,114,97,118,101,115}),			true, _Q,	700, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,66,117,99,107,115,104,111,116,41}),					SPELL_CONE,			0, false, false, 0.902,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,114,97,118,101,115}),			true, _W,	900, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,83,109,111,107,101,32,83,99,114,101,101,110,41}),				SPELL_CIRCLE,		0, false, false,  1.65,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({71,114,97,118,101,115}),			true, _R,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,67,111,108,108,97,116,101,114,97,108,32,68,97,109,97,103,101,41}),			SPELL_LINEAR_COL,	0, false, false,   1.2,  500, 100, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,101,99,97,114,105,109}),			true, _Q,	350, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,82,97,109,112,97,103,101,41}),						SPELL_SELF,			0, false, false,  1.45,   300,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,101,99,97,114,105,109}),			true, _W,	575, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,83,112,105,114,105,116,32,111,102,32,68,114,101,97,100,41}),				SPELL_SELF,			0, false, false,0.8285,  430,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,101,105,109,101,114,100,105,110,103,101,114}),	true, _W,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,72,101,120,116,101,99,104,32,77,105,99,114,111,45,82,111,99,107,101,116,115,41}),		SPELL_LINEAR_COL,	0, false, false, 0.902,  500,  20, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({72,101,105,109,101,114,100,105,110,103,101,114}),	true, _E,	925, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,67,72,45,50,32,69,108,101,99,116,114,111,110,32,83,116,111,114,109,32,71,114,101,110,97,100,101,41}),	SPELL_CIRCLE,		0, false, false,   2.5,  500, 120, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({73,114,101,108,105,97}),			true, _Q,	650, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,66,108,97,100,101,115,117,114,103,101,41}),					SPELL_TARGETED,		0, false, false,   2.2,   0	,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({73,114,101,108,105,97}),			true, _W,	 20, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,72,105,116,101,110,32,83,116,121,108,101,41}),					SPELL_SELF,			0, false, true,0.34779,  230,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({73,114,101,108,105,97}),			true, _E,	425, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,69,113,117,105,108,105,98,114,105,117,109,32,83,116,114,105,107,101,41}),			SPELL_TARGETED,		0, false, false,  0.02,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({73,114,101,108,105,97}),			true, _R,  1200, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,84,114,97,110,115,99,101,110,100,101,110,116,32,66,108,97,100,101,115,41}),			SPELL_LINEAR,		0, false, false,0.7799,  500,  70, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,110,110,97}),			true, _Q,  1700, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,72,111,119,108,105,110,103,32,71,97,108,101,41}),				SPELL_LINEAR,		0, false, false,	 0,   0	,  20, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,110,110,97}),			true, _W,	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,90,101,112,104,121,114,41}),						SPELL_TARGETED,		0, false, false,   1.6,  500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,114,118,97,110}),			true, _Q,	770, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,68,114,97,103,111,110,32,83,116,114,105,107,101,41}),				SPELL_LINEAR,		0, false, false,  0.02,  500,  70, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,114,118,97,110}),			true, _W,	525, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,71,111,108,100,101,110,32,65,101,103,105,115,41}),				SPELL_SELF,			0, false, false,   1.5,  750,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,114,118,97,110}),			true, _E,	830, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,68,101,109,97,99,105,97,110,32,83,116,97,110,100,97,114,100,41}),			SPELL_CIRCLE,		0, false, false,  1.45,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,114,118,97,110}),			true, _R,   650, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,67,97,116,97,99,108,121,115,109,41}),					SPELL_TARGETED,		0, false, false,	 0,  500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,120}),				true, _Q,	700, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,76,101,97,112,32,83,116,114,105,107,101,41}),					SPELL_TARGETED,		0, false, false,	 0,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,97,120}),				true, _W,	300, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,69,109,112,111,119,101,114,41}),						SPELL_SELF,			0, false, true,		 0,  233,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,105,110,120}),			true, _W,  1500, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,90,97,112,33,41}),						SPELL_LINEAR_COL,	0, false, false,   3.3,  625,  60, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({74,105,110,120}),			true, _R, 25000, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,83,117,112,101,114,32,77,101,103,97,32,68,101,97,116,104,32,82,111,99,107,101,116,33,41}),	SPELL_LINEAR,		0, false, false,   1.2,  500, 120, false, false}, 

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,114,109,97}),			true, _Q,	950, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,73,110,110,101,114,32,70,108,97,109,101,41}),					SPELL_LINEAR_COL,	0, false, false, 0.902,  500,  90, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,114,109,97}),			true, _Q,	950, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,83,111,117,108,102,108,97,114,101,41}),					SPELL_LINEAR_COL,	0, false, false, 0.902,  500,  90, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,114,109,97}),			true, _W,	675, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,70,111,99,117,115,101,100,32,82,101,115,111,108,118,101,41}),				SPELL_TARGETED,		0, false, false,   2.2,  500,  60, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,114,109,97}),			true, _W,	675, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,82,101,110,101,119,97,108,41}),						SPELL_TARGETED,		0, false, false,   2.2,  500,  60, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,114,116,104,117,115}),			true, _Q,	875, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,76,97,121,119,97,115,116,41}),						SPELL_CIRCLE,		0, false, false,  0.02,  500,   0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,115,115,97,100,105,110}),		true, _Q,	650, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,78,117,108,108,32,83,112,104,101,114,101,41}),					SPELL_TARGETED,		0, false, false,   1.4,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,115,115,97,100,105,110}),		true, _W,	150, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,78,101,116,104,101,114,32,66,108,97,100,101,41}),				SPELL_SELF,			0, true, true,		 0,  0  ,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,115,115,97,100,105,110}),		true, _E,	700, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,70,111,114,99,101,32,80,117,108,115,101,41}),					SPELL_CONE,			0, false, false,     0,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,115,115,97,100,105,110}),		true, _R,	700, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,32,40,78,101,116,104,101,114,32,66,108,97,100,101,41}),				SPELL_CIRCLE,		0, false, false,	 0,  500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,116,97,114,105,110,97}),		true, _Q,	675, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,66,111,117,110,99,105,110,103,32,66,108,97,100,101,115,41}),				SPELL_TARGETED,		0, false, false,   1.8,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,116,97,114,105,110,97}),		true, _W,	375, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,83,105,110,105,115,116,101,114,32,83,116,101,101,108,41}),				SPELL_SELF,			0, false, false,   1.8,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,116,97,114,105,110,97}),		true, _E,	700, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,83,104,117,110,112,111,41}),						SPELL_TARGETED,		0, false, false,     0,  500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,121,108,101}),			true, _Q,	650, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,82,101,99,107,111,110,105,110,103,41}),					SPELL_TARGETED,		0, false, false,   1.5,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,97,121,108,101}),			true, _E,	525, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,82,105,103,104,116,101,111,117,115,32,70,117,114,121,41}),				SPELL_SELF,			0, false, true, 0.7799,  500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,101,110,110,101,110}),			true, _Q,  1050, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,84,104,117,110,100,101,114,105,110,103,32,83,104,117,114,105,107,101,110,41}),			SPELL_LINEAR_COL,	0, false, false,   1.7,  700,   50,false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,101,110,110,101,110}),			true, _W,	800, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,69,108,101,99,116,114,105,99,97,108,32,83,117,114,103,101,41}),			SPELL_SELF,			0, false, false,  0.02,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,101,110,110,101,110}),			true, _E,	  0, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,76,105,103,104,116,110,105,110,103,32,82,117,115,104,41}),				SPELL_SELF,			0, false, false,  0.02,    0,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,104,97,90,105,120}),			true, _Q,	325, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,84,97,115,116,101,32,84,104,101,105,114,32,70,101,97,114,41}),			SPELL_TARGETED,		0, true, false,	  0.02,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,104,97,90,105,120}),			true, _Q,	375, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,69,118,111,108,118,101,100,32,69,110,108,97,114,103,101,100,32,67,108,97,119,115,41}),		SPELL_TARGETED,		0, true, false,	   .02,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,104,97,90,105,120}),			true, _W,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,86,111,105,100,32,83,112,105,107,101,41}),					SPELL_LINEAR_COL,	0, false, false,0.8255,  500,  60, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,104,97,90,105,120}),			true, _W,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,69,118,111,108,118,101,100,32,83,112,105,107,101,32,82,97,99,107,115,41}),			SPELL_LINEAR_COL,	0, false, false,0.8255,  500,  60, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,104,97,90,105,120}),			true, _E,	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,76,101,97,112,41}),						SPELL_CIRCLE,		0, false, false,  0.02,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,104,97,90,105,120}),			true, _E,	900, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,69,118,111,108,118,101,100,32,87,105,110,103,115,41}),				SPELL_CIRCLE,		0, false, false,  0.02,  500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,111,103,77,97,119}),			true, _Q,  1000, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,67,97,117,115,116,105,99,32,83,112,105,116,116,108,101,41}),				SPELL_TARGETED,		0, false, false,   1.2,  500,  70, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,111,103,77,97,119}),			true, _W,	  0, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,66,105,111,45,65,114,99,97,110,101,32,66,97,114,114,97,103,101,41}),			SPELL_SELF,			0, false, false, 0.007,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({75,111,103,77,97,119}),			true, _E,  1200, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,86,111,105,100,32,79,111,122,101,41}),					SPELL_LINEAR,		0, false, false,   1.2,  500, 120, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,66,108,97,110,99}),			true, _Q,	700, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,83,105,103,105,108,32,111,102,32,83,105,108,101,110,99,101,41}),			SPELL_TARGETED,		0, false, false,     2,  500,	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,66,108,97,110,99}),			true, _E,	950, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,69,116,104,101,114,101,97,108,32,67,104,97,105,110,115,41}),				SPELL_LINEAR_COL,	0, false, false,   1.6,  500,  70, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,101,83,105,110}),			true, _Q,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,83,111,110,105,99,32,87,97,118,101,41}),					SPELL_LINEAR_COL,	0, false, false,   1.8,  500,  60, false, false}, 
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,101,83,105,110}),			true, _E,	350, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,84,101,109,112,101,115,116,41}),						SPELL_SELF,			0, false, true,		 0,  500,   0, false, false}, 

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,111,110,97}),			true, _Q,	125, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,83,104,105,101,108,100,32,111,102,32,68,97,121,98,114,101,97,107,41}),			SPELL_LINEAR,		0, false, false,     0,233.3,   0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,101,111,110,97}),			true, _Q,	875, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,90,101,110,105,116,104,32,66,108,97,100,101,41}),				SPELL_LINEAR,		0, false, false,   1.2,  500,  80, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,105,115,115,97,110,100,114,97}),		true, _Q,   725, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,73,99,101,32,83,104,97,114,100,41}),					SPELL_LINEAR,		0, false, false,   2.3,  250, 100, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,105,115,115,97,110,100,114,97}), 		true, _W, 	450, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,82,105,110,103,32,111,102,32,70,114,111,115,116,41}),	 			SPELL_SELF, 		0, false, false,	 0,  0  , 	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,117,99,105,97,110}), 			true, _Q, 	550, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,80,105,101,114,99,105,110,103,32,76,105,103,104,116,41}), 				SPELL_TARGETED, 	0, false, false,19.346,  405, 250, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,117,99,105,97,110}), 			true, _W,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,65,114,100,101,110,116,32,66,108,97,122,101,41}), 				SPELL_LINEAR_COL, 	0, false, false,  1.47,  288, 250, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,117,108,117}),			true, _Q,	925, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,71,108,105,116,116,101,114,108,97,110,99,101,41}),				SPELL_LINEAR,		0, false, false,   1.4,  500,  80, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,117,120}), 			true, _Q,  1175, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,76,105,103,104,116,32,66,105,110,100,105,110,103,41}), 				SPELL_LINEAR_COL, 	0, false, false,   1.2,  500,  80, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,117,120}),				true, _W,  1075, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,80,114,105,115,109,97,116,105,99,32,66,97,114,114,105,101,114,41}),			SPELL_LINEAR,		0, false, false,   1.2,  500, 150, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,117,120}),				true, _E,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,76,117,99,101,110,116,32,83,105,110,103,117,108,97,114,105,116,121,41}),			SPELL_CIRCLE,		0, false, false,   1.3,  500,   0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,108,112,104,105,116,101}), 		true, _Q, 	625, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,83,101,105,115,109,105,99,32,83,104,97,114,100,41}), 				SPELL_TARGETED, 	0, false, false,   1.2,  500,   0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,108,112,104,105,116,101}), 		true, _W, 	125, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,66,114,117,116,97,108,32,83,116,114,105,107,101,41}),	 			SPELL_SELF, 		0, false, false,	 0,  500, 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,108,112,104,105,116,101}), 		true, _E, 	200, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,71,114,111,117,110,100,32,83,108,97,109,41}), 				SPELL_SELF, 		0, false, false,	 0,  500, 	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,108,122,97,104,97,114}),		true, _W,	800, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,78,117,108,108,32,90,111,110,101,41}),					SPELL_CIRCLE,		0, false, false,  0.02,  500,   0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,108,122,97,104,97,114}), 		true, _E, 	650, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,77,97,108,101,102,105,99,32,86,105,115,105,111,110,115,41}), 			SPELL_TARGETED, 	0, false, false,   1.4,  500,   0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,111,107,97,105}),			true, _Q,   600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,65,114,99,97,110,101,32,83,109,97,115,104,41}),				SPELL_LINEAR,		0, false, false,   1.1,  333, 110, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,111,107,97,105}), 			true, _W, 	650, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,84,119,105,115,116,101,100,32,65,100,118,97,110,99,101,41}), 			SPELL_TARGETED, 	0, false, false,     1,  500,   0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,111,107,97,105}),			true, _E,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,83,97,112,108,105,110,103,32,84,111,115,115,41}),				SPELL_CIRCLE,		0, false, false,  1.75,  250,   0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,115,116,101,114,89,105}), 		true, _E, 	125, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,87,117,106,117,32,83,116,121,108,101,41}), 					SPELL_SELF, 		0, false, true,0.34779,  230, 	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,115,115,70,111,114,116,117,110,101}), 	true, _Q, 	650, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,68,111,117,98,108,101,32,85,112,41}), 					SPELL_TARGETED, 	0, false, false,   1.4,  500,   0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,115,115,70,111,114,116,117,110,101}), 	true, _W, 	550, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,73,109,112,117,114,101,32,83,104,111,116,115,41}), 				SPELL_SELF, 		0, false, true,	   1.4,  500, 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,115,115,70,111,114,116,117,110,101}),		true, _E,	800, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,77,97,107,101,32,73,116,32,82,97,105,110,41}),				SPELL_CIRCLE,		0, false, false,   0.5,  500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,114,100,101,107,97,105,115,101,114}), 	true, _Q, 	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,77,97,99,101,32,111,102,32,83,112,97,100,101,115,41}), 				SPELL_SELF, 		0, false, false,   1.5,    0,   0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,114,100,101,107,97,105,115,101,114}), 	true, _E, 	700, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,83,105,112,104,111,110,32,111,102,32,68,101,115,116,114,117,99,116,105,111,110,41}), 		SPELL_CONE, 		0, false, false,   1.5,  500,   0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,114,103,97,110,97}), 		true, _Q,  1300, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,65,114,100,101,110,116,32,66,108,97,122,101,41}), 				SPELL_LINEAR_COL, 	0, false, false,   1.2,  500,  70, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,111,114,103,97,110,97}),			true, _W,	900, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,84,111,114,109,101,110,116,101,100,32,83,111,105,108,41}),				SPELL_CIRCLE,		0, false, false,  0.02,  500,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,97,109,105}),			true, _Q,	875, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,65,113,117,97,32,80,114,105,115,111,110,41}),					SPELL_CIRCLE,		0, false, false,  1.75,    0,	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,97,115,117,115}), 			true, _Q, 	125, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,83,105,112,104,111,110,105,110,103,32,83,116,114,105,107,101,41}), 			SPELL_SELF, 		0, false, false,	 0,  233, 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,97,115,117,115}), 			true, _W, 	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,87,105,116,104,101,114,41}), 						SPELL_TARGETED, 	0, false, false, 	 0,  500,   0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,97,115,117,115}),			true, _E,	650, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,83,112,105,114,105,116,32,70,105,114,101,41}),					SPELL_CIRCLE,		0, false, false,  0.02,  500,   0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,105,100,97,108,101,101}), 		true, _Q,  1500, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,74,97,118,101,108,105,110,32,84,111,115,115,41}), 				SPELL_LINEAR_COL, 	0, false, false,   1.3,  0  ,  60, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,111,99,116,117,114,110,101}),		true, _Q,  1200, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,68,117,115,107,98,114,105,110,103,101,114,41}),					SPELL_LINEAR,		0, false, false,   1.4,  500,  60, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,117,110,117}), 			true, _Q, 	125, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,67,111,110,115,117,109,101,41}), 					SPELL_TARGETED, 	0, false, false,   0.5,  200,   0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78,117,110,117}), 			true, _E, 	550, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,73,99,101,32,66,108,97,115,116,41}), 					SPELL_TARGETED, 	0, false, false,     1,  500,   0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,108,97,102}),			true, _Q,  1000, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,85,110,100,101,114,116,111,119,41}),					SPELL_LINEAR,		0, false, false,   1.6,  500,  90, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,108,97,102}), 			true, _W, 	125, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,86,105,99,105,111,117,115,32,83,116,114,105,107,101,115,41}), 			SPELL_SELF, 		0, false, false,	 0,  500, 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,108,97,102}), 			true, _E, 	325, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,82,101,99,107,108,101,115,115,32,83,119,105,110,103,41}), 				SPELL_TARGETED, 	0, false, false,  0.02,  500,   0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,114,105,97,110,110,97}),			true, _Q,	825, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,67,111,109,109,97,110,100,58,32,65,116,116,97,99,107,41}),				SPELL_CIRCLE,		0, false, false,   1.2,  500,  80, false, false}, 

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({80,97,110,116,104,101,111,110}), 		true, _Q, 	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,83,112,101,97,114,32,83,104,111,116,41}), 					SPELL_TARGETED, 	0, false, false,   1.5,  500,   0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({80,97,110,116,104,101,111,110}), 		true, _W, 	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,65,101,103,105,115,32,111,102,32,90,101,111,110,105,97,41}), 			SPELL_TARGETED, 	0, false, false, 	 0,  500,   0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({80,97,110,116,104,101,111,110}), 		true, _E, 	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,72,101,97,114,116,115,101,101,107,101,114,32,83,116,114,105,107,101,41}), 			SPELL_CONE, 		0, false, false,0.7799,  333, 100, false, false}, 

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,110,101,107,116,111,110}), 		true, _Q, 	225, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,67,117,108,108,32,116,104,101,32,77,101,101,107,41}), 				SPELL_SELF, 		0, false, false,	 0,  500, 	0, false, false}, 
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,110,101,107,116,111,110}), 		true, _W, 	125, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,82,117,116,104,108,101,115,115,32,80,114,101,100,97,116,111,114,41}), 			SPELL_SELF, 		0, false, false,	 0,  233, 	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,110,103,97,114}), 			true, _Q, 	125, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,83,97,118,97,103,101,114,121,41}), 					SPELL_SELF, 		0, false, false,	 0,  0  , 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,110,103,97,114}), 			true, _Q, 	125, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,69,109,112,111,119,101,114,101,100,32,83,97,118,97,103,101,114,121,41}), 			SPELL_SELF, 		0, false, false,	 0,  0  , 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,110,103,97,114}), 			true, _W, 	500, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,66,97,116,116,108,101,32,82,111,97,114,41}), 				SPELL_SELF, 		0, false, false,	 0,  500, 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,110,103,97,114}), 			true, _W, 	500, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,69,109,112,111,119,101,114,101,100,32,66,97,116,116,108,101,32,82,111,97,114,41}), 		SPELL_SELF, 		0, false, false,	 0,  500, 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,110,103,97,114}), 			true, _E,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,66,111,108,97,32,83,116,114,105,107,101,41}), 				SPELL_LINEAR_COL, 	0, false, false,   1.5,    0,  70, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,101,110,103,97,114}), 			true, _E,  1100, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,69,109,112,111,119,101,114,101,100,32,66,111,108,97,32,83,116,114,105,107,101,41}), 		SPELL_LINEAR_COL, 	0, false, false,   1.5,    0,  70, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,117,109,98,108,101}), 			true, _E,  1500, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,69,108,101,99,116,114,111,45,72,97,114,112,111,111,110,41}), 			SPELL_LINEAR_COL, 	0, false, false,   1.2,  500,  90, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,121,122,101}), 			true, _Q, 	625, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,79,118,101,114,108,111,97,100,41}), 					SPELL_TARGETED, 	0, false, false,   1.4,    0, 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,121,122,101}), 			true, _W, 	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,82,117,110,101,32,80,114,105,115,111,110,41}), 				SPELL_TARGETED, 	0, false, false,   0.5,    0, 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({82,121,122,101}), 			true, _E, 	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,83,112,101,108,108,32,70,108,117,120,41}), 					SPELL_TARGETED, 	0, false, false,     1,    0, 	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,104,121,118,97,110,97}), 		true, _Q, 	125, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,84,119,105,110,32,66,105,116,101,41}), 					SPELL_SELF, 		0, true, false,	  0.02,  500, 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,104,121,118,97,110,97}), 		true, _W, 	162, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,66,117,114,110,111,117,116,41}), 					SPELL_SELF, 		0, false, false,  0.02,  466, 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,104,121,118,97,110,97}), 		true, _E, 	925, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,70,108,97,109,101,32,66,114,101,97,116,104,41}), 				SPELL_LINEAR, 		0, false, false,   0.9,  500,  60, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,104,121,118,97,110,97}), 		true, _E, 	925, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,68,114,97,103,111,110,39,115,32,70,108,97,109,101,32,66,114,101,97,116,104,41}), 		SPELL_CONE, 		0, false, false,   1.2,  500,  60, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,111,114,97,107,97}), 			true, _Q, 	530, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,83,116,97,114,99,97,108,108,41}), 					SPELL_SELF, 		0, false, false,	 0,    0, 	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,114,117,110,100,108,101}), 		true, _Q, 	125, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,67,104,111,109,112,41}), 						SPELL_SELF, 		0, true, false, 	 0,  233, 	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,119,105,115,116,101,100,70,97,116,101}), 	true, _E, 	925, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,87,105,108,100,32,67,97,114,100,115,41}), 					SPELL_CONE, 		0, false, false,  1.45,  500,   0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,108,97,100,105,109,105,114}), 		true, _Q, 	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,84,114,97,110,115,102,117,115,105,111,110,41}), 				SPELL_TARGETED, 	0, false, false,   1.4,  500, 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,108,97,100,105,109,105,114}), 		true, _E, 	610, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,84,105,100,101,115,32,111,102,32,66,108,111,111,100,41}), 				SPELL_SELF, 		0, false, false,   1.1,  500, 120, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,117,107,111,110,103}), 			true, _Q, 	300, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,67,114,117,115,104,105,110,103,32,66,108,111,119,41}), 				SPELL_SELF, 		0, false, false,  0.02,  500, 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,117,107,111,110,103}), 			true, _E, 	625, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,78,105,109,98,117,115,32,83,116,114,105,107,101,41}), 				SPELL_TARGETED, 	0, false, false,   2.2,  0  ,   0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({88,105,110,90,104,97,111}), 		true, _Q, 	165, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,84,104,114,101,101,32,84,97,108,111,110,32,83,116,114,105,107,101,41}), 			SPELL_SELF, 		0, true, false, 	 0,  500,   0, false, false}, 
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({88,105,110,90,104,97,111}), 		true, _W, 	175, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,66,97,116,116,108,101,32,67,114,121,41}), 					SPELL_SELF, 		0, false, false,0.3477,  230, 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({88,105,110,90,104,97,111}), 		true, _E, 	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,65,117,100,97,99,105,111,117,115,32,67,104,97,114,103,101,41}), 			SPELL_TARGETED,	    0, false, false,  0.02,  500, 	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,111,114,105,99,107}), 			true, _Q, 	125, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,79,109,101,110,32,111,102,32,87,97,114,41}), 				SPELL_SELF, 		0, false, true,	  0.02,  500, 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,111,114,105,99,107}), 			true, _W, 	600, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,79,109,101,110,32,111,102,32,80,101,115,116,105,108,101,110,99,101,41}), 			SPELL_CIRCLE, 		0, false, false,  0.02,  500, 	0, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({89,111,114,105,99,107}), 			true, _E, 	550, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,79,109,101,110,32,111,102,32,70,97,109,105,110,101,41}), 				SPELL_TARGETED,	    0, false, false,  0.02,  500, 	0, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({90,97,99}),				true, _Q,	550, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,83,116,114,101,116,99,104,105,110,103,32,83,116,114,105,107,101,41}),			SPELL_LINEAR,		0, false, false,   1.2,  500,  80, false, false},
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({90,97,99}), 			true, _W, 	175, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({87,32,40,85,110,115,116,97,98,108,101,32,77,97,116,116,101,114,41}), 			SPELL_SELF, 		0, false, false, 1.288,  140,  50, false, false},

				
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({90,105,103,103,115}), 			true, _Q, 	850, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({81,32,40,66,111,117,110,99,105,110,103,32,66,111,109,98,41}), 				SPELL_TARGETED, 	0, false, false,  1.75,  250,   0, false, false}, 
				{abCCxtSBsvLAyZHgPYQFALZxtzRlPR({90,105,103,103,115}), 			true, _E, 	900, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,32,40,72,101,120,112,108,111,115,105,118,101,32,77,105,110,101,102,105,101,108,100,41}), 		SPELL_CIRCLE, 		0, false, false,  1.75,  250, 	0, false, false},
				}

				if rebornskillslist then
					for _, skill in pairs(rebornskillslist) do
						if skill[1] == myHero.charName then
							self:AddSkillData(myHero.charName, skill[2], skill[3], skill[4], skill[5], skill[6], skill[7], skill[8], skill[9], skill[10], skill[11], skill[12], skill[13], skill[14])
						end
					end
				end

				if rebornskillslist then return end
			end

			function _Data:IsMinion(Minion)
				return self:GetUnitData()[Minion.charName]
			end

			function _Data:AddResetSpell(name)
				self.ResetSpells[name] = true
			end

			function _Data:AddSpellAttack(name)
				self.SpellAttacks[name] = true
			end

			function _Data:AddNoneAttack(name)
				self.NoneAttacks[name] = true
			end

			function _Data:AddChampionData(Champion, ProjSpeed, _GameplayCollisionRadius, Delay, _Priority)
				self.ChampionData[Champion] = {Name = Champion, ProjectileSpeed = ProjSpeed, GameplayCollisionRadius = _GameplayCollisionRadius, BugDelay = Delay and Delay or 0, Priority = _Priority }
			end

			function _Data:GetChampionRole(name)
				return self.ChampionData[name] and self.ChampionData[name].Priority or nil
			end

			function _Data:AddMinionData(Name, delay, ProjSpeed)
				self.MinionData[Name] = {Delay = delay, ProjectileSpeed = ProjSpeed}
			end

			function _Data:AddJungleMonster(Name, Priority)
				self.JungleData[Name] = Priority
			end

			function _Data:GetJunglePriority(Name)
				return self.JungleData[Name]
			end

			function _Data:AddItemData(Name, ID, RequiresTarget, Range)
				self.ItemData[ID] = _Item(Name, ID, RequiresTarget, Range)
			end

			function _Data:AddWardData(_CharName, _Name, _SpellName, _Type, _Range, _Duration)
				table.insert(self.WardData, {CharName = _CharName, Name = _Name, SpellName = _SpellName, Type = _Type, Range = _Range, Duration = _Duration})
			end

			function _Data:AddSkillData(Name, Enabled, Key, Range, DisplayName, Type, MinMana, AfterAttack, ReqAttackTarget, Speed, Delay, Width, Collision, IsReset)
				if myHero.charName == Name then
					local skill = _Skill(Enabled, Key, Range, DisplayName, Type, MinMana, AfterAttack, ReqAttackTarget, Speed, Delay, Width, Collision, IsReset)
					table.insert(self.Skills, skill)
				end
			end

			function _Data:GetProjectileSpeed(name)
				if VP.projectilespeeds[name] then
					return VP.projectilespeeds[name] / 1000
				else
					return self.ChampionData[name] and self.ChampionData[name].ProjectileSpeed or nil
				end
			end

			function _Data:GetGameplayCollisionRadius(name)
				return self.ChampionData[name] and self.ChampionData[name].GameplayCollisionRadius or 65
			end

			function _Data:IsResetSpell(Spell)
				return self.ResetSpells[Spell.name]
			end

			function _Data:IsAttack(Spell)
				return (self.SpellAttacks[Spell.name] or Helper:StringContains(Spell.name, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({97,116,116,97,99,107}))) and not self.NoneAttacks[Spell.name]
			end

			function _Data:IsJungleMinion(Object)
				return Object and Object.name and self.JungleData[Object.name] ~= nil
			end

			function _Data:IsCannonMinion(Minion)
				return Minion.charName:find(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,97,110,110,111,110}))
			end

			function _Data:IsWard(Wardd)
				for _, Ward in pairs(self.WardData) do
					if Ward.Name == Wardd.name then
						return true
					end
				end
				return false
			end

			function _Data:IsWardSpell(Spell)
				for _, Ward in pairs(self.WardData) do
					if Ward.SpellName:lower() == Spell.name:lower() then
						return true
					end
				end
				return false
			end

			function _Data:GenerateHitBoxData()
				for i = 1, heroManager.iCount do
					local hero = heroManager:GetHero(i)
					self.EnemyHitBoxes[hero.charName] = Helper:GetDistance(hero.minBBox, hero.maxBBox)
				end
				GetSave(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121})).EnemyHitBoxes = {TimeSaved = GetGameTimer(), Data = self.EnemyHitBoxes}
			end

			function _Data:LoadHitBoxData()
				local HitBoxes = GetSave(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121})).EnemyHitBoxes
				if HitBoxes then
					self.EnemyHitBoxes = HitBoxes.Data
				else
					self:GenerateHitBoxData()
				end
			end

			function _Data:GetHitBoxLastSavedTime()
				local Time = GetSave(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121})).EnemyHitBoxes
				if Time then
					Time = Time.TimeSaved
				else
					Time = math.huge
				end
				return Time
			end

			function _Data:GetOriginalHitBox(Target)
				return self.EnemyHitBoxes[Target.charName]
			end

			function _Data:EnemyIsImmune(Enemy)
				if self.ImmuneEnemies[Enemy.charName] then
					if Enemy.charName == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,114,121,110,100,97,109,101,114,101}) and Enemy.health < MyHero:GetTotalAttackDamageAgainstTarget(Enemy) then
						return true
					elseif Enemy.charName ~= abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,114,121,110,100,97,109,101,114,101}) then
						return true
					end
				end
			end

			function _Data:GetChampionType(Champ)
				local _Type = self.ChampionData[Cham.charName].Priority

				if _Type == 1 then
					return abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,68,67})
				elseif _Type == 2 then
					return abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,80})
				elseif _Type == 3 then
					return abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,117,112,112,111,114,116})
				elseif _Type == 4 then
					return abCCxtSBsvLAyZHgPYQFALZxtzRlPR({66,114,117,105,115,101,114})
				elseif _Type == 5 then
					return abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,97,110,107})
				end

			end

			--[[
			Custom Champion Support
			]]

			class '_Tristana'

			function _Tristana:__init()
				AddTickCallback(function() self:_OnTick() end)
			end

			function _Tristana:_OnTick()
				local SkillE = Skills:GetSkill(_E)
				local range = MyHero.TrueRange
				if SkillE then
					local target = Crosshair:GetTarget()
					if Orbwalker:CanOrbwalkTarget(target) then
						range = Helper:GetDistance(target)
					end

					SkillE.Range = range
				end
			end

			class '_Vayne'

			function _Vayne:__init()

				self.bushWardPos = nil
				self.tp = TargetPredictionVIP(1000, 2200, 0.25)
				self.SpellData = {}
				self.SpellExpired = true

				AddTickCallback(function() self:_OnTick() end)
				AddProcessSpellCallback(function(Unit, Spell) self:_OnProcessSpell(Unit, Spell) end)

				VayneMenu = scriptConfig(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,32,82,101,98,111,114,110,58,32,86,97,121,110,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,118,97,121,110,101}))
				_G.RebornVayneMenu = VayneMenu
				VayneMenu:addSubMenu(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({67,111,110,102,105,103,117,114,97,116,105,111,110}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,118,97,121,110,101,115,117,98}))
				VayneMenu:addSubMenu(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,108,108,111,119,101,100,32,67,111,110,100,101,109,110,32,84,97,114,103,101,116,115}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,118,97,121,110,101,97,108,108,111,119,101,100}))

				VayneMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({116,111,103,103,108,101,77,111,100,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,111,103,103,108,101,32,77,111,100,101,32,40,82,101,113,117,105,114,101,115,32,82,101,108,111,97,100,41}), SCRIPT_PARAM_ONOFF, false)
				if VayneMenu.toggleMode then
					VayneMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,110,97,98,108,101,100}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,117,116,111,45,67,111,110,100,101,109,110}), SCRIPT_PARAM_ONKEYTOGGLE, true, GetKey(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({78})))
				else
					VayneMenu:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,110,97,98,108,101,100}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,117,116,111,45,67,111,110,100,101,109,110}), SCRIPT_PARAM_ONKEYDOWN, false, 32)
				end
				VayneMenu:permaShow(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({69,110,97,98,108,101,100}))


				VayneMenu.sidasacvaynesub:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({99,111,110,100,101,109,110,67,108,111,115,101,114,115}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,117,116,111,45,67,111,110,100,101,109,110,32,71,97,112,32,67,108,111,115,101,114,115}), SCRIPT_PARAM_ONOFF, true)
				VayneMenu.sidasacvaynesub:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({112,117,115,104,68,105,115,116,97,110,99,101}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,97,120,32,67,111,110,100,101,109,110,32,68,105,115,116,97,110,99,101}), SCRIPT_PARAM_SLICE, 300, 0, 450, 0)
				VayneMenu.sidasacvaynesub:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({99,111,110,100,101,109,110,83,65,67}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({79,110,108,121,32,99,111,110,100,101,109,110,32,82,101,98,111,114,110,32,116,97,114,103,101,116}), SCRIPT_PARAM_ONOFF, true)
				VayneMenu.sidasacvaynesub:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({117,115,101,87,97,114,100}), abCCxtSBsvLAyZHgPYQFALZxtzRlPR({65,117,116,111,45,84,114,105,110,107,101,116,32,66,117,115,104}), SCRIPT_PARAM_ONOFF, true)

				for i, Enemy in pairs(GetEnemyHeroes()) do
					VayneMenu.sidasacvayneallowed:addParam(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({101,110,97,98,108,101,100})..Enemy.charName, Enemy.charName, SCRIPT_PARAM_ONOFF, true)
				end
			end

			function _Vayne:DoCondemn(Enemy)
				local EnemyPos = VIP_USER and self.tp:GetPrediction(Enemy) or Enemy
				local PushPos = EnemyPos + (Vector(EnemyPos) - myHero):normalized() * VayneMenu.sidasacvaynesub.pushDistance
				if Enemy.x > 0 and Enemy.z > 0 then
					local checks = math.ceil((VayneMenu.sidasacvaynesub.pushDistance) / 65)
					local checkDistance = (VayneMenu.sidasacvaynesub.pushDistance) / checks
					local InsideTheWall = false
					local checksPos
					for k=1, checks, 1 do
						checksPos = Enemy + (Vector(Enemy) - myHero):normalized() * (checkDistance * k)
						local WallContainsPosition = IsWall(D3DXVECTOR3(checksPos.x, checksPos.y, checksPos.z))
						if WallContainsPosition then
							InsideTheWall = true
							break
						end
					end

					if InsideTheWall then
						CastSpell(_E, Enemy)
						if checksPos and VayneMenu.sidasacvaynesub.useWard then
							local bushPos = self:FindNearestNonWall(checksPos.x, checksPos.y, checksPos.z, 100, 20)
							if bushPos and (IsWallOfGrass(bushPos)) then
								self.bushWardPos = {Pos = bushPos, TimeOut = Helper:GetTime() + 2000, Target = Enemy}
							end
						end
					end
				end
			end

			function _Vayne:_OnTick()
				if self.bushWardPos then
					if Helper:GetTime() < self.bushWardPos.TimeOut then
						if not self.bushWardPos.Target.visible then
							local bushPos = self:FindNearestBushSpot(self.bushWardPos.Pos)
							if Helper:GetDistance(bushPos) <= 545 then
								CastSpell(ITEM_7, bushPos.x, bushPos.z)
							end
						end
					else
						self.bushWardPos = nil
					end
				end

				if VayneMenu.Enabled and myHero:CanUseSpell(_E) == READY then
					if VayneMenu.sidasacvaynesub.condemnClosers then
						if not self.SpellExpired and (Helper:GetTime() - self.SpellData.spellCastedTick) <= (self.SpellData.spellRange/self.SpellData.spellSpeed) * 1000 then
							local spellDirection     = (self.SpellData.spellEndPos - self.SpellData.spellStartPos):normalized()
							local spellStartPosition = self.SpellData.spellStartPos + spellDirection
							local spellEndPosition   = self.SpellData.spellStartPos + spellDirection * self.SpellData.spellRange
							local heroPosition = Point(myHero.x, myHero.z)

							local lineSegment = LineSegment(Point(spellStartPosition.x, spellStartPosition.y), Point(spellEndPosition.x, spellEndPosition.y))

							if lineSegment:distance(heroPosition) <= (not self.SpellData.spellIsAnExpetion and 65 or 200) then
								CastSpell(_E, self.SpellData.spellSource)
							end
						else
							self.SpellExpired = true
							self.SpellData = {}
						end
					end

					if VayneMenu.sidasacvaynesub.condemnSAC then
						local Target = AutoCarry.Crosshair.Attack_Crosshair.target
						if ValidTarget(Target, 725) then
							self:DoCondemn(Target)
						end
					else
						for _, Enemy in pairs(GetEnemyHeroes()) do
							if VayneMenu.sidasacvayneallowed[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({101,110,97,98,108,101,100})..Enemy.charName] and ValidTarget(Enemy, 725) then
								self:DoCondemn(Enemy)
							end
						end
					end
				end
			end

			function _Vayne:FindNearestBushSpot(Pos)
				local lastBush = Pos
				local Distance = Helper:GetDistance(Pos)
				MyPos = Vector(myHero.x, myHero.y, myHero.z)

				for i = Distance, 0, -1 do
					endPos = Vector(Pos.x, Pos.y, Pos.z)
					checkPos = MyPos - (MyPos - endPos):normalized() * i
					if IsWallOfGrass(D3DXVECTOR3(checkPos.x, checkPos.y, checkPos.z)) then
						lastBush = MyPos - (MyPos - endPos):normalized() * (i + 10)
					else
						break
					end
				end
				return lastBush
			end

			
			function _Vayne:FindNearestNonWall( x0, y0, z0, maxRadius, precision )
				if not IsWall(D3DXVECTOR3(x0, y0, z0)) then return nil end
				local radius, gP = 1, precision or 50
				x0, y0, z0, maxRadius = math.round(x0/gP)*gP, math.round(y0/gP)*gP, math.round(z0/gP)*gP, maxRadius and math.floor(maxRadius/gP) or math.huge
				local function toGamePos(x, y) return x0+x*gP, y0, z0+y*gP end
				while radius<=maxRadius do
					for i = 1, 4 do
						local p = D3DXVECTOR3(toGamePos((i==2 and radius) or (i==4 and -radius) or 0,(i==1 and radius) or (i==3 and -radius) or 0))
						if not IsWall(p) then return p end
					end
					local f, x, y = 1-radius, 0, radius
					while x<y-1 do
						x = x + 1
						if f < 0 then f = f+1+x+x
						else y, f = y-1, f+1+x+x-y-y end
						for i=1, 8 do
							local w = math.ceil(i/2)%2==0
							local p = D3DXVECTOR3(toGamePos(((i+1)%2==0 and 1 or -1)*(w and x or y),(i<=4 and 1 or -1)*(w and y or x)))
							if not IsWall(p) then return p end
						end
					end
					radius = radius + 1
				end
			end

			function _Vayne:_OnProcessSpell(Unit, Spell)
				if not VayneMenu.sidasacvaynesub.condemnClosers then
					return
				end

				local GetGapCloser = {
					['Aatrox']      = {true, spell = _Q,                  range = 1000,  projSpeed = 1200, },
					['Akali']       = {true, spell = _R,                  range = 800,   projSpeed = 2200, },
					['Alistar']     = {true, spell = _W,                  range = 650,   projSpeed = 2000, },
					['Diana']       = {true, spell = _R,                  range = 825,   projSpeed = 2000, },
					['Gragas']      = {true, spell = _E,                  range = 600,   projSpeed = 2000, },
					['Graves']      = {true, spell = _E,                  range = 425,   projSpeed = 2000, exeption = true },
					['Hecarim']     = {true, spell = _R,                  range = 1000,  projSpeed = 1200, },
					['Irelia']      = {true, spell = _Q,                  range = 650,   projSpeed = 2200, },
					['JarvanIV']    = {true, spell = jarvanAddition,      range = 770,   projSpeed = 2000, }, 
					['Jax']         = {true, spell = _Q,                  range = 700,   projSpeed = 2000, },
					['Jayce']       = {true, spell = 'JayceToTheSkies',   range = 600,   projSpeed = 2000, },
					['Khazix']      = {true, spell = _E,                  range = 900,   projSpeed = 2000, },
					['Leblanc']     = {true, spell = _W,                  range = 600,   projSpeed = 2000, },
					['LeeSin']      = {true, spell = 'blindmonkqtwo',     range = 1300,  projSpeed = 1800, },
					['Leona']       = {true, spell = _E,                  range = 900,   projSpeed = 2000, },
					['Malphite']    = {true, spell = _R,                  range = 1000,  projSpeed = 1500 + Unit.ms},
					['Maokai']      = {true, spell = _Q,                  range = 600,   projSpeed = 1200, },
					['MonkeyKing']  = {true, spell = _E,                  range = 650,   projSpeed = 2200, },
					['Pantheon']    = {true, spell = _W,                  range = 600,   projSpeed = 2000, },
					['Poppy']       = {true, spell = _E,                  range = 525,   projSpeed = 2000, },
					['Renekton']    = {true, spell = _E,                  range = 450,   projSpeed = 2000, },
					['Sejuani']     = {true, spell = _Q,                  range = 650,   projSpeed = 2000, },
					['Shen']        = {true, spell = _E,                  range = 575,   projSpeed = 2000, },
					['Tristana']    = {true, spell = _W,                  range = 900,   projSpeed = 2000, },
					['Tryndamere']  = {true, spell = 'Slash',             range = 650,   projSpeed = 1450, },
					['XinZhao']     = {true, spell = _E,                  range = 650,   projSpeed = 2000, },
				}

				if Unit.type == myHero.type and Unit.team ~= myHero.team and GetGapCloser[Unit.charName] and Helper:GetDistance(Unit) < 2000 and Spell ~= nil then
					if Spell.name == (type(GetGapCloser[Unit.charName].spell) == 'number' and Unit:GetSpellData(GetGapCloser[Unit.charName].spell).name or GetGapCloser[Unit.charName].spell) then
						if Spell.target and Spell.target.name == myHero.name or GetGapCloser[Unit.charName].spell == 'blindmonkqtwo' then
							CastSpell(_E, Unit)
						else
							self.SpellExpired = false
							self.SpellData = {
								spellSource = Unit,
								spellCastedTick = Helper:GetTime(),
								spellStartPos = Point(Spell.startPos.x, Spell.startPos.z),
								spellEndPos = Point(Spell.endPos.x, Spell.endPos.z),
								spellRange = GetGapCloser[Unit.charName].range,
								spellSpeed = GetGapCloser[Unit.charName].projSpeed,
								spellIsAnExpetion = GetGapCloser[Unit.charName].exeption or false,
							}
						end
					end
				end
			end

			

			function areClockwise(testv1,testv2)
				return -testv1.x * testv2.y + testv1.y * testv2.x>0 --true if v1 is clockwise to v2
			end
			function sign(x)
				if x> 0 then return 1
				elseif x<0 then return -1
				end
			end
			function GetCone(radius,theta)
				--Build table of enemies in range
				n = 1
				v1,v2,v3 = 0,0,0
				largeN,largeV1,largeV2 = 0,0,0
				theta1,theta2,smallBisect = 0,0,0
				coneTargetsTable = {}

				for i = 1, heroManager.iCount, 1 do
					hero = heroManager:getHero(i)
					if ValidTarget(hero,radius) then
						coneTargetsTable[n] = hero
						n=n+1
					end
				end

				if #coneTargetsTable>=2 then 
					--Determine if angle between vectors are < given theta
					for i=1, #coneTargetsTable,1 do
						for j=1,#coneTargetsTable, 1 do
							if i~=j then
								--Position vector from player to 2 different targets.
								v1 = Vector(coneTargetsTable[i].x-player.x , coneTargetsTable[i].z-player.z)
								v2 = Vector(coneTargetsTable[j].x-player.x , coneTargetsTable[j].z-player.z)
								thetav1 = sign(v1.y)*90-math.deg(math.atan(v1.x/v1.y))
								thetav2 = sign(v2.y)*90-math.deg(math.atan(v2.x/v2.y))
								thetaBetween = thetav2-thetav1

								if (thetaBetween) <= theta and thetaBetween>0 then --true if targets are close enough together.
									if #coneTargetsTable == 2 then --only 2 targets, the result is found.
										largeV1 = v1
										largeV2 = v2
								else
									--Determine # of vectors between v1 and v2
									tempN = 0
									for k=1, #coneTargetsTable,1 do
										if k~=i and k~=j then
											--Build position vector of third target
											v3 = Vector(coneTargetsTable[k].x-player.x , coneTargetsTable[k].z-player.z)
											--For v3 to be between v1 and v2
											--it must be clockwise to v1
											--and counter-clockwise to v2
											if areClockwise(v3,v1) and not areClockwise(v3,v2) then
												tempN = tempN+1
											end
										end
									end
									if tempN > largeN then
										--store the largest number of contained enemies
										--and the bounding position vectors
										largeN = tempN
										largeV1 = v1
										largeV2 = v2
									end
								end
								end
							end
						end
				end
				elseif #coneTargetsTable==1 then
					return coneTargetsTable[1]
				end

				if largeV1 == 0 or largeV2 == 0 then
					--No targets or one target was found.
					return nil
				else
					--small-Bisect the two vectors that encompass the most vectors.
					if largeV1.y == 0 then
						theta1 = 0
					else
						theta1 = sign(largeV1.y)*90-math.deg(math.atan(largeV1.x/largeV1.y))
					end
					if largeV2.y == 0 then
						theta2 = 0
					else
						theta2 = sign(largeV2.y)*90-math.deg(math.atan(largeV2.x/largeV2.y))
					end

					smallBisect = math.rad((theta1 + theta2) / 2)
					vResult = {}
					vResult.x = radius*math.cos(smallBisect)+player.x
					vResult.y = player.y
					vResult.z = radius*math.sin(smallBisect)+player.z

					return vResult
				end
			end


						
				AutoCarry.Skills 		= _Skills()
				AutoCarry.Keys  		= _Keys()
				AutoCarry.Items 		= _Items()
				AutoCarry.Helper 		= _Helper()
				AutoCarry.Data 			= _Data()
				AutoCarry.Jungle 		= _Jungle()
				AutoCarry.MyHero 		= _MyHero()
				_DamagePred()
				AutoCarry.Minions 		= _Minions()
				AutoCarry.Crosshair 	= _Crosshair(DAMAGE_PHYSICAL, MyHero.TrueRange, 0, false, false)
				AutoCarry.Orbwalker 	= _Orbwalker()
				AutoCarry.Plugins 		= _Plugins()
				--AutoCarry.Wards 		= _Wards()
				Skills, Keys, Items, Data, Jungle, Helper, MyHero, Minions, Crosshair, Orbwalker = Helper:GetClasses()
				_MenuManager()
				_Drawing()
				--_ChampionBuffs()
				--_AntiCancel()
				AutoCarry.Structures 	= _Structures()
				_MinionDraw()
				Streaming:CreateMenu()
				local _, files = ScanDirectory(BOL_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,99,114,105,112,116,115,92,92,83,105,100,97,115,65,117,116,111,67,97,114,114,121,80,108,117,103,105,110,115}))
				for _, file in pairs(files) do
					dofile(BOL_PATH..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,99,114,105,112,116,115,92,92,83,105,100,97,115,65,117,116,111,67,97,114,114,121,80,108,117,103,105,110,115,92,92})..AutoCarry.Helper:TrimString(file))
				end

				if myHero.charName == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({86,97,121,110,101}) then
					_Vayne()
				elseif myHero.charName == abCCxtSBsvLAyZHgPYQFALZxtzRlPR({84,114,105,115,116,97,110,97}) then
					_Tristana()
				end

				


				--[[
				Legacy Plugin Support
				Plugins should be updated, this may be removed after a few months.
				]]

				--AutoCarry.Orbwalker = AutoCarry.Crosshair.Attack_Crosshair
				AutoCarry.SkillsCrosshair = AutoCarry.Crosshair.Skills_Crosshair
				AutoCarry.CanMove = true
				AutoCarry.CanAttack = true
				AutoCarry.MainMenu = {}
				AutoCarry.PluginMenu = nil
				AutoCarry.EnemyTable = GetEnemyHeroes()
				AutoCarry.shotFired = false
				AutoCarry.OverrideCustomChampionSupport = false
				AutoCarry.CurrentlyShooting = false
				DoneInit = true


				class '_LegacyPlugin'

				function _LegacyPlugin:__init()
					AutoCarry.PluginMenu = scriptConfig(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,39,115,32,65,117,116,111,32,67,97,114,114,121,32,80,108,117,103,105,110,58,32})..myHero.charName, abCCxtSBsvLAyZHgPYQFALZxtzRlPR({115,105,100,97,115,97,99,112,108,117,103,105,110})..myHero.charName)
					require(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121,80,108,117,103,105,110,32,45,32})..myHero.charName)
					jmRiOAEMfPZaBvPZhOCFeIdeUocdjZ(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({76,111,97,100,101,100,32})..myHero.charName..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,112,108,117,103,105,110,33}))
					AddTickCallback(function() self:_OnTick() end)

					if PluginOnTick then
						AddTickCallback(function() PluginOnTick() end)
					end
					if PluginOnDraw then
						AddDrawCallback(function() PluginOnDraw() end)
					end
					if PluginOnCreateObj then
						AddCreateObjCallback(function(obj) PluginOnCreateObj(obj) end)
					end
					if PluginOnDeleteObj then
						AddDeleteObjCallback(function(obj) PluginOnDeleteObj(obj) end)
					end
					if PluginOnLoad then
						PluginOnLoad()
					end
					if PluginOnUnload then
						AddUnloadCallback(function() PluginOnUnload() end)
					end
					if PluginOnWndMsg then
						AddMsgCallback(function(msg, key) PluginOnWndMsg(msg, key) end)
					end
					if PluginOnProcessSpell then
						AddProcessSpellCallback(function(unit, spell) PluginOnProcessSpell(unit, spell) end)
					end
					if PluginOnSendChat then
						AddChatCallback(function(text) PluginOnSendChat(text) end)
					end
					if PluginOnBugsplat then
						AddBugsplatCallback(function() PluginOnBugsplat() end)
					end
					if PluginOnAnimation then
						AddAnimationCallback(function(unit, anim) PluginOnAnimation(unit, anim) end)
					end
					if PluginOnSendPacket then
						AddSendPacketCallback(function(packet) PluginOnSendPacket(packet) end)
					end
					if PluginOnRecvPacket then
						AddRecvPacketCallback(function(packet) PluginOnRecvPacket(packet) end)
					end
					if PluginOnApplyParticle then
						AddParticleCallback(function(unit, particle) PluginOnApplyParticle(unit, particle) end)
					end
					if OnAttacked then
						RegisterOnAttacked(OnAttacked)
					end
					if PluginBonusLastHitDamage then
						Plugins:RegisterBonusLastHitDamage(PluginBonusLastHitDamage)
					end

					if CustomAttackEnemy then
						Plugins:RegisterPreAttack(CustomAttackEnemy)
					end
				end

				function _LegacyPlugin:_OnTick()
					AutoCarry.MainMenu.AutoCarry = AutoCarryMenu.Active
					AutoCarry.MainMenu.LastHit = LastHitMenu.Active
					AutoCarry.MainMenu.MixedMode = MixedModeMenu.Active
					AutoCarry.MainMenu.LaneClear = LaneClearMenu.Active
					MyHero:MovementEnabled(AutoCarry.CanMove)
					MyHero:AttacksEnabled(AutoCarry.CanAttack)
					if #AutoCarry.EnemyTable < #Helper.EnemyTable then
						AutoCarry.EnemyTable = Helper.EnemyTable
					end
				end

				AutoCarry.GetAttackTarget = function(isCaster)
					return Crosshair:GetTarget()
				end

				AutoCarry.GetKillableMinion = function()
					return Minions.KillableMinion
				end

				AutoCarry.GetMinionTarget = function()
					return nil
				end

				AutoCarry.EnemyMinions = function()
					return Minions.EnemyMinions
				end

				AutoCarry.AllyMinions = function()
					return Minions.AllyMinions
				end

				AutoCarry.GetJungleMobs = function()
					return Jungle.JungleMonsters
				end

				AutoCarry.GetLastAttacked = function()
					return Orbwalker.LastEnemyAttacked
				end

				AutoCarry.GetNextAttackTime = function()
					return Orbwalker:GetNextAttackTime()
				end

				AutoCarry.CastSkillshot = function (skill, target)
					if VIP_USER then
						pred = TargetPredictionVIP(skill.range, skill.speed*1000, (skill.delay/1000 - (GetLatency()/2)/1000), skill.width)
					elseif not VIP_USER then
						pred = TargetPrediction(skill.range, skill.speed, skill.delay, skill.width)
					end
					local predPos = pred:GetPrediction(target)
					if predPos and Helper:GetDistance(predPos) <= skill.range then
						if VIP_USER then --TODO
							if not skill.minions or not AutoCarry.GetCollision(skill, myHero, predPos) then
								CastSpell(skill.spellKey, predPos.x, predPos.z)
						end
						elseif not VIP_USER then
							if not skill.minions or not AutoCarry.GetCollision(skill, myHero, predPos) then
								CastSpell(skill.spellKey, predPos.x, predPos.z)
							end
						end
					end
				end

				AutoCarry.GetCollision = function (skill, source, destination)
					if VIP_USER then
						local col = Collision(skill.range, skill.speed*1000 , (skill.delay/1000 - (GetLatency()/2)/1000), skill.width)
						return col:GetMinionCollision(source, destination)
					else
						return willHitMinion(destination, skill.width)
					end
				end

				AutoCarry.GetPrediction = function(skill, target)
					if VIP_USER then
						pred = TargetPredictionVIP(skill.range, skill.speed*1000, skill.delay/1000, skill.width)
					elseif not VIP_USER then
						pred = TargetPrediction(skill.range, skill.speed, skill.delay, skill.width)
					end
					return pred:GetPrediction(target)
				end

				AutoCarry.IsValidHitChance = function(skill, target)
					return true
				end

				AutoCarry.GetProdiction = function(Key, Range, Speed, Delay, Width, Source, Callback)
					return AutoCarry.Plugins:GetProdiction(Key, Range, Speed, Delay, Width, Source, Callback)
				end

				function willHitMinion(predic, width)
					for _, minion in pairs(Minions.EnemyMinions.objects) do
						if minion ~= nil and minion.valid and string.find(minion.name,abCCxtSBsvLAyZHgPYQFALZxtzRlPR({77,105,110,105,111,110,95})) == 1 and minion.team ~= player.team and minion.dead == false then
							if predic ~= nil then
								ex = player.x
								ez = player.z
								tx = predic.x
								tz = predic.z
								dx = ex - tx
								dz = ez - tz
								if dx ~= 0 then
									m = dz/dx
									c = ez - m*ex
								end
								mx = minion.x
								mz = minion.z
								distanc = (math.abs(mz - m*mx - c))/(math.sqrt(m*m+1))
								if distanc < width and math.sqrt((tx - ex)*(tx - ex) + (tz - ez)*(tz - ez)) > math.sqrt((tx - mx)*(tx - mx) + (tz - mz)*(tz - mz)) then
									return true
								end
							end
						end
					end
					return false
				end

				if FileExist(LIB_PATH ..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,105,100,97,115,65,117,116,111,67,97,114,114,121,80,108,117,103,105,110,32,45,32})..myHero.charName..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({46,108,117,97})) then
					_LegacyPlugin()
				end



			AddTickCallback(function()
				if Keys.LastHit then
					Minions:LastHit()
				end

				if Keys.AutoCarry then
					Items:UseAll(Crosshair.Attack_Crosshair.target)
					Skills:CastAll(Crosshair:GetTarget())
					if Orbwalker:CanOrbwalkTarget(Crosshair.Attack_Crosshair.target) then
						Orbwalker:Orbwalk(Crosshair.Attack_Crosshair.target)
					elseif Structures:CanOrbwalkStructure() then
						Orbwalker:OrbwalkIgnoreChecks(Structures:GetTargetStructure())
					else
						Orbwalker:Orbwalk(Jungle:GetFocusedMonster())
					end
				end

				if Keys.LaneClear then
					Skills:CastAll(Crosshair:GetTarget())
					Minions:LaneClear()
				end

				if Keys.MixedMode then
					Skills:CastAll(Crosshair:GetTarget())
					if MixedModeMenu.MinionPriority and Orbwalker:CanOrbwalkTarget(Minions.KillableMinion) and not ConfigurationMenu.SupportMode then
						Orbwalker:Orbwalk(Minions.KillableMinion)
					elseif Orbwalker:CanOrbwalkTarget(Crosshair.Attack_Crosshair.target) then
						Items:UseAll(Crosshair.Attack_Crosshair.target)
						Orbwalker:Orbwalk(Crosshair.Attack_Crosshair.target)
					else
						Minions:LastHit()
					end
				end

				if not Keys.AutoCarry and not Keys.MixedMode and not Keys.LaneClear and not Keys.LastHit and MinionHealthMenu.MinionMarker then
					Minions:MarkerOnly()
				end
			end)
				if not self.FoundUpdate then
					jmRiOAEMfPZaBvPZhOCFeIdeUocdjZ(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({83,117,99,99,101,115,115,102,117,108,108,121,32,108,111,97,100,101,100,32,114})..self.Version..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({32,84,101,115,116,32,69,110,118,105,114,111,110,109,101,110,116,32,97,115,32})..GetUser()..abCCxtSBsvLAyZHgPYQFALZxtzRlPR({44,32,103,111,111,100,32,108,117,99,107,33}))
				end
			end

			DelayAction(function() _NewUpdate() end, 2)

      _ENV[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({107,101,107,118,97,108,56,51,52})] = true
    else
      reason = dePack[abCCxtSBsvLAyZHgPYQFALZxtzRlPR({114,101,97,115,111,110})]
      jmRiOAEMfPZaBvPZhOCFeIdeUocdjZ(abCCxtSBsvLAyZHgPYQFALZxtzRlPR({73,110,118,97,108,105,100,32,85,115,101,114,46}))
    end
  end
end
