|  | @@ -88,7 +88,7 @@ module.exports =
 | 
											
												
													
														|  |  /******/ 	__webpack_require__.p = "";
 |  |  /******/ 	__webpack_require__.p = "";
 | 
											
												
													
														|  |  /******/
 |  |  /******/
 | 
											
												
													
														|  |  /******/ 	// Load entry module and return exports
 |  |  /******/ 	// Load entry module and return exports
 | 
											
												
													
														|  | -/******/ 	return __webpack_require__(__webpack_require__.s = 89);
 |  | 
 | 
											
												
													
														|  | 
 |  | +/******/ 	return __webpack_require__(__webpack_require__.s = 88);
 | 
											
												
													
														|  |  /******/ })
 |  |  /******/ })
 | 
											
												
													
														|  |  /************************************************************************/
 |  |  /************************************************************************/
 | 
											
												
													
														|  |  /******/ ([
 |  |  /******/ ([
 | 
											
										
											
												
													
														|  | @@ -167,11 +167,32 @@ var Utils = function () {
 | 
											
												
													
														|  |              domain = domain.split(':')[0];
 |  |              domain = domain.split(':')[0];
 | 
											
												
													
														|  |              return domain;
 |  |              return domain;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | 
 |  | +    }, {
 | 
											
												
													
														|  | 
 |  | +        key: 'getRandomFloat',
 | 
											
												
													
														|  | 
 |  | +        value: function getRandomFloat(min, max) {
 | 
											
												
													
														|  | 
 |  | +            return Utils.getRandomGenerator().floating({
 | 
											
												
													
														|  | 
 |  | +                min: min,
 | 
											
												
													
														|  | 
 |  | +                max: max,
 | 
											
												
													
														|  | 
 |  | +                fixed: 7
 | 
											
												
													
														|  | 
 |  | +            });
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  |      }, {
 |  |      }, {
 | 
											
												
													
														|  |          key: 'getRandomGenerator',
 |  |          key: 'getRandomGenerator',
 | 
											
												
													
														|  |          value: function getRandomGenerator() {
 |  |          value: function getRandomGenerator() {
 | 
											
												
													
														|  | 
 |  | +            var randomGenerator = Utils.randomGenerator;
 | 
											
												
													
														|  | 
 |  | +            if (!randomGenerator) {
 | 
											
												
													
														|  | 
 |  | +                throw new Error('`randomGenerator` static property is undefined');
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  |              return Utils.randomGenerator;
 |  |              return Utils.randomGenerator;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | 
 |  | +    }, {
 | 
											
												
													
														|  | 
 |  | +        key: 'getRandomInteger',
 | 
											
												
													
														|  | 
 |  | +        value: function getRandomInteger(min, max) {
 | 
											
												
													
														|  | 
 |  | +            return Utils.getRandomGenerator().integer({
 | 
											
												
													
														|  | 
 |  | +                min: min,
 | 
											
												
													
														|  | 
 |  | +                max: max
 | 
											
												
													
														|  | 
 |  | +            });
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  |      }, {
 |  |      }, {
 | 
											
												
													
														|  |          key: 'getRandomVariableName',
 |  |          key: 'getRandomVariableName',
 | 
											
												
													
														|  |          value: function getRandomVariableName() {
 |  |          value: function getRandomVariableName() {
 | 
											
										
											
												
													
														|  | @@ -180,10 +201,7 @@ var Utils = function () {
 | 
											
												
													
														|  |              var rangeMinInteger = 10000,
 |  |              var rangeMinInteger = 10000,
 | 
											
												
													
														|  |                  rangeMaxInteger = 99999999,
 |  |                  rangeMaxInteger = 99999999,
 | 
											
												
													
														|  |                  prefix = '_0x';
 |  |                  prefix = '_0x';
 | 
											
												
													
														|  | -            return '' + prefix + Utils.decToHex(Utils.getRandomGenerator().integer({
 |  | 
 | 
											
												
													
														|  | -                min: rangeMinInteger,
 |  | 
 | 
											
												
													
														|  | -                max: rangeMaxInteger
 |  | 
 | 
											
												
													
														|  | -            })).substr(0, length);
 |  | 
 | 
											
												
													
														|  | 
 |  | +            return '' + prefix + Utils.decToHex(Utils.getRandomInteger(rangeMinInteger, rangeMaxInteger)).substr(0, length);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |      }, {
 |  |      }, {
 | 
											
												
													
														|  |          key: 'hideString',
 |  |          key: 'hideString',
 | 
											
										
											
												
													
														|  | @@ -196,7 +214,7 @@ var Utils = function () {
 | 
											
												
													
														|  |                      i2 = -1,
 |  |                      i2 = -1,
 | 
											
												
													
														|  |                      result = '';
 |  |                      result = '';
 | 
											
												
													
														|  |                  while (i1 < s1.length || i2 < s2.length) {
 |  |                  while (i1 < s1.length || i2 < s2.length) {
 | 
											
												
													
														|  | -                    if (Math.random() < 0.5 && i2 < s2.length) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    if (Utils.getRandomFloat(0, 1) < 0.5 && i2 < s2.length) {
 | 
											
												
													
														|  |                          result += s2.charAt(++i2);
 |  |                          result += s2.charAt(++i2);
 | 
											
												
													
														|  |                      } else {
 |  |                      } else {
 | 
											
												
													
														|  |                          result += s1.charAt(++i1);
 |  |                          result += s1.charAt(++i1);
 | 
											
										
											
												
													
														|  | @@ -245,6 +263,11 @@ var Utils = function () {
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |              return result;
 |  |              return result;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | 
 |  | +    }, {
 | 
											
												
													
														|  | 
 |  | +        key: 'setRandomGenerator',
 | 
											
												
													
														|  | 
 |  | +        value: function setRandomGenerator(randomGenerator) {
 | 
											
												
													
														|  | 
 |  | +            Utils.randomGenerator = randomGenerator;
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  |      }, {
 |  |      }, {
 | 
											
												
													
														|  |          key: 'strEnumify',
 |  |          key: 'strEnumify',
 | 
											
												
													
														|  |          value: function strEnumify(obj) {
 |  |          value: function strEnumify(obj) {
 | 
											
										
											
												
													
														|  | @@ -640,10 +663,7 @@ var NodeAppender = function () {
 | 
											
												
													
														|  |      }, {
 |  |      }, {
 | 
											
												
													
														|  |          key: 'getRandomStackTraceIndex',
 |  |          key: 'getRandomStackTraceIndex',
 | 
											
												
													
														|  |          value: function getRandomStackTraceIndex(stackTraceRootLength) {
 |  |          value: function getRandomStackTraceIndex(stackTraceRootLength) {
 | 
											
												
													
														|  | -            return Utils_1.Utils.getRandomGenerator().integer({
 |  | 
 | 
											
												
													
														|  | -                min: 0,
 |  | 
 | 
											
												
													
														|  | -                max: Math.max(0, Math.round(stackTraceRootLength - 1))
 |  | 
 | 
											
												
													
														|  | -            });
 |  | 
 | 
											
												
													
														|  | 
 |  | +            return Utils_1.Utils.getRandomInteger(0, Math.max(0, Math.round(stackTraceRootLength - 1)));
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |      }, {
 |  |      }, {
 | 
											
												
													
														|  |          key: 'insertNodeAtIndex',
 |  |          key: 'insertNodeAtIndex',
 | 
											
										
											
												
													
														|  | @@ -1003,6 +1023,7 @@ exports.NO_CUSTOM_NODES_PRESET = Object.freeze({
 | 
											
												
													
														|  |      domainLock: [],
 |  |      domainLock: [],
 | 
											
												
													
														|  |      reservedNames: [],
 |  |      reservedNames: [],
 | 
											
												
													
														|  |      rotateStringArray: false,
 |  |      rotateStringArray: false,
 | 
											
												
													
														|  | 
 |  | +    seed: 0,
 | 
											
												
													
														|  |      selfDefending: false,
 |  |      selfDefending: false,
 | 
											
												
													
														|  |      sourceMap: false,
 |  |      sourceMap: false,
 | 
											
												
													
														|  |      sourceMapBaseUrl: '',
 |  |      sourceMapBaseUrl: '',
 | 
											
										
											
												
													
														|  | @@ -1070,7 +1091,9 @@ var NodeCallsControllerFunctionNode = function (_AbstractCustomNode_) {
 | 
											
												
													
														|  |              if (this.appendState === AppendState_1.AppendState.AfterObfuscation) {
 |  |              if (this.appendState === AppendState_1.AppendState.AfterObfuscation) {
 | 
											
												
													
														|  |                  return NodeUtils_1.NodeUtils.convertCodeToStructure(JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(SingleNodeCallControllerTemplate_1.SingleNodeCallControllerTemplate().formatUnicorn({
 |  |                  return NodeUtils_1.NodeUtils.convertCodeToStructure(JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(SingleNodeCallControllerTemplate_1.SingleNodeCallControllerTemplate().formatUnicorn({
 | 
											
												
													
														|  |                      singleNodeCallControllerFunctionName: this.callsControllerFunctionName
 |  |                      singleNodeCallControllerFunctionName: this.callsControllerFunctionName
 | 
											
												
													
														|  | -                }), NoCustomNodesPreset_1.NO_CUSTOM_NODES_PRESET).getObfuscatedCode());
 |  | 
 | 
											
												
													
														|  | 
 |  | +                }), Object.assign({}, NoCustomNodesPreset_1.NO_CUSTOM_NODES_PRESET, {
 | 
											
												
													
														|  | 
 |  | +                    seed: this.options.seed
 | 
											
												
													
														|  | 
 |  | +                })).getObfuscatedCode());
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |              return NodeUtils_1.NodeUtils.convertCodeToStructure(SingleNodeCallControllerTemplate_1.SingleNodeCallControllerTemplate().formatUnicorn({
 |  |              return NodeUtils_1.NodeUtils.convertCodeToStructure(SingleNodeCallControllerTemplate_1.SingleNodeCallControllerTemplate().formatUnicorn({
 | 
											
												
													
														|  |                  singleNodeCallControllerFunctionName: this.callsControllerFunctionName
 |  |                  singleNodeCallControllerFunctionName: this.callsControllerFunctionName
 | 
											
										
											
												
													
														|  | @@ -1127,7 +1150,7 @@ var StringLiteralReplacer = function (_AbstractReplacer_1$A) {
 | 
											
												
													
														|  |      _createClass(StringLiteralReplacer, [{
 |  |      _createClass(StringLiteralReplacer, [{
 | 
											
												
													
														|  |          key: 'replace',
 |  |          key: 'replace',
 | 
											
												
													
														|  |          value: function replace(nodeValue) {
 |  |          value: function replace(nodeValue) {
 | 
											
												
													
														|  | -            var replaceWithStringArrayFlag = nodeValue.length >= StringLiteralReplacer.minimumLengthForStringArray && Math.random() <= this.options.stringArrayThreshold;
 |  | 
 | 
											
												
													
														|  | 
 |  | +            var replaceWithStringArrayFlag = nodeValue.length >= StringLiteralReplacer.minimumLengthForStringArray && Utils_1.Utils.getRandomFloat(0, 1) <= this.options.stringArrayThreshold;
 | 
											
												
													
														|  |              if (this.options.stringArray && replaceWithStringArrayFlag) {
 |  |              if (this.options.stringArray && replaceWithStringArrayFlag) {
 | 
											
												
													
														|  |                  return this.replaceStringLiteralWithStringArrayCall(nodeValue);
 |  |                  return this.replaceStringLiteralWithStringArrayCall(nodeValue);
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
										
											
												
													
														|  | @@ -1233,7 +1256,6 @@ exports.ObfuscationResult = ObfuscationResult;
 | 
											
												
													
														|  |  "use strict";
 |  |  "use strict";
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  exports.JSFuck = {
 |  |  exports.JSFuck = {
 | 
											
												
													
														|  | -    Window: '[]["filter"]["constructor"]("return this")()',
 |  | 
 | 
											
												
													
														|  |      False: '![]',
 |  |      False: '![]',
 | 
											
												
													
														|  |      True: '!![]',
 |  |      True: '!![]',
 | 
											
												
													
														|  |      a: '(false+"")[1]',
 |  |      a: '(false+"")[1]',
 | 
											
										
											
												
													
														|  | @@ -1349,6 +1371,7 @@ exports.DEFAULT_PRESET = Object.freeze({
 | 
											
												
													
														|  |      domainLock: [],
 |  |      domainLock: [],
 | 
											
												
													
														|  |      reservedNames: [],
 |  |      reservedNames: [],
 | 
											
												
													
														|  |      rotateStringArray: true,
 |  |      rotateStringArray: true,
 | 
											
												
													
														|  | 
 |  | +    seed: 0,
 | 
											
												
													
														|  |      selfDefending: true,
 |  |      selfDefending: true,
 | 
											
												
													
														|  |      sourceMap: false,
 |  |      sourceMap: false,
 | 
											
												
													
														|  |      sourceMapBaseUrl: '',
 |  |      sourceMapBaseUrl: '',
 | 
											
										
											
												
													
														|  | @@ -1391,10 +1414,12 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  var esprima = __webpack_require__(24);
 |  |  var esprima = __webpack_require__(24);
 | 
											
												
													
														|  |  var escodegen = __webpack_require__(13);
 |  |  var escodegen = __webpack_require__(13);
 | 
											
												
													
														|  | 
 |  | +var chance_1 = __webpack_require__(82);
 | 
											
												
													
														|  |  var ObfuscationResult_1 = __webpack_require__(20);
 |  |  var ObfuscationResult_1 = __webpack_require__(20);
 | 
											
												
													
														|  |  var Obfuscator_1 = __webpack_require__(28);
 |  |  var Obfuscator_1 = __webpack_require__(28);
 | 
											
												
													
														|  |  var Options_1 = __webpack_require__(57);
 |  |  var Options_1 = __webpack_require__(57);
 | 
											
												
													
														|  |  var SourceMapCorrector_1 = __webpack_require__(29);
 |  |  var SourceMapCorrector_1 = __webpack_require__(29);
 | 
											
												
													
														|  | 
 |  | +var Utils_1 = __webpack_require__(0);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  var JavaScriptObfuscatorInternal = function () {
 |  |  var JavaScriptObfuscatorInternal = function () {
 | 
											
												
													
														|  |      function JavaScriptObfuscatorInternal(sourceCode) {
 |  |      function JavaScriptObfuscatorInternal(sourceCode) {
 | 
											
										
											
												
													
														|  | @@ -1417,6 +1442,9 @@ var JavaScriptObfuscatorInternal = function () {
 | 
											
												
													
														|  |              var astTree = esprima.parse(this.sourceCode, {
 |  |              var astTree = esprima.parse(this.sourceCode, {
 | 
											
												
													
														|  |                  loc: true
 |  |                  loc: true
 | 
											
												
													
														|  |              });
 |  |              });
 | 
											
												
													
														|  | 
 |  | +            if (this.options.seed !== 0) {
 | 
											
												
													
														|  | 
 |  | +                Utils_1.Utils.setRandomGenerator(new chance_1.Chance(this.options.seed));
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  |              astTree = new Obfuscator_1.Obfuscator(this.options).obfuscateNode(astTree);
 |  |              astTree = new Obfuscator_1.Obfuscator(this.options).obfuscateNode(astTree);
 | 
											
												
													
														|  |              this.generatorOutput = JavaScriptObfuscatorInternal.generateCode(this.sourceCode, astTree, this.options);
 |  |              this.generatorOutput = JavaScriptObfuscatorInternal.generateCode(this.sourceCode, astTree, this.options);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
										
											
												
													
														|  | @@ -1842,7 +1870,7 @@ var JavaScriptObfuscatorCLI = function () {
 | 
											
												
													
														|  |                  return val.split(',');
 |  |                  return val.split(',');
 | 
											
												
													
														|  |              }).option('--reservedNames <list>', 'Disable obfuscation of variable names, function names and names of function parameters that match the passed RegExp patterns (comma separated)', function (val) {
 |  |              }).option('--reservedNames <list>', 'Disable obfuscation of variable names, function names and names of function parameters that match the passed RegExp patterns (comma separated)', function (val) {
 | 
											
												
													
														|  |                  return val.split(',');
 |  |                  return val.split(',');
 | 
											
												
													
														|  | -            }).option('--rotateStringArray <boolean>', 'Disable rotation of unicode array values during obfuscation', JavaScriptObfuscatorCLI.parseBoolean).option('--selfDefending <boolean>', 'Disables self-defending for obfuscated code', JavaScriptObfuscatorCLI.parseBoolean).option('--sourceMap <boolean>', 'Enables source map generation', JavaScriptObfuscatorCLI.parseBoolean).option('--sourceMapBaseUrl <string>', 'Sets base url to the source map import url when `--sourceMapMode=separate`').option('--sourceMapFileName <string>', 'Sets file name for output source map when `--sourceMapMode=separate`').option('--sourceMapMode <string> [inline, separate]', 'Specify source map output mode', JavaScriptObfuscatorCLI.parseSourceMapMode).option('--stringArray <boolean>', 'Disables gathering of all literal strings into an array and replacing every literal string with an array call', JavaScriptObfuscatorCLI.parseBoolean).option('--stringArrayEncoding <boolean|string> [true, false, base64, rc4]', 'Encodes all strings in strings array using base64 or rc4 (this option can slow down your code speed', JavaScriptObfuscatorCLI.parseStringArrayEncoding).option('--stringArrayThreshold <number>', 'The probability that the literal string will be inserted into stringArray (Default: 0.8, Min: 0, Max: 1)', parseFloat).option('--unicodeEscapeSequence <boolean>', 'Allows to enable/disable string conversion to unicode escape sequence', JavaScriptObfuscatorCLI.parseBoolean).parse(this.rawArguments);
 |  | 
 | 
											
												
													
														|  | 
 |  | +            }).option('--rotateStringArray <boolean>', 'Disable rotation of unicode array values during obfuscation', JavaScriptObfuscatorCLI.parseBoolean).option('--seed <number>', 'Sets seed for random generator. This is useful for creating repeatable results.', parseFloat).option('--selfDefending <boolean>', 'Disables self-defending for obfuscated code', JavaScriptObfuscatorCLI.parseBoolean).option('--sourceMap <boolean>', 'Enables source map generation', JavaScriptObfuscatorCLI.parseBoolean).option('--sourceMapBaseUrl <string>', 'Sets base url to the source map import url when `--sourceMapMode=separate`').option('--sourceMapFileName <string>', 'Sets file name for output source map when `--sourceMapMode=separate`').option('--sourceMapMode <string> [inline, separate]', 'Specify source map output mode', JavaScriptObfuscatorCLI.parseSourceMapMode).option('--stringArray <boolean>', 'Disables gathering of all literal strings into an array and replacing every literal string with an array call', JavaScriptObfuscatorCLI.parseBoolean).option('--stringArrayEncoding <boolean|string> [true, false, base64, rc4]', 'Encodes all strings in strings array using base64 or rc4 (this option can slow down your code speed', JavaScriptObfuscatorCLI.parseStringArrayEncoding).option('--stringArrayThreshold <number>', 'The probability that the literal string will be inserted into stringArray (Default: 0.8, Min: 0, Max: 1)', parseFloat).option('--unicodeEscapeSequence <boolean>', 'Allows to enable/disable string conversion to unicode escape sequence', JavaScriptObfuscatorCLI.parseBoolean).parse(this.rawArguments);
 | 
											
												
													
														|  |              this.commands.on('--help', function () {
 |  |              this.commands.on('--help', function () {
 | 
											
												
													
														|  |                  console.log('  Examples:\n');
 |  |                  console.log('  Examples:\n');
 | 
											
												
													
														|  |                  console.log('    %> javascript-obfuscator in.js --compact true --selfDefending false');
 |  |                  console.log('    %> javascript-obfuscator in.js --compact true --selfDefending false');
 | 
											
										
											
												
													
														|  | @@ -2131,10 +2159,7 @@ var DebugProtectionFunctionNode = function (_AbstractCustomNode_) {
 | 
											
												
													
														|  |          key: 'appendNode',
 |  |          key: 'appendNode',
 | 
											
												
													
														|  |          value: function appendNode(blockScopeNode) {
 |  |          value: function appendNode(blockScopeNode) {
 | 
											
												
													
														|  |              var programBodyLength = blockScopeNode.body.length,
 |  |              var programBodyLength = blockScopeNode.body.length,
 | 
											
												
													
														|  | -                randomIndex = Utils_1.Utils.getRandomGenerator().integer({
 |  | 
 | 
											
												
													
														|  | -                min: 0,
 |  | 
 | 
											
												
													
														|  | -                max: programBodyLength
 |  | 
 | 
											
												
													
														|  | -            });
 |  | 
 | 
											
												
													
														|  | 
 |  | +                randomIndex = Utils_1.Utils.getRandomInteger(0, programBodyLength);
 | 
											
												
													
														|  |              NodeAppender_1.NodeAppender.insertNodeAtIndex(blockScopeNode, this.getNode(), randomIndex);
 |  |              NodeAppender_1.NodeAppender.insertNodeAtIndex(blockScopeNode, this.getNode(), randomIndex);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |      }, {
 |  |      }, {
 | 
											
										
											
												
													
														|  | @@ -2273,7 +2298,9 @@ var SelfDefendingUnicodeNode = function (_AbstractCustomNode_) {
 | 
											
												
													
														|  |              return NodeUtils_1.NodeUtils.convertCodeToStructure(JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(SelfDefendingTemplate_1.SelfDefendingTemplate().formatUnicorn({
 |  |              return NodeUtils_1.NodeUtils.convertCodeToStructure(JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(SelfDefendingTemplate_1.SelfDefendingTemplate().formatUnicorn({
 | 
											
												
													
														|  |                  selfDefendingFunctionName: Utils_1.Utils.getRandomVariableName(),
 |  |                  selfDefendingFunctionName: Utils_1.Utils.getRandomVariableName(),
 | 
											
												
													
														|  |                  singleNodeCallControllerFunctionName: this.callsControllerFunctionName
 |  |                  singleNodeCallControllerFunctionName: this.callsControllerFunctionName
 | 
											
												
													
														|  | -            }), NoCustomNodesPreset_1.NO_CUSTOM_NODES_PRESET).getObfuscatedCode());
 |  | 
 | 
											
												
													
														|  | 
 |  | +            }), Object.assign({}, NoCustomNodesPreset_1.NO_CUSTOM_NODES_PRESET, {
 | 
											
												
													
														|  | 
 |  | +                seed: this.options.seed
 | 
											
												
													
														|  | 
 |  | +            })).getObfuscatedCode());
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |      }]);
 |  |      }]);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -2385,7 +2412,9 @@ var StringArrayCallsWrapper = function (_AbstractCustomNode_) {
 | 
											
												
													
														|  |                  decodeNodeTemplate: decodeNodeTemplate,
 |  |                  decodeNodeTemplate: decodeNodeTemplate,
 | 
											
												
													
														|  |                  stringArrayCallsWrapperName: this.stringArrayCallsWrapperName,
 |  |                  stringArrayCallsWrapperName: this.stringArrayCallsWrapperName,
 | 
											
												
													
														|  |                  stringArrayName: this.stringArrayName
 |  |                  stringArrayName: this.stringArrayName
 | 
											
												
													
														|  | -            }), NoCustomNodesPreset_1.NO_CUSTOM_NODES_PRESET).getObfuscatedCode());
 |  | 
 | 
											
												
													
														|  | 
 |  | +            }), Object.assign({}, NoCustomNodesPreset_1.NO_CUSTOM_NODES_PRESET, {
 | 
											
												
													
														|  | 
 |  | +                seed: this.options.seed
 | 
											
												
													
														|  | 
 |  | +            })).getObfuscatedCode());
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |      }]);
 |  |      }]);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -2557,7 +2586,9 @@ var StringArrayRotateFunctionNode = function (_AbstractCustomNode_) {
 | 
											
												
													
														|  |                  stringArrayName: this.stringArrayName,
 |  |                  stringArrayName: this.stringArrayName,
 | 
											
												
													
														|  |                  stringArrayRotateValue: Utils_1.Utils.decToHex(this.stringArrayRotateValue),
 |  |                  stringArrayRotateValue: Utils_1.Utils.decToHex(this.stringArrayRotateValue),
 | 
											
												
													
														|  |                  whileFunctionName: whileFunctionName
 |  |                  whileFunctionName: whileFunctionName
 | 
											
												
													
														|  | -            }), NoCustomNodesPreset_1.NO_CUSTOM_NODES_PRESET).getObfuscatedCode());
 |  | 
 | 
											
												
													
														|  | 
 |  | +            }), Object.assign({}, NoCustomNodesPreset_1.NO_CUSTOM_NODES_PRESET, {
 | 
											
												
													
														|  | 
 |  | +                seed: this.options.seed
 | 
											
												
													
														|  | 
 |  | +            })).getObfuscatedCode());
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |      }]);
 |  |      }]);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -2805,10 +2836,7 @@ var StringArrayNodesGroup = function (_AbstractNodesGroup_) {
 | 
											
												
													
														|  |                  return;
 |  |                  return;
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |              if (this.options.rotateStringArray) {
 |  |              if (this.options.rotateStringArray) {
 | 
											
												
													
														|  | -                this.stringArrayRotateValue = Utils_1.Utils.getRandomGenerator().integer({
 |  | 
 | 
											
												
													
														|  | -                    min: 100,
 |  | 
 | 
											
												
													
														|  | -                    max: 500
 |  | 
 | 
											
												
													
														|  | -                });
 |  | 
 | 
											
												
													
														|  | 
 |  | +                this.stringArrayRotateValue = Utils_1.Utils.getRandomInteger(100, 500);
 | 
											
												
													
														|  |              } else {
 |  |              } else {
 | 
											
												
													
														|  |                  this.stringArrayRotateValue = 0;
 |  |                  this.stringArrayRotateValue = 0;
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
										
											
												
													
														|  | @@ -3593,6 +3621,7 @@ __decorate([class_validator_1.IsArray(), class_validator_1.ArrayUnique(), class_
 | 
											
												
													
														|  |      each: true
 |  |      each: true
 | 
											
												
													
														|  |  }), __metadata('design:type', Array)], Options.prototype, "reservedNames", void 0);
 |  |  }), __metadata('design:type', Array)], Options.prototype, "reservedNames", void 0);
 | 
											
												
													
														|  |  __decorate([class_validator_1.IsBoolean(), __metadata('design:type', Boolean)], Options.prototype, "rotateStringArray", void 0);
 |  |  __decorate([class_validator_1.IsBoolean(), __metadata('design:type', Boolean)], Options.prototype, "rotateStringArray", void 0);
 | 
											
												
													
														|  | 
 |  | +__decorate([class_validator_1.IsNumber(), __metadata('design:type', Number)], Options.prototype, "seed", void 0);
 | 
											
												
													
														|  |  __decorate([class_validator_1.IsBoolean(), __metadata('design:type', Boolean)], Options.prototype, "selfDefending", void 0);
 |  |  __decorate([class_validator_1.IsBoolean(), __metadata('design:type', Boolean)], Options.prototype, "selfDefending", void 0);
 | 
											
												
													
														|  |  __decorate([class_validator_1.IsBoolean(), __metadata('design:type', Boolean)], Options.prototype, "sourceMap", void 0);
 |  |  __decorate([class_validator_1.IsBoolean(), __metadata('design:type', Boolean)], Options.prototype, "sourceMap", void 0);
 | 
											
												
													
														|  |  __decorate([class_validator_1.IsString(), class_validator_1.ValidateIf(function (options) {
 |  |  __decorate([class_validator_1.IsString(), class_validator_1.ValidateIf(function (options) {
 | 
											
										
											
												
													
														|  | @@ -4271,7 +4300,7 @@ exports.DebugProtectionFunctionIntervalTemplate = DebugProtectionFunctionInterva
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  var Utils_1 = __webpack_require__(0);
 |  |  var Utils_1 = __webpack_require__(0);
 | 
											
												
													
														|  |  function DebugProtectionFunctionTemplate() {
 |  |  function DebugProtectionFunctionTemplate() {
 | 
											
												
													
														|  | -    return '\n        var {debugProtectionFunctionName} = function () {\n            function debuggerProtection (counter) {\n                if ((\'\' + counter / counter)[\'length\'] !== 1 || counter % 20 === 0) {\n                    (function () {}.constructor(\'debugger\')());\n                } else {\n                    [].filter.constructor(' + Utils_1.Utils.stringToJSFuck('debugger') + ')();\n                }\n                \n                debuggerProtection(++counter);\n            }\n            \n            try {\n                debuggerProtection(0);\n            } catch (y) {}\n        };\n    ';
 |  | 
 | 
											
												
													
														|  | 
 |  | +    return '\n        var {debugProtectionFunctionName} = function () {\n            function debuggerProtection (counter) {\n                if ((\'\' + counter / counter)[\'length\'] !== 1 || counter % 20 === 0) {\n                    (function () {}.constructor(' + Utils_1.Utils.stringToJSFuck('debugger') + ')());\n                } else {\n                    (function () {}.constructor(' + Utils_1.Utils.stringToJSFuck('debugger') + ')());\n                }\n                \n                debuggerProtection(++counter);\n            }\n            \n            try {\n                debuggerProtection(0);\n            } catch (y) {}\n        };\n    ';
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  exports.DebugProtectionFunctionTemplate = DebugProtectionFunctionTemplate;
 |  |  exports.DebugProtectionFunctionTemplate = DebugProtectionFunctionTemplate;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -4432,8 +4461,7 @@ module.exports = require("mkdirp");
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  /***/ },
 |  |  /***/ },
 | 
											
												
													
														|  |  /* 87 */,
 |  |  /* 87 */,
 | 
											
												
													
														|  | -/* 88 */,
 |  | 
 | 
											
												
													
														|  | -/* 89 */
 |  | 
 | 
											
												
													
														|  | 
 |  | +/* 88 */
 | 
											
												
													
														|  |  /***/ function(module, exports, __webpack_require__) {
 |  |  /***/ function(module, exports, __webpack_require__) {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  "use strict";
 |  |  "use strict";
 |