docs: function (data) {
              try {
                  return btoa(data);
              }
              catch (e) {
                  // script file may contain characters that not included in Latin1
                  var symbols = data.split('');
                  for (var i = 0, l = symbols.length; i < l; i++) {
                      var symbol = symbols[i];
                      // here we are trying to find these symbols in catch branch
                      try {
                          btoa(symbol);
                      }
                      catch (e) {
                          var code = symbol.charCodeAt(0).toString(16);
                          while (code.length < 4) {
                              code = '0' + code;
                          }
                          // replace original symbol to unicode character
                          symbols[i] = '\\u' + code;
                      }
                  }
                  // create new base64 string from string with replaced characters
                  return btoa(symbols.join(''));
              }
          }