Z28096

{
    "Z1K1": "Z2",
    "Z2K1": {
        "Z1K1": "Z6",
        "Z6K1": "Z28096"
    },
    "Z2K2": {
        "Z1K1": "Z14",
        "Z14K1": "Z28094",
        "Z14K3": {
            "Z1K1": "Z16",
            "Z16K1": "Z600",
            "Z16K2": "function Z28094( Z28094K1 ) {\n/*! JSFuck 0.5.0 - http://jsfuck.com */\n\n\n  const MIN = 32, MAX = 126;\n\n  const SIMPLE = {\n    'false':      '![]',\n    'true':       '!![]',\n    'undefined':  '[]',\n    'NaN':        '+[![]]',\n    'Infinity':   '+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])' // +\"1e1000\"\n  };\n\n  const CONSTRUCTORS = {\n    'Array':    '[]',\n    'Number':   '(+[])',\n    'String':   '([]+[])',\n    'Boolean':  '(![])',\n    'Function': '[][\"at\"]',\n    'RegExp':   'Function(\"return/\"+false+\"/\")()'\n  };\n\n  const MAPPING = {\n    'a':   '(false+\"\")[1]',\n    'b':   '([][\"entries\"]()+\"\")[2]',\n    'c':   '([][\"at\"]+\"\")[3]',\n    'd':   '(undefined+\"\")[2]',\n    'e':   '(true+\"\")[3]',\n    'f':   '(false+\"\")[0]',\n    'g':   '(false+[0]+String)[20]',\n    'h':   '(+(101))[\"to\"+String[\"name\"]](21)[1]',\n    'i':   '([false]+undefined)[10]',\n    'j':   '([][\"entries\"]()+\"\")[3]',\n    'k':   '(+(20))[\"to\"+String[\"name\"]](21)',\n    'l':   '(false+\"\")[2]',\n    'm':   '(Number+\"\")[11]',\n    'n':   '(undefined+\"\")[1]',\n    'o':   '(true+[][\"at\"])[10]',\n    'p':   '(+(211))[\"to\"+String[\"name\"]](31)[1]',\n    'q':   '(\"\")[\"fontcolor\"]([0]+false+\")[20]',\n    'r':   '(true+\"\")[1]',\n    's':   '(false+\"\")[3]',\n    't':   '(true+\"\")[0]',\n    'u':   '(undefined+\"\")[0]',\n    'v':   '(+(31))[\"to\"+String[\"name\"]](32)',\n    'w':   '(+(32))[\"to\"+String[\"name\"]](33)',\n    'x':   '(+(101))[\"to\"+String[\"name\"]](34)[1]',\n    'y':   '(NaN+[Infinity])[10]',\n    'z':   '(+(35))[\"to\"+String[\"name\"]](36)',\n\n    'A':   '(NaN+[][\"entries\"]())[11]',\n    'B':   '(+[]+Boolean)[10]',\n    'C':   'Function(\"return escape\")()((\"\")[\"italics\"]())[2]',\n    'D':   'Function(\"return escape\")()([][\"at\"])[\"at\"](\"-1\")',\n    'E':   '(RegExp+\"\")[12]',\n    'F':   '(+[]+Function)[10]',\n    'G':   '(false+Function(\"return Date\")()())[30]',\n    'H':   null,\n    'I':   '(Infinity+\"\")[0]',\n    'J':   null,\n    'K':   null,\n    'L':   null,\n    'M':   '(true+Function(\"return Date\")()())[30]',\n    'N':   '(NaN+\"\")[0]',\n    'O':   null,\n    'P':   null,\n    'Q':   null,\n    'R':   '(+[]+RegExp)[10]',\n    'S':   '(+[]+String)[10]',\n    'T':   '(NaN+Function(\"return Date\")()())[30]',\n    'U':   null,\n    'V':   null,\n    'W':   null,\n    'X':   null,\n    'Y':   null,\n    'Z':   null,\n\n    ' ':   '(NaN+[][\"at\"])[11]',\n    '!':   null,\n    '\"':   '(\"\")[\"fontcolor\"]()[12]',\n    '#':   null,\n    '$':   null,\n    '%':   'Function(\"return escape\")()([][\"at\"])[22]',\n    '\u0026':   '(\"\")[\"fontcolor\"](\")[13]',\n    '\\*:  null,\n    '(':   '([][\"at\"]+\"\")[11]',\n    ')':   '(\"\"+[][\"at\"])[12]',\n    '*':   null,\n    '+':   '(+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]])+[])[2]',\n    ',':   '[[]][\"concat\"]([[]])+\"\"',\n    '-':   '(+(.+[0000001])+\"\")[2]',\n    '.':   '(+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]]+[+[]])+[])[+!+[]]',\n    '/':   '(false+[0])[\"italics\"]()[10]',\n    ':':   '(RegExp()+\"\")[3]',\n    ';':   '(\"\")[\"fontcolor\"](NaN+\")[21]',\n    '\u003C':   '(\"\")[\"italics\"]()[0]',\n    '=':   '(\"\")[\"fontcolor\"]()[11]',\n    '\u003E':   '(\"\")[\"italics\"]()[2]',\n    '?':   '(RegExp()+\"\")[2]',\n    '@':   null,\n    '[':   '([][\"entries\"]()+\"\")[0]',\n    '\\\\':  '(RegExp(\"/\")+\"\")[1]',\n    ']':   '([][\"entries\"]()+\"\")[22]',\n    '^':   null,\n    '_':   null,\n    '`':   null,\n    '{':   '([0]+false+[][\"at\"])[20]',\n    '|':   null,\n    '}':   '([][\"at\"]+\"\")[\"at\"](\"-1\")',\n    '~':   null\n  };\n\n  const GLOBAL = 'Function(\"return this\")()';\n\n  function fillMissingDigits(){\n    var output, number, i;\n\n    for (number = 0; number \u003C 10; number++){\n\n      output = \"+[]\";\n\n      if (number \u003E 0){ output = \"+!\" + output; }\n      for (i = 1; i \u003C number; i++){ output = \"+!+[]\" + output; }\n      if (number \u003E 1){ output = output.substr(1); }\n\n      MAPPING[number] = \"[\" + output + \"]\";\n    }\n  }\n\n  function replaceMap(){\n    var character = \"\", value, i, key;\n\n    function replace(pattern, replacement){\n      value = value.replace(\n        new RegExp(pattern, \"gi\"),\n        replacement\n      );\n    }\n\n    function digitReplacer(_,x) { return MAPPING[x]; }\n\n    function numberReplacer(_,y) {\n      var values = y.split(\"\");\n      var head = +(values.shift());\n      var output = \"+[]\";\n\n      if (head \u003E 0){ output = \"+!\" + output; }\n      for (i = 1; i \u003C head; i++){ output = \"+!+[]\" + output; }\n      if (head \u003E 1){ output = output.substr(1); }\n\n      return [output].concat(values).join(\"+\").replace(/(\\d)/g, digitReplacer);\n    }\n\n    for (i = MIN; i \u003C= MAX; i++){\n      character = String.fromCharCode(i);\n      value = MAPPING[character];\n      if(!value) {continue;}\n\n      for (key in CONSTRUCTORS){\n        replace(\"\\\\b\" + key, CONSTRUCTORS[key] + '[\"constructor\"]');\n      }\n\n      for (key in SIMPLE){\n        replace(key, SIMPLE[key]);\n      }\n\n      replace('(\\\\d\\\\d+)', numberReplacer);\n      replace('\\\\((\\\\d)\\\\)', digitReplacer);\n      replace('\\\\[(\\\\d)\\\\]', digitReplacer);\n\n      replace(\"GLOBAL\", GLOBAL);\n      replace('\\\\+\"\"', \"+[]\");\n      replace('\"\"', \"[]+[]\");\n\n      MAPPING[character] = value;\n    }\n  }\n\n  function replaceStrings(){\n    var regEx = /[^\\[\\]\\(\\)\\!\\+]{1}/g,\n      all, value, missing,\n      count = MAX - MIN;\n\n    function findMissing(){\n      var all, value, done = false;\n\n      missing = {};\n\n      for (all in MAPPING){\n\n        value = MAPPING[all];\n\n        if (value \u0026\u0026 value.match(regEx)){\n          missing[all] = value;\n          done = true;\n        }\n      }\n\n      return done;\n    }\n\n    function mappingReplacer(a, b) {\n      return b.split(\"\").join(\"+\");\n    }\n\n    function valueReplacer(c) {\n      return missing[c] ? c : MAPPING[c];\n    }\n\n    for (all in MAPPING){\n      if (MAPPING[all]){\n        MAPPING[all] = MAPPING[all].replace(/\\\"([^\\\"]+)\\\"/gi, mappingReplacer);\n      }\n    }\n\n    while (findMissing()){\n      for (all in missing){\n        value = MAPPING[all];\n        value = value.replace(regEx, valueReplacer);\n\n        MAPPING[all] = value;\n        missing[all] = value;\n      }\n\n      if (count-- === 0){\n        console.error(\"Could not compile the following chars:\", missing);\n      }\n    }\n  }\n\n  function escapeSequence(c) {\n    var cc = c.charCodeAt(0);\n    if (cc \u003C 256) {\n      return '\\\\' + cc.toString(8);\n    } else {\n      var cc16 = cc.toString(16);\n      return '\\\\u' + ('0000' + cc16).substring(cc16.length);  \n    }\n  }\n\n  function escapeSequenceForReplace(c) {\n    return escapeSequence(c).replace('\\\\', 't');\n  }\n\n  function encode(input, wrapWithEval, runInParentScope){\n    var output = [];\n\n    if (!input){\n      return \"\";\n    }\n\n    var unmappped = *\n    for(var k in MAPPING) {\n      if (MAPPING[k]){\n        unmappped += k;\n      }\n    }\n    unmappped = unmappped.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$\u0026');\n    unmappped = new RegExp('[^' + unmappped + ']','g');\n    var unmappedCharactersCount = (input.match(unmappped) || []).length;\n    if (unmappedCharactersCount \u003E 1) {\n      // Without this optimization one unmapped character has encoded length\n      // of about 3600 characters. Every additional unmapped character adds \n      // 2000 to the total length. For example, the length of `~` is 3605,\n      // `~~` is 5600, and `~~~` is 7595.\n      // \n      // The loader with replace has encoded length of about 5300 characters\n      // and every additional character adds 100 to the total length. \n      // In the same example the length of `~~` becomes 5371 and `~~~` -- 5463.\n      // \n      // So, when we have more than one unmapped character we want to encode whole input\n      // except select characters (that have encoded length less than about 70)\n      // into an escape sequence.\n      //\n      // NOTE: `t` should be escaped!\n      input = input.replace(/[^0123456789.adefilnrsuN]/g, escapeSequenceForReplace);\n    } else if (unmappedCharactersCount \u003E 0) {\n      //Because we will wrap the input into a string we need to escape Backslash \n      // and Double quote characters (we do not need to worry about other characters \n      // because they are not mapped explicitly).\n      // The JSFuck-encoded representation of `\\` is 2121 symbols,\n      // so escaped `\\` is 4243 symbols and escaped `\"` is 2261 symbols\n      // however the escape sequence of that characters are \n      // 2168 and 2155 symbols respectively, so it's more practical to \n      // rewrite them as escape sequences.\n      input = input.replace(/[\"\\\\]/g, escapeSequence);\n      //Convert all unmapped characters to escape sequence\n      input = input.replace(unmappped, escapeSequence);\n    }\n\n    var r = \"\";\n    for (var i in SIMPLE) {\n      r += i + \"|\";\n    }\n    r+= \".\";\n\n    input.replace(new RegExp(r, 'g'), function(c) {\n      var replacement = SIMPLE[c];\n      if (replacement) {\n        output.push(\"(\" + replacement + \"+[])\");\n      } else {\n        replacement = MAPPING[c];\n        if (replacement){\n          output.push(replacement);\n        } else {\n          throw new Error('Found unmapped character: ' + c);\n        }\n      }\n    });\n\n    output = output.join(\"+\");\n\n    if (/^\\d$/.test(input)){\n      output += \"+[]\";\n    }\n\n    if (unmappedCharactersCount \u003E 1) {\n      // replace `t` with `\\\\`\n      output = \"(\" + output + \")[\" + encode(\"split\") + \"](\" + encode (\"t\") + \")[\" + encode(\"join\") +\"](\" + encode(\"\\\\\") + \")\";\n    }\n\n    if (unmappedCharactersCount \u003E 0) {\n      output = \"[][\" + encode(\"at\") + \"]\"+\n      \"[\" + encode(\"constructor\") + \"]\" +\n      \"(\" + encode(\"return\\\"\") + \"+\" + output + \"+\" + encode(\"\\\"\") + \")()\";\n    }\n\n    if (wrapWithEval){\n      if (runInParentScope){\n        output = \"[][\" + encode(\"at\") + \"]\" +\n          \"[\" + encode(\"constructor\") + \"]\" +\n          \"(\" + encode(\"return eval\") + \")()\" +\n          \"(\" + output + \")\";\n      } else {\n        output = \"[][\" + encode(\"at\") + \"]\" +\n          \"[\" + encode(\"constructor\") + \"]\" +\n          \"(\" + output + \")()\";\n      }\n    }\n\n    return output;\n  }\n\n  fillMissingDigits();\n  replaceMap();\n  replaceStrings();\n\n  return encode(Z28094K1,true,true);\n}"
        }
    },
    "Z2K3": {
        "Z1K1": "Z12",
        "Z12K1": [
            "Z11",
            {
                "Z1K1": "Z11",
                "Z11K1": "Z1787",
                "Z11K2": "codifica in JSFuck, js"
            }
        ]
    },
    "Z2K4": {
        "Z1K1": "Z32",
        "Z32K1": [
            "Z31"
        ]
    },
    "Z2K5": {
        "Z1K1": "Z12",
        "Z12K1": [
            "Z11"
        ]
    }
}