@libs-ui/services-diagram-draw 0.2.356-37 → 0.2.356-40
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/canvas.service.d.ts +1 -1
- package/diagram-draw.service.d.ts +15 -7
- package/direction.service.d.ts +2 -2
- package/esm2022/canvas.service.mjs +1 -1
- package/esm2022/diagram-draw.service.mjs +14 -5
- package/esm2022/direction.service.mjs +15 -15
- package/esm2022/index.mjs +2 -1
- package/esm2022/interfaces/diagram.interface.mjs +1 -1
- package/esm2022/interfaces/navigation.interface.mjs +2 -0
- package/esm2022/utils/calculator-branch.util.mjs +9 -9
- package/esm2022/utils/calculator-element.util.mjs +15 -15
- package/esm2022/utils/canvas.util.mjs +18 -18
- package/esm2022/utils/diagram.util.mjs +4 -4
- package/esm2022/utils/direction.util.mjs +2 -2
- package/esm2022/utils/horizontal/calculator-branch.util.mjs +10 -11
- package/esm2022/utils/horizontal/calculator-coordinates.util.mjs +16 -17
- package/esm2022/utils/navigation/build-navigation-data.util.mjs +119 -0
- package/esm2022/utils/navigation/navigation-style.define.mjs +14 -0
- package/fesm2022/libs-ui-services-diagram-draw.mjs +224 -85
- package/fesm2022/libs-ui-services-diagram-draw.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/interfaces/diagram.interface.d.ts +1 -1
- package/interfaces/navigation.interface.d.ts +16 -0
- package/package.json +3 -2
- package/utils/navigation/build-navigation-data.util.d.ts +25 -0
- package/utils/navigation/navigation-style.define.d.ts +4 -0
|
@@ -52,7 +52,7 @@ export const getAllItemPreOfElement = (element, flatElements) => {
|
|
|
52
52
|
};
|
|
53
53
|
export const getAllItemNextOfElement = (element, flatElements) => {
|
|
54
54
|
if (!element.next_id) {
|
|
55
|
-
if (!element.branches
|
|
55
|
+
if (!element.branches?.length) {
|
|
56
56
|
return;
|
|
57
57
|
}
|
|
58
58
|
const flatElementInElementCurrent = [];
|
|
@@ -100,4 +100,4 @@ export const collectNextChainElements = (element, flatContainerElement, listElem
|
|
|
100
100
|
});
|
|
101
101
|
collectNextChainElements(elementNext, flatContainerElement, listElementDelete);
|
|
102
102
|
};
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2RpYWdyYW0tZHJhdy9zcmMvdXRpbHMvZGlyZWN0aW9uLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsT0FBd0IsRUFBRSxZQUErQixFQUFFLFNBQXVFLEVBQUUsTUFBOEIsRUFBRSxFQUFFO0lBQzVNLElBQUksWUFBWSxHQUFzQixTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRXBFLElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxvQkFBb0IsRUFBRSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDMUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELHNCQUFzQixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM5QyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDN0MsWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLG9CQUFvQixFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvSCxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDakMsWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJ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O0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUNqRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBjYW52YXNDb25maWdSZWFkb25seSB9IGZyb20gJy4uL2RpYWdyYW0tZHJhdy5zZXJ2aWNlJztcbmltcG9ydCB7IElEaWFncmFtRWxlbWVudCwgSURpYWdyYW1FbGVtZW50QnJhbmNoIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kaWFncmFtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBidWlsZEZsYXRFbGVtZW50IH0gZnJvbSAnLi9kaWFncmFtLnV0aWwnO1xuXG5leHBvcnQgY29uc3QgYnVpbGRFbGVtZW50RGlyZWN0aW9uVG8gPSAoZWxlbWVudDogSURpYWdyYW1FbGVtZW50LCBmbGF0RWxlbWVudHM6IElEaWFncmFtRWxlbWVudFtdLCBjaGVja1J1bGU6IChlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQsIGl0ZW06IElEaWFncmFtRWxlbWVudCkgPT4gYm9vbGVhbiwgYnJhbmNoPzogSURpYWdyYW1FbGVtZW50QnJhbmNoKSA9PiB7XG4gIGxldCBlbGVtZW50c0ZsYXQ6IElEaWFncmFtRWxlbWVudFtdID0gY2xvbmVEZWVwKGZsYXRFbGVtZW50cykgPz8gW107XG5cbiAgaWYgKGVsZW1lbnQuZWxlbWVudF90eXBlID09PSBjYW52YXNDb25maWdSZWFkb25seSgpLlRZUEVfRUxFTUVOVF9XT1JLRkxPVykge1xuICAgIGlmICghYnJhbmNoKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldEFsbEl0ZW1QcmVPZkVsZW1lbnQoZWxlbWVudCwgZWxlbWVudHNGbGF0KTtcbiAgICBnZXRBbGxJdGVtTmV4dE9mQnJhbmNoKGJyYW5jaCwgZWxlbWVudHNGbGF0KTtcbiAgICBlbGVtZW50c0ZsYXQgPSBlbGVtZW50c0ZsYXQuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlkICE9PSBlbGVtZW50LmlkICYmIGl0ZW0uY29kZSAhPT0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5UWVBFX0VMRU1FTlRfRVhJVCk7XG4gICAgaWYgKGVsZW1lbnQucHJlX290aGVyX2lkPy5sZW5ndGgpIHtcbiAgICAgIGVsZW1lbnRzRmxhdCA9IGVsZW1lbnRzRmxhdC5maWx0ZXIoKGl0ZW0pID0+ICFlbGVtZW50LnByZV9vdGhlcl9pZD8uaW5jbHVkZXMoaXRlbS5pZCA/PyAnJykpO1xuICAgIH1cbiAgICBlbGVtZW50c0ZsYXQgPSBlbGVtZW50c0ZsYXQuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4gY2hlY2tSdWxlKGVsZW1lbnQsIGl0ZW0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVsZW1lbnRzRmxhdDtcbiAgfVxuXG4gIGdldEFsbEl0ZW1QcmVPZkVsZW1lbnQoZWxlbWVudCwgZWxlbWVudHNGbGF0KTtcbiAgZ2V0QWxsSXRlbU5leHRPZkVsZW1lbnQoZWxlbWVudCwgZWxlbWVudHNGbGF0KTtcbiAgZWxlbWVudHNGbGF0ID0gZWxlbWVudHNGbGF0LmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pZCAhPT0gZWxlbWVudC5pZCAmJiBpdGVtLmNvZGUgIT09IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuVFlQRV9FTEVNRU5UX0VYSVQpO1xuXG4gIGlmIChlbGVtZW50LnByZV9vdGhlcl9pZD8ubGVuZ3RoKSB7XG4gICAgZWxlbWVudHNGbGF0ID0gZWxlbWVudHNGbGF0LmZpbHRlcigoaXRlbSkgPT4gIWVsZW1lbnQucHJlX290aGVyX2lkPy5pbmNsdWRlcyhpdGVtLmlkID8/ICcnKSk7XG4gIH1cblxuICBlbGVtZW50c0ZsYXQgPSBlbGVtZW50c0ZsYXQuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgcmV0dXJuIGNoZWNrUnVsZShlbGVtZW50LCBpdGVtKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGVsZW1lbnRzRmxhdDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbGxJdGVtUHJlT2ZFbGVtZW50ID0gKGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudCwgZmxhdEVsZW1lbnRzOiBJRGlhZ3JhbUVsZW1lbnRbXSkgPT4ge1xuICBjb25zdCBwcmVfaWQgPSBbXTtcblxuICBpZiAoZWxlbWVudC5wcmVfaWQpIHtcbiAgICBwcmVfaWQucHVzaChlbGVtZW50LnByZV9pZCk7XG4gIH1cbiAgaWYgKGVsZW1lbnQucHJlX290aGVyX2lkKSB7XG4gICAgcHJlX2lkLnB1c2goLi4uZWxlbWVudC5wcmVfb3RoZXJfaWQpO1xuICB9XG4gIGlmICghcHJlX2lkLmxlbmd0aCkge1xuICAgIHJldHVybjtcbiAgfVxuICBwcmVfaWQuZm9yRWFjaCgocHJlSWQpID0+IHtcbiAgICBjb25zdCBlbGVtZW50UHJlID0gZmxhdEVsZW1lbnRzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHByZUlkKTtcblxuICAgIGlmICghZWxlbWVudFByZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpdGVtSW5kZXggPSBmbGF0RWxlbWVudHMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBwcmVJZCk7XG5cbiAgICBmbGF0RWxlbWVudHMuc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gICAgZ2V0QWxsSXRlbVByZU9mRWxlbWVudChlbGVtZW50UHJlLCBmbGF0RWxlbWVudHMpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbGxJdGVtTmV4dE9mRWxlbWVudCA9IChlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQsIGZsYXRFbGVtZW50czogSURpYWdyYW1FbGVtZW50W10pID0+IHtcbiAgaWYgKCFlbGVtZW50Lm5leHRfaWQpIHtcbiAgICBpZiAoIWVsZW1lbnQuYnJhbmNoZXMgfHwgIWVsZW1lbnQuYnJhbmNoZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmxhdEVsZW1lbnRJbkVsZW1lbnRDdXJyZW50OiBJRGlhZ3JhbUVsZW1lbnRbXSA9IFtdO1xuXG4gICAgYnVpbGRGbGF0RWxlbWVudChbZWxlbWVudF0sIGZsYXRFbGVtZW50SW5FbGVtZW50Q3VycmVudCk7XG4gICAgZmxhdEVsZW1lbnRJbkVsZW1lbnRDdXJyZW50LmZvckVhY2goKGVsKSA9PiB7XG4gICAgICBjb25zdCBpdGVtSW5kZXggPSBmbGF0RWxlbWVudHMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBlbC5pZCk7XG5cbiAgICAgIGlmIChpdGVtSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZmxhdEVsZW1lbnRzLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGVsZW1lbnROZXh0SW5kZXggPSBmbGF0RWxlbWVudHMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBlbGVtZW50Lm5leHRfaWQpO1xuXG4gIGlmIChlbGVtZW50TmV4dEluZGV4ID09PSAtMSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBuZXh0RWxlbWVudCA9IGZsYXRFbGVtZW50c1tlbGVtZW50TmV4dEluZGV4XTtcblxuICBmbGF0RWxlbWVudHMuc3BsaWNlKGVsZW1lbnROZXh0SW5kZXgsIDEpO1xuICBnZXRBbGxJdGVtTmV4dE9mRWxlbWVudChuZXh0RWxlbWVudCwgZmxhdEVsZW1lbnRzKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbGxJdGVtTmV4dE9mQnJhbmNoID0gKGJyYW5jaDogSURpYWdyYW1FbGVtZW50QnJhbmNoLCBmbGF0RWxlbWVudHM6IElEaWFncmFtRWxlbWVudFtdKSA9PiB7XG4gIGNvbnN0IGZsYXRFbGVtZW50SW5FbGVtZW50Q3VycmVudDogSURpYWdyYW1FbGVtZW50W10gPSBbXTtcblxuICBidWlsZEZsYXRFbGVtZW50KGJyYW5jaC5lbGVtZW50cywgZmxhdEVsZW1lbnRJbkVsZW1lbnRDdXJyZW50KTtcbiAgZmxhdEVsZW1lbnRJbkVsZW1lbnRDdXJyZW50LmZvckVhY2goKGVsKSA9PiB7XG4gICAgY29uc3QgaXRlbUluZGV4ID0gZmxhdEVsZW1lbnRzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gZWwuaWQpO1xuXG4gICAgaWYgKGl0ZW1JbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmbGF0RWxlbWVudHMuc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbGxlY3ROZXh0Q2hhaW5FbGVtZW50cyA9IChlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQsIGZsYXRDb250YWluZXJFbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnRbXSwgbGlzdEVsZW1lbnREZWxldGU6IElEaWFncmFtRWxlbWVudFtdKSA9PiB7XG4gIGNvbnN0IGVsZW1lbnROZXh0ID0gZmxhdENvbnRhaW5lckVsZW1lbnQuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gZWxlbWVudC5uZXh0X2lkKTtcblxuICBpZiAoIWVsZW1lbnROZXh0KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGZsYXRFbGVtZW50SW5FbGVtZW50Q3VycmVudDogSURpYWdyYW1FbGVtZW50W10gPSBbXTtcblxuICBidWlsZEZsYXRFbGVtZW50KFtlbGVtZW50TmV4dF0sIGZsYXRFbGVtZW50SW5FbGVtZW50Q3VycmVudCk7XG4gIGZsYXRFbGVtZW50SW5FbGVtZW50Q3VycmVudC5mb3JFYWNoKChlbCkgPT4ge1xuICAgIGNvbnN0IGl0ZW1Jbk5leHQgPSBmbGF0Q29udGFpbmVyRWxlbWVudC5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBlbC5pZCk7XG5cbiAgICBpZiAoaXRlbUluTmV4dCkge1xuICAgICAgbGlzdEVsZW1lbnREZWxldGUucHVzaChpdGVtSW5OZXh0KTtcbiAgICB9XG4gIH0pO1xuICBjb2xsZWN0TmV4dENoYWluRWxlbWVudHMoZWxlbWVudE5leHQsIGZsYXRDb250YWluZXJFbGVtZW50LCBsaXN0RWxlbWVudERlbGV0ZSk7XG59O1xuIl19
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2RpYWdyYW0tZHJhdy9zcmMvdXRpbHMvZGlyZWN0aW9uLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsT0FBd0IsRUFBRSxZQUErQixFQUFFLFNBQXVFLEVBQUUsTUFBOEIsRUFBRSxFQUFFO0lBQzVNLElBQUksWUFBWSxHQUFzQixTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRXBFLElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxvQkFBb0IsRUFBRSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDMUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELHNCQUFzQixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM5QyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDN0MsWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLG9CQUFvQixFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvSCxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDakMsWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJ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LHdCQUF3QixDQUFDLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBQ2pGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IGNhbnZhc0NvbmZpZ1JlYWRvbmx5IH0gZnJvbSAnLi4vZGlhZ3JhbS1kcmF3LnNlcnZpY2UnO1xuaW1wb3J0IHsgSURpYWdyYW1FbGVtZW50LCBJRGlhZ3JhbUVsZW1lbnRCcmFuY2ggfSBmcm9tICcuLi9pbnRlcmZhY2VzL2RpYWdyYW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IGJ1aWxkRmxhdEVsZW1lbnQgfSBmcm9tICcuL2RpYWdyYW0udXRpbCc7XG5cbmV4cG9ydCBjb25zdCBidWlsZEVsZW1lbnREaXJlY3Rpb25UbyA9IChlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQsIGZsYXRFbGVtZW50czogSURpYWdyYW1FbGVtZW50W10sIGNoZWNrUnVsZTogKGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudCwgaXRlbTogSURpYWdyYW1FbGVtZW50KSA9PiBib29sZWFuLCBicmFuY2g/OiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gpID0+IHtcbiAgbGV0IGVsZW1lbnRzRmxhdDogSURpYWdyYW1FbGVtZW50W10gPSBjbG9uZURlZXAoZmxhdEVsZW1lbnRzKSA/PyBbXTtcblxuICBpZiAoZWxlbWVudC5lbGVtZW50X3R5cGUgPT09IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuVFlQRV9FTEVNRU5UX1dPUktGTE9XKSB7XG4gICAgaWYgKCFicmFuY2gpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0QWxsSXRlbVByZU9mRWxlbWVudChlbGVtZW50LCBlbGVtZW50c0ZsYXQpO1xuICAgIGdldEFsbEl0ZW1OZXh0T2ZCcmFuY2goYnJhbmNoLCBlbGVtZW50c0ZsYXQpO1xuICAgIGVsZW1lbnRzRmxhdCA9IGVsZW1lbnRzRmxhdC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaWQgIT09IGVsZW1lbnQuaWQgJiYgaXRlbS5jb2RlICE9PSBjYW52YXNDb25maWdSZWFkb25seSgpLlRZUEVfRUxFTUVOVF9FWElUKTtcbiAgICBpZiAoZWxlbWVudC5wcmVfb3RoZXJfaWQ/Lmxlbmd0aCkge1xuICAgICAgZWxlbWVudHNGbGF0ID0gZWxlbWVudHNGbGF0LmZpbHRlcigoaXRlbSkgPT4gIWVsZW1lbnQucHJlX290aGVyX2lkPy5pbmNsdWRlcyhpdGVtLmlkID8/ICcnKSk7XG4gICAgfVxuICAgIGVsZW1lbnRzRmxhdCA9IGVsZW1lbnRzRmxhdC5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgIHJldHVybiBjaGVja1J1bGUoZWxlbWVudCwgaXRlbSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZWxlbWVudHNGbGF0O1xuICB9XG5cbiAgZ2V0QWxsSXRlbVByZU9mRWxlbWVudChlbGVtZW50LCBlbGVtZW50c0ZsYXQpO1xuICBnZXRBbGxJdGVtTmV4dE9mRWxlbWVudChlbGVtZW50LCBlbGVtZW50c0ZsYXQpO1xuICBlbGVtZW50c0ZsYXQgPSBlbGVtZW50c0ZsYXQuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlkICE9PSBlbGVtZW50LmlkICYmIGl0ZW0uY29kZSAhPT0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5UWVBFX0VMRU1FTlRfRVhJVCk7XG5cbiAgaWYgKGVsZW1lbnQucHJlX290aGVyX2lkPy5sZW5ndGgpIHtcbiAgICBlbGVtZW50c0ZsYXQgPSBlbGVtZW50c0ZsYXQuZmlsdGVyKChpdGVtKSA9PiAhZWxlbWVudC5wcmVfb3RoZXJfaWQ/LmluY2x1ZGVzKGl0ZW0uaWQgPz8gJycpKTtcbiAgfVxuXG4gIGVsZW1lbnRzRmxhdCA9IGVsZW1lbnRzRmxhdC5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICByZXR1cm4gY2hlY2tSdWxlKGVsZW1lbnQsIGl0ZW0pO1xuICB9KTtcblxuICByZXR1cm4gZWxlbWVudHNGbGF0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFsbEl0ZW1QcmVPZkVsZW1lbnQgPSAoZWxlbWVudDogSURpYWdyYW1FbGVtZW50LCBmbGF0RWxlbWVudHM6IElEaWFncmFtRWxlbWVudFtdKSA9PiB7XG4gIGNvbnN0IHByZV9pZCA9IFtdO1xuXG4gIGlmIChlbGVtZW50LnByZV9pZCkge1xuICAgIHByZV9pZC5wdXNoKGVsZW1lbnQucHJlX2lkKTtcbiAgfVxuICBpZiAoZWxlbWVudC5wcmVfb3RoZXJfaWQpIHtcbiAgICBwcmVfaWQucHVzaCguLi5lbGVtZW50LnByZV9vdGhlcl9pZCk7XG4gIH1cbiAgaWYgKCFwcmVfaWQubGVuZ3RoKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHByZV9pZC5mb3JFYWNoKChwcmVJZCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnRQcmUgPSBmbGF0RWxlbWVudHMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gcHJlSWQpO1xuXG4gICAgaWYgKCFlbGVtZW50UHJlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGl0ZW1JbmRleCA9IGZsYXRFbGVtZW50cy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHByZUlkKTtcblxuICAgIGZsYXRFbGVtZW50cy5zcGxpY2UoaXRlbUluZGV4LCAxKTtcbiAgICBnZXRBbGxJdGVtUHJlT2ZFbGVtZW50KGVsZW1lbnRQcmUsIGZsYXRFbGVtZW50cyk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFsbEl0ZW1OZXh0T2ZFbGVtZW50ID0gKGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudCwgZmxhdEVsZW1lbnRzOiBJRGlhZ3JhbUVsZW1lbnRbXSkgPT4ge1xuICBpZiAoIWVsZW1lbnQubmV4dF9pZCkge1xuICAgIGlmICghZWxlbWVudC5icmFuY2hlcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmxhdEVsZW1lbnRJbkVsZW1lbnRDdXJyZW50OiBJRGlhZ3JhbUVsZW1lbnRbXSA9IFtdO1xuXG4gICAgYnVpbGRGbGF0RWxlbWVudChbZWxlbWVudF0sIGZsYXRFbGVtZW50SW5FbGVtZW50Q3VycmVudCk7XG4gICAgZmxhdEVsZW1lbnRJbkVsZW1lbnRDdXJyZW50LmZvckVhY2goKGVsKSA9PiB7XG4gICAgICBjb25zdCBpdGVtSW5kZXggPSBmbGF0RWxlbWVudHMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBlbC5pZCk7XG5cbiAgICAgIGlmIChpdGVtSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZmxhdEVsZW1lbnRzLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGVsZW1lbnROZXh0SW5kZXggPSBmbGF0RWxlbWVudHMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBlbGVtZW50Lm5leHRfaWQpO1xuXG4gIGlmIChlbGVtZW50TmV4dEluZGV4ID09PSAtMSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBuZXh0RWxlbWVudCA9IGZsYXRFbGVtZW50c1tlbGVtZW50TmV4dEluZGV4XTtcblxuICBmbGF0RWxlbWVudHMuc3BsaWNlKGVsZW1lbnROZXh0SW5kZXgsIDEpO1xuICBnZXRBbGxJdGVtTmV4dE9mRWxlbWVudChuZXh0RWxlbWVudCwgZmxhdEVsZW1lbnRzKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbGxJdGVtTmV4dE9mQnJhbmNoID0gKGJyYW5jaDogSURpYWdyYW1FbGVtZW50QnJhbmNoLCBmbGF0RWxlbWVudHM6IElEaWFncmFtRWxlbWVudFtdKSA9PiB7XG4gIGNvbnN0IGZsYXRFbGVtZW50SW5FbGVtZW50Q3VycmVudDogSURpYWdyYW1FbGVtZW50W10gPSBbXTtcblxuICBidWlsZEZsYXRFbGVtZW50KGJyYW5jaC5lbGVtZW50cywgZmxhdEVsZW1lbnRJbkVsZW1lbnRDdXJyZW50KTtcbiAgZmxhdEVsZW1lbnRJbkVsZW1lbnRDdXJyZW50LmZvckVhY2goKGVsKSA9PiB7XG4gICAgY29uc3QgaXRlbUluZGV4ID0gZmxhdEVsZW1lbnRzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gZWwuaWQpO1xuXG4gICAgaWYgKGl0ZW1JbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmbGF0RWxlbWVudHMuc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbGxlY3ROZXh0Q2hhaW5FbGVtZW50cyA9IChlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQsIGZsYXRDb250YWluZXJFbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnRbXSwgbGlzdEVsZW1lbnREZWxldGU6IElEaWFncmFtRWxlbWVudFtdKSA9PiB7XG4gIGNvbnN0IGVsZW1lbnROZXh0ID0gZmxhdENvbnRhaW5lckVsZW1lbnQuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gZWxlbWVudC5uZXh0X2lkKTtcblxuICBpZiAoIWVsZW1lbnROZXh0KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGZsYXRFbGVtZW50SW5FbGVtZW50Q3VycmVudDogSURpYWdyYW1FbGVtZW50W10gPSBbXTtcblxuICBidWlsZEZsYXRFbGVtZW50KFtlbGVtZW50TmV4dF0sIGZsYXRFbGVtZW50SW5FbGVtZW50Q3VycmVudCk7XG4gIGZsYXRFbGVtZW50SW5FbGVtZW50Q3VycmVudC5mb3JFYWNoKChlbCkgPT4ge1xuICAgIGNvbnN0IGl0ZW1Jbk5leHQgPSBmbGF0Q29udGFpbmVyRWxlbWVudC5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBlbC5pZCk7XG5cbiAgICBpZiAoaXRlbUluTmV4dCkge1xuICAgICAgbGlzdEVsZW1lbnREZWxldGUucHVzaChpdGVtSW5OZXh0KTtcbiAgICB9XG4gIH0pO1xuICBjb2xsZWN0TmV4dENoYWluRWxlbWVudHMoZWxlbWVudE5leHQsIGZsYXRDb250YWluZXJFbGVtZW50LCBsaXN0RWxlbWVudERlbGV0ZSk7XG59O1xuIl19
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { canvasConfigReadonly } from '../../diagram-draw.service';
|
|
2
|
-
import { checkMaxTop } from '../calculator-element.util';
|
|
3
|
-
import { getHeightWaitConfig } from '../calculator-element.util';
|
|
2
|
+
import { checkMaxTop, getHeightWaitConfig } from '../calculator-element.util';
|
|
4
3
|
import { MoLibDiagramHorizontalCalculatorCoordinatesUtil } from './calculator-coordinates.util';
|
|
5
4
|
/**
|
|
6
5
|
* Horizontal branch calculator.
|
|
@@ -36,7 +35,7 @@ export class MoLibDiagramHorizontalCalculatorBranchUtil {
|
|
|
36
35
|
let Lx = startDraw;
|
|
37
36
|
Lx += canvasConfigReadonly().ELEMENT_HEIGHT_CURVE;
|
|
38
37
|
Lx += this.getHorizontalDistanceToFirstBlock(branch);
|
|
39
|
-
if (!branch.elements
|
|
38
|
+
if (!branch.elements?.length) {
|
|
40
39
|
Lx += maxWidthBranch + 20;
|
|
41
40
|
}
|
|
42
41
|
const coord1 = { mx: left, my: top, lx: Lx, ly: top };
|
|
@@ -48,7 +47,7 @@ export class MoLibDiagramHorizontalCalculatorBranchUtil {
|
|
|
48
47
|
const waitWidth = getHeightWaitConfig(branch.nodeOtherConfig);
|
|
49
48
|
const leftLine2 = endXToWait + waitWidth;
|
|
50
49
|
delete branch.nodeOtherConfig.attributeSvgD;
|
|
51
|
-
if (branch.elements
|
|
50
|
+
if (branch.elements?.length) {
|
|
52
51
|
branch.nodeOtherConfig.attributeSvgD = `M ${leftLine2} ${coord1.my} L ${coord1.lx} ${coord1.my}`;
|
|
53
52
|
}
|
|
54
53
|
branch.nodeOtherConfig.specific_x = endXToWait;
|
|
@@ -63,7 +62,7 @@ export class MoLibDiagramHorizontalCalculatorBranchUtil {
|
|
|
63
62
|
}
|
|
64
63
|
branch.specific_start_branch_x = left + lineFormElementToBranching + canvasConfigReadonly().ELEMENT_HEIGHT_CURVE;
|
|
65
64
|
branch.specific_start_branch_y = top;
|
|
66
|
-
if (!branch.elements
|
|
65
|
+
if (!branch.elements?.length)
|
|
67
66
|
return;
|
|
68
67
|
const widthToElement = canvasConfigReadonly().ELEMENT_HEIGHT_CURVE + this.getHorizontalDistanceToFirstBlock(branch);
|
|
69
68
|
branch.elements.forEach((el) => {
|
|
@@ -78,7 +77,7 @@ export class MoLibDiagramHorizontalCalculatorBranchUtil {
|
|
|
78
77
|
const { coordQL2, isCheckAllElementConnectToExit } = this.drawAboveUnderLine(top, lineFormElementToBranching, left, lineBetweenBranch, branch, maxWidthBranch, 'above', config);
|
|
79
78
|
branch.specific_start_branch_x = coordQL2.x;
|
|
80
79
|
branch.specific_start_branch_y = coordQL2.y;
|
|
81
|
-
if (!branch.elements
|
|
80
|
+
if (!branch.elements?.length)
|
|
82
81
|
return;
|
|
83
82
|
this.drawElementInBranchLine(branch, coordQL2, config);
|
|
84
83
|
if (isCheckAllElementConnectToExit)
|
|
@@ -94,7 +93,7 @@ export class MoLibDiagramHorizontalCalculatorBranchUtil {
|
|
|
94
93
|
const maxY = (coordQL1.y ?? 0) + 200;
|
|
95
94
|
const configSvg = config.widthHeightSvgCanvas;
|
|
96
95
|
configSvg.heightSvg = maxY > configSvg.heightSvg ? maxY : configSvg.heightSvg;
|
|
97
|
-
if (!branch.elements
|
|
96
|
+
if (!branch.elements?.length)
|
|
98
97
|
return;
|
|
99
98
|
this.drawElementInBranchLine(branch, coordQL2, config);
|
|
100
99
|
if (isCheckAllElementConnectToExit)
|
|
@@ -161,7 +160,7 @@ export class MoLibDiagramHorizontalCalculatorBranchUtil {
|
|
|
161
160
|
};
|
|
162
161
|
// Đoạn L sau QL2: đi ngang (phải) đến vị trí element đầu tiên trong nhánh
|
|
163
162
|
const distToFirst = this.getHorizontalDistanceToFirstBlock(branch);
|
|
164
|
-
if (!branch.elements
|
|
163
|
+
if (!branch.elements?.length) {
|
|
165
164
|
coordQL2.lx = (coordQL2.x ?? 0) + distToFirst + maxWidthBranch;
|
|
166
165
|
}
|
|
167
166
|
else {
|
|
@@ -177,7 +176,7 @@ export class MoLibDiagramHorizontalCalculatorBranchUtil {
|
|
|
177
176
|
const leftLine2 = endXToWait + waitWidth;
|
|
178
177
|
delete branch.nodeOtherConfig.attributeSvgD;
|
|
179
178
|
QL2 = `Q ${coordQL2.x1},${coordQL2.y1} ${coordQL2.x},${coordQL2.y} M ${coordQL2.x},${coordQL2.y} L ${endXToWait},${coordQL2.y}`;
|
|
180
|
-
if (branch.elements
|
|
179
|
+
if (branch.elements?.length) {
|
|
181
180
|
branch.nodeOtherConfig.attributeSvgD = `M ${leftLine2} ${coordQL2.y} L ${coordQL2.lx} ${coordQL2.ly}`;
|
|
182
181
|
}
|
|
183
182
|
branch.nodeOtherConfig.specific_x = endXToWait;
|
|
@@ -204,7 +203,7 @@ export class MoLibDiagramHorizontalCalculatorBranchUtil {
|
|
|
204
203
|
return true;
|
|
205
204
|
}
|
|
206
205
|
elements.forEach((element) => {
|
|
207
|
-
if (!element.branches
|
|
206
|
+
if (!element.branches?.length)
|
|
208
207
|
return;
|
|
209
208
|
let branchConnectToExit = 0;
|
|
210
209
|
element.branches.forEach((branch) => {
|
|
@@ -240,4 +239,4 @@ export class MoLibDiagramHorizontalCalculatorBranchUtil {
|
|
|
240
239
|
return this.mathOp(direction, a, b, opposite);
|
|
241
240
|
}
|
|
242
241
|
}
|
|
243
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRvci1icmFuY2gudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvZGlhZ3JhbS1kcmF3L3NyYy91dGlscy9ob3Jpem9udGFsL2NhbGN1bGF0b3ItYnJhbmNoLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXpELE9BQU8sRUFBcUMsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsK0NBQStDLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVoRzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sT0FBTywwQ0FBMEM7SUFDN0MsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLE1BQTZCO1FBQzVFLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzNCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxDQUFDLGtFQUFrRTtZQUMxRixPQUFPLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxlQUFlLENBQUM7UUFDM0csQ0FBQztRQUNELE9BQU8sb0JBQW9CLEVBQUUsQ0FBQyw4Q0FBOEMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsZ0ZBQWdGO0lBRWhGLCtDQUErQztJQUMvQyxNQUFNLENBQUMsZ0JBQWdCLENBQ3JCLEdBQVcsRUFBMkIsd0JBQXdCO0lBQzlELDBCQUFrQyxFQUFJLHFDQUFxQztJQUMzRSxJQUFZLEVBQTBCLHlCQUF5QjtJQUMvRCxNQUE2QixFQUM3QixjQUFzQixFQUN0QixNQUE2QjtRQUU3QixNQUFNLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUM1QixNQUFNLFNBQVMsR0FBRyxJQUFJ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LFNBQVMsRUFBRSxDQUFDO1lBQ2xCLEtBQUssT0FBTztnQkFDVixPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUN0QyxLQUFLLE9BQU87Z0JBQ1YsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDdEM7Z0JBQ0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRUQsb0VBQW9FO0lBQ3BFLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxTQUFxQyxFQUFFLENBQXFCLEVBQUUsQ0FBcUIsRUFBRSxRQUFrQjtRQUNySSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2FudmFzQ29uZmlnUmVhZG9ubHkgfSBmcm9tICcuLi8uLi9kaWFncmFtLWRyYXcuc2VydmljZSc7XG5pbXBvcnQgeyBJQ29vcmRpbmF0ZXNEaWFncmFtU3ZnLCBJRGF0YURpYWdyYW1Db25maWdTdmcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Nvb3JkaW5hdGVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBjaGVja01heFRvcCB9IGZyb20gJy4uL2NhbGN1bGF0b3ItZWxlbWVudC51dGlsJztcbmltcG9ydCB7IElEaWFncmFtRWxlbWVudCwgSURpYWdyYW1FbGVtZW50QnJhbmNoIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9kaWFncmFtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBnZXREaXN0YW5jZUZyb21CcmFuY2hUb0ZpcnN0QmxvY2ssIGdldEhlaWdodFdhaXRDb25maWcgfSBmcm9tICcuLi9jYWxjdWxhdG9yLWVsZW1lbnQudXRpbCc7XG5pbXBvcnQgeyBNb0xpYkRpYWdyYW1Ib3Jpem9udGFsQ2FsY3VsYXRvckNvb3JkaW5hdGVzVXRpbCB9IGZyb20gJy4vY2FsY3VsYXRvci1jb29yZGluYXRlcy51dGlsJztcblxuLyoqXG4gKiBIb3Jpem9udGFsIGJyYW5jaCBjYWxjdWxhdG9yLlxuICogRmxvdyBkaXJlY3Rpb246IExFRlQg4oaSIFJJR0hUICh0csOhaSBzYW5nIHBo4bqjaSkuXG4gKiBCcmFuY2hlcyBzcHJlYWQ6ICBhYm92ZSA9IFVQICh5IGdp4bqjbSksICB1bmRlciA9IERPV04gKHkgdMSDbmcpLlxuICpcbiAqIE1hcHBpbmcgdOG7qyB0cuG7pWMgZOG7jWMgc2FuZyBuZ2FuZzpcbiAqICAgdmVydGljYWwgXCJsZWZ0XCIgIGJyYW5jaCAoeCBnaeG6o20pIOKGlCBob3Jpem9udGFsIFwiYWJvdmVcIiBicmFuY2ggKHkgZ2nhuqNtKVxuICogICB2ZXJ0aWNhbCBcInJpZ2h0XCIgYnJhbmNoICh4IHTEg25nKSDihpQgaG9yaXpvbnRhbCBcInVuZGVyXCIgYnJhbmNoICAoeSB0xINuZylcbiAqXG4gKiBLw70gaGnhu4d1IHRyb25nIElDb29yZGluYXRlc0RpYWdyYW1Tdmc6XG4gKiAgIChteCxteSkgPSDEkWnhu4NtIGLhuq90IMSR4bqndSBRIGN1cnZlXG4gKiAgICh4MSx5MSkgPSBjb250cm9sIHBvaW50XG4gKiAgICh4LHkpICAgPSBlbmQgcG9pbnQgY+G7p2EgUSBjdXJ2ZVxuICogICAobHgsbHkpID0gxJFp4buDbSBjdeG7kWkgY+G7p2EgTCBzYXUgUVxuICovXG5leHBvcnQgY2xhc3MgTW9MaWJEaWFncmFtSG9yaXpvbnRhbENhbGN1bGF0b3JCcmFuY2hVdGlsIHtcbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0SG9yaXpvbnRhbERpc3RhbmNlVG9GaXJzdEJsb2NrKGJyYW5jaDogSURpYWdyYW1FbGVtZW50QnJhbmNoKSB7XG4gICAgaWYgKGJyYW5jaC5ub2RlT3RoZXJDb25maWcpIHtcbiAgICAgIGNvbnN0IGRpc3RUb1dhaXQgPSAxMTA7IC8vIGluY3JlYXNlIHN0YXRpY2FsbHkgc2luY2UgYnJhbmNoIGxhYmVsIGlzIGFsd2F5cyBhc3NpZ25lZCBsYXRlclxuICAgICAgcmV0dXJuIGRpc3RUb1dhaXQgKyBnZXRIZWlnaHRXYWl0Q29uZmlnKGJyYW5jaC5ub2RlT3RoZXJDb25maWcpICsgY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5XQUlUX1RPX0VMRU1FTlQ7XG4gICAgfVxuICAgIHJldHVybiBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfTUFSR0lOX0RFRkFVTFRfQlJBTkNIX1RPX0VMRU1FTlRfRklSU1Q7XG4gIH1cblxuICAvLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgcHVibGljIOKUgOKUgFxuXG4gIC8qKiBOaMOhbmggZ2nhu69hIChjZW50ZXIpOiBrw6lvIHRo4bqzbmcgc2FuZyBwaOG6o2kgKi9cbiAgc3RhdGljIGRyYXdTdHJhaWdodExpbmUoXG4gICAgdG9wOiBudW1iZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBZIHTDom0gY+G7p2EgZWxlbWVudCBjaGFcbiAgICBsaW5lRm9ybUVsZW1lbnRUb0JyYW5jaGluZzogbnVtYmVyLCAgIC8vIHdpZHRoIGVsZW1lbnQgKyBtYXJnaW4gxJHhur9uIMSRaeG7g20gcuG6vVxuICAgIGxlZnQ6IG51bWJlciwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWCB0csOhaSBj4bunYSBlbGVtZW50IGNoYVxuICAgIGJyYW5jaDogSURpYWdyYW1FbGVtZW50QnJhbmNoLFxuICAgIG1heFdpZHRoQnJhbmNoOiBudW1iZXIsXG4gICAgY29uZmlnOiBJRGF0YURpYWdyYW1Db25maWdTdmdcbiAgKSB7XG4gICAgYnJhbmNoLm9uVGhlU2lkZSA9ICdjZW50ZXInO1xuICAgIGNvbnN0IHN0YXJ0RHJhdyA9IGxlZnQgKyBsaW5lRm9ybUVsZW1lbnRUb0JyYW5jaGluZztcbiAgICBsZXQgTHggPSBzdGFydERyYXc7XG5cbiAgICBMeCArPSBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfSEVJR0hUX0NVUlZFO1xuICAgIEx4ICs9IHRoaXMuZ2V0SG9yaXpvbnRhbERpc3RhbmNlVG9GaXJzdEJsb2NrKGJyYW5jaCk7XG4gICAgaWYgKCFicmFuY2guZWxlbWVudHMgfHwgIWJyYW5jaC5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIEx4ICs9IG1heFdpZHRoQnJhbmNoICsgMjA7XG4gICAgfVxuXG4gICAgY29uc3QgY29vcmQxID0geyBteDogbGVmdCwgbXk6IHRvcCwgbHg6IEx4LCBseTogdG9wIH07XG5cbiAgICBicmFuY2guYXR0cmlidXRlU3ZnRCA9IGBNICR7Y29vcmQxLm14fSAke2Nvb3JkMS5teX0gTCAke2Nvb3JkMS5seH0gJHtjb29yZDEubHl9YDtcblxuICAgIGlmIChicmFuY2gubm9kZU90aGVyQ29uZmlnKSB7XG4gICAgICBjb25zdCBkaXN0VG9XYWl0ID0gMTEwO1xuICAgICAgY29uc3QgZW5kWFRvV2FpdCA9IHN0YXJ0RHJhdyArIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRUxFTUVOVF9IRUlHSFRfQ1VSVkUgKyBkaXN0VG9XYWl0O1xuXG4gICAgICBicmFuY2guYXR0cmlidXRlU3ZnRCA9IGBNICR7Y29vcmQxLm14fSAke2Nvb3JkMS5teX0gTCAke2VuZFhUb1dhaXR9ICR7Y29vcmQxLm15fWA7XG4gICAgICBjb25zdCB3YWl0V2lkdGggID0gZ2V0SGVpZ2h0V2FpdENvbmZpZyhicmFuY2gubm9kZU90aGVyQ29uZmlnKTtcbiAgICAgIGNvbnN0IGxlZnRMaW5lMiAgPSBlbmRYVG9XYWl0ICsgd2FpdFdpZHRoO1xuXG4gICAgICBkZWxldGUgYnJhbmNoLm5vZGVPdGhlckNvbmZpZy5hdHRyaWJ1dGVTdmdEO1xuICAgICAgaWYgKGJyYW5jaC5lbGVtZW50cyAmJiBicmFuY2guZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGJyYW5jaC5ub2RlT3RoZXJDb25maWcuYXR0cmlidXRlU3ZnRCA9IGBNICR7bGVmdExpbmUyfSAke2Nvb3JkMS5teX0gTCAke2Nvb3JkMS5seH0gJHtjb29yZDEubXl9YDtcbiAgICAgIH1cbiAgICAgIGJyYW5jaC5ub2RlT3RoZXJDb25maWcuc3BlY2lmaWNfeCA9IGVuZFhUb1dhaXQ7XG4gICAgICBicmFuY2gubm9kZU90aGVyQ29uZmlnLnNwZWNpZmljX3kgPSBjb29yZDEubXk7XG4gICAgICAvLyDEkOG6o20gYuG6o28gY8OzIGvDrWNoIHRoxrDhu5tjIMSR4buDIHNldFRyYW5zbGF0ZVBvc2l0aW9ucyB0w61uaCBvZmZzZXQgxJHDum5nXG4gICAgICBpZiAoIWJyYW5jaC5ub2RlT3RoZXJDb25maWcuc3BlY2lmaWNfaGVpZ2h0KSB7XG4gICAgICAgIGJyYW5jaC5ub2RlT3RoZXJDb25maWcuc3BlY2lmaWNfaGVpZ2h0ID0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX1dBSVRfREVGQVVMVDtcbiAgICAgIH1cbiAgICAgIGlmICghYnJhbmNoLm5vZGVPdGhlckNvbmZpZy5zcGVjaWZpY193aWR0aCkge1xuICAgICAgICBicmFuY2gubm9kZU90aGVyQ29uZmlnLnNwZWNpZmljX3dpZHRoID0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX1dBSVRfREVGQVVMVDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3ggPSBsZWZ0ICsgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmcgKyBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfSEVJR0hUX0NVUlZFO1xuICAgIGJyYW5jaC5zcGVjaWZpY19zdGFydF9icmFuY2hfeSA9IHRvcDtcblxuICAgIGlmICghYnJhbmNoLmVsZW1lbnRzIHx8ICFicmFuY2guZWxlbWVudHMubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCB3aWR0aFRvRWxlbWVudCA9IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRUxFTUVOVF9IRUlHSFRfQ1VSVkUgKyB0aGlzLmdldEhvcml6b250YWxEaXN0YW5jZVRvRmlyc3RCbG9jayhicmFuY2gpO1xuXG4gICAgYnJhbmNoLmVsZW1lbnRzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICBlbC5zcGVjaWZpY194ID0gbGVmdCArIGxpbmVGb3JtRWxlbWVudFRvQnJhbmNoaW5nICsgd2lkdGhUb0VsZW1lbnQ7XG4gICAgICBlbC5zcGVjaWZpY195ID0gdG9wIC0gKGVsLnNwZWNpZmljX2hlaWdodCA/PyAwKSAvIDI7XG4gICAgfSk7XG4gICAgTW9MaWJEaWFncmFtSG9yaXpvbnRhbENhbGN1bGF0b3JDb29yZGluYXRlc1V0aWwuc2V0WFlFbGVtZW50cyhicmFuY2guZWxlbWVudHMsIGNvbmZpZyk7XG4gIH1cblxuICAvKiogTmjDoW5oIHBow61hIHRyw6puIChhYm92ZSk6IHLhur0gbMOqbiwgcuG7k2kgYuG6uyBwaOG6o2kgxJHhur9uIGVsZW1lbnQgKi9cbiAgc3RhdGljIGFib3ZlTGluZShcbiAgICB0b3A6IG51bWJlcixcbiAgICBsaW5lRm9ybUVsZW1lbnRUb0JyYW5jaGluZzogbnVtYmVyLFxuICAgIGxlZnQ6IG51bWJlcixcbiAgICBsaW5lQmV0d2VlbkJyYW5jaDogbnVtYmVyLFxuICAgIGJyYW5jaDogSURpYWdyYW1FbGVtZW50QnJhbmNoLFxuICAgIG1heFdpZHRoQnJhbmNoOiBudW1iZXIsXG4gICAgZWxlbWVudDogSURpYWdyYW1FbGVtZW50LFxuICAgIGNvbmZpZzogSURhdGFEaWFncmFtQ29uZmlnU3ZnXG4gICkge1xuICAgIGJyYW5jaC5vblRoZVNpZGUgPSAnYWJvdmUnO1xuICAgIGNvbnN0IHsgY29vcmRRTDIsIGlzQ2hlY2tBbGxFbGVtZW50Q29ubmVjdFRvRXhpdCB9ID0gdGhpcy5kcmF3QWJvdmVVbmRlckxpbmUoXG4gICAgICB0b3AsIGxpbmVGb3JtRWxlbWVudFRvQnJhbmNoaW5nLCBsZWZ0LCBsaW5lQmV0d2VlbkJyYW5jaCwgYnJhbmNoLCBtYXhXaWR0aEJyYW5jaCwgJ2Fib3ZlJywgY29uZmlnXG4gICAgKTtcblxuICAgIGJyYW5jaC5zcGVjaWZpY19zdGFydF9icmFuY2hfeCA9IGNvb3JkUUwyLng7XG4gICAgYnJhbmNoLnNwZWNpZmljX3N0YXJ0X2JyYW5jaF95ID0gY29vcmRRTDIueTtcblxuICAgIGlmICghYnJhbmNoLmVsZW1lbnRzIHx8ICFicmFuY2guZWxlbWVudHMubGVuZ3RoKSByZXR1cm47XG4gICAgdGhpcy5kcmF3RWxlbWVudEluQnJhbmNoTGluZShicmFuY2gsIGNvb3JkUUwyLCBjb25maWcpO1xuICAgIGlmIChpc0NoZWNrQWxsRWxlbWVudENvbm5lY3RUb0V4aXQpIHJldHVybjtcbiAgfVxuXG4gIC8qKiBOaMOhbmggcGjDrWEgZMaw4bubaSAodW5kZXIpOiBy4bq9IHh14buRbmcsIHLhu5NpIGLhursgcGjhuqNpIMSR4bq/biBlbGVtZW50ICovXG4gIHN0YXRpYyB1bmRlckxpbmUoXG4gICAgdG9wOiBudW1iZXIsXG4gICAgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmc6IG51bWJlcixcbiAgICBsZWZ0OiBudW1iZXIsXG4gICAgbGluZUJldHdlZW5CcmFuY2g6IG51bWJlcixcbiAgICBicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCxcbiAgICBtYXhXaWR0aEJyYW5jaDogbnVtYmVyLFxuICAgIGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudCxcbiAgICBjb25maWc6IElEYXRhRGlhZ3JhbUNvbmZpZ1N2Z1xuICApIHtcbiAgICBicmFuY2gub25UaGVTaWRlID0gJ3VuZGVyJztcbiAgICBjb25zdCB7IGNvb3JkUUwxLCBjb29yZFFMMiwgaXNDaGVja0FsbEVsZW1lbnRDb25uZWN0VG9FeGl0IH0gPSB0aGlzLmRyYXdBYm92ZVVuZGVyTGluZShcbiAgICAgIHRvcCwgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmcsIGxlZnQsIGxpbmVCZXR3ZWVuQnJhbmNoLCBicmFuY2gsIG1heFdpZHRoQnJhbmNoLCAndW5kZXInLCBjb25maWdcbiAgICApO1xuXG4gICAgYnJhbmNoLnNwZWNpZmljX3N0YXJ0X2JyYW5jaF94ID0gY29vcmRRTDIueDtcbiAgICBicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3kgPSBjb29yZFFMMi55O1xuXG4gICAgLy8gTeG7nyBy4buZbmcgd2lkdGhTdmcgbuG6v3UgbmjDoW5oIHh14buRbmcgdsaw4bujdFxuICAgIGNvbnN0IG1heFkgPSAoY29vcmRRTDEueSA/PyAwKSArIDIwMDtcbiAgICBjb25zdCBjb25maWdTdmcgPSBjb25maWcud2lkdGhIZWlnaHRTdmdDYW52YXM7XG5cbiAgICBjb25maWdTdmcuaGVpZ2h0U3ZnID0gbWF4WSA+IGNvbmZpZ1N2Zy5oZWlnaHRTdmcgPyBtYXhZIDogY29uZmlnU3ZnLmhlaWdodFN2ZztcblxuICAgIGlmICghYnJhbmNoLmVsZW1lbnRzIHx8ICFicmFuY2guZWxlbWVudHMubGVuZ3RoKSByZXR1cm47XG4gICAgdGhpcy5kcmF3RWxlbWVudEluQnJhbmNoTGluZShicmFuY2gsIGNvb3JkUUwyLCBjb25maWcpO1xuICAgIGlmIChpc0NoZWNrQWxsRWxlbWVudENvbm5lY3RUb0V4aXQpIHJldHVybjtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCBwcml2YXRlIOKUgOKUgFxuXG4gIC8qKiDEkOG6t3QgZWxlbWVudCDEkeG6p3UgdGnDqm4gdHJvbmcgbmjDoW5oIGThu7FhIHRoZW8gdOG7jWEgxJHhu5kgY3Xhu5FpIGPhu6dhIFFMMiAqL1xuICBzdGF0aWMgZHJhd0VsZW1lbnRJbkJyYW5jaExpbmUoYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gsIGNvb3JkUUwyOiBJQ29vcmRpbmF0ZXNEaWFncmFtU3ZnLCBjb25maWc6IElEYXRhRGlhZ3JhbUNvbmZpZ1N2Zykge1xuICAgIGNvbnN0IGVsZW1lbnRGaXJzdCA9IGJyYW5jaC5lbGVtZW50c1swXTtcblxuICAgIC8vIGx4ID0gWCBi4bqvdCDEkeG6p3UgY+G7p2EgZWxlbWVudDsgbHkgPSBZIHTDom0gbmjDoW5oIOKGkiBzcGVjaWZpY195ID0gdMOibSAtIGhhbGYgaGVpZ2h0XG4gICAgZWxlbWVudEZpcnN0LnNwZWNpZmljX3ggPSBjb29yZFFMMi5seDtcbiAgICBlbGVtZW50Rmlyc3Quc3BlY2lmaWNfeSA9IChjb29yZFFMMi5seSA/PyAwKSAtIChlbGVtZW50Rmlyc3Quc3BlY2lmaWNfaGVpZ2h0ID8/IDApIC8gMjtcbiAgICBNb0xpYkRpYWdyYW1Ib3Jpem9udGFsQ2FsY3VsYXRvckNvb3JkaW5hdGVzVXRpbC5zZXRYWUVsZW1lbnRzKGJyYW5jaC5lbGVtZW50cywgY29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBW4bq9IMSRxrDhu51uZyBy4bq9IG5ow6FuaCBraeG7g3UgaG9yaXpvbnRhbDpcbiAgICpcbiAgICogICBNIGxlZnQgdG9wICAgICAgICAgIOKGkiBi4bqvdCDEkeG6p3UgdOG6oWkgdMOibSBZIGPhu6dhIGVsZW1lbnQgY2hhXG4gICAqICAgTCBMeCAgIHRvcCAgICAgICAgICDihpIga8OpbyBOR0FORyBzYW5nIHBo4bqjaSDEkeG6v24gxJFp4buDbSBy4bq9ICAoTHggPSBsZWZ0ICsgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmcgLSBDVVJWRSlcbiAgICpcbiAgICogICBRTDE6IGLhursgdOG7qyBoxrDhu5tuZyDihpIgc2FuZyBoxrDhu5tuZyDihpEgKGFib3ZlKSBob+G6t2Mg4oaTICh1bmRlcilcbiAgICogICAgIE0gKEx4LCB0b3ApXG4gICAqICAgICBRIChMeCtDLCB0b3ApICDihpIgIChMeCtDLCB0b3DCsUMpICAgICAgIGNvbnRyb2wgxJFpIHRo4bqzbmcgcGjhuqNpLCDEkWnhu4NtIGvhur90IGLhuq90IMSR4bqndSDEkWkgZOG7jWNcbiAgICogICAgIEwgIEx4K0MsIHRvcMKxQ8Kxc3RyYWlnaHQgICAgICAgICAgICAgICBrw6lvIHRo4bqzbmcgZOG7jWMgKGzDqm4veHXhu5FuZylcbiAgICpcbiAgICogICBRTDI6IGLhursgbmfGsOG7o2MgbOG6oWkg4oaSIGjGsOG7m25nIG5nYW5nIMSR4buDIHThu5tpIGVsZW1lbnRcbiAgICogICAgIFEgKEx4K0MsIHRvcMKxQ8Kxc3RyYWlnaHTCsUMpICDihpIgIChMeCsyQywgdG9wwrFDwrFzdHJhaWdodMKxQylcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wgxJFpIHRp4bq/cCBk4buNYywgxJFp4buDbSBr4bq/dCDEkWkgbmdhbmcgKHBo4bqjaSlcbiAgICogICAgIEwgIEx4KzJDK2Rpc3RUb0ZpcnN0LCBzYW1lX1kgICBrw6lvIG5nYW5nIMSR4bq/biB24buLIHRyw60gZWxlbWVudCDEkeG6p3UgdGnDqm5cbiAgICpcbiAgICogICBTYXUgUUwyOlxuICAgKiAgICAgY29vcmRRTDIubHggID0gWCBi4bqvdCDEkeG6p3UgY+G7p2EgZWxlbWVudCDEkeG6p3UgdGnDqm5cbiAgICogICAgIGNvb3JkUUwyLmx5ICA9IFkgdMOibSBj4bunYSBuaMOhbmhcbiAgICovXG4gIHN0YXRpYyBkcmF3QWJvdmVVbmRlckxpbmUoXG4gICAgdG9wOiBudW1iZXIsXG4gICAgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmc6IG51bWJlcixcbiAgICBsZWZ0OiBudW1iZXIsXG4gICAgbGluZUJldHdlZW5CcmFuY2g6IG51bWJlcixcbiAgICBicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCxcbiAgICBtYXhXaWR0aEJyYW5jaDogbnVtYmVyLFxuICAgIGRpcmVjdGlvbjogJ2Fib3ZlJyB8ICd1bmRlcicsXG4gICAgY29uZmlnOiBJRGF0YURpYWdyYW1Db25maWdTdmdcbiAgKSB7XG4gICAgY29uc3QgQ1VSVkUgID0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX0hFSUdIVF9DVVJWRTtcbiAgICBjb25zdCBNICAgICAgPSBgTSAke2xlZnR9ICR7dG9wfWA7XG4gICAgY29uc3QgTHggICAgID0gbGVmdCArIGxpbmVGb3JtRWxlbWVudFRvQnJhbmNoaW5nIC0gQ1VSVkU7XG4gICAgY29uc3QgTCAgICAgID0gYEwgJHtMeH0gJHt0b3B9YDtcbiAgICBjb25zdCBzdHJhaWdodCA9IGxpbmVCZXR3ZWVuQnJhbmNoIC0gQ1VSVkUgKiAyOyAvLyDEkW/huqFuIHRo4bqzbmcgZOG7jWMgKGLhu48gMiBjb25nIMSR4bqndS1jdeG7kWkpXG5cbiAgICAvLyDilIDilIAgUUwxOiBjdXJ2ZSB04burIGjGsOG7m25nIG5nYW5nIOKGkiBoxrDhu5tuZyBk4buNYyAobMOqbi94deG7kW5nKSwgcuG7k2kgdGjhurNuZyBk4buNYyDilIDilIDilIDilIBcbiAgICBjb25zdCBjb29yZFFMMTogSUNvb3JkaW5hdGVzRGlhZ3JhbVN2ZyA9IHtcbiAgICAgIG14OiBMeCxcbiAgICAgIG15OiB0b3AsXG4gICAgICB4MTogTHggKyBDVVJWRSwgICAgICAgICAgLy8gY29udHJvbDogxJFpIHRo4bqzbmcgcGjhuqNpIHRow6ptIENVUlZFXG4gICAgICB5MTogdG9wLCAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2w6IGPDuW5nIFlcbiAgICAgIHg6ICBMeCArIENVUlZFLCAgICAgICAgICAvLyBlbmQgWDogZ2nhu68gbmd1ecOqbiAoPSBMeCtDVVJWRSlcbiAgICAgIHk6ICB0aGlzLm1hdGhPcChkaXJlY3Rpb24sIHRvcCwgQ1VSVkUsIHRydWUpLFxuICAgICAgLy8gICAnYWJvdmUnOiB0b3AgLSBDVVJWRSAgKGLhuq90IMSR4bqndSDEkWkgbMOqbilcbiAgICAgIC8vICAgJ3VuZGVyJzogdG9wICsgQ1VSVkUgIChi4bqvdCDEkeG6p3UgxJFpIHh14buRbmcpXG4gICAgfTtcbiAgICAvLyDEkG/huqFuIEwgc2F1IFFMMTogZ2nhu68gbmd1ecOqbiBYLCB0aeG6v3AgdOG7pWMgxJFpIGThu41jXG4gICAgY29vcmRRTDEubHggPSBjb29yZFFMMS54OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWCBraMO0bmcgxJHhu5VpXG4gICAgY29vcmRRTDEubHkgPSB0aGlzLm1hdGhPcChkaXJlY3Rpb24sIGNvb3JkUUwxLnksIHN0cmFpZ2h0LCB0cnVlKTsgLy8gdGnhur9wIHThu6VjIGzDqm4veHXhu5FuZ1xuXG4gICAgY29uc3QgUUwxID0gYE0gJHtjb29yZFFMMS5teH0sJHtjb29yZFFMMS5teX0gUSAke2Nvb3JkUUwxLngxfSwke2Nvb3JkUUwxLnkxfSAke2Nvb3JkUUwxLnh9LCR7Y29vcmRRTDEueX0gTCAke2Nvb3JkUUwxLmx4fSAke2Nvb3JkUUwxLmx5fWA7XG5cbiAgICAvLyDilIDilIAgUUwyOiBjdXJ2ZSB04burIGjGsOG7m25nIGThu41jIOKGkiBoxrDhu5tuZyBuZ2FuZyAocGjhuqNpKSwgcuG7k2kgdGjhurNuZyBuZ2FuZyDEkeG6v24gZWxlbWVudCDilIDilIBcbiAgICBjb25zdCBjb29yZFFMMjogSUNvb3JkaW5hdGVzRGlhZ3JhbVN2ZyA9IHtcbiAgICAgIC8vIGNvbnRyb2w6IHRp4bq/cCB04bulYyDEkWkgZOG7jWMgdGjDqm0gQ1VSVkUgdOG7qyDEkWnhu4NtIGN14buRaSBRTDFcbiAgICAgIHgxOiBjb29yZFFMMS5seCxcbiAgICAgIHkxOiB0aGlzLm1hdGhPcChkaXJlY3Rpb24sIGNvb3JkUUwxLmx5LCBDVVJWRSwgdHJ1ZSksXG4gICAgICAvLyBlbmQ6IHLhur0gbmdhbmcgc2FuZyBwaOG6o2kgdGjDqm0gQ1VSVkUsIGdp4buvIG5ndXnDqm4gWSB04bqhaSB5MVxuICAgICAgeTogIHRoaXMubWF0aE9wKGRpcmVjdGlvbiwgY29vcmRRTDEubHksIENVUlZFLCB0cnVlKSxcbiAgICAgIHg6ICAoY29vcmRRTDEubHggPz8gMCkgKyBDVVJWRSxcbiAgICB9O1xuXG4gICAgLy8gxJBv4bqhbiBMIHNhdSBRTDI6IMSRaSBuZ2FuZyAocGjhuqNpKSDEkeG6v24gduG7iyB0csOtIGVsZW1lbnQgxJHhuqd1IHRpw6puIHRyb25nIG5ow6FuaFxuICAgIGNvbnN0IGRpc3RUb0ZpcnN0ID0gdGhpcy5nZXRIb3Jpem9udGFsRGlzdGFuY2VUb0ZpcnN0QmxvY2soYnJhbmNoKTtcblxuICAgIGlmICghYnJhbmNoLmVsZW1lbnRzIHx8ICFicmFuY2guZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICBjb29yZFFMMi5seCA9IChjb29yZFFMMi54ID8/IDApICsgZGlzdFRvRmlyc3QgKyBtYXhXaWR0aEJyYW5jaDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29vcmRRTDIubHggPSAoY29vcmRRTDIueCA/PyAwKSArIGRpc3RUb0ZpcnN0O1xuICAgIH1cbiAgICBjb29yZFFMMi5seSA9IGNvb3JkUUwyLnk7IC8vIFkga2jDtG5nIMSR4buVaSDihpIgdMOibSBZIGPhu6dhIG5ow6FuaFxuXG4gICAgLy8gWOG7rSBsw70gbm9kZU90aGVyQ29uZmlnICh3YWl0IGJsb2NrKSB0csOqbiBuaMOhbmhcbiAgICBsZXQgUUwyID0gYFEgJHtjb29yZFFMMi54MX0sJHtjb29yZFFMMi55MX0gJHtjb29yZFFMMi54fSwke2Nvb3JkUUwyLnl9IEwgJHtjb29yZFFMMi5seH0gJHtjb29yZFFMMi5seX1gO1xuXG4gICAgaWYgKGJyYW5jaC5ub2RlT3RoZXJDb25maWcpIHtcbiAgICAgIGNvbnN0IGRpc3RUb1dhaXQgPSAxMTA7XG4gICAgICBjb25zdCBlbmRYVG9XYWl0ID0gKGNvb3JkUUwyLnggPz8gMCkgKyBkaXN0VG9XYWl0O1xuICAgICAgY29uc3Qgd2FpdFdpZHRoICA9IGdldEhlaWdodFdhaXRDb25maWcoYnJhbmNoLm5vZGVPdGhlckNvbmZpZyk7XG4gICAgICBjb25zdCBsZWZ0TGluZTIgID0gZW5kWFRvV2FpdCArIHdhaXRXaWR0aDtcblxuICAgICAgZGVsZXRlIGJyYW5jaC5ub2RlT3RoZXJDb25maWcuYXR0cmlidXRlU3ZnRDtcbiAgICAgIFFMMiA9IGBRICR7Y29vcmRRTDIueDF9LCR7Y29vcmRRTDIueTF9ICR7Y29vcmRRTDIueH0sJHtjb29yZFFMMi55fSBNICR7Y29vcmRRTDIueH0sJHtjb29yZFFMMi55fSBMICR7ZW5kWFRvV2FpdH0sJHtjb29yZFFMMi55fWA7XG4gICAgICBpZiAoYnJhbmNoLmVsZW1lbnRzICYmIGJyYW5jaC5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgYnJhbmNoLm5vZGVPdGhlckNvbmZpZy5hdHRyaWJ1dGVTdmdEID0gYE0gJHtsZWZ0TGluZTJ9ICR7Y29vcmRRTDIueX0gTCAke2Nvb3JkUUwyLmx4fSAke2Nvb3JkUUwyLmx5fWA7XG4gICAgICB9XG4gICAgICBicmFuY2gubm9kZU90aGVyQ29uZmlnLnNwZWNpZmljX3ggPSBlbmRYVG9XYWl0O1xuICAgICAgLy8gc3BlY2lmaWNfeSA9IHTDom0gWSBj4bunYSBuaMOhbmgg4oCUIHNldFRyYW5zbGF0ZVBvc2l0aW9ucyBz4bq9IHRy4burIGhlaWdodC8yIGtoaSBzZXQgdHJhbnNsYXRlWVxuICAgICAgYnJhbmNoLm5vZGVPdGhlckNvbmZpZy5zcGVjaWZpY195ID0gY29vcmRRTDIueSA/PyAwO1xuICAgICAgLy8gxJDhuqNtIGLhuqNvIGPDsyBrw61jaCB0aMaw4bubYyDEkeG7gyBzZXRUcmFuc2xhdGVQb3NpdGlvbnMgdMOtbmggb2Zmc2V0IMSRw7puZ1xuICAgICAgaWYgKCFicmFuY2gubm9kZU90aGVyQ29uZmlnLnNwZWNpZmljX2hlaWdodCkge1xuICAgICAgICBicmFuY2gubm9kZU90aGVyQ29uZmlnLnNwZWNpZmljX2hlaWdodCA9IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRUxFTUVOVF9XQUlUX0RFRkFVTFQ7XG4gICAgICB9XG4gICAgICBpZiAoIWJyYW5jaC5ub2RlT3RoZXJDb25maWcuc3BlY2lmaWNfd2lkdGgpIHtcbiAgICAgICAgYnJhbmNoLm5vZGVPdGhlckNvbmZpZy5zcGVjaWZpY193aWR0aCA9IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRUxFTUVOVF9XQUlUX0RFRkFVTFQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYnJhbmNoLmF0dHJpYnV0ZVN2Z0QgPSBgJHtNfSAke0x9ICR7UUwxfSAke1FMMn1gO1xuICAgIGNvbnN0IGlzQ2hlY2tBbGxFbGVtZW50Q29ubmVjdFRvRXhpdCA9IHRoaXMuY2hlY2tDaGlsZHJlbkNvbm5lY3RUb0V4aXQoYnJhbmNoLmVsZW1lbnRzKTtcblxuICAgIGJyYW5jaC5wb3NpdGlvbk1heFRvcCA9IGNvb3JkUUwyLnk7XG4gICAgY2hlY2tNYXhUb3AoY29uZmlnLCBicmFuY2gubm9kZU90aGVyQ29uZmlnPy5zcGVjaWZpY195LCBicmFuY2gucG9zaXRpb25NYXhUb3ApO1xuXG4gICAgcmV0dXJuIHsgY29vcmRRTDEsIGNvb3JkUUwyLCBpc0NoZWNrQWxsRWxlbWVudENvbm5lY3RUb0V4aXQgfTtcbiAgfVxuXG4gIHN0YXRpYyBjaGVja0NoaWxkcmVuQ29ubmVjdFRvRXhpdChlbGVtZW50czogSURpYWdyYW1FbGVtZW50W10pOiBib29sZWFuIHtcbiAgICBsZXQgdG9FeGl0ID0gZmFsc2U7XG5cbiAgICBpZiAoXG4gICAgICBlbGVtZW50cy5sZW5ndGggJiZcbiAgICAgIChlbGVtZW50c1tlbGVtZW50cy5sZW5ndGggLSAxXS5zdWJDb2RlT2ZFbGVtZW50IHx8IGVsZW1lbnRzW2VsZW1lbnRzLmxlbmd0aCAtIDFdLmNvZGUpID09PSBjYW52YXNDb25maWdSZWFkb25seSgpLlRZUEVfRUxFTUVOVF9FWElUXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgaWYgKCFlbGVtZW50LmJyYW5jaGVzIHx8ICFlbGVtZW50LmJyYW5jaGVzLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgbGV0IGJyYW5jaENvbm5lY3RUb0V4aXQgPSAwO1xuXG4gICAgICBlbGVtZW50LmJyYW5jaGVzLmZvckVhY2goKGJyYW5jaCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jaGVja0NoaWxkcmVuQ29ubmVjdFRvRXhpdChicmFuY2guZWxlbWVudHMpKSBicmFuY2hDb25uZWN0VG9FeGl0Kys7XG4gICAgICB9KTtcbiAgICAgIGlmIChicmFuY2hDb25uZWN0VG9FeGl0ID09PSBlbGVtZW50LmJyYW5jaGVzLmxlbmd0aCkgdG9FeGl0ID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0b0V4aXQ7XG4gIH1cblxuICAvKipcbiAgICogUXV5IMaw4bubYzpcbiAgICogICBhYm92ZSArIG9wcG9zaXRlPXRydWUg4oaSIGEgLSBiICAoxJFpIGzDqm4sIHkgZ2nhuqNtKVxuICAgKiAgIGFib3ZlICsgb3Bwb3NpdGU9ZmFsc2Ug4oaSIGEgKyBiXG4gICAqICAgdW5kZXIgKyBvcHBvc2l0ZT10cnVlIOKGkiBhICsgYiAgKMSRaSB4deG7kW5nLCB5IHTEg25nKVxuICAgKiAgIHVuZGVyICsgb3Bwb3NpdGU9ZmFsc2Ug4oaSIGEgLSBiXG4gICAqL1xuICBzdGF0aWMgbWF0aE9wKGRpcmVjdGlvbjogJ2Fib3ZlJyB8ICd1bmRlcicgfCBzdHJpbmcsIGE6IG51bWJlciB8IHVuZGVmaW5lZCwgYjogbnVtYmVyIHwgdW5kZWZpbmVkLCBvcHBvc2l0ZT86IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIGNvbnN0IGF2ID0gYSA/PyAwO1xuICAgIGNvbnN0IGJ2ID0gYiA/PyAwO1xuXG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2Fib3ZlJzpcbiAgICAgICAgcmV0dXJuIG9wcG9zaXRlID8gYXYgLSBidiA6IGF2ICsgYnY7XG4gICAgICBjYXNlICd1bmRlcic6XG4gICAgICAgIHJldHVybiBvcHBvc2l0ZSA/IGF2ICsgYnYgOiBhdiAtIGJ2O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGF2IC0gYnY7XG4gICAgfVxuICB9XG5cbiAgLyoqIEFsaWFzIMSR4buDIHTGsMahbmcgdGjDrWNoIHbhu5tpIGNvZGUgY8WpIGfhu41pIG1hdGhPcGVyYXRvcnNDYWxjdWxhdGlvbiAqL1xuICBzdGF0aWMgbWF0aE9wZXJhdG9yc0NhbGN1bGF0aW9uKGRpcmVjdGlvbjogJ2Fib3ZlJyB8ICd1bmRlcicgfCBzdHJpbmcsIGE6IG51bWJlciB8IHVuZGVmaW5lZCwgYjogbnVtYmVyIHwgdW5kZWZpbmVkLCBvcHBvc2l0ZT86IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1hdGhPcChkaXJlY3Rpb24sIGEsIGIsIG9wcG9zaXRlKTtcbiAgfVxufVxuIl19
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRvci1icmFuY2gudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvZGlhZ3JhbS1kcmF3L3NyYy91dGlscy9ob3Jpem9udGFsL2NhbGN1bGF0b3ItYnJhbmNoLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlFLE9BQU8sRUFBRSwrQ0FBK0MsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWhHOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxPQUFPLDBDQUEwQztJQUM3QyxNQUFNLENBQUMsaUNBQWlDLENBQUMsTUFBNkI7UUFDNUUsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDM0IsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUMsa0VBQWtFO1lBQzFGLE9BQU8sVUFBVSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxDQUFDLGVBQWUsQ0FBQztRQUMzRyxDQUFDO1FBQ0QsT0FBTyxvQkFBb0IsRUFBRSxDQUFDLDhDQUE4QyxDQUFDO0lBQy9FLENBQUM7SUFFRCxnRkFBZ0Y7SUFFaEYsK0NBQStDO0lBQy9DLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDckIsR0FBVyxFQUEyQix3QkFBd0I7SUFDOUQsMEJBQWtDLEVBQUkscUNBQXFDO0lBQzNFLElBQVksRUFBMEIseUJBQXlCO0lBQy9ELE1BQTZCLEVBQzdCLGNBQXNCLEVBQ3RCLE1BQTZCO1FBRTdCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzVCLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRywwQkFBMEIsQ0FBQztRQUNwRCxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFFbkIsRUFBRSxJQUFJLG9CQUFvQixFQUFFLENBQUMsb0JBQW9CLENBQUM7UUFDbEQsRUFBRSxJQUFJLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUM3QixFQUFFLElBQUksY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFdEQsTUFBTSxDQUFDLGFBQWEsR0FBRyxLQUFLLE1BQU0sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLEVBQUUsTUFBTSxNQUFNLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUVqRixJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMzQixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUM7WUFDdkIsTUFBTSxVQUFVLEdBQUcsU0FBUyxHQUFHLG9CQUFvQixFQUFFLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDO1lBRXhGLE1BQU0sQ0FBQyxhQUFhLEdBQUcsS0FBSyxNQUFNLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxFQUFFLE1BQU0sVUFBVSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNsRixNQUFNLFNBQVMsR0FBSSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDL0QsTUFBTSxTQUFTLEdBQUksVUFBVSxHQUFHLFNBQVMsQ0FBQztZQUUxQyxPQUFPLE1BQU0sQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDO1lBQzVDLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEdBQUcsS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLEVBQUUsTUFBTSxNQUFNLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNuRyxDQUFDO1lBQ0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1lBQy9DLE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDOUMsa0VBQWtFO1lBQ2xFLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLENBQUMsZUFBZSxDQUFDLGVBQWUsR0FBRyxvQkFBb0IsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1lBQ3ZGLENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztZQUN0RixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLEdBQUcsMEJBQTBCLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztRQUNqSCxNQUFNLENBQUMsdUJBQXVCLEdBQUcsR0FBRyxDQUFDO1FBRXJDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU07WUFBRSxPQUFPO1FBRXJDLE1BQU0sY0FBYyxHQUFHLG9CQUFvQixFQUFFLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBILE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDN0IsRUFBRSxDQUFDLFVBQVUsR0FBRyxJQUFJLEdBQUcsMEJBQTBCLEdBQUcsY0FBYyxDQUFDO1lBQ25FLEVBQUUsQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFDSCwrQ0FBK0MsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsK0RBQStEO0lBQy9ELE1BQU0sQ0FBQyxTQUFTLENBQ2QsR0FBVyxFQUNYLDBCQUFrQyxFQUNsQyxJQUFZLEVBQ1osaUJBQXlCLEVBQ3pCLE1BQTZCLEVBQzdCLGNBQXNCLEVBQ3RCLE9BQXdCLEVBQ3hCLE1BQTZCO1FBRTdCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQzNCLE1BQU0sRUFBRSxRQUFRLEVBQUUsOEJBQThCLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQzFFLEdBQUcsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUNsRyxDQUFDO1FBRUYsTUFBTSxDQUFDLHVCQUF1QixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLHVCQUF1QixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTTtZQUFFLE9BQU87UUFDckMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkQsSUFBSSw4QkFBOEI7WUFBRSxPQUFPO0lBQzdDLENBQUM7SUFFRCxpRUFBaUU7SUFDakUsTUFBTSxDQUFDLFNBQVMsQ0FDZCxHQUFXLEVBQ1gsMEJBQWtDLEVBQ2xDLElBQVksRUFDWixpQkFBeUIsRUFDekIsTUFBNkIsRUFDN0IsY0FBc0IsRUFDdEIsT0FBd0IsRUFDeEIsTUFBNkI7UUFFN0IsTUFBTSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFDM0IsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsOEJBQThCLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQ3BGLEdBQUcsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUNsRyxDQUFDO1FBRUYsTUFBTSxDQUFDLHVCQUF1QixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLHVCQUF1QixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFNUMsd0NBQXdDO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDckMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDO1FBRTlDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUU5RSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNO1lBQUUsT0FBTztRQUNyQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2RCxJQUFJLDhCQUE4QjtZQUFFLE9BQU87SUFDN0MsQ0FBQztJQUVELGdGQUFnRjtJQUVoRixvRUFBb0U7SUFDcEUsTUFBTSxDQUFDLHVCQUF1QixDQUFDLE1BQTZCLEVBQUUsUUFBZ0MsRUFBRSxNQUE2QjtRQUMzSCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXhDLGdGQUFnRjtRQUNoRixZQUFZLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDdEMsWUFBWSxDQUFDLFVBQVUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2RiwrQ0FBK0MsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtQkc7SUFDSCxNQUFNLENBQUMsa0JBQWtCLENBQ3ZCLEdBQVcsRUFDWCwwQkFBa0MsRUFDbEMsSUFBWSxFQUNaLGlCQUF5QixFQUN6QixNQUE2QixFQUM3QixjQUFzQixFQUN0QixTQUE0QixFQUM1QixNQUE2QjtRQUU3QixNQUFNLEtBQUssR0FBSSxvQkFBb0IsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1FBQzNELE1BQU0sQ0FBQyxHQUFRLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sRUFBRSxHQUFPLElBQUksR0FBRywwQkFBMEIsR0FBRyxLQUFLLENBQUM7UUFDekQsTUFBTSxDQUFDLEdBQVEsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEMsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLHNDQUFzQztRQUV0RiwyRUFBMkU7UUFDM0UsTUFBTSxRQUFRLEdBQTJCO1lBQ3ZDLEVBQUUsRUFBRSxFQUFFO1lBQ04sRUFBRSxFQUFFLEdBQUc7WUFDUCxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBVyxvQ0FBb0M7WUFDN0QsRUFBRSxFQUFFLEdBQUcsRUFBbUIsa0JBQWtCO1lBQzVDLENBQUMsRUFBRyxFQUFFLEdBQUcsS0FBSyxFQUFXLGlDQUFpQztZQUMxRCxDQUFDLEVBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUM7WUFDNUMsMkNBQTJDO1lBQzNDLDZDQUE2QztTQUM5QyxDQUFDO1FBQ0YsZ0RBQWdEO1FBQ2hELFFBQVEsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUF5QyxjQUFjO1FBQ2hGLFFBQVEsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7UUFFdkYsTUFBTSxHQUFHLEdBQUcsS0FBSyxRQUFRLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQyxFQUFFLE1BQU0sUUFBUSxDQUFDLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsTUFBTSxRQUFRLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUUxSSxrRkFBa0Y7UUFDbEYsTUFBTSxRQUFRLEdBQTJCO1lBQ3ZDLHVEQUF1RDtZQUN2RCxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDZixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDO1lBQ3BELDBEQUEwRDtZQUMxRCxDQUFDLEVBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDO1lBQ3BELENBQUMsRUFBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSztTQUMvQixDQUFDO1FBRUYsMEVBQTBFO1FBQzFFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUM3QixRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxXQUFXLEdBQUcsY0FBYyxDQUFDO1FBQ2pFLENBQUM7YUFBTSxDQUFDO1lBQ04sUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDO1FBQ2hELENBQUM7UUFDRCxRQUFRLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0M7UUFFMUQsZ0RBQWdEO1FBQ2hELElBQUksR0FBRyxHQUFHLEtBQUssUUFBUSxDQUFDLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsTUFBTSxRQUFRLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUV4RyxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMzQixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUM7WUFDdkIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztZQUNsRCxNQUFNLFNBQVMsR0FBSSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDL0QsTUFBTSxTQUFTLEdBQUksVUFBVSxHQUFHLFNBQVMsQ0FBQztZQUUxQyxPQUFPLE1BQU0sQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDO1lBQzVDLEdBQUcsR0FBRyxLQUFLLFFBQVEsQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsSUFBSSxRQUFRLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLE1BQU0sUUFBUSxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxNQUFNLFVBQVUsSUFBSSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDaEksSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUM1QixNQUFNLENBQUMsZUFBZSxDQUFDLGFBQWEsR0FBRyxLQUFLLFNBQVMsSUFBSSxRQUFRLENBQUMsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3hHLENBQUM7WUFDRCxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7WUFDL0MsMEZBQTBGO1lBQzFGLE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELGtFQUFrRTtZQUNsRSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDNUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztZQUN2RixDQUFDO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzNDLE1BQU0sQ0FBQyxlQUFlLENBQUMsY0FBYyxHQUFHLG9CQUFvQixFQUFFLENBQUMsb0JBQW9CLENBQUM7WUFDdEYsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDakQsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhGLE1BQU0sQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNuQyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSw4QkFBOEIsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxNQUFNLENBQUMsMEJBQTBCLENBQUMsUUFBMkI7UUFDM0QsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQ0UsUUFBUSxDQUFDLE1BQU07WUFDZixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLG9CQUFvQixFQUFFLENBQUMsaUJBQWlCLEVBQ25JLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTTtnQkFBRSxPQUFPO1lBQ3RDLElBQUksbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO1lBRTVCLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7b0JBQUUsbUJBQW1CLEVBQUUsQ0FBQztZQUM5RSxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksbUJBQW1CLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNO2dCQUFFLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFxQyxFQUFFLENBQXFCLEVBQUUsQ0FBcUIsRUFBRSxRQUFrQjtRQUNuSCxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEIsUUFBUSxTQUFTLEVBQUUsQ0FBQztZQUNsQixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDdEMsS0FBSyxPQUFPO2dCQUNWLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ3RDO2dCQUNFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVELG9FQUFvRTtJQUNwRSxNQUFNLENBQUMsd0JBQXdCLENBQUMsU0FBcUMsRUFBRSxDQUFxQixFQUFFLENBQXFCLEVBQUUsUUFBa0I7UUFDckksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNhbnZhc0NvbmZpZ1JlYWRvbmx5IH0gZnJvbSAnLi4vLi4vZGlhZ3JhbS1kcmF3LnNlcnZpY2UnO1xuaW1wb3J0IHsgSUNvb3JkaW5hdGVzRGlhZ3JhbVN2ZywgSURhdGFEaWFncmFtQ29uZmlnU3ZnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb29yZGluYXRlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgY2hlY2tNYXhUb3AsIGdldEhlaWdodFdhaXRDb25maWcgfSBmcm9tICcuLi9jYWxjdWxhdG9yLWVsZW1lbnQudXRpbCc7XG5pbXBvcnQgeyBJRGlhZ3JhbUVsZW1lbnQsIElEaWFncmFtRWxlbWVudEJyYW5jaCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGlhZ3JhbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTW9MaWJEaWFncmFtSG9yaXpvbnRhbENhbGN1bGF0b3JDb29yZGluYXRlc1V0aWwgfSBmcm9tICcuL2NhbGN1bGF0b3ItY29vcmRpbmF0ZXMudXRpbCc7XG5cbi8qKlxuICogSG9yaXpvbnRhbCBicmFuY2ggY2FsY3VsYXRvci5cbiAqIEZsb3cgZGlyZWN0aW9uOiBMRUZUIOKGkiBSSUdIVCAodHLDoWkgc2FuZyBwaOG6o2kpLlxuICogQnJhbmNoZXMgc3ByZWFkOiAgYWJvdmUgPSBVUCAoeSBnaeG6o20pLCAgdW5kZXIgPSBET1dOICh5IHTEg25nKS5cbiAqXG4gKiBNYXBwaW5nIHThu6sgdHLhu6VjIGThu41jIHNhbmcgbmdhbmc6XG4gKiAgIHZlcnRpY2FsIFwibGVmdFwiICBicmFuY2ggKHggZ2nhuqNtKSDihpQgaG9yaXpvbnRhbCBcImFib3ZlXCIgYnJhbmNoICh5IGdp4bqjbSlcbiAqICAgdmVydGljYWwgXCJyaWdodFwiIGJyYW5jaCAoeCB0xINuZykg4oaUIGhvcml6b250YWwgXCJ1bmRlclwiIGJyYW5jaCAgKHkgdMSDbmcpXG4gKlxuICogS8O9IGhp4buHdSB0cm9uZyBJQ29vcmRpbmF0ZXNEaWFncmFtU3ZnOlxuICogICAobXgsbXkpID0gxJFp4buDbSBi4bqvdCDEkeG6p3UgUSBjdXJ2ZVxuICogICAoeDEseTEpID0gY29udHJvbCBwb2ludFxuICogICAoeCx5KSAgID0gZW5kIHBvaW50IGPhu6dhIFEgY3VydmVcbiAqICAgKGx4LGx5KSA9IMSRaeG7g20gY3Xhu5FpIGPhu6dhIEwgc2F1IFFcbiAqL1xuZXhwb3J0IGNsYXNzIE1vTGliRGlhZ3JhbUhvcml6b250YWxDYWxjdWxhdG9yQnJhbmNoVXRpbCB7XG4gIHByaXZhdGUgc3RhdGljIGdldEhvcml6b250YWxEaXN0YW5jZVRvRmlyc3RCbG9jayhicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCkge1xuICAgIGlmIChicmFuY2gubm9kZU90aGVyQ29uZmlnKSB7XG4gICAgICBjb25zdCBkaXN0VG9XYWl0ID0gMTEwOyAvLyBpbmNyZWFzZSBzdGF0aWNhbGx5IHNpbmNlIGJyYW5jaCBsYWJlbCBpcyBhbHdheXMgYXNzaWduZWQgbGF0ZXJcbiAgICAgIHJldHVybiBkaXN0VG9XYWl0ICsgZ2V0SGVpZ2h0V2FpdENvbmZpZyhicmFuY2gubm9kZU90aGVyQ29uZmlnKSArIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuV0FJVF9UT19FTEVNRU5UO1xuICAgIH1cbiAgICByZXR1cm4gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX01BUkdJTl9ERUZBVUxUX0JSQU5DSF9UT19FTEVNRU5UX0ZJUlNUO1xuICB9XG5cbiAgLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAIHB1YmxpYyDilIDilIBcblxuICAvKiogTmjDoW5oIGdp4buvYSAoY2VudGVyKToga8OpbyB0aOG6s25nIHNhbmcgcGjhuqNpICovXG4gIHN0YXRpYyBkcmF3U3RyYWlnaHRMaW5lKFxuICAgIHRvcDogbnVtYmVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWSB0w6JtIGPhu6dhIGVsZW1lbnQgY2hhXG4gICAgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmc6IG51bWJlciwgICAvLyB3aWR0aCBlbGVtZW50ICsgbWFyZ2luIMSR4bq/biDEkWnhu4NtIHLhur1cbiAgICBsZWZ0OiBudW1iZXIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFggdHLDoWkgY+G7p2EgZWxlbWVudCBjaGFcbiAgICBicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCxcbiAgICBtYXhXaWR0aEJyYW5jaDogbnVtYmVyLFxuICAgIGNvbmZpZzogSURhdGFEaWFncmFtQ29uZmlnU3ZnXG4gICkge1xuICAgIGJyYW5jaC5vblRoZVNpZGUgPSAnY2VudGVyJztcbiAgICBjb25zdCBzdGFydERyYXcgPSBsZWZ0ICsgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmc7XG4gICAgbGV0IEx4ID0gc3RhcnREcmF3O1xuXG4gICAgTHggKz0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX0hFSUdIVF9DVVJWRTtcbiAgICBMeCArPSB0aGlzLmdldEhvcml6b250YWxEaXN0YW5jZVRvRmlyc3RCbG9jayhicmFuY2gpO1xuICAgIGlmICghYnJhbmNoLmVsZW1lbnRzPy5sZW5ndGgpIHtcbiAgICAgIEx4ICs9IG1heFdpZHRoQnJhbmNoICsgMjA7XG4gICAgfVxuXG4gICAgY29uc3QgY29vcmQxID0geyBteDogbGVmdCwgbXk6IHRvcCwgbHg6IEx4LCBseTogdG9wIH07XG5cbiAgICBicmFuY2guYXR0cmlidXRlU3ZnRCA9IGBNICR7Y29vcmQxLm14fSAke2Nvb3JkMS5teX0gTCAke2Nvb3JkMS5seH0gJHtjb29yZDEubHl9YDtcblxuICAgIGlmIChicmFuY2gubm9kZU90aGVyQ29uZmlnKSB7XG4gICAgICBjb25zdCBkaXN0VG9XYWl0ID0gMTEwO1xuICAgICAgY29uc3QgZW5kWFRvV2FpdCA9IHN0YXJ0RHJhdyArIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRUxFTUVOVF9IRUlHSFRfQ1VSVkUgKyBkaXN0VG9XYWl0O1xuXG4gICAgICBicmFuY2guYXR0cmlidXRlU3ZnRCA9IGBNICR7Y29vcmQxLm14fSAke2Nvb3JkMS5teX0gTCAke2VuZFhUb1dhaXR9ICR7Y29vcmQxLm15fWA7XG4gICAgICBjb25zdCB3YWl0V2lkdGggID0gZ2V0SGVpZ2h0V2FpdENvbmZpZyhicmFuY2gubm9kZU90aGVyQ29uZmlnKTtcbiAgICAgIGNvbnN0IGxlZnRMaW5lMiAgPSBlbmRYVG9XYWl0ICsgd2FpdFdpZHRoO1xuXG4gICAgICBkZWxldGUgYnJhbmNoLm5vZGVPdGhlckNvbmZpZy5hdHRyaWJ1dGVTdmdEO1xuICAgICAgaWYgKGJyYW5jaC5lbGVtZW50cz8ubGVuZ3RoKSB7XG4gICAgICAgIGJyYW5jaC5ub2RlT3RoZXJDb25maWcuYXR0cmlidXRlU3ZnRCA9IGBNICR7bGVmdExpbmUyfSAke2Nvb3JkMS5teX0gTCAke2Nvb3JkMS5seH0gJHtjb29yZDEubXl9YDtcbiAgICAgIH1cbiAgICAgIGJyYW5jaC5ub2RlT3RoZXJDb25maWcuc3BlY2lmaWNfeCA9IGVuZFhUb1dhaXQ7XG4gICAgICBicmFuY2gubm9kZU90aGVyQ29uZmlnLnNwZWNpZmljX3kgPSBjb29yZDEubXk7XG4gICAgICAvLyDEkOG6o20gYuG6o28gY8OzIGvDrWNoIHRoxrDhu5tjIMSR4buDIHNldFRyYW5zbGF0ZVBvc2l0aW9ucyB0w61uaCBvZmZzZXQgxJHDum5nXG4gICAgICBpZiAoIWJyYW5jaC5ub2RlT3RoZXJDb25maWcuc3BlY2lmaWNfaGVpZ2h0KSB7XG4gICAgICAgIGJyYW5jaC5ub2RlT3RoZXJDb25maWcuc3BlY2lmaWNfaGVpZ2h0ID0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX1dBSVRfREVGQVVMVDtcbiAgICAgIH1cbiAgICAgIGlmICghYnJhbmNoLm5vZGVPdGhlckNvbmZpZy5zcGVjaWZpY193aWR0aCkge1xuICAgICAgICBicmFuY2gubm9kZU90aGVyQ29uZmlnLnNwZWNpZmljX3dpZHRoID0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX1dBSVRfREVGQVVMVDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3ggPSBsZWZ0ICsgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmcgKyBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfSEVJR0hUX0NVUlZFO1xuICAgIGJyYW5jaC5zcGVjaWZpY19zdGFydF9icmFuY2hfeSA9IHRvcDtcblxuICAgIGlmICghYnJhbmNoLmVsZW1lbnRzPy5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IHdpZHRoVG9FbGVtZW50ID0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX0hFSUdIVF9DVVJWRSArIHRoaXMuZ2V0SG9yaXpvbnRhbERpc3RhbmNlVG9GaXJzdEJsb2NrKGJyYW5jaCk7XG5cbiAgICBicmFuY2guZWxlbWVudHMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgIGVsLnNwZWNpZmljX3ggPSBsZWZ0ICsgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmcgKyB3aWR0aFRvRWxlbWVudDtcbiAgICAgIGVsLnNwZWNpZmljX3kgPSB0b3AgLSAoZWwuc3BlY2lmaWNfaGVpZ2h0ID8/IDApIC8gMjtcbiAgICB9KTtcbiAgICBNb0xpYkRpYWdyYW1Ib3Jpem9udGFsQ2FsY3VsYXRvckNvb3JkaW5hdGVzVXRpbC5zZXRYWUVsZW1lbnRzKGJyYW5jaC5lbGVtZW50cywgY29uZmlnKTtcbiAgfVxuXG4gIC8qKiBOaMOhbmggcGjDrWEgdHLDqm4gKGFib3ZlKTogcuG6vSBsw6puLCBy4buTaSBi4bq7IHBo4bqjaSDEkeG6v24gZWxlbWVudCAqL1xuICBzdGF0aWMgYWJvdmVMaW5lKFxuICAgIHRvcDogbnVtYmVyLFxuICAgIGxpbmVGb3JtRWxlbWVudFRvQnJhbmNoaW5nOiBudW1iZXIsXG4gICAgbGVmdDogbnVtYmVyLFxuICAgIGxpbmVCZXR3ZWVuQnJhbmNoOiBudW1iZXIsXG4gICAgYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gsXG4gICAgbWF4V2lkdGhCcmFuY2g6IG51bWJlcixcbiAgICBlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQsXG4gICAgY29uZmlnOiBJRGF0YURpYWdyYW1Db25maWdTdmdcbiAgKSB7XG4gICAgYnJhbmNoLm9uVGhlU2lkZSA9ICdhYm92ZSc7XG4gICAgY29uc3QgeyBjb29yZFFMMiwgaXNDaGVja0FsbEVsZW1lbnRDb25uZWN0VG9FeGl0IH0gPSB0aGlzLmRyYXdBYm92ZVVuZGVyTGluZShcbiAgICAgIHRvcCwgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmcsIGxlZnQsIGxpbmVCZXR3ZWVuQnJhbmNoLCBicmFuY2gsIG1heFdpZHRoQnJhbmNoLCAnYWJvdmUnLCBjb25maWdcbiAgICApO1xuXG4gICAgYnJhbmNoLnNwZWNpZmljX3N0YXJ0X2JyYW5jaF94ID0gY29vcmRRTDIueDtcbiAgICBicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3kgPSBjb29yZFFMMi55O1xuXG4gICAgaWYgKCFicmFuY2guZWxlbWVudHM/Lmxlbmd0aCkgcmV0dXJuO1xuICAgIHRoaXMuZHJhd0VsZW1lbnRJbkJyYW5jaExpbmUoYnJhbmNoLCBjb29yZFFMMiwgY29uZmlnKTtcbiAgICBpZiAoaXNDaGVja0FsbEVsZW1lbnRDb25uZWN0VG9FeGl0KSByZXR1cm47XG4gIH1cblxuICAvKiogTmjDoW5oIHBow61hIGTGsOG7m2kgKHVuZGVyKTogcuG6vSB4deG7kW5nLCBy4buTaSBi4bq7IHBo4bqjaSDEkeG6v24gZWxlbWVudCAqL1xuICBzdGF0aWMgdW5kZXJMaW5lKFxuICAgIHRvcDogbnVtYmVyLFxuICAgIGxpbmVGb3JtRWxlbWVudFRvQnJhbmNoaW5nOiBudW1iZXIsXG4gICAgbGVmdDogbnVtYmVyLFxuICAgIGxpbmVCZXR3ZWVuQnJhbmNoOiBudW1iZXIsXG4gICAgYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gsXG4gICAgbWF4V2lkdGhCcmFuY2g6IG51bWJlcixcbiAgICBlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQsXG4gICAgY29uZmlnOiBJRGF0YURpYWdyYW1Db25maWdTdmdcbiAgKSB7XG4gICAgYnJhbmNoLm9uVGhlU2lkZSA9ICd1bmRlcic7XG4gICAgY29uc3QgeyBjb29yZFFMMSwgY29vcmRRTDIsIGlzQ2hlY2tBbGxFbGVtZW50Q29ubmVjdFRvRXhpdCB9ID0gdGhpcy5kcmF3QWJvdmVVbmRlckxpbmUoXG4gICAgICB0b3AsIGxpbmVGb3JtRWxlbWVudFRvQnJhbmNoaW5nLCBsZWZ0LCBsaW5lQmV0d2VlbkJyYW5jaCwgYnJhbmNoLCBtYXhXaWR0aEJyYW5jaCwgJ3VuZGVyJywgY29uZmlnXG4gICAgKTtcblxuICAgIGJyYW5jaC5zcGVjaWZpY19zdGFydF9icmFuY2hfeCA9IGNvb3JkUUwyLng7XG4gICAgYnJhbmNoLnNwZWNpZmljX3N0YXJ0X2JyYW5jaF95ID0gY29vcmRRTDIueTtcblxuICAgIC8vIE3hu58gcuG7mW5nIHdpZHRoU3ZnIG7hur91IG5ow6FuaCB4deG7kW5nIHbGsOG7o3RcbiAgICBjb25zdCBtYXhZID0gKGNvb3JkUUwxLnkgPz8gMCkgKyAyMDA7XG4gICAgY29uc3QgY29uZmlnU3ZnID0gY29uZmlnLndpZHRoSGVpZ2h0U3ZnQ2FudmFzO1xuXG4gICAgY29uZmlnU3ZnLmhlaWdodFN2ZyA9IG1heFkgPiBjb25maWdTdmcuaGVpZ2h0U3ZnID8gbWF4WSA6IGNvbmZpZ1N2Zy5oZWlnaHRTdmc7XG5cbiAgICBpZiAoIWJyYW5jaC5lbGVtZW50cz8ubGVuZ3RoKSByZXR1cm47XG4gICAgdGhpcy5kcmF3RWxlbWVudEluQnJhbmNoTGluZShicmFuY2gsIGNvb3JkUUwyLCBjb25maWcpO1xuICAgIGlmIChpc0NoZWNrQWxsRWxlbWVudENvbm5lY3RUb0V4aXQpIHJldHVybjtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCBwcml2YXRlIOKUgOKUgFxuXG4gIC8qKiDEkOG6t3QgZWxlbWVudCDEkeG6p3UgdGnDqm4gdHJvbmcgbmjDoW5oIGThu7FhIHRoZW8gdOG7jWEgxJHhu5kgY3Xhu5FpIGPhu6dhIFFMMiAqL1xuICBzdGF0aWMgZHJhd0VsZW1lbnRJbkJyYW5jaExpbmUoYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gsIGNvb3JkUUwyOiBJQ29vcmRpbmF0ZXNEaWFncmFtU3ZnLCBjb25maWc6IElEYXRhRGlhZ3JhbUNvbmZpZ1N2Zykge1xuICAgIGNvbnN0IGVsZW1lbnRGaXJzdCA9IGJyYW5jaC5lbGVtZW50c1swXTtcblxuICAgIC8vIGx4ID0gWCBi4bqvdCDEkeG6p3UgY+G7p2EgZWxlbWVudDsgbHkgPSBZIHTDom0gbmjDoW5oIOKGkiBzcGVjaWZpY195ID0gdMOibSAtIGhhbGYgaGVpZ2h0XG4gICAgZWxlbWVudEZpcnN0LnNwZWNpZmljX3ggPSBjb29yZFFMMi5seDtcbiAgICBlbGVtZW50Rmlyc3Quc3BlY2lmaWNfeSA9IChjb29yZFFMMi5seSA/PyAwKSAtIChlbGVtZW50Rmlyc3Quc3BlY2lmaWNfaGVpZ2h0ID8/IDApIC8gMjtcbiAgICBNb0xpYkRpYWdyYW1Ib3Jpem9udGFsQ2FsY3VsYXRvckNvb3JkaW5hdGVzVXRpbC5zZXRYWUVsZW1lbnRzKGJyYW5jaC5lbGVtZW50cywgY29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBW4bq9IMSRxrDhu51uZyBy4bq9IG5ow6FuaCBraeG7g3UgaG9yaXpvbnRhbDpcbiAgICpcbiAgICogICBNIGxlZnQgdG9wICAgICAgICAgIOKGkiBi4bqvdCDEkeG6p3UgdOG6oWkgdMOibSBZIGPhu6dhIGVsZW1lbnQgY2hhXG4gICAqICAgTCBMeCAgIHRvcCAgICAgICAgICDihpIga8OpbyBOR0FORyBzYW5nIHBo4bqjaSDEkeG6v24gxJFp4buDbSBy4bq9ICAoTHggPSBsZWZ0ICsgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmcgLSBDVVJWRSlcbiAgICpcbiAgICogICBRTDE6IGLhursgdOG7qyBoxrDhu5tuZyDihpIgc2FuZyBoxrDhu5tuZyDihpEgKGFib3ZlKSBob+G6t2Mg4oaTICh1bmRlcilcbiAgICogICAgIE0gKEx4LCB0b3ApXG4gICAqICAgICBRIChMeCtDLCB0b3ApICDihpIgIChMeCtDLCB0b3DCsUMpICAgICAgIGNvbnRyb2wgxJFpIHRo4bqzbmcgcGjhuqNpLCDEkWnhu4NtIGvhur90IGLhuq90IMSR4bqndSDEkWkgZOG7jWNcbiAgICogICAgIEwgIEx4K0MsIHRvcMKxQ8Kxc3RyYWlnaHQgICAgICAgICAgICAgICBrw6lvIHRo4bqzbmcgZOG7jWMgKGzDqm4veHXhu5FuZylcbiAgICpcbiAgICogICBRTDI6IGLhursgbmfGsOG7o2MgbOG6oWkg4oaSIGjGsOG7m25nIG5nYW5nIMSR4buDIHThu5tpIGVsZW1lbnRcbiAgICogICAgIFEgKEx4K0MsIHRvcMKxQ8Kxc3RyYWlnaHTCsUMpICDihpIgIChMeCsyQywgdG9wwrFDwrFzdHJhaWdodMKxQylcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wgxJFpIHRp4bq/cCBk4buNYywgxJFp4buDbSBr4bq/dCDEkWkgbmdhbmcgKHBo4bqjaSlcbiAgICogICAgIEwgIEx4KzJDK2Rpc3RUb0ZpcnN0LCBzYW1lX1kgICBrw6lvIG5nYW5nIMSR4bq/biB24buLIHRyw60gZWxlbWVudCDEkeG6p3UgdGnDqm5cbiAgICpcbiAgICogICBTYXUgUUwyOlxuICAgKiAgICAgY29vcmRRTDIubHggID0gWCBi4bqvdCDEkeG6p3UgY+G7p2EgZWxlbWVudCDEkeG6p3UgdGnDqm5cbiAgICogICAgIGNvb3JkUUwyLmx5ICA9IFkgdMOibSBj4bunYSBuaMOhbmhcbiAgICovXG4gIHN0YXRpYyBkcmF3QWJvdmVVbmRlckxpbmUoXG4gICAgdG9wOiBudW1iZXIsXG4gICAgbGluZUZvcm1FbGVtZW50VG9CcmFuY2hpbmc6IG51bWJlcixcbiAgICBsZWZ0OiBudW1iZXIsXG4gICAgbGluZUJldHdlZW5CcmFuY2g6IG51bWJlcixcbiAgICBicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCxcbiAgICBtYXhXaWR0aEJyYW5jaDogbnVtYmVyLFxuICAgIGRpcmVjdGlvbjogJ2Fib3ZlJyB8ICd1bmRlcicsXG4gICAgY29uZmlnOiBJRGF0YURpYWdyYW1Db25maWdTdmdcbiAgKSB7XG4gICAgY29uc3QgQ1VSVkUgID0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX0hFSUdIVF9DVVJWRTtcbiAgICBjb25zdCBNICAgICAgPSBgTSAke2xlZnR9ICR7dG9wfWA7XG4gICAgY29uc3QgTHggICAgID0gbGVmdCArIGxpbmVGb3JtRWxlbWVudFRvQnJhbmNoaW5nIC0gQ1VSVkU7XG4gICAgY29uc3QgTCAgICAgID0gYEwgJHtMeH0gJHt0b3B9YDtcbiAgICBjb25zdCBzdHJhaWdodCA9IGxpbmVCZXR3ZWVuQnJhbmNoIC0gQ1VSVkUgKiAyOyAvLyDEkW/huqFuIHRo4bqzbmcgZOG7jWMgKGLhu48gMiBjb25nIMSR4bqndS1jdeG7kWkpXG5cbiAgICAvLyDilIDilIAgUUwxOiBjdXJ2ZSB04burIGjGsOG7m25nIG5nYW5nIOKGkiBoxrDhu5tuZyBk4buNYyAobMOqbi94deG7kW5nKSwgcuG7k2kgdGjhurNuZyBk4buNYyDilIDilIDilIDilIBcbiAgICBjb25zdCBjb29yZFFMMTogSUNvb3JkaW5hdGVzRGlhZ3JhbVN2ZyA9IHtcbiAgICAgIG14OiBMeCxcbiAgICAgIG15OiB0b3AsXG4gICAgICB4MTogTHggKyBDVVJWRSwgICAgICAgICAgLy8gY29udHJvbDogxJFpIHRo4bqzbmcgcGjhuqNpIHRow6ptIENVUlZFXG4gICAgICB5MTogdG9wLCAgICAgICAgICAgICAgICAgIC8vIGNvbnRyb2w6IGPDuW5nIFlcbiAgICAgIHg6ICBMeCArIENVUlZFLCAgICAgICAgICAvLyBlbmQgWDogZ2nhu68gbmd1ecOqbiAoPSBMeCtDVVJWRSlcbiAgICAgIHk6ICB0aGlzLm1hdGhPcChkaXJlY3Rpb24sIHRvcCwgQ1VSVkUsIHRydWUpLFxuICAgICAgLy8gICAnYWJvdmUnOiB0b3AgLSBDVVJWRSAgKGLhuq90IMSR4bqndSDEkWkgbMOqbilcbiAgICAgIC8vICAgJ3VuZGVyJzogdG9wICsgQ1VSVkUgIChi4bqvdCDEkeG6p3UgxJFpIHh14buRbmcpXG4gICAgfTtcbiAgICAvLyDEkG/huqFuIEwgc2F1IFFMMTogZ2nhu68gbmd1ecOqbiBYLCB0aeG6v3AgdOG7pWMgxJFpIGThu41jXG4gICAgY29vcmRRTDEubHggPSBjb29yZFFMMS54OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWCBraMO0bmcgxJHhu5VpXG4gICAgY29vcmRRTDEubHkgPSB0aGlzLm1hdGhPcChkaXJlY3Rpb24sIGNvb3JkUUwxLnksIHN0cmFpZ2h0LCB0cnVlKTsgLy8gdGnhur9wIHThu6VjIGzDqm4veHXhu5FuZ1xuXG4gICAgY29uc3QgUUwxID0gYE0gJHtjb29yZFFMMS5teH0sJHtjb29yZFFMMS5teX0gUSAke2Nvb3JkUUwxLngxfSwke2Nvb3JkUUwxLnkxfSAke2Nvb3JkUUwxLnh9LCR7Y29vcmRRTDEueX0gTCAke2Nvb3JkUUwxLmx4fSAke2Nvb3JkUUwxLmx5fWA7XG5cbiAgICAvLyDilIDilIAgUUwyOiBjdXJ2ZSB04burIGjGsOG7m25nIGThu41jIOKGkiBoxrDhu5tuZyBuZ2FuZyAocGjhuqNpKSwgcuG7k2kgdGjhurNuZyBuZ2FuZyDEkeG6v24gZWxlbWVudCDilIDilIBcbiAgICBjb25zdCBjb29yZFFMMjogSUNvb3JkaW5hdGVzRGlhZ3JhbVN2ZyA9IHtcbiAgICAgIC8vIGNvbnRyb2w6IHRp4bq/cCB04bulYyDEkWkgZOG7jWMgdGjDqm0gQ1VSVkUgdOG7qyDEkWnhu4NtIGN14buRaSBRTDFcbiAgICAgIHgxOiBjb29yZFFMMS5seCxcbiAgICAgIHkxOiB0aGlzLm1hdGhPcChkaXJlY3Rpb24sIGNvb3JkUUwxLmx5LCBDVVJWRSwgdHJ1ZSksXG4gICAgICAvLyBlbmQ6IHLhur0gbmdhbmcgc2FuZyBwaOG6o2kgdGjDqm0gQ1VSVkUsIGdp4buvIG5ndXnDqm4gWSB04bqhaSB5MVxuICAgICAgeTogIHRoaXMubWF0aE9wKGRpcmVjdGlvbiwgY29vcmRRTDEubHksIENVUlZFLCB0cnVlKSxcbiAgICAgIHg6ICAoY29vcmRRTDEubHggPz8gMCkgKyBDVVJWRSxcbiAgICB9O1xuXG4gICAgLy8gxJBv4bqhbiBMIHNhdSBRTDI6IMSRaSBuZ2FuZyAocGjhuqNpKSDEkeG6v24gduG7iyB0csOtIGVsZW1lbnQgxJHhuqd1IHRpw6puIHRyb25nIG5ow6FuaFxuICAgIGNvbnN0IGRpc3RUb0ZpcnN0ID0gdGhpcy5nZXRIb3Jpem9udGFsRGlzdGFuY2VUb0ZpcnN0QmxvY2soYnJhbmNoKTtcblxuICAgIGlmICghYnJhbmNoLmVsZW1lbnRzPy5sZW5ndGgpIHtcbiAgICAgIGNvb3JkUUwyLmx4ID0gKGNvb3JkUUwyLnggPz8gMCkgKyBkaXN0VG9GaXJzdCArIG1heFdpZHRoQnJhbmNoO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb29yZFFMMi5seCA9IChjb29yZFFMMi54ID8/IDApICsgZGlzdFRvRmlyc3Q7XG4gICAgfVxuICAgIGNvb3JkUUwyLmx5ID0gY29vcmRRTDIueTsgLy8gWSBraMO0bmcgxJHhu5VpIOKGkiB0w6JtIFkgY+G7p2EgbmjDoW5oXG5cbiAgICAvLyBY4butIGzDvSBub2RlT3RoZXJDb25maWcgKHdhaXQgYmxvY2spIHRyw6puIG5ow6FuaFxuICAgIGxldCBRTDIgPSBgUSAke2Nvb3JkUUwyLngxfSwke2Nvb3JkUUwyLnkxfSAke2Nvb3JkUUwyLnh9LCR7Y29vcmRRTDIueX0gTCAke2Nvb3JkUUwyLmx4fSAke2Nvb3JkUUwyLmx5fWA7XG5cbiAgICBpZiAoYnJhbmNoLm5vZGVPdGhlckNvbmZpZykge1xuICAgICAgY29uc3QgZGlzdFRvV2FpdCA9IDExMDtcbiAgICAgIGNvbnN0IGVuZFhUb1dhaXQgPSAoY29vcmRRTDIueCA/PyAwKSArIGRpc3RUb1dhaXQ7XG4gICAgICBjb25zdCB3YWl0V2lkdGggID0gZ2V0SGVpZ2h0V2FpdENvbmZpZyhicmFuY2gubm9kZU90aGVyQ29uZmlnKTtcbiAgICAgIGNvbnN0IGxlZnRMaW5lMiAgPSBlbmRYVG9XYWl0ICsgd2FpdFdpZHRoO1xuXG4gICAgICBkZWxldGUgYnJhbmNoLm5vZGVPdGhlckNvbmZpZy5hdHRyaWJ1dGVTdmdEO1xuICAgICAgUUwyID0gYFEgJHtjb29yZFFMMi54MX0sJHtjb29yZFFMMi55MX0gJHtjb29yZFFMMi54fSwke2Nvb3JkUUwyLnl9IE0gJHtjb29yZFFMMi54fSwke2Nvb3JkUUwyLnl9IEwgJHtlbmRYVG9XYWl0fSwke2Nvb3JkUUwyLnl9YDtcbiAgICAgIGlmIChicmFuY2guZWxlbWVudHM/Lmxlbmd0aCkge1xuICAgICAgICBicmFuY2gubm9kZU90aGVyQ29uZmlnLmF0dHJpYnV0ZVN2Z0QgPSBgTSAke2xlZnRMaW5lMn0gJHtjb29yZFFMMi55fSBMICR7Y29vcmRRTDIubHh9ICR7Y29vcmRRTDIubHl9YDtcbiAgICAgIH1cbiAgICAgIGJyYW5jaC5ub2RlT3RoZXJDb25maWcuc3BlY2lmaWNfeCA9IGVuZFhUb1dhaXQ7XG4gICAgICAvLyBzcGVjaWZpY195ID0gdMOibSBZIGPhu6dhIG5ow6FuaCDigJQgc2V0VHJhbnNsYXRlUG9zaXRpb25zIHPhur0gdHLhu6sgaGVpZ2h0LzIga2hpIHNldCB0cmFuc2xhdGVZXG4gICAgICBicmFuY2gubm9kZU90aGVyQ29uZmlnLnNwZWNpZmljX3kgPSBjb29yZFFMMi55ID8/IDA7XG4gICAgICAvLyDEkOG6o20gYuG6o28gY8OzIGvDrWNoIHRoxrDhu5tjIMSR4buDIHNldFRyYW5zbGF0ZVBvc2l0aW9ucyB0w61uaCBvZmZzZXQgxJHDum5nXG4gICAgICBpZiAoIWJyYW5jaC5ub2RlT3RoZXJDb25maWcuc3BlY2lmaWNfaGVpZ2h0KSB7XG4gICAgICAgIGJyYW5jaC5ub2RlT3RoZXJDb25maWcuc3BlY2lmaWNfaGVpZ2h0ID0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX1dBSVRfREVGQVVMVDtcbiAgICAgIH1cbiAgICAgIGlmICghYnJhbmNoLm5vZGVPdGhlckNvbmZpZy5zcGVjaWZpY193aWR0aCkge1xuICAgICAgICBicmFuY2gubm9kZU90aGVyQ29uZmlnLnNwZWNpZmljX3dpZHRoID0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX1dBSVRfREVGQVVMVDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBicmFuY2guYXR0cmlidXRlU3ZnRCA9IGAke019ICR7TH0gJHtRTDF9ICR7UUwyfWA7XG4gICAgY29uc3QgaXNDaGVja0FsbEVsZW1lbnRDb25uZWN0VG9FeGl0ID0gdGhpcy5jaGVja0NoaWxkcmVuQ29ubmVjdFRvRXhpdChicmFuY2guZWxlbWVudHMpO1xuXG4gICAgYnJhbmNoLnBvc2l0aW9uTWF4VG9wID0gY29vcmRRTDIueTtcbiAgICBjaGVja01heFRvcChjb25maWcsIGJyYW5jaC5ub2RlT3RoZXJDb25maWc/LnNwZWNpZmljX3ksIGJyYW5jaC5wb3NpdGlvbk1heFRvcCk7XG5cbiAgICByZXR1cm4geyBjb29yZFFMMSwgY29vcmRRTDIsIGlzQ2hlY2tBbGxFbGVtZW50Q29ubmVjdFRvRXhpdCB9O1xuICB9XG5cbiAgc3RhdGljIGNoZWNrQ2hpbGRyZW5Db25uZWN0VG9FeGl0KGVsZW1lbnRzOiBJRGlhZ3JhbUVsZW1lbnRbXSk6IGJvb2xlYW4ge1xuICAgIGxldCB0b0V4aXQgPSBmYWxzZTtcblxuICAgIGlmIChcbiAgICAgIGVsZW1lbnRzLmxlbmd0aCAmJlxuICAgICAgKGVsZW1lbnRzW2VsZW1lbnRzLmxlbmd0aCAtIDFdLnN1YkNvZGVPZkVsZW1lbnQgfHwgZWxlbWVudHNbZWxlbWVudHMubGVuZ3RoIC0gMV0uY29kZSkgPT09IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuVFlQRV9FTEVNRU5UX0VYSVRcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBpZiAoIWVsZW1lbnQuYnJhbmNoZXM/Lmxlbmd0aCkgcmV0dXJuO1xuICAgICAgbGV0IGJyYW5jaENvbm5lY3RUb0V4aXQgPSAwO1xuXG4gICAgICBlbGVtZW50LmJyYW5jaGVzLmZvckVhY2goKGJyYW5jaCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jaGVja0NoaWxkcmVuQ29ubmVjdFRvRXhpdChicmFuY2guZWxlbWVudHMpKSBicmFuY2hDb25uZWN0VG9FeGl0Kys7XG4gICAgICB9KTtcbiAgICAgIGlmIChicmFuY2hDb25uZWN0VG9FeGl0ID09PSBlbGVtZW50LmJyYW5jaGVzLmxlbmd0aCkgdG9FeGl0ID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0b0V4aXQ7XG4gIH1cblxuICAvKipcbiAgICogUXV5IMaw4bubYzpcbiAgICogICBhYm92ZSArIG9wcG9zaXRlPXRydWUg4oaSIGEgLSBiICAoxJFpIGzDqm4sIHkgZ2nhuqNtKVxuICAgKiAgIGFib3ZlICsgb3Bwb3NpdGU9ZmFsc2Ug4oaSIGEgKyBiXG4gICAqICAgdW5kZXIgKyBvcHBvc2l0ZT10cnVlIOKGkiBhICsgYiAgKMSRaSB4deG7kW5nLCB5IHTEg25nKVxuICAgKiAgIHVuZGVyICsgb3Bwb3NpdGU9ZmFsc2Ug4oaSIGEgLSBiXG4gICAqL1xuICBzdGF0aWMgbWF0aE9wKGRpcmVjdGlvbjogJ2Fib3ZlJyB8ICd1bmRlcicgfCBzdHJpbmcsIGE6IG51bWJlciB8IHVuZGVmaW5lZCwgYjogbnVtYmVyIHwgdW5kZWZpbmVkLCBvcHBvc2l0ZT86IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIGNvbnN0IGF2ID0gYSA/PyAwO1xuICAgIGNvbnN0IGJ2ID0gYiA/PyAwO1xuXG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2Fib3ZlJzpcbiAgICAgICAgcmV0dXJuIG9wcG9zaXRlID8gYXYgLSBidiA6IGF2ICsgYnY7XG4gICAgICBjYXNlICd1bmRlcic6XG4gICAgICAgIHJldHVybiBvcHBvc2l0ZSA/IGF2ICsgYnYgOiBhdiAtIGJ2O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGF2IC0gYnY7XG4gICAgfVxuICB9XG5cbiAgLyoqIEFsaWFzIMSR4buDIHTGsMahbmcgdGjDrWNoIHbhu5tpIGNvZGUgY8WpIGfhu41pIG1hdGhPcGVyYXRvcnNDYWxjdWxhdGlvbiAqL1xuICBzdGF0aWMgbWF0aE9wZXJhdG9yc0NhbGN1bGF0aW9uKGRpcmVjdGlvbjogJ2Fib3ZlJyB8ICd1bmRlcicgfCBzdHJpbmcsIGE6IG51bWJlciB8IHVuZGVmaW5lZCwgYjogbnVtYmVyIHwgdW5kZWZpbmVkLCBvcHBvc2l0ZT86IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1hdGhPcChkaXJlY3Rpb24sIGEsIGIsIG9wcG9zaXRlKTtcbiAgfVxufVxuIl19
|