UNPKG

ember-legacy-class-transform

Version:
241 lines (192 loc) 23.2 kB
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; } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } import { isConst, isModified, map, ReferenceCache } from '@glimmer/reference'; import { clear, Cursor } from '../../bounds'; import { Fragment } from '../../builder'; import { isComponentDefinition } from '../../component/interfaces'; import { APPEND_OPCODES, UpdatingOpcode } from '../../opcodes'; import { ConditionalReference } from '../../references'; import { cautiousInsert, isNode, isSafeString, isString, trustingInsert } from '../../upsert'; APPEND_OPCODES.add(26 /* DynamicContent */, function (vm, _ref) { var append = _ref.op1; var opcode = vm.constants.getOther(append); opcode.evaluate(vm); }); function isEmpty(value) { return value === null || value === undefined || typeof value.toString !== 'function'; } export function normalizeTextValue(value) { if (isEmpty(value)) { return ''; } return String(value); } function normalizeTrustedValue(value) { if (isEmpty(value)) { return ''; } if (isString(value)) { return value; } if (isSafeString(value)) { return value.toHTML(); } if (isNode(value)) { return value; } return String(value); } function normalizeValue(value) { if (isEmpty(value)) { return ''; } if (isString(value)) { return value; } if (isSafeString(value) || isNode(value)) { return value; } return String(value); } export var AppendDynamicOpcode = function () { function AppendDynamicOpcode() { _classCallCheck(this, AppendDynamicOpcode); } AppendDynamicOpcode.prototype.evaluate = function evaluate(vm) { var reference = vm.stack.pop(); var normalized = this.normalize(reference); var value = void 0; var cache = void 0; if (isConst(reference)) { value = normalized.value(); } else { cache = new ReferenceCache(normalized); value = cache.peek(); } var stack = vm.elements(); var upsert = this.insert(vm.env.getAppendOperations(), stack, value); var bounds = new Fragment(upsert.bounds); stack.newBounds(bounds); if (cache /* i.e. !isConst(reference) */) { vm.updateWith(this.updateWith(vm, reference, cache, bounds, upsert)); } }; return AppendDynamicOpcode; }(); export var IsComponentDefinitionReference = function (_ConditionalReference) { _inherits(IsComponentDefinitionReference, _ConditionalReference); function IsComponentDefinitionReference() { _classCallCheck(this, IsComponentDefinitionReference); return _possibleConstructorReturn(this, _ConditionalReference.apply(this, arguments)); } IsComponentDefinitionReference.create = function create(inner) { return new IsComponentDefinitionReference(inner); }; IsComponentDefinitionReference.prototype.toBool = function toBool(value) { return isComponentDefinition(value); }; return IsComponentDefinitionReference; }(ConditionalReference); var UpdateOpcode = function (_UpdatingOpcode) { _inherits(UpdateOpcode, _UpdatingOpcode); function UpdateOpcode(cache, bounds, upsert) { _classCallCheck(this, UpdateOpcode); var _this2 = _possibleConstructorReturn(this, _UpdatingOpcode.call(this)); _this2.cache = cache; _this2.bounds = bounds; _this2.upsert = upsert; _this2.tag = cache.tag; return _this2; } UpdateOpcode.prototype.evaluate = function evaluate(vm) { var value = this.cache.revalidate(); if (isModified(value)) { var bounds = this.bounds, upsert = this.upsert; var dom = vm.dom; if (!this.upsert.update(dom, value)) { var cursor = new Cursor(bounds.parentElement(), clear(bounds)); upsert = this.upsert = this.insert(vm.env.getAppendOperations(), cursor, value); } bounds.update(upsert.bounds); } }; UpdateOpcode.prototype.toJSON = function toJSON() { var guid = this._guid, type = this.type, cache = this.cache; return { details: { lastValue: JSON.stringify(cache.peek()) }, guid: guid, type: type }; }; return UpdateOpcode; }(UpdatingOpcode); export var OptimizedCautiousAppendOpcode = function (_AppendDynamicOpcode) { _inherits(OptimizedCautiousAppendOpcode, _AppendDynamicOpcode); function OptimizedCautiousAppendOpcode() { _classCallCheck(this, OptimizedCautiousAppendOpcode); var _this3 = _possibleConstructorReturn(this, _AppendDynamicOpcode.apply(this, arguments)); _this3.type = 'optimized-cautious-append'; return _this3; } OptimizedCautiousAppendOpcode.prototype.normalize = function normalize(reference) { return map(reference, normalizeValue); }; OptimizedCautiousAppendOpcode.prototype.insert = function insert(dom, cursor, value) { return cautiousInsert(dom, cursor, value); }; OptimizedCautiousAppendOpcode.prototype.updateWith = function updateWith(_vm, _reference, cache, bounds, upsert) { return new OptimizedCautiousUpdateOpcode(cache, bounds, upsert); }; return OptimizedCautiousAppendOpcode; }(AppendDynamicOpcode); var OptimizedCautiousUpdateOpcode = function (_UpdateOpcode) { _inherits(OptimizedCautiousUpdateOpcode, _UpdateOpcode); function OptimizedCautiousUpdateOpcode() { _classCallCheck(this, OptimizedCautiousUpdateOpcode); var _this4 = _possibleConstructorReturn(this, _UpdateOpcode.apply(this, arguments)); _this4.type = 'optimized-cautious-update'; return _this4; } OptimizedCautiousUpdateOpcode.prototype.insert = function insert(dom, cursor, value) { return cautiousInsert(dom, cursor, value); }; return OptimizedCautiousUpdateOpcode; }(UpdateOpcode); export var OptimizedTrustingAppendOpcode = function (_AppendDynamicOpcode2) { _inherits(OptimizedTrustingAppendOpcode, _AppendDynamicOpcode2); function OptimizedTrustingAppendOpcode() { _classCallCheck(this, OptimizedTrustingAppendOpcode); var _this5 = _possibleConstructorReturn(this, _AppendDynamicOpcode2.apply(this, arguments)); _this5.type = 'optimized-trusting-append'; return _this5; } OptimizedTrustingAppendOpcode.prototype.normalize = function normalize(reference) { return map(reference, normalizeTrustedValue); }; OptimizedTrustingAppendOpcode.prototype.insert = function insert(dom, cursor, value) { return trustingInsert(dom, cursor, value); }; OptimizedTrustingAppendOpcode.prototype.updateWith = function updateWith(_vm, _reference, cache, bounds, upsert) { return new OptimizedTrustingUpdateOpcode(cache, bounds, upsert); }; return OptimizedTrustingAppendOpcode; }(AppendDynamicOpcode); var OptimizedTrustingUpdateOpcode = function (_UpdateOpcode2) { _inherits(OptimizedTrustingUpdateOpcode, _UpdateOpcode2); function OptimizedTrustingUpdateOpcode() { _classCallCheck(this, OptimizedTrustingUpdateOpcode); var _this6 = _possibleConstructorReturn(this, _UpdateOpcode2.apply(this, arguments)); _this6.type = 'optimized-trusting-update'; return _this6; } OptimizedTrustingUpdateOpcode.prototype.insert = function insert(dom, cursor, value) { return trustingInsert(dom, cursor, value); }; return OptimizedTrustingUpdateOpcode; }(UpdateOpcode); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQuanMiXSwibmFtZXMiOlsiaXNDb25zdCIsImlzTW9kaWZpZWQiLCJtYXAiLCJSZWZlcmVuY2VDYWNoZSIsImNsZWFyIiwiQ3Vyc29yIiwiRnJhZ21lbnQiLCJpc0NvbXBvbmVudERlZmluaXRpb24iLCJBUFBFTkRfT1BDT0RFUyIsIlVwZGF0aW5nT3Bjb2RlIiwiQ29uZGl0aW9uYWxSZWZlcmVuY2UiLCJjYXV0aW91c0luc2VydCIsImlzTm9kZSIsImlzU2FmZVN0cmluZyIsImlzU3RyaW5nIiwidHJ1c3RpbmdJbnNlcnQiLCJhZGQiLCJ2bSIsImFwcGVuZCIsIm9wMSIsIm9wY29kZSIsImNvbnN0YW50cyIsImdldE90aGVyIiwiZXZhbHVhdGUiLCJpc0VtcHR5IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJ0b1N0cmluZyIsIm5vcm1hbGl6ZVRleHRWYWx1ZSIsIlN0cmluZyIsIm5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSIsInRvSFRNTCIsIm5vcm1hbGl6ZVZhbHVlIiwiQXBwZW5kRHluYW1pY09wY29kZSIsInJlZmVyZW5jZSIsInN0YWNrIiwicG9wIiwibm9ybWFsaXplZCIsIm5vcm1hbGl6ZSIsImNhY2hlIiwicGVlayIsImVsZW1lbnRzIiwidXBzZXJ0IiwiaW5zZXJ0IiwiZW52IiwiZ2V0QXBwZW5kT3BlcmF0aW9ucyIsImJvdW5kcyIsIm5ld0JvdW5kcyIsInVwZGF0ZVdpdGgiLCJJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UiLCJjcmVhdGUiLCJpbm5lciIsInRvQm9vbCIsIlVwZGF0ZU9wY29kZSIsInRhZyIsInJldmFsaWRhdGUiLCJkb20iLCJ1cGRhdGUiLCJjdXJzb3IiLCJwYXJlbnRFbGVtZW50IiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwidHlwZSIsImRldGFpbHMiLCJsYXN0VmFsdWUiLCJKU09OIiwic3RyaW5naWZ5IiwiT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUiLCJhcmd1bWVudHMiLCJfdm0iLCJfcmVmZXJlbmNlIiwiT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUiLCJPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSIsIk9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLE9BQVQsRUFBa0JDLFVBQWxCLEVBQThCQyxHQUE5QixFQUFtQ0MsY0FBbkMsUUFBeUQsb0JBQXpEO0FBQ0EsU0FBU0MsS0FBVCxFQUFnQkMsTUFBaEIsUUFBOEIsY0FBOUI7QUFDQSxTQUFTQyxRQUFULFFBQXlCLGVBQXpCO0FBQ0EsU0FBU0MscUJBQVQsUUFBc0MsNEJBQXRDO0FBQ0EsU0FBU0MsY0FBVCxFQUF5QkMsY0FBekIsUUFBK0MsZUFBL0M7QUFDQSxTQUFTQyxvQkFBVCxRQUFxQyxrQkFBckM7QUFDQSxTQUFTQyxjQUFULEVBQXlCQyxNQUF6QixFQUFpQ0MsWUFBakMsRUFBK0NDLFFBQS9DLEVBQXlEQyxjQUF6RCxRQUErRSxjQUEvRTtBQUNBUCxlQUFlUSxHQUFmLENBQW1CLEVBQW5CLENBQXNCLG9CQUF0QixFQUE0QyxVQUFDQyxFQUFELFFBQXlCO0FBQUEsUUFBYkMsTUFBYSxRQUFsQkMsR0FBa0I7O0FBQ2pFLFFBQUlDLFNBQVNILEdBQUdJLFNBQUgsQ0FBYUMsUUFBYixDQUFzQkosTUFBdEIsQ0FBYjtBQUNBRSxXQUFPRyxRQUFQLENBQWdCTixFQUFoQjtBQUNILENBSEQ7QUFJQSxTQUFTTyxPQUFULENBQWlCQyxLQUFqQixFQUF3QjtBQUNwQixXQUFPQSxVQUFVLElBQVYsSUFBa0JBLFVBQVVDLFNBQTVCLElBQXlDLE9BQU9ELE1BQU1FLFFBQWIsS0FBMEIsVUFBMUU7QUFDSDtBQUNELE9BQU8sU0FBU0Msa0JBQVQsQ0FBNEJILEtBQTVCLEVBQW1DO0FBQ3RDLFFBQUlELFFBQVFDLEtBQVIsQ0FBSixFQUFvQjtBQUNoQixlQUFPLEVBQVA7QUFDSDtBQUNELFdBQU9JLE9BQU9KLEtBQVAsQ0FBUDtBQUNI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QUFDSCxLQVZMOztBQUFBLDRDQVdJdUIsVUFYSix1QkFXZXNCLEdBWGYsRUFXb0JDLFVBWHBCLEVBV2dDaEMsS0FYaEMsRUFXdUNPLE1BWHZDLEVBVytDSixNQVgvQyxFQVd1RDtBQUMvQyxlQUFPLElBQUlnQyw2QkFBSixDQUFrQ25DLEtBQWxDLEVBQXlDTyxNQUF6QyxFQUFpREosTUFBakQsQ0FBUDtBQUNILEtBYkw7O0FBQUE7QUFBQSxFQUFtRFQsbUJBQW5EOztJQWVNeUMsNkI7OztBQUNGLDZDQUFjO0FBQUE7O0FBQUEsc0RBQ1YsMkJBQVNMLFNBQVQsQ0FEVTs7QUFFVixlQUFLTixJQUFMLEdBQVksMkJBQVo7QUFGVTtBQUdiOzs0Q0FDRHBCLE0sbUJBQU9hLEcsRUFBS0UsTSxFQUFRakMsSyxFQUFPO0FBQ3ZCLGVBQU9WLGVBQWV5QyxHQUFmLEVBQW9CRSxNQUFwQixFQUE0QmpDLEtBQTVCLENBQVA7QUFDSCxLOzs7RUFQdUM0QixZIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0NvbnN0LCBpc01vZGlmaWVkLCBtYXAsIFJlZmVyZW5jZUNhY2hlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IGNsZWFyLCBDdXJzb3IgfSBmcm9tICcuLi8uLi9ib3VuZHMnO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tICcuLi8uLi9idWlsZGVyJztcbmltcG9ydCB7IGlzQ29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IGNhdXRpb3VzSW5zZXJ0LCBpc05vZGUsIGlzU2FmZVN0cmluZywgaXNTdHJpbmcsIHRydXN0aW5nSW5zZXJ0IH0gZnJvbSAnLi4vLi4vdXBzZXJ0JztcbkFQUEVORF9PUENPREVTLmFkZCgyNiAvKiBEeW5hbWljQ29udGVudCAqLywgKHZtLCB7IG9wMTogYXBwZW5kIH0pID0+IHtcbiAgICBsZXQgb3Bjb2RlID0gdm0uY29uc3RhbnRzLmdldE90aGVyKGFwcGVuZCk7XG4gICAgb3Bjb2RlLmV2YWx1YXRlKHZtKTtcbn0pO1xuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB2YWx1ZS50b1N0cmluZyAhPT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVUZXh0VmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSh2YWx1ZSkge1xuICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUudG9IVE1MKCk7XG4gICAgfVxuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSB8fCBpc05vZGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5leHBvcnQgY2xhc3MgQXBwZW5kRHluYW1pY09wY29kZSB7XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcCgpO1xuICAgICAgICBsZXQgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplKHJlZmVyZW5jZSk7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgbGV0IGNhY2hlO1xuICAgICAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IG5vcm1hbGl6ZWQudmFsdWUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKG5vcm1hbGl6ZWQpO1xuICAgICAgICAgICAgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHN0YWNrID0gdm0uZWxlbWVudHMoKTtcbiAgICAgICAgbGV0IHVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIHN0YWNrLCB2YWx1ZSk7XG4gICAgICAgIGxldCBib3VuZHMgPSBuZXcgRnJhZ21lbnQodXBzZXJ0LmJvdW5kcyk7XG4gICAgICAgIHN0YWNrLm5ld0JvdW5kcyhib3VuZHMpO1xuICAgICAgICBpZiAoY2FjaGUgLyogaS5lLiAhaXNDb25zdChyZWZlcmVuY2UpICovKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aCh0aGlzLnVwZGF0ZVdpdGgodm0sIHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSk7XG4gICAgICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSBleHRlbmRzIENvbmRpdGlvbmFsUmVmZXJlbmNlIHtcbiAgICBzdGF0aWMgY3JlYXRlKGlubmVyKSB7XG4gICAgICAgIHJldHVybiBuZXcgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlKGlubmVyKTtcbiAgICB9XG4gICAgdG9Cb29sKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpO1xuICAgIH1cbn1cbmNsYXNzIFVwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihjYWNoZSwgYm91bmRzLCB1cHNlcnQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICAgICAgdGhpcy51cHNlcnQgPSB1cHNlcnQ7XG4gICAgICAgIHRoaXMudGFnID0gY2FjaGUudGFnO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmNhY2hlLnJldmFsaWRhdGUoKTtcbiAgICAgICAgaWYgKGlzTW9kaWZpZWQodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyBib3VuZHMsIHVwc2VydCB9ID0gdGhpcztcbiAgICAgICAgICAgIGxldCB7IGRvbSB9ID0gdm07XG4gICAgICAgICAgICBpZiAoIXRoaXMudXBzZXJ0LnVwZGF0ZShkb20sIHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGxldCBjdXJzb3IgPSBuZXcgQ3Vyc29yKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIGNsZWFyKGJvdW5kcykpO1xuICAgICAgICAgICAgICAgIHVwc2VydCA9IHRoaXMudXBzZXJ0ID0gdGhpcy5pbnNlcnQodm0uZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBib3VuZHMudXBkYXRlKHVwc2VydC5ib3VuZHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGV0YWlsczogeyBsYXN0VmFsdWU6IEpTT04uc3RyaW5naWZ5KGNhY2hlLnBlZWsoKSkgfSxcbiAgICAgICAgICAgIGd1aWQsXG4gICAgICAgICAgICB0eXBlXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtYXBwZW5kJztcbiAgICB9XG4gICAgbm9ybWFsaXplKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICAgIH1cbiAgICBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICB1cGRhdGVXaXRoKF92bSwgX3JlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSB7XG4gICAgICAgIHJldHVybiBuZXcgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgICB9XG59XG5jbGFzcyBPcHRpbWl6ZWRDYXV0aW91c1VwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0ZU9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtdXBkYXRlJztcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBBcHBlbmREeW5hbWljT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ29wdGltaXplZC10cnVzdGluZy1hcHBlbmQnO1xuICAgIH1cbiAgICBub3JtYWxpemUocmVmZXJlbmNlKSB7XG4gICAgICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVUcnVzdGVkVmFsdWUpO1xuICAgIH1cbiAgICBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICB1cGRhdGVXaXRoKF92bSwgX3JlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSB7XG4gICAgICAgIHJldHVybiBuZXcgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgICB9XG59XG5jbGFzcyBPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0ZU9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctdXBkYXRlJztcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG59Il19