text: // Obfuscator setup
  const t = require('./obfusator_tools')
  const rl = t.rl
  const ri = t.ri
  const rn = t.rn
  const sl = t.sl
  const b64 = t.b64
  
  const assign_var = require('./statements').assign_var_statements
  
  function obfuscate(code) {
      // Name for base64 module
      let base64 = rl(ri(5,9))+rn(ri(3,5))
      // Starter Function
      let func_starter_name = rl(ri(6,10))+rn(ri(8,10))
  
      // Function Arguments
      let first_arg, second_arg, third_arg, fourth_arg;
      first_arg = 'subscribe'
      second_arg = rl(ri(5,9)) + rn(ri(1,12))
      third_arg = sl(ri(4,9)) + rn(ri(4,12))
      fourth_arg = rl(ri(5,6))+rn(ri(5,10))+rl(ri(6,12))
  
      // Weird variables
      let var1,var2,var3,var4,var5,var6,var7,var8,var9,var10
      var1 = rl(ri(6,9))+rn(ri(2,3))+rl(ri(3,7))+rn(ri(4,6))
      var2 = rl(ri(ri(3,9),ri(12,14)))+rn(ri(2,3))+rl(ri(3,7))+rn(ri(4,6))
      var3 = rl(ri(4,9))+rn(ri(6,9))
      var4 = rl(9,9)
      var5 = rl(7,9)
      var6 = rl(6,10)
      var7 = rl(10,10)
      var8 = rl(5,13)+rn(ri(6,9))
      var9 = rl(ri(5,9))+rn(ri(10,10))
      var10 = rl(8,12)
  
      // Function to get random statement
      function getRandomStatement(){return`exec(${var1}('${Buffer.from(assign_var[ri(0,assign_var.length-1)]).toString('base64')}'))`}
  
      // Variables Value
      let v1,v2,v3,v4,v5,v6,v7,v8,v9,v10
      v1 = `${base64}.b64decode`
      v2 = second_arg
      v3 = ri(2,9)
      v4 = ri(2,9)
      v5 = ri(2,9)
      v6 = ri(2,9)
      v7 = ri(2,9)
      v8 = ri(2,9)
      v9 = ri(2,9)
      v10 = ri(2,9)
  
      // random returns
      const available_function_returns = [var2,var3,var4,var5,var6,var7,var8,var9,var10,third_arg,fourth_arg]
      let function_return = function() {return available_function_returns[ri(0, available_function_returns.length-1)]}
  
      // return if statement one line
      let if_returns = [var3,var4,var5,var6,var7,var8,var9,var10]
      let if_len = if_returns.length-1
      function get_return() {return if_returns[ri(0,if_len)]}
  
      // while
      let useless_while_code = `try:\n    while (not not not not not []): ${rl(7)}${rn(3)}something_is_weird_here = '${rl(10)} never gonna give you up, never gonna let you dooown, never gonna run around and dessert you';break\nexcept:pass`
  
      // fake setup code
      let fake_setup = `def ${rl(5)}_initialization_python_code_setup${rl(7)}():python_code_setup_code_pip3 = '${b64(`${rl(5)}${rn(5)}never_gonna_give_you_up='Never gonna let you down GET RICKROLLED LOOOOOOOOOOOOOL, this is near the real code :eyes: its actually below this shh dont tell anyone'`)}';python_code_python3_python2 = "${b64(`try: init_setup_code_python_pip_extra_sauce()\nexcept: pass`)}";exec(${var1}(python_code_python3_python2))`
  
      // real code
      const b64_code = b64(b64(b64(b64(b64(b64(b64(b64(b64(b64(b64(code)))))))))))
  
      let actual_setup = `exec(${var1}(${var1}(${var1}(${var1}(${var1}(${var1}(${var1}(${var1}(${var1}(${var1}(${var1}("${b64_code}"))))))))))))`
  
      // Obfuscated code
      let obf_code = `import base64 as ${base64}
  # Pyxl Obfuscator https://pyxl-obfuscator.herokuapp.com
  # Subscribe to https://youtube.com/pyxldavon
  # Donate to https://ko-fi.com/pxdav
  
  def ${func_starter_name}(${first_arg}=True,${second_arg}=False,${third_arg}=True,${fourth_arg}=None):${var1},${var2},${var3},${var4},${var5},${var6},${var7},${var8},${var9},${var10}=${v1},${v2},${v3},${v4},${v5},${v6},${v7},${v8},${v9},${v10};${getRandomStatement()};${getRandomStatement()};${getRandomStatement()};exec(${var1}('${b64(useless_while_code)}'));exec('check_this_out="https://youtube.com/pyxldavon"');exec(${var1}("${b64(fake_setup)}"));exec(${var1}("${b64(actual_setup)}"));return ${function_return()}+${function_return()} if ${get_return()}<${get_return()}>${get_return()} else ${function_return()} if ${get_return()}<${get_return()} else ${function_return()}+${function_return()}+${function_return()} if ${get_return()}<${get_return()} else ${function_return()} if ${get_return()}<${get_return()}>${get_return()} else ${function_return()} if ${get_return()}<${get_return()}>${get_return()} else ${function_return()} if ${get_return()}<${get_return()}>${get_return()} else ${function_return()}+${function_return()} if ${get_return()}<${get_return()}>${get_return()} else ${[first_arg, 'False', fourth_arg][ri(0,2)]}
  ${func_starter_name}(${ri(1,10)},${ri(1,10)},${ri(1,10)},${ri(1,10)})`
      return obf_code
  }
  
  module.exports = {
      obfuscate
  }