qms-angular 1.1.40 → 1.1.41

Sign up to get free protection for your applications and to get access to all the features.
Files changed (23) hide show
  1. package/bundles/qms-angular.umd.js +162 -58
  2. package/bundles/qms-angular.umd.js.map +1 -1
  3. package/esm2015/lib/common/models/qms-flat-node.model.js +1 -1
  4. package/esm2015/lib/common/models/qms-tree-node.model.js +1 -1
  5. package/esm2015/lib/components/select-access-dialog/model/select-access-config.model.js +5 -1
  6. package/esm2015/lib/components/select-access-dialog/select-access-dialog.component.js +56 -11
  7. package/esm2015/lib/components/select-department/model/select-department-popup-data.model.js +2 -1
  8. package/esm2015/lib/components/select-department/select-department.component.js +3 -3
  9. package/esm2015/lib/components/select-department-tree/select-department-tree.component.js +82 -41
  10. package/esm2015/lib/components/select-department-tree/service/select-department-tree-global.service.js +7 -1
  11. package/esm2015/lib/components/treeNew/tree.component.js +1 -3
  12. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +2 -2
  13. package/fesm2015/qms-angular.js +149 -54
  14. package/fesm2015/qms-angular.js.map +1 -1
  15. package/lib/common/models/qms-flat-node.model.d.ts +4 -0
  16. package/lib/common/models/qms-tree-node.model.d.ts +8 -0
  17. package/lib/components/select-access-dialog/model/select-access-config.model.d.ts +4 -0
  18. package/lib/components/select-access-dialog/select-access-dialog.component.d.ts +2 -0
  19. package/lib/components/select-department/model/select-department-popup-data.model.d.ts +1 -0
  20. package/lib/components/select-department-tree/select-department-tree.component.d.ts +4 -0
  21. package/package.json +1 -1
  22. package/src/lib/components/select-department/select-department.component.scss +1 -0
  23. package/src/lib/components/select-department-tree/select-department-tree.component.scss +23 -0
@@ -2,10 +2,16 @@ import { Injectable } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
3
  export class QMSSelectDepartmentTreeGlobalService {
4
4
  convertToTreeData(data) {
5
+ var _a;
5
6
  const roots = [];
6
7
  const mapNode = new Map();
7
8
  const nestedNodes = [];
8
9
  for (let i = 0; i < data.length; i++) {
10
+ if (!((_a = data[i]) === null || _a === void 0 ? void 0 : _a.expandIcon))
11
+ data[i].expandIcon = {
12
+ expand: "chevron_right",
13
+ collapse: "expand_more"
14
+ };
9
15
  data[i].markedGetChildren = false;
10
16
  nestedNodes.push(Object.assign(Object.assign({}, data[i]), { children: [] }));
11
17
  mapNode.set(nestedNodes[i].id, i);
@@ -50,4 +56,4 @@ QMSSelectDepartmentTreeGlobalService.decorators = [
50
56
  providedIn: 'root'
51
57
  },] }
52
58
  ];
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWRlcGFydG1lbnQtdHJlZS1nbG9iYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QtZGVwYXJ0bWVudC10cmVlL3NlcnZpY2Uvc2VsZWN0LWRlcGFydG1lbnQtdHJlZS1nbG9iYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVEzQyxNQUFNLE9BQU8sb0NBQW9DO0lBQy9DLGlCQUFpQixDQUFDLElBQXVCO1FBQ3ZDLE1BQU0sS0FBSyxHQUFrQixFQUFFLENBQUM7UUFDaEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFDMUMsTUFBTSxXQUFXLEdBQWtCLEVBQUUsQ0FBQztRQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQ2xDLFdBQVcsQ0FBQyxJQUFJLGlDQUNYLElBQUksQ0FBQyxDQUFDLENBQUMsS0FDVixRQUFRLEVBQUUsRUFBRSxJQUNaLENBQUM7WUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDbkM7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQyxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxXQUFXLEVBQUU7b0JBQ2YsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hDLFdBQVcsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7b0JBQzlELFNBQVM7aUJBQ1Y7Z0JBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakIsU0FBUzthQUNWO1lBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQWlCO1FBQ3BDLE1BQU0sV0FBVyxHQUFrQixFQUFFLENBQUM7UUFDdEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFpQixFQUFFLEVBQUU7O1lBQ3RDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztZQUMxQixJQUFJLENBQUMsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsTUFBTSxDQUFBLEVBQUU7Z0JBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUN4QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7aUJBQ3BCO2FBQ0Y7UUFDSCxDQUFDLENBQUE7UUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0NBQWtDO0lBQ2pFLENBQUM7Ozs7WUFoREYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFFNU0ZsYXROb2RlVHJlZSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1mbGF0LW5vZGUubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TVHJlZU5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL21vZGVscy9xbXMtdHJlZS1ub2RlLm1vZGVsXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNTZWxlY3REZXBhcnRtZW50VHJlZUdsb2JhbFNlcnZpY2Uge1xyXG4gIGNvbnZlcnRUb1RyZWVEYXRhKGRhdGE6IFFNU0ZsYXROb2RlVHJlZVtdKSB7XHJcbiAgICBjb25zdCByb290czogUU1TVHJlZU5vZGVbXSA9IFtdO1xyXG4gICAgY29uc3QgbWFwTm9kZSA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XHJcbiAgICBjb25zdCBuZXN0ZWROb2RlczogUU1TVHJlZU5vZGVbXSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGRhdGFbaV0ubWFya2VkR2V0Q2hpbGRyZW4gPSBmYWxzZTtcclxuICAgICAgbmVzdGVkTm9kZXMucHVzaCh7XHJcbiAgICAgICAgLi4uZGF0YVtpXSxcclxuICAgICAgICBjaGlsZHJlbjogW11cclxuICAgICAgfSk7XHJcbiAgICAgIG1hcE5vZGUuc2V0KG5lc3RlZE5vZGVzW2ldLmlkLCBpKTtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmVzdGVkTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qgbm9kZSA9IG5lc3RlZE5vZGVzW2ldO1xyXG4gICAgICBpZiAobm9kZS5wYXJlbnRJZCkge1xyXG4gICAgICAgIGNvbnN0IGV4aXN0UGFyZW50ID0gbmVzdGVkTm9kZXNbbWFwTm9kZS5nZXQobm9kZS5wYXJlbnRJZCldO1xyXG4gICAgICAgIGlmIChleGlzdFBhcmVudCkge1xyXG4gICAgICAgICAgZXhpc3RQYXJlbnQuY2hpbGRyZW4ucHVzaChub2RlKTtcclxuICAgICAgICAgIGV4aXN0UGFyZW50Lm1hcmtlZEdldENoaWxkcmVuID0gISFleGlzdFBhcmVudC5jaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcm9vdHMucHVzaChub2RlKTtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICByb290cy5wdXNoKG5vZGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJvb3RzO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGVzY2VuZGFudHNPZk5vZGUocm9vdDogUU1TVHJlZU5vZGUpIHtcclxuICAgIGNvbnN0IGRlc2NlbmRhbnRzOiBRTVNUcmVlTm9kZVtdID0gW107XHJcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSAobm9kZTogUU1TVHJlZU5vZGUpID0+IHtcclxuICAgICAgZGVzY2VuZGFudHMucHVzaChub2RlKTtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gbm9kZTtcclxuICAgICAgaWYgKCEhbm9kZS5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgY29uc3QgaXRlbSA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgdHJhbnNmb3JtKGl0ZW0pO1xyXG4gICAgICAgICAgaXRlbS5jaGlsZHJlbiA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdHJhbnNmb3JtKHJvb3QpO1xyXG4gICAgcmV0dXJuIGRlc2NlbmRhbnRzLnNsaWNlKDEpOyAvLyByZW1vdmUgdGhlIHJvb3Qgbm9kZSBmcm9tIGFycmF5XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWRlcGFydG1lbnQtdHJlZS1nbG9iYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QtZGVwYXJ0bWVudC10cmVlL3NlcnZpY2Uvc2VsZWN0LWRlcGFydG1lbnQtdHJlZS1nbG9iYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVEzQyxNQUFNLE9BQU8sb0NBQW9DO0lBQy9DLGlCQUFpQixDQUFDLElBQXVCOztRQUN2QyxNQUFNLEtBQUssR0FBa0IsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQzFDLE1BQU0sV0FBVyxHQUFrQixFQUFFLENBQUM7UUFDdEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEMsSUFBRyxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLDBDQUFFLFVBQVUsQ0FBQTtnQkFDckIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRztvQkFDbkIsTUFBTSxFQUFFLGVBQWU7b0JBQ3ZCLFFBQVEsRUFBRSxhQUFhO2lCQUN4QixDQUFDO1lBQ0osSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUNsQyxXQUFXLENBQUMsSUFBSSxpQ0FDWCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQ1YsUUFBUSxFQUFFLEVBQUUsSUFDWixDQUFDO1lBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ25DO1FBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0MsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELElBQUksV0FBVyxFQUFFO29CQUNmLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNoQyxXQUFXLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO29CQUM5RCxTQUFTO2lCQUNWO2dCQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pCLFNBQVM7YUFDVjtZQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEI7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUFpQjtRQUNwQyxNQUFNLFdBQVcsR0FBa0IsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBaUIsRUFBRSxFQUFFOztZQUN0QyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLE1BQU0sQ0FBQSxFQUFFO2dCQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDeEMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6QixTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO2lCQUNwQjthQUNGO1FBQ0gsQ0FBQyxDQUFBO1FBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztJQUNqRSxDQUFDOzs7O1lBckRGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBRTVNGbGF0Tm9kZVRyZWUgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL21vZGVscy9xbXMtZmxhdC1ub2RlLm1vZGVsXCI7XHJcbmltcG9ydCB7IFFNU1RyZWVOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLXRyZWUtbm9kZS5tb2RlbFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TU2VsZWN0RGVwYXJ0bWVudFRyZWVHbG9iYWxTZXJ2aWNlIHtcclxuICBjb252ZXJ0VG9UcmVlRGF0YShkYXRhOiBRTVNGbGF0Tm9kZVRyZWVbXSkge1xyXG4gICAgY29uc3Qgcm9vdHM6IFFNU1RyZWVOb2RlW10gPSBbXTtcclxuICAgIGNvbnN0IG1hcE5vZGUgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xyXG4gICAgY29uc3QgbmVzdGVkTm9kZXM6IFFNU1RyZWVOb2RlW10gPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZighZGF0YVtpXT8uZXhwYW5kSWNvbilcclxuICAgICAgICBkYXRhW2ldLmV4cGFuZEljb24gPSB7XHJcbiAgICAgICAgICBleHBhbmQ6IFwiY2hldnJvbl9yaWdodFwiLFxyXG4gICAgICAgICAgY29sbGFwc2U6IFwiZXhwYW5kX21vcmVcIlxyXG4gICAgICAgIH07XHJcbiAgICAgIGRhdGFbaV0ubWFya2VkR2V0Q2hpbGRyZW4gPSBmYWxzZTtcclxuICAgICAgbmVzdGVkTm9kZXMucHVzaCh7XHJcbiAgICAgICAgLi4uZGF0YVtpXSxcclxuICAgICAgICBjaGlsZHJlbjogW11cclxuICAgICAgfSk7XHJcbiAgICAgIG1hcE5vZGUuc2V0KG5lc3RlZE5vZGVzW2ldLmlkLCBpKTtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmVzdGVkTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qgbm9kZSA9IG5lc3RlZE5vZGVzW2ldO1xyXG4gICAgICBpZiAobm9kZS5wYXJlbnRJZCkge1xyXG4gICAgICAgIGNvbnN0IGV4aXN0UGFyZW50ID0gbmVzdGVkTm9kZXNbbWFwTm9kZS5nZXQobm9kZS5wYXJlbnRJZCldO1xyXG4gICAgICAgIGlmIChleGlzdFBhcmVudCkge1xyXG4gICAgICAgICAgZXhpc3RQYXJlbnQuY2hpbGRyZW4ucHVzaChub2RlKTtcclxuICAgICAgICAgIGV4aXN0UGFyZW50Lm1hcmtlZEdldENoaWxkcmVuID0gISFleGlzdFBhcmVudC5jaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcm9vdHMucHVzaChub2RlKTtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICByb290cy5wdXNoKG5vZGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJvb3RzO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGVzY2VuZGFudHNPZk5vZGUocm9vdDogUU1TVHJlZU5vZGUpIHtcclxuICAgIGNvbnN0IGRlc2NlbmRhbnRzOiBRTVNUcmVlTm9kZVtdID0gW107XHJcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSAobm9kZTogUU1TVHJlZU5vZGUpID0+IHtcclxuICAgICAgZGVzY2VuZGFudHMucHVzaChub2RlKTtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gbm9kZTtcclxuICAgICAgaWYgKCEhbm9kZS5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgY29uc3QgaXRlbSA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgdHJhbnNmb3JtKGl0ZW0pO1xyXG4gICAgICAgICAgaXRlbS5jaGlsZHJlbiA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdHJhbnNmb3JtKHJvb3QpO1xyXG4gICAgcmV0dXJuIGRlc2NlbmRhbnRzLnNsaWNlKDEpOyAvLyByZW1vdmUgdGhlIHJvb3Qgbm9kZSBmcm9tIGFycmF5XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -572,8 +572,6 @@ export class NewTreeComponent {
572
572
  return itemType;
573
573
  }
574
574
  selectFolder(node) {
575
- if (!this.treeConfig.allowSelectFolder)
576
- return;
577
575
  if (this.treeConfig.selectOne) {
578
576
  this.onExpandNode(node, this.treeControl.isExpanded(node));
579
577
  }
@@ -825,4 +823,4 @@ NewTreeComponent.propDecorators = {
825
823
  getChildNodeSelectOne: [{ type: Output }],
826
824
  treeControlNodes: [{ type: Output }]
827
825
  };
828
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvdHJlZU5ldy90cmVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvSSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBdUJuRixNQUFNLE9BQU8sZ0JBQWdCO0lBMEQzQixZQUFvQixLQUF3QixFQUNsQyxZQUEwQixFQUMxQixZQUE2QixFQUM3QixjQUFzQztRQUg1QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFDN0IsbUJBQWMsR0FBZCxjQUFjLENBQXdCO1FBNUR2QyxhQUFRLEdBQXdCLEVBQUUsQ0FBQztRQUVuQyxpQkFBWSxHQUF3QixFQUFFLENBQUM7UUFDdkMscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBQzNCLGlCQUFZLEdBQVEsRUFBRSxDQUFDO1FBRXZCLHNCQUFpQixHQUFRLEVBQUUsQ0FBQztRQUUzQixvQkFBZSxHQUErQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pFLHNCQUFpQixHQUErQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25FLGtCQUFhLEdBQWlDLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakUsc0JBQWlCLEdBQStCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkUsb0JBQWUsR0FBK0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRSwwQkFBcUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5RCxxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVuRSxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixlQUFVLEdBQW1CLEVBQUUsQ0FBQztRQUVoQyxhQUFRLEdBQWEsRUFBRSxDQUFDO1FBQ3hCLG9CQUFlLEdBQXdCLEVBQUUsQ0FBQztRQUMxQyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLHlCQUFvQixHQUFHLEVBQUUsQ0FBQztRQUMxQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQix1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDMUIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsWUFBWSxDQUFDO1FBQzVCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxrQkFBYSxHQUFHLFNBQVMsQ0FBQztRQUMxQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsbUJBQWMsR0FBRyxTQUFTLENBQUM7UUFDM0IsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBR3BCLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQy9CLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQyxFQUNELENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekIsQ0FBQyxDQUNGLENBQUM7UUFFRixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGFBQVEsR0FBRyxRQUFRLENBQUM7UUFxV1osZ0JBQVcsR0FBRyxDQUFDLElBQWMsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUN0RCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLGFBQWEsR0FBRyxLQUFLLENBQUM7YUFDdkI7aUJBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUMxQixhQUFhLEdBQUcsS0FBSyxDQUFDO2FBQ3ZCO1lBQ0QsMkNBQTJDO2lCQUN0QyxJQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07Z0JBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQzFCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUN0QixJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsRUFDaEQ7Z0JBQ0EsYUFBYSxHQUFHLEtBQUssQ0FBQzthQUN2QjtZQUVELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN4QyxhQUFhLEdBQUcsS0FBSyxDQUFDO2FBQ3ZCO1lBRUQsT0FBTztnQkFDTCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzNCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixLQUFLO2dCQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDWCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixRQUFRLEVBQUUsS0FBSztnQkFDZixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7YUFDMUIsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUVGLGtCQUFhLEdBQUcsSUFBSSxnQkFBZ0IsQ0FDbEMsSUFBSSxDQUFDLFdBQVcsRUFDaEIsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNQLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDLEVBQ0QsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6QixDQUFDLEVBQ0QsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN2QixDQUFDLENBQ0YsQ0FBQztRQUVGLGVBQVUsR0FBRyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBc0o3RSxhQUFRLEdBQUcsQ0FBQyxDQUFTLEVBQUUsSUFBa0IsRUFBRSxFQUFFO1lBQzNDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6QixDQUFDLENBQUM7UUFyaUJBLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLHVCQUF1QixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUN0RyxZQUFZLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7UUFDMUcsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMvRCxjQUFjLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ25FLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDaEUsY0FBYyxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM5RCxjQUFjLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDakUsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3hILElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUN2QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDbkUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDMUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUM5RCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN2RDtpQkFDRjthQUNGO1lBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO1FBRUQsSUFBSSxPQUFPLENBQUMsWUFBWTtZQUN0QixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO29CQUNqRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRTtZQUN2RCxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFO2dCQUNyQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFO29CQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztpQkFDdkI7Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3ZEO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUMxRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2pFO2FBQ0Y7U0FFRjtRQUVELElBQUksT0FBTyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3BJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO1FBRUQsaUNBQWlDO1FBQ2pDLElBQUksT0FBTyxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ25KLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1NBQzlCO0lBRUgsQ0FBQztJQUVELFFBQVE7UUFDTix1QkFBdUI7SUFDekIsQ0FBQztJQUdELFlBQVk7O1FBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN2QztZQUNELElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN2QztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRWhDLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDMUYsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4QyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ2YsT0FBTyxpQkFBUSxFQUFFLEVBQUssSUFBSSxDQUFFLENBQUM7WUFDN0IsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsWUFBWSxDQUFBLENBQUM7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsaUJBQWlCLENBQUM7UUFDNUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsb0JBQW9CLENBQUM7UUFDbEUsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLFlBQVksQ0FBQztRQUNsRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxvQkFBb0IsQ0FBQztRQUNsRSxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsUUFBUSxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxRQUFRLENBQUM7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFBLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsYUFBYSxFQUFDLENBQUMsQ0FBQyxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUMxRyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsU0FBUyxDQUFDO1FBQzVDLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQSxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLGNBQWMsRUFBQyxDQUFDLENBQUMsTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDOUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLFFBQVEsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsV0FBVyxDQUFDO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxZQUFZLENBQUM7UUFDbEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLDhCQUE4QixDQUFDLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsY0FBYyxDQUFXLENBQUM7UUFDbEgsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsa0JBQWtCLENBQUM7UUFDOUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsa0JBQWtCLENBQUM7UUFDOUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLFVBQVUsQ0FBQztRQUM5QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQWUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxvQkFBb0I7UUFFekcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV6RCx5QkFBeUI7UUFDekIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTtZQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQzlCO1FBRUQsZUFBZTtRQUNmLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsWUFBWTtRQUNaLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtZQUNoQyxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDeEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDMUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDaEMsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUMvRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7d0JBQzlELFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDbEQ7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUVELElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDdkM7UUFFRCxjQUFjO1FBQ2QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLEVBQUU7WUFFeEUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ2xDLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFO2dCQUN0QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUMxRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDM0MsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxFQUFFO3dCQUMxRCxVQUFVLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQzt3QkFDbkMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzVCLE1BQU07cUJBQ1A7aUJBQ0Y7YUFDRjtZQUNELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzFHLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtvQkFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUM1RDtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQWtCO1FBQzFCLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDN0IsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoRCxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUU7WUFDcEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV0RCxLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9CLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFN0MsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFlBQVksRUFBRTtnQkFDcEQsT0FBTyxXQUFXLENBQUM7YUFDcEI7U0FDRjtJQUNILENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzNCLE9BQU87YUFDUjtZQUVELElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlGLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNwQix1Q0FBdUM7WUFDdkMsSUFBSSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZGLGdDQUFnQztZQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFcEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDMUQsSUFBSSxlQUFlLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUN4RCxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO29CQUNwRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMxRDtnQkFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUNsQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUU7d0JBQ3pELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3hEO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsZUFBZTtRQUNmLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUNoRDtRQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDNUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7O29CQUM1QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRTsyQkFDcEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsTUFBSyxNQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUEsQ0FBQyxFQUFFO3dCQUN4RyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO3FCQUMvQztnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO1NBQ0Y7UUFFRCwrQkFBK0I7UUFDL0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTtZQUN6RCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BGLElBQUksQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFDO1lBQ25DLHVDQUF1QztZQUN2QyxJQUFJLHNCQUFzQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkYsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLGdDQUFnQztZQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFcEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDMUQsSUFBSSxlQUFlLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUN4RCxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO29CQUNwRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMxRDtnQkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtvQkFDN0IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFO3dCQUN6RCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN4RDtnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCw2REFBNkQ7Z0JBQzdELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFOztvQkFDOUIsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUEsTUFBQSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsMENBQUUsRUFBRSxNQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQ3pDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDekU7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsR0FBRztRQUNWLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO2dCQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0IsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMxQztTQUNGO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFHO1FBQ2QsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFO1lBQ2hCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNmLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdkQsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0QsbUVBQW1FO1lBQ25FLG1DQUFtQztZQUNuQywyQkFBMkI7WUFDM0IsdUJBQXVCO1lBQ3ZCLElBQUk7WUFDSixhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUM5QixJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7WUFFSCxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN6QixJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7Z0JBQ2pCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7WUFDSCxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUN0QjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQVcsQ0FBQztJQUNwRyxDQUFDO0lBRUQsYUFBYSxDQUFDLFlBQTRCO1FBQ3hDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7Z0JBQUUsT0FBTztZQUMzQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMxRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQzVDLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDaEMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLENBQUMsRUFBRTt3QkFDdkssSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDckMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTs0QkFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7eUJBQ3BFO3FCQUNGO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFVixDQUFDO0lBRUQscUJBQXFCLENBQUMsWUFBNEIsRUFBRSxJQUFhO1FBQy9ELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVDLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLEVBQUU7dUJBQ25DLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ3pELElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDdEY7YUFDRjtTQUNGO0lBRUgsQ0FBQztJQUVPLGVBQWUsQ0FBQyxVQUFzQjtRQUM1QyxJQUFJLFVBQVUsQ0FBQyxRQUFRLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztRQUNyRixJQUFJLFVBQVUsQ0FBQyxZQUFZLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztRQUM3RixJQUFJLFVBQVUsQ0FBQyxjQUFjLElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUNuRyxJQUFJLFVBQVUsQ0FBQyxXQUFXLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztRQUMxRixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFtREQsMkRBQTJEO0lBQzNELHNCQUFzQixDQUFDLElBQWtCO1FBQ3ZDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXpILElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqRDtRQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUQsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsUUFBUSxJQUFJLFdBQVcsRUFBRTtZQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDM0I7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUVyQixDQUFDO0lBRUQsbURBQW1EO0lBQ25ELDRCQUE0QixDQUFDLElBQWtCO1FBQzdDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pILE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEYsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELGdGQUFnRjtJQUN6RSx1QkFBdUIsQ0FBQyxJQUFrQjtRQUMvQyxRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDckIsS0FBSyxRQUFRLENBQUMsUUFBUTtnQkFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO2dCQUN0RSxNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsT0FBTztnQkFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO2dCQUNuRSxNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsU0FBUztnQkFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7Z0JBQ2xGLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxTQUFTO2dCQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7Z0JBQzlFLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxJQUFJO2dCQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RFLE1BQU07U0FDVDtRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLDJCQUEyQjtRQUMzQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFO1lBQ2hDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzFELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFO3VCQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVE7dUJBQ3hELENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO29CQUM1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQy9EO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QztRQUdELG9DQUFvQztRQUNwQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7U0FFM0Q7YUFBTTtZQUNMLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXpGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFM0UsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDO2dCQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQztnQkFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztZQUVyRCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRTFCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzFGLElBQUksZUFBZSxFQUFFO2dCQUNuQixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDakQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDNUMsQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzRDtJQUNILENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxJQUFrQjtRQUN6QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzFELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFO21CQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVE7bUJBQ3hELENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO2dCQUM1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0Q7U0FDRjtRQUNELHdDQUF3QztRQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0saUJBQWlCLENBQUMsS0FBaUI7UUFDeEMsS0FBSyxDQUFDLE9BQU8sQ0FDWCxJQUFJLENBQUMsRUFBRTtZQUNMLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzFELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFO29CQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVE7b0JBQ3hELENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFO29CQUN0RixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDcEUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNqRTthQUNGO1FBQ0gsQ0FBQyxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGdDQUFnQyxDQUFDLEtBQWlCO1FBQ2hELEtBQUssQ0FBQyxPQUFPLENBQ1gsSUFBSSxDQUFDLEVBQUU7WUFDTCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMxRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRTtvQkFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRO29CQUN4RCxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRTtvQkFDdEYsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3BFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDakU7YUFDRjtRQUNILENBQUMsQ0FDRixDQUFDO1FBQ0YsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRU0sbUJBQW1CLENBQUMsS0FBaUI7UUFDMUMsS0FBSyxDQUFDLE9BQU8sQ0FDWCxJQUFJLENBQUMsRUFBRTtZQUNMLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzFELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFO29CQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVE7b0JBQ3hELENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRTtvQkFDckYsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3BFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMvRDthQUNGO1FBQ0gsQ0FBQyxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQU1ELFVBQVUsQ0FBQyxJQUFrQjtRQUMzQixJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsd0JBQXdCLENBQUMsRUFBRTtZQUNqRCxNQUFNLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUMxRDtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsSUFBa0I7UUFDeEMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFbEIsUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3JCLEtBQUssUUFBUSxDQUFDLE9BQU87Z0JBQ25CLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO2dCQUM5RCxNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsUUFBUTtnQkFDcEIsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQ2pFLE1BQU07WUFFUjtnQkFDRSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDekIsTUFBTTtTQUNUO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFrQjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUI7WUFDcEMsT0FBTztRQUNULElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtTQUMzRDtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFrQixFQUFFLFlBQXNCO1FBQ3JELElBQUksWUFBWSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFO1lBQ2xFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLEVBQUU7WUFDakQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDMUQ7UUFDRCxxRUFBcUU7UUFDckUsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMzQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRSxFQUFFO29CQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQzVCO2FBQ0Y7WUFDRCxPQUFPO1NBQ1I7UUFFRCwwREFBMEQ7UUFDMUQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFNUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM1QyxPQUFPLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNqQixJQUFJLGFBQXVCLENBQUM7UUFDNUIsSUFBSSxZQUF3QixDQUFDO1FBQzdCLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDM0IsT0FBTztTQUNSO1FBQ0QsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNLEVBQUU7Z0JBQzVCLE9BQU87YUFDUjtZQUVELDBDQUEwQztZQUMxQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDckQsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFFdkIsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMxRixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDZCxPQUFPO2FBQ1I7WUFFRCxnQ0FBZ0M7WUFDaEMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xFLElBQUksYUFBYSxFQUFFO2dCQUNqQixpRkFBaUY7Z0JBQ2pGLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2IsWUFBWSxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ25DLFFBQVEsR0FBRyxJQUFJLENBQUM7aUJBQ2pCO2dCQUNELHdCQUF3QjtnQkFDeEIsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25DLFFBQVEsR0FBRyxJQUFJLENBQUM7YUFDakI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILGtDQUFrQztRQUNsQyxJQUFJLFFBQVEsRUFBRTtZQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQy9DO1FBRUQsbURBQW1EO1FBQ25ELElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQzdCLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM3RCxDQUFDLENBQUMsQ0FBQztZQUNILFFBQVEsR0FBRyxLQUFLLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLGFBQXdCO1FBQ3JDLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRTtZQUMxQixhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLGFBQXdCLEVBQUUsWUFBeUI7UUFDN0QsSUFBSSxZQUFZLEVBQUU7WUFDaEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN6QixhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxFQUFVLEVBQUUsS0FBYyxFQUFFLElBQVk7UUFDbkQsSUFBSSxLQUFLLEVBQUU7WUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDMUIsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDMUIsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYyxFQUFFLElBQVM7UUFDcEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBYyxDQUFDO1FBQ3ZGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNuQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFCLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDdkcsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxhQUFhLENBQUMsRUFBVSxFQUFFLElBQWdCO1FBQ3hDLGdEQUFnRDtRQUNoRCxLQUFLLE1BQU0sYUFBYSxJQUFJLElBQUksRUFBRTtZQUNoQyxJQUFJLGFBQWEsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUMzQixPQUFPLGFBQWEsQ0FBQzthQUN0QjtZQUVELElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRTtnQkFDMUIsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDckQsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDckIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxZQUFZLEVBQUU7b0JBQ2hCLE9BQU8sWUFBWSxDQUFDO2lCQUNyQjtnQkFFRCxnREFBZ0Q7Z0JBQ2hELEtBQUssTUFBTSxhQUFhLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRTtvQkFDbEQsSUFBSSxFQUFFLEtBQUssYUFBYSxDQUFDLEVBQUUsRUFBRTt3QkFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUM5RCxJQUFJLE1BQU0sS0FBSyxLQUFLLEVBQUU7NEJBQ3BCLE9BQU8sTUFBTSxDQUFDO3lCQUNmO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBRTlCLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBa0I7UUFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUMzRTtRQUNELFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNyQixLQUFLLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2RSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUN2QixRQUFRLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUU7d0JBQzdCLEtBQUssZ0JBQWdCLENBQUMsZ0JBQWdCOzRCQUNwQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUM7d0JBQ2hHLEtBQUssZ0JBQWdCLENBQUMsY0FBYzs0QkFDbEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO3dCQUM1RixLQUFLLGdCQUFnQixDQUFDLFNBQVM7NEJBQzdCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQzt3QkFDaEcsS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNOzRCQUMxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO3dCQUN0Rjs0QkFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO3FCQUMzRTtpQkFDRjtnQkFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO2FBQ3pFO1lBQ0QsS0FBSyxRQUFRLENBQUMsT0FBTztnQkFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztZQUN0RjtnQkFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztTQUM5RTtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsSUFBSTtRQUNkLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNyQixLQUFLLFFBQVEsQ0FBQyxRQUFRO2dCQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdFLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3JCLFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRTt3QkFDM0IsS0FBSyxnQkFBZ0IsQ0FBQyxnQkFBZ0I7NEJBQ3BDLE9BQU8scUJBQXFCLENBQUM7d0JBQy9CLEtBQUssZ0JBQWdCLENBQUMsY0FBYzs0QkFDbEMsT0FBTyxtQkFBbUIsQ0FBQzt3QkFDN0IsS0FBSyxnQkFBZ0IsQ0FBQyxTQUFTOzRCQUM3QixPQUFPLHFCQUFxQixDQUFDO3dCQUMvQixLQUFLLGdCQUFnQixDQUFDLE1BQU07NEJBQzFCLE9BQU8sZ0JBQWdCLENBQUM7d0JBQzFCOzRCQUNFLE9BQU8sVUFBVSxDQUFDO3FCQUNyQjtpQkFDRjtnQkFDRCxPQUFPLFVBQVUsQ0FBQztZQUNwQixLQUFLLFFBQVEsQ0FBQyxPQUFPO2dCQUNuQixPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFFBQVEsQ0FBQyxTQUFTO2dCQUNyQixPQUFPLFdBQVcsQ0FBQztZQUNyQixLQUFLLFFBQVEsQ0FBQyxTQUFTO2dCQUNyQixPQUFPLFdBQVcsQ0FBQztZQUNyQixLQUFLLFFBQVEsQ0FBQyxJQUFJO2dCQUNoQixPQUFPLE1BQU0sQ0FBQztZQUNoQjtnQkFDRSxPQUFPLFVBQVUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsSUFBa0I7UUFDMUIsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzRSxDQUFDO0lBRU0sc0JBQXNCLENBQUMsTUFBYyxFQUFFLFFBQWdCO1FBQzVELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxNQUFNLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVSxDQUFDLElBQWtCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsUUFBUTtRQUM3QixPQUFPLEdBQUcsRUFBRSxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7OztZQS8zQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxjQUFjO2dCQUN4QixnbEtBQW9DO2dCQUVwQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7OztZQWpDUSxpQkFBaUI7WUFHakIsWUFBWTtZQUZaLGVBQWU7WUFHZixzQkFBc0I7Ozt1QkErQjVCLEtBQUs7eUJBQ0wsS0FBSzsyQkFDTCxLQUFLOytCQUNMLEtBQUs7MkJBQ0wsS0FBSztpQ0FDTCxLQUFLO2dDQUNMLEtBQUs7Z0NBQ0wsS0FBSzs4QkFDTCxNQUFNO2dDQUNOLE1BQU07NEJBQ04sTUFBTTtnQ0FDTixNQUFNOzhCQUNOLE1BQU07b0NBQ04sTUFBTTsrQkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xyXG5pbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRUcmVlRmxhdERhdGFTb3VyY2UsIE1hdFRyZWVGbGF0dGVuZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFFNU0ljb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuLi9hcHAtaWNvbi9pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJy4uL3JlbGF0ZWQvY29tbW9uL2RhdGEtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgRG9jdW1lbnROb2RlVHlwZSB9IGZyb20gJy4uL3JlbGF0ZWQvY29tbW9uL2RvY3VtZW50LWZvbGRlci10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBJdGVtSWNvblR5cGUgfSBmcm9tICcuLi9yZWxhdGVkL2NvbW1vbi9pdGVtLWljb24tdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgUmVsYXRlZENvbnN0IH0gZnJvbSAnLi4vcmVsYXRlZC9jb21tb24vcmVsYXRlZC5jb25zdCc7XHJcbmltcG9ydCBUcmVlRnVuY3Rpb25zIGZyb20gJy4vdHJlZS5mdW5jdGlvbic7XHJcbmltcG9ydCB7IE5ld1RyZWVNb2RlbCB9IGZyb20gJy4vbW9kZWwvdHJlZS5tb2RlbCc7XHJcbmltcG9ydCB7IEtFWUJPQVJEX0RPV05fSUNPTiwgS0VZQk9BUkRfVVBfSUNPTiB9IGZyb20gJy4uLy4uL2NvbW1vbi9xbXMtaWNvbi5jb25zdCc7XHJcbmltcG9ydCB7IFRyZWVGbGF0Tm9kZSB9IGZyb20gJy4uL3RyZWUvbW9kZWwvdHJlZS1mbGF0LW5vZGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUcmVlQ29uZmlnIH0gZnJvbSAnLi4vdHJlZS9tb2RlbC90cmVlLWNvbmZpZy5tb2RlbCc7XHJcblxyXG5pbnRlcmZhY2UgVHJlZU5vZGUge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGNoaWxkcmVuPzogVHJlZU5vZGVbXTtcclxuICBwYXJlbnRJZD86IHN0cmluZztcclxuICBsZXZlbFR5cGU/OiBudW1iZXI7XHJcbiAgZXhwYW5kYWJsZTogYm9vbGVhbjtcclxufVxyXG5pbnRlcmZhY2UgSUNoZWNrZWROb2RlIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIGNoZWNrZWQ6IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncW1zLXRyZWUtbmV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJlZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZXdUcmVlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHRyZWVEYXRhOiBBcnJheTxOZXdUcmVlTW9kZWw+ID0gW107XHJcbiAgQElucHV0KCkgdHJlZUNvbmZpZzogVHJlZUNvbmZpZztcclxuICBASW5wdXQoKSBzZWxlY3RlZERhdGE6IEFycmF5PFRyZWVGbGF0Tm9kZT4gPSBbXTtcclxuICBASW5wdXQoKSBzZWxlY3RlZFJpc2tEYXRhOiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBkaXNhYmxlZExpc3Q6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIGV4cGFuZE9uVGl0bGVDbGljazogYm9vbGVhbjtcclxuICBASW5wdXQoKSBleHBhbmRUb0NoaWxkTm9kZTogYW55ID0gW107XHJcbiAgQElucHV0KCkgcGFyZW50Tm9kZU9uQ2xpY2s6IFRyZWVGbGF0Tm9kZTtcclxuICBAT3V0cHV0KCkgc2VsZWN0Tm9kZUV2ZW50OiBFdmVudEVtaXR0ZXI8VHJlZUZsYXROb2RlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0Rm9sZGVyRXZlbnQ6IEV2ZW50RW1pdHRlcjxUcmVlRmxhdE5vZGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjaGVja0JveEV2ZW50OiBFdmVudEVtaXR0ZXI8VHJlZUZsYXROb2RlW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjaGlsZENoZWNrZWRFdmVudDogRXZlbnRFbWl0dGVyPElDaGVja2VkTm9kZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG5vZGVFeHBhbmRFdmVudDogRXZlbnRFbWl0dGVyPFRyZWVGbGF0Tm9kZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGdldENoaWxkTm9kZVNlbGVjdE9uZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHRyZWVDb250cm9sTm9kZXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBsaXN0UGFyZW50T2JqID0ge307XHJcbiAgZmlsdGVyRGF0YTogTmV3VHJlZU1vZGVsW10gPSBbXTtcclxuICB0cmVlT2JqZWN0OiBvYmplY3Q7XHJcbiAgYXJySW5kZXg6IHN0cmluZ1tdID0gW107XHJcbiAgY2hlY2tlZE5vZGVMaXN0OiBBcnJheTxUcmVlRmxhdE5vZGU+ID0gW107XHJcbiAgdXNlRXhwYW5kRmVhdHVyZSA9IHRydWU7XHJcbiAgYWxsb3dTZWxlY3RGb2xkZXIgPSBmYWxzZTtcclxuICBhcmVhT2ZDdXJyZW50UHJvY2VzcyA9ICcnO1xyXG4gIHNob3dDaGVja0JveCA9IGZhbHNlO1xyXG4gIGFsbG93TXVsdGlwbGVDaGVjayA9IHRydWU7XHJcbiAgc2luZ2xlU2VsZWN0ZWROb2RlID0gZmFsc2U7XHJcbiAgb25seUNoZWNrQm94Rm9yQ2hpbGQgPSBmYWxzZTtcclxuICBvbmx5Rm9sZGVyID0gZmFsc2U7XHJcbiAgaXRlbUljb25UeXBlID0gSXRlbUljb25UeXBlO1xyXG4gIGRpc3BsYXlUeXBlID0gMTtcclxuICBvcGVuSWNvbiA9ICcnO1xyXG4gIG9wZW5JY29uQ29sb3IgPSAnIzE5NTRBOSc7XHJcbiAgY2xvc2VJY29uID0gJyc7XHJcbiAgY2xvc2VJY29uQ29sb3IgPSAnIzAwMDAwMCc7XHJcbiAgaXRlbUljb24gPSAnJztcclxuICBpdGVtSWNvblN2ZyA9ICcnO1xyXG4gIGl0ZW1JY29uUGF0aCA9ICcnO1xyXG4gIGl0ZW1JY29uQmFzZTY0ID0gJyc7XHJcbiAgbW9kdWxlSWQ6IG51bWJlcjtcclxuXHJcbiAgdHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPFRyZWVGbGF0Tm9kZT4oXHJcbiAgICAobm9kZSkgPT4ge1xyXG4gICAgICByZXR1cm4gbm9kZS5sZXZlbDtcclxuICAgIH0sXHJcbiAgICAobm9kZSkgPT4ge1xyXG4gICAgICByZXR1cm4gbm9kZS5leHBhbmRhYmxlO1xyXG4gICAgfVxyXG4gICk7XHJcblxyXG4gIGlzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gIGNoZWNrbGlzdFNlbGVjdGlvbjogYW55O1xyXG4gIGlkQ2hlY2tJY29uID0gJyc7XHJcbiAgbGlzdENoaWxkTm9kZSA9IFtdO1xyXG4gIGRhdGFUeXBlID0gRGF0YVR5cGU7XHJcbiAgZXhwYW5kZWROb2RlOiBUcmVlRmxhdE5vZGVbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSxcclxuICAgIHByaXZhdGUgYXBwSWNvblNlcnZpY2U6IFFNU0ljb25SZWdpc3RyeVNlcnZpY2UpIHtcclxuICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgna2V5Ym9hcmRfdXAnLCBkb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoS0VZQk9BUkRfVVBfSUNPTikpO1xyXG4gICAgaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKCdrZXlib2FyZF9kb3duJywgZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKEtFWUJPQVJEX0RPV05fSUNPTikpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJQcm9jZXNzSWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XHJcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlclByb2Nlc3NBcmVhSWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XHJcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckRvY3VtZW50SWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XHJcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckZvbGRlckljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJEZXZpYXRpb25JY29uKGljb25SZWdpc3RyeSwgZG9tU2FuaXRpemVyKTtcclxuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyQ2hlY2tsaXN0SWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XHJcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlclJpc2tJY29uKGljb25SZWdpc3RyeSwgZG9tU2FuaXRpemVyKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzLnRyZWVEYXRhICYmIEpTT04uc3RyaW5naWZ5KGNoYW5nZXMudHJlZURhdGEuY3VycmVudFZhbHVlKSAhPT0gSlNPTi5zdHJpbmdpZnkoY2hhbmdlcy50cmVlRGF0YS5wcmV2aW91c1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLnRyZWVEYXRhID0gWy4uLnRoaXMudHJlZURhdGEsIGNoYW5nZXMudHJlZURhdGEuY3VycmVudFZhbHVlXTtcclxuICAgICAgdGhpcy5leHBhbmRlZE5vZGUgPSBbXTtcclxuICAgICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzICYmIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kZWROb2RlLnB1c2godGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmluaXRUcmVlRGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLnNlbGVjdGVkRGF0YSAmJlxyXG4gICAgICAoY2hhbmdlcy5zZWxlY3RlZERhdGEuY3VycmVudFZhbHVlLmxlbmd0aCA+IDAgfHxcclxuICAgICAgICBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLnNlbGVjdGVkRGF0YS5jdXJyZW50VmFsdWUpICE9PVxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGNoYW5nZXMuc2VsZWN0ZWREYXRhLnByZXZpb3VzVmFsdWUpKSkge1xyXG4gICAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZERhdGEuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJlZUNvbmZpZy5zZWxlY3RPbmUpIHtcclxuICAgICAgICAgIHRoaXMuaWRDaGVja0ljb24gPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGVja1NlbGVjdGVkKGNoYW5nZXMuc2VsZWN0ZWREYXRhLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pZENoZWNrSWNvbiA9ICcnO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmRlc2VsZWN0KHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXMuZGlzYWJsZWRMaXN0ICYmIEpTT04uc3RyaW5naWZ5KGNoYW5nZXMuZGlzYWJsZWRMaXN0LmN1cnJlbnRWYWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KGNoYW5nZXMuZGlzYWJsZWRMaXN0LnByZXZpb3VzVmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tEaXNhYmxlZExpc3QoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBleHBhbmQgYWxsIHBhcmVudCB0byBzaG93IG5vZGVcclxuICAgIGlmIChjaGFuZ2VzLmV4cGFuZFRvQ2hpbGROb2RlICYmIEpTT04uc3RyaW5naWZ5KGNoYW5nZXMuZXhwYW5kVG9DaGlsZE5vZGUuY3VycmVudFZhbHVlKSAhPT0gSlNPTi5zdHJpbmdpZnkoY2hhbmdlcy5leHBhbmRUb0NoaWxkTm9kZS5wcmV2aW91c1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLm9wZW5FeHBhbmRUb0NoaWxkTm9kZSgpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5pbml0VHJlZURhdGEoKTtcclxuICB9XHJcblxyXG5cclxuICBpbml0VHJlZURhdGEoKSB7XHJcbiAgICB0aGlzLnRyZWVEYXRhLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGlmICghIWl0ZW0ucGFyZW50SWQgJiYgaXRlbS5wYXJlbnRJZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5saXN0UGFyZW50T2JqW2l0ZW0ucGFyZW50SWRdID0gMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS5pZCAmJiBpdGVtLmlkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmxpc3RQYXJlbnRPYmpbaXRlbS5wYXJlbnRJZF0gPSAxO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZpbHRlckRhdGEgPSB0aGlzLnRyZWVEYXRhO1xyXG5cclxuICAgIHRoaXMudHJlZU9iamVjdCA9IFRyZWVGdW5jdGlvbnMuYnVpbGRPYmplY3RUcmVlKHRoaXMuZmlsdGVyRGF0YSk7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IFRyZWVGdW5jdGlvbnMuYnVpbGRBcnJheVRyZWUodGhpcy50cmVlT2JqZWN0IHx8IHt9LCAwKS5tYXAoZWxlbWVudCA9PiB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNvcnREYXRhVHJlZShlbGVtZW50KTtcclxuICAgICAgZWxlbWVudCA9IG51bGw7XHJcbiAgICAgIGVsZW1lbnQgPSB7IC4uLnt9LCAuLi5pdGVtIH07XHJcbiAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy51c2VFeHBhbmRGZWF0dXJlID0gIXRoaXMudHJlZUNvbmZpZz8uc2hvd0NoZWNrQm94O1xyXG4gICAgdGhpcy5hbGxvd1NlbGVjdEZvbGRlciA9IHRoaXMudHJlZUNvbmZpZz8uYWxsb3dTZWxlY3RGb2xkZXI7XHJcbiAgICB0aGlzLmFyZWFPZkN1cnJlbnRQcm9jZXNzID0gdGhpcy50cmVlQ29uZmlnPy5hcmVhT2ZDdXJyZW50UHJvY2VzcztcclxuICAgIHRoaXMuc2hvd0NoZWNrQm94ID0gdGhpcy50cmVlQ29uZmlnPy5zaG93Q2hlY2tCb3g7XHJcbiAgICB0aGlzLm9ubHlDaGVja0JveEZvckNoaWxkID0gdGhpcy50cmVlQ29uZmlnPy5vbmx5Q2hlY2tCb3hGb3JDaGlsZDtcclxuICAgIHRoaXMubW9kdWxlSWQgPSB0aGlzLnRyZWVDb25maWc/Lm1vZHVsZUlkO1xyXG4gICAgdGhpcy5vcGVuSWNvbiA9IHRoaXMudHJlZUNvbmZpZz8ub3Blbkljb247XHJcbiAgICB0aGlzLm9wZW5JY29uQ29sb3IgPSB0aGlzLnRyZWVDb25maWc/Lm9wZW5JY29uQ29sb3IgPyB0aGlzLnRyZWVDb25maWc/Lm9wZW5JY29uQ29sb3IgOiB0aGlzLm9wZW5JY29uQ29sb3I7XHJcbiAgICB0aGlzLmNsb3NlSWNvbiA9IHRoaXMudHJlZUNvbmZpZz8uY2xvc2VJY29uO1xyXG4gICAgdGhpcy5jbG9zZUljb25Db2xvciA9IHRoaXMudHJlZUNvbmZpZz8uY2xvc2VJY29uQ29sb3IgPyB0aGlzLnRyZWVDb25maWc/LmNsb3NlSWNvbkNvbG9yIDogdGhpcy5jbG9zZUljb25Db2xvcjtcclxuICAgIHRoaXMuaXRlbUljb24gPSB0aGlzLnRyZWVDb25maWc/Lml0ZW1JY29uO1xyXG4gICAgdGhpcy5pdGVtSWNvblN2ZyA9IHRoaXMudHJlZUNvbmZpZz8uaXRlbUljb25Tdmc7XHJcbiAgICB0aGlzLml0ZW1JY29uUGF0aCA9IHRoaXMudHJlZUNvbmZpZz8uaXRlbUljb25QYXRoO1xyXG4gICAgdGhpcy5pdGVtSWNvbkJhc2U2NCA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLnRyZWVDb25maWc/Lml0ZW1JY29uQmFzZTY0KSBhcyBzdHJpbmc7XHJcbiAgICB0aGlzLmFsbG93TXVsdGlwbGVDaGVjayA9IHRoaXMudHJlZUNvbmZpZz8uYWxsb3dNdWx0aXBsZUNoZWNrO1xyXG4gICAgdGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUgPSB0aGlzLnRyZWVDb25maWc/LnNpbmdsZVNlbGVjdGVkTm9kZTtcclxuICAgIHRoaXMub25seUZvbGRlciA9IHRoaXMudHJlZUNvbmZpZz8ub25seUZvbGRlcjtcclxuICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPFRyZWVGbGF0Tm9kZT4odGhpcy5hbGxvd011bHRpcGxlQ2hlY2spOyAvKiB0cnVlOiBtdWx0aXBsZSAqL1xyXG5cclxuICAgIHRoaXMuZGlzcGxheVR5cGUgPSB0aGlzLmdldEl0ZW1JY29uVHlwZSh0aGlzLnRyZWVDb25maWcpO1xyXG5cclxuICAgIC8vIEV4cGFuZCBjaGlsZCBub2RlIHRyZWVcclxuICAgIGlmICh0aGlzLnRyZWVDb25maWcuZXhwYW5kQWxsKSB7XHJcbiAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kQWxsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9EaXNhYmxlZCBub2RlXHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZExpc3QubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tEaXNhYmxlZExpc3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGEubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tTZWxlY3RlZCh0aGlzLnNlbGVjdGVkRGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmlzayBUcmVlXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJpc2tEYXRhLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZERhdGEgPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSaXNrRGF0YS5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSBzZWxlY3RlZERhdGEuZmluZEluZGV4KGVsID0+IGVsLmlkID09PSB4LnJvb3RJZCk7XHJcbiAgICAgICAgICBpZiAoeC5yb290SWQgPT09IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmlkICYmIGluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZERhdGEucHVzaCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY2hlY2tTZWxlY3RlZChzZWxlY3RlZERhdGEpO1xyXG4gICAgICB0aGlzLmNoZWNrQm94RXZlbnQuZW1pdChzZWxlY3RlZERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGtlZXAgZXhwYW5kXHJcbiAgICBpZiAodGhpcy5wYXJlbnROb2RlT25DbGljayAmJiBPYmplY3Qua2V5cyh0aGlzLnBhcmVudE5vZGVPbkNsaWNrKS5sZW5ndGgpIHtcclxuXHJcbiAgICAgIGxldCByb290ID0gdGhpcy5wYXJlbnROb2RlT25DbGljaztcclxuICAgICAgbGV0IHRlbXBQYXJlbnQgPSBbXTtcclxuICAgICAgd2hpbGUgKHJvb3QgJiYgcm9vdC5pZCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGNvbnN0IHRyZWUgPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXTtcclxuICAgICAgICAgIGlmIChyb290LnBhcmVudElkID09PSB0cmVlLnBhcmVudElkICYmIHJvb3QuaWQgPT09IHRyZWUuaWQpIHtcclxuICAgICAgICAgICAgdGVtcFBhcmVudCA9IFt0cmVlLCAuLi50ZW1wUGFyZW50XTtcclxuICAgICAgICAgICAgcm9vdCA9IHRoaXMuZ2V0UGFyZW50KHRyZWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGVtcFBhcmVudC5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKHgpKVxyXG4gICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQoeCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmV4cGFuZGVkTm9kZS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5leHBhbmRlZE5vZGUuZm9yRWFjaChub2RlID0+IHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmRJbmRleCh4ID0+IHgucGFyZW50SWQgPT09IG5vZGUucGFyZW50SWQgJiYgeC5pZCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2luZGV4XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFBhcmVudChub2RlOiBUcmVlRmxhdE5vZGUpIHtcclxuICAgIGNvbnN0IHsgdHJlZUNvbnRyb2wgfSA9IHRoaXM7XHJcbiAgICBjb25zdCBjdXJyZW50TGV2ZWwgPSB0cmVlQ29udHJvbC5nZXRMZXZlbChub2RlKTtcclxuXHJcbiAgICBpZiAoY3VycmVudExldmVsIDwgMSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpbmRleCA9IHRyZWVDb250cm9sLmRhdGFOb2Rlcy5pbmRleE9mKG5vZGUpIC0gMTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnROb2RlID0gdHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldO1xyXG5cclxuICAgICAgaWYgKHRyZWVDb250cm9sLmdldExldmVsKGN1cnJlbnROb2RlKSA8IGN1cnJlbnRMZXZlbCkge1xyXG4gICAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbkV4cGFuZFRvQ2hpbGROb2RlKCkge1xyXG4gICAgaWYgKHRoaXMuZXhwYW5kVG9DaGlsZE5vZGUubGVuZ3RoKSB7XHJcbiAgICAgIGlmICh0aGlzLmV4cGFuZFRvQ2hpbGROb2RlWzBdID09PSAnJykge1xyXG4gICAgICAgIHRoaXMuaWRDaGVja0ljb24gPSAnJztcclxuICAgICAgICB0aGlzLnRyZWVDb250cm9sLmNvbGxhcHNlQWxsKCk7XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgaXRlbU1hcmtDaGVja2VkID0gdGhpcy5leHBhbmRUb0NoaWxkTm9kZVt0aGlzLmV4cGFuZFRvQ2hpbGROb2RlLmxlbmd0aCAtIDFdLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgIGxldCBwYXJlbnRJdGVtID0gJyc7XHJcbiAgICAgIC8vIGdldCBhbGwgY2hpbGRyZW4gbm9kZXMgb24gc2FtZSBsZXZlbFxyXG4gICAgICBsZXQgbGlzdENoaWxkTm9kZVNhbWVMZXZlbCA9IHRoaXMuZmluZENoaWxkTm9kZShpdGVtTWFya0NoZWNrZWQsIHRoaXMuZGF0YVNvdXJjZS5kYXRhKTtcclxuICAgICAgLy8gZ2V0IGFsbCBjaGlsZHJlbiBpbiBhbGwgbGV2ZWxcclxuICAgICAgdGhpcy5saXN0Q2hpbGROb2RlID0gW107XHJcbiAgICAgIHRoaXMuZ2V0Q2hpbGQobGlzdENoaWxkTm9kZVNhbWVMZXZlbCk7XHJcbiAgICAgIHRoaXMuZ2V0Q2hpbGROb2RlU2VsZWN0T25lLmVtaXQodGhpcy5saXN0Q2hpbGROb2RlKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoaXRlbU1hcmtDaGVja2VkID09PSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCkge1xyXG4gICAgICAgICAgcGFyZW50SXRlbSA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLnBhcmVudElkO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3ROb2RlRXZlbnQuZW1pdCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXhwYW5kVG9DaGlsZE5vZGUuZm9yRWFjaChlbCA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uaWQgPT09IGVsLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaWRDaGVja0ljb24gPSB0aGlzLmlkVG9DaGVja1NlbGVjdE9uZShpdGVtTWFya0NoZWNrZWQsIHBhcmVudEl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tEaXNhYmxlZExpc3QoKSB7XHJcbiAgICAvLyBEaXNhYmxlIExpc3RcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRpc2FibGVkTGlzdC5sZW5ndGgpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWRMaXN0LmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgICBpZiAoeC5pZC50b0xvd2VyQ2FzZSgpID09PSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgICYmICgheC5wYXJlbnRJZCB8fCB4LnBhcmVudElkLnRvTG93ZXJDYXNlKCkgPT09IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldPy5wYXJlbnRJZC50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL1NlbGVjdGVkIG5vZGUgd2l0aCBzZWxlY3Qgb25lXHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZExpc3QubGVuZ3RoICYmIHRoaXMudHJlZUNvbmZpZy5zZWxlY3RPbmUpIHtcclxuICAgICAgbGV0IGl0ZW1NYXJrQ2hlY2tlZCA9IHRoaXMuZGlzYWJsZWRMaXN0W3RoaXMuZGlzYWJsZWRMaXN0Lmxlbmd0aCAtIDFdLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMuaWRDaGVja0ljb24gPSBpdGVtTWFya0NoZWNrZWQ7XHJcbiAgICAgIC8vIGdldCBhbGwgY2hpbGRyZW4gbm9kZXMgb24gc2FtZSBsZXZlbFxyXG4gICAgICBsZXQgbGlzdENoaWxkTm9kZVNhbWVMZXZlbCA9IHRoaXMuZmluZENoaWxkTm9kZShpdGVtTWFya0NoZWNrZWQsIHRoaXMuZGF0YVNvdXJjZS5kYXRhKTtcclxuICAgICAgbGV0IHBhcmVudEl0ZW0gPSAnJztcclxuICAgICAgLy8gZ2V0IGFsbCBjaGlsZHJlbiBpbiBhbGwgbGV2ZWxcclxuICAgICAgdGhpcy5saXN0Q2hpbGROb2RlID0gW107XHJcbiAgICAgIHRoaXMuZ2V0Q2hpbGQobGlzdENoaWxkTm9kZVNhbWVMZXZlbCk7XHJcbiAgICAgIHRoaXMuZ2V0Q2hpbGROb2RlU2VsZWN0T25lLmVtaXQodGhpcy5saXN0Q2hpbGROb2RlKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoaXRlbU1hcmtDaGVja2VkID09PSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCkge1xyXG4gICAgICAgICAgcGFyZW50SXRlbSA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLnBhcmVudElkO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3ROb2RlRXZlbnQuZW1pdCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlzYWJsZWRMaXN0LmZvckVhY2goZWwgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmlkID09PSBlbC50b1VwcGVyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyByZW1vdmUgYWxsIGNoaWxkcmVuIG5vZGVzIHdoZW4gdXNlciBkb250IG5lZWQgdG8gc2hvdyB0aGVtXHJcbiAgICAgICAgdGhpcy5saXN0Q2hpbGROb2RlLmZvckVhY2goZWwgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsLmlkICYmIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldPy5pZCA9PT0gZWwuaWQpIHtcclxuICAgICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaWRDaGVja0ljb24gPSB0aGlzLmlkVG9DaGVja1NlbGVjdE9uZShpdGVtTWFya0NoZWNrZWQsIHBhcmVudEl0ZW0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pZENoZWNrSWNvbiA9ICcnO1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sLmNvbGxhcHNlQWxsKCk7XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpbGQob2JqKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iai5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAob2JqLmNoaWxkcmVuW2ldLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgdGhpcy5nZXRDaGlsZChvYmouY2hpbGRyZW5baV0pO1xyXG4gICAgICAgIGRlbGV0ZSBvYmouY2hpbGRyZW5baV0uY2hpbGRyZW47XHJcbiAgICAgICAgdGhpcy5saXN0Q2hpbGROb2RlLnB1c2gob2JqLmNoaWxkcmVuW2ldKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxpc3RDaGlsZE5vZGUucHVzaChvYmouY2hpbGRyZW5baV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzb3J0RGF0YVRyZWUob2JqKSB7XHJcbiAgICBpZiAob2JqLmNoaWxkcmVuKSB7XHJcbiAgICAgIGxldCBjaGlsZCA9IFtdO1xyXG4gICAgICBjb25zdCBsZWFmTm9kZSA9IG9iai5jaGlsZHJlbi5maWx0ZXIoeCA9PiAheC5jaGlsZHJlbik7XHJcbiAgICAgIGNvbnN0IHN1YkZvbGRlck5vZGUgPSBvYmouY2hpbGRyZW4uZmlsdGVyKHggPT4geC5jaGlsZHJlbik7XHJcbiAgICAgIC8vIGZvcihsZXQgaW5kZXggPSBzdWJGb2xkZXJOb2RlLmxlbmd0aCAtIDE7IGluZGV4ID49IDAgOyBpbmRleC0tKXtcclxuICAgICAgLy8gICBsZXQgZWwgPSBzdWJGb2xkZXJOb2RlW2luZGV4XTtcclxuICAgICAgLy8gICB0aGlzLnNvcnREYXRhVHJlZShlbCk7XHJcbiAgICAgIC8vICAgY2hpbGQudW5zaGlmdChlbCk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgc3ViRm9sZGVyTm9kZS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIGxldCBlbCA9IGVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5zb3J0RGF0YVRyZWUoZWwpO1xyXG4gICAgICAgIGNoaWxkLnB1c2goZWwpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGxlYWZOb2RlLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgbGV0IGVsID0gZWxlbWVudDtcclxuICAgICAgICBjaGlsZC5wdXNoKGVsKTtcclxuICAgICAgfSk7XHJcbiAgICAgIG9iai5jaGlsZHJlbiA9IGNoaWxkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcblxyXG4gIGdldEltYWdlUGF0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy50cmVlQ29uZmlnLml0ZW1JY29uQmFzZTY0KSBhcyBzdHJpbmc7XHJcbiAgfVxyXG5cclxuICBjaGVja1NlbGVjdGVkKGl0ZW1TZWxlY3RlZDogVHJlZUZsYXROb2RlW10pIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudHJlZUNvbnRyb2xbJ2RhdGFOb2RlcyddKSByZXR1cm47XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCB0cmVlID0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV07XHJcbiAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uZGVzZWxlY3QodHJlZSk7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaXRlbVNlbGVjdGVkLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICBjb25zdCBlbGVtZW50ID0gaXRlbVNlbGVjdGVkW2pdO1xyXG4gICAgICAgICAgaWYgKHRyZWUuaWQudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gZWxlbWVudC5pZC50b0xvY2FsZUxvd2VyQ2FzZSgpICYmICghZWxlbWVudC5wYXJlbnRJZCB8fCB0cmVlLnBhcmVudElkLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IGVsZW1lbnQucGFyZW50SWQudG9Mb2NhbGVMb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0KHRyZWUpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy50cmVlQ29uZmlnLnNlbGVjdE9uZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaWRDaGVja0ljb24gPSB0aGlzLmlkVG9DaGVja1NlbGVjdE9uZSh0cmVlLmlkLCB0cmVlLnBhcmVudElkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSwgNTAwKTtcclxuXHJcbiAgfVxyXG5cclxuICBjaGVja1NlbGVjdGVkU2FtZU5vZGUoaXRlbVNlbGVjdGVkOiBUcmVlRmxhdE5vZGVbXSwgZmxhZzogYm9vbGVhbikge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCB0cmVlID0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV07XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaXRlbVNlbGVjdGVkLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGl0ZW1TZWxlY3RlZFtqXTtcclxuICAgICAgICBpZiAoZWxlbWVudC5pZCAmJiB0cmVlLmlkID09PSBlbGVtZW50LmlkXHJcbiAgICAgICAgICAmJiB0cmVlLnBhcmVudElkID09PSBlbGVtZW50LnBhcmVudElkICYmICF0cmVlLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICBmbGFnID8gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0KHRyZWUpIDogdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uZGVzZWxlY3QodHJlZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRJdGVtSWNvblR5cGUodHJlZUNvbmZpZzogVHJlZUNvbmZpZykge1xyXG4gICAgaWYgKHRyZWVDb25maWcuaXRlbUljb24gJiYgdHJlZUNvbmZpZy5pdGVtSWNvbi5sZW5ndGgpIHJldHVybiB0aGlzLml0ZW1JY29uVHlwZS5uYW1lO1xyXG4gICAgaWYgKHRyZWVDb25maWcuaXRlbUljb25QYXRoICYmIHRyZWVDb25maWcuaXRlbUljb25QYXRoLmxlbmd0aCkgcmV0dXJuIHRoaXMuaXRlbUljb25UeXBlLnBhdGg7XHJcbiAgICBpZiAodHJlZUNvbmZpZy5pdGVtSWNvbkJhc2U2NCAmJiB0cmVlQ29uZmlnLml0ZW1JY29uQmFzZTY0Lmxlbmd0aCkgcmV0dXJuIHRoaXMuaXRlbUljb25UeXBlLmJhc2U2NDtcclxuICAgIGlmICh0cmVlQ29uZmlnLml0ZW1JY29uU3ZnICYmIHRyZWVDb25maWcuaXRlbUljb25TdmcubGVuZ3RoKSByZXR1cm4gdGhpcy5pdGVtSWNvblR5cGUuc3ZnO1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbUljb25UeXBlLm5vbmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYW5zZm9ybWVyID0gKG5vZGU6IFRyZWVOb2RlLCBsZXZlbDogbnVtYmVyKSA9PiB7XHJcbiAgICBsZXQgY2hlY2tIYXNDaGlsZCA9IHRydWU7XHJcbiAgICBpZiAoIW5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgY2hlY2tIYXNDaGlsZCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmIChub2RlLmV4cGFuZGFibGUpIHtcclxuICAgICAgY2hlY2tIYXNDaGlsZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxyXG4gICAgZWxzZSBpZiAoXHJcbiAgICAgICEhbm9kZS5jaGlsZHJlbiAmJlxyXG4gICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCAmJlxyXG4gICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgICAhbm9kZS5jaGlsZHJlblswXS5uYW1lICYmXHJcbiAgICAgIG5vZGUuaWQudG9TdHJpbmcoKSA9PT0gdGhpcy5hcmVhT2ZDdXJyZW50UHJvY2Vzc1xyXG4gICAgKSB7XHJcbiAgICAgIGNoZWNrSGFzQ2hpbGQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISh0aGlzLmxpc3RQYXJlbnRPYmpbbm9kZS5pZF0gPT09IDEpKSB7XHJcbiAgICAgIGNoZWNrSGFzQ2hpbGQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBleHBhbmRhYmxlOiBub2RlLmV4cGFuZGFibGUsXHJcbiAgICAgIG5hbWU6IG5vZGUubmFtZSxcclxuICAgICAgbGV2ZWwsXHJcbiAgICAgIGlkOiBub2RlLmlkLFxyXG4gICAgICBoYXNDaGlsZDogY2hlY2tIYXNDaGlsZCxcclxuICAgICAgcGFyZW50SWQ6IG5vZGUucGFyZW50SWQsXHJcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgbGV2ZWxUeXBlOiBub2RlLmxldmVsVHlwZVxyXG4gICAgfTtcclxuICB9O1xyXG5cclxuICB0cmVlRmxhdHRlbmVyID0gbmV3IE1hdFRyZWVGbGF0dGVuZXIoXHJcbiAgICB0aGlzLnRyYW5zZm9ybWVyLFxyXG4gICAgKG5vZGUpID0+IHtcclxuICAgICAgcmV0dXJuIG5vZGUubGV2ZWw7XHJcbiAgICB9LFxyXG4gICAgKG5vZGUpID0+IHtcclxuICAgICAgcmV0dXJuIG5vZGUuZXhwYW5kYWJsZTtcclxuICAgIH0sXHJcbiAgICAobm9kZSkgPT4ge1xyXG4gICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbjtcclxuICAgIH1cclxuICApO1xyXG5cclxuICBkYXRhU291cmNlID0gbmV3IE1hdFRyZWVGbGF0RGF0YVNvdXJjZSh0aGlzLnRyZWVDb250cm9sLCB0aGlzLnRyZWVGbGF0dGVuZXIpO1xyXG5cclxuICAvKiogV2hldGhlciBhbGwgdGhlIGRlc2NlbmRhbnRzIG9mIHRoZSBub2RlIGFyZSBzZWxlY3RlZCAqL1xyXG4gIGRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZTogVHJlZUZsYXROb2RlKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBkZXNjZW5kYW50cyA9ICF0aGlzLnNpbmdsZVNlbGVjdGVkTm9kZSA/IHRoaXMudHJlZUNvbnRyb2wuZ2V0RGVzY2VuZGFudHMobm9kZSkuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQpIDogW107XHJcblxyXG4gICAgaWYgKCFkZXNjZW5kYW50cy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSk7XHJcblxyXG4gICAgY29uc3QgYWxsU2VsZWN0ZWQgPSBkZXNjZW5kYW50cy5ldmVyeShjaGlsZCA9PiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKGNoaWxkKSk7XHJcbiAgICBpZiAoIXNlbGVjdGVkICYmIGFsbFNlbGVjdGVkKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdChub2RlKTtcclxuICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHJldHVybiBhbGxTZWxlY3RlZDtcclxuXHJcbiAgfVxyXG5cclxuICAvKiogV2hldGhlciBwYXJ0IG9mIHRoZSBkZXNjZW5kYW50cyBhcmUgc2VsZWN0ZWQgKi9cclxuICBkZXNjZW5kYW50c1BhcnRpYWxseVNlbGVjdGVkKG5vZGU6IFRyZWVGbGF0Tm9kZSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZGVzY2VuZGFudHMgPSAhdGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUgPyB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkKSA6IFtdO1xyXG4gICAgY29uc3QgcmVzdWx0ID0gZGVzY2VuZGFudHMuc29tZShjaGlsZCA9PiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKGNoaWxkKSk7XHJcbiAgICByZXR1cm4gcmVzdWx0ICYmICF0aGlzLmRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZSk7XHJcbiAgfVxyXG5cclxuICAvKiogVG9nZ2xlIHRoZSB0by1kbyBpdGVtIHNlbGVjdGlvbi4gU2VsZWN0L2Rlc2VsZWN0IGFsbCB0aGUgZGVzY2VuZGFudHMgbm9kZSAqL1xyXG4gIHB1YmxpYyB0b2RvSXRlbVNlbGVjdGlvblRvZ2dsZShub2RlOiBUcmVlRmxhdE5vZGUpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAodGhpcy5tb2R1bGVJZCkge1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OlxyXG4gICAgICAgIG5vZGUuaXRlbVR5cGUgPSBub2RlLmV4cGFuZGFibGUgPyBEYXRhVHlwZS5mb2xkZXIgOiBEYXRhVHlwZS5kb2N1bWVudDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5wcm9jZXNzOlxyXG4gICAgICAgIG5vZGUuaXRlbVR5cGUgPSBub2RlLmV4cGFuZGFibGUgPyBEYXRhVHlwZS5hcmVhIDogRGF0YVR5cGUucHJvY2VzcztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5jaGVja2xpc3Q6XHJcbiAgICAgICAgbm9kZS5pdGVtVHlwZSA9IG5vZGUuZXhwYW5kYWJsZSA/IERhdGFUeXBlLmNoZWNrbGlzdENhdGVnb3J5IDogRGF0YVR5cGUuY2hlY2tsaXN0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmRldmlhdGlvbjpcclxuICAgICAgICBub2RlLml0ZW1UeXBlID0gbm9kZS5leHBhbmRhYmxlID8gRGF0YVR5cGUuZGV2aWF0aW9uVHlwZSA6IERhdGFUeXBlLmRldmlhdGlvbjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5yaXNrOlxyXG4gICAgICAgIG5vZGUuaXRlbVR5cGUgPSBub2RlLmV4cGFuZGFibGUgPyBEYXRhVHlwZS5yaXNrRm9sZGVyIDogRGF0YVR5cGUucmlzaztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0Tm9kZUV2ZW50LmVtaXQobm9kZSk7XHJcbiAgICAvLyB0cmVlIGhhdmUgZHVwbGljYXRlIG5vZGVcclxuICAgIGlmICh0aGlzLnRyZWVDb25maWcuY2FuSGF2ZUR1cElkKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uaWQgPT09IG5vZGUuaWRcclxuICAgICAgICAgICYmIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLnBhcmVudElkID09PSBub2RlLnBhcmVudElkXHJcbiAgICAgICAgICAmJiAhdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uZGlzYWJsZWQpIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnRvZ2dsZSh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi50b2dnbGUobm9kZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIHByb2Nlc3MvIGRvY3VtZW50IHNpbmdsZSBzZWxlY3RlZFxyXG4gICAgaWYgKHRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tCb3hFdmVudC5lbWl0KHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkKTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBkZXNjZW5kYW50cyA9IHRoaXMudHJlZUNvbnRyb2wuZ2V0RGVzY2VuZGFudHMobm9kZSkuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQpO1xyXG5cclxuICAgICAgdGhpcy5jaGVja1NlbGVjdGVkU2FtZU5vZGUoZGVzY2VuZGFudHMsIHRoaXMuZGVzY2VuZGFudHNBbGxTZWxlY3RlZChub2RlKSk7XHJcblxyXG4gICAgICAhdGhpcy5kZXNjZW5kYW50c0FsbFNlbGVjdGVkKG5vZGUpXHJcbiAgICAgICAgPyB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3QoLi4uZGVzY2VuZGFudHMpXHJcbiAgICAgICAgOiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdCguLi5kZXNjZW5kYW50cyk7XHJcblxyXG4gICAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuICAgICAgY29uc3QgYWxsTm9kZUlzUGFyZW50ID0gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQuZXZlcnkoY2hpbGQgPT4gY2hpbGQuZXhwYW5kYWJsZSk7XHJcbiAgICAgIGlmIChhbGxOb2RlSXNQYXJlbnQpIHtcclxuICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uZGVzZWxlY3QoZWxlbWVudCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGVja0JveEV2ZW50LmVtaXQodGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9kb0NoaWxkU2VsZWN0aW9uVG9nZ2xlKG5vZGU6IFRyZWVGbGF0Tm9kZSk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uaWQgPT09IG5vZGUuaWRcclxuICAgICAgICAmJiB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5wYXJlbnRJZCA9PT0gbm9kZS5wYXJlbnRJZFxyXG4gICAgICAgICYmICF0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5kaXNhYmxlZCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnRvZ2dsZSh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnRvZ2dsZShub2RlKTtcclxuICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLmNoZWNrQm94RXZlbnQuZW1pdCh0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9kb0l0ZW1TZWxlY3Rpb24obm9kZXM6IFRyZWVOb2RlW10pOiB2b2lkIHtcclxuICAgIG5vZGVzLmZvckVhY2goXHJcbiAgICAgIG5vZGUgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCA9PT0gbm9kZS5pZCAmJlxyXG4gICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5wYXJlbnRJZCA9PT0gbm9kZS5wYXJlbnRJZCAmJlxyXG4gICAgICAgICAgICAhdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uZGlzYWJsZWQgJiYgIXRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmV4cGFuZGFibGUpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKSlcclxuICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi50b2dnbGUodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuY2hlY2tCb3hFdmVudC5lbWl0KHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIHRvZG9JdGVtU2VsZWN0aW9uUHJvY2Vzc0RvY3VtZW50KG5vZGVzOiBUcmVlTm9kZVtdKTogdm9pZCB7XHJcbiAgICBub2Rlcy5mb3JFYWNoKFxyXG4gICAgICBub2RlID0+IHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uaWQgPT09IG5vZGUuaWQgJiZcclxuICAgICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0ucGFyZW50SWQgPT09IG5vZGUucGFyZW50SWQgJiZcclxuICAgICAgICAgICAgIXRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmRpc2FibGVkICYmICF0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5leHBhbmRhYmxlKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSkpXHJcbiAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24udG9nZ2xlKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jaGVja0JveEV2ZW50LmVtaXQodGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sTm9kZXMuZW1pdCh0aGlzLnRyZWVDb250cm9sKTtcclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9kb0ZvbGRlclNlbGVjdGlvbihub2RlczogVHJlZU5vZGVbXSk6IHZvaWQge1xyXG4gICAgbm9kZXMuZm9yRWFjaChcclxuICAgICAgbm9kZSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmlkID09PSBub2RlLmlkICYmXHJcbiAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLnBhcmVudElkID09PSBub2RlLnBhcmVudElkICYmXHJcbiAgICAgICAgICAgICF0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5kaXNhYmxlZCAmJiB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5leHBhbmRhYmxlKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSkpXHJcbiAgICAgICAgICAgICAgdGhpcy50b2RvSXRlbVNlbGVjdGlvblRvZ2dsZSh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5jaGVja0JveEV2ZW50LmVtaXQodGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgaGFzQ2hpbGQgPSAoXzogbnVtYmVyLCBub2RlOiBUcmVlRmxhdE5vZGUpID0+IHtcclxuICAgIHJldHVybiBub2RlLmV4cGFuZGFibGU7XHJcbiAgfTtcclxuXHJcbiAgc2VsZWN0Tm9kZShub2RlOiBUcmVlRmxhdE5vZGUpIHtcclxuICAgIGlmICh3aW5kb3dbUmVsYXRlZENvbnN0LklTX0RJU1BMQVlfU0VBUkNIX1JFU1VMVF0pIHtcclxuICAgICAgd2luZG93LnBvc3RNZXNzYWdlKFJlbGF0ZWRDb25zdC5ISURFX1NFQVJDSF9SRVNVTFQsICcqJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudHJlZUNvbmZpZy5zZWxlY3RPbmUpIHtcclxuICAgICAgbm9kZS5pdGVtVHlwZSA9IHRoaXMuY2hlY2tEYXRhVHlwZVNlbGVjdE5vZGUobm9kZSk7XHJcbiAgICAgIHRoaXMuaWRDaGVja0ljb24gPSB0aGlzLmlkVG9DaGVja1NlbGVjdE9uZShub2RlLmlkLCBub2RlLnBhcmVudElkKTtcclxuICAgICAgdGhpcy5zZWxlY3ROb2RlRXZlbnQuZW1pdChub2RlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrRGF0YVR5cGVTZWxlY3ROb2RlKG5vZGU6IFRyZWVGbGF0Tm9kZSkge1xyXG4gICAgbGV0IGl0ZW1UeXBlID0gLTE7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLm1vZHVsZUlkKSB7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcclxuICAgICAgICBpdGVtVHlwZSA9IG5vZGUuZXhwYW5kYWJsZSA/IERhdGFUeXBlLmFyZWEgOiBEYXRhVHlwZS5wcm9jZXNzO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OlxyXG4gICAgICAgIGl0ZW1UeXBlID0gbm9kZS5leHBhbmRhYmxlID8gRGF0YVR5cGUuZm9sZGVyIDogRGF0YVR5cGUuZG9jdW1lbnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGl0ZW1UeXBlID0gdGhpcy5tb2R1bGVJZDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXRlbVR5cGU7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RGb2xkZXIobm9kZTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICBpZiAoIXRoaXMudHJlZUNvbmZpZy5hbGxvd1NlbGVjdEZvbGRlcilcclxuICAgICAgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMudHJlZUNvbmZpZy5zZWxlY3RPbmUpIHtcclxuICAgICAgdGhpcy5vbkV4cGFuZE5vZGUobm9kZSwgdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpKVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RGb2xkZXJFdmVudC5lbWl0KG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgb25FeHBhbmROb2RlKG5vZGU6IFRyZWVGbGF0Tm9kZSwgaXNFeHBhbmROb2RlPzogYm9vbGVhbikge1xyXG4gICAgaWYgKGlzRXhwYW5kTm9kZSkge1xyXG4gICAgICB0aGlzLm5vZGVFeHBhbmRFdmVudC5lbWl0KG5vZGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJlZUNvbmZpZy5zZWxlY3RPbmUgJiYgdGhpcy50cmVlQ29uZmlnLmFsbG93U2VsZWN0Rm9sZGVyKSB7XHJcbiAgICAgIHRoaXMuaWRDaGVja0ljb24gPSB0aGlzLmlkVG9DaGVja1NlbGVjdE9uZShub2RlLmlkLCBub2RlLnBhcmVudElkKTtcclxuICAgICAgbm9kZS5pdGVtVHlwZSA9IHRoaXMuY2hlY2tEYXRhVHlwZVNlbGVjdE5vZGUobm9kZSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0Tm9kZUV2ZW50LmVtaXQobm9kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvd1tSZWxhdGVkQ29uc3QuSVNfRElTUExBWV9TRUFSQ0hfUkVTVUxUXSkge1xyXG4gICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoUmVsYXRlZENvbnN0LkhJREVfU0VBUkNIX1JFU1VMVCwgJyonKTtcclxuICAgIH1cclxuICAgIC8vIHNldCB1c2VFeHBhbmRGZWF0dXJlID0gdHJ1ZSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHRyZWUgbG9hZGluZ1xyXG4gICAgaWYgKCFpc0V4cGFuZE5vZGUgfHwgIXRoaXMudXNlRXhwYW5kRmVhdHVyZSkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXJySW5kZXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAodGhpcy5hcnJJbmRleFtpXSA9PT0gbm9kZS5pZCkge1xyXG4gICAgICAgICAgdGhpcy5hcnJJbmRleC5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBnZXQgYXJyYXkgaW5kZXggdG8gZXhwYW5kIG5vZGUgYWZ0ZXIgcmVmcmVzaCBkYXRhc291cmNlXHJcbiAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgbGV0IGlzQ2hhbmdlID0gZmFsc2U7XHJcbiAgICBsZXQgaXNSZW1vdmUgPSBmYWxzZTtcclxuICAgIHRoaXMuYXJySW5kZXgucHVzaChub2RlLmlkKTtcclxuXHJcbiAgICBjb25zdCBjaGlsZEFycmF5ID0gdGhpcy50cmVlRGF0YS5maWx0ZXIoKHgpID0+IHtcclxuICAgICAgcmV0dXJuIHgucGFyZW50SWQgPT09IG5vZGUuaWQ7XHJcbiAgICB9KTtcclxuICAgIGxldCByb290SWQgPSAnMCc7XHJcbiAgICBsZXQgcGFyZW50RWxlbWVudDogVHJlZU5vZGU7XHJcbiAgICBsZXQgY2hpbGRyZW5MaXN0OiBUcmVlTm9kZVtdO1xyXG4gICAgaWYgKGNoaWxkQXJyYXkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNoaWxkQXJyYXkuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5wYXJlbnRJZCA9PT0gcm9vdElkKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBnZXQgY2hpbGQgbm9kZSBmcm9tIG9yaWdpbmFsIGRhdGFzb3VyY2VcclxuICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLmdldENoaWxkTm9kZShpdGVtLmlkLCBjaGlsZEFycmF5KTtcclxuICAgICAgcm9vdElkID0gaXRlbS5wYXJlbnRJZDtcclxuXHJcbiAgICAgIGluZGV4ID0gdGhpcy5nZXROb2RlSW5kZXgoY2hpbGQuaWQsIHVuZGVmaW5lZCwgdGhpcy5kYXRhU291cmNlWydfdHJlZUNvbnRyb2wnXS5kYXRhTm9kZXMpO1xyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gYWRkIGNoaWxkIG5vZGUgdG8gZXhwYW5kIG5vZGVcclxuICAgICAgcGFyZW50RWxlbWVudCA9IHRoaXMuZmluZENoaWxkTm9kZShub2RlLmlkLCB0aGlzLmRhdGFTb3VyY2UuZGF0YSk7XHJcbiAgICAgIGlmIChwYXJlbnRFbGVtZW50KSB7XHJcbiAgICAgICAgLy8gdGVtcG9yYXJ5IHJlbW92ZSBhbGwgbm9kZSB3aXRob3V0IGNoaWxkcmVuID0+IHB1cnBvc2UgdG8gYWRkIG5vZGUgZm9sZGVyIGZpcnN0XHJcbiAgICAgICAgaWYgKCFpc1JlbW92ZSkge1xyXG4gICAgICAgICAgY2hpbGRyZW5MaXN0ID0gWy4uLnBhcmVudEVsZW1lbnQuY2hpbGRyZW5dO1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbihwYXJlbnRFbGVtZW50KTtcclxuICAgICAgICAgIGlzUmVtb3ZlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYWRkIG5vZGUgZm9sZGVyIGZpcnN0XHJcbiAgICAgICAgcGFyZW50RWxlbWVudC5jaGlsZHJlbi5wdXNoKGNoaWxkKTtcclxuICAgICAgICBpc0NoYW5nZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gYWRkIG5vZGUgd2l0aG91dCBjaGlsZHJlbiBhZ2FpblxyXG4gICAgaWYgKGlzUmVtb3ZlKSB7XHJcbiAgICAgIHRoaXMuYWRkQ2hpbGRyZW4ocGFyZW50RWxlbWVudCwgY2hpbGRyZW5MaXN0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyByZWZyZXNoIGRhdGEgYW5kIGV4cGFuZCB0cmVlIG5vZGUgZnJvbSByb290IG5vZGVcclxuICAgIGlmIChpc0NoYW5nZSkge1xyXG4gICAgICB0aGlzLnJlZnJlc2hUcmVlRGF0YSgpO1xyXG4gICAgICB0aGlzLmFyckluZGV4LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBpbmRleCA9IHRoaXMuZ2V0Tm9kZUluZGV4KGl0ZW0sIHVuZGVmaW5lZCwgdGhpcy5kYXRhU291cmNlWydfdHJlZUNvbnRyb2wnXS5kYXRhTm9kZXMpO1xyXG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2luZGV4XSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpc0NoYW5nZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ2hpbGRyZW4ocGFyZW50RWxlbWVudD86IFRyZWVOb2RlKSB7XHJcbiAgICBpZiAocGFyZW50RWxlbWVudC5jaGlsZHJlbikge1xyXG4gICAgICBwYXJlbnRFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRDaGlsZHJlbihwYXJlbnRFbGVtZW50PzogVHJlZU5vZGUsIGNoaWxkcmVuTGlzdD86IFRyZWVOb2RlW10pIHtcclxuICAgIGlmIChjaGlsZHJlbkxpc3QpIHtcclxuICAgICAgY2hpbGRyZW5MaXN0LmZvckVhY2goKGUpID0+IHtcclxuICAgICAgICBwYXJlbnRFbGVtZW50LmNoaWxkcmVuLnB1c2goZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Tm9kZUluZGV4KGlkOiBzdHJpbmcsIGxldmVsPzogbnVtYmVyLCBkYXRhPzogYW55W10pIHtcclxuICAgIGlmIChsZXZlbCkge1xyXG4gICAgICByZXR1cm4gZGF0YS5maW5kSW5kZXgoKHgpID0+IHtcclxuICAgICAgICByZXR1cm4geC5pZCA9PT0gaWQgJiYgeC5sZXZlbCA9PT0gbGV2ZWw7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXRhLmZpbmRJbmRleCgoeCkgPT4ge1xyXG4gICAgICByZXR1cm4geC5pZCA9PT0gaWQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkTm9kZShyb290SWQ6IHN0cmluZywgZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCB0cmVlTm9kZSA9IGRhdGEuZmlsdGVyKCh4KSA9PiB7XHJcbiAgICAgIHJldHVybiB4LmlkID09PSByb290SWQgJiYgeC5leHBhbmRhYmxlO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBjaGlsZCA9IHsgaWQ6IHRyZWVOb2RlWzBdLmlkLCBuYW1lOiB0cmVlTm9kZVswXS5uYW1lLCBjaGlsZHJlbjogW10gfSBhcyBUcmVlTm9kZTtcclxuICAgIGNvbnN0IGNoaWxkQXJyYXkgPSBkYXRhLmZpbHRlcigoeCkgPT4ge1xyXG4gICAgICByZXR1cm4geC5wYXJlbnRJZCA9PT0gcm9vdElkO1xyXG4gICAgfSk7XHJcbiAgICBjaGlsZEFycmF5LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgY2hpbGQuY2hpbGRyZW4ucHVzaCh7IGlkOiBpdGVtLmlkLCBuYW1lOiBpdGVtLm5hbWUsIHBhcmVudElkOiByb290SWQsIGV4cGFuZGFibGU6IGl0ZW0uZXhwYW5kYWJsZSB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNoaWxkO1xyXG4gIH1cclxuXHJcbiAgZmluZENoaWxkTm9kZShpZDogc3RyaW5nLCBkYXRhOiBUcmVlTm9kZVtdKSB7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcclxuICAgIGZvciAoY29uc3QgY3VycmVudEZhdGhlciBvZiBkYXRhKSB7XHJcbiAgICAgIGlmIChjdXJyZW50RmF0aGVyLmlkID09PSBpZCkge1xyXG4gICAgICAgIHJldHVybiBjdXJyZW50RmF0aGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY3VycmVudEZhdGhlci5jaGlsZHJlbikge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRDaGlsZCA9IGN1cnJlbnRGYXRoZXIuY2hpbGRyZW4uZmluZCgoeCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHguaWQgPT09IGlkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChjdXJyZW50Q2hpbGQpIHtcclxuICAgICAgICAgIHJldHVybiBjdXJyZW50Q2hpbGQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcclxuICAgICAgICBmb3IgKGNvbnN0IGN1cnJlbnRDaGlsZDEgb2YgY3VycmVudEZhdGhlci5jaGlsZHJlbikge1xyXG4gICAgICAgICAgaWYgKGlkICE9PSBjdXJyZW50Q2hpbGQxLmlkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmluZENoaWxkTm9kZShpZCwgY3VycmVudEZhdGhlci5jaGlsZHJlbik7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaFRyZWVEYXRhKCkge1xyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBbXTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGF0YTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXROb2RlSWNvbihub2RlOiBUcmVlRmxhdE5vZGUpIHtcclxuICAgIGlmICh0aGlzLm9wZW5JY29uICYmIHRoaXMuY2xvc2VJY29uKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyB0aGlzLm9wZW5JY29uIDogdGhpcy5jbG9zZUljb247XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKHRoaXMubW9kdWxlSWQpIHtcclxuICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDoge1xyXG4gICAgICAgIGxldCBub2RlRGF0YSA9IHRoaXMudHJlZURhdGEuZmlsdGVyKHggPT4geyByZXR1cm4geC5pZCA9PT0gbm9kZS5pZDsgfSk7XHJcbiAgICAgICAgaWYgKG5vZGVEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHN3aXRjaCAobm9kZURhdGFbMF0ubGV2ZWxUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5EZXBhcnRtZW50Rm9sZGVyOlxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAnZGVwYXJ0bWVudF9mb2xkZXJfb3V0bGluZWQnIDogJ2RlcGFydG1lbnRfZm9sZGVyJztcclxuICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlJlZ2lvbmFsRm9sZGVyOlxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAncmVnaW9uYWxfZm9sZGVyX291dGxpbmVkJyA6ICdyZWdpb25hbF9mb2xkZXInO1xyXG4gICAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuVG9wRm9sZGVyOlxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAnZW50ZXJwcmlzZV9mb2xkZXJfb3V0bGluZWQnIDogJ2VudGVycHJpc2VfZm9sZGVyJztcclxuICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkZvbGRlcjpcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ2xvY2FsX2ZvbGRlcl9vdXRsaW5lZCcgOiAnbG9jYWxfZm9sZGVyJztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ2ZvbGRlcl9vdXRsaW5lZCcgOiAnZm9sZGVyJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdmb2xkZXJfb3V0bGluZWQnIDogJ2ZvbGRlcic7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBEYXRhVHlwZS5wcm9jZXNzOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAncHJvY2Vzc19hcmVhX291dGxpbmVkJyA6ICdwcm9jZXNzX2FyZWEnO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAna2V5Ym9hcmRfdXAnIDogJ2tleWJvYXJkX2Rvd24nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbUljb24obm9kZSkge1xyXG4gICAgc3dpdGNoICh0aGlzLm1vZHVsZUlkKSB7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUuZG9jdW1lbnQ6XHJcbiAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy50cmVlRGF0YS5maWx0ZXIoeCA9PiB7IHJldHVybiB4LmlkID09PSBub2RlLnBhcmVudElkOyB9KTtcclxuICAgICAgICBpZiAocGFyZW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHN3aXRjaCAocGFyZW50WzBdLmxldmVsVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRGVwYXJ0bWVudEZvbGRlcjpcclxuICAgICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2RlcGFydG1lbnQnO1xyXG4gICAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuUmVnaW9uYWxGb2xkZXI6XHJcbiAgICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9yZWdpb25hbCc7XHJcbiAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Ub3BGb2xkZXI6XHJcbiAgICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9lbnRlcnByaXNlJztcclxuICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkZvbGRlcjpcclxuICAgICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2xvY2FsJztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50JztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuICdkb2N1bWVudCc7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcclxuICAgICAgICByZXR1cm4gJ3Byb2Nlc3MnO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmNoZWNrbGlzdDpcclxuICAgICAgICByZXR1cm4gJ2NoZWNrbGlzdCc7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUuZGV2aWF0aW9uOlxyXG4gICAgICAgIHJldHVybiAnZGV2aWF0aW9uJztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5yaXNrOlxyXG4gICAgICAgIHJldHVybiAncmlzayc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICdkb2N1bWVudCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXROb2RlSWQobm9kZTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICByZXR1cm4gYF8ke25vZGUucGFyZW50SWQgPyBub2RlLnBhcmVudElkIDogJyd9XyR7bm9kZS5pZH1fJHtub2RlLmxldmVsfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Tm9kZUJ5SWRBbmRQYXJlbnRJZChub2RlSWQ6IHN0cmluZywgcGFyZW50SWQ6IHN0cmluZyk6IFRyZWVGbGF0Tm9kZSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZCh4ID0+IHtcclxuICAgICAgcmV0dXJuIHguaWQgPT09IG5vZGVJZCAmJiB4LnBhcmVudElkID09PSBwYXJlbnRJZDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4cGFuZE5vZGUobm9kZTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChub2RlKTtcclxuICB9XHJcblxyXG4gIGlkVG9DaGVja1NlbGVjdE9uZShpZCwgcGFyZW50SWQpIHtcclxuICAgIHJldHVybiBgJHtpZH0tJHtwYXJlbnRJZH1gO1xyXG4gIH1cclxufVxyXG4iXX0=
826
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvdHJlZU5ldy90cmVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvSSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBdUJuRixNQUFNLE9BQU8sZ0JBQWdCO0lBMEQzQixZQUFvQixLQUF3QixFQUNsQyxZQUEwQixFQUMxQixZQUE2QixFQUM3QixjQUFzQztRQUg1QixVQUFL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Q0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFrQjtRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsRUFBRSxFQUFFLFFBQVE7UUFDN0IsT0FBTyxHQUFHLEVBQUUsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDOzs7WUE3M0JGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsZ2xLQUFvQztnQkFFcEMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2FBQ3RDOzs7WUFqQ1EsaUJBQWlCO1lBR2pCLFlBQVk7WUFGWixlQUFlO1lBR2Ysc0JBQXNCOzs7dUJBK0I1QixLQUFLO3lCQUNMLEtBQUs7MkJBQ0wsS0FBSzsrQkFDTCxLQUFLOzJCQUNMLEtBQUs7aUNBQ0wsS0FBSztnQ0FDTCxLQUFLO2dDQUNMLEtBQUs7OEJBQ0wsTUFBTTtnQ0FDTixNQUFNOzRCQUNOLE1BQU07Z0NBQ04sTUFBTTs4QkFDTixNQUFNO29DQUNOLE1BQU07K0JBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgRmxhdFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBRTVNJY29uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi4vYXBwLWljb24vaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi9yZWxhdGVkL2NvbW1vbi9kYXRhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IERvY3VtZW50Tm9kZVR5cGUgfSBmcm9tICcuLi9yZWxhdGVkL2NvbW1vbi9kb2N1bWVudC1mb2xkZXItdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgSXRlbUljb25UeXBlIH0gZnJvbSAnLi4vcmVsYXRlZC9jb21tb24vaXRlbS1pY29uLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFJlbGF0ZWRDb25zdCB9IGZyb20gJy4uL3JlbGF0ZWQvY29tbW9uL3JlbGF0ZWQuY29uc3QnO1xyXG5pbXBvcnQgVHJlZUZ1bmN0aW9ucyBmcm9tICcuL3RyZWUuZnVuY3Rpb24nO1xyXG5pbXBvcnQgeyBOZXdUcmVlTW9kZWwgfSBmcm9tICcuL21vZGVsL3RyZWUubW9kZWwnO1xyXG5pbXBvcnQgeyBLRVlCT0FSRF9ET1dOX0lDT04sIEtFWUJPQVJEX1VQX0lDT04gfSBmcm9tICcuLi8uLi9jb21tb24vcW1zLWljb24uY29uc3QnO1xyXG5pbXBvcnQgeyBUcmVlRmxhdE5vZGUgfSBmcm9tICcuLi90cmVlL21vZGVsL3RyZWUtZmxhdC1ub2RlLm1vZGVsJztcclxuaW1wb3J0IHsgVHJlZUNvbmZpZyB9IGZyb20gJy4uL3RyZWUvbW9kZWwvdHJlZS1jb25maWcubW9kZWwnO1xyXG5cclxuaW50ZXJmYWNlIFRyZWVOb2RlIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjaGlsZHJlbj86IFRyZWVOb2RlW107XHJcbiAgcGFyZW50SWQ/OiBzdHJpbmc7XHJcbiAgbGV2ZWxUeXBlPzogbnVtYmVyO1xyXG4gIGV4cGFuZGFibGU6IGJvb2xlYW47XHJcbn1cclxuaW50ZXJmYWNlIElDaGVja2VkTm9kZSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBjaGVja2VkOiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3Ftcy10cmVlLW5ldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyZWUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmV3VHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSB0cmVlRGF0YTogQXJyYXk8TmV3VHJlZU1vZGVsPiA9IFtdO1xyXG4gIEBJbnB1dCgpIHRyZWVDb25maWc6IFRyZWVDb25maWc7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWREYXRhOiBBcnJheTxUcmVlRmxhdE5vZGU+ID0gW107XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRSaXNrRGF0YTogYW55ID0gW107XHJcbiAgQElucHV0KCkgZGlzYWJsZWRMaXN0OiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBleHBhbmRPblRpdGxlQ2xpY2s6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZXhwYW5kVG9DaGlsZE5vZGU6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIHBhcmVudE5vZGVPbkNsaWNrOiBUcmVlRmxhdE5vZGU7XHJcbiAgQE91dHB1dCgpIHNlbGVjdE5vZGVFdmVudDogRXZlbnRFbWl0dGVyPFRyZWVGbGF0Tm9kZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdEZvbGRlckV2ZW50OiBFdmVudEVtaXR0ZXI8VHJlZUZsYXROb2RlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2hlY2tCb3hFdmVudDogRXZlbnRFbWl0dGVyPFRyZWVGbGF0Tm9kZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2hpbGRDaGVja2VkRXZlbnQ6IEV2ZW50RW1pdHRlcjxJQ2hlY2tlZE5vZGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBub2RlRXhwYW5kRXZlbnQ6IEV2ZW50RW1pdHRlcjxUcmVlRmxhdE5vZGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBnZXRDaGlsZE5vZGVTZWxlY3RPbmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB0cmVlQ29udHJvbE5vZGVzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgbGlzdFBhcmVudE9iaiA9IHt9O1xyXG4gIGZpbHRlckRhdGE6IE5ld1RyZWVNb2RlbFtdID0gW107XHJcbiAgdHJlZU9iamVjdDogb2JqZWN0O1xyXG4gIGFyckluZGV4OiBzdHJpbmdbXSA9IFtdO1xyXG4gIGNoZWNrZWROb2RlTGlzdDogQXJyYXk8VHJlZUZsYXROb2RlPiA9IFtdO1xyXG4gIHVzZUV4cGFuZEZlYXR1cmUgPSB0cnVlO1xyXG4gIGFsbG93U2VsZWN0Rm9sZGVyID0gZmFsc2U7XHJcbiAgYXJlYU9mQ3VycmVudFByb2Nlc3MgPSAnJztcclxuICBzaG93Q2hlY2tCb3ggPSBmYWxzZTtcclxuICBhbGxvd011bHRpcGxlQ2hlY2sgPSB0cnVlO1xyXG4gIHNpbmdsZVNlbGVjdGVkTm9kZSA9IGZhbHNlO1xyXG4gIG9ubHlDaGVja0JveEZvckNoaWxkID0gZmFsc2U7XHJcbiAgb25seUZvbGRlciA9IGZhbHNlO1xyXG4gIGl0ZW1JY29uVHlwZSA9IEl0ZW1JY29uVHlwZTtcclxuICBkaXNwbGF5VHlwZSA9IDE7XHJcbiAgb3Blbkljb24gPSAnJztcclxuICBvcGVuSWNvbkNvbG9yID0gJyMxOTU0QTknO1xyXG4gIGNsb3NlSWNvbiA9ICcnO1xyXG4gIGNsb3NlSWNvbkNvbG9yID0gJyMwMDAwMDAnO1xyXG4gIGl0ZW1JY29uID0gJyc7XHJcbiAgaXRlbUljb25TdmcgPSAnJztcclxuICBpdGVtSWNvblBhdGggPSAnJztcclxuICBpdGVtSWNvbkJhc2U2NCA9ICcnO1xyXG4gIG1vZHVsZUlkOiBudW1iZXI7XHJcblxyXG4gIHRyZWVDb250cm9sID0gbmV3IEZsYXRUcmVlQ29udHJvbDxUcmVlRmxhdE5vZGU+KFxyXG4gICAgKG5vZGUpID0+IHtcclxuICAgICAgcmV0dXJuIG5vZGUubGV2ZWw7XHJcbiAgICB9LFxyXG4gICAgKG5vZGUpID0+IHtcclxuICAgICAgcmV0dXJuIG5vZGUuZXhwYW5kYWJsZTtcclxuICAgIH1cclxuICApO1xyXG5cclxuICBpc0NoZWNrZWQgPSBmYWxzZTtcclxuICBjaGVja2xpc3RTZWxlY3Rpb246IGFueTtcclxuICBpZENoZWNrSWNvbiA9ICcnO1xyXG4gIGxpc3RDaGlsZE5vZGUgPSBbXTtcclxuICBkYXRhVHlwZSA9IERhdGFUeXBlO1xyXG4gIGV4cGFuZGVkTm9kZTogVHJlZUZsYXROb2RlW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgaWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXHJcbiAgICBwcml2YXRlIGFwcEljb25TZXJ2aWNlOiBRTVNJY29uUmVnaXN0cnlTZXJ2aWNlKSB7XHJcbiAgICBpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkxpdGVyYWwoJ2tleWJvYXJkX3VwJywgZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKEtFWUJPQVJEX1VQX0lDT04pKTtcclxuICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgna2V5Ym9hcmRfZG93bicsIGRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChLRVlCT0FSRF9ET1dOX0lDT04pKTtcclxuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyUHJvY2Vzc0ljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJQcm9jZXNzQXJlYUljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJEb2N1bWVudEljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJGb2xkZXJJY29uKGljb25SZWdpc3RyeSwgZG9tU2FuaXRpemVyKTtcclxuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRGV2aWF0aW9uSWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XHJcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckNoZWNrbGlzdEljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJSaXNrSWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy50cmVlRGF0YSAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLnRyZWVEYXRhLmN1cnJlbnRWYWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KGNoYW5nZXMudHJlZURhdGEucHJldmlvdXNWYWx1ZSkpIHtcclxuICAgICAgdGhpcy50cmVlRGF0YSA9IFsuLi50aGlzLnRyZWVEYXRhLCBjaGFuZ2VzLnRyZWVEYXRhLmN1cnJlbnRWYWx1ZV07XHJcbiAgICAgIHRoaXMuZXhwYW5kZWROb2RlID0gW107XHJcbiAgICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2RlcyAmJiB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGgpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKSkge1xyXG4gICAgICAgICAgICB0aGlzLmV4cGFuZGVkTm9kZS5wdXNoKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pbml0VHJlZURhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZERhdGEgJiZcclxuICAgICAgKGNoYW5nZXMuc2VsZWN0ZWREYXRhLmN1cnJlbnRWYWx1ZS5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoY2hhbmdlcy5zZWxlY3RlZERhdGEuY3VycmVudFZhbHVlKSAhPT1cclxuICAgICAgICBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLnNlbGVjdGVkRGF0YS5wcmV2aW91c1ZhbHVlKSkpIHtcclxuICAgICAgaWYgKGNoYW5nZXMuc2VsZWN0ZWREYXRhLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnRyZWVDb25maWcuc2VsZWN0T25lKSB7XHJcbiAgICAgICAgICB0aGlzLmlkQ2hlY2tJY29uID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hlY2tTZWxlY3RlZChjaGFuZ2VzLnNlbGVjdGVkRGF0YS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaWRDaGVja0ljb24gPSAnJztcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLmRpc2FibGVkTGlzdCAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLmRpc2FibGVkTGlzdC5jdXJyZW50VmFsdWUpICE9PSBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLmRpc2FibGVkTGlzdC5wcmV2aW91c1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLmNoZWNrRGlzYWJsZWRMaXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZXhwYW5kIGFsbCBwYXJlbnQgdG8gc2hvdyBub2RlXHJcbiAgICBpZiAoY2hhbmdlcy5leHBhbmRUb0NoaWxkTm9kZSAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLmV4cGFuZFRvQ2hpbGROb2RlLmN1cnJlbnRWYWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KGNoYW5nZXMuZXhwYW5kVG9DaGlsZE5vZGUucHJldmlvdXNWYWx1ZSkpIHtcclxuICAgICAgdGhpcy5vcGVuRXhwYW5kVG9DaGlsZE5vZGUoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMuaW5pdFRyZWVEYXRhKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgaW5pdFRyZWVEYXRhKCkge1xyXG4gICAgdGhpcy50cmVlRGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAoISFpdGVtLnBhcmVudElkICYmIGl0ZW0ucGFyZW50SWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMubGlzdFBhcmVudE9ialtpdGVtLnBhcmVudElkXSA9IDE7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGl0ZW0uaWQgJiYgaXRlbS5pZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5saXN0UGFyZW50T2JqW2l0ZW0ucGFyZW50SWRdID0gMTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5maWx0ZXJEYXRhID0gdGhpcy50cmVlRGF0YTtcclxuXHJcbiAgICB0aGlzLnRyZWVPYmplY3QgPSBUcmVlRnVuY3Rpb25zLmJ1aWxkT2JqZWN0VHJlZSh0aGlzLmZpbHRlckRhdGEpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBUcmVlRnVuY3Rpb25zLmJ1aWxkQXJyYXlUcmVlKHRoaXMudHJlZU9iamVjdCB8fCB7fSwgMCkubWFwKGVsZW1lbnQgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5zb3J0RGF0YVRyZWUoZWxlbWVudCk7XHJcbiAgICAgIGVsZW1lbnQgPSBudWxsO1xyXG4gICAgICBlbGVtZW50ID0geyAuLi57fSwgLi4uaXRlbSB9O1xyXG4gICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudXNlRXhwYW5kRmVhdHVyZSA9ICF0aGlzLnRyZWVDb25maWc/LnNob3dDaGVja0JveDtcclxuICAgIHRoaXMuYWxsb3dTZWxlY3RGb2xkZXIgPSB0aGlzLnRyZWVDb25maWc/LmFsbG93U2VsZWN0Rm9sZGVyO1xyXG4gICAgdGhpcy5hcmVhT2ZDdXJyZW50UHJvY2VzcyA9IHRoaXMudHJlZUNvbmZpZz8uYXJlYU9mQ3VycmVudFByb2Nlc3M7XHJcbiAgICB0aGlzLnNob3dDaGVja0JveCA9IHRoaXMudHJlZUNvbmZpZz8uc2hvd0NoZWNrQm94O1xyXG4gICAgdGhpcy5vbmx5Q2hlY2tCb3hGb3JDaGlsZCA9IHRoaXMudHJlZUNvbmZpZz8ub25seUNoZWNrQm94Rm9yQ2hpbGQ7XHJcbiAgICB0aGlzLm1vZHVsZUlkID0gdGhpcy50cmVlQ29uZmlnPy5tb2R1bGVJZDtcclxuICAgIHRoaXMub3Blbkljb24gPSB0aGlzLnRyZWVDb25maWc/Lm9wZW5JY29uO1xyXG4gICAgdGhpcy5vcGVuSWNvbkNvbG9yID0gdGhpcy50cmVlQ29uZmlnPy5vcGVuSWNvbkNvbG9yID8gdGhpcy50cmVlQ29uZmlnPy5vcGVuSWNvbkNvbG9yIDogdGhpcy5vcGVuSWNvbkNvbG9yO1xyXG4gICAgdGhpcy5jbG9zZUljb24gPSB0aGlzLnRyZWVDb25maWc/LmNsb3NlSWNvbjtcclxuICAgIHRoaXMuY2xvc2VJY29uQ29sb3IgPSB0aGlzLnRyZWVDb25maWc/LmNsb3NlSWNvbkNvbG9yID8gdGhpcy50cmVlQ29uZmlnPy5jbG9zZUljb25Db2xvciA6IHRoaXMuY2xvc2VJY29uQ29sb3I7XHJcbiAgICB0aGlzLml0ZW1JY29uID0gdGhpcy50cmVlQ29uZmlnPy5pdGVtSWNvbjtcclxuICAgIHRoaXMuaXRlbUljb25TdmcgPSB0aGlzLnRyZWVDb25maWc/Lml0ZW1JY29uU3ZnO1xyXG4gICAgdGhpcy5pdGVtSWNvblBhdGggPSB0aGlzLnRyZWVDb25maWc/Lml0ZW1JY29uUGF0aDtcclxuICAgIHRoaXMuaXRlbUljb25CYXNlNjQgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy50cmVlQ29uZmlnPy5pdGVtSWNvbkJhc2U2NCkgYXMgc3RyaW5nO1xyXG4gICAgdGhpcy5hbGxvd011bHRpcGxlQ2hlY2sgPSB0aGlzLnRyZWVDb25maWc/LmFsbG93TXVsdGlwbGVDaGVjaztcclxuICAgIHRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlID0gdGhpcy50cmVlQ29uZmlnPy5zaW5nbGVTZWxlY3RlZE5vZGU7XHJcbiAgICB0aGlzLm9ubHlGb2xkZXIgPSB0aGlzLnRyZWVDb25maWc/Lm9ubHlGb2xkZXI7XHJcbiAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUcmVlRmxhdE5vZGU+KHRoaXMuYWxsb3dNdWx0aXBsZUNoZWNrKTsgLyogdHJ1ZTogbXVsdGlwbGUgKi9cclxuXHJcbiAgICB0aGlzLmRpc3BsYXlUeXBlID0gdGhpcy5nZXRJdGVtSWNvblR5cGUodGhpcy50cmVlQ29uZmlnKTtcclxuXHJcbiAgICAvLyBFeHBhbmQgY2hpbGQgbm9kZSB0cmVlXHJcbiAgICBpZiAodGhpcy50cmVlQ29uZmlnLmV4cGFuZEFsbCkge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZEFsbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vRGlzYWJsZWQgbm9kZVxyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWRMaXN0Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmNoZWNrRGlzYWJsZWRMaXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRhLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmNoZWNrU2VsZWN0ZWQodGhpcy5zZWxlY3RlZERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJpc2sgVHJlZVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSaXNrRGF0YS5sZW5ndGgpIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUmlza0RhdGEuZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gc2VsZWN0ZWREYXRhLmZpbmRJbmRleChlbCA9PiBlbC5pZCA9PT0geC5yb290SWQpO1xyXG4gICAgICAgICAgaWYgKHgucm9vdElkID09PSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCAmJiBpbmRleCA8IDApIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnB1c2godGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNoZWNrU2VsZWN0ZWQoc2VsZWN0ZWREYXRhKTtcclxuICAgICAgdGhpcy5jaGVja0JveEV2ZW50LmVtaXQoc2VsZWN0ZWREYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBrZWVwIGV4cGFuZFxyXG4gICAgaWYgKHRoaXMucGFyZW50Tm9kZU9uQ2xpY2sgJiYgT2JqZWN0LmtleXModGhpcy5wYXJlbnROb2RlT25DbGljaykubGVuZ3RoKSB7XHJcblxyXG4gICAgICBsZXQgcm9vdCA9IHRoaXMucGFyZW50Tm9kZU9uQ2xpY2s7XHJcbiAgICAgIGxldCB0ZW1wUGFyZW50ID0gW107XHJcbiAgICAgIHdoaWxlIChyb290ICYmIHJvb3QuaWQpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBjb25zdCB0cmVlID0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV07XHJcbiAgICAgICAgICBpZiAocm9vdC5wYXJlbnRJZCA9PT0gdHJlZS5wYXJlbnRJZCAmJiByb290LmlkID09PSB0cmVlLmlkKSB7XHJcbiAgICAgICAgICAgIHRlbXBQYXJlbnQgPSBbdHJlZSwgLi4udGVtcFBhcmVudF07XHJcbiAgICAgICAgICAgIHJvb3QgPSB0aGlzLmdldFBhcmVudCh0cmVlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRlbXBQYXJlbnQuZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZCh4KSlcclxuICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5leHBhbmRlZE5vZGUubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWROb2RlLmZvckVhY2gobm9kZSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kSW5kZXgoeCA9PiB4LnBhcmVudElkID09PSBub2RlLnBhcmVudElkICYmIHguaWQgPT09IG5vZGUuaWQpO1xyXG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpbmRleF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQYXJlbnQobm9kZTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICBjb25zdCB7IHRyZWVDb250cm9sIH0gPSB0aGlzO1xyXG4gICAgY29uc3QgY3VycmVudExldmVsID0gdHJlZUNvbnRyb2wuZ2V0TGV2ZWwobm9kZSk7XHJcblxyXG4gICAgaWYgKGN1cnJlbnRMZXZlbCA8IDEpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5kZXggPSB0cmVlQ29udHJvbC5kYXRhTm9kZXMuaW5kZXhPZihub2RlKSAtIDE7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IGluZGV4OyBpID49IDA7IGktLSkge1xyXG4gICAgICBjb25zdCBjdXJyZW50Tm9kZSA9IHRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXTtcclxuXHJcbiAgICAgIGlmICh0cmVlQ29udHJvbC5nZXRMZXZlbChjdXJyZW50Tm9kZSkgPCBjdXJyZW50TGV2ZWwpIHtcclxuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5FeHBhbmRUb0NoaWxkTm9kZSgpIHtcclxuICAgIGlmICh0aGlzLmV4cGFuZFRvQ2hpbGROb2RlLmxlbmd0aCkge1xyXG4gICAgICBpZiAodGhpcy5leHBhbmRUb0NoaWxkTm9kZVswXSA9PT0gJycpIHtcclxuICAgICAgICB0aGlzLmlkQ2hlY2tJY29uID0gJyc7XHJcbiAgICAgICAgdGhpcy50cmVlQ29udHJvbC5jb2xsYXBzZUFsbCgpO1xyXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGl0ZW1NYXJrQ2hlY2tlZCA9IHRoaXMuZXhwYW5kVG9DaGlsZE5vZGVbdGhpcy5leHBhbmRUb0NoaWxkTm9kZS5sZW5ndGggLSAxXS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICBsZXQgcGFyZW50SXRlbSA9ICcnO1xyXG4gICAgICAvLyBnZXQgYWxsIGNoaWxkcmVuIG5vZGVzIG9uIHNhbWUgbGV2ZWxcclxuICAgICAgbGV0IGxpc3RDaGlsZE5vZGVTYW1lTGV2ZWwgPSB0aGlzLmZpbmRDaGlsZE5vZGUoaXRlbU1hcmtDaGVja2VkLCB0aGlzLmRhdGFTb3VyY2UuZGF0YSk7XHJcbiAgICAgIC8vIGdldCBhbGwgY2hpbGRyZW4gaW4gYWxsIGxldmVsXHJcbiAgICAgIHRoaXMubGlzdENoaWxkTm9kZSA9IFtdO1xyXG4gICAgICB0aGlzLmdldENoaWxkKGxpc3RDaGlsZE5vZGVTYW1lTGV2ZWwpO1xyXG4gICAgICB0aGlzLmdldENoaWxkTm9kZVNlbGVjdE9uZS5lbWl0KHRoaXMubGlzdENoaWxkTm9kZSk7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGl0ZW1NYXJrQ2hlY2tlZCA9PT0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uaWQpIHtcclxuICAgICAgICAgIHBhcmVudEl0ZW0gPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5wYXJlbnRJZDtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0Tm9kZUV2ZW50LmVtaXQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmV4cGFuZFRvQ2hpbGROb2RlLmZvckVhY2goZWwgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmlkID09PSBlbC50b1VwcGVyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlkQ2hlY2tJY29uID0gdGhpcy5pZFRvQ2hlY2tTZWxlY3RPbmUoaXRlbU1hcmtDaGVja2VkLCBwYXJlbnRJdGVtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrRGlzYWJsZWRMaXN0KCkge1xyXG4gICAgLy8gRGlzYWJsZSBMaXN0XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZExpc3QubGVuZ3RoKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkTGlzdC5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgaWYgKHguaWQudG9Mb3dlckNhc2UoKSA9PT0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uaWQudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAmJiAoIXgucGFyZW50SWQgfHwgeC5wYXJlbnRJZC50b0xvd2VyQ2FzZSgpID09PSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXT8ucGFyZW50SWQudG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy9TZWxlY3RlZCBub2RlIHdpdGggc2VsZWN0IG9uZVxyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWRMaXN0Lmxlbmd0aCAmJiB0aGlzLnRyZWVDb25maWcuc2VsZWN0T25lKSB7XHJcbiAgICAgIGxldCBpdGVtTWFya0NoZWNrZWQgPSB0aGlzLmRpc2FibGVkTGlzdFt0aGlzLmRpc2FibGVkTGlzdC5sZW5ndGggLSAxXS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICB0aGlzLmlkQ2hlY2tJY29uID0gaXRlbU1hcmtDaGVja2VkO1xyXG4gICAgICAvLyBnZXQgYWxsIGNoaWxkcmVuIG5vZGVzIG9uIHNhbWUgbGV2ZWxcclxuICAgICAgbGV0IGxpc3RDaGlsZE5vZGVTYW1lTGV2ZWwgPSB0aGlzLmZpbmRDaGlsZE5vZGUoaXRlbU1hcmtDaGVja2VkLCB0aGlzLmRhdGFTb3VyY2UuZGF0YSk7XHJcbiAgICAgIGxldCBwYXJlbnRJdGVtID0gJyc7XHJcbiAgICAgIC8vIGdldCBhbGwgY2hpbGRyZW4gaW4gYWxsIGxldmVsXHJcbiAgICAgIHRoaXMubGlzdENoaWxkTm9kZSA9IFtdO1xyXG4gICAgICB0aGlzLmdldENoaWxkKGxpc3RDaGlsZE5vZGVTYW1lTGV2ZWwpO1xyXG4gICAgICB0aGlzLmdldENoaWxkTm9kZVNlbGVjdE9uZS5lbWl0KHRoaXMubGlzdENoaWxkTm9kZSk7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGl0ZW1NYXJrQ2hlY2tlZCA9PT0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uaWQpIHtcclxuICAgICAgICAgIHBhcmVudEl0ZW0gPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5wYXJlbnRJZDtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0Tm9kZUV2ZW50LmVtaXQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVkTGlzdC5mb3JFYWNoKGVsID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCA9PT0gZWwudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gcmVtb3ZlIGFsbCBjaGlsZHJlbiBub2RlcyB3aGVuIHVzZXIgZG9udCBuZWVkIHRvIHNob3cgdGhlbVxyXG4gICAgICAgIHRoaXMubGlzdENoaWxkTm9kZS5mb3JFYWNoKGVsID0+IHtcclxuICAgICAgICAgIGlmIChlbC5pZCAmJiB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXT8uaWQgPT09IGVsLmlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlkQ2hlY2tJY29uID0gdGhpcy5pZFRvQ2hlY2tTZWxlY3RPbmUoaXRlbU1hcmtDaGVja2VkLCBwYXJlbnRJdGVtKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaWRDaGVja0ljb24gPSAnJztcclxuICAgICAgdGhpcy50cmVlQ29udHJvbC5jb2xsYXBzZUFsbCgpO1xyXG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENoaWxkKG9iaikge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmouY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKG9iai5jaGlsZHJlbltpXS5jaGlsZHJlbikge1xyXG4gICAgICAgIHRoaXMuZ2V0Q2hpbGQob2JqLmNoaWxkcmVuW2ldKTtcclxuICAgICAgICBkZWxldGUgb2JqLmNoaWxkcmVuW2ldLmNoaWxkcmVuO1xyXG4gICAgICAgIHRoaXMubGlzdENoaWxkTm9kZS5wdXNoKG9iai5jaGlsZHJlbltpXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5saXN0Q2hpbGROb2RlLnB1c2gob2JqLmNoaWxkcmVuW2ldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc29ydERhdGFUcmVlKG9iaikge1xyXG4gICAgaWYgKG9iai5jaGlsZHJlbikge1xyXG4gICAgICBsZXQgY2hpbGQgPSBbXTtcclxuICAgICAgY29uc3QgbGVhZk5vZGUgPSBvYmouY2hpbGRyZW4uZmlsdGVyKHggPT4gIXguY2hpbGRyZW4pO1xyXG4gICAgICBjb25zdCBzdWJGb2xkZXJOb2RlID0gb2JqLmNoaWxkcmVuLmZpbHRlcih4ID0+IHguY2hpbGRyZW4pO1xyXG4gICAgICAvLyBmb3IobGV0IGluZGV4ID0gc3ViRm9sZGVyTm9kZS5sZW5ndGggLSAxOyBpbmRleCA+PSAwIDsgaW5kZXgtLSl7XHJcbiAgICAgIC8vICAgbGV0IGVsID0gc3ViRm9sZGVyTm9kZVtpbmRleF07XHJcbiAgICAgIC8vICAgdGhpcy5zb3J0RGF0YVRyZWUoZWwpO1xyXG4gICAgICAvLyAgIGNoaWxkLnVuc2hpZnQoZWwpO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIHN1YkZvbGRlck5vZGUuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBsZXQgZWwgPSBlbGVtZW50O1xyXG4gICAgICAgIHRoaXMuc29ydERhdGFUcmVlKGVsKTtcclxuICAgICAgICBjaGlsZC5wdXNoKGVsKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBsZWFmTm9kZS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIGxldCBlbCA9IGVsZW1lbnQ7XHJcbiAgICAgICAgY2hpbGQucHVzaChlbCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBvYmouY2hpbGRyZW4gPSBjaGlsZDtcclxuICAgIH1cclxuICAgIHJldHVybiBvYmo7XHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZVBhdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMudHJlZUNvbmZpZy5pdGVtSWNvbkJhc2U2NCkgYXMgc3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tTZWxlY3RlZChpdGVtU2VsZWN0ZWQ6IFRyZWVGbGF0Tm9kZVtdKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnRyZWVDb250cm9sWydkYXRhTm9kZXMnXSkgcmV0dXJuO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgdHJlZSA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldO1xyXG4gICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmRlc2VsZWN0KHRyZWUpO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGl0ZW1TZWxlY3RlZC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IGl0ZW1TZWxlY3RlZFtqXTtcclxuICAgICAgICAgIGlmICh0cmVlLmlkLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IGVsZW1lbnQuaWQudG9Mb2NhbGVMb3dlckNhc2UoKSAmJiAoIWVsZW1lbnQucGFyZW50SWQgfHwgdHJlZS5wYXJlbnRJZC50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSBlbGVtZW50LnBhcmVudElkLnRvTG9jYWxlTG93ZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdCh0cmVlKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMudHJlZUNvbmZpZy5zZWxlY3RPbmUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmlkQ2hlY2tJY29uID0gdGhpcy5pZFRvQ2hlY2tTZWxlY3RPbmUodHJlZS5pZCwgdHJlZS5wYXJlbnRJZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sIDUwMCk7XHJcblxyXG4gIH1cclxuXHJcbiAgY2hlY2tTZWxlY3RlZFNhbWVOb2RlKGl0ZW1TZWxlY3RlZDogVHJlZUZsYXROb2RlW10sIGZsYWc6IGJvb2xlYW4pIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgdHJlZSA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGl0ZW1TZWxlY3RlZC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBpdGVtU2VsZWN0ZWRbal07XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuaWQgJiYgdHJlZS5pZCA9PT0gZWxlbWVudC5pZFxyXG4gICAgICAgICAgJiYgdHJlZS5wYXJlbnRJZCA9PT0gZWxlbWVudC5wYXJlbnRJZCAmJiAhdHJlZS5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgZmxhZyA/IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdCh0cmVlKSA6IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmRlc2VsZWN0KHRyZWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SXRlbUljb25UeXBlKHRyZWVDb25maWc6IFRyZWVDb25maWcpIHtcclxuICAgIGlmICh0cmVlQ29uZmlnLml0ZW1JY29uICYmIHRyZWVDb25maWcuaXRlbUljb24ubGVuZ3RoKSByZXR1cm4gdGhpcy5pdGVtSWNvblR5cGUubmFtZTtcclxuICAgIGlmICh0cmVlQ29uZmlnLml0ZW1JY29uUGF0aCAmJiB0cmVlQ29uZmlnLml0ZW1JY29uUGF0aC5sZW5ndGgpIHJldHVybiB0aGlzLml0ZW1JY29uVHlwZS5wYXRoO1xyXG4gICAgaWYgKHRyZWVDb25maWcuaXRlbUljb25CYXNlNjQgJiYgdHJlZUNvbmZpZy5pdGVtSWNvbkJhc2U2NC5sZW5ndGgpIHJldHVybiB0aGlzLml0ZW1JY29uVHlwZS5iYXNlNjQ7XHJcbiAgICBpZiAodHJlZUNvbmZpZy5pdGVtSWNvblN2ZyAmJiB0cmVlQ29uZmlnLml0ZW1JY29uU3ZnLmxlbmd0aCkgcmV0dXJuIHRoaXMuaXRlbUljb25UeXBlLnN2ZztcclxuICAgIHJldHVybiB0aGlzLml0ZW1JY29uVHlwZS5ub25lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2Zvcm1lciA9IChub2RlOiBUcmVlTm9kZSwgbGV2ZWw6IG51bWJlcikgPT4ge1xyXG4gICAgbGV0IGNoZWNrSGFzQ2hpbGQgPSB0cnVlO1xyXG4gICAgaWYgKCFub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgIGNoZWNrSGFzQ2hpbGQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAobm9kZS5leHBhbmRhYmxlKSB7XHJcbiAgICAgIGNoZWNrSGFzQ2hpbGQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuICAgIGVsc2UgaWYgKFxyXG4gICAgICAhIW5vZGUuY2hpbGRyZW4gJiZcclxuICAgICAgbm9kZS5jaGlsZHJlbi5sZW5ndGggJiZcclxuICAgICAgbm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiZcclxuICAgICAgIW5vZGUuY2hpbGRyZW5bMF0ubmFtZSAmJlxyXG4gICAgICBub2RlLmlkLnRvU3RyaW5nKCkgPT09IHRoaXMuYXJlYU9mQ3VycmVudFByb2Nlc3NcclxuICAgICkge1xyXG4gICAgICBjaGVja0hhc0NoaWxkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEodGhpcy5saXN0UGFyZW50T2JqW25vZGUuaWRdID09PSAxKSkge1xyXG4gICAgICBjaGVja0hhc0NoaWxkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZXhwYW5kYWJsZTogbm9kZS5leHBhbmRhYmxlLFxyXG4gICAgICBuYW1lOiBub2RlLm5hbWUsXHJcbiAgICAgIGxldmVsLFxyXG4gICAgICBpZDogbm9kZS5pZCxcclxuICAgICAgaGFzQ2hpbGQ6IGNoZWNrSGFzQ2hpbGQsXHJcbiAgICAgIHBhcmVudElkOiBub2RlLnBhcmVudElkLFxyXG4gICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgIGxldmVsVHlwZTogbm9kZS5sZXZlbFR5cGVcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgdHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKFxyXG4gICAgdGhpcy50cmFuc2Zvcm1lcixcclxuICAgIChub2RlKSA9PiB7XHJcbiAgICAgIHJldHVybiBub2RlLmxldmVsO1xyXG4gICAgfSxcclxuICAgIChub2RlKSA9PiB7XHJcbiAgICAgIHJldHVybiBub2RlLmV4cGFuZGFibGU7XHJcbiAgICB9LFxyXG4gICAgKG5vZGUpID0+IHtcclxuICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW47XHJcbiAgICB9XHJcbiAgKTtcclxuXHJcbiAgZGF0YVNvdXJjZSA9IG5ldyBNYXRUcmVlRmxhdERhdGFTb3VyY2UodGhpcy50cmVlQ29udHJvbCwgdGhpcy50cmVlRmxhdHRlbmVyKTtcclxuXHJcbiAgLyoqIFdoZXRoZXIgYWxsIHRoZSBkZXNjZW5kYW50cyBvZiB0aGUgbm9kZSBhcmUgc2VsZWN0ZWQgKi9cclxuICBkZXNjZW5kYW50c0FsbFNlbGVjdGVkKG5vZGU6IFRyZWVGbGF0Tm9kZSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZGVzY2VuZGFudHMgPSAhdGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUgPyB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkKSA6IFtdO1xyXG5cclxuICAgIGlmICghZGVzY2VuZGFudHMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpO1xyXG5cclxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gZGVzY2VuZGFudHMuZXZlcnkoY2hpbGQgPT4gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZChjaGlsZCkpO1xyXG4gICAgaWYgKCFzZWxlY3RlZCAmJiBhbGxTZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3Qobm9kZSk7XHJcbiAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYWxsU2VsZWN0ZWQ7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqIFdoZXRoZXIgcGFydCBvZiB0aGUgZGVzY2VuZGFudHMgYXJlIHNlbGVjdGVkICovXHJcbiAgZGVzY2VuZGFudHNQYXJ0aWFsbHlTZWxlY3RlZChub2RlOiBUcmVlRmxhdE5vZGUpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gIXRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlID8gdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKS5maWx0ZXIoaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCkgOiBbXTtcclxuICAgIGNvbnN0IHJlc3VsdCA9IGRlc2NlbmRhbnRzLnNvbWUoY2hpbGQgPT4gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZChjaGlsZCkpO1xyXG4gICAgcmV0dXJuIHJlc3VsdCAmJiAhdGhpcy5kZXNjZW5kYW50c0FsbFNlbGVjdGVkKG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRvZ2dsZSB0aGUgdG8tZG8gaXRlbSBzZWxlY3Rpb24uIFNlbGVjdC9kZXNlbGVjdCBhbGwgdGhlIGRlc2NlbmRhbnRzIG5vZGUgKi9cclxuICBwdWJsaWMgdG9kb0l0ZW1TZWxlY3Rpb25Ub2dnbGUobm9kZTogVHJlZUZsYXROb2RlKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKHRoaXMubW9kdWxlSWQpIHtcclxuICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDpcclxuICAgICAgICBub2RlLml0ZW1UeXBlID0gbm9kZS5leHBhbmRhYmxlID8gRGF0YVR5cGUuZm9sZGVyIDogRGF0YVR5cGUuZG9jdW1lbnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcclxuICAgICAgICBub2RlLml0ZW1UeXBlID0gbm9kZS5leHBhbmRhYmxlID8gRGF0YVR5cGUuYXJlYSA6IERhdGFUeXBlLnByb2Nlc3M7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUuY2hlY2tsaXN0OlxyXG4gICAgICAgIG5vZGUuaXRlbVR5cGUgPSBub2RlLmV4cGFuZGFibGUgPyBEYXRhVHlwZS5jaGVja2xpc3RDYXRlZ29yeSA6IERhdGFUeXBlLmNoZWNrbGlzdDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5kZXZpYXRpb246XHJcbiAgICAgICAgbm9kZS5pdGVtVHlwZSA9IG5vZGUuZXhwYW5kYWJsZSA/IERhdGFUeXBlLmRldmlhdGlvblR5cGUgOiBEYXRhVHlwZS5kZXZpYXRpb247XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUucmlzazpcclxuICAgICAgICBub2RlLml0ZW1UeXBlID0gbm9kZS5leHBhbmRhYmxlID8gRGF0YVR5cGUucmlza0ZvbGRlciA6IERhdGFUeXBlLnJpc2s7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdE5vZGVFdmVudC5lbWl0KG5vZGUpO1xyXG4gICAgLy8gdHJlZSBoYXZlIGR1cGxpY2F0ZSBub2RlXHJcbiAgICBpZiAodGhpcy50cmVlQ29uZmlnLmNhbkhhdmVEdXBJZCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmlkID09PSBub2RlLmlkXHJcbiAgICAgICAgICAmJiB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5wYXJlbnRJZCA9PT0gbm9kZS5wYXJlbnRJZFxyXG4gICAgICAgICAgJiYgIXRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi50b2dnbGUodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24udG9nZ2xlKG5vZGUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBwcm9jZXNzLyBkb2N1bWVudCBzaW5nbGUgc2VsZWN0ZWRcclxuICAgIGlmICh0aGlzLnNpbmdsZVNlbGVjdGVkTm9kZSkge1xyXG4gICAgICB0aGlzLmNoZWNrQm94RXZlbnQuZW1pdCh0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkKTtcclxuXHJcbiAgICAgIHRoaXMuY2hlY2tTZWxlY3RlZFNhbWVOb2RlKGRlc2NlbmRhbnRzLCB0aGlzLmRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZSkpO1xyXG5cclxuICAgICAgIXRoaXMuZGVzY2VuZGFudHNBbGxTZWxlY3RlZChub2RlKVxyXG4gICAgICAgID8gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0KC4uLmRlc2NlbmRhbnRzKVxyXG4gICAgICAgIDogdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uZGVzZWxlY3QoLi4uZGVzY2VuZGFudHMpO1xyXG5cclxuICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgIGNvbnN0IGFsbE5vZGVJc1BhcmVudCA9IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmV2ZXJ5KGNoaWxkID0+IGNoaWxkLmV4cGFuZGFibGUpO1xyXG4gICAgICBpZiAoYWxsTm9kZUlzUGFyZW50KSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmRlc2VsZWN0KGVsZW1lbnQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hlY2tCb3hFdmVudC5lbWl0KHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZG9DaGlsZFNlbGVjdGlvblRvZ2dsZShub2RlOiBUcmVlRmxhdE5vZGUpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmlkID09PSBub2RlLmlkXHJcbiAgICAgICAgJiYgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0ucGFyZW50SWQgPT09IG5vZGUucGFyZW50SWRcclxuICAgICAgICAmJiAhdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uZGlzYWJsZWQpIHtcclxuICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi50b2dnbGUodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi50b2dnbGUobm9kZSk7XHJcbiAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5jaGVja0JveEV2ZW50LmVtaXQodGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZG9JdGVtU2VsZWN0aW9uKG5vZGVzOiBUcmVlTm9kZVtdKTogdm9pZCB7XHJcbiAgICBub2Rlcy5mb3JFYWNoKFxyXG4gICAgICBub2RlID0+IHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uaWQgPT09IG5vZGUuaWQgJiZcclxuICAgICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0ucGFyZW50SWQgPT09IG5vZGUucGFyZW50SWQgJiZcclxuICAgICAgICAgICAgIXRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmRpc2FibGVkICYmICF0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5leHBhbmRhYmxlKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSkpXHJcbiAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24udG9nZ2xlKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLmNoZWNrQm94RXZlbnQuZW1pdCh0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICB0b2RvSXRlbVNlbGVjdGlvblByb2Nlc3NEb2N1bWVudChub2RlczogVHJlZU5vZGVbXSk6IHZvaWQge1xyXG4gICAgbm9kZXMuZm9yRWFjaChcclxuICAgICAgbm9kZSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmlkID09PSBub2RlLmlkICYmXHJcbiAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLnBhcmVudElkID09PSBub2RlLnBhcmVudElkICYmXHJcbiAgICAgICAgICAgICF0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5kaXNhYmxlZCAmJiAhdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uZXhwYW5kYWJsZSkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pKVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnRvZ2dsZSh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2hlY2tCb3hFdmVudC5lbWl0KHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkKTtcclxuICAgICAgdGhpcy50cmVlQ29udHJvbE5vZGVzLmVtaXQodGhpcy50cmVlQ29udHJvbCk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZG9Gb2xkZXJTZWxlY3Rpb24obm9kZXM6IFRyZWVOb2RlW10pOiB2b2lkIHtcclxuICAgIG5vZGVzLmZvckVhY2goXHJcbiAgICAgIG5vZGUgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCA9PT0gbm9kZS5pZCAmJlxyXG4gICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5wYXJlbnRJZCA9PT0gbm9kZS5wYXJlbnRJZCAmJlxyXG4gICAgICAgICAgICAhdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uZGlzYWJsZWQgJiYgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uZXhwYW5kYWJsZSkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pKVxyXG4gICAgICAgICAgICAgIHRoaXMudG9kb0l0ZW1TZWxlY3Rpb25Ub2dnbGUodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuY2hlY2tCb3hFdmVudC5lbWl0KHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIGhhc0NoaWxkID0gKF86IG51bWJlciwgbm9kZTogVHJlZUZsYXROb2RlKSA9PiB7XHJcbiAgICByZXR1cm4gbm9kZS5leHBhbmRhYmxlO1xyXG4gIH07XHJcblxyXG4gIHNlbGVjdE5vZGUobm9kZTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICBpZiAod2luZG93W1JlbGF0ZWRDb25zdC5JU19ESVNQTEFZX1NFQVJDSF9SRVNVTFRdKSB7XHJcbiAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShSZWxhdGVkQ29uc3QuSElERV9TRUFSQ0hfUkVTVUxULCAnKicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnRyZWVDb25maWcuc2VsZWN0T25lKSB7XHJcbiAgICAgIG5vZGUuaXRlbVR5cGUgPSB0aGlzLmNoZWNrRGF0YVR5cGVTZWxlY3ROb2RlKG5vZGUpO1xyXG4gICAgICB0aGlzLmlkQ2hlY2tJY29uID0gdGhpcy5pZFRvQ2hlY2tTZWxlY3RPbmUobm9kZS5pZCwgbm9kZS5wYXJlbnRJZCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0Tm9kZUV2ZW50LmVtaXQobm9kZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0RhdGFUeXBlU2VsZWN0Tm9kZShub2RlOiBUcmVlRmxhdE5vZGUpIHtcclxuICAgIGxldCBpdGVtVHlwZSA9IC0xO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5tb2R1bGVJZCkge1xyXG4gICAgICBjYXNlIERhdGFUeXBlLnByb2Nlc3M6XHJcbiAgICAgICAgaXRlbVR5cGUgPSBub2RlLmV4cGFuZGFibGUgPyBEYXRhVHlwZS5hcmVhIDogRGF0YVR5cGUucHJvY2VzcztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDpcclxuICAgICAgICBpdGVtVHlwZSA9IG5vZGUuZXhwYW5kYWJsZSA/IERhdGFUeXBlLmZvbGRlciA6IERhdGFUeXBlLmRvY3VtZW50O1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMubW9kdWxlSWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGl0ZW1UeXBlO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Rm9sZGVyKG5vZGU6IFRyZWVGbGF0Tm9kZSkge1xyXG4gICAgaWYgKHRoaXMudHJlZUNvbmZpZy5zZWxlY3RPbmUpIHtcclxuICAgICAgdGhpcy5vbkV4cGFuZE5vZGUobm9kZSwgdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpKVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RGb2xkZXJFdmVudC5lbWl0KG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgb25FeHBhbmROb2RlKG5vZGU6IFRyZWVGbGF0Tm9kZSwgaXNFeHBhbmROb2RlPzogYm9vbGVhbikge1xyXG4gICAgaWYgKGlzRXhwYW5kTm9kZSkge1xyXG4gICAgICB0aGlzLm5vZGVFeHBhbmRFdmVudC5lbWl0KG5vZGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJlZUNvbmZpZy5zZWxlY3RPbmUgJiYgdGhpcy50cmVlQ29uZmlnLmFsbG93U2VsZWN0Rm9sZGVyKSB7XHJcbiAgICAgIHRoaXMuaWRDaGVja0ljb24gPSB0aGlzLmlkVG9DaGVja1NlbGVjdE9uZShub2RlLmlkLCBub2RlLnBhcmVudElkKTtcclxuICAgICAgbm9kZS5pdGVtVHlwZSA9IHRoaXMuY2hlY2tEYXRhVHlwZVNlbGVjdE5vZGUobm9kZSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0Tm9kZUV2ZW50LmVtaXQobm9kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvd1tSZWxhdGVkQ29uc3QuSVNfRElTUExBWV9TRUFSQ0hfUkVTVUxUXSkge1xyXG4gICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoUmVsYXRlZENvbnN0LkhJREVfU0VBUkNIX1JFU1VMVCwgJyonKTtcclxuICAgIH1cclxuICAgIC8vIHNldCB1c2VFeHBhbmRGZWF0dXJlID0gdHJ1ZSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHRyZWUgbG9hZGluZ1xyXG4gICAgaWYgKCFpc0V4cGFuZE5vZGUgfHwgIXRoaXMudXNlRXhwYW5kRmVhdHVyZSkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXJySW5kZXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAodGhpcy5hcnJJbmRleFtpXSA9PT0gbm9kZS5pZCkge1xyXG4gICAgICAgICAgdGhpcy5hcnJJbmRleC5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBnZXQgYXJyYXkgaW5kZXggdG8gZXhwYW5kIG5vZGUgYWZ0ZXIgcmVmcmVzaCBkYXRhc291cmNlXHJcbiAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgbGV0IGlzQ2hhbmdlID0gZmFsc2U7XHJcbiAgICBsZXQgaXNSZW1vdmUgPSBmYWxzZTtcclxuICAgIHRoaXMuYXJySW5kZXgucHVzaChub2RlLmlkKTtcclxuXHJcbiAgICBjb25zdCBjaGlsZEFycmF5ID0gdGhpcy50cmVlRGF0YS5maWx0ZXIoKHgpID0+IHtcclxuICAgICAgcmV0dXJuIHgucGFyZW50SWQgPT09IG5vZGUuaWQ7XHJcbiAgICB9KTtcclxuICAgIGxldCByb290SWQgPSAnMCc7XHJcbiAgICBsZXQgcGFyZW50RWxlbWVudDogVHJlZU5vZGU7XHJcbiAgICBsZXQgY2hpbGRyZW5MaXN0OiBUcmVlTm9kZVtdO1xyXG4gICAgaWYgKGNoaWxkQXJyYXkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNoaWxkQXJyYXkuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5wYXJlbnRJZCA9PT0gcm9vdElkKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBnZXQgY2hpbGQgbm9kZSBmcm9tIG9yaWdpbmFsIGRhdGFzb3VyY2VcclxuICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLmdldENoaWxkTm9kZShpdGVtLmlkLCBjaGlsZEFycmF5KTtcclxuICAgICAgcm9vdElkID0gaXRlbS5wYXJlbnRJZDtcclxuXHJcbiAgICAgIGluZGV4ID0gdGhpcy5nZXROb2RlSW5kZXgoY2hpbGQuaWQsIHVuZGVmaW5lZCwgdGhpcy5kYXRhU291cmNlWydfdHJlZUNvbnRyb2wnXS5kYXRhTm9kZXMpO1xyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gYWRkIGNoaWxkIG5vZGUgdG8gZXhwYW5kIG5vZGVcclxuICAgICAgcGFyZW50RWxlbWVudCA9IHRoaXMuZmluZENoaWxkTm9kZShub2RlLmlkLCB0aGlzLmRhdGFTb3VyY2UuZGF0YSk7XHJcbiAgICAgIGlmIChwYXJlbnRFbGVtZW50KSB7XHJcbiAgICAgICAgLy8gdGVtcG9yYXJ5IHJlbW92ZSBhbGwgbm9kZSB3aXRob3V0IGNoaWxkcmVuID0+IHB1cnBvc2UgdG8gYWRkIG5vZGUgZm9sZGVyIGZpcnN0XHJcbiAgICAgICAgaWYgKCFpc1JlbW92ZSkge1xyXG4gICAgICAgICAgY2hpbGRyZW5MaXN0ID0gWy4uLnBhcmVudEVsZW1lbnQuY2hpbGRyZW5dO1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbihwYXJlbnRFbGVtZW50KTtcclxuICAgICAgICAgIGlzUmVtb3ZlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYWRkIG5vZGUgZm9sZGVyIGZpcnN0XHJcbiAgICAgICAgcGFyZW50RWxlbWVudC5jaGlsZHJlbi5wdXNoKGNoaWxkKTtcclxuICAgICAgICBpc0NoYW5nZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gYWRkIG5vZGUgd2l0aG91dCBjaGlsZHJlbiBhZ2FpblxyXG4gICAgaWYgKGlzUmVtb3ZlKSB7XHJcbiAgICAgIHRoaXMuYWRkQ2hpbGRyZW4ocGFyZW50RWxlbWVudCwgY2hpbGRyZW5MaXN0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyByZWZyZXNoIGRhdGEgYW5kIGV4cGFuZCB0cmVlIG5vZGUgZnJvbSByb290IG5vZGVcclxuICAgIGlmIChpc0NoYW5nZSkge1xyXG4gICAgICB0aGlzLnJlZnJlc2hUcmVlRGF0YSgpO1xyXG4gICAgICB0aGlzLmFyckluZGV4LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBpbmRleCA9IHRoaXMuZ2V0Tm9kZUluZGV4KGl0ZW0sIHVuZGVmaW5lZCwgdGhpcy5kYXRhU291cmNlWydfdHJlZUNvbnRyb2wnXS5kYXRhTm9kZXMpO1xyXG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2luZGV4XSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpc0NoYW5nZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ2hpbGRyZW4ocGFyZW50RWxlbWVudD86IFRyZWVOb2RlKSB7XHJcbiAgICBpZiAocGFyZW50RWxlbWVudC5jaGlsZHJlbikge1xyXG4gICAgICBwYXJlbnRFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRDaGlsZHJlbihwYXJlbnRFbGVtZW50PzogVHJlZU5vZGUsIGNoaWxkcmVuTGlzdD86IFRyZWVOb2RlW10pIHtcclxuICAgIGlmIChjaGlsZHJlbkxpc3QpIHtcclxuICAgICAgY2hpbGRyZW5MaXN0LmZvckVhY2goKGUpID0+IHtcclxuICAgICAgICBwYXJlbnRFbGVtZW50LmNoaWxkcmVuLnB1c2goZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Tm9kZUluZGV4KGlkOiBzdHJpbmcsIGxldmVsPzogbnVtYmVyLCBkYXRhPzogYW55W10pIHtcclxuICAgIGlmIChsZXZlbCkge1xyXG4gICAgICByZXR1cm4gZGF0YS5maW5kSW5kZXgoKHgpID0+IHtcclxuICAgICAgICByZXR1cm4geC5pZCA9PT0gaWQgJiYgeC5sZXZlbCA9PT0gbGV2ZWw7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXRhLmZpbmRJbmRleCgoeCkgPT4ge1xyXG4gICAgICByZXR1cm4geC5pZCA9PT0gaWQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkTm9kZShyb290SWQ6IHN0cmluZywgZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCB0cmVlTm9kZSA9IGRhdGEuZmlsdGVyKCh4KSA9PiB7XHJcbiAgICAgIHJldHVybiB4LmlkID09PSByb290SWQgJiYgeC5leHBhbmRhYmxlO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBjaGlsZCA9IHsgaWQ6IHRyZWVOb2RlWzBdLmlkLCBuYW1lOiB0cmVlTm9kZVswXS5uYW1lLCBjaGlsZHJlbjogW10gfSBhcyBUcmVlTm9kZTtcclxuICAgIGNvbnN0IGNoaWxkQXJyYXkgPSBkYXRhLmZpbHRlcigoeCkgPT4ge1xyXG4gICAgICByZXR1cm4geC5wYXJlbnRJZCA9PT0gcm9vdElkO1xyXG4gICAgfSk7XHJcbiAgICBjaGlsZEFycmF5LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgY2hpbGQuY2hpbGRyZW4ucHVzaCh7IGlkOiBpdGVtLmlkLCBuYW1lOiBpdGVtLm5hbWUsIHBhcmVudElkOiByb290SWQsIGV4cGFuZGFibGU6IGl0ZW0uZXhwYW5kYWJsZSB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNoaWxkO1xyXG4gIH1cclxuXHJcbiAgZmluZENoaWxkTm9kZShpZDogc3RyaW5nLCBkYXRhOiBUcmVlTm9kZVtdKSB7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcclxuICAgIGZvciAoY29uc3QgY3VycmVudEZhdGhlciBvZiBkYXRhKSB7XHJcbiAgICAgIGlmIChjdXJyZW50RmF0aGVyLmlkID09PSBpZCkge1xyXG4gICAgICAgIHJldHVybiBjdXJyZW50RmF0aGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY3VycmVudEZhdGhlci5jaGlsZHJlbikge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRDaGlsZCA9IGN1cnJlbnRGYXRoZXIuY2hpbGRyZW4uZmluZCgoeCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHguaWQgPT09IGlkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChjdXJyZW50Q2hpbGQpIHtcclxuICAgICAgICAgIHJldHVybiBjdXJyZW50Q2hpbGQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcclxuICAgICAgICBmb3IgKGNvbnN0IGN1cnJlbnRDaGlsZDEgb2YgY3VycmVudEZhdGhlci5jaGlsZHJlbikge1xyXG4gICAgICAgICAgaWYgKGlkICE9PSBjdXJyZW50Q2hpbGQxLmlkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmluZENoaWxkTm9kZShpZCwgY3VycmVudEZhdGhlci5jaGlsZHJlbik7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaFRyZWVEYXRhKCkge1xyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBbXTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGF0YTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXROb2RlSWNvbihub2RlOiBUcmVlRmxhdE5vZGUpIHtcclxuICAgIGlmICh0aGlzLm9wZW5JY29uICYmIHRoaXMuY2xvc2VJY29uKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyB0aGlzLm9wZW5JY29uIDogdGhpcy5jbG9zZUljb247XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKHRoaXMubW9kdWxlSWQpIHtcclxuICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDoge1xyXG4gICAgICAgIGxldCBub2RlRGF0YSA9IHRoaXMudHJlZURhdGEuZmlsdGVyKHggPT4geyByZXR1cm4geC5pZCA9PT0gbm9kZS5pZDsgfSk7XHJcbiAgICAgICAgaWYgKG5vZGVEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHN3aXRjaCAobm9kZURhdGFbMF0ubGV2ZWxUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5EZXBhcnRtZW50Rm9sZGVyOlxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAnZGVwYXJ0bWVudF9mb2xkZXJfb3V0bGluZWQnIDogJ2RlcGFydG1lbnRfZm9sZGVyJztcclxuICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlJlZ2lvbmFsRm9sZGVyOlxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAncmVnaW9uYWxfZm9sZGVyX291dGxpbmVkJyA6ICdyZWdpb25hbF9mb2xkZXInO1xyXG4gICAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuVG9wRm9sZGVyOlxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAnZW50ZXJwcmlzZV9mb2xkZXJfb3V0bGluZWQnIDogJ2VudGVycHJpc2VfZm9sZGVyJztcclxuICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkZvbGRlcjpcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ2xvY2FsX2ZvbGRlcl9vdXRsaW5lZCcgOiAnbG9jYWxfZm9sZGVyJztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ2ZvbGRlcl9vdXRsaW5lZCcgOiAnZm9sZGVyJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdmb2xkZXJfb3V0bGluZWQnIDogJ2ZvbGRlcic7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBEYXRhVHlwZS5wcm9jZXNzOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAncHJvY2Vzc19hcmVhX291dGxpbmVkJyA6ICdwcm9jZXNzX2FyZWEnO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAna2V5Ym9hcmRfdXAnIDogJ2tleWJvYXJkX2Rvd24nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbUljb24obm9kZSkge1xyXG4gICAgc3dpdGNoICh0aGlzLm1vZHVsZUlkKSB7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUuZG9jdW1lbnQ6XHJcbiAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy50cmVlRGF0YS5maWx0ZXIoeCA9PiB7IHJldHVybiB4LmlkID09PSBub2RlLnBhcmVudElkOyB9KTtcclxuICAgICAgICBpZiAocGFyZW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHN3aXRjaCAocGFyZW50WzBdLmxldmVsVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRGVwYXJ0bWVudEZvbGRlcjpcclxuICAgICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2RlcGFydG1lbnQnO1xyXG4gICAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuUmVnaW9uYWxGb2xkZXI6XHJcbiAgICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9yZWdpb25hbCc7XHJcbiAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Ub3BGb2xkZXI6XHJcbiAgICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9lbnRlcnByaXNlJztcclxuICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkZvbGRlcjpcclxuICAgICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2xvY2FsJztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50JztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuICdkb2N1bWVudCc7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcclxuICAgICAgICByZXR1cm4gJ3Byb2Nlc3MnO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmNoZWNrbGlzdDpcclxuICAgICAgICByZXR1cm4gJ2NoZWNrbGlzdCc7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUuZGV2aWF0aW9uOlxyXG4gICAgICAgIHJldHVybiAnZGV2aWF0aW9uJztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5yaXNrOlxyXG4gICAgICAgIHJldHVybiAncmlzayc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICdkb2N1bWVudCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXROb2RlSWQobm9kZTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICByZXR1cm4gYF8ke25vZGUucGFyZW50SWQgPyBub2RlLnBhcmVudElkIDogJyd9XyR7bm9kZS5pZH1fJHtub2RlLmxldmVsfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Tm9kZUJ5SWRBbmRQYXJlbnRJZChub2RlSWQ6IHN0cmluZywgcGFyZW50SWQ6IHN0cmluZyk6IFRyZWVGbGF0Tm9kZSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZCh4ID0+IHtcclxuICAgICAgcmV0dXJuIHguaWQgPT09IG5vZGVJZCAmJiB4LnBhcmVudElkID09PSBwYXJlbnRJZDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4cGFuZE5vZGUobm9kZTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChub2RlKTtcclxuICB9XHJcblxyXG4gIGlkVG9DaGVja1NlbGVjdE9uZShpZCwgcGFyZW50SWQpIHtcclxuICAgIHJldHVybiBgJHtpZH0tJHtwYXJlbnRJZH1gO1xyXG4gIH1cclxufVxyXG4iXX0=