tuain-ng-forms-lib 12.0.22 → 12.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bundles/tuain-ng-forms-lib.umd.js +1560 -1730
- package/bundles/tuain-ng-forms-lib.umd.js.map +1 -1
- package/esm2015/lib/classes/forms/action.js +3 -4
- package/esm2015/lib/classes/forms/element.js +14 -2
- package/esm2015/lib/classes/forms/field.js +14 -22
- package/esm2015/lib/classes/forms/form.js +243 -393
- package/esm2015/lib/classes/forms/section.js +7 -1
- package/esm2015/lib/classes/forms/table/row-data.js +6 -26
- package/esm2015/lib/classes/forms/table/table.js +3 -4
- package/esm2015/lib/components/elements/tables/table.component.js +31 -31
- package/esm2015/lib/components/forms/basic-form.js +522 -398
- package/fesm2015/tuain-ng-forms-lib.js +1026 -1116
- package/fesm2015/tuain-ng-forms-lib.js.map +1 -1
- package/lib/classes/forms/action.d.ts +0 -2
- package/lib/classes/forms/element.d.ts +16 -6
- package/lib/classes/forms/field.d.ts +4 -3
- package/lib/classes/forms/form.d.ts +105 -92
- package/lib/classes/forms/section.d.ts +5 -0
- package/lib/classes/forms/table/row-data.d.ts +0 -1
- package/lib/classes/forms/table/table.d.ts +0 -1
- package/lib/components/elements/tables/table.component.d.ts +1 -1
- package/lib/components/forms/basic-form.d.ts +188 -159
- package/package.json +1 -1
- package/tuain-ng-forms-lib.metadata.json +1 -1
- package/esm2015/lib/classes/utilities.js +0 -54
- package/lib/classes/utilities.d.ts +0 -1
|
@@ -4,7 +4,7 @@ import { FormElement } from './element';
|
|
|
4
4
|
const HEADER = 'HEADER';
|
|
5
5
|
export class FormAction extends FormElement {
|
|
6
6
|
constructor(actionDefinition, formConfig) {
|
|
7
|
-
var _a
|
|
7
|
+
var _a;
|
|
8
8
|
super(actionDefinition, formConfig);
|
|
9
9
|
this._actionActivated = new Subject();
|
|
10
10
|
this.inProgress = false;
|
|
@@ -12,10 +12,9 @@ export class FormAction extends FormElement {
|
|
|
12
12
|
this.actionCode = actionDefinition.actionCode ? actionDefinition.actionCode.toString() : '';
|
|
13
13
|
this.actionName = actionDefinition.actionTitle;
|
|
14
14
|
this.iconName = actionDefinition.iconName || this.actionCode;
|
|
15
|
-
this.location
|
|
15
|
+
this.setCustomAttribute('location', actionDefinition.position || HEADER);
|
|
16
16
|
this.backend = (_a = actionDefinition === null || actionDefinition === void 0 ? void 0 : actionDefinition.serverAction) !== null && _a !== void 0 ? _a : false;
|
|
17
17
|
this.newState = actionDefinition === null || actionDefinition === void 0 ? void 0 : actionDefinition.newState;
|
|
18
|
-
this.customAttributes = (_b = actionDefinition === null || actionDefinition === void 0 ? void 0 : actionDefinition.customAttributes) !== null && _b !== void 0 ? _b : null;
|
|
19
18
|
this.restrictedOnField = actionDefinition.fieldRestrictedCode ? actionDefinition.fieldRestrictedCode.toString() : '';
|
|
20
19
|
this.restrictedOnOperator = actionDefinition.operatorRestricted || '';
|
|
21
20
|
this.restrictedOnValue = actionDefinition.valueRestricted || '';
|
|
@@ -34,4 +33,4 @@ export class FormAction extends FormElement {
|
|
|
34
33
|
}
|
|
35
34
|
setCustomValidation(callback) { this.customValidation = () => callback(); }
|
|
36
35
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFFeEIsTUFBTSxPQUFPLFVBQVcsU0FBUSxXQUFXO0lBZ0J6QyxZQUFZLGdCQUFnQixFQUFFLFVBQVU7O1FBQ3RDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQztRQWhCckIscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUUxRCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBZWpCLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUYsSUFBSSxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUM3RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQUEsZ0JBQWdCLGFBQWhCLGdCQUFnQix1QkFBaEIsZ0JBQWdCLENBQUUsWUFBWSxtQ0FBSSxLQUFLLENBQUM7UUFDdkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsYUFBaEIsZ0JBQWdCLHVCQUFoQixnQkFBZ0IsQ0FBRSxRQUFRLENBQUM7UUFFM0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JILElBQUksQ0FBQyxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLENBQUM7UUFDdEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7UUFDaEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxlQUFlLEtBQUssT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBRXZELEtBQUssS0FBSyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkMsSUFBSSxLQUFLLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUVuQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbkUsZ0JBQWdCLENBQUMsY0FBYztRQUM3QixLQUFLLE1BQU0sWUFBWSxJQUFJLGNBQWMsRUFBRTtZQUN6QyxJQUFJLFlBQVksS0FBSyxZQUFZLElBQUksWUFBWSxLQUFLLFVBQVUsRUFBRTtnQkFDaEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNuRDtTQUNGO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzVFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZWxlbWVudFR5cGVzIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBGb3JtRWxlbWVudCB9IGZyb20gJy4vZWxlbWVudCc7XG5cbmNvbnN0IEhFQURFUiA9ICdIRUFERVInO1xuXG5leHBvcnQgY2xhc3MgRm9ybUFjdGlvbiBleHRlbmRzIEZvcm1FbGVtZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aW9uQWN0aXZhdGVkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIGluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgbmV3U3RhdGU6IHN0cmluZztcbiAgYmFja2VuZDogYm9vbGVhbjtcblxuICBhY3Rpb25Db2RlOiBzdHJpbmc7XG4gIGFjdGlvbk5hbWU6IHN0cmluZztcbiAgaWNvbk5hbWU6IHN0cmluZztcblxuICByZXN0cmljdGVkT25GaWVsZDogc3RyaW5nO1xuICByZXN0cmljdGVkT25PcGVyYXRvcjogc3RyaW5nO1xuICByZXN0cmljdGVkT25WYWx1ZTogc3RyaW5nO1xuICBjdXN0b21WYWxpZGF0aW9uOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoYWN0aW9uRGVmaW5pdGlvbiwgZm9ybUNvbmZpZykge1xuICAgIHN1cGVyKGFjdGlvbkRlZmluaXRpb24sIGZvcm1Db25maWcpO1xuICAgIHRoaXMuZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZXMuYWN0aW9uO1xuICAgIHRoaXMuYWN0aW9uQ29kZSA9IGFjdGlvbkRlZmluaXRpb24uYWN0aW9uQ29kZSA/IGFjdGlvbkRlZmluaXRpb24uYWN0aW9uQ29kZS50b1N0cmluZygpIDogJyc7XG4gICAgdGhpcy5hY3Rpb25OYW1lID0gYWN0aW9uRGVmaW5pdGlvbi5hY3Rpb25UaXRsZTtcbiAgICB0aGlzLmljb25OYW1lID0gYWN0aW9uRGVmaW5pdGlvbi5pY29uTmFtZSB8fCB0aGlzLmFjdGlvbkNvZGU7XG4gICAgdGhpcy5zZXRDdXN0b21BdHRyaWJ1dGUoJ2xvY2F0aW9uJywgYWN0aW9uRGVmaW5pdGlvbi5wb3NpdGlvbiB8fCBIRUFERVIpO1xuICAgIHRoaXMuYmFja2VuZCA9IGFjdGlvbkRlZmluaXRpb24/LnNlcnZlckFjdGlvbiA/PyBmYWxzZTtcbiAgICB0aGlzLm5ld1N0YXRlID0gYWN0aW9uRGVmaW5pdGlvbj8ubmV3U3RhdGU7XG5cbiAgICB0aGlzLnJlc3RyaWN0ZWRPbkZpZWxkID0gYWN0aW9uRGVmaW5pdGlvbi5maWVsZFJlc3RyaWN0ZWRDb2RlID8gYWN0aW9uRGVmaW5pdGlvbi5maWVsZFJlc3RyaWN0ZWRDb2RlLnRvU3RyaW5nKCkgOiAnJztcbiAgICB0aGlzLnJlc3RyaWN0ZWRPbk9wZXJhdG9yID0gYWN0aW9uRGVmaW5pdGlvbi5vcGVyYXRvclJlc3RyaWN0ZWQgfHwgJyc7XG4gICAgdGhpcy5yZXN0cmljdGVkT25WYWx1ZSA9IGFjdGlvbkRlZmluaXRpb24udmFsdWVSZXN0cmljdGVkIHx8ICcnO1xuICAgIHRoaXMuY3VzdG9tVmFsaWRhdGlvbiA9ICgpID0+IHRydWU7XG4gIH1cblxuICBnZXQgYWN0aW9uQWN0aXZhdGVkKCkgeyByZXR1cm4gdGhpcy5fYWN0aW9uQWN0aXZhdGVkOyB9XG5cbiAgc3RhcnQoKSB7IHRoaXMuaW5Qcm9ncmVzcyA9IHRydWU7IH1cbiAgc3RvcCgpIHsgdGhpcy5pblByb2dyZXNzID0gZmFsc2U7IH1cblxuICBub3RpZnlBY3RpdmF0aW9uKCkgeyB0aGlzLl9hY3Rpb25BY3RpdmF0ZWQubmV4dCh0aGlzLmFjdGlvbkNvZGUpOyB9XG5cbiAgdXBkYXRlRnJvbVNlcnZlcihyZWNlaXZlZEFjdGlvbikge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIGluIHJlY2VpdmVkQWN0aW9uKSB7XG4gICAgICBpZiAocHJvcGVydHlOYW1lICE9PSAnYWN0aW9uQ29kZScgJiYgcHJvcGVydHlOYW1lICE9PSAnYWN0aW9uSWQnKSB7XG4gICAgICAgIHRoaXNbcHJvcGVydHlOYW1lXSA9IHJlY2VpdmVkQWN0aW9uW3Byb3BlcnR5TmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0Q3VzdG9tVmFsaWRhdGlvbihjYWxsYmFjaykgeyB0aGlzLmN1c3RvbVZhbGlkYXRpb24gPSAoKSA9PiBjYWxsYmFjaygpOyB9XG59XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { elementTypes } from './form.constants';
|
|
2
2
|
export class FormElement {
|
|
3
3
|
constructor(elementDefinition, formConfig) {
|
|
4
|
-
var _a, _b;
|
|
4
|
+
var _a, _b, _c;
|
|
5
5
|
this._formConfig = formConfig;
|
|
6
6
|
this._isForced = false;
|
|
7
7
|
this.setVisibleStates(elementDefinition.visibleStates);
|
|
@@ -10,7 +10,13 @@ export class FormElement {
|
|
|
10
10
|
this.disabled = (_a = elementDefinition === null || elementDefinition === void 0 ? void 0 : elementDefinition.disabled) !== null && _a !== void 0 ? _a : false;
|
|
11
11
|
this.setVisibility((_b = elementDefinition === null || elementDefinition === void 0 ? void 0 : elementDefinition.visible) !== null && _b !== void 0 ? _b : true);
|
|
12
12
|
this.widget = null;
|
|
13
|
+
this.customAttributes = (_c = elementDefinition === null || elementDefinition === void 0 ? void 0 : elementDefinition.customAttributes) !== null && _c !== void 0 ? _c : null;
|
|
13
14
|
}
|
|
15
|
+
getCustomAttribute(name) { var _a, _b; return (_b = (_a = this.customAttributes) === null || _a === void 0 ? void 0 : _a[name]) !== null && _b !== void 0 ? _b : null; }
|
|
16
|
+
setCustomAttribute(name, value) { if (name) {
|
|
17
|
+
this.customAttributes[name] = value;
|
|
18
|
+
} }
|
|
19
|
+
matchAttribute(name, value) { var _a; return ((_a = this.customAttributes) === null || _a === void 0 ? void 0 : _a[name]) === value; }
|
|
14
20
|
isField() { return this.elementType === elementTypes.field; }
|
|
15
21
|
isAction() { return this.elementType === elementTypes.action; }
|
|
16
22
|
isTable() { return this.elementType === elementTypes.table; }
|
|
@@ -28,7 +34,13 @@ export class FormElement {
|
|
|
28
34
|
}
|
|
29
35
|
viewOnState(state) { return (this.visibleStates && state) ? this.visibleStates.includes(state) : false; }
|
|
30
36
|
enabledOnState(state) { return (this.enabledStates && state) ? this.enabledStates.includes(state) : false; }
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated Utilizar viewOnState
|
|
39
|
+
*/
|
|
31
40
|
supportState(state) { return this.viewOnState(state); }
|
|
41
|
+
/**
|
|
42
|
+
* @deprecated Utilizar viewOnState
|
|
43
|
+
*/
|
|
32
44
|
supportMode(state) { return this.viewOnState(state); }
|
|
33
45
|
get visible() { return (this._isForced) ? this._visibleForced : this._visible; }
|
|
34
46
|
set visible(visible) { this.setVisibility(visible); }
|
|
@@ -63,4 +75,4 @@ export class FormElement {
|
|
|
63
75
|
get enabled() { return !this.disabled; }
|
|
64
76
|
get editable() { return !this.disabled; }
|
|
65
77
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsTUFBTSxPQUFPLFdBQVc7SUFXdEIsWUFBWSxpQkFBaUIsRUFBRSxVQUFVOztRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBQSxpQkFBaUIsYUFBakIsaUJBQWlCLHVCQUFqQixpQkFBaUIsQ0FBRSxRQUFRLG1DQUFJLEtBQUssQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQUEsaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsT0FBTyxtQ0FBSSxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3RCxRQUFRLEtBQUssT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFD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LFFBQVEsR0FBRyxPQUFPLElBQUksSUFBSSxDQUFDO1FBQ2hDLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsTUFBZ0I7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFnQjtRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsTUFBTSxLQUFLLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuQyxPQUFPLEtBQUssSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRW5DLElBQUksT0FBTyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN4QyxJQUFJLFFBQVEsS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Q0FDMUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbGVtZW50VHlwZXMgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmV4cG9ydCBjbGFzcyBGb3JtRWxlbWVudCB7XG4gIHByb3RlY3RlZCBfdmlzaWJsZTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF92aXNpYmxlRm9yY2VkOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgX2lzRm9yY2VkOiBib29sZWFuO1xuICBfZm9ybUNvbmZpZzogYW55O1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgdmlzaWJsZVN0YXRlczogc3RyaW5nW107XG4gIGVuYWJsZWRTdGF0ZXM6IHN0cmluZ1tdO1xuICB3aWRnZXQ6IGFueTtcbiAgZWxlbWVudFR5cGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50RGVmaW5pdGlvbiwgZm9ybUNvbmZpZykge1xuICAgIHRoaXMuX2Zvcm1Db25maWcgPSBmb3JtQ29uZmlnO1xuICAgIHRoaXMuX2lzRm9yY2VkID0gZmFsc2U7XG4gICAgdGhpcy5zZXRWaXNpYmxlU3RhdGVzKGVsZW1lbnREZWZpbml0aW9uLnZpc2libGVTdGF0ZXMpO1xuICAgIHRoaXMuc2V0RW5hYmxlZFN0YXRlcyhlbGVtZW50RGVmaW5pdGlvbi5lbmFibGVkU3RhdGVzKTtcbiAgICB0aGlzLl92aXNpYmxlRm9yY2VkID0gZmFsc2U7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGVsZW1lbnREZWZpbml0aW9uPy5kaXNhYmxlZCA/PyBmYWxzZTtcbiAgICB0aGlzLnNldFZpc2liaWxpdHkoZWxlbWVudERlZmluaXRpb24/LnZpc2libGUgPz8gdHJ1ZSk7XG4gICAgdGhpcy53aWRnZXQgPSBudWxsO1xuICB9XG5cbiAgaXNGaWVsZCgpIHsgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUgPT09IGVsZW1lbnRUeXBlcy5maWVsZDsgfVxuICBpc0FjdGlvbigpIHsgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUgPT09IGVsZW1lbnRUeXBlcy5hY3Rpb247IH1cbiAgaXNUYWJsZSgpIHsgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUgPT09IGVsZW1lbnRUeXBlcy50YWJsZTsgfVxuXG4gIHNldFZpc2libGVTdGF0ZXMobmV3U3RhdGVzOiBhbnkpIHtcbiAgICBjb25zdCB2aXNpYmxlU3RhdGVzID0gKCFBcnJheS5pc0FycmF5KG5ld1N0YXRlcykgJiYgdHlwZW9mIG5ld1N0YXRlcyA9PT0gJ3N0cmluZycpXG4gICAgICA/IG5ld1N0YXRlcy5zcGxpdCgnLCcpLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKVxuICAgICAgOiBuZXdTdGF0ZXM7XG4gICAgdGhpcy52aXNpYmxlU3RhdGVzID0gKEFycmF5LmlzQXJyYXkodmlzaWJsZVN0YXRlcykpID8gdmlzaWJsZVN0YXRlcyA6IFtdO1xuICB9XG5cbiAgc2V0RW5hYmxlZFN0YXRlcyhuZXdTdGF0ZXM6IGFueSkge1xuICAgIGNvbnN0IGVuYWJsZWRTdGF0ZXMgPSAoIUFycmF5LmlzQXJyYXkobmV3U3RhdGVzKSAmJiB0eXBlb2YgbmV3U3RhdGVzID09PSAnc3RyaW5nJylcbiAgICAgID8gbmV3U3RhdGVzLnNwbGl0KCcsJykubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSkuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApXG4gICAgICA6IG5ld1N0YXRlcztcbiAgICB0aGlzLmVuYWJsZWRTdGF0ZXMgPSAoQXJyYXkuaXNBcnJheShlbmFibGVkU3RhdGVzKSkgPyBlbmFibGVkU3RhdGVzIDogW107XG4gIH1cblxuICB2aWV3T25TdGF0ZShzdGF0ZSkgeyByZXR1cm4gKHRoaXMudmlzaWJsZVN0YXRlcyAmJiBzdGF0ZSkgPyB0aGlzLnZpc2libGVTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpIDogZmFsc2U7IH1cbiAgZW5hYmxlZE9uU3RhdGUoc3RhdGUpIHsgcmV0dXJuICh0aGlzLmVuYWJsZWRTdGF0ZXMgJiYgc3RhdGUpID8gdGhpcy5lbmFibGVkU3RhdGVzLmluY2x1ZGVzKHN0YXRlKSA6IGZhbHNlOyB9XG5cbiAgc3VwcG9ydFN0YXRlKHN0YXRlKSB7IHJldHVybiB0aGlzLnZpZXdPblN0YXRlKHN0YXRlKTsgfVxuICBzdXBwb3J0TW9kZShzdGF0ZSkgeyByZXR1cm4gdGhpcy52aWV3T25TdGF0ZShzdGF0ZSk7IH1cblxuICBnZXQgdmlzaWJsZSgpIHsgcmV0dXJuICh0aGlzLl9pc0ZvcmNlZCkgPyB0aGlzLl92aXNpYmxlRm9yY2VkIDogdGhpcy5fdmlzaWJsZTsgfVxuICBzZXQgdmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKSB7IHRoaXMuc2V0VmlzaWJpbGl0eSh2aXNpYmxlKTsgfVxuXG4gIHZpc2libGVPbihzdGF0ZSkge1xuICAgIHJldHVybiB0aGlzLnZpc2libGUgJiYgdGhpcy52aWV3T25TdGF0ZShzdGF0ZSk7XG4gIH1cblxuICBlbmFibGVkT24oc3RhdGUpIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5lbmFibGVkT25TdGF0ZShzdGF0ZSk7XG4gIH1cblxuICBzZXRWaXNpYmlsaXR5KHZpc2libGU6IGJvb2xlYW4sIGZvcmNlZDogYm9vbGVhbiA9IG51bGwpIHtcbiAgICB0aGlzLl92aXNpYmxlID0gdmlzaWJsZSAmJiB0cnVlO1xuICAgIGlmIChmb3JjZWQgIT0gbnVsbCkge1xuICAgICAgdGhpcy5faXNGb3JjZWQgPSBmb3JjZWQ7XG4gICAgfVxuICB9XG5cbiAgc2hvdyhmb3JjZWQ/OiBib29sZWFuKSB7XG4gICAgdGhpcy5fdmlzaWJsZSA9IHRydWU7XG4gICAgaWYgKGZvcmNlZCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5faXNGb3JjZWQgPSBmb3JjZWQ7XG4gICAgICB0aGlzLl92aXNpYmxlRm9yY2VkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBoaWRlKGZvcmNlZD86IGJvb2xlYW4pIHtcbiAgICB0aGlzLl92aXNpYmxlID0gZmFsc2U7XG4gICAgaWYgKGZvcmNlZCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5faXNGb3JjZWQgPSBmb3JjZWQ7XG4gICAgICB0aGlzLl92aXNpYmxlRm9yY2VkID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZW5hYmxlKCkgeyB0aGlzLmRpc2FibGVkID0gZmFsc2U7IH1cbiAgZGlzYWJsZSgpIHsgdGhpcy5kaXNhYmxlZCA9IHRydWU7IH1cblxuICBnZXQgZW5hYmxlZCgpIHsgcmV0dXJuICF0aGlzLmRpc2FibGVkOyB9XG4gIGdldCBlZGl0YWJsZSgpIHsgcmV0dXJuICF0aGlzLmRpc2FibGVkOyB9XG59XG4iXX0=
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsTUFBTSxPQUFPLFdBQVc7SUFZdEIsWUFBWSxpQkFBc0IsRUFBRSxVQUFlOztRQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBQSxpQkFBaUIsYUFBakIsaUJBQWlCLHVCQUFqQixpQkFBaUIsQ0FBRSxRQUFRLG1DQUFJLEtBQUssQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQUEsaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsT0FBTyxtQ0FBSSxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBQSxpQkFBaUIsYUFBakIsaUJBQWlCLHVCQUFqQixpQkFBaUIsQ0FBRSxnQkFBZ0IsbUNBQUksSUFBSSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFZLGdCQUFZLE9BQU8sTUFBQSxNQUFBLElBQUksQ0FBQyxnQkFBZ0IsMENBQUcsSUFBSSxDQUFDLG1DQUFJLElBQUksQ0FBQyxDQUFD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O1NBQzdCO0lBQ0gsQ0FBQztJQUVELE1BQU0sS0FBVyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekMsT0FBTyxLQUFXLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUV6QyxJQUFJLE9BQU8sS0FBYyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDakQsSUFBSSxRQUFRLEtBQWMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0NBQ25EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWxlbWVudFR5cGVzIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5leHBvcnQgY2xhc3MgRm9ybUVsZW1lbnQge1xuICBwcm90ZWN0ZWQgX3Zpc2libGU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfdmlzaWJsZUZvcmNlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF9pc0ZvcmNlZDogYm9vbGVhbjtcbiAgX2Zvcm1Db25maWc6IGFueTtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHZpc2libGVTdGF0ZXM6IHN0cmluZ1tdO1xuICBlbmFibGVkU3RhdGVzOiBzdHJpbmdbXTtcbiAgd2lkZ2V0OiBhbnk7XG4gIGVsZW1lbnRUeXBlOiBzdHJpbmc7XG4gIGN1c3RvbUF0dHJpYnV0ZXM6IGFueTtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50RGVmaW5pdGlvbjogYW55LCBmb3JtQ29uZmlnOiBhbnkpIHtcbiAgICB0aGlzLl9mb3JtQ29uZmlnID0gZm9ybUNvbmZpZztcbiAgICB0aGlzLl9pc0ZvcmNlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2V0VmlzaWJsZVN0YXRlcyhlbGVtZW50RGVmaW5pdGlvbi52aXNpYmxlU3RhdGVzKTtcbiAgICB0aGlzLnNldEVuYWJsZWRTdGF0ZXMoZWxlbWVudERlZmluaXRpb24uZW5hYmxlZFN0YXRlcyk7XG4gICAgdGhpcy5fdmlzaWJsZUZvcmNlZCA9IGZhbHNlO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBlbGVtZW50RGVmaW5pdGlvbj8uZGlzYWJsZWQgPz8gZmFsc2U7XG4gICAgdGhpcy5zZXRWaXNpYmlsaXR5KGVsZW1lbnREZWZpbml0aW9uPy52aXNpYmxlID8/IHRydWUpO1xuICAgIHRoaXMud2lkZ2V0ID0gbnVsbDtcbiAgICB0aGlzLmN1c3RvbUF0dHJpYnV0ZXMgPSBlbGVtZW50RGVmaW5pdGlvbj8uY3VzdG9tQXR0cmlidXRlcyA/PyBudWxsO1xuICB9XG5cbiAgZ2V0Q3VzdG9tQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7IHJldHVybiB0aGlzLmN1c3RvbUF0dHJpYnV0ZXM/LltuYW1lXSA/PyBudWxsOyB9XG4gIHNldEN1c3RvbUF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHsgaWYgKG5hbWUpIHsgdGhpcy5jdXN0b21BdHRyaWJ1dGVzW25hbWVdID0gdmFsdWU7IH0gfVxuICBtYXRjaEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY3VzdG9tQXR0cmlidXRlcz8uW25hbWVdID09PSB2YWx1ZTsgfVxuXG4gIGlzRmllbGQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmVsZW1lbnRUeXBlID09PSBlbGVtZW50VHlwZXMuZmllbGQ7IH1cbiAgaXNBY3Rpb24oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmVsZW1lbnRUeXBlID09PSBlbGVtZW50VHlwZXMuYWN0aW9uOyB9XG4gIGlzVGFibGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmVsZW1lbnRUeXBlID09PSBlbGVtZW50VHlwZXMudGFibGU7IH1cblxuICBzZXRWaXNpYmxlU3RhdGVzKG5ld1N0YXRlczogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdmlzaWJsZVN0YXRlcyA9ICghQXJyYXkuaXNBcnJheShuZXdTdGF0ZXMpICYmIHR5cGVvZiBuZXdTdGF0ZXMgPT09ICdzdHJpbmcnKVxuICAgICAgPyBuZXdTdGF0ZXMuc3BsaXQoJywnKS5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKS5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMClcbiAgICAgIDogbmV3U3RhdGVzO1xuICAgIHRoaXMudmlzaWJsZVN0YXRlcyA9IChBcnJheS5pc0FycmF5KHZpc2libGVTdGF0ZXMpKSA/IHZpc2libGVTdGF0ZXMgOiBbXTtcbiAgfVxuXG4gIHNldEVuYWJsZWRTdGF0ZXMobmV3U3RhdGVzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkU3RhdGVzID0gKCFBcnJheS5pc0FycmF5KG5ld1N0YXRlcykgJiYgdHlwZW9mIG5ld1N0YXRlcyA9PT0gJ3N0cmluZycpXG4gICAgICA/IG5ld1N0YXRlcy5zcGxpdCgnLCcpLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKVxuICAgICAgOiBuZXdTdGF0ZXM7XG4gICAgdGhpcy5lbmFibGVkU3RhdGVzID0gKEFycmF5LmlzQXJyYXkoZW5hYmxlZFN0YXRlcykpID8gZW5hYmxlZFN0YXRlcyA6IFtdO1xuICB9XG5cbiAgdmlld09uU3RhdGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMudmlzaWJsZVN0YXRlcyAmJiBzdGF0ZSkgPyB0aGlzLnZpc2libGVTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpIDogZmFsc2U7IH1cbiAgZW5hYmxlZE9uU3RhdGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMuZW5hYmxlZFN0YXRlcyAmJiBzdGF0ZSkgPyB0aGlzLmVuYWJsZWRTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpIDogZmFsc2U7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXRpbGl6YXIgdmlld09uU3RhdGVcbiAgICovXG4gIHN1cHBvcnRTdGF0ZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLnZpZXdPblN0YXRlKHN0YXRlKTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVdGlsaXphciB2aWV3T25TdGF0ZVxuICAgKi9cbiAgc3VwcG9ydE1vZGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy52aWV3T25TdGF0ZShzdGF0ZSk7IH1cblxuICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHsgcmV0dXJuICh0aGlzLl9pc0ZvcmNlZCkgPyB0aGlzLl92aXNpYmxlRm9yY2VkIDogdGhpcy5fdmlzaWJsZTsgfVxuICBzZXQgdmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKSB7IHRoaXMuc2V0VmlzaWJpbGl0eSh2aXNpYmxlKTsgfVxuXG4gIHZpc2libGVPbihzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZSAmJiB0aGlzLnZpZXdPblN0YXRlKHN0YXRlKTtcbiAgfVxuXG4gIGVuYWJsZWRPbihzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmRpc2FibGVkICYmIHRoaXMuZW5hYmxlZE9uU3RhdGUoc3RhdGUpO1xuICB9XG5cbiAgc2V0VmlzaWJpbGl0eSh2aXNpYmxlOiBib29sZWFuLCBmb3JjZWQ6IGJvb2xlYW4gPSBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5fdmlzaWJsZSA9IHZpc2libGUgJiYgdHJ1ZTtcbiAgICBpZiAoZm9yY2VkICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX2lzRm9yY2VkID0gZm9yY2VkO1xuICAgIH1cbiAgfVxuXG4gIHNob3coZm9yY2VkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX3Zpc2libGUgPSB0cnVlO1xuICAgIGlmIChmb3JjZWQgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2lzRm9yY2VkID0gZm9yY2VkO1xuICAgICAgdGhpcy5fdmlzaWJsZUZvcmNlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaGlkZShmb3JjZWQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fdmlzaWJsZSA9IGZhbHNlO1xuICAgIGlmIChmb3JjZWQgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2lzRm9yY2VkID0gZm9yY2VkO1xuICAgICAgdGhpcy5fdmlzaWJsZUZvcmNlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGVuYWJsZSgpOiB2b2lkIHsgdGhpcy5kaXNhYmxlZCA9IGZhbHNlOyB9XG4gIGRpc2FibGUoKTogdm9pZCB7IHRoaXMuZGlzYWJsZWQgPSB0cnVlOyB9XG5cbiAgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiAhdGhpcy5kaXNhYmxlZDsgfVxuICBnZXQgZWRpdGFibGUoKTogYm9vbGVhbiB7IHJldHVybiAhdGhpcy5kaXNhYmxlZDsgfVxufVxuIl19
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Subject } from 'rxjs';
|
|
2
2
|
import { elementTypes, NO_ERROR } from './form.constants';
|
|
3
3
|
import { FormElement } from './element';
|
|
4
|
-
import { formatCurrency } from '../utilities';
|
|
5
4
|
const UNDEFINED = 'undefined';
|
|
6
5
|
const DEFAULT_ERROR_TYPE = 'error';
|
|
7
6
|
const DEFAULT_CAPTURE_TYPE = 'INPUT';
|
|
@@ -20,7 +19,6 @@ const fldAttr = {
|
|
|
20
19
|
info: 'fieldInfo',
|
|
21
20
|
defaultValue: 'defaultValue',
|
|
22
21
|
defaultEditable: 'defaultEditable',
|
|
23
|
-
customAttributes: 'customAttributes',
|
|
24
22
|
visibleLabel: 'visibleLabel',
|
|
25
23
|
required: 'fieldRequired',
|
|
26
24
|
hasChanged: 'hasChanged',
|
|
@@ -39,7 +37,7 @@ const fldAttr = {
|
|
|
39
37
|
};
|
|
40
38
|
export class FieldDescriptor extends FormElement {
|
|
41
39
|
constructor(inputFieldReceived, formConfig) {
|
|
42
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l
|
|
40
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
43
41
|
super(inputFieldReceived, formConfig);
|
|
44
42
|
this._editionFinish = new Subject();
|
|
45
43
|
this._editionPartial = new Subject();
|
|
@@ -65,18 +63,17 @@ export class FieldDescriptor extends FormElement {
|
|
|
65
63
|
}
|
|
66
64
|
this.setAttr(fldAttr.format, fieldFormat);
|
|
67
65
|
this.setAttr(fldAttr.validateOnServer, (_d = fld.serverAction) !== null && _d !== void 0 ? _d : false);
|
|
68
|
-
this.setAttr(fldAttr.customAttributes, (_e = fld.customAttributes) !== null && _e !== void 0 ? _e : {});
|
|
69
66
|
this.setAttr(fldAttr.tooltipText, fld.tooltip || '');
|
|
70
67
|
this.setAttr(fldAttr.defaultEditable, this.enabled);
|
|
71
|
-
this.setAttr(fldAttr.required, (
|
|
72
|
-
this.setError(fld.errorCode, fld.errorMessage, (
|
|
73
|
-
this.setAttr(fldAttr.outputOnly, (
|
|
74
|
-
const maxLength = (
|
|
68
|
+
this.setAttr(fldAttr.required, (_e = fld.required) !== null && _e !== void 0 ? _e : false);
|
|
69
|
+
this.setError(fld.errorCode, fld.errorMessage, (_f = fld.errorType) !== null && _f !== void 0 ? _f : DEFAULT_ERROR_TYPE);
|
|
70
|
+
this.setAttr(fldAttr.outputOnly, (_g = fld.outputOnly) !== null && _g !== void 0 ? _g : false);
|
|
71
|
+
const maxLength = (_h = fld.maxLength) !== null && _h !== void 0 ? _h : (this.captureType === 'TEXTAREA' ? BIG_MAX_LENGTH : STD_MAX_LENGTH);
|
|
75
72
|
this.setAttr(fldAttr.maxLength, maxLength);
|
|
76
|
-
this.setAttr(fldAttr.intrinsicErrorMessage, (
|
|
73
|
+
this.setAttr(fldAttr.intrinsicErrorMessage, (_j = this._formConfig.fieldTypeErrMsg[this.fieldType]) !== null && _j !== void 0 ? _j : this._formConfig.fieldTypeErrMsg.DEFAULT);
|
|
77
74
|
this.setFieldType(fld.fieldTypeCode);
|
|
78
|
-
this.setEditable((
|
|
79
|
-
this.setVisibleLabel((
|
|
75
|
+
this.setEditable((_k = fld.editable) !== null && _k !== void 0 ? _k : true);
|
|
76
|
+
this.setVisibleLabel((_l = fld.visibleLabel) !== null && _l !== void 0 ? _l : true);
|
|
80
77
|
this.setVisibility(fld.visible);
|
|
81
78
|
this.setFieldOptions(fld.fieldOptions);
|
|
82
79
|
this.setValue(fld.fieldValue || this.defaultValue || '');
|
|
@@ -86,11 +83,14 @@ export class FieldDescriptor extends FormElement {
|
|
|
86
83
|
get attributeChange() { return this._attributeChange; }
|
|
87
84
|
get editionPartial() { return this._editionPartial; }
|
|
88
85
|
get detailRequest() { return this._detailRequest; }
|
|
86
|
+
get info() { return this.fieldInfo; }
|
|
89
87
|
get validating() { return this._onValidation; }
|
|
90
88
|
set validating(isValidating) { this.setAttr(fldAttr.onValidation, isValidating); }
|
|
91
89
|
setIntrinsicErrorMessage(message) { this.setAttr(fldAttr.intrinsicErrorMessage, message); }
|
|
92
90
|
set intrinsicErrorMessage(message) { this.setIntrinsicErrorMessage(message); }
|
|
93
91
|
get fieldValue() { return this.getValue(); }
|
|
92
|
+
getRequired() { return this.required; }
|
|
93
|
+
setRequired(required) { this.required = required; }
|
|
94
94
|
get required() { return this.fieldRequired; }
|
|
95
95
|
set required(required) { this.setAttr(fldAttr.required, required !== null && required !== void 0 ? required : false); }
|
|
96
96
|
get maxLength() { return (this._maxLength > 0) ? this._maxLength.toString() : ''; }
|
|
@@ -131,7 +131,6 @@ export class FieldDescriptor extends FormElement {
|
|
|
131
131
|
notifyEditionDetailRequest() {
|
|
132
132
|
this._detailRequest.next(this.fieldCode);
|
|
133
133
|
}
|
|
134
|
-
getCustomAttribute(name) { var _a, _b; return (_b = (_a = this.customAttributes) === null || _a === void 0 ? void 0 : _a[name]) !== null && _b !== void 0 ? _b : null; }
|
|
135
134
|
setVisibleLabel(visibleLabel) { this.setAttr(fldAttr.visibleLabel, visibleLabel); }
|
|
136
135
|
showLabel() { this.setVisibleLabel(true); }
|
|
137
136
|
hideLabel() { this.setVisibleLabel(false); }
|
|
@@ -139,7 +138,7 @@ export class FieldDescriptor extends FormElement {
|
|
|
139
138
|
changed() { this.setChanged(true); }
|
|
140
139
|
getRawValue() { return this._fieldValue; }
|
|
141
140
|
setLabel(label) { this.setAttr(fldAttr.title, label); }
|
|
142
|
-
clean() { this.setValue(this.defaultValue || ''); }
|
|
141
|
+
clean() { this.setValue(this.defaultValue || ''); this.resetError(); }
|
|
143
142
|
get backend() { return this.validateOnServer; }
|
|
144
143
|
setEditable(editable = true) { (editable) ? this.enable() : this.disable(); }
|
|
145
144
|
hasError() { return this.errorCode !== NO_ERROR; }
|
|
@@ -156,6 +155,7 @@ export class FieldDescriptor extends FormElement {
|
|
|
156
155
|
setErrorCode(code) { this.setError(code, this.errorMessage); }
|
|
157
156
|
getErrorMessage() { return this.getError().message; }
|
|
158
157
|
setErrorMessage(msg) { this.setError(this.errorCode, msg); }
|
|
158
|
+
get empty() { return this.isEmpty(); }
|
|
159
159
|
isEmpty() {
|
|
160
160
|
const fieldCurrentValue = this.getValue();
|
|
161
161
|
if (fieldCurrentValue === undefined || fieldCurrentValue === null) {
|
|
@@ -211,11 +211,6 @@ export class FieldDescriptor extends FormElement {
|
|
|
211
211
|
setFieldType(inputFieldType) {
|
|
212
212
|
this.setAttr(fldAttr.type, inputFieldType);
|
|
213
213
|
}
|
|
214
|
-
format() {
|
|
215
|
-
if (this.fieldType === this._formConfig.fieldTypes.currency) {
|
|
216
|
-
this.setAttr(fldAttr.value, formatCurrency(this._fieldValue));
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
214
|
setMinValue(minValue) {
|
|
220
215
|
var _a, _b, _c;
|
|
221
216
|
if (this.fieldType === this._formConfig.fieldTypes.date
|
|
@@ -325,9 +320,6 @@ export class FieldDescriptor extends FormElement {
|
|
|
325
320
|
(_a = this.widget) === null || _a === void 0 ? void 0 : _a.setLocation(latitude, longitude);
|
|
326
321
|
}
|
|
327
322
|
break;
|
|
328
|
-
case this._formConfig.fieldTypes.currency:
|
|
329
|
-
newFinalValue = formatCurrency(newValue);
|
|
330
|
-
break;
|
|
331
323
|
default:
|
|
332
324
|
newFinalValue = newValue;
|
|
333
325
|
break;
|
|
@@ -339,4 +331,4 @@ export class FieldDescriptor extends FormElement {
|
|
|
339
331
|
return true;
|
|
340
332
|
}
|
|
341
333
|
}
|
|
342
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDO0FBRTlCLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDO0FBQ25DLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDO0FBQ3JDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDO0FBRWpDLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUM7QUFFM0IsTUFBTSxPQUFPLEdBQUc7SUFDZCxnQkFBZ0IsRUFBRSxrQkFBa0I7SUFDcEMsS0FBSyxFQUFFLGFBQWE7SUFDcEIsUUFBUSxFQUFFLFdBQVc7SUFDckIsUUFBUSxFQUFFLFdBQVc7SUFDckIsU0FBUyxFQUFFLFlBQVk7SUFDdkIsWUFBWSxFQUFFLGVBQWU7SUFDN0IscUJBQXFCLEVBQUUsd0JBQXdCO0lBQy9DLElBQUksRUFBRSxXQUFXO0lBQ2pCLElBQUksRUFBRSxXQUFXO0lBQ2pCLFlBQVksRUFBRSxjQUFjO0lBQzVCLGVBQWUsRUFBRSxpQkFBaUI7SUFDbEMsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLFlBQVksRUFBRSxjQUFjO0lBQzVCLFFBQVEsRUFBRSxlQUFlO0lBQ3pCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLFVBQVUsRUFBRSxZQUFZO0lB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SyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHO2dCQUNsQyxhQUFhLEdBQUcsUUFBUSxDQUFDO2dCQUN6QixJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLFlBQVksRUFBRTtvQkFDaEQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUTtnQkFDdkMsYUFBYSxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekMsTUFBTTtZQUNSO2dCQUNFLGFBQWEsR0FBRyxRQUFRLENBQUM7Z0JBQ3pCLE1BQU07U0FDVDtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxhQUFhLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDNUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGVsZW1lbnRUeXBlcywgTk9fRVJST1IgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5IH0gZnJvbSAnLi4vdXRpbGl0aWVzJztcblxuY29uc3QgVU5ERUZJTkVEID0gJ3VuZGVmaW5lZCc7XG5cbmNvbnN0IERFRkFVTFRfRVJST1JfVFlQRSA9ICdlcnJvcic7XG5jb25zdCBERUZBVUxUX0NBUFRVUkVfVFlQRSA9ICdJTlBVVCc7XG5jb25zdCBERUZBVUxUX0FMSUdOTUVOVCA9ICdsZWZ0JztcblxuY29uc3QgU1REX01BWF9MRU5HVEggPSA1MDtcbmNvbnN0IEJJR19NQVhfTEVOR1RIID0gNTAwO1xuXG5jb25zdCBmbGRBdHRyID0ge1xuICB2YWxpZGF0ZU9uU2VydmVyOiAndmFsaWRhdGVPblNlcnZlcicsXG4gIHZhbHVlOiAnX2ZpZWxkVmFsdWUnLFxuICBtaW5WYWx1ZTogJ19taW5WYWx1ZScsXG4gIG1heFZhbHVlOiAnX21heFZhbHVlJyxcbiAgbWF4TGVuZ3RoOiAnX21heExlbmd0aCcsXG4gIG9uVmFsaWRhdGlvbjogJ19vblZhbGlkYXRpb24nLFxuICBpbnRyaW5zaWNFcnJvck1lc3NhZ2U6ICdfaW50cmluc2ljRXJyb3JNZXNzYWdlJyxcbiAgY29kZTogJ2ZpZWxkQ29kZScsXG4gIGluZm86ICdmaWVsZEluZm8nLFxuICBkZWZhdWx0VmFsdWU6ICdkZWZhdWx0VmFsdWUnLFxuICBkZWZhdWx0RWRpdGFibGU6ICdkZWZhdWx0RWRpdGFibGUnLFxuICBjdXN0b21BdHRyaWJ1dGVzOiAnY3VzdG9tQXR0cmlidXRlcycsXG4gIHZpc2libGVMYWJlbDogJ3Zpc2libGVMYWJlbCcsXG4gIHJlcXVpcmVkOiAnZmllbGRSZXF1aXJlZCcsXG4gIGhhc0NoYW5nZWQ6ICdoYXNDaGFuZ2VkJyxcbiAgb3V0cHV0T25seTogJ291dHB1dE9ubHknLFxuICBjYXB0dXJlVHlwZTogJ2NhcHR1cmVUeXBlJyxcbiAgdGl0bGU6ICdmaWVsZFRpdGxlJyxcbiAgdHlwZTogJ2ZpZWxkVHlwZScsXG4gIGFsaWdubWVudDogJ2ZpZWxkQWxpZ25tZW50JyxcbiAgZm9ybWF0OiAnZmllbGRGb3JtYXQnLFxuICBleHRlcm5hbFZhbHVlOiAnZXh0ZXJuYWxWYWx1ZScsXG4gIHRvb2x0aXBUZXh0OiAndG9vbHRpcFRleHQnLFxuICBlcnJvclR5cGU6ICdlcnJvclR5cGUnLFxuICBlcnJvckNvZGU6ICdlcnJvckNvZGUnLFxuICBlcnJvck1lc3NhZ2U6ICdlcnJvck1lc3NhZ2UnLFxuICBvcHRpb25zOiAnZmllbGRPcHRpb25zJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBGaWVsZERlc2NyaXB0b3IgZXh0ZW5kcyBGb3JtRWxlbWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25GaW5pc2ggPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25QYXJ0aWFsID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXRhaWxSZXF1ZXN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdHRyaWJ1dGVDaGFuZ2UgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU9uU2VydmVyOiBib29sZWFuO1xuXG4gIF9maWVsZFZhbHVlOiBhbnk7XG4gIF9taW5WYWx1ZTogYW55O1xuICBfbWF4VmFsdWU6IGFueTtcbiAgX21heExlbmd0aDogbnVtYmVyO1xuICBfb25WYWxpZGF0aW9uOiBib29sZWFuO1xuICBfaW50cmluc2ljRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgZmllbGRDb2RlOiBzdHJpbmc7XG4gIGZpZWxkSW5mbzogc3RyaW5nO1xuICBkZWZhdWx0VmFsdWU6IHN0cmluZztcbiAgZGVmYXVsdEVkaXRhYmxlOiBib29sZWFuO1xuICBjdXN0b21BdHRyaWJ1dGVzOiBhbnk7XG5cbiAgdmlzaWJsZUxhYmVsOiBib29sZWFuO1xuICBmaWVsZFJlcXVpcmVkOiBib29sZWFuO1xuICBoYXNDaGFuZ2VkOiBib29sZWFuO1xuICBvdXRwdXRPbmx5OiBib29sZWFuO1xuICBjYXB0dXJlVHlwZTogc3RyaW5nO1xuICBmaWVsZFRpdGxlOiBzdHJpbmc7XG4gIGZpZWxkVHlwZTogc3RyaW5nO1xuICBmaWVsZEFsaWdubWVudDogc3RyaW5nO1xuICBmaWVsZEZvcm1hdDogUmVnRXhwO1xuICBleHRlcm5hbFZhbHVlOiBhbnk7XG4gIHRvb2x0aXBUZXh0OiBzdHJpbmc7XG5cbiAgZXJyb3JUeXBlOiBzdHJpbmc7XG4gIGVycm9yQ29kZTogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcblxuICBmaWVsZE9wdGlvbnM6IHtcbiAgICBmaWVsZE9wdGlvblZhbHVlOiBzdHJpbmc7XG4gICAgZmllbGRPcHRpb25JZDogc3RyaW5nO1xuICB9W107XG5cbiAgY29uc3RydWN0b3IoaW5wdXRGaWVsZFJlY2VpdmVkLCBmb3JtQ29uZmlnKSB7XG4gICAgc3VwZXIoaW5wdXRGaWVsZFJlY2VpdmVkLCBmb3JtQ29uZmlnKTtcbiAgICB0aGlzLmVsZW1lbnRUeXBlID0gZWxlbWVudFR5cGVzLmZpZWxkO1xuICAgIGNvbnN0IGZsZCA9IChpbnB1dEZpZWxkUmVjZWl2ZWQpID8gaW5wdXRGaWVsZFJlY2VpdmVkIDoge307XG5cbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5jb2RlLCBmbGQuZmllbGRDb2RlKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci50aXRsZSwgZmxkLmZpZWxkVGl0bGUgPz8gdGhpcy5maWVsZENvZGUpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmNhcHR1cmVUeXBlLCBmbGQuY2FwdHVyZVR5cGUgPz8gREVGQVVMVF9DQVBUVVJFX1RZUEUpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmRlZmF1bHRWYWx1ZSwgZmxkLmRlZmF1bHRWYWx1ZSA/PyBudWxsKTtcbiAgICBjb25zdCBkZWZhdWx0VHlwZUFsaWdubWVudCA9ICh0aGlzLl9mb3JtQ29uZmlnLnRhYmxlRmllbGRTdHlsZXNbdGhpcy5maWVsZFR5cGVdICE9IG51bGwpXG4gICAgICA/IHRoaXMuX2Zvcm1Db25maWcudGFibGVGaWVsZFN0eWxlc1t0aGlzLmZpZWxkVHlwZV1bJ3RleHQtYWxpZ24nXSA6IERFRkFVTFRfQUxJR05NRU5UO1xuICAgIGNvbnN0IGZpZWxkQWxpZ25tZW50ID0gKGZsZC5hbGlnbm1lbnQgIT0gbnVsbCkgPyBmbGQuYWxpZ25tZW50LnRvTG93ZXJDYXNlKCkgOiBkZWZhdWx0VHlwZUFsaWdubWVudDtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5hbGlnbm1lbnQsIGZpZWxkQWxpZ25tZW50KTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5pbmZvLCBmbGQuaW5mbyB8fCAnJyk7XG4gICAgbGV0IGZpZWxkRm9ybWF0O1xuICAgIHRyeSB7XG4gICAgICBmaWVsZEZvcm1hdCA9IChmbGQuZm9ybWF0KSA/IG5ldyBSZWdFeHAoZmxkLmZvcm1hdCkgOiBudWxsO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGZpZWxkRm9ybWF0ID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZm9ybWF0LCBmaWVsZEZvcm1hdCk7XG5cbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci52YWxpZGF0ZU9uU2VydmVyLCBmbGQuc2VydmVyQWN0aW9uID8/IGZhbHNlKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5jdXN0b21BdHRyaWJ1dGVzLCBmbGQuY3VzdG9tQXR0cmlidXRlcyA/PyB7fSk7XG5cbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci50b29sdGlwVGV4dCwgZmxkLnRvb2x0aXAgfHwgJycpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmRlZmF1bHRFZGl0YWJsZSwgdGhpcy5lbmFibGVkKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5yZXF1aXJlZCwgZmxkLnJlcXVpcmVkID8/IGZhbHNlKTtcbiAgICB0aGlzLnNldEVycm9yKGZsZC5lcnJvckNvZGUsIGZsZC5lcnJvck1lc3NhZ2UsIGZsZC5lcnJvclR5cGUgPz8gREVGQVVMVF9FUlJPUl9UWVBFKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5vdXRwdXRPbmx5LCBmbGQub3V0cHV0T25seSA/PyBmYWxzZSk7XG4gICAgY29uc3QgbWF4TGVuZ3RoID0gZmxkLm1heExlbmd0aCA/PyAodGhpcy5jYXB0dXJlVHlwZSA9PT0gJ1RFWFRBUkVBJyA/IEJJR19NQVhfTEVOR1RIIDogU1REX01BWF9MRU5HVEgpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1heExlbmd0aCwgbWF4TGVuZ3RoKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5pbnRyaW5zaWNFcnJvck1lc3NhZ2UsIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlRXJyTXNnW3RoaXMuZmllbGRUeXBlXSA/PyB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZUVyck1zZy5ERUZBVUxUKTtcblxuICAgIHRoaXMuc2V0RmllbGRUeXBlKGZsZC5maWVsZFR5cGVDb2RlKTtcbiAgICB0aGlzLnNldEVkaXRhYmxlKGZsZC5lZGl0YWJsZSA/PyB0cnVlKTtcbiAgICB0aGlzLnNldFZpc2libGVMYWJlbChmbGQudmlzaWJsZUxhYmVsID8/IHRydWUpO1xuICAgIHRoaXMuc2V0VmlzaWJpbGl0eShmbGQudmlzaWJsZSk7XG4gICAgdGhpcy5zZXRGaWVsZE9wdGlvbnMoZmxkLmZpZWxkT3B0aW9ucyk7XG4gICAgdGhpcy5zZXRWYWx1ZShmbGQuZmllbGRWYWx1ZSB8fCB0aGlzLmRlZmF1bHRWYWx1ZSB8fCAnJyk7XG4gIH1cblxuICBnZXQgbmFtZSgpIHsgcmV0dXJuIHRoaXMuZmllbGRDb2RlOyB9XG4gIGdldCBlZGl0aW9uRmluaXNoKCkgeyByZXR1cm4gdGhpcy5fZWRpdGlvbkZpbmlzaDsgfVxuICBnZXQgYXR0cmlidXRlQ2hhbmdlKCkgeyByZXR1cm4gdGhpcy5fYXR0cmlidXRlQ2hhbmdlOyB9XG5cbiAgZ2V0IGVkaXRpb25QYXJ0aWFsKCkgeyByZXR1cm4gdGhpcy5fZWRpdGlvblBhcnRpYWw7IH1cbiAgZ2V0IGRldGFpbFJlcXVlc3QoKSB7IHJldHVybiB0aGlzLl9kZXRhaWxSZXF1ZXN0OyB9XG5cbiAgZ2V0IHZhbGlkYXRpbmcoKSB7IHJldHVybiB0aGlzLl9vblZhbGlkYXRpb247IH1cbiAgc2V0IHZhbGlkYXRpbmcoaXNWYWxpZGF0aW5nOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLm9uVmFsaWRhdGlvbiwgaXNWYWxpZGF0aW5nKTsgfVxuXG4gIHNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpIHsgdGhpcy5zZXRBdHRyKGZsZEF0dHIuaW50cmluc2ljRXJyb3JNZXNzYWdlLCBtZXNzYWdlKTsgfVxuICBzZXQgaW50cmluc2ljRXJyb3JNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZykgeyB0aGlzLnNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlKTsgfVxuXG4gIGdldCBmaWVsZFZhbHVlKCkgeyByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpOyB9XG4gIGdldCByZXF1aXJlZCgpIHsgcmV0dXJuIHRoaXMuZmllbGRSZXF1aXJlZDsgfVxuICBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHsgdGhpcy5zZXRBdHRyKGZsZEF0dHIucmVxdWlyZWQsIHJlcXVpcmVkID8/IGZhbHNlKTsgfVxuICBnZXQgbWF4TGVuZ3RoKCkgeyByZXR1cm4gKHRoaXMuX21heExlbmd0aCA+IDApID8gdGhpcy5fbWF4TGVuZ3RoLnRvU3RyaW5nKCkgOiAnJzsgfVxuICBzZXQgbWF4TGVuZ3RoKHJlcXVpcmVkTWF4TGVuZ3RoOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHJlcXVpcmVkTWF4TGVuZ3RoID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIubWF4TGVuZ3RoLCBwYXJzZUludChyZXF1aXJlZE1heExlbmd0aCwgMTApKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXF1aXJlZE1heExlbmd0aCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1heExlbmd0aCwgcmVxdWlyZWRNYXhMZW5ndGgpO1xuICAgIH1cbiAgfVxuICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLmdldFZhbHVlKCk7IH1cbiAgc2V0IHZhbHVlKG5ld1ZhbHVlKSB7IHRoaXMuc2V0VmFsdWUobmV3VmFsdWUpOyB9XG5cbiAgbm90aWZ5RWRpdGlvblBhcnRpYWwoKSB7XG4gICAgY29uc3QgaW50cmluc2ljVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgdGhpcy5fZWRpdGlvblBhcnRpYWwubmV4dCh7IGNvZGU6IHRoaXMuZmllbGRDb2RlLCBpbnRyaW5zaWNWYWxpZGF0aW9uIH0pO1xuICB9XG5cbiAgbm90aWZ5RWRpdGlvbkZpbmlzaCgpIHtcbiAgICBsZXQgaW50cmluc2ljVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgY29uc3QgZmllbGREZWZhdWx0Rm9ybWF0ID0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzUGF0dGVybnM/Llt0aGlzLmZpZWxkVHlwZV0gPz8gbnVsbDtcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIGlmIChmaWVsZFZhbHVlICYmIChmaWVsZERlZmF1bHRGb3JtYXQgfHwgdGhpcy5maWVsZEZvcm1hdCkpIHtcbiAgICAgIGludHJpbnNpY1ZhbGlkYXRpb24gPSAoZmllbGREZWZhdWx0Rm9ybWF0Py50ZXN0KGZpZWxkVmFsdWUpID8/IHRydWUpXG4gICAgICAgICYmICh0aGlzLmZpZWxkRm9ybWF0Py50ZXN0KGZpZWxkVmFsdWUpID8/IHRydWUpO1xuICAgICAgaWYgKCFpbnRyaW5zaWNWYWxpZGF0aW9uKSB7XG4gICAgICAgIHRoaXMuc2V0RXJyb3IoJzk5JywgdGhpcy5faW50cmluc2ljRXJyb3JNZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fZWRpdGlvbkZpbmlzaC5uZXh0KHsgY29kZTogdGhpcy5maWVsZENvZGUsIGludHJpbnNpY1ZhbGlkYXRpb24gfSk7XG4gIH1cblxuICBzZXRBdHRyKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXNbbmFtZV0gPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5fZm9ybUNvbmZpZy5tb25pdG9yZWRGaWVsZEF0dHJpYnV0ZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgIHRoaXMuX2F0dHJpYnV0ZUNoYW5nZS5uZXh0KHsgbmFtZSwgdmFsdWUgfSk7XG4gICAgfVxuICB9XG5cbiAgbm90aWZ5RWRpdGlvbkRldGFpbFJlcXVlc3QoKSB7XG4gICAgdGhpcy5fZGV0YWlsUmVxdWVzdC5uZXh0KHRoaXMuZmllbGRDb2RlKTtcbiAgfVxuXG4gIGdldEN1c3RvbUF0dHJpYnV0ZShuYW1lKSB7IHJldHVybiB0aGlzLmN1c3RvbUF0dHJpYnV0ZXM/LltuYW1lXSA/PyBudWxsOyB9XG5cbiAgc2V0VmlzaWJsZUxhYmVsKHZpc2libGVMYWJlbDogYm9vbGVhbikgeyB0aGlzLnNldEF0dHIoZmxkQXR0ci52aXNpYmxlTGFiZWwsIHZpc2libGVMYWJlbCk7IH1cbiAgc2hvd0xhYmVsKCkgeyB0aGlzLnNldFZpc2libGVMYWJlbCh0cnVlKTsgfVxuICBoaWRlTGFiZWwoKSB7IHRoaXMuc2V0VmlzaWJsZUxhYmVsKGZhbHNlKTsgfVxuXG4gIHNldENoYW5nZWQoaGFzQ2hhbmdlZDogYm9vbGVhbikgeyB0aGlzLnNldEF0dHIoZmxkQXR0ci5oYXNDaGFuZ2VkLCBoYXNDaGFuZ2VkKTsgfVxuICBjaGFuZ2VkKCkgeyB0aGlzLnNldENoYW5nZWQodHJ1ZSk7IH1cblxuICBnZXRSYXdWYWx1ZSgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWU7IH1cbiAgc2V0TGFiZWwobGFiZWwpIHsgdGhpcy5zZXRBdHRyKGZsZEF0dHIudGl0bGUsIGxhYmVsKTsgfVxuICBjbGVhbigpIHsgdGhpcy5zZXRWYWx1ZSh0aGlzLmRlZmF1bHRWYWx1ZSB8fCAnJyk7IH1cbiAgZ2V0IGJhY2tlbmQoKSB7IHJldHVybiB0aGlzLnZhbGlkYXRlT25TZXJ2ZXI7IH1cblxuICBzZXRFZGl0YWJsZShlZGl0YWJsZTogYm9vbGVhbiA9IHRydWUpIHsgKGVkaXRhYmxlKSA/IHRoaXMuZW5hYmxlKCkgOiB0aGlzLmRpc2FibGUoKTsgfVxuXG4gIGhhc0Vycm9yKCkgeyByZXR1cm4gdGhpcy5lcnJvckNvZGUgIT09IE5PX0VSUk9SOyB9XG4gIHJlc2V0RXJyb3IoKSB7ICh0aGlzLmVycm9yQ29kZSAhPT0gTk9fRVJST1IpICYmIHRoaXMuc2V0RXJyb3IoTk9fRVJST1IsIG51bGwpOyB9XG4gIHNldEVycm9yKGNvZGUsIG1lc3NhZ2UsIHR5cGUgPSBERUZBVUxUX0VSUk9SX1RZUEUpIHtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5lcnJvckNvZGUsIGNvZGUgPz8gTk9fRVJST1IpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmVycm9yVHlwZSwgKHRoaXMuZXJyb3JDb2RlID09PSBOT19FUlJPUikgPyAnJyA6IHR5cGUpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmVycm9yTWVzc2FnZSwgbWVzc2FnZSA/PyAnJyk7XG4gIH1cblxuICBnZXRFcnJvcigpIHsgcmV0dXJuIHsgdHlwZTogdGhpcy5lcnJvclR5cGUsIGNvZGU6IHRoaXMuZXJyb3JDb2RlLCBtZXNzYWdlOiB0aGlzLmVycm9yTWVzc2FnZSB9OyB9XG4gIGdldCBlcnJvcigpIHsgcmV0dXJuIHRoaXMuZ2V0RXJyb3IoKTsgfVxuICBzZXQgZXJyb3IoZXJyb3JPYmopIHsgdGhpcy5zZXRFcnJvcihlcnJvck9iai5jb2RlLCBlcnJvck9iai5tZXNzYWdlLCBlcnJvck9iai50eXBlID8/IERFRkFVTFRfRVJST1JfVFlQRSkgfVxuXG4gIGdldEVycm9yQ29kZSgpIHsgcmV0dXJuIHRoaXMuZ2V0RXJyb3IoKS5jb2RlOyB9XG4gIHNldEVycm9yQ29kZShjb2RlKSB7IHRoaXMuc2V0RXJyb3IoY29kZSwgdGhpcy5lcnJvck1lc3NhZ2UpOyB9XG4gIGdldEVycm9yTWVzc2FnZSgpIHsgcmV0dXJuIHRoaXMuZ2V0RXJyb3IoKS5tZXNzYWdlOyB9XG4gIHNldEVycm9yTWVzc2FnZShtc2cpIHsgdGhpcy5zZXRFcnJvcih0aGlzLmVycm9yQ29kZSwgbXNnKTsgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgY29uc3QgZmllbGRDdXJyZW50VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgaWYgKGZpZWxkQ3VycmVudFZhbHVlID09PSB1bmRlZmluZWQgfHwgZmllbGRDdXJyZW50VmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoKHRoaXMuZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYXJyYXkgfHwgdGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5waG9uZSlcbiAgICAgICYmIEFycmF5LmlzQXJyYXkoZmllbGRDdXJyZW50VmFsdWUpICYmIGZpZWxkQ3VycmVudFZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICByZXR1cm4gZmllbGRDdXJyZW50VmFsdWUgPT09ICcnO1xuICB9XG5cbiAgZ2V0VmFsdWUoKSB7XG4gICAgc3dpdGNoICh0aGlzLmZpZWxkVHlwZSkge1xuICAgICAgY2FzZSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYm9vbGVhbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWUgPz8gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuY2hlY2s6XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlID8/IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmN1cnJlbmN5OlxuICAgICAgICByZXR1cm4gKHR5cGVvZiB0aGlzLl9maWVsZFZhbHVlID09PSAnc3RyaW5nJylcbiAgICAgICAgICA/IHRoaXMuX2ZpZWxkVmFsdWUucmVwbGFjZSgnLCcsICcnKSA6IHRoaXMuX2ZpZWxkVmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZyb21TZXJ2ZXIoZmxkKSB7XG4gICAgY29uc3QgZmllbGRLZXlzID0gT2JqZWN0LmtleXMoZmxkKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZmllbGRLZXlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgYXR0ck5hbWUgPSBmaWVsZEtleXNbaW5kZXhdO1xuICAgICAgY29uc3QgYXR0clZhbHVlID0gZmxkW2F0dHJOYW1lXTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLnZpc2libGUpICYmIHRoaXMuc2V0VmlzaWJpbGl0eShhdHRyVmFsdWUpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMubGFiZWxWaXNpYmxlKSAmJiB0aGlzLnNldFZpc2libGVMYWJlbChmbGQudmlzaWJsZUxhYmVsKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLnJlcXVpcmVkKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5yZXF1aXJlZCwgZmxkLnJlcXVpcmVkID8/IGZhbHNlKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLmVycm9yQ29kZSkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZXJyb3JDb2RlLCBmbGQuZXJyb3JDb2RlKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLmVycm9yTWVzc2FnZSkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZXJyb3JNZXNzYWdlLCBmbGQuZXJyb3JNZXNzYWdlKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLnRvb2x0aXApICYmIHRoaXMuc2V0QXR0cihmbGRBdHRyLnRvb2x0aXBUZXh0LCBmbGQudG9vbHRpcCk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy5pbmZvKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5pbmZvLCBmbGQuaW5mbyk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy5lZGl0YWJsZSkgJiYgdGhpcy5zZXRFZGl0YWJsZShmbGQuZWRpdGFibGUpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMudGl0bGUpICYmIHRoaXMuc2V0TGFiZWwoZmxkLmZpZWxkVGl0bGUudG9TdHJpbmcoKSk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy52YWx1ZSkgJiYgKHRoaXMuc2V0VmFsdWUoZmxkLmZpZWxkVmFsdWUpICYmIHRoaXMuc2V0Q2hhbmdlZChmYWxzZSkpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMub3B0aW9ucykgJiYgdGhpcy5zZXRGaWVsZE9wdGlvbnMoZmxkLmZpZWxkT3B0aW9ucyk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy5jYXB0dXJlVHlwZSkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIuY2FwdHVyZVR5cGUsIGZsZC5jYXB0dXJlVHlwZSB8fCAnSU5QVVQnKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLnR5cGUpICYmIHRoaXMuc2V0RmllbGRUeXBlKGZsZC5maWVsZFR5cGVDb2RlKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLm1heExlbmd0aCkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIubWF4TGVuZ3RoLCBmbGQubWF4TGVuZ3RoKTtcbiAgICB9XG4gIH1cblxuICBzZXRGaWVsZFR5cGUoaW5wdXRGaWVsZFR5cGUpIHtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci50eXBlLCBpbnB1dEZpZWxkVHlwZSk7XG4gIH1cblxuICBmb3JtYXQoKSB7XG4gICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuY3VycmVuY3kpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnZhbHVlLCBmb3JtYXRDdXJyZW5jeSh0aGlzLl9maWVsZFZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgc2V0TWluVmFsdWUobWluVmFsdWUpIHtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlXG4gICAgICAmJiB0aGlzLndpZGdldD8uc2V0TWluVmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1pblZhbHVlLCBtaW5WYWx1ZSk7XG4gICAgICBpZiAoIW1pblZhbHVlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5zZXRNaW5WYWx1ZShmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtaW5EYXRlID0gbmV3IERhdGUobWluVmFsdWUpO1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWluVmFsdWUobWluRGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0TWF4VmFsdWUobWF4VmFsdWUpIHtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlXG4gICAgICAmJiB0aGlzLndpZGdldD8uc2V0TWF4VmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1heFZhbHVlLCBtYXhWYWx1ZSk7XG4gICAgICBpZiAoIW1heFZhbHVlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5zZXRNYXhWYWx1ZShmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtYXhEYXRlID0gbmV3IERhdGUobWF4VmFsdWUpO1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWF4VmFsdWUobWF4RGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0RmllbGRPcHRpb25zKCkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZmllbGRPcHRpb25zKSk7XG4gIH1cblxuICBzZXRGaWVsZE9wdGlvbnMobmV3T3B0aW9ucykge1xuICAgIGlmICgodGhpcy5jYXB0dXJlVHlwZSAhPT0gJ0xJU1QnICYmIHRoaXMuY2FwdHVyZVR5cGUgIT09ICdSQURJTycpXG4gICAgICB8fCB0eXBlb2YgbmV3T3B0aW9ucyA9PT0gVU5ERUZJTkVEIHx8ICFuZXdPcHRpb25zXG4gICAgICB8fCAhQXJyYXkuaXNBcnJheShuZXdPcHRpb25zKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZmllbGRPcHRpb25zID0gbmV3T3B0aW9ucy5tYXAob3B0aW9uID0+IHtcbiAgICAgIGlmIChvcHRpb24udGV4dCAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi50ZXh0ICE9PSBudWxsXG4gICAgICAgICYmIG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4geyBmaWVsZE9wdGlvblZhbHVlOiBvcHRpb24udGV4dCwgZmllbGRPcHRpb25JZDogb3B0aW9uLnZhbHVlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyAuLi5vcHRpb24gfTtcbiAgICB9KTtcbiAgICBmaWVsZE9wdGlvbnMgPSAoZmllbGRPcHRpb25zICYmIEFycmF5LmlzQXJyYXkoZmllbGRPcHRpb25zKVxuICAgICAgJiYgZmllbGRPcHRpb25zLmxlbmd0aCA+IDApID8gZmllbGRPcHRpb25zIDogW107XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIub3B0aW9ucywgZmllbGRPcHRpb25zKTtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheSAmJiB0aGlzLndpZGdldCkge1xuICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0Py5yZWZlcmVzaENvbnRlbnQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ZpZWxkVmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmFycmF5ICYmIEFycmF5LmlzQXJyYXkodGhpcy5fZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMuX2ZpZWxkVmFsdWU/LmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgdGhpcy5maWVsZE9wdGlvbnMuZmluZChvcHQgPT4gb3B0LmZpZWxkT3B0aW9uSWQgPT09IGl0ZW0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnZhbHVlLCBmaWVsZFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbEluT3B0aW9ucyA9IHRoaXMuZmllbGRPcHRpb25zXG4gICAgICAgICAgLmZpbmQoaXRlbSA9PiBpdGVtLmZpZWxkT3B0aW9uSWQgPT09IHRoaXMuX2ZpZWxkVmFsdWUpO1xuICAgICAgICBpZiAoIXZhbEluT3B0aW9ucykge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoJycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkUmVxdWlyZWQgJiYgdGhpcy5maWVsZE9wdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKHRoaXMuZmllbGRPcHRpb25zWzBdLmZpZWxkT3B0aW9uSWQpO1xuICAgICAgaWYgKHRoaXMud2lkZ2V0Py5vbkNoYW5nZUNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy53aWRnZXQ/Lm9uQ2hhbmdlQ29udGVudCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFZhbHVlKG5ld1ZhbHVlLCB3aWRnZXRVcGRhdGUgPSB0cnVlKSB7XG4gICAgaWYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gVU5ERUZJTkVEIHx8IG5ld1ZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbGV0IG5ld0ZpbmFsVmFsdWU7XG4gICAgc3dpdGNoICh0aGlzLmZpZWxkVHlwZSkge1xuICAgICAgY2FzZSAnQk9PTEVBTic6XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSAhIW5ld1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmJvb2xlYW46XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSAhIW5ld1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmNoZWNrOlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gISFuZXdWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheTpcbiAgICAgICAgaWYgKG5ld1ZhbHVlID09PSBudWxsIHx8IG5ld1ZhbHVlID09PSAnJykge1xuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBbXTtcbiAgICAgICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIChuZXdWYWx1ZSkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLm1hcDpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICBpZiAobmV3RmluYWxWYWx1ZSAmJiB0aGlzLndpZGdldCAmJiB3aWRnZXRVcGRhdGUpIHtcbiAgICAgICAgICBjb25zdCBsYXRpdHVkZSA9IHBhcnNlRmxvYXQobmV3RmluYWxWYWx1ZVswXSk7XG4gICAgICAgICAgY29uc3QgbG9uZ2l0dWRlID0gcGFyc2VGbG9hdChuZXdGaW5hbFZhbHVlWzFdKTtcbiAgICAgICAgICB0aGlzLndpZGdldD8uc2V0TG9jYXRpb24obGF0aXR1ZGUsIGxvbmdpdHVkZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5jdXJyZW5jeTpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IGZvcm1hdEN1cnJlbmN5KG5ld1ZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZmllbGRWYWx1ZSAhPT0gbmV3RmluYWxWYWx1ZSkge1xuICAgICAgdGhpcy5zZXRDaGFuZ2VkKHRydWUpO1xuICAgICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIudmFsdWUsIG5ld0ZpbmFsVmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
334
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUU5QixNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztBQUNuQyxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztBQUNyQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztBQUVqQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFDMUIsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO0FBRTNCLE1BQU0sT0FBTyxHQUFHO0lBQ2QsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLEtBQUssRUFBRSxhQUFhO0lBQ3BCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLFlBQVksRUFBRSxlQUFlO0lBQzdCLHFCQUFxQixFQUFFLHdCQUF3QjtJQUMvQyxJQUFJLEVBQUUsV0FBVztJQUNqQixJQUFJLEVBQUUsV0FBVztJQUNqQixZQUFZLEVBQUUsY0FBYztJQUM1QixlQUFlLEVBQUUsaUJBQWlCO0lBQ2xDLFlBQVksRUFBRSxjQUFjO0lBQzVCLFFBQVEsRUFBRSxlQUFlO0lBQ3pCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLEtBQUssRUFBRSxZQUFZO0lBQ25CLElBQUksRUFBRSxXQUFXO0lBQ2pC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O29CQUM5QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsTUFBTTtZQUNSO2dCQUNFLGFBQWEsR0FBRyxRQUFRLENBQUM7Z0JBQ3pCLE1BQU07U0FDVDtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxhQUFhLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDNUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGVsZW1lbnRUeXBlcywgTk9fRVJST1IgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcblxuY29uc3QgVU5ERUZJTkVEID0gJ3VuZGVmaW5lZCc7XG5cbmNvbnN0IERFRkFVTFRfRVJST1JfVFlQRSA9ICdlcnJvcic7XG5jb25zdCBERUZBVUxUX0NBUFRVUkVfVFlQRSA9ICdJTlBVVCc7XG5jb25zdCBERUZBVUxUX0FMSUdOTUVOVCA9ICdsZWZ0JztcblxuY29uc3QgU1REX01BWF9MRU5HVEggPSA1MDtcbmNvbnN0IEJJR19NQVhfTEVOR1RIID0gNTAwO1xuXG5jb25zdCBmbGRBdHRyID0ge1xuICB2YWxpZGF0ZU9uU2VydmVyOiAndmFsaWRhdGVPblNlcnZlcicsXG4gIHZhbHVlOiAnX2ZpZWxkVmFsdWUnLFxuICBtaW5WYWx1ZTogJ19taW5WYWx1ZScsXG4gIG1heFZhbHVlOiAnX21heFZhbHVlJyxcbiAgbWF4TGVuZ3RoOiAnX21heExlbmd0aCcsXG4gIG9uVmFsaWRhdGlvbjogJ19vblZhbGlkYXRpb24nLFxuICBpbnRyaW5zaWNFcnJvck1lc3NhZ2U6ICdfaW50cmluc2ljRXJyb3JNZXNzYWdlJyxcbiAgY29kZTogJ2ZpZWxkQ29kZScsXG4gIGluZm86ICdmaWVsZEluZm8nLFxuICBkZWZhdWx0VmFsdWU6ICdkZWZhdWx0VmFsdWUnLFxuICBkZWZhdWx0RWRpdGFibGU6ICdkZWZhdWx0RWRpdGFibGUnLFxuICB2aXNpYmxlTGFiZWw6ICd2aXNpYmxlTGFiZWwnLFxuICByZXF1aXJlZDogJ2ZpZWxkUmVxdWlyZWQnLFxuICBoYXNDaGFuZ2VkOiAnaGFzQ2hhbmdlZCcsXG4gIG91dHB1dE9ubHk6ICdvdXRwdXRPbmx5JyxcbiAgY2FwdHVyZVR5cGU6ICdjYXB0dXJlVHlwZScsXG4gIHRpdGxlOiAnZmllbGRUaXRsZScsXG4gIHR5cGU6ICdmaWVsZFR5cGUnLFxuICBhbGlnbm1lbnQ6ICdmaWVsZEFsaWdubWVudCcsXG4gIGZvcm1hdDogJ2ZpZWxkRm9ybWF0JyxcbiAgZXh0ZXJuYWxWYWx1ZTogJ2V4dGVybmFsVmFsdWUnLFxuICB0b29sdGlwVGV4dDogJ3Rvb2x0aXBUZXh0JyxcbiAgZXJyb3JUeXBlOiAnZXJyb3JUeXBlJyxcbiAgZXJyb3JDb2RlOiAnZXJyb3JDb2RlJyxcbiAgZXJyb3JNZXNzYWdlOiAnZXJyb3JNZXNzYWdlJyxcbiAgb3B0aW9uczogJ2ZpZWxkT3B0aW9ucycsXG59O1xuXG5leHBvcnQgY2xhc3MgRmllbGREZXNjcmlwdG9yIGV4dGVuZHMgRm9ybUVsZW1lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZGl0aW9uRmluaXNoID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZGl0aW9uUGFydGlhbCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGV0YWlsUmVxdWVzdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXR0cmlidXRlQ2hhbmdlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIHByaXZhdGUgdmFsaWRhdGVPblNlcnZlcjogYm9vbGVhbjtcblxuICBfZmllbGRWYWx1ZTogYW55O1xuICBfbWluVmFsdWU6IGFueTtcbiAgX21heFZhbHVlOiBhbnk7XG4gIF9tYXhMZW5ndGg6IG51bWJlcjtcbiAgX29uVmFsaWRhdGlvbjogYm9vbGVhbjtcbiAgX2ludHJpbnNpY0Vycm9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIGZpZWxkQ29kZTogc3RyaW5nO1xuICBmaWVsZEluZm86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlOiBzdHJpbmc7XG4gIGRlZmF1bHRFZGl0YWJsZTogYm9vbGVhbjtcblxuICB2aXNpYmxlTGFiZWw6IGJvb2xlYW47XG4gIGZpZWxkUmVxdWlyZWQ6IGJvb2xlYW47XG4gIGhhc0NoYW5nZWQ6IGJvb2xlYW47XG4gIG91dHB1dE9ubHk6IGJvb2xlYW47XG4gIGNhcHR1cmVUeXBlOiBzdHJpbmc7XG4gIGZpZWxkVGl0bGU6IHN0cmluZztcbiAgZmllbGRUeXBlOiBzdHJpbmc7XG4gIGZpZWxkQWxpZ25tZW50OiBzdHJpbmc7XG4gIGZpZWxkRm9ybWF0OiBSZWdFeHA7XG4gIGV4dGVybmFsVmFsdWU6IGFueTtcbiAgdG9vbHRpcFRleHQ6IHN0cmluZztcblxuICBlcnJvclR5cGU6IHN0cmluZztcbiAgZXJyb3JDb2RlOiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIGZpZWxkT3B0aW9uczoge1xuICAgIGZpZWxkT3B0aW9uVmFsdWU6IHN0cmluZztcbiAgICBmaWVsZE9wdGlvbklkOiBzdHJpbmc7XG4gIH1bXTtcblxuICBjb25zdHJ1Y3RvcihpbnB1dEZpZWxkUmVjZWl2ZWQsIGZvcm1Db25maWcpIHtcbiAgICBzdXBlcihpbnB1dEZpZWxkUmVjZWl2ZWQsIGZvcm1Db25maWcpO1xuICAgIHRoaXMuZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZXMuZmllbGQ7XG4gICAgY29uc3QgZmxkID0gKGlucHV0RmllbGRSZWNlaXZlZCkgPyBpbnB1dEZpZWxkUmVjZWl2ZWQgOiB7fTtcblxuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmNvZGUsIGZsZC5maWVsZENvZGUpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnRpdGxlLCBmbGQuZmllbGRUaXRsZSA/PyB0aGlzLmZpZWxkQ29kZSk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuY2FwdHVyZVR5cGUsIGZsZC5jYXB0dXJlVHlwZSA/PyBERUZBVUxUX0NBUFRVUkVfVFlQRSk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZGVmYXVsdFZhbHVlLCBmbGQuZGVmYXVsdFZhbHVlID8/IG51bGwpO1xuICAgIGNvbnN0IGRlZmF1bHRUeXBlQWxpZ25tZW50ID0gKHRoaXMuX2Zvcm1Db25maWcudGFibGVGaWVsZFN0eWxlc1t0aGlzLmZpZWxkVHlwZV0gIT0gbnVsbClcbiAgICAgID8gdGhpcy5fZm9ybUNvbmZpZy50YWJsZUZpZWxkU3R5bGVzW3RoaXMuZmllbGRUeXBlXVsndGV4dC1hbGlnbiddIDogREVGQVVMVF9BTElHTk1FTlQ7XG4gICAgY29uc3QgZmllbGRBbGlnbm1lbnQgPSAoZmxkLmFsaWdubWVudCAhPSBudWxsKSA/IGZsZC5hbGlnbm1lbnQudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRUeXBlQWxpZ25tZW50O1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmFsaWdubWVudCwgZmllbGRBbGlnbm1lbnQpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmluZm8sIGZsZC5pbmZvIHx8ICcnKTtcbiAgICBsZXQgZmllbGRGb3JtYXQ7XG4gICAgdHJ5IHtcbiAgICAgIGZpZWxkRm9ybWF0ID0gKGZsZC5mb3JtYXQpID8gbmV3IFJlZ0V4cChmbGQuZm9ybWF0KSA6IG51bGw7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZmllbGRGb3JtYXQgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5mb3JtYXQsIGZpZWxkRm9ybWF0KTtcblxuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnZhbGlkYXRlT25TZXJ2ZXIsIGZsZC5zZXJ2ZXJBY3Rpb24gPz8gZmFsc2UpO1xuXG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIudG9vbHRpcFRleHQsIGZsZC50b29sdGlwIHx8ICcnKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5kZWZhdWx0RWRpdGFibGUsIHRoaXMuZW5hYmxlZCk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIucmVxdWlyZWQsIGZsZC5yZXF1aXJlZCA/PyBmYWxzZSk7XG4gICAgdGhpcy5zZXRFcnJvcihmbGQuZXJyb3JDb2RlLCBmbGQuZXJyb3JNZXNzYWdlLCBmbGQuZXJyb3JUeXBlID8/IERFRkFVTFRfRVJST1JfVFlQRSk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIub3V0cHV0T25seSwgZmxkLm91dHB1dE9ubHkgPz8gZmFsc2UpO1xuICAgIGNvbnN0IG1heExlbmd0aCA9IGZsZC5tYXhMZW5ndGggPz8gKHRoaXMuY2FwdHVyZVR5cGUgPT09ICdURVhUQVJFQScgPyBCSUdfTUFYX0xFTkdUSCA6IFNURF9NQVhfTEVOR1RIKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5tYXhMZW5ndGgsIG1heExlbmd0aCk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuaW50cmluc2ljRXJyb3JNZXNzYWdlLCB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZUVyck1zZ1t0aGlzLmZpZWxkVHlwZV0gPz8gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVFcnJNc2cuREVGQVVMVCk7XG5cbiAgICB0aGlzLnNldEZpZWxkVHlwZShmbGQuZmllbGRUeXBlQ29kZSk7XG4gICAgdGhpcy5zZXRFZGl0YWJsZShmbGQuZWRpdGFibGUgPz8gdHJ1ZSk7XG4gICAgdGhpcy5zZXRWaXNpYmxlTGFiZWwoZmxkLnZpc2libGVMYWJlbCA/PyB0cnVlKTtcbiAgICB0aGlzLnNldFZpc2liaWxpdHkoZmxkLnZpc2libGUpO1xuICAgIHRoaXMuc2V0RmllbGRPcHRpb25zKGZsZC5maWVsZE9wdGlvbnMpO1xuICAgIHRoaXMuc2V0VmFsdWUoZmxkLmZpZWxkVmFsdWUgfHwgdGhpcy5kZWZhdWx0VmFsdWUgfHwgJycpO1xuICB9XG5cbiAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLmZpZWxkQ29kZTsgfVxuICBnZXQgZWRpdGlvbkZpbmlzaCgpIHsgcmV0dXJuIHRoaXMuX2VkaXRpb25GaW5pc2g7IH1cbiAgZ2V0IGF0dHJpYnV0ZUNoYW5nZSgpIHsgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZUNoYW5nZTsgfVxuXG4gIGdldCBlZGl0aW9uUGFydGlhbCgpIHsgcmV0dXJuIHRoaXMuX2VkaXRpb25QYXJ0aWFsOyB9XG4gIGdldCBkZXRhaWxSZXF1ZXN0KCkgeyByZXR1cm4gdGhpcy5fZGV0YWlsUmVxdWVzdDsgfVxuICBnZXQgaW5mbygpIHsgcmV0dXJuIHRoaXMuZmllbGRJbmZvOyB9XG5cbiAgZ2V0IHZhbGlkYXRpbmcoKSB7IHJldHVybiB0aGlzLl9vblZhbGlkYXRpb247IH1cbiAgc2V0IHZhbGlkYXRpbmcoaXNWYWxpZGF0aW5nOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLm9uVmFsaWRhdGlvbiwgaXNWYWxpZGF0aW5nKTsgfVxuXG4gIHNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpIHsgdGhpcy5zZXRBdHRyKGZsZEF0dHIuaW50cmluc2ljRXJyb3JNZXNzYWdlLCBtZXNzYWdlKTsgfVxuICBzZXQgaW50cmluc2ljRXJyb3JNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZykgeyB0aGlzLnNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlKTsgfVxuXG4gIGdldCBmaWVsZFZhbHVlKCkgeyByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpOyB9XG5cbiAgZ2V0UmVxdWlyZWQoKSB7IHJldHVybiB0aGlzLnJlcXVpcmVkOyB9XG4gIHNldFJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7IHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZDsgfVxuXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZmllbGRSZXF1aXJlZDsgfVxuICBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHsgdGhpcy5zZXRBdHRyKGZsZEF0dHIucmVxdWlyZWQsIHJlcXVpcmVkID8/IGZhbHNlKTsgfVxuICBnZXQgbWF4TGVuZ3RoKCkgeyByZXR1cm4gKHRoaXMuX21heExlbmd0aCA+IDApID8gdGhpcy5fbWF4TGVuZ3RoLnRvU3RyaW5nKCkgOiAnJzsgfVxuICBzZXQgbWF4TGVuZ3RoKHJlcXVpcmVkTWF4TGVuZ3RoOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHJlcXVpcmVkTWF4TGVuZ3RoID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIubWF4TGVuZ3RoLCBwYXJzZUludChyZXF1aXJlZE1heExlbmd0aCwgMTApKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXF1aXJlZE1heExlbmd0aCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1heExlbmd0aCwgcmVxdWlyZWRNYXhMZW5ndGgpO1xuICAgIH1cbiAgfVxuICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLmdldFZhbHVlKCk7IH1cbiAgc2V0IHZhbHVlKG5ld1ZhbHVlKSB7IHRoaXMuc2V0VmFsdWUobmV3VmFsdWUpOyB9XG5cbiAgbm90aWZ5RWRpdGlvblBhcnRpYWwoKSB7XG4gICAgY29uc3QgaW50cmluc2ljVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgdGhpcy5fZWRpdGlvblBhcnRpYWwubmV4dCh7IGNvZGU6IHRoaXMuZmllbGRDb2RlLCBpbnRyaW5zaWNWYWxpZGF0aW9uIH0pO1xuICB9XG5cbiAgbm90aWZ5RWRpdGlvbkZpbmlzaCgpIHtcbiAgICBsZXQgaW50cmluc2ljVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgY29uc3QgZmllbGREZWZhdWx0Rm9ybWF0ID0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzUGF0dGVybnM/Llt0aGlzLmZpZWxkVHlwZV0gPz8gbnVsbDtcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIGlmIChmaWVsZFZhbHVlICYmIChmaWVsZERlZmF1bHRGb3JtYXQgfHwgdGhpcy5maWVsZEZvcm1hdCkpIHtcbiAgICAgIGludHJpbnNpY1ZhbGlkYXRpb24gPSAoZmllbGREZWZhdWx0Rm9ybWF0Py50ZXN0KGZpZWxkVmFsdWUpID8/IHRydWUpXG4gICAgICAgICYmICh0aGlzLmZpZWxkRm9ybWF0Py50ZXN0KGZpZWxkVmFsdWUpID8/IHRydWUpO1xuICAgICAgaWYgKCFpbnRyaW5zaWNWYWxpZGF0aW9uKSB7XG4gICAgICAgIHRoaXMuc2V0RXJyb3IoJzk5JywgdGhpcy5faW50cmluc2ljRXJyb3JNZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fZWRpdGlvbkZpbmlzaC5uZXh0KHsgY29kZTogdGhpcy5maWVsZENvZGUsIGludHJpbnNpY1ZhbGlkYXRpb24gfSk7XG4gIH1cblxuICBzZXRBdHRyKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXNbbmFtZV0gPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5fZm9ybUNvbmZpZy5tb25pdG9yZWRGaWVsZEF0dHJpYnV0ZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgIHRoaXMuX2F0dHJpYnV0ZUNoYW5nZS5uZXh0KHsgbmFtZSwgdmFsdWUgfSk7XG4gICAgfVxuICB9XG5cbiAgbm90aWZ5RWRpdGlvbkRldGFpbFJlcXVlc3QoKSB7XG4gICAgdGhpcy5fZGV0YWlsUmVxdWVzdC5uZXh0KHRoaXMuZmllbGRDb2RlKTtcbiAgfVxuXG5cblxuICBzZXRWaXNpYmxlTGFiZWwodmlzaWJsZUxhYmVsOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLnZpc2libGVMYWJlbCwgdmlzaWJsZUxhYmVsKTsgfVxuICBzaG93TGFiZWwoKSB7IHRoaXMuc2V0VmlzaWJsZUxhYmVsKHRydWUpOyB9XG4gIGhpZGVMYWJlbCgpIHsgdGhpcy5zZXRWaXNpYmxlTGFiZWwoZmFsc2UpOyB9XG5cbiAgc2V0Q2hhbmdlZChoYXNDaGFuZ2VkOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLmhhc0NoYW5nZWQsIGhhc0NoYW5nZWQpOyB9XG4gIGNoYW5nZWQoKSB7IHRoaXMuc2V0Q2hhbmdlZCh0cnVlKTsgfVxuXG4gIGdldFJhd1ZhbHVlKCkgeyByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZTsgfVxuICBzZXRMYWJlbChsYWJlbCkgeyB0aGlzLnNldEF0dHIoZmxkQXR0ci50aXRsZSwgbGFiZWwpOyB9XG4gIGNsZWFuKCkgeyB0aGlzLnNldFZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlIHx8ICcnKTsgdGhpcy5yZXNldEVycm9yKCk7IH1cbiAgZ2V0IGJhY2tlbmQoKSB7IHJldHVybiB0aGlzLnZhbGlkYXRlT25TZXJ2ZXI7IH1cblxuICBzZXRFZGl0YWJsZShlZGl0YWJsZTogYm9vbGVhbiA9IHRydWUpIHsgKGVkaXRhYmxlKSA/IHRoaXMuZW5hYmxlKCkgOiB0aGlzLmRpc2FibGUoKTsgfVxuXG4gIGhhc0Vycm9yKCkgeyByZXR1cm4gdGhpcy5lcnJvckNvZGUgIT09IE5PX0VSUk9SOyB9XG4gIHJlc2V0RXJyb3IoKSB7ICh0aGlzLmVycm9yQ29kZSAhPT0gTk9fRVJST1IpICYmIHRoaXMuc2V0RXJyb3IoTk9fRVJST1IsIG51bGwpOyB9XG4gIHNldEVycm9yKGNvZGUsIG1lc3NhZ2UsIHR5cGUgPSBERUZBVUxUX0VSUk9SX1RZUEUpIHtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5lcnJvckNvZGUsIGNvZGUgPz8gTk9fRVJST1IpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmVycm9yVHlwZSwgKHRoaXMuZXJyb3JDb2RlID09PSBOT19FUlJPUikgPyAnJyA6IHR5cGUpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmVycm9yTWVzc2FnZSwgbWVzc2FnZSA/PyAnJyk7XG4gIH1cblxuICBnZXRFcnJvcigpIHsgcmV0dXJuIHsgdHlwZTogdGhpcy5lcnJvclR5cGUsIGNvZGU6IHRoaXMuZXJyb3JDb2RlLCBtZXNzYWdlOiB0aGlzLmVycm9yTWVzc2FnZSB9OyB9XG4gIGdldCBlcnJvcigpIHsgcmV0dXJuIHRoaXMuZ2V0RXJyb3IoKTsgfVxuICBzZXQgZXJyb3IoZXJyb3JPYmopIHsgdGhpcy5zZXRFcnJvcihlcnJvck9iai5jb2RlLCBlcnJvck9iai5tZXNzYWdlLCBlcnJvck9iai50eXBlID8/IERFRkFVTFRfRVJST1JfVFlQRSkgfVxuXG4gIGdldEVycm9yQ29kZSgpIHsgcmV0dXJuIHRoaXMuZ2V0RXJyb3IoKS5jb2RlOyB9XG4gIHNldEVycm9yQ29kZShjb2RlKSB7IHRoaXMuc2V0RXJyb3IoY29kZSwgdGhpcy5lcnJvck1lc3NhZ2UpOyB9XG4gIGdldEVycm9yTWVzc2FnZSgpIHsgcmV0dXJuIHRoaXMuZ2V0RXJyb3IoKS5tZXNzYWdlOyB9XG4gIHNldEVycm9yTWVzc2FnZShtc2cpIHsgdGhpcy5zZXRFcnJvcih0aGlzLmVycm9yQ29kZSwgbXNnKTsgfVxuXG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuaXNFbXB0eSgpOyB9XG5cbiAgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBmaWVsZEN1cnJlbnRWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICBpZiAoZmllbGRDdXJyZW50VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICgodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheSB8fCB0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLnBob25lKVxuICAgICAgJiYgQXJyYXkuaXNBcnJheShmaWVsZEN1cnJlbnRWYWx1ZSkgJiYgZmllbGRDdXJyZW50VmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIHJldHVybiBmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gJyc7XG4gIH1cblxuICBnZXRWYWx1ZSgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGRUeXBlKSB7XG4gICAgICBjYXNlIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5ib29sZWFuOlxuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZSA/PyBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5jaGVjazpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWUgPz8gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuY3VycmVuY3k6XG4gICAgICAgIHJldHVybiAodHlwZW9mIHRoaXMuX2ZpZWxkVmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgICAgID8gdGhpcy5fZmllbGRWYWx1ZS5yZXBsYWNlKCcsJywgJycpIDogdGhpcy5fZmllbGRWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRnJvbVNlcnZlcihmbGQpIHtcbiAgICBjb25zdCBmaWVsZEtleXMgPSBPYmplY3Qua2V5cyhmbGQpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZEtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBhdHRyTmFtZSA9IGZpZWxkS2V5c1tpbmRleF07XG4gICAgICBjb25zdCBhdHRyVmFsdWUgPSBmbGRbYXR0ck5hbWVdO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMudmlzaWJsZSkgJiYgdGhpcy5zZXRWaXNpYmlsaXR5KGF0dHJWYWx1ZSk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy5sYWJlbFZpc2libGUpICYmIHRoaXMuc2V0VmlzaWJsZUxhYmVsKGZsZC52aXNpYmxlTGFiZWwpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMucmVxdWlyZWQpICYmIHRoaXMuc2V0QXR0cihmbGRBdHRyLnJlcXVpcmVkLCBmbGQucmVxdWlyZWQgPz8gZmFsc2UpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMuZXJyb3JDb2RlKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5lcnJvckNvZGUsIGZsZC5lcnJvckNvZGUpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMuZXJyb3JNZXNzYWdlKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5lcnJvck1lc3NhZ2UsIGZsZC5lcnJvck1lc3NhZ2UpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMudG9vbHRpcCkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIudG9vbHRpcFRleHQsIGZsZC50b29sdGlwKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLmluZm8pICYmIHRoaXMuc2V0QXR0cihmbGRBdHRyLmluZm8sIGZsZC5pbmZvKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLmVkaXRhYmxlKSAmJiB0aGlzLnNldEVkaXRhYmxlKGZsZC5lZGl0YWJsZSk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy50aXRsZSkgJiYgdGhpcy5zZXRMYWJlbChmbGQuZmllbGRUaXRsZS50b1N0cmluZygpKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLnZhbHVlKSAmJiAodGhpcy5zZXRWYWx1ZShmbGQuZmllbGRWYWx1ZSkgJiYgdGhpcy5zZXRDaGFuZ2VkKGZhbHNlKSk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy5vcHRpb25zKSAmJiB0aGlzLnNldEZpZWxkT3B0aW9ucyhmbGQuZmllbGRPcHRpb25zKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLmNhcHR1cmVUeXBlKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5jYXB0dXJlVHlwZSwgZmxkLmNhcHR1cmVUeXBlIHx8ICdJTlBVVCcpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMudHlwZSkgJiYgdGhpcy5zZXRGaWVsZFR5cGUoZmxkLmZpZWxkVHlwZUNvZGUpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMubWF4TGVuZ3RoKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5tYXhMZW5ndGgsIGZsZC5tYXhMZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gIHNldEZpZWxkVHlwZShpbnB1dEZpZWxkVHlwZSkge1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnR5cGUsIGlucHV0RmllbGRUeXBlKTtcbiAgfVxuXG4gIHNldE1pblZhbHVlKG1pblZhbHVlKSB7XG4gICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuZGF0ZVxuICAgICAgJiYgdGhpcy53aWRnZXQ/LnNldE1pblZhbHVlKSB7XG4gICAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5taW5WYWx1ZSwgbWluVmFsdWUpO1xuICAgICAgaWYgKCFtaW5WYWx1ZSkge1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWluVmFsdWUoZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbWluRGF0ZSA9IG5ldyBEYXRlKG1pblZhbHVlKTtcbiAgICAgICAgdGhpcy53aWRnZXQ/LnNldE1pblZhbHVlKG1pbkRhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldE1heFZhbHVlKG1heFZhbHVlKSB7XG4gICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuZGF0ZVxuICAgICAgJiYgdGhpcy53aWRnZXQ/LnNldE1heFZhbHVlKSB7XG4gICAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5tYXhWYWx1ZSwgbWF4VmFsdWUpO1xuICAgICAgaWYgKCFtYXhWYWx1ZSkge1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWF4VmFsdWUoZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbWF4RGF0ZSA9IG5ldyBEYXRlKG1heFZhbHVlKTtcbiAgICAgICAgdGhpcy53aWRnZXQ/LnNldE1heFZhbHVlKG1heERhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldEZpZWxkT3B0aW9ucygpIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZpZWxkT3B0aW9ucykpO1xuICB9XG5cbiAgc2V0RmllbGRPcHRpb25zKG5ld09wdGlvbnMpIHtcbiAgICBpZiAoKHRoaXMuY2FwdHVyZVR5cGUgIT09ICdMSVNUJyAmJiB0aGlzLmNhcHR1cmVUeXBlICE9PSAnUkFESU8nKVxuICAgICAgfHwgdHlwZW9mIG5ld09wdGlvbnMgPT09IFVOREVGSU5FRCB8fCAhbmV3T3B0aW9uc1xuICAgICAgfHwgIUFycmF5LmlzQXJyYXkobmV3T3B0aW9ucykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGZpZWxkT3B0aW9ucyA9IG5ld09wdGlvbnMubWFwKG9wdGlvbiA9PiB7XG4gICAgICBpZiAob3B0aW9uLnRleHQgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udGV4dCAhPT0gbnVsbFxuICAgICAgICAmJiBvcHRpb24udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHsgZmllbGRPcHRpb25WYWx1ZTogb3B0aW9uLnRleHQsIGZpZWxkT3B0aW9uSWQ6IG9wdGlvbi52YWx1ZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgLi4ub3B0aW9uIH07XG4gICAgfSk7XG4gICAgZmllbGRPcHRpb25zID0gKGZpZWxkT3B0aW9ucyAmJiBBcnJheS5pc0FycmF5KGZpZWxkT3B0aW9ucylcbiAgICAgICYmIGZpZWxkT3B0aW9ucy5sZW5ndGggPiAwKSA/IGZpZWxkT3B0aW9ucyA6IFtdO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm9wdGlvbnMsIGZpZWxkT3B0aW9ucyk7XG4gICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYXJyYXkgJiYgdGhpcy53aWRnZXQpIHtcbiAgICAgIHJldHVybiB0aGlzLndpZGdldD8ucmVmZXJlc2hDb250ZW50KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9maWVsZFZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheSAmJiBBcnJheS5pc0FycmF5KHRoaXMuX2ZpZWxkVmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSB0aGlzLl9maWVsZFZhbHVlPy5maWx0ZXIoaXRlbSA9PlxuICAgICAgICAgIHRoaXMuZmllbGRPcHRpb25zLmZpbmQob3B0ID0+IG9wdC5maWVsZE9wdGlvbklkID09PSBpdGVtKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci52YWx1ZSwgZmllbGRWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB2YWxJbk9wdGlvbnMgPSB0aGlzLmZpZWxkT3B0aW9uc1xuICAgICAgICAgIC5maW5kKGl0ZW0gPT4gaXRlbS5maWVsZE9wdGlvbklkID09PSB0aGlzLl9maWVsZFZhbHVlKTtcbiAgICAgICAgaWYgKCF2YWxJbk9wdGlvbnMpIHtcbiAgICAgICAgICB0aGlzLnNldFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5maWVsZFJlcXVpcmVkICYmIHRoaXMuZmllbGRPcHRpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLmZpZWxkT3B0aW9uc1swXS5maWVsZE9wdGlvbklkKTtcbiAgICAgIGlmICh0aGlzLndpZGdldD8ub25DaGFuZ2VDb250ZW50KSB7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5vbkNoYW5nZUNvbnRlbnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRWYWx1ZShuZXdWYWx1ZSwgd2lkZ2V0VXBkYXRlID0gdHJ1ZSkge1xuICAgIGlmICh0eXBlb2YgbmV3VmFsdWUgPT09IFVOREVGSU5FRCB8fCBuZXdWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGxldCBuZXdGaW5hbFZhbHVlO1xuICAgIHN3aXRjaCAodGhpcy5maWVsZFR5cGUpIHtcbiAgICAgIGNhc2UgJ0JPT0xFQU4nOlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gISFuZXdWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5ib29sZWFuOlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gISFuZXdWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5jaGVjazpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9ICEhbmV3VmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYXJyYXk6XG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCB8fCBuZXdWYWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICBuZXdGaW5hbFZhbHVlID0gW107XG4gICAgICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkobmV3VmFsdWUpKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiAobmV3VmFsdWUpICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBuZXdWYWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWUuc3BsaXQoJywnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5tYXA6XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgaWYgKG5ld0ZpbmFsVmFsdWUgJiYgdGhpcy53aWRnZXQgJiYgd2lkZ2V0VXBkYXRlKSB7XG4gICAgICAgICAgY29uc3QgbGF0aXR1ZGUgPSBwYXJzZUZsb2F0KG5ld0ZpbmFsVmFsdWVbMF0pO1xuICAgICAgICAgIGNvbnN0IGxvbmdpdHVkZSA9IHBhcnNlRmxvYXQobmV3RmluYWxWYWx1ZVsxXSk7XG4gICAgICAgICAgdGhpcy53aWRnZXQ/LnNldExvY2F0aW9uKGxhdGl0dWRlLCBsb25naXR1ZGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ZpZWxkVmFsdWUgIT09IG5ld0ZpbmFsVmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0Q2hhbmdlZCh0cnVlKTtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnZhbHVlLCBuZXdGaW5hbFZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
|