code: function evalExpression(sourceUrl$$1, ctx, vars) {
      var /** @type {?} */ fnBody = ctx.toSource() + "\n//# sourceURL=" + sourceUrl$$1;
      var /** @type {?} */ fnArgNames = [];
      var /** @type {?} */ fnArgValues = [];
      for (var /** @type {?} */ argName in vars) {
          fnArgNames.push(argName);
          fnArgValues.push(vars[argName]);
      }
      if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["t" /* isDevMode */])()) {
          // using `new Function(...)` generates a header, 1 line of no arguments, 2 lines otherwise
          // E.g. ```
          // function anonymous(a,b,c
          // /**/) { ... }```
          // We don't want to hard code this fact, so we auto detect it via an empty function first.
          var /** @type {?} */ emptyFn = new (Function.bind.apply(Function, [void 0].concat(fnArgNames.concat('return null;'))))().toString();
          var /** @type {?} */ headerLines = emptyFn.slice(0, emptyFn.indexOf('return null;')).split('\n').length - 1;
          fnBody += "\n" + ctx.toSourceMapGenerator(sourceUrl$$1, sourceUrl$$1, headerLines).toJsComment();
      }
      return new (Function.bind.apply(Function, [void 0].concat(fnArgNames.concat(fnBody))))().apply(void 0, fnArgValues);
  }
docs: @license
  Copyright Google Inc. All Rights Reserved.
  
  Use of this source code is governed by an MIT-style license that can be
  found in the LICENSE file at https://angular.io/license
   
  @param {?} sourceUrl
  @param {?} ctx
  @param {?} vars
  @return {?}