ember-legacy-class-transform
Version:
The default blueprint for ember-cli addons.
214 lines (180 loc) • 26.1 kB
JavaScript
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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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); }
import { combine, CONSTANT_TAG, isConst, ReferenceCache } from '@glimmer/reference';
import { APPEND_OPCODES, UpdatingOpcode } from '../../opcodes';
import ARGS from '../../vm/arguments';
import { ComponentElementOperations } from './dom';
import { Assert } from './vm';
APPEND_OPCODES.add(56 /* PushComponentManager */, function (vm, _ref) {
var _definition = _ref.op1;
var definition = vm.constants.getOther(_definition);
var stack = vm.stack;
stack.push({ definition: definition, manager: definition.manager, component: null });
});
APPEND_OPCODES.add(57 /* PushDynamicComponentManager */, function (vm) {
var stack = vm.stack;
var reference = stack.pop();
var cache = isConst(reference) ? undefined : new ReferenceCache(reference);
var definition = cache ? cache.peek() : reference.value();
stack.push({ definition: definition, manager: definition.manager, component: null });
if (cache) {
vm.updateWith(new Assert(cache));
}
});
APPEND_OPCODES.add(58 /* PushArgs */, function (vm, _ref2) {
var synthetic = _ref2.op1;
var stack = vm.stack;
ARGS.setup(stack, !!synthetic);
stack.push(ARGS);
});
APPEND_OPCODES.add(59 /* PrepareArgs */, function (vm, _ref3) {
var _state = _ref3.op1;
var stack = vm.stack;
var _vm$fetchValue = vm.fetchValue(_state),
definition = _vm$fetchValue.definition,
manager = _vm$fetchValue.manager;
var args = stack.pop();
var preparedArgs = manager.prepareArgs(definition, args);
if (preparedArgs) {
args.clear();
var positional = preparedArgs.positional,
named = preparedArgs.named;
var positionalCount = positional.length;
for (var i = 0; i < positionalCount; i++) {
stack.push(positional[i]);
}
stack.push(positionalCount);
var names = Object.keys(named);
var namedCount = names.length;
var atNames = [];
for (var _i = 0; _i < namedCount; _i++) {
var value = named[names[_i]];
var atName = '@' + names[_i];
stack.push(value);
atNames.push(atName);
}
stack.push(atNames);
args.setup(stack, false);
}
stack.push(args);
});
APPEND_OPCODES.add(60 /* CreateComponent */, function (vm, _ref4) {
var _vm$fetchValue2;
var flags = _ref4.op1,
_state = _ref4.op2;
var definition = void 0;
var manager = void 0;
var args = vm.stack.pop();
var dynamicScope = vm.dynamicScope();
var state = (_vm$fetchValue2 = vm.fetchValue(_state), definition = _vm$fetchValue2.definition, manager = _vm$fetchValue2.manager, _vm$fetchValue2);
var hasDefaultBlock = flags & 1;
var component = manager.create(vm.env, definition, args, dynamicScope, vm.getSelf(), !!hasDefaultBlock);
state.component = component;
vm.updateWith(new UpdateComponentOpcode(args.tag, definition.name, component, manager, dynamicScope));
});
APPEND_OPCODES.add(61 /* RegisterComponentDestructor */, function (vm, _ref5) {
var _state = _ref5.op1;
var _vm$fetchValue3 = vm.fetchValue(_state),
manager = _vm$fetchValue3.manager,
component = _vm$fetchValue3.component;
var destructor = manager.getDestructor(component);
if (destructor) vm.newDestroyable(destructor);
});
APPEND_OPCODES.add(65 /* BeginComponentTransaction */, function (vm) {
vm.beginCacheGroup();
vm.elements().pushSimpleBlock();
});
APPEND_OPCODES.add(62 /* PushComponentOperations */, function (vm) {
vm.stack.push(new ComponentElementOperations(vm.env));
});
APPEND_OPCODES.add(67 /* DidCreateElement */, function (vm, _ref6) {
var _state = _ref6.op1;
var _vm$fetchValue4 = vm.fetchValue(_state),
manager = _vm$fetchValue4.manager,
component = _vm$fetchValue4.component;
var action = 'DidCreateElementOpcode#evaluate';
manager.didCreateElement(component, vm.elements().expectConstructing(action), vm.elements().expectOperations(action));
});
APPEND_OPCODES.add(63 /* GetComponentSelf */, function (vm, _ref7) {
var _state = _ref7.op1;
var state = vm.fetchValue(_state);
vm.stack.push(state.manager.getSelf(state.component));
});
APPEND_OPCODES.add(64 /* GetComponentLayout */, function (vm, _ref8) {
var _state = _ref8.op1;
var _vm$fetchValue5 = vm.fetchValue(_state),
manager = _vm$fetchValue5.manager,
definition = _vm$fetchValue5.definition,
component = _vm$fetchValue5.component;
vm.stack.push(manager.layoutFor(definition, component, vm.env));
});
APPEND_OPCODES.add(68 /* DidRenderLayout */, function (vm, _ref9) {
var _state = _ref9.op1;
var _vm$fetchValue6 = vm.fetchValue(_state),
manager = _vm$fetchValue6.manager,
component = _vm$fetchValue6.component;
var bounds = vm.elements().popBlock();
manager.didRenderLayout(component, bounds);
vm.env.didCreate(component, manager);
vm.updateWith(new DidUpdateLayoutOpcode(manager, component, bounds));
});
APPEND_OPCODES.add(66 /* CommitComponentTransaction */, function (vm) {
return vm.commitCacheGroup();
});
export var UpdateComponentOpcode = function (_UpdatingOpcode) {
_inherits(UpdateComponentOpcode, _UpdatingOpcode);
function UpdateComponentOpcode(tag, name, component, manager, dynamicScope) {
_classCallCheck(this, UpdateComponentOpcode);
var _this = _possibleConstructorReturn(this, _UpdatingOpcode.call(this));
_this.name = name;
_this.component = component;
_this.manager = manager;
_this.dynamicScope = dynamicScope;
_this.type = 'update-component';
var componentTag = manager.getTag(component);
if (componentTag) {
_this.tag = combine([tag, componentTag]);
} else {
_this.tag = tag;
}
return _this;
}
UpdateComponentOpcode.prototype.evaluate = function evaluate(_vm) {
var component = this.component,
manager = this.manager,
dynamicScope = this.dynamicScope;
manager.update(component, dynamicScope);
};
UpdateComponentOpcode.prototype.toJSON = function toJSON() {
return {
args: [JSON.stringify(this.name)],
guid: this._guid,
type: this.type
};
};
return UpdateComponentOpcode;
}(UpdatingOpcode);
export var DidUpdateLayoutOpcode = function (_UpdatingOpcode2) {
_inherits(DidUpdateLayoutOpcode, _UpdatingOpcode2);
function DidUpdateLayoutOpcode(manager, component, bounds) {
_classCallCheck(this, DidUpdateLayoutOpcode);
var _this2 = _possibleConstructorReturn(this, _UpdatingOpcode2.call(this));
_this2.manager = manager;
_this2.component = component;
_this2.bounds = bounds;
_this2.type = 'did-update-layout';
_this2.tag = CONSTANT_TAG;
return _this2;
}
DidUpdateLayoutOpcode.prototype.evaluate = function evaluate(vm) {
var manager = this.manager,
component = this.component,
bounds = this.bounds;
manager.didUpdateLayout(component, bounds);
vm.env.didUpdate(component, manager);
};
return DidUpdateLayoutOpcode;
}(UpdatingOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJjb21iaW5lIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsIlJlZmVyZW5jZUNhY2hlIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkFSR1MiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsIkFzc2VydCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwiY29tcG9uZW50IiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwic3ludGhldGljIiwic2V0dXAiLCJfc3RhdGUiLCJmZXRjaFZhbHVlIiwiYXJncyIsInByZXBhcmVkQXJncyIsInByZXBhcmVBcmdzIiwiY2xlYXIiLCJwb3NpdGlvbmFsIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImF0TmFtZXMiLCJhdE5hbWUiLCJmbGFncyIsIm9wMiIsImR5bmFtaWNTY29wZSIsInN0YXRlIiwiaGFzRGVmYXVsdEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZ2V0U2VsZiIsIlVwZGF0ZUNvbXBvbmVudE9wY29kZSIsInRhZyIsIm5hbWUiLCJkZXN0cnVjdG9yIiwiZ2V0RGVzdHJ1Y3RvciIsIm5ld0Rlc3Ryb3lhYmxlIiwiYmVnaW5DYWNoZUdyb3VwIiwiZWxlbWVudHMiLCJwdXNoU2ltcGxlQmxvY2siLCJhY3Rpb24iLCJkaWRDcmVhdGVFbGVtZW50IiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZXhwZWN0T3BlcmF0aW9ucyIsImxheW91dEZvciIsImJvdW5kcyIsInBvcEJsb2NrIiwiZGlkUmVuZGVyTGF5b3V0IiwiZGlkQ3JlYXRlIiwiRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIiwiY29tbWl0Q2FjaGVHcm91cCIsInR5cGUiLCJjb21wb25lbnRUYWciLCJnZXRUYWciLCJldmFsdWF0ZSIsIl92bSIsInVwZGF0ZSIsInRvSlNPTiIsIkpTT04iLCJzdHJpbmdpZnkiLCJndWlkIiwiX2d1aWQiLCJkaWRVcGRhdGVMYXlvdXQiLCJkaWRVcGRhdGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsU0FBU0EsT0FBVCxFQUFrQkMsWUFBbEIsRUFBZ0NDLE9BQWhDLEVBQXlDQyxjQUF6QyxRQUErRCxvQkFBL0Q7QUFDQSxTQUFTQyxjQUFULEVBQXlCQyxjQUF6QixRQUErQyxlQUEvQztBQUNBLE9BQU9DLElBQVAsTUFBaUIsb0JBQWpCO0FBQ0EsU0FBU0MsMEJBQVQsUUFBMkMsT0FBM0M7QUFDQSxTQUFTQyxNQUFULFFBQXVCLE1BQXZCO0FBQ0FKLGVBQWVLLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsMEJBQXRCLEVBQWtELFVBQUNDLEVBQUQsUUFBOEI7QUFBQSxRQUFsQkMsV0FBa0IsUUFBdkJDLEdBQXVCOztBQUM1RSxRQUFJQyxhQUFhSCxHQUFHSSxTQUFILENBQWFDLFFBQWIsQ0FBc0JKLFdBQXRCLENBQWpCO0FBQ0EsUUFBSUssUUFBUU4sR0FBR00sS0FBZjtBQUNBQSxVQUFNQyxJQUFOLENBQVcsRUFBRUosc0JBQUYsRUFBY0ssU0FBU0wsV0FBV0ssT0FBbEMsRUFBMkNDLFdBQVcsSUFBdEQsRUFBWDtBQUNILENBSkQ7QUFLQWYsZUFBZUssR0FBZixDQUFtQixFQUFuQixDQUFzQixpQ0FBdEIsRUFBeUQsY0FBTTtBQUMzRCxRQUFJTyxRQUFRTixHQUFHTSxLQUFmO0FBQ0EsUUFBSUksWUFBWUosTUFBTUssR0FBTixFQUFoQjtBQUNBLFFBQUlDLFFBQVFwQixRQUFRa0IsU0FBUixJQUFxQkcsU0FBckIsR0FBaUMsSUFBSXBCLGNBQUosQ0FBbUJpQixTQUFuQixDQUE3QztBQUNBLFFBQUlQLGFBQWFTLFFBQVFBLE1BQU1FLElBQU4s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QURHLEdBQzRCLElBRDVCLENBQ0hBLE9BREc7QUFBQSxZQUNNQyxTQUROLEdBQzRCLElBRDVCLENBQ01BLFNBRE47QUFBQSxZQUNpQmlELE1BRGpCLEdBQzRCLElBRDVCLENBQ2lCQSxNQURqQjs7QUFFVGxELGdCQUFRbUUsZUFBUixDQUF3QmxFLFNBQXhCLEVBQW1DaUQsTUFBbkM7QUFDQTFELFdBQUcwQyxHQUFILENBQU9rQyxTQUFQLENBQWlCbkUsU0FBakIsRUFBNEJELE9BQTVCO0FBQ0gsS0FiTDs7QUFBQTtBQUFBLEVBQTJDYixjQUEzQyIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9jb21wb25lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21iaW5lLCBDT05TVEFOVF9UQUcsIGlzQ29uc3QsIFJlZmVyZW5jZUNhY2hlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IEFSR1MgZnJvbSAnLi4vLi4vdm0vYXJndW1lbnRzJztcbmltcG9ydCB7IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9kb20nO1xuaW1wb3J0IHsgQXNzZXJ0IH0gZnJvbSAnLi92bSc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTYgLyogUHVzaENvbXBvbmVudE1hbmFnZXIgKi8sICh2bSwgeyBvcDE6IF9kZWZpbml0aW9uIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfZGVmaW5pdGlvbik7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgc3RhY2sucHVzaCh7IGRlZmluaXRpb24sIG1hbmFnZXI6IGRlZmluaXRpb24ubWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTcgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBkZWZpbml0aW9uID0gY2FjaGUgPyBjYWNoZS5wZWVrKCkgOiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlcjogZGVmaW5pdGlvbi5tYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU4IC8qIFB1c2hBcmdzICovLCAodm0sIHsgb3AxOiBzeW50aGV0aWMgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIEFSR1Muc2V0dXAoc3RhY2ssICEhc3ludGhldGljKTtcbiAgICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTkgLyogUHJlcGFyZUFyZ3MgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHByZXBhcmVkQXJncyA9IG1hbmFnZXIucHJlcGFyZUFyZ3MoZGVmaW5pdGlvbiwgYXJncyk7XG4gICAgaWYgKHByZXBhcmVkQXJncykge1xuICAgICAgICBhcmdzLmNsZWFyKCk7XG4gICAgICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSBwcmVwYXJlZEFyZ3M7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzdGFjay5wdXNoKHBvc2l0aW9uYWxDb3VudCk7XG4gICAgICAgIGxldCBuYW1lcyA9IE9iamVjdC5rZXlzKG5hbWVkKTtcbiAgICAgICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIGxldCBhdE5hbWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZWRDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBuYW1lZFtuYW1lc1tpXV07XG4gICAgICAgICAgICBsZXQgYXROYW1lID0gYEAke25hbWVzW2ldfWA7XG4gICAgICAgICAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIGF0TmFtZXMucHVzaChhdE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2goYXROYW1lcyk7XG4gICAgICAgIGFyZ3Muc2V0dXAoc3RhY2ssIGZhbHNlKTtcbiAgICB9XG4gICAgc3RhY2sucHVzaChhcmdzKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLywgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbjtcbiAgICBsZXQgbWFuYWdlcjtcbiAgICBsZXQgYXJncyA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgc3RhdGUgPSAoeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSkpO1xuICAgIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDE7XG4gICAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgICBzdGF0ZS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NSAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB7XG4gICAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoU2ltcGxlQmxvY2soKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYyIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovLCB2bSA9PiB7XG4gICAgdm0uc3RhY2sucHVzaChuZXcgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnModm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NyAvKiBEaWRDcmVhdGVFbGVtZW50ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhY3Rpb24gPSAnRGlkQ3JlYXRlRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChzdGF0ZS5tYW5hZ2VyLmdldFNlbGYoc3RhdGUuY29tcG9uZW50KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NCAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgZGVmaW5pdGlvbiwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChtYW5hZ2VyLmxheW91dEZvcihkZWZpbml0aW9uLCBjb21wb25lbnQsIHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjggLyogRGlkUmVuZGVyTGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY2IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB2bS5jb21taXRDYWNoZUdyb3VwKCkpO1xuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbXBvbmVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZSA9IGR5bmFtaWNTY29wZTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3VwZGF0ZS1jb21wb25lbnQnO1xuICAgICAgICBsZXQgY29tcG9uZW50VGFnID0gbWFuYWdlci5nZXRUYWcoY29tcG9uZW50KTtcbiAgICAgICAgaWYgKGNvbXBvbmVudFRhZykge1xuICAgICAgICAgICAgdGhpcy50YWcgPSBjb21iaW5lKFt0YWcsIGNvbXBvbmVudFRhZ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZXZhbHVhdGUoX3ZtKSB7XG4gICAgICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLnVwZGF0ZShjb21wb25lbnQsIGR5bmFtaWNTY29wZSk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLm5hbWUpXSxcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICAgICAgdGhpcy50eXBlID0gJ2RpZC11cGRhdGUtbGF5b3V0JztcbiAgICAgICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLmRpZFVwZGF0ZUxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgICAgIHZtLmVudi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB9XG59Il19