ember-legacy-class-transform
Version:
The default blueprint for ember-cli addons.
248 lines (205 loc) • 25.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DidUpdateLayoutOpcode = exports.UpdateComponentOpcode = undefined;
var _reference = require("@glimmer/reference");
var _opcodes = require("../../opcodes");
var _arguments = require("../../vm/arguments");
var _arguments2 = _interopRequireDefault(_arguments);
var _dom = require("./dom");
var _vm2 = require("./vm");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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);
}
_opcodes.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 });
});
_opcodes.APPEND_OPCODES.add(57 /* PushDynamicComponentManager */, function (vm) {
var stack = vm.stack;
var reference = stack.pop();
var cache = (0, _reference.isConst)(reference) ? undefined : new _reference.ReferenceCache(reference);
var definition = cache ? cache.peek() : reference.value();
stack.push({ definition: definition, manager: definition.manager, component: null });
if (cache) {
vm.updateWith(new _vm2.Assert(cache));
}
});
_opcodes.APPEND_OPCODES.add(58 /* PushArgs */, function (vm, _ref2) {
var synthetic = _ref2.op1;
var stack = vm.stack;
_arguments2.default.setup(stack, !!synthetic);
stack.push(_arguments2.default);
});
_opcodes.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);
});
_opcodes.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));
});
_opcodes.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);
});
_opcodes.APPEND_OPCODES.add(65 /* BeginComponentTransaction */, function (vm) {
vm.beginCacheGroup();
vm.elements().pushSimpleBlock();
});
_opcodes.APPEND_OPCODES.add(62 /* PushComponentOperations */, function (vm) {
vm.stack.push(new _dom.ComponentElementOperations(vm.env));
});
_opcodes.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));
});
_opcodes.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));
});
_opcodes.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));
});
_opcodes.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));
});
_opcodes.APPEND_OPCODES.add(66 /* CommitComponentTransaction */, function (vm) {
return vm.commitCacheGroup();
});
var UpdateComponentOpcode = exports.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 = (0, _reference.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;
}(_opcodes.UpdatingOpcode);
var DidUpdateLayoutOpcode = exports.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 = _reference.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;
}(_opcodes.UpdatingOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJjb21iaW5lIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsIlJlZmVyZW5jZUNhY2hlIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkFSR1MiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsIkFzc2VydCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwiY29tcG9uZW50IiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwic3ludGhldGljIiwic2V0dXAiLCJfc3RhdGUiLCJmZXRjaFZhbHVlIiwiYXJncyIsInByZXBhcmVkQXJncyIsInByZXBhcmVBcmdzIiwiY2xlYXIiLCJwb3NpdGlvbmFsIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImF0TmFtZXMiLCJhdE5hbWUiLCJmbGFncyIsIm9wMiIsImR5bmFtaWNTY29wZSIsInN0YXRlIiwiaGFzRGVmYXVsdEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZ2V0U2VsZiIsIlVwZGF0ZUNvbXBvbmVudE9wY29kZSIsInRhZyIsIm5hbWUiLCJkZXN0cnVjdG9yIiwiZ2V0RGVzdHJ1Y3RvciIsIm5ld0Rlc3Ryb3lhYmxlIiwiYmVnaW5DYWNoZUdyb3VwIiwiZWxlbWVudHMiLCJwdXNoU2ltcGxlQmxvY2siLCJhY3Rpb24iLCJkaWRDcmVhdGVFbGVtZW50IiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZXhwZWN0T3BlcmF0aW9ucyIsImxheW91dEZvciIsImJvdW5kcyIsInBvcEJsb2NrIiwiZGlkUmVuZGVyTGF5b3V0IiwiZGlkQ3JlYXRlIiwiRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIiwiY29tbWl0Q2FjaGVHcm91cCIsInR5cGUiLCJjb21wb25lbnRUYWciLCJnZXRUYWciLCJldmFsdWF0ZSIsIl92bSIsInVwZGF0ZSIsInRvSlNPTiIsIkpTT04iLCJzdHJpbmdpZnkiLCJndWlkIiwiX2d1aWQiLCJkaWRVcGRhdGVMYXlvdXQiLCJkaWRVcGRhdGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFTLEFBQVMsQUFBYyxBQUFTLEFBQXNCOztBQUMvRCxBQUFTLEFBQWdCLEFBQXNCOztBQUMvQyxBQUFPLEFBQVU7Ozs7QUFDakIsQUFBUyxBQUFrQzs7QUFDM0MsQUFBUyxBQUFjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDdkIsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLDRCQUE0QixVQUFBLEFBQUMsVUFBNkI7UUFBbEIsQUFBa0IsbUJBQXZCLEFBQXVCLEFBQzVFOztRQUFJLGFBQWEsR0FBQSxBQUFHLFVBQUgsQUFBYSxTQUE5QixBQUFpQixBQUFzQixBQUN2QztRQUFJLFFBQVEsR0FBWixBQUFlLEFBQ2Y7VUFBQSxBQUFNLEtBQUssRUFBRSxZQUFGLFlBQWMsU0FBUyxXQUF2QixBQUFrQyxTQUFTLFdBQXRELEFBQVcsQUFBc0QsQUFDcEU7QUFKRDtBQUtBLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQixtQ0FBbUMsY0FBTSxBQUMzRDtRQUFJLFFBQVEsR0FBWixBQUFlLEFBQ2Y7UUFBSSxZQUFZLE1BQWhCLEFBQWdCLEFBQU0sQUFDdEI7UUFBSSxRQUFRLHdCQUFBLEFBQVEsYUFBUixBQUFxQixZQUFZLEFBQUksOEJBQWpELEFBQTZDLEFBQW1CLEFBQ2hFO1FBQUksYUFBYSxRQUFRLE1BQVIsQUFBUSxBQUFNLFNBQVMsVUFBeEMsQUFBd0MsQUFBVSxBQUNsRDtVQUFBLEFBQU0sS0FBSyxFQUFFLFlBQUYsWUFBYyxTQUFTLFdBQXZCLEFBQWtDLFNBQVMsV0FBdEQsQUFBVyxBQUFzRCxBQUNqRTtRQUFBLEFBQUksT0FBTyxBQUNQO1dBQUEsQUFBRyxXQUFXLEFBQUksZ0JBQWxCLEFBQWMsQUFBVyxBQUM1QjtBQUNKO0FBVEQ7QUFVQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsZ0JBQWdCLFVBQUEsQUFBQyxXQUEyQjtRQUFoQixBQUFnQixrQkFBckIsQUFBcUIsQUFDOUQ7O1FBQUksUUFBUSxHQUFaLEFBQWUsQUFDZjt3QkFBQSxBQUFLLE1BQUwsQUFBVyxPQUFPLENBQUMsQ0FBbkIsQUFBb0IsQUFDcEI7VUFBQSxBQUFNLEFBQUssQUFDZDtBQUpEO0FBS0Esd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLG1CQUFtQixVQUFBLEFBQUMsV0FBd0I7UUFBYixBQUFhLGVBQWxCLEFBQWtCLEFBQzlEOztRQUFJLFFBQVEsR0FEa0QsQUFDOUQsQUFBZTs7eUJBQ2UsR0FBQSxBQUFHLFdBRjZCLEFBRWhDLEFBQWM7UUFGa0IsQUFFeEQsNEJBRndELEFBRXhEO1FBRndELEFBRTVDLHlCQUY0QyxBQUU1QyxBQUNsQjs7UUFBSSxPQUFPLE1BQVgsQUFBVyxBQUFNLEFBQ2pCO1FBQUksZUFBZSxRQUFBLEFBQVEsWUFBUixBQUFvQixZQUF2QyxBQUFtQixBQUFnQyxBQUNuRDtRQUFBLEFBQUksY0FBYyxBQUNkO2FBRGMsQUFDZCxBQUFLO1lBRFMsQUFFUixhQUZRLEFBRWMsYUFGZCxBQUVSO1lBRlEsQUFFSSxRQUZKLEFBRWMsYUFGZCxBQUVJLEFBQ2xCOztZQUFJLGtCQUFrQixXQUF0QixBQUFpQyxBQUNqQzthQUFLLElBQUksSUFBVCxBQUFhLEdBQUcsSUFBaEIsQUFBb0IsaUJBQXBCLEFBQXFDLEtBQUssQUFDdEM7a0JBQUEsQUFBTSxLQUFLLFdBQVgsQUFBVyxBQUFXLEFBQ3pCO0FBQ0Q7Y0FBQSxBQUFNLEtBQU4sQUFBVyxBQUNYO1lBQUksUUFBUSxPQUFBLEFBQU8sS0FBbkIsQUFBWSxBQUFZLEFBQ3hCO1lBQUksYUFBYSxNQUFqQixBQUF1QixBQUN2QjtZQUFJLFVBQUosQUFBYyxBQUNkO2FBQUssSUFBSSxLQUFULEFBQWEsR0FBRyxLQUFoQixBQUFvQixZQUFwQixBQUFnQyxNQUFLLEFBQ2pDO2dCQUFJLFFBQVEsTUFBTSxNQUFsQixBQUFZLEFBQU0sQUFBTSxBQUN4QjtnQkFBSSxlQUFhLE1BQWpCLEFBQWlCLEFBQU0sQUFDdkI7a0JBQUEsQUFBTSxLQUFOLEFBQVcsQUFDWDtvQkFBQSxBQUFRLEtBQVIsQUFBYSxBQUNoQjtBQUNEO2NBQUEsQUFBTSxLQUFOLEFBQVcsQUFDWDthQUFBLEFBQUssTUFBTCxBQUFXLE9BQVgsQUFBa0IsQUFDckI7QUFDRDtVQUFBLEFBQU0sS0FBTixBQUFXLEFBQ2Q7QUExQkQ7QUEyQkEsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLHVCQUF1QixVQUFBLEFBQUMsV0FBb0M7UUFBQTs7UUFBekIsQUFBeUIsY0FBOUIsQUFBOEI7UUFBYixBQUFhLGVBQWxCLEFBQWtCLEFBQzlFOztRQUFJLGtCQUFKLEFBQ0E7UUFBSSxlQUFKLEFBQ0E7UUFBSSxPQUFPLEdBQUEsQUFBRyxNQUFkLEFBQVcsQUFBUyxBQUNwQjtRQUFJLGVBQWUsR0FBbkIsQUFBbUIsQUFBRyxBQUN0QjtRQUFJLDJCQUFtQyxHQUFBLEFBQUcsV0FBdEMsQUFBbUMsQUFBYyxTQUFqRCxBQUFXLDZCQUFYLEFBQVcsWUFBWCxBQUF1QiwwQkFBdkIsQUFBdUIsU0FBM0IsQUFDQTtRQUFJLGtCQUFrQixRQUF0QixBQUE4QixBQUM5QjtRQUFJLFlBQVksUUFBQSxBQUFRLE9BQU8sR0FBZixBQUFrQixLQUFsQixBQUF1QixZQUF2QixBQUFtQyxNQUFuQyxBQUF5QyxjQUFjLEdBQXZELEFBQXVELEFBQUcsV0FBVyxDQUFDLENBQXRGLEFBQWdCLEFBQXVFLEFBQ3ZGO1VBQUEsQUFBTSxZQUFOLEFBQWtCLEFBQ2xCO09BQUEsQUFBRyxXQUFXLElBQUEsQUFBSSxzQkFBc0IsS0FBMUIsQUFBK0IsS0FBSyxXQUFwQyxBQUErQyxNQUEvQyxBQUFxRCxXQUFyRCxBQUFnRSxTQUE5RSxBQUFjLEFBQXlFLEFBQzFGO0FBVkQ7QUFXQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsbUNBQW1DLFVBQUEsQUFBQyxXQUF3QjtRQUFiLEFBQWEsZUFBbEIsQUFBa0I7OzBCQUNqRCxHQUFBLEFBQUcsV0FEOEMsQUFDakQsQUFBYztRQURtQyxBQUN4RSwwQkFEd0UsQUFDeEU7UUFEd0UsQUFDL0QsNEJBRCtELEFBQy9ELEFBQ2Y7O1FBQUksYUFBYSxRQUFBLEFBQVEsY0FBekIsQUFBaUIsQUFBc0IsQUFDdkM7UUFBQSxBQUFJLFlBQVksR0FBQSxBQUFHLGVBQUgsQUFBa0IsQUFDckM7QUFKRDtBQUtBLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQixpQ0FBaUMsY0FBTSxBQUN6RDtPQUFBLEFBQUcsQUFDSDtPQUFBLEFBQUcsV0FBSCxBQUFjLEFBQ2pCO0FBSEQ7QUFJQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsK0JBQStCLGNBQU0sQUFDdkQ7T0FBQSxBQUFHLE1BQUgsQUFBUyxLQUFLLEFBQUksb0NBQTJCLEdBQTdDLEFBQWMsQUFBa0MsQUFDbkQ7QUFGRDtBQUdBLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQix3QkFBd0IsVUFBQSxBQUFDLFdBQXdCO1FBQWIsQUFBYSxlQUFsQixBQUFrQjs7MEJBQ3RDLEdBQUEsQUFBRyxXQURtQyxBQUN0QyxBQUFjO1FBRHdCLEFBQzdELDBCQUQ2RCxBQUM3RDtRQUQ2RCxBQUNwRCw0QkFEb0QsQUFDcEQsQUFDZjs7UUFBSSxTQUFKLEFBQWEsQUFDYjtZQUFBLEFBQVEsaUJBQVIsQUFBeUIsV0FBVyxHQUFBLEFBQUcsV0FBSCxBQUFjLG1CQUFsRCxBQUFvQyxBQUFpQyxTQUFTLEdBQUEsQUFBRyxXQUFILEFBQWMsaUJBQTVGLEFBQThFLEFBQStCLEFBQ2hIO0FBSkQ7QUFLQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0Isd0JBQXdCLFVBQUEsQUFBQyxXQUF3QjtRQUFiLEFBQWEsZUFBbEIsQUFBa0IsQUFDbkU7O1FBQUksUUFBUSxHQUFBLEFBQUcsV0FBZixBQUFZLEFBQWMsQUFDMUI7T0FBQSxBQUFHLE1BQUgsQUFBUyxLQUFLLE1BQUEsQUFBTSxRQUFOLEFBQWMsUUFBUSxNQUFwQyxBQUFjLEFBQTRCLEFBQzdDO0FBSEQ7QUFJQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsMEJBQTBCLFVBQUEsQUFBQyxXQUF3QjtRQUFiLEFBQWEsZUFBbEIsQUFBa0I7OzBCQUM1QixHQUFBLEFBQUcsV0FEeUIsQUFDNUIsQUFBYztRQURjLEFBQy9ELDBCQUQrRCxBQUMvRDtRQUQrRCxBQUN0RCw2QkFEc0QsQUFDdEQ7UUFEc0QsQUFDMUMsNEJBRDBDLEFBQzFDLEFBQzNCOztPQUFBLEFBQUcsTUFBSCxBQUFTLEtBQUssUUFBQSxBQUFRLFVBQVIsQUFBa0IsWUFBbEIsQUFBOEIsV0FBVyxHQUF2RCxBQUFjLEFBQTRDLEFBQzdEO0FBSEQ7QUFJQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsdUJBQXVCLFVBQUEsQUFBQyxXQUF3QjtRQUFiLEFBQWEsZUFBbEIsQUFBa0I7OzBCQUNyQyxHQUFBLEFBQUcsV0FEa0MsQUFDckMsQUFBYztRQUR1QixBQUM1RCwwQkFENEQsQUFDNUQ7UUFENEQsQUFDbkQsNEJBRG1ELEFBQ25ELEFBQ2Y7O1FBQUksU0FBUyxHQUFBLEFBQUcsV0FBaEIsQUFBYSxBQUFjLEFBQzNCO1lBQUEsQUFBUSxnQkFBUixBQUF3QixXQUF4QixBQUFtQyxBQUNuQztPQUFBLEFBQUcsSUFBSCxBQUFPLFVBQVAsQUFBaUIsV0FBakIsQUFBNEIsQUFDNUI7T0FBQSxBQUFHLFdBQVcsSUFBQSxBQUFJLHNCQUFKLEFBQTBCLFNBQTFCLEFBQW1DLFdBQWpELEFBQWMsQUFBOEMsQUFDL0Q7QUFORDtBQU9BLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQixrQ0FBa0MsY0FBQTtXQUFNLEdBQU4sQUFBTSxBQUFHO0FBQWpFLEFBQ0E7SUFBQSxBQUFhLG1GQUFiO3FDQUNJOzttQ0FBQSxBQUFZLEtBQVosQUFBaUIsTUFBakIsQUFBdUIsV0FBdkIsQUFBa0MsU0FBbEMsQUFBMkMsY0FBYzs4QkFBQTs7cURBQ3JELHFCQURxRCxBQUVyRDs7Y0FBQSxBQUFLLE9BQUwsQUFBWSxBQUNaO2NBQUEsQUFBSyxZQUFMLEFBQWlCLEFBQ2pCO2NBQUEsQUFBSyxVQUFMLEFBQWUsQUFDZjtjQUFBLEFBQUssZUFBTCxBQUFvQixBQUNwQjtjQUFBLEFBQUssT0FBTCxBQUFZLEFBQ1o7WUFBSSxlQUFlLFFBQUEsQUFBUSxPQUEzQixBQUFtQixBQUFlLEFBQ2xDO1lBQUEsQUFBSSxjQUFjLEFBQ2Q7a0JBQUEsQUFBSyxNQUFNLHdCQUFRLENBQUEsQUFBQyxLQUFwQixBQUFXLEFBQVEsQUFBTSxBQUM1QjtBQUZELGVBRU8sQUFDSDtrQkFBQSxBQUFLLE1BQUwsQUFBVyxBQUNkO0FBWm9EO2VBYXhEO0FBZEw7O29DQUFBLEFBZUksNkJBZkosQUFlYSxLQUFLO1lBQUEsQUFDSixZQURJLEFBQ2lDLEtBRGpDLEFBQ0o7WUFESSxBQUNPLFVBRFAsQUFDaUMsS0FEakMsQUFDTztZQURQLEFBQ2dCLGVBRGhCLEFBQ2lDLEtBRGpDLEFBQ2dCLEFBQzFCOztnQkFBQSxBQUFRLE9BQVIsQUFBZSxXQUFmLEFBQTBCLEFBQzdCO0FBbEJMOztvQ0FBQSxBQW1CSSwyQkFBUyxBQUNMOztrQkFDVSxDQUFDLEtBQUEsQUFBSyxVQUFVLEtBRG5CLEFBQ0csQUFBQyxBQUFvQixBQUMzQjtrQkFBTSxLQUZILEFBRVEsQUFDWDtrQkFBTSxLQUhWLEFBQU8sQUFHUSxBQUVsQjtBQUxVLEFBQ0g7QUFyQlo7O1dBQUE7QUFBQSxBQUEyQyxBQTJCM0M7SUFBQSxBQUFhLG9GQUFiO3FDQUNJOzttQ0FBQSxBQUFZLFNBQVosQUFBcUIsV0FBckIsQUFBZ0MsUUFBUTs4QkFBQTs7c0RBQ3BDLHNCQURvQyxBQUVwQzs7ZUFBQSxBQUFLLFVBQUwsQUFBZSxBQUNmO2VBQUEsQUFBSyxZQUFMLEFBQWlCLEFBQ2pCO2VBQUEsQUFBSyxTQUFMLEFBQWMsQUFDZDtlQUFBLEFBQUssT0FBTCxBQUFZLEFBQ1o7ZUFOb0MsQUFNcEMsQUFBSyxBQUFNO2VBQ2Q7QUFSTDs7b0NBQUEsQUFTSSw2QkFUSixBQVNhLElBQUk7WUFBQSxBQUNILFVBREcsQUFDNEIsS0FENUIsQUFDSDtZQURHLEFBQ00sWUFETixBQUM0QixLQUQ1QixBQUNNO1lBRE4sQUFDaUIsU0FEakIsQUFDNEIsS0FENUIsQUFDaUIsQUFDMUI7O2dCQUFBLEFBQVEsZ0JBQVIsQUFBd0IsV0FBeEIsQUFBbUMsQUFDbkM7V0FBQSxBQUFHLElBQUgsQUFBTyxVQUFQLEFBQWlCLFdBQWpCLEFBQTRCLEFBQy9CO0FBYkw7O1dBQUE7QUFBQSxBQUEyQyIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9jb21wb25lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21iaW5lLCBDT05TVEFOVF9UQUcsIGlzQ29uc3QsIFJlZmVyZW5jZUNhY2hlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IEFSR1MgZnJvbSAnLi4vLi4vdm0vYXJndW1lbnRzJztcbmltcG9ydCB7IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9kb20nO1xuaW1wb3J0IHsgQXNzZXJ0IH0gZnJvbSAnLi92bSc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTYgLyogUHVzaENvbXBvbmVudE1hbmFnZXIgKi8sICh2bSwgeyBvcDE6IF9kZWZpbml0aW9uIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfZGVmaW5pdGlvbik7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgc3RhY2sucHVzaCh7IGRlZmluaXRpb24sIG1hbmFnZXI6IGRlZmluaXRpb24ubWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTcgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBkZWZpbml0aW9uID0gY2FjaGUgPyBjYWNoZS5wZWVrKCkgOiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlcjogZGVmaW5pdGlvbi5tYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU4IC8qIFB1c2hBcmdzICovLCAodm0sIHsgb3AxOiBzeW50aGV0aWMgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIEFSR1Muc2V0dXAoc3RhY2ssICEhc3ludGhldGljKTtcbiAgICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTkgLyogUHJlcGFyZUFyZ3MgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHByZXBhcmVkQXJncyA9IG1hbmFnZXIucHJlcGFyZUFyZ3MoZGVmaW5pdGlvbiwgYXJncyk7XG4gICAgaWYgKHByZXBhcmVkQXJncykge1xuICAgICAgICBhcmdzLmNsZWFyKCk7XG4gICAgICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSBwcmVwYXJlZEFyZ3M7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzdGFjay5wdXNoKHBvc2l0aW9uYWxDb3VudCk7XG4gICAgICAgIGxldCBuYW1lcyA9IE9iamVjdC5rZXlzKG5hbWVkKTtcbiAgICAgICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIGxldCBhdE5hbWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZWRDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBuYW1lZFtuYW1lc1tpXV07XG4gICAgICAgICAgICBsZXQgYXROYW1lID0gYEAke25hbWVzW2ldfWA7XG4gICAgICAgICAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIGF0TmFtZXMucHVzaChhdE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2goYXROYW1lcyk7XG4gICAgICAgIGFyZ3Muc2V0dXAoc3RhY2ssIGZhbHNlKTtcbiAgICB9XG4gICAgc3RhY2sucHVzaChhcmdzKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLywgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbjtcbiAgICBsZXQgbWFuYWdlcjtcbiAgICBsZXQgYXJncyA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgc3RhdGUgPSAoeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSkpO1xuICAgIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDE7XG4gICAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgICBzdGF0ZS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NSAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB7XG4gICAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoU2ltcGxlQmxvY2soKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYyIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovLCB2bSA9PiB7XG4gICAgdm0uc3RhY2sucHVzaChuZXcgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnModm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NyAvKiBEaWRDcmVhdGVFbGVtZW50ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhY3Rpb24gPSAnRGlkQ3JlYXRlRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChzdGF0ZS5tYW5hZ2VyLmdldFNlbGYoc3RhdGUuY29tcG9uZW50KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NCAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgZGVmaW5pdGlvbiwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChtYW5hZ2VyLmxheW91dEZvcihkZWZpbml0aW9uLCBjb21wb25lbnQsIHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjggLyogRGlkUmVuZGVyTGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY2IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB2bS5jb21taXRDYWNoZUdyb3VwKCkpO1xuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbXBvbmVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZSA9IGR5bmFtaWNTY29wZTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3VwZGF0ZS1jb21wb25lbnQnO1xuICAgICAgICBsZXQgY29tcG9uZW50VGFnID0gbWFuYWdlci5nZXRUYWcoY29tcG9uZW50KTtcbiAgICAgICAgaWYgKGNvbXBvbmVudFRhZykge1xuICAgICAgICAgICAgdGhpcy50YWcgPSBjb21iaW5lKFt0YWcsIGNvbXBvbmVudFRhZ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZXZhbHVhdGUoX3ZtKSB7XG4gICAgICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLnVwZGF0ZShjb21wb25lbnQsIGR5bmFtaWNTY29wZSk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLm5hbWUpXSxcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICAgICAgdGhpcy50eXBlID0gJ2RpZC11cGRhdGUtbGF5b3V0JztcbiAgICAgICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLmRpZFVwZGF0ZUxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgICAgIHZtLmVudi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB9XG59Il19