You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							1793 lines
						
					
					
						
							57 KiB
						
					
					
				
			
		
		
	
	
							1793 lines
						
					
					
						
							57 KiB
						
					
					
				"use strict";
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", {
 | 
						|
  value: true
 | 
						|
});
 | 
						|
exports.default = void 0;
 | 
						|
var _template = require("@babel/template");
 | 
						|
var _helpersGenerated = require("./helpers-generated");
 | 
						|
const helpers = Object.assign({
 | 
						|
  __proto__: null
 | 
						|
}, _helpersGenerated.default);
 | 
						|
var _default = helpers;
 | 
						|
exports.default = _default;
 | 
						|
const helper = minVersion => tpl => ({
 | 
						|
  minVersion,
 | 
						|
  ast: () => _template.default.program.ast(tpl)
 | 
						|
});
 | 
						|
{
 | 
						|
  helpers.AwaitValue = helper("7.0.0-beta.0")`
 | 
						|
    export default function _AwaitValue(value) {
 | 
						|
      this.wrapped = value;
 | 
						|
    }
 | 
						|
  `;
 | 
						|
}
 | 
						|
helpers.wrapAsyncGenerator = helper("7.0.0-beta.0")`
 | 
						|
  import AsyncGenerator from "AsyncGenerator";
 | 
						|
 | 
						|
  export default function _wrapAsyncGenerator(fn) {
 | 
						|
    return function () {
 | 
						|
      return new AsyncGenerator(fn.apply(this, arguments));
 | 
						|
    };
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.asyncToGenerator = helper("7.0.0-beta.0")`
 | 
						|
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
 | 
						|
    try {
 | 
						|
      var info = gen[key](arg);
 | 
						|
      var value = info.value;
 | 
						|
    } catch (error) {
 | 
						|
      reject(error);
 | 
						|
      return;
 | 
						|
    }
 | 
						|
 | 
						|
    if (info.done) {
 | 
						|
      resolve(value);
 | 
						|
    } else {
 | 
						|
      Promise.resolve(value).then(_next, _throw);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  export default function _asyncToGenerator(fn) {
 | 
						|
    return function () {
 | 
						|
      var self = this, args = arguments;
 | 
						|
      return new Promise(function (resolve, reject) {
 | 
						|
        var gen = fn.apply(self, args);
 | 
						|
        function _next(value) {
 | 
						|
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
 | 
						|
        }
 | 
						|
        function _throw(err) {
 | 
						|
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
 | 
						|
        }
 | 
						|
 | 
						|
        _next(undefined);
 | 
						|
      });
 | 
						|
    };
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classCallCheck = helper("7.0.0-beta.0")`
 | 
						|
  export default function _classCallCheck(instance, Constructor) {
 | 
						|
    if (!(instance instanceof Constructor)) {
 | 
						|
      throw new TypeError("Cannot call a class as a function");
 | 
						|
    }
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.createClass = helper("7.0.0-beta.0")`
 | 
						|
  import toPropertyKey from "toPropertyKey";
 | 
						|
  function _defineProperties(target, props) {
 | 
						|
    for (var i = 0; i < props.length; i ++) {
 | 
						|
      var descriptor = props[i];
 | 
						|
      descriptor.enumerable = descriptor.enumerable || false;
 | 
						|
      descriptor.configurable = true;
 | 
						|
      if ("value" in descriptor) descriptor.writable = true;
 | 
						|
      Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  export default function _createClass(Constructor, protoProps, staticProps) {
 | 
						|
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
 | 
						|
    if (staticProps) _defineProperties(Constructor, staticProps);
 | 
						|
    Object.defineProperty(Constructor, "prototype", { writable: false });
 | 
						|
    return Constructor;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.defineEnumerableProperties = helper("7.0.0-beta.0")`
 | 
						|
  export default function _defineEnumerableProperties(obj, descs) {
 | 
						|
    for (var key in descs) {
 | 
						|
      var desc = descs[key];
 | 
						|
      desc.configurable = desc.enumerable = true;
 | 
						|
      if ("value" in desc) desc.writable = true;
 | 
						|
      Object.defineProperty(obj, key, desc);
 | 
						|
    }
 | 
						|
 | 
						|
    // Symbols are not enumerated over by for-in loops. If native
 | 
						|
    // Symbols are available, fetch all of the descs object's own
 | 
						|
    // symbol properties and define them on our target object too.
 | 
						|
    if (Object.getOwnPropertySymbols) {
 | 
						|
      var objectSymbols = Object.getOwnPropertySymbols(descs);
 | 
						|
      for (var i = 0; i < objectSymbols.length; i++) {
 | 
						|
        var sym = objectSymbols[i];
 | 
						|
        var desc = descs[sym];
 | 
						|
        desc.configurable = desc.enumerable = true;
 | 
						|
        if ("value" in desc) desc.writable = true;
 | 
						|
        Object.defineProperty(obj, sym, desc);
 | 
						|
      }
 | 
						|
    }
 | 
						|
    return obj;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.defaults = helper("7.0.0-beta.0")`
 | 
						|
  export default function _defaults(obj, defaults) {
 | 
						|
    var keys = Object.getOwnPropertyNames(defaults);
 | 
						|
    for (var i = 0; i < keys.length; i++) {
 | 
						|
      var key = keys[i];
 | 
						|
      var value = Object.getOwnPropertyDescriptor(defaults, key);
 | 
						|
      if (value && value.configurable && obj[key] === undefined) {
 | 
						|
        Object.defineProperty(obj, key, value);
 | 
						|
      }
 | 
						|
    }
 | 
						|
    return obj;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.defineProperty = helper("7.0.0-beta.0")`
 | 
						|
  import toPropertyKey from "toPropertyKey";
 | 
						|
  export default function _defineProperty(obj, key, value) {
 | 
						|
    key = toPropertyKey(key);
 | 
						|
    // Shortcircuit the slow defineProperty path when possible.
 | 
						|
    // We are trying to avoid issues where setters defined on the
 | 
						|
    // prototype cause side effects under the fast path of simple
 | 
						|
    // assignment. By checking for existence of the property with
 | 
						|
    // the in operator, we can optimize most of this overhead away.
 | 
						|
    if (key in obj) {
 | 
						|
      Object.defineProperty(obj, key, {
 | 
						|
        value: value,
 | 
						|
        enumerable: true,
 | 
						|
        configurable: true,
 | 
						|
        writable: true
 | 
						|
      });
 | 
						|
    } else {
 | 
						|
      obj[key] = value;
 | 
						|
    }
 | 
						|
    return obj;
 | 
						|
  }
 | 
						|
`;
 | 
						|
 | 
						|
helpers.extends = helper("7.0.0-beta.0")`
 | 
						|
  export default function _extends() {
 | 
						|
    _extends = Object.assign ? Object.assign.bind() : function (target) {
 | 
						|
      for (var i = 1; i < arguments.length; i++) {
 | 
						|
        var source = arguments[i];
 | 
						|
        for (var key in source) {
 | 
						|
          if (Object.prototype.hasOwnProperty.call(source, key)) {
 | 
						|
            target[key] = source[key];
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
      return target;
 | 
						|
    };
 | 
						|
 | 
						|
    return _extends.apply(this, arguments);
 | 
						|
  }
 | 
						|
`;
 | 
						|
 | 
						|
helpers.objectSpread = helper("7.0.0-beta.0")`
 | 
						|
  import defineProperty from "defineProperty";
 | 
						|
 | 
						|
  export default function _objectSpread(target) {
 | 
						|
    for (var i = 1; i < arguments.length; i++) {
 | 
						|
      var source = (arguments[i] != null) ? Object(arguments[i]) : {};
 | 
						|
      var ownKeys = Object.keys(source);
 | 
						|
      if (typeof Object.getOwnPropertySymbols === 'function') {
 | 
						|
        ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function(sym) {
 | 
						|
          return Object.getOwnPropertyDescriptor(source, sym).enumerable;
 | 
						|
        }));
 | 
						|
      }
 | 
						|
      ownKeys.forEach(function(key) {
 | 
						|
        defineProperty(target, key, source[key]);
 | 
						|
      });
 | 
						|
    }
 | 
						|
    return target;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.inherits = helper("7.0.0-beta.0")`
 | 
						|
  import setPrototypeOf from "setPrototypeOf";
 | 
						|
 | 
						|
  export default function _inherits(subClass, superClass) {
 | 
						|
    if (typeof superClass !== "function" && superClass !== null) {
 | 
						|
      throw new TypeError("Super expression must either be null or a function");
 | 
						|
    }
 | 
						|
    // We can't use defineProperty to set the prototype in a single step because it
 | 
						|
    // doesn't work in Chrome <= 36. https://github.com/babel/babel/issues/14056
 | 
						|
    // V8 bug: https://bugs.chromium.org/p/v8/issues/detail?id=3334
 | 
						|
    subClass.prototype = Object.create(superClass && superClass.prototype, {
 | 
						|
      constructor: {
 | 
						|
        value: subClass,
 | 
						|
        writable: true,
 | 
						|
        configurable: true
 | 
						|
      }
 | 
						|
    });
 | 
						|
    Object.defineProperty(subClass, "prototype", { writable: false });
 | 
						|
    if (superClass) setPrototypeOf(subClass, superClass);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.inheritsLoose = helper("7.0.0-beta.0")`
 | 
						|
  import setPrototypeOf from "setPrototypeOf";
 | 
						|
 | 
						|
  export default function _inheritsLoose(subClass, superClass) {
 | 
						|
    subClass.prototype = Object.create(superClass.prototype);
 | 
						|
    subClass.prototype.constructor = subClass;
 | 
						|
    setPrototypeOf(subClass, superClass);
 | 
						|
  }
 | 
						|
`;
 | 
						|
 | 
						|
helpers.getPrototypeOf = helper("7.0.0-beta.0")`
 | 
						|
  export default function _getPrototypeOf(o) {
 | 
						|
    _getPrototypeOf = Object.setPrototypeOf
 | 
						|
      ? Object.getPrototypeOf.bind()
 | 
						|
      : function _getPrototypeOf(o) {
 | 
						|
          return o.__proto__ || Object.getPrototypeOf(o);
 | 
						|
        };
 | 
						|
    return _getPrototypeOf(o);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.setPrototypeOf = helper("7.0.0-beta.0")`
 | 
						|
  export default function _setPrototypeOf(o, p) {
 | 
						|
    _setPrototypeOf = Object.setPrototypeOf
 | 
						|
      ? Object.setPrototypeOf.bind()
 | 
						|
      : function _setPrototypeOf(o, p) {
 | 
						|
          o.__proto__ = p;
 | 
						|
          return o;
 | 
						|
        };
 | 
						|
    return _setPrototypeOf(o, p);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.isNativeReflectConstruct = helper("7.9.0")`
 | 
						|
  export default function _isNativeReflectConstruct() {
 | 
						|
    if (typeof Reflect === "undefined" || !Reflect.construct) return false;
 | 
						|
 | 
						|
    // core-js@3
 | 
						|
    if (Reflect.construct.sham) return false;
 | 
						|
 | 
						|
    // Proxy can't be polyfilled. Every browser implemented
 | 
						|
    // proxies before or at the same time as Reflect.construct,
 | 
						|
    // so if they support Proxy they also support Reflect.construct.
 | 
						|
    if (typeof Proxy === "function") return true;
 | 
						|
 | 
						|
    // Since Reflect.construct can't be properly polyfilled, some
 | 
						|
    // implementations (e.g. core-js@2) don't set the correct internal slots.
 | 
						|
    // Those polyfills don't allow us to subclass built-ins, so we need to
 | 
						|
    // use our fallback implementation.
 | 
						|
    try {
 | 
						|
      // If the internal slots aren't set, this throws an error similar to
 | 
						|
      //   TypeError: this is not a Boolean object.
 | 
						|
 | 
						|
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
 | 
						|
      return true;
 | 
						|
    } catch (e) {
 | 
						|
      return false;
 | 
						|
    }
 | 
						|
  }
 | 
						|
`;
 | 
						|
 | 
						|
helpers.construct = helper("7.0.0-beta.0")`
 | 
						|
  import setPrototypeOf from "setPrototypeOf";
 | 
						|
  import isNativeReflectConstruct from "isNativeReflectConstruct";
 | 
						|
 | 
						|
  export default function _construct(Parent, args, Class) {
 | 
						|
    if (isNativeReflectConstruct()) {
 | 
						|
      _construct = Reflect.construct.bind();
 | 
						|
    } else {
 | 
						|
      // NOTE: If Parent !== Class, the correct __proto__ is set *after*
 | 
						|
      //       calling the constructor.
 | 
						|
      _construct = function _construct(Parent, args, Class) {
 | 
						|
        var a = [null];
 | 
						|
        a.push.apply(a, args);
 | 
						|
        var Constructor = Function.bind.apply(Parent, a);
 | 
						|
        var instance = new Constructor();
 | 
						|
        if (Class) setPrototypeOf(instance, Class.prototype);
 | 
						|
        return instance;
 | 
						|
      };
 | 
						|
    }
 | 
						|
    // Avoid issues with Class being present but undefined when it wasn't
 | 
						|
    // present in the original call.
 | 
						|
    return _construct.apply(null, arguments);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.isNativeFunction = helper("7.0.0-beta.0")`
 | 
						|
  export default function _isNativeFunction(fn) {
 | 
						|
    // Note: This function returns "true" for core-js functions.
 | 
						|
    return Function.toString.call(fn).indexOf("[native code]") !== -1;
 | 
						|
  }
 | 
						|
`;
 | 
						|
 | 
						|
helpers.wrapNativeSuper = helper("7.0.0-beta.0")`
 | 
						|
  import getPrototypeOf from "getPrototypeOf";
 | 
						|
  import setPrototypeOf from "setPrototypeOf";
 | 
						|
  import isNativeFunction from "isNativeFunction";
 | 
						|
  import construct from "construct";
 | 
						|
 | 
						|
  export default function _wrapNativeSuper(Class) {
 | 
						|
    var _cache = typeof Map === "function" ? new Map() : undefined;
 | 
						|
 | 
						|
    _wrapNativeSuper = function _wrapNativeSuper(Class) {
 | 
						|
      if (Class === null || !isNativeFunction(Class)) return Class;
 | 
						|
      if (typeof Class !== "function") {
 | 
						|
        throw new TypeError("Super expression must either be null or a function");
 | 
						|
      }
 | 
						|
      if (typeof _cache !== "undefined") {
 | 
						|
        if (_cache.has(Class)) return _cache.get(Class);
 | 
						|
        _cache.set(Class, Wrapper);
 | 
						|
      }
 | 
						|
      function Wrapper() {
 | 
						|
        return construct(Class, arguments, getPrototypeOf(this).constructor)
 | 
						|
      }
 | 
						|
      Wrapper.prototype = Object.create(Class.prototype, {
 | 
						|
        constructor: {
 | 
						|
          value: Wrapper,
 | 
						|
          enumerable: false,
 | 
						|
          writable: true,
 | 
						|
          configurable: true,
 | 
						|
        }
 | 
						|
      });
 | 
						|
 | 
						|
      return setPrototypeOf(Wrapper, Class);
 | 
						|
    }
 | 
						|
 | 
						|
    return _wrapNativeSuper(Class)
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.instanceof = helper("7.0.0-beta.0")`
 | 
						|
  export default function _instanceof(left, right) {
 | 
						|
    if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
 | 
						|
      return !!right[Symbol.hasInstance](left);
 | 
						|
    } else {
 | 
						|
      return left instanceof right;
 | 
						|
    }
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.interopRequireDefault = helper("7.0.0-beta.0")`
 | 
						|
  export default function _interopRequireDefault(obj) {
 | 
						|
    return obj && obj.__esModule ? obj : { default: obj };
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.interopRequireWildcard = helper("7.14.0")`
 | 
						|
  function _getRequireWildcardCache(nodeInterop) {
 | 
						|
    if (typeof WeakMap !== "function") return null;
 | 
						|
 | 
						|
    var cacheBabelInterop = new WeakMap();
 | 
						|
    var cacheNodeInterop = new WeakMap();
 | 
						|
    return (_getRequireWildcardCache = function (nodeInterop) {
 | 
						|
      return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
 | 
						|
    })(nodeInterop);
 | 
						|
  }
 | 
						|
 | 
						|
  export default function _interopRequireWildcard(obj, nodeInterop) {
 | 
						|
    if (!nodeInterop && obj && obj.__esModule) {
 | 
						|
      return obj;
 | 
						|
    }
 | 
						|
 | 
						|
    if (obj === null || (typeof obj !== "object" && typeof obj !== "function")) {
 | 
						|
      return { default: obj }
 | 
						|
    }
 | 
						|
 | 
						|
    var cache = _getRequireWildcardCache(nodeInterop);
 | 
						|
    if (cache && cache.has(obj)) {
 | 
						|
      return cache.get(obj);
 | 
						|
    }
 | 
						|
 | 
						|
    var newObj = {};
 | 
						|
    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
 | 
						|
    for (var key in obj) {
 | 
						|
      if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
 | 
						|
        var desc = hasPropertyDescriptor
 | 
						|
          ? Object.getOwnPropertyDescriptor(obj, key)
 | 
						|
          : null;
 | 
						|
        if (desc && (desc.get || desc.set)) {
 | 
						|
          Object.defineProperty(newObj, key, desc);
 | 
						|
        } else {
 | 
						|
          newObj[key] = obj[key];
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
    newObj.default = obj;
 | 
						|
    if (cache) {
 | 
						|
      cache.set(obj, newObj);
 | 
						|
    }
 | 
						|
    return newObj;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.newArrowCheck = helper("7.0.0-beta.0")`
 | 
						|
  export default function _newArrowCheck(innerThis, boundThis) {
 | 
						|
    if (innerThis !== boundThis) {
 | 
						|
      throw new TypeError("Cannot instantiate an arrow function");
 | 
						|
    }
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.objectDestructuringEmpty = helper("7.0.0-beta.0")`
 | 
						|
  export default function _objectDestructuringEmpty(obj) {
 | 
						|
    if (obj == null) throw new TypeError("Cannot destructure " + obj);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.objectWithoutPropertiesLoose = helper("7.0.0-beta.0")`
 | 
						|
  export default function _objectWithoutPropertiesLoose(source, excluded) {
 | 
						|
    if (source == null) return {};
 | 
						|
 | 
						|
    var target = {};
 | 
						|
    var sourceKeys = Object.keys(source);
 | 
						|
    var key, i;
 | 
						|
 | 
						|
    for (i = 0; i < sourceKeys.length; i++) {
 | 
						|
      key = sourceKeys[i];
 | 
						|
      if (excluded.indexOf(key) >= 0) continue;
 | 
						|
      target[key] = source[key];
 | 
						|
    }
 | 
						|
 | 
						|
    return target;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.objectWithoutProperties = helper("7.0.0-beta.0")`
 | 
						|
  import objectWithoutPropertiesLoose from "objectWithoutPropertiesLoose";
 | 
						|
 | 
						|
  export default function _objectWithoutProperties(source, excluded) {
 | 
						|
    if (source == null) return {};
 | 
						|
 | 
						|
    var target = objectWithoutPropertiesLoose(source, excluded);
 | 
						|
    var key, i;
 | 
						|
 | 
						|
    if (Object.getOwnPropertySymbols) {
 | 
						|
      var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
 | 
						|
      for (i = 0; i < sourceSymbolKeys.length; i++) {
 | 
						|
        key = sourceSymbolKeys[i];
 | 
						|
        if (excluded.indexOf(key) >= 0) continue;
 | 
						|
        if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
 | 
						|
        target[key] = source[key];
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    return target;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.assertThisInitialized = helper("7.0.0-beta.0")`
 | 
						|
  export default function _assertThisInitialized(self) {
 | 
						|
    if (self === void 0) {
 | 
						|
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
 | 
						|
    }
 | 
						|
    return self;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.possibleConstructorReturn = helper("7.0.0-beta.0")`
 | 
						|
  import assertThisInitialized from "assertThisInitialized";
 | 
						|
 | 
						|
  export default function _possibleConstructorReturn(self, call) {
 | 
						|
    if (call && (typeof call === "object" || typeof call === "function")) {
 | 
						|
      return call;
 | 
						|
    } else if (call !== void 0) {
 | 
						|
      throw new TypeError("Derived constructors may only return object or undefined");
 | 
						|
    }
 | 
						|
 | 
						|
    return assertThisInitialized(self);
 | 
						|
  }
 | 
						|
`;
 | 
						|
 | 
						|
helpers.createSuper = helper("7.9.0")`
 | 
						|
  import getPrototypeOf from "getPrototypeOf";
 | 
						|
  import isNativeReflectConstruct from "isNativeReflectConstruct";
 | 
						|
  import possibleConstructorReturn from "possibleConstructorReturn";
 | 
						|
 | 
						|
  export default function _createSuper(Derived) {
 | 
						|
    var hasNativeReflectConstruct = isNativeReflectConstruct();
 | 
						|
 | 
						|
    return function _createSuperInternal() {
 | 
						|
      var Super = getPrototypeOf(Derived), result;
 | 
						|
      if (hasNativeReflectConstruct) {
 | 
						|
        // NOTE: This doesn't work if this.__proto__.constructor has been modified.
 | 
						|
        var NewTarget = getPrototypeOf(this).constructor;
 | 
						|
        result = Reflect.construct(Super, arguments, NewTarget);
 | 
						|
      } else {
 | 
						|
        result = Super.apply(this, arguments);
 | 
						|
      }
 | 
						|
      return possibleConstructorReturn(this, result);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 `;
 | 
						|
helpers.superPropBase = helper("7.0.0-beta.0")`
 | 
						|
  import getPrototypeOf from "getPrototypeOf";
 | 
						|
 | 
						|
  export default function _superPropBase(object, property) {
 | 
						|
    // Yes, this throws if object is null to being with, that's on purpose.
 | 
						|
    while (!Object.prototype.hasOwnProperty.call(object, property)) {
 | 
						|
      object = getPrototypeOf(object);
 | 
						|
      if (object === null) break;
 | 
						|
    }
 | 
						|
    return object;
 | 
						|
  }
 | 
						|
`;
 | 
						|
 | 
						|
helpers.get = helper("7.0.0-beta.0")`
 | 
						|
  import superPropBase from "superPropBase";
 | 
						|
 | 
						|
  export default function _get() {
 | 
						|
    if (typeof Reflect !== "undefined" && Reflect.get) {
 | 
						|
      _get = Reflect.get.bind();
 | 
						|
    } else {
 | 
						|
      _get = function _get(target, property, receiver) {
 | 
						|
        var base = superPropBase(target, property);
 | 
						|
 | 
						|
        if (!base) return;
 | 
						|
 | 
						|
        var desc = Object.getOwnPropertyDescriptor(base, property);
 | 
						|
        if (desc.get) {
 | 
						|
          // STEP 3. If receiver is not present, then set receiver to target.
 | 
						|
          return desc.get.call(arguments.length < 3 ? target : receiver);
 | 
						|
        }
 | 
						|
 | 
						|
        return desc.value;
 | 
						|
      };
 | 
						|
    }
 | 
						|
    return _get.apply(this, arguments);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.set = helper("7.0.0-beta.0")`
 | 
						|
  import superPropBase from "superPropBase";
 | 
						|
  import defineProperty from "defineProperty";
 | 
						|
 | 
						|
  function set(target, property, value, receiver) {
 | 
						|
    if (typeof Reflect !== "undefined" && Reflect.set) {
 | 
						|
      set = Reflect.set;
 | 
						|
    } else {
 | 
						|
      set = function set(target, property, value, receiver) {
 | 
						|
        var base = superPropBase(target, property);
 | 
						|
        var desc;
 | 
						|
 | 
						|
        if (base) {
 | 
						|
          desc = Object.getOwnPropertyDescriptor(base, property);
 | 
						|
          if (desc.set) {
 | 
						|
            desc.set.call(receiver, value);
 | 
						|
            return true;
 | 
						|
          } else if (!desc.writable) {
 | 
						|
            // Both getter and non-writable fall into this.
 | 
						|
            return false;
 | 
						|
          }
 | 
						|
        }
 | 
						|
 | 
						|
        // Without a super that defines the property, spec boils down to
 | 
						|
        // "define on receiver" for some reason.
 | 
						|
        desc = Object.getOwnPropertyDescriptor(receiver, property);
 | 
						|
        if (desc) {
 | 
						|
          if (!desc.writable) {
 | 
						|
            // Setter, getter, and non-writable fall into this.
 | 
						|
            return false;
 | 
						|
          }
 | 
						|
 | 
						|
          desc.value = value;
 | 
						|
          Object.defineProperty(receiver, property, desc);
 | 
						|
        } else {
 | 
						|
          // Avoid setters that may be defined on Sub's prototype, but not on
 | 
						|
          // the instance.
 | 
						|
          defineProperty(receiver, property, value);
 | 
						|
        }
 | 
						|
 | 
						|
        return true;
 | 
						|
      };
 | 
						|
    }
 | 
						|
 | 
						|
    return set(target, property, value, receiver);
 | 
						|
  }
 | 
						|
 | 
						|
  export default function _set(target, property, value, receiver, isStrict) {
 | 
						|
    var s = set(target, property, value, receiver || target);
 | 
						|
    if (!s && isStrict) {
 | 
						|
      throw new TypeError('failed to set property');
 | 
						|
    }
 | 
						|
 | 
						|
    return value;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.taggedTemplateLiteral = helper("7.0.0-beta.0")`
 | 
						|
  export default function _taggedTemplateLiteral(strings, raw) {
 | 
						|
    if (!raw) { raw = strings.slice(0); }
 | 
						|
    return Object.freeze(Object.defineProperties(strings, {
 | 
						|
        raw: { value: Object.freeze(raw) }
 | 
						|
    }));
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.taggedTemplateLiteralLoose = helper("7.0.0-beta.0")`
 | 
						|
  export default function _taggedTemplateLiteralLoose(strings, raw) {
 | 
						|
    if (!raw) { raw = strings.slice(0); }
 | 
						|
    strings.raw = raw;
 | 
						|
    return strings;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.readOnlyError = helper("7.0.0-beta.0")`
 | 
						|
  export default function _readOnlyError(name) {
 | 
						|
    throw new TypeError("\\"" + name + "\\" is read-only");
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.writeOnlyError = helper("7.12.13")`
 | 
						|
  export default function _writeOnlyError(name) {
 | 
						|
    throw new TypeError("\\"" + name + "\\" is write-only");
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classNameTDZError = helper("7.0.0-beta.0")`
 | 
						|
  export default function _classNameTDZError(name) {
 | 
						|
    throw new ReferenceError("Class \\"" + name + "\\" cannot be referenced in computed property keys.");
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.temporalUndefined = helper("7.0.0-beta.0")`
 | 
						|
  // This function isn't mean to be called, but to be used as a reference.
 | 
						|
  // We can't use a normal object because it isn't hoisted.
 | 
						|
  export default function _temporalUndefined() {}
 | 
						|
`;
 | 
						|
helpers.tdz = helper("7.5.5")`
 | 
						|
  export default function _tdzError(name) {
 | 
						|
    throw new ReferenceError(name + " is not defined - temporal dead zone");
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.temporalRef = helper("7.0.0-beta.0")`
 | 
						|
  import undef from "temporalUndefined";
 | 
						|
  import err from "tdz";
 | 
						|
 | 
						|
  export default function _temporalRef(val, name) {
 | 
						|
    return val === undef ? err(name) : val;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.slicedToArray = helper("7.0.0-beta.0")`
 | 
						|
  import arrayWithHoles from "arrayWithHoles";
 | 
						|
  import iterableToArrayLimit from "iterableToArrayLimit";
 | 
						|
  import unsupportedIterableToArray from "unsupportedIterableToArray";
 | 
						|
  import nonIterableRest from "nonIterableRest";
 | 
						|
 | 
						|
  export default function _slicedToArray(arr, i) {
 | 
						|
    return (
 | 
						|
      arrayWithHoles(arr) ||
 | 
						|
      iterableToArrayLimit(arr, i) ||
 | 
						|
      unsupportedIterableToArray(arr, i) ||
 | 
						|
      nonIterableRest()
 | 
						|
    );
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.slicedToArrayLoose = helper("7.0.0-beta.0")`
 | 
						|
  import arrayWithHoles from "arrayWithHoles";
 | 
						|
  import iterableToArrayLimitLoose from "iterableToArrayLimitLoose";
 | 
						|
  import unsupportedIterableToArray from "unsupportedIterableToArray";
 | 
						|
  import nonIterableRest from "nonIterableRest";
 | 
						|
 | 
						|
  export default function _slicedToArrayLoose(arr, i) {
 | 
						|
    return (
 | 
						|
      arrayWithHoles(arr) ||
 | 
						|
      iterableToArrayLimitLoose(arr, i) ||
 | 
						|
      unsupportedIterableToArray(arr, i) ||
 | 
						|
      nonIterableRest()
 | 
						|
    );
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.toArray = helper("7.0.0-beta.0")`
 | 
						|
  import arrayWithHoles from "arrayWithHoles";
 | 
						|
  import iterableToArray from "iterableToArray";
 | 
						|
  import unsupportedIterableToArray from "unsupportedIterableToArray";
 | 
						|
  import nonIterableRest from "nonIterableRest";
 | 
						|
 | 
						|
  export default function _toArray(arr) {
 | 
						|
    return (
 | 
						|
      arrayWithHoles(arr) ||
 | 
						|
      iterableToArray(arr) ||
 | 
						|
      unsupportedIterableToArray(arr) ||
 | 
						|
      nonIterableRest()
 | 
						|
    );
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.toConsumableArray = helper("7.0.0-beta.0")`
 | 
						|
  import arrayWithoutHoles from "arrayWithoutHoles";
 | 
						|
  import iterableToArray from "iterableToArray";
 | 
						|
  import unsupportedIterableToArray from "unsupportedIterableToArray";
 | 
						|
  import nonIterableSpread from "nonIterableSpread";
 | 
						|
 | 
						|
  export default function _toConsumableArray(arr) {
 | 
						|
    return (
 | 
						|
      arrayWithoutHoles(arr) ||
 | 
						|
      iterableToArray(arr) ||
 | 
						|
      unsupportedIterableToArray(arr) ||
 | 
						|
      nonIterableSpread()
 | 
						|
    );
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.arrayWithoutHoles = helper("7.0.0-beta.0")`
 | 
						|
  import arrayLikeToArray from "arrayLikeToArray";
 | 
						|
 | 
						|
  export default function _arrayWithoutHoles(arr) {
 | 
						|
    if (Array.isArray(arr)) return arrayLikeToArray(arr);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.arrayWithHoles = helper("7.0.0-beta.0")`
 | 
						|
  export default function _arrayWithHoles(arr) {
 | 
						|
    if (Array.isArray(arr)) return arr;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.maybeArrayLike = helper("7.9.0")`
 | 
						|
  import arrayLikeToArray from "arrayLikeToArray";
 | 
						|
 | 
						|
  export default function _maybeArrayLike(next, arr, i) {
 | 
						|
    if (arr && !Array.isArray(arr) && typeof arr.length === "number") {
 | 
						|
      var len = arr.length;
 | 
						|
      return arrayLikeToArray(arr, i !== void 0 && i < len ? i : len);
 | 
						|
    }
 | 
						|
    return next(arr, i);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.iterableToArray = helper("7.0.0-beta.0")`
 | 
						|
  export default function _iterableToArray(iter) {
 | 
						|
    if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.unsupportedIterableToArray = helper("7.9.0")`
 | 
						|
  import arrayLikeToArray from "arrayLikeToArray";
 | 
						|
 | 
						|
  export default function _unsupportedIterableToArray(o, minLen) {
 | 
						|
    if (!o) return;
 | 
						|
    if (typeof o === "string") return arrayLikeToArray(o, minLen);
 | 
						|
    var n = Object.prototype.toString.call(o).slice(8, -1);
 | 
						|
    if (n === "Object" && o.constructor) n = o.constructor.name;
 | 
						|
    if (n === "Map" || n === "Set") return Array.from(o);
 | 
						|
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
 | 
						|
      return arrayLikeToArray(o, minLen);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.arrayLikeToArray = helper("7.9.0")`
 | 
						|
  export default function _arrayLikeToArray(arr, len) {
 | 
						|
    if (len == null || len > arr.length) len = arr.length;
 | 
						|
    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
 | 
						|
    return arr2;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.nonIterableSpread = helper("7.0.0-beta.0")`
 | 
						|
  export default function _nonIterableSpread() {
 | 
						|
    throw new TypeError(
 | 
						|
      "Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
 | 
						|
    );
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.nonIterableRest = helper("7.0.0-beta.0")`
 | 
						|
  export default function _nonIterableRest() {
 | 
						|
    throw new TypeError(
 | 
						|
      "Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
 | 
						|
    );
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.createForOfIteratorHelper = helper("7.9.0")`
 | 
						|
  import unsupportedIterableToArray from "unsupportedIterableToArray";
 | 
						|
 | 
						|
  // s: start (create the iterator)
 | 
						|
  // n: next
 | 
						|
  // e: error (called whenever something throws)
 | 
						|
  // f: finish (always called at the end)
 | 
						|
 | 
						|
  export default function _createForOfIteratorHelper(o, allowArrayLike) {
 | 
						|
    var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
 | 
						|
 | 
						|
    if (!it) {
 | 
						|
      // Fallback for engines without symbol support
 | 
						|
      if (
 | 
						|
        Array.isArray(o) ||
 | 
						|
        (it = unsupportedIterableToArray(o)) ||
 | 
						|
        (allowArrayLike && o && typeof o.length === "number")
 | 
						|
      ) {
 | 
						|
        if (it) o = it;
 | 
						|
        var i = 0;
 | 
						|
        var F = function(){};
 | 
						|
        return {
 | 
						|
          s: F,
 | 
						|
          n: function() {
 | 
						|
            if (i >= o.length) return { done: true };
 | 
						|
            return { done: false, value: o[i++] };
 | 
						|
          },
 | 
						|
          e: function(e) { throw e; },
 | 
						|
          f: F,
 | 
						|
        };
 | 
						|
      }
 | 
						|
 | 
						|
      throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
 | 
						|
    }
 | 
						|
 | 
						|
    var normalCompletion = true, didErr = false, err;
 | 
						|
 | 
						|
    return {
 | 
						|
      s: function() {
 | 
						|
        it = it.call(o);
 | 
						|
      },
 | 
						|
      n: function() {
 | 
						|
        var step = it.next();
 | 
						|
        normalCompletion = step.done;
 | 
						|
        return step;
 | 
						|
      },
 | 
						|
      e: function(e) {
 | 
						|
        didErr = true;
 | 
						|
        err = e;
 | 
						|
      },
 | 
						|
      f: function() {
 | 
						|
        try {
 | 
						|
          if (!normalCompletion && it.return != null) it.return();
 | 
						|
        } finally {
 | 
						|
          if (didErr) throw err;
 | 
						|
        }
 | 
						|
      }
 | 
						|
    };
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.createForOfIteratorHelperLoose = helper("7.9.0")`
 | 
						|
  import unsupportedIterableToArray from "unsupportedIterableToArray";
 | 
						|
 | 
						|
  export default function _createForOfIteratorHelperLoose(o, allowArrayLike) {
 | 
						|
    var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
 | 
						|
 | 
						|
    if (it) return (it = it.call(o)).next.bind(it);
 | 
						|
 | 
						|
    // Fallback for engines without symbol support
 | 
						|
    if (
 | 
						|
      Array.isArray(o) ||
 | 
						|
      (it = unsupportedIterableToArray(o)) ||
 | 
						|
      (allowArrayLike && o && typeof o.length === "number")
 | 
						|
    ) {
 | 
						|
      if (it) o = it;
 | 
						|
      var i = 0;
 | 
						|
      return function() {
 | 
						|
        if (i >= o.length) return { done: true };
 | 
						|
        return { done: false, value: o[i++] };
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.skipFirstGeneratorNext = helper("7.0.0-beta.0")`
 | 
						|
  export default function _skipFirstGeneratorNext(fn) {
 | 
						|
    return function () {
 | 
						|
      var it = fn.apply(this, arguments);
 | 
						|
      it.next();
 | 
						|
      return it;
 | 
						|
    }
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.toPrimitive = helper("7.1.5")`
 | 
						|
  export default function _toPrimitive(
 | 
						|
    input,
 | 
						|
    hint /*: "default" | "string" | "number" | void */
 | 
						|
  ) {
 | 
						|
    if (typeof input !== "object" || input === null) return input;
 | 
						|
    var prim = input[Symbol.toPrimitive];
 | 
						|
    if (prim !== undefined) {
 | 
						|
      var res = prim.call(input, hint || "default");
 | 
						|
      if (typeof res !== "object") return res;
 | 
						|
      throw new TypeError("@@toPrimitive must return a primitive value.");
 | 
						|
    }
 | 
						|
    return (hint === "string" ? String : Number)(input);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.toPropertyKey = helper("7.1.5")`
 | 
						|
  import toPrimitive from "toPrimitive";
 | 
						|
 | 
						|
  export default function _toPropertyKey(arg) {
 | 
						|
    var key = toPrimitive(arg, "string");
 | 
						|
    return typeof key === "symbol" ? key : String(key);
 | 
						|
  }
 | 
						|
`;
 | 
						|
 | 
						|
helpers.initializerWarningHelper = helper("7.0.0-beta.0")`
 | 
						|
    export default function _initializerWarningHelper(descriptor, context){
 | 
						|
        throw new Error(
 | 
						|
          'Decorating class property failed. Please ensure that ' +
 | 
						|
          'proposal-class-properties is enabled and runs after the decorators transform.'
 | 
						|
        );
 | 
						|
    }
 | 
						|
`;
 | 
						|
 | 
						|
helpers.initializerDefineProperty = helper("7.0.0-beta.0")`
 | 
						|
    export default function _initializerDefineProperty(target, property, descriptor, context){
 | 
						|
        if (!descriptor) return;
 | 
						|
 | 
						|
        Object.defineProperty(target, property, {
 | 
						|
            enumerable: descriptor.enumerable,
 | 
						|
            configurable: descriptor.configurable,
 | 
						|
            writable: descriptor.writable,
 | 
						|
            value: descriptor.initializer ? descriptor.initializer.call(context) : void 0,
 | 
						|
        });
 | 
						|
    }
 | 
						|
`;
 | 
						|
 | 
						|
helpers.applyDecoratedDescriptor = helper("7.0.0-beta.0")`
 | 
						|
    export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context){
 | 
						|
        var desc = {};
 | 
						|
        Object.keys(descriptor).forEach(function(key){
 | 
						|
            desc[key] = descriptor[key];
 | 
						|
        });
 | 
						|
        desc.enumerable = !!desc.enumerable;
 | 
						|
        desc.configurable = !!desc.configurable;
 | 
						|
        if ('value' in desc || desc.initializer){
 | 
						|
            desc.writable = true;
 | 
						|
        }
 | 
						|
 | 
						|
        desc = decorators.slice().reverse().reduce(function(desc, decorator){
 | 
						|
            return decorator(target, property, desc) || desc;
 | 
						|
        }, desc);
 | 
						|
 | 
						|
        if (context && desc.initializer !== void 0){
 | 
						|
            desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
 | 
						|
            desc.initializer = undefined;
 | 
						|
        }
 | 
						|
 | 
						|
        if (desc.initializer === void 0){
 | 
						|
            Object.defineProperty(target, property, desc);
 | 
						|
            desc = null;
 | 
						|
        }
 | 
						|
 | 
						|
        return desc;
 | 
						|
    }
 | 
						|
`;
 | 
						|
helpers.classPrivateFieldLooseKey = helper("7.0.0-beta.0")`
 | 
						|
  var id = 0;
 | 
						|
  export default function _classPrivateFieldKey(name) {
 | 
						|
    return "__private_" + (id++) + "_" + name;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classPrivateFieldLooseBase = helper("7.0.0-beta.0")`
 | 
						|
  export default function _classPrivateFieldBase(receiver, privateKey) {
 | 
						|
    if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {
 | 
						|
      throw new TypeError("attempted to use private field on non-instance");
 | 
						|
    }
 | 
						|
    return receiver;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classPrivateFieldGet = helper("7.0.0-beta.0")`
 | 
						|
  import classApplyDescriptorGet from "classApplyDescriptorGet";
 | 
						|
  import classExtractFieldDescriptor from "classExtractFieldDescriptor";
 | 
						|
  export default function _classPrivateFieldGet(receiver, privateMap) {
 | 
						|
    var descriptor = classExtractFieldDescriptor(receiver, privateMap, "get");
 | 
						|
    return classApplyDescriptorGet(receiver, descriptor);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classPrivateFieldSet = helper("7.0.0-beta.0")`
 | 
						|
  import classApplyDescriptorSet from "classApplyDescriptorSet";
 | 
						|
  import classExtractFieldDescriptor from "classExtractFieldDescriptor";
 | 
						|
  export default function _classPrivateFieldSet(receiver, privateMap, value) {
 | 
						|
    var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set");
 | 
						|
    classApplyDescriptorSet(receiver, descriptor, value);
 | 
						|
    return value;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classPrivateFieldDestructureSet = helper("7.4.4")`
 | 
						|
  import classApplyDescriptorDestructureSet from "classApplyDescriptorDestructureSet";
 | 
						|
  import classExtractFieldDescriptor from "classExtractFieldDescriptor";
 | 
						|
  export default function _classPrivateFieldDestructureSet(receiver, privateMap) {
 | 
						|
    var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set");
 | 
						|
    return classApplyDescriptorDestructureSet(receiver, descriptor);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classExtractFieldDescriptor = helper("7.13.10")`
 | 
						|
  export default function _classExtractFieldDescriptor(receiver, privateMap, action) {
 | 
						|
    if (!privateMap.has(receiver)) {
 | 
						|
      throw new TypeError("attempted to " + action + " private field on non-instance");
 | 
						|
    }
 | 
						|
    return privateMap.get(receiver);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classStaticPrivateFieldSpecGet = helper("7.0.2")`
 | 
						|
  import classApplyDescriptorGet from "classApplyDescriptorGet";
 | 
						|
  import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess";
 | 
						|
  import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor";
 | 
						|
  export default function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {
 | 
						|
    classCheckPrivateStaticAccess(receiver, classConstructor);
 | 
						|
    classCheckPrivateStaticFieldDescriptor(descriptor, "get");
 | 
						|
    return classApplyDescriptorGet(receiver, descriptor);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classStaticPrivateFieldSpecSet = helper("7.0.2")`
 | 
						|
  import classApplyDescriptorSet from "classApplyDescriptorSet";
 | 
						|
  import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess";
 | 
						|
  import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor";
 | 
						|
  export default function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {
 | 
						|
    classCheckPrivateStaticAccess(receiver, classConstructor);
 | 
						|
    classCheckPrivateStaticFieldDescriptor(descriptor, "set");
 | 
						|
    classApplyDescriptorSet(receiver, descriptor, value);
 | 
						|
    return value;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classStaticPrivateMethodGet = helper("7.3.2")`
 | 
						|
  import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess";
 | 
						|
  export default function _classStaticPrivateMethodGet(receiver, classConstructor, method) {
 | 
						|
    classCheckPrivateStaticAccess(receiver, classConstructor);
 | 
						|
    return method;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classStaticPrivateMethodSet = helper("7.3.2")`
 | 
						|
  export default function _classStaticPrivateMethodSet() {
 | 
						|
    throw new TypeError("attempted to set read only static private field");
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classApplyDescriptorGet = helper("7.13.10")`
 | 
						|
  export default function _classApplyDescriptorGet(receiver, descriptor) {
 | 
						|
    if (descriptor.get) {
 | 
						|
      return descriptor.get.call(receiver);
 | 
						|
    }
 | 
						|
    return descriptor.value;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classApplyDescriptorSet = helper("7.13.10")`
 | 
						|
  export default function _classApplyDescriptorSet(receiver, descriptor, value) {
 | 
						|
    if (descriptor.set) {
 | 
						|
      descriptor.set.call(receiver, value);
 | 
						|
    } else {
 | 
						|
      if (!descriptor.writable) {
 | 
						|
        // This should only throw in strict mode, but class bodies are
 | 
						|
        // always strict and private fields can only be used inside
 | 
						|
        // class bodies.
 | 
						|
        throw new TypeError("attempted to set read only private field");
 | 
						|
      }
 | 
						|
      descriptor.value = value;
 | 
						|
    }
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classApplyDescriptorDestructureSet = helper("7.13.10")`
 | 
						|
  export default function _classApplyDescriptorDestructureSet(receiver, descriptor) {
 | 
						|
    if (descriptor.set) {
 | 
						|
      if (!("__destrObj" in descriptor)) {
 | 
						|
        descriptor.__destrObj = {
 | 
						|
          set value(v) {
 | 
						|
            descriptor.set.call(receiver, v)
 | 
						|
          },
 | 
						|
        };
 | 
						|
      }
 | 
						|
      return descriptor.__destrObj;
 | 
						|
    } else {
 | 
						|
      if (!descriptor.writable) {
 | 
						|
        // This should only throw in strict mode, but class bodies are
 | 
						|
        // always strict and private fields can only be used inside
 | 
						|
        // class bodies.
 | 
						|
        throw new TypeError("attempted to set read only private field");
 | 
						|
      }
 | 
						|
 | 
						|
      return descriptor;
 | 
						|
    }
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classStaticPrivateFieldDestructureSet = helper("7.13.10")`
 | 
						|
  import classApplyDescriptorDestructureSet from "classApplyDescriptorDestructureSet";
 | 
						|
  import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess";
 | 
						|
  import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor";
 | 
						|
  export default function _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) {
 | 
						|
    classCheckPrivateStaticAccess(receiver, classConstructor);
 | 
						|
    classCheckPrivateStaticFieldDescriptor(descriptor, "set");
 | 
						|
    return classApplyDescriptorDestructureSet(receiver, descriptor);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classCheckPrivateStaticAccess = helper("7.13.10")`
 | 
						|
  export default function _classCheckPrivateStaticAccess(receiver, classConstructor) {
 | 
						|
    if (receiver !== classConstructor) {
 | 
						|
      throw new TypeError("Private static access of wrong provenance");
 | 
						|
    }
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classCheckPrivateStaticFieldDescriptor = helper("7.13.10")`
 | 
						|
  export default function _classCheckPrivateStaticFieldDescriptor(descriptor, action) {
 | 
						|
    if (descriptor === undefined) {
 | 
						|
      throw new TypeError("attempted to " + action + " private static field before its declaration");
 | 
						|
    }
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.decorate = helper("7.1.5")`
 | 
						|
  import toArray from "toArray";
 | 
						|
  import toPropertyKey from "toPropertyKey";
 | 
						|
 | 
						|
  // These comments are stripped by @babel/template
 | 
						|
  /*::
 | 
						|
  type PropertyDescriptor =
 | 
						|
    | {
 | 
						|
        value: any,
 | 
						|
        writable: boolean,
 | 
						|
        configurable: boolean,
 | 
						|
        enumerable: boolean,
 | 
						|
      }
 | 
						|
    | {
 | 
						|
        get?: () => any,
 | 
						|
        set?: (v: any) => void,
 | 
						|
        configurable: boolean,
 | 
						|
        enumerable: boolean,
 | 
						|
      };
 | 
						|
 | 
						|
  type FieldDescriptor ={
 | 
						|
    writable: boolean,
 | 
						|
    configurable: boolean,
 | 
						|
    enumerable: boolean,
 | 
						|
  };
 | 
						|
 | 
						|
  type Placement = "static" | "prototype" | "own";
 | 
						|
  type Key = string | symbol; // PrivateName is not supported yet.
 | 
						|
 | 
						|
  type ElementDescriptor =
 | 
						|
    | {
 | 
						|
        kind: "method",
 | 
						|
        key: Key,
 | 
						|
        placement: Placement,
 | 
						|
        descriptor: PropertyDescriptor
 | 
						|
      }
 | 
						|
    | {
 | 
						|
        kind: "field",
 | 
						|
        key: Key,
 | 
						|
        placement: Placement,
 | 
						|
        descriptor: FieldDescriptor,
 | 
						|
        initializer?: () => any,
 | 
						|
      };
 | 
						|
 | 
						|
  // This is exposed to the user code
 | 
						|
  type ElementObjectInput = ElementDescriptor & {
 | 
						|
    [@@toStringTag]?: "Descriptor"
 | 
						|
  };
 | 
						|
 | 
						|
  // This is exposed to the user code
 | 
						|
  type ElementObjectOutput = ElementDescriptor & {
 | 
						|
    [@@toStringTag]?: "Descriptor"
 | 
						|
    extras?: ElementDescriptor[],
 | 
						|
    finisher?: ClassFinisher,
 | 
						|
  };
 | 
						|
 | 
						|
  // This is exposed to the user code
 | 
						|
  type ClassObject = {
 | 
						|
    [@@toStringTag]?: "Descriptor",
 | 
						|
    kind: "class",
 | 
						|
    elements: ElementDescriptor[],
 | 
						|
  };
 | 
						|
 | 
						|
  type ElementDecorator = (descriptor: ElementObjectInput) => ?ElementObjectOutput;
 | 
						|
  type ClassDecorator = (descriptor: ClassObject) => ?ClassObject;
 | 
						|
  type ClassFinisher = <A, B>(cl: Class<A>) => Class<B>;
 | 
						|
 | 
						|
  // Only used by Babel in the transform output, not part of the spec.
 | 
						|
  type ElementDefinition =
 | 
						|
    | {
 | 
						|
        kind: "method",
 | 
						|
        value: any,
 | 
						|
        key: Key,
 | 
						|
        static?: boolean,
 | 
						|
        decorators?: ElementDecorator[],
 | 
						|
      }
 | 
						|
    | {
 | 
						|
        kind: "field",
 | 
						|
        value: () => any,
 | 
						|
        key: Key,
 | 
						|
        static?: boolean,
 | 
						|
        decorators?: ElementDecorator[],
 | 
						|
    };
 | 
						|
 | 
						|
  declare function ClassFactory<C>(initialize: (instance: C) => void): {
 | 
						|
    F: Class<C>,
 | 
						|
    d: ElementDefinition[]
 | 
						|
  }
 | 
						|
 | 
						|
  */
 | 
						|
 | 
						|
  /*::
 | 
						|
  // Various combinations with/without extras and with one or many finishers
 | 
						|
 | 
						|
  type ElementFinisherExtras = {
 | 
						|
    element: ElementDescriptor,
 | 
						|
    finisher?: ClassFinisher,
 | 
						|
    extras?: ElementDescriptor[],
 | 
						|
  };
 | 
						|
 | 
						|
  type ElementFinishersExtras = {
 | 
						|
    element: ElementDescriptor,
 | 
						|
    finishers: ClassFinisher[],
 | 
						|
    extras: ElementDescriptor[],
 | 
						|
  };
 | 
						|
 | 
						|
  type ElementsFinisher = {
 | 
						|
    elements: ElementDescriptor[],
 | 
						|
    finisher?: ClassFinisher,
 | 
						|
  };
 | 
						|
 | 
						|
  type ElementsFinishers = {
 | 
						|
    elements: ElementDescriptor[],
 | 
						|
    finishers: ClassFinisher[],
 | 
						|
  };
 | 
						|
 | 
						|
  */
 | 
						|
 | 
						|
  /*::
 | 
						|
 | 
						|
  type Placements = {
 | 
						|
    static: Key[],
 | 
						|
    prototype: Key[],
 | 
						|
    own: Key[],
 | 
						|
  };
 | 
						|
 | 
						|
  */
 | 
						|
 | 
						|
  // ClassDefinitionEvaluation (Steps 26-*)
 | 
						|
  export default function _decorate(
 | 
						|
    decorators /*: ClassDecorator[] */,
 | 
						|
    factory /*: ClassFactory */,
 | 
						|
    superClass /*: ?Class<*> */,
 | 
						|
    mixins /*: ?Array<Function> */,
 | 
						|
  ) /*: Class<*> */ {
 | 
						|
    var api = _getDecoratorsApi();
 | 
						|
    if (mixins) {
 | 
						|
      for (var i = 0; i < mixins.length; i++) {
 | 
						|
        api = mixins[i](api);
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    var r = factory(function initialize(O) {
 | 
						|
      api.initializeInstanceElements(O, decorated.elements);
 | 
						|
    }, superClass);
 | 
						|
    var decorated = api.decorateClass(
 | 
						|
      _coalesceClassElements(r.d.map(_createElementDescriptor)),
 | 
						|
      decorators,
 | 
						|
    );
 | 
						|
 | 
						|
    api.initializeClassElements(r.F, decorated.elements);
 | 
						|
 | 
						|
    return api.runClassFinishers(r.F, decorated.finishers);
 | 
						|
  }
 | 
						|
 | 
						|
  function _getDecoratorsApi() {
 | 
						|
    _getDecoratorsApi = function() {
 | 
						|
      return api;
 | 
						|
    };
 | 
						|
 | 
						|
    var api = {
 | 
						|
      elementsDefinitionOrder: [["method"], ["field"]],
 | 
						|
 | 
						|
      // InitializeInstanceElements
 | 
						|
      initializeInstanceElements: function(
 | 
						|
        /*::<C>*/ O /*: C */,
 | 
						|
        elements /*: ElementDescriptor[] */,
 | 
						|
      ) {
 | 
						|
        ["method", "field"].forEach(function(kind) {
 | 
						|
          elements.forEach(function(element /*: ElementDescriptor */) {
 | 
						|
            if (element.kind === kind && element.placement === "own") {
 | 
						|
              this.defineClassElement(O, element);
 | 
						|
            }
 | 
						|
          }, this);
 | 
						|
        }, this);
 | 
						|
      },
 | 
						|
 | 
						|
      // InitializeClassElements
 | 
						|
      initializeClassElements: function(
 | 
						|
        /*::<C>*/ F /*: Class<C> */,
 | 
						|
        elements /*: ElementDescriptor[] */,
 | 
						|
      ) {
 | 
						|
        var proto = F.prototype;
 | 
						|
 | 
						|
        ["method", "field"].forEach(function(kind) {
 | 
						|
          elements.forEach(function(element /*: ElementDescriptor */) {
 | 
						|
            var placement = element.placement;
 | 
						|
            if (
 | 
						|
              element.kind === kind &&
 | 
						|
              (placement === "static" || placement === "prototype")
 | 
						|
            ) {
 | 
						|
              var receiver = placement === "static" ? F : proto;
 | 
						|
              this.defineClassElement(receiver, element);
 | 
						|
            }
 | 
						|
          }, this);
 | 
						|
        }, this);
 | 
						|
      },
 | 
						|
 | 
						|
      // DefineClassElement
 | 
						|
      defineClassElement: function(
 | 
						|
        /*::<C>*/ receiver /*: C | Class<C> */,
 | 
						|
        element /*: ElementDescriptor */,
 | 
						|
      ) {
 | 
						|
        var descriptor /*: PropertyDescriptor */ = element.descriptor;
 | 
						|
        if (element.kind === "field") {
 | 
						|
          var initializer = element.initializer;
 | 
						|
          descriptor = {
 | 
						|
            enumerable: descriptor.enumerable,
 | 
						|
            writable: descriptor.writable,
 | 
						|
            configurable: descriptor.configurable,
 | 
						|
            value: initializer === void 0 ? void 0 : initializer.call(receiver),
 | 
						|
          };
 | 
						|
        }
 | 
						|
        Object.defineProperty(receiver, element.key, descriptor);
 | 
						|
      },
 | 
						|
 | 
						|
      // DecorateClass
 | 
						|
      decorateClass: function(
 | 
						|
        elements /*: ElementDescriptor[] */,
 | 
						|
        decorators /*: ClassDecorator[] */,
 | 
						|
      ) /*: ElementsFinishers */ {
 | 
						|
        var newElements /*: ElementDescriptor[] */ = [];
 | 
						|
        var finishers /*: ClassFinisher[] */ = [];
 | 
						|
        var placements /*: Placements */ = {
 | 
						|
          static: [],
 | 
						|
          prototype: [],
 | 
						|
          own: [],
 | 
						|
        };
 | 
						|
 | 
						|
        elements.forEach(function(element /*: ElementDescriptor */) {
 | 
						|
          this.addElementPlacement(element, placements);
 | 
						|
        }, this);
 | 
						|
 | 
						|
        elements.forEach(function(element /*: ElementDescriptor */) {
 | 
						|
          if (!_hasDecorators(element)) return newElements.push(element);
 | 
						|
 | 
						|
          var elementFinishersExtras /*: ElementFinishersExtras */ = this.decorateElement(
 | 
						|
            element,
 | 
						|
            placements,
 | 
						|
          );
 | 
						|
          newElements.push(elementFinishersExtras.element);
 | 
						|
          newElements.push.apply(newElements, elementFinishersExtras.extras);
 | 
						|
          finishers.push.apply(finishers, elementFinishersExtras.finishers);
 | 
						|
        }, this);
 | 
						|
 | 
						|
        if (!decorators) {
 | 
						|
          return { elements: newElements, finishers: finishers };
 | 
						|
        }
 | 
						|
 | 
						|
        var result /*: ElementsFinishers */ = this.decorateConstructor(
 | 
						|
          newElements,
 | 
						|
          decorators,
 | 
						|
        );
 | 
						|
        finishers.push.apply(finishers, result.finishers);
 | 
						|
        result.finishers = finishers;
 | 
						|
 | 
						|
        return result;
 | 
						|
      },
 | 
						|
 | 
						|
      // AddElementPlacement
 | 
						|
      addElementPlacement: function(
 | 
						|
        element /*: ElementDescriptor */,
 | 
						|
        placements /*: Placements */,
 | 
						|
        silent /*: boolean */,
 | 
						|
      ) {
 | 
						|
        var keys = placements[element.placement];
 | 
						|
        if (!silent && keys.indexOf(element.key) !== -1) {
 | 
						|
          throw new TypeError("Duplicated element (" + element.key + ")");
 | 
						|
        }
 | 
						|
        keys.push(element.key);
 | 
						|
      },
 | 
						|
 | 
						|
      // DecorateElement
 | 
						|
      decorateElement: function(
 | 
						|
        element /*: ElementDescriptor */,
 | 
						|
        placements /*: Placements */,
 | 
						|
      ) /*: ElementFinishersExtras */ {
 | 
						|
        var extras /*: ElementDescriptor[] */ = [];
 | 
						|
        var finishers /*: ClassFinisher[] */ = [];
 | 
						|
 | 
						|
        for (
 | 
						|
          var decorators = element.decorators, i = decorators.length - 1;
 | 
						|
          i >= 0;
 | 
						|
          i--
 | 
						|
        ) {
 | 
						|
          // (inlined) RemoveElementPlacement
 | 
						|
          var keys = placements[element.placement];
 | 
						|
          keys.splice(keys.indexOf(element.key), 1);
 | 
						|
 | 
						|
          var elementObject /*: ElementObjectInput */ = this.fromElementDescriptor(
 | 
						|
            element,
 | 
						|
          );
 | 
						|
          var elementFinisherExtras /*: ElementFinisherExtras */ = this.toElementFinisherExtras(
 | 
						|
            (0, decorators[i])(elementObject) /*: ElementObjectOutput */ ||
 | 
						|
              elementObject,
 | 
						|
          );
 | 
						|
 | 
						|
          element = elementFinisherExtras.element;
 | 
						|
          this.addElementPlacement(element, placements);
 | 
						|
 | 
						|
          if (elementFinisherExtras.finisher) {
 | 
						|
            finishers.push(elementFinisherExtras.finisher);
 | 
						|
          }
 | 
						|
 | 
						|
          var newExtras /*: ElementDescriptor[] | void */ =
 | 
						|
            elementFinisherExtras.extras;
 | 
						|
          if (newExtras) {
 | 
						|
            for (var j = 0; j < newExtras.length; j++) {
 | 
						|
              this.addElementPlacement(newExtras[j], placements);
 | 
						|
            }
 | 
						|
            extras.push.apply(extras, newExtras);
 | 
						|
          }
 | 
						|
        }
 | 
						|
 | 
						|
        return { element: element, finishers: finishers, extras: extras };
 | 
						|
      },
 | 
						|
 | 
						|
      // DecorateConstructor
 | 
						|
      decorateConstructor: function(
 | 
						|
        elements /*: ElementDescriptor[] */,
 | 
						|
        decorators /*: ClassDecorator[] */,
 | 
						|
      ) /*: ElementsFinishers */ {
 | 
						|
        var finishers /*: ClassFinisher[] */ = [];
 | 
						|
 | 
						|
        for (var i = decorators.length - 1; i >= 0; i--) {
 | 
						|
          var obj /*: ClassObject */ = this.fromClassDescriptor(elements);
 | 
						|
          var elementsAndFinisher /*: ElementsFinisher */ = this.toClassDescriptor(
 | 
						|
            (0, decorators[i])(obj) /*: ClassObject */ || obj,
 | 
						|
          );
 | 
						|
 | 
						|
          if (elementsAndFinisher.finisher !== undefined) {
 | 
						|
            finishers.push(elementsAndFinisher.finisher);
 | 
						|
          }
 | 
						|
 | 
						|
          if (elementsAndFinisher.elements !== undefined) {
 | 
						|
            elements = elementsAndFinisher.elements;
 | 
						|
 | 
						|
            for (var j = 0; j < elements.length - 1; j++) {
 | 
						|
              for (var k = j + 1; k < elements.length; k++) {
 | 
						|
                if (
 | 
						|
                  elements[j].key === elements[k].key &&
 | 
						|
                  elements[j].placement === elements[k].placement
 | 
						|
                ) {
 | 
						|
                  throw new TypeError(
 | 
						|
                    "Duplicated element (" + elements[j].key + ")",
 | 
						|
                  );
 | 
						|
                }
 | 
						|
              }
 | 
						|
            }
 | 
						|
          }
 | 
						|
        }
 | 
						|
 | 
						|
        return { elements: elements, finishers: finishers };
 | 
						|
      },
 | 
						|
 | 
						|
      // FromElementDescriptor
 | 
						|
      fromElementDescriptor: function(
 | 
						|
        element /*: ElementDescriptor */,
 | 
						|
      ) /*: ElementObject */ {
 | 
						|
        var obj /*: ElementObject */ = {
 | 
						|
          kind: element.kind,
 | 
						|
          key: element.key,
 | 
						|
          placement: element.placement,
 | 
						|
          descriptor: element.descriptor,
 | 
						|
        };
 | 
						|
 | 
						|
        var desc = {
 | 
						|
          value: "Descriptor",
 | 
						|
          configurable: true,
 | 
						|
        };
 | 
						|
        Object.defineProperty(obj, Symbol.toStringTag, desc);
 | 
						|
 | 
						|
        if (element.kind === "field") obj.initializer = element.initializer;
 | 
						|
 | 
						|
        return obj;
 | 
						|
      },
 | 
						|
 | 
						|
      // ToElementDescriptors
 | 
						|
      toElementDescriptors: function(
 | 
						|
        elementObjects /*: ElementObject[] */,
 | 
						|
      ) /*: ElementDescriptor[] */ {
 | 
						|
        if (elementObjects === undefined) return;
 | 
						|
        return toArray(elementObjects).map(function(elementObject) {
 | 
						|
          var element = this.toElementDescriptor(elementObject);
 | 
						|
          this.disallowProperty(elementObject, "finisher", "An element descriptor");
 | 
						|
          this.disallowProperty(elementObject, "extras", "An element descriptor");
 | 
						|
          return element;
 | 
						|
        }, this);
 | 
						|
      },
 | 
						|
 | 
						|
      // ToElementDescriptor
 | 
						|
      toElementDescriptor: function(
 | 
						|
        elementObject /*: ElementObject */,
 | 
						|
      ) /*: ElementDescriptor */ {
 | 
						|
        var kind = String(elementObject.kind);
 | 
						|
        if (kind !== "method" && kind !== "field") {
 | 
						|
          throw new TypeError(
 | 
						|
            'An element descriptor\\'s .kind property must be either "method" or' +
 | 
						|
              ' "field", but a decorator created an element descriptor with' +
 | 
						|
              ' .kind "' +
 | 
						|
              kind +
 | 
						|
              '"',
 | 
						|
          );
 | 
						|
        }
 | 
						|
 | 
						|
        var key = toPropertyKey(elementObject.key);
 | 
						|
 | 
						|
        var placement = String(elementObject.placement);
 | 
						|
        if (
 | 
						|
          placement !== "static" &&
 | 
						|
          placement !== "prototype" &&
 | 
						|
          placement !== "own"
 | 
						|
        ) {
 | 
						|
          throw new TypeError(
 | 
						|
            'An element descriptor\\'s .placement property must be one of "static",' +
 | 
						|
              ' "prototype" or "own", but a decorator created an element descriptor' +
 | 
						|
              ' with .placement "' +
 | 
						|
              placement +
 | 
						|
              '"',
 | 
						|
          );
 | 
						|
        }
 | 
						|
 | 
						|
        var descriptor /*: PropertyDescriptor */ = elementObject.descriptor;
 | 
						|
 | 
						|
        this.disallowProperty(elementObject, "elements", "An element descriptor");
 | 
						|
 | 
						|
        var element /*: ElementDescriptor */ = {
 | 
						|
          kind: kind,
 | 
						|
          key: key,
 | 
						|
          placement: placement,
 | 
						|
          descriptor: Object.assign({}, descriptor),
 | 
						|
        };
 | 
						|
 | 
						|
        if (kind !== "field") {
 | 
						|
          this.disallowProperty(elementObject, "initializer", "A method descriptor");
 | 
						|
        } else {
 | 
						|
          this.disallowProperty(
 | 
						|
            descriptor,
 | 
						|
            "get",
 | 
						|
            "The property descriptor of a field descriptor",
 | 
						|
          );
 | 
						|
          this.disallowProperty(
 | 
						|
            descriptor,
 | 
						|
            "set",
 | 
						|
            "The property descriptor of a field descriptor",
 | 
						|
          );
 | 
						|
          this.disallowProperty(
 | 
						|
            descriptor,
 | 
						|
            "value",
 | 
						|
            "The property descriptor of a field descriptor",
 | 
						|
          );
 | 
						|
 | 
						|
          element.initializer = elementObject.initializer;
 | 
						|
        }
 | 
						|
 | 
						|
        return element;
 | 
						|
      },
 | 
						|
 | 
						|
      toElementFinisherExtras: function(
 | 
						|
        elementObject /*: ElementObject */,
 | 
						|
      ) /*: ElementFinisherExtras */ {
 | 
						|
        var element /*: ElementDescriptor */ = this.toElementDescriptor(
 | 
						|
          elementObject,
 | 
						|
        );
 | 
						|
        var finisher /*: ClassFinisher */ = _optionalCallableProperty(
 | 
						|
          elementObject,
 | 
						|
          "finisher",
 | 
						|
        );
 | 
						|
        var extras /*: ElementDescriptors[] */ = this.toElementDescriptors(
 | 
						|
          elementObject.extras,
 | 
						|
        );
 | 
						|
 | 
						|
        return { element: element, finisher: finisher, extras: extras };
 | 
						|
      },
 | 
						|
 | 
						|
      // FromClassDescriptor
 | 
						|
      fromClassDescriptor: function(
 | 
						|
        elements /*: ElementDescriptor[] */,
 | 
						|
      ) /*: ClassObject */ {
 | 
						|
        var obj = {
 | 
						|
          kind: "class",
 | 
						|
          elements: elements.map(this.fromElementDescriptor, this),
 | 
						|
        };
 | 
						|
 | 
						|
        var desc = { value: "Descriptor", configurable: true };
 | 
						|
        Object.defineProperty(obj, Symbol.toStringTag, desc);
 | 
						|
 | 
						|
        return obj;
 | 
						|
      },
 | 
						|
 | 
						|
      // ToClassDescriptor
 | 
						|
      toClassDescriptor: function(
 | 
						|
        obj /*: ClassObject */,
 | 
						|
      ) /*: ElementsFinisher */ {
 | 
						|
        var kind = String(obj.kind);
 | 
						|
        if (kind !== "class") {
 | 
						|
          throw new TypeError(
 | 
						|
            'A class descriptor\\'s .kind property must be "class", but a decorator' +
 | 
						|
              ' created a class descriptor with .kind "' +
 | 
						|
              kind +
 | 
						|
              '"',
 | 
						|
          );
 | 
						|
        }
 | 
						|
 | 
						|
        this.disallowProperty(obj, "key", "A class descriptor");
 | 
						|
        this.disallowProperty(obj, "placement", "A class descriptor");
 | 
						|
        this.disallowProperty(obj, "descriptor", "A class descriptor");
 | 
						|
        this.disallowProperty(obj, "initializer", "A class descriptor");
 | 
						|
        this.disallowProperty(obj, "extras", "A class descriptor");
 | 
						|
 | 
						|
        var finisher = _optionalCallableProperty(obj, "finisher");
 | 
						|
        var elements = this.toElementDescriptors(obj.elements);
 | 
						|
 | 
						|
        return { elements: elements, finisher: finisher };
 | 
						|
      },
 | 
						|
 | 
						|
      // RunClassFinishers
 | 
						|
      runClassFinishers: function(
 | 
						|
        constructor /*: Class<*> */,
 | 
						|
        finishers /*: ClassFinisher[] */,
 | 
						|
      ) /*: Class<*> */ {
 | 
						|
        for (var i = 0; i < finishers.length; i++) {
 | 
						|
          var newConstructor /*: ?Class<*> */ = (0, finishers[i])(constructor);
 | 
						|
          if (newConstructor !== undefined) {
 | 
						|
            // NOTE: This should check if IsConstructor(newConstructor) is false.
 | 
						|
            if (typeof newConstructor !== "function") {
 | 
						|
              throw new TypeError("Finishers must return a constructor.");
 | 
						|
            }
 | 
						|
            constructor = newConstructor;
 | 
						|
          }
 | 
						|
        }
 | 
						|
        return constructor;
 | 
						|
      },
 | 
						|
 | 
						|
      disallowProperty: function(obj, name, objectType) {
 | 
						|
        if (obj[name] !== undefined) {
 | 
						|
          throw new TypeError(objectType + " can't have a ." + name + " property.");
 | 
						|
        }
 | 
						|
      }
 | 
						|
    };
 | 
						|
 | 
						|
    return api;
 | 
						|
  }
 | 
						|
 | 
						|
  // ClassElementEvaluation
 | 
						|
  function _createElementDescriptor(
 | 
						|
    def /*: ElementDefinition */,
 | 
						|
  ) /*: ElementDescriptor */ {
 | 
						|
    var key = toPropertyKey(def.key);
 | 
						|
 | 
						|
    var descriptor /*: PropertyDescriptor */;
 | 
						|
    if (def.kind === "method") {
 | 
						|
      descriptor = {
 | 
						|
        value: def.value,
 | 
						|
        writable: true,
 | 
						|
        configurable: true,
 | 
						|
        enumerable: false,
 | 
						|
      };
 | 
						|
    } else if (def.kind === "get") {
 | 
						|
      descriptor = { get: def.value, configurable: true, enumerable: false };
 | 
						|
    } else if (def.kind === "set") {
 | 
						|
      descriptor = { set: def.value, configurable: true, enumerable: false };
 | 
						|
    } else if (def.kind === "field") {
 | 
						|
      descriptor = { configurable: true, writable: true, enumerable: true };
 | 
						|
    }
 | 
						|
 | 
						|
    var element /*: ElementDescriptor */ = {
 | 
						|
      kind: def.kind === "field" ? "field" : "method",
 | 
						|
      key: key,
 | 
						|
      placement: def.static
 | 
						|
        ? "static"
 | 
						|
        : def.kind === "field"
 | 
						|
        ? "own"
 | 
						|
        : "prototype",
 | 
						|
      descriptor: descriptor,
 | 
						|
    };
 | 
						|
    if (def.decorators) element.decorators = def.decorators;
 | 
						|
    if (def.kind === "field") element.initializer = def.value;
 | 
						|
 | 
						|
    return element;
 | 
						|
  }
 | 
						|
 | 
						|
  // CoalesceGetterSetter
 | 
						|
  function _coalesceGetterSetter(
 | 
						|
    element /*: ElementDescriptor */,
 | 
						|
    other /*: ElementDescriptor */,
 | 
						|
  ) {
 | 
						|
    if (element.descriptor.get !== undefined) {
 | 
						|
      other.descriptor.get = element.descriptor.get;
 | 
						|
    } else {
 | 
						|
      other.descriptor.set = element.descriptor.set;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  // CoalesceClassElements
 | 
						|
  function _coalesceClassElements(
 | 
						|
    elements /*: ElementDescriptor[] */,
 | 
						|
  ) /*: ElementDescriptor[] */ {
 | 
						|
    var newElements /*: ElementDescriptor[] */ = [];
 | 
						|
 | 
						|
    var isSameElement = function(
 | 
						|
      other /*: ElementDescriptor */,
 | 
						|
    ) /*: boolean */ {
 | 
						|
      return (
 | 
						|
        other.kind === "method" &&
 | 
						|
        other.key === element.key &&
 | 
						|
        other.placement === element.placement
 | 
						|
      );
 | 
						|
    };
 | 
						|
 | 
						|
    for (var i = 0; i < elements.length; i++) {
 | 
						|
      var element /*: ElementDescriptor */ = elements[i];
 | 
						|
      var other /*: ElementDescriptor */;
 | 
						|
 | 
						|
      if (
 | 
						|
        element.kind === "method" &&
 | 
						|
        (other = newElements.find(isSameElement))
 | 
						|
      ) {
 | 
						|
        if (
 | 
						|
          _isDataDescriptor(element.descriptor) ||
 | 
						|
          _isDataDescriptor(other.descriptor)
 | 
						|
        ) {
 | 
						|
          if (_hasDecorators(element) || _hasDecorators(other)) {
 | 
						|
            throw new ReferenceError(
 | 
						|
              "Duplicated methods (" + element.key + ") can't be decorated.",
 | 
						|
            );
 | 
						|
          }
 | 
						|
          other.descriptor = element.descriptor;
 | 
						|
        } else {
 | 
						|
          if (_hasDecorators(element)) {
 | 
						|
            if (_hasDecorators(other)) {
 | 
						|
              throw new ReferenceError(
 | 
						|
                "Decorators can't be placed on different accessors with for " +
 | 
						|
                  "the same property (" +
 | 
						|
                  element.key +
 | 
						|
                  ").",
 | 
						|
              );
 | 
						|
            }
 | 
						|
            other.decorators = element.decorators;
 | 
						|
          }
 | 
						|
          _coalesceGetterSetter(element, other);
 | 
						|
        }
 | 
						|
      } else {
 | 
						|
        newElements.push(element);
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    return newElements;
 | 
						|
  }
 | 
						|
 | 
						|
  function _hasDecorators(element /*: ElementDescriptor */) /*: boolean */ {
 | 
						|
    return element.decorators && element.decorators.length;
 | 
						|
  }
 | 
						|
 | 
						|
  function _isDataDescriptor(desc /*: PropertyDescriptor */) /*: boolean */ {
 | 
						|
    return (
 | 
						|
      desc !== undefined &&
 | 
						|
      !(desc.value === undefined && desc.writable === undefined)
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  function _optionalCallableProperty /*::<T>*/(
 | 
						|
    obj /*: T */,
 | 
						|
    name /*: $Keys<T> */,
 | 
						|
  ) /*: ?Function */ {
 | 
						|
    var value = obj[name];
 | 
						|
    if (value !== undefined && typeof value !== "function") {
 | 
						|
      throw new TypeError("Expected '" + name + "' to be a function");
 | 
						|
    }
 | 
						|
    return value;
 | 
						|
  }
 | 
						|
 | 
						|
`;
 | 
						|
helpers.classPrivateMethodGet = helper("7.1.6")`
 | 
						|
  export default function _classPrivateMethodGet(receiver, privateSet, fn) {
 | 
						|
    if (!privateSet.has(receiver)) {
 | 
						|
      throw new TypeError("attempted to get private field on non-instance");
 | 
						|
    }
 | 
						|
    return fn;
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.checkPrivateRedeclaration = helper("7.14.1")`
 | 
						|
  export default function _checkPrivateRedeclaration(obj, privateCollection) {
 | 
						|
    if (privateCollection.has(obj)) {
 | 
						|
      throw new TypeError("Cannot initialize the same private elements twice on an object");
 | 
						|
    }
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classPrivateFieldInitSpec = helper("7.14.1")`
 | 
						|
  import checkPrivateRedeclaration from "checkPrivateRedeclaration";
 | 
						|
 | 
						|
  export default function _classPrivateFieldInitSpec(obj, privateMap, value) {
 | 
						|
    checkPrivateRedeclaration(obj, privateMap);
 | 
						|
    privateMap.set(obj, value);
 | 
						|
  }
 | 
						|
`;
 | 
						|
helpers.classPrivateMethodInitSpec = helper("7.14.1")`
 | 
						|
  import checkPrivateRedeclaration from "checkPrivateRedeclaration";
 | 
						|
 | 
						|
  export default function _classPrivateMethodInitSpec(obj, privateSet) {
 | 
						|
    checkPrivateRedeclaration(obj, privateSet);
 | 
						|
    privateSet.add(obj);
 | 
						|
  }
 | 
						|
`;
 | 
						|
{
 | 
						|
  helpers.classPrivateMethodSet = helper("7.1.6")`
 | 
						|
    export default function _classPrivateMethodSet() {
 | 
						|
      throw new TypeError("attempted to reassign private method");
 | 
						|
    }
 | 
						|
  `;
 | 
						|
}
 | 
						|
helpers.identity = helper("7.17.0")`
 | 
						|
  export default function _identity(x) {
 | 
						|
    return x;
 | 
						|
  }
 | 
						|
`;
 | 
						|
 | 
						|
//# sourceMappingURL=helpers.js.map
 |