@bizdoc/core 1.16.22 → 1.16.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/admin/configuration-designer/cube-axes-filter.component.mjs +2 -2
- package/esm2020/lib/admin/configuration-designer/declarations.mjs +2 -3
- package/esm2020/lib/admin/configuration-designer/designer-element.component.mjs +43 -42
- package/esm2020/lib/admin/configuration-designer/designer-privileges.component.mjs +6 -8
- package/esm2020/lib/admin/configuration-designer/designer.base.mjs +3 -1
- package/esm2020/lib/admin/configuration-designer/designer.component.mjs +74 -47
- package/esm2020/lib/admin/configuration-designer/elements/action.component.mjs +6 -5
- package/esm2020/lib/admin/configuration-designer/elements/cube.component.mjs +29 -14
- package/esm2020/lib/admin/configuration-designer/elements/folder.component.mjs +22 -21
- package/esm2020/lib/admin/configuration-designer/elements/form.component.mjs +80 -25
- package/esm2020/lib/admin/configuration-designer/elements/guide.component.mjs +13 -7
- package/esm2020/lib/admin/configuration-designer/elements/policy.component.mjs +5 -4
- package/esm2020/lib/admin/configuration-designer/elements/report.component.mjs +6 -7
- package/esm2020/lib/admin/configuration-designer/elements/role.component.mjs +3 -2
- package/esm2020/lib/admin/configuration-designer/elements/rule.component.mjs +5 -4
- package/esm2020/lib/admin/configuration-designer/elements/state.component.mjs +3 -2
- package/esm2020/lib/admin/configuration-designer/elements/type.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/utility.component.mjs +5 -8
- package/esm2020/lib/admin/configuration-designer/elements/view.component.mjs +5 -4
- package/esm2020/lib/admin/configuration-designer/elements/widget.component.mjs +4 -3
- package/esm2020/lib/admin/diff/configuration-diff.component.mjs +2 -2
- package/esm2020/lib/admin/system.service.mjs +1 -1
- package/esm2020/lib/core/translations.mjs +10 -2
- package/esm2020/lib/cube/cube-menu.component.mjs +2 -2
- package/esm2020/lib/home/home-base.component.mjs +2 -2
- package/fesm2015/bizdoc-core.mjs +457 -348
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +454 -346
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/admin/configuration-designer/declarations.d.ts +1 -2
- package/lib/admin/configuration-designer/designer-element.component.d.ts +7 -11
- package/lib/admin/configuration-designer/designer.base.d.ts +1 -0
- package/lib/admin/configuration-designer/designer.component.d.ts +10 -6
- package/lib/admin/configuration-designer/elements/action.component.d.ts +1 -3
- package/lib/admin/configuration-designer/elements/cube.component.d.ts +3 -6
- package/lib/admin/configuration-designer/elements/folder.component.d.ts +11 -3
- package/lib/admin/configuration-designer/elements/form.component.d.ts +21 -6
- package/lib/admin/configuration-designer/elements/policy.component.d.ts +1 -2
- package/lib/admin/configuration-designer/elements/report.component.d.ts +0 -1
- package/lib/admin/configuration-designer/elements/utility.component.d.ts +1 -3
- package/lib/admin/system.service.d.ts +8 -6
- package/lib/core/translations.d.ts +8 -0
- package/package.json +1 -1
@@ -27,7 +27,7 @@ import * as i18 from "../../core/pipes/translate.pipe";
|
|
27
27
|
import * as i19 from "../utility-ref";
|
28
28
|
const IGNORE_NODE = ['author', 'history', 'targetDecorator', 'sourceDecorator', 'offsetX', 'offsetY', 'rotateAngle', 'width', 'height',
|
29
29
|
'style', 'segments', 'offset', 'targetPortID', 'sourcePortID', 'horizontalAlignment', 'verticalAlignment', 'workflow.timestamp',
|
30
|
-
'connectors.constraints', 'nodes.constraints', 'annotations.constraints', 'annotations.id'], SVG_PATH_REGEX = /^[mM].+[zZ]$/, INDEX_PROPERTY = ['name', 'id'], DATA_TYPE = 'dataType', ORIGINAL_VALUE = '_', STATE = '__';
|
30
|
+
'connectors.constraints', 'nodes.constraints', 'annotations.constraints', 'annotations.id'], SVG_PATH_REGEX = /^[mM].+[zZ]$/, INDEX_PROPERTY = ['name', 'id', 'dataType'], DATA_TYPE = 'dataType', ORIGINAL_VALUE = '_', STATE = '__';
|
31
31
|
let SystemDiffComponent = class SystemDiffComponent {
|
32
32
|
/** ctor */
|
33
33
|
constructor(_sb, _utilityRef, _translate, _ds, _accounts) {
|
@@ -555,4 +555,4 @@ var TokenKind;
|
|
555
555
|
TokenKind[TokenKind["ObjectStart"] = 3] = "ObjectStart";
|
556
556
|
TokenKind[TokenKind["ObjectEnd"] = 4] = "ObjectEnd";
|
557
557
|
})(TokenKind || (TokenKind = {}));
|
558
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1kaWZmLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vZGlmZi9jb25maWd1cmF0aW9uLWRpZmYuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9kaWZmL2NvbmZpZ3VyYXRpb24tZGlmZi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTTVDLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUTtJQUNwSSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQjtJQUMvSCx3QkFBd0IsRUFBRSxtQkFBbUIsRUFBRSx5QkFBeUIsRUFBRSxnQkFBZ0IsQ0FBQyxFQUMzRixjQUFjLEdBQUcsY0FBYyxFQUMvQixjQUFjLEdBQUcsQ0FB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QUFVLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0YsQ0FBQTtnSEE5ZVksbUJBQW1CLCtDQWlCcEIsVUFBVTtvR0FqQlQsbUJBQW1CLDRMQzdCaEMscXpDQXdCQTtBREthLG1CQUFtQjtJQUYvQixNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsMkJBQTJCLEVBQUUsQ0FBQztJQUNsRCxlQUFlO0dBQ0YsbUJBQW1CLENBOGUvQjtTQTllWSxtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFUL0IsU0FBUzsyQkFHRjt3QkFDSixLQUFLLEVBQUUsTUFBTTtxQkFDZDs7MEJBcUJFLE1BQU07MkJBQUMsVUFBVTt3SUFoQkcsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVOztBQTZmdkIsSUFBSyxXQUtKO0FBTEQsV0FBSyxXQUFXO0lBQ2QsdURBQVMsQ0FBQTtJQUNULCtDQUFLLENBQUE7SUFDTCxxREFBUSxDQUFBO0lBQ1IsbURBQU8sQ0FBQTtBQUNULENBQUMsRUFMSSxXQUFXLEtBQVgsV0FBVyxRQUtmO0FBQ0QsSUFBSyxTQU1KO0FBTkQsV0FBSyxTQUFTO0lBQ1osMkNBQUssQ0FBQTtJQUNMLHFEQUFVLENBQUE7SUFDVixpREFBUSxDQUFBO0lBQ1IsdURBQVcsQ0FBQTtJQUNYLG1EQUFTLENBQUE7QUFDWCxDQUFDLEVBTkksU0FBUyxLQUFULFNBQVMsUUFNYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIEluamVjdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENhbGVuZGFyU3BlYyB9IGZyb20gXCIuLi8uLi9jb3JlL3BpcGVzL2NhbGVuZGFyLnBpcGVcIjtcclxuaW1wb3J0IHsgQml6RG9jIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNPYmplY3QsIGlzU3RyaW5nIH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBVdGlsaXR5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlJztcclxuaW1wb3J0IHsgVXRpbGl0eVJlZiB9IGZyb20gJy4uL3V0aWxpdHktcmVmJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnOyBcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZSc7XHJcblxyXG5jb25zdCBJR05PUkVfTk9ERSA9IFsnYXV0aG9yJywgJ2hpc3RvcnknLCAndGFyZ2V0RGVjb3JhdG9yJywgJ3NvdXJjZURlY29yYXRvcicsICdvZmZzZXRYJywgJ29mZnNldFknLCAncm90YXRlQW5nbGUnLCAnd2lkdGgnLCAnaGVpZ2h0JyxcclxuICAnc3R5bGUnLCAnc2VnbWVudHMnLCAnb2Zmc2V0JywgJ3RhcmdldFBvcnRJRCcsICdzb3VyY2VQb3J0SUQnLCAnaG9yaXpvbnRhbEFsaWdubWVudCcsICd2ZXJ0aWNhbEFsaWdubWVudCcsICd3b3JrZmxvdy50aW1lc3RhbXAnLFxyXG4gICdjb25uZWN0b3JzLmNvbnN0cmFpbnRzJywgJ25vZGVzLmNvbnN0cmFpbnRzJywgJ2Fubm90YXRpb25zLmNvbnN0cmFpbnRzJywgJ2Fubm90YXRpb25zLmlkJ10sXHJcbiAgU1ZHX1BBVEhfUkVHRVggPSAvXlttTV0uK1t6Wl0kLyxcclxuICBJTkRFWF9QUk9QRVJUWSA9IFsnbmFtZScsICdpZCddLCBEQVRBX1RZUEUgPSAnZGF0YVR5cGUnLCBPUklHSU5BTF9WQUxVRSA9ICdfJywgU1RBVEUgPSAnX18nO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maWd1cmF0aW9uLWRpZmYuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbmZpZ3VyYXRpb24tZGlmZi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAncGFuZSdcclxuICB9XHJcbn0pXHJcbkBCaXpEb2MoeyBzZWxlY3RvcjogJ2JpemRvYy1jb25maWd1cmF0aW9uLWRpZmYnIH0pXHJcbi8qKiBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgU3lzdGVtRGlmZkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBVdGlsaXR5Q29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKCdjb250ZW50cycpIGNvbnRlbnRzOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBodG1sID0gJyc7XHJcbiAgdmVyc2lvbnM6IFZlcnNpb25JbmZvW107XHJcbiAgYWN0aXZlRGF0ZTogRGF0ZTtcclxuICBwcm9ncmVzcyA9IDA7XHJcbiAgbm9uZTogYm9vbGVhbjtcclxuICBwcml2YXRlIF93b3JraW5nID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xyXG4gIHJlYWRvbmx5IENBTEVOREFSX1NQRUM6IENhbGVuZGFyU3BlYyA9IHtcclxuICAgIGxhc3REYXk6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1llc3RlcmRheUF0JywgJ0hIOm1tJyksXHJcbiAgICBsYXN0V2VlazogJ2RkZCBISDptbScsXHJcbiAgICBzYW1lRGF5OiAnSEg6bW0nLFxyXG4gICAgc2FtZUVsc2U6ICdNTU0gRCBISDptbSdcclxuICB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIC8qKiBjdG9yICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFV0aWxpdHlSZWYpIHByaXZhdGUgX3V0aWxpdHlSZWY6IFV0aWxpdHlSZWY8Q29uZmlndXJ0aW9uSW5mb1tdLCBDb21wYXJlTW9kZWwsIFZlcnNpb25JbmZvW10sIG51bWJlcj4sXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kczogRGF0YXNvdXJjZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9hY2NvdW50czogQWNjb3VudFNlcnZpY2UpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyBkZWxheSBwcm9ncmVzc1xyXG4gICAgdGhpcy5fd29ya2luZy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZGVib3VuY2VUaW1lKDEwMCkpLnN1YnNjcmliZSh2ID0+IHYgJiYgKHRoaXMucHJvZ3Jlc3MgPSB2KSk7XHJcbiAgICB0aGlzLl93b3JraW5nLm5leHQoNTApO1xyXG4gICAgLy8gcG9wdWxhdGUgdmVyc2lvbnNcclxuICAgIHRoaXMuX3V0aWxpdHlSZWYucG9wdWxhdGUoKS5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgIHRoaXMudmVyc2lvbnMgPSBlO1xyXG4gICAgICB0aGlzLl93b3JraW5nLm5leHQoMTAwKTtcclxuICAgICAgZS5sZW5ndGggPiAxICYmXHJcbiAgICAgICAgdGhpcy5jb21wYXJlKDApO1xyXG4gICAgfSwgKCkgPT4gdGhpcy5fc2IuZXJyb3IoKSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBpbmRleFxyXG4gICAqL1xyXG4gIGNvbXBhcmUoaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgeyB0aW1lOiBkYXRlMSwgZmlsZSB9ID0gdGhpcy52ZXJzaW9uc1tpbmRleF0sXHJcbiAgICAgIHZlcnNpb24gPSB0aGlzLnZlcnNpb25zLnNsaWNlKGluZGV4ICsgMSkuZmluZCh2ID0+IHYuZmlsZSA9PT0gZmlsZSk7XHJcbiAgICBpZiAoIXZlcnNpb24pIHJldHVybjtcclxuICAgIGNvbnN0IHsgdGltZTogZGF0ZTIgfSA9IHZlcnNpb247XHJcbiAgICB0aGlzLl93b3JraW5nLm5leHQoMjUpO1xyXG4gICAgdGhpcy5fdXRpbGl0eVJlZi5leGVjdXRlKHsgZGF0ZTEsIGRhdGUyIH0pLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgdGhpcy5odG1sID0gJyc7XHJcbiAgICAgIHRoaXMuX3dvcmtpbmcubmV4dCg1MCk7XHJcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IGRhdGUxO1xyXG4gICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5fY29tcGFyZShyWzBdLCByWzFdKTtcclxuICAgICAgaWYgKHJlc3VsdHMpIHJlc3VsdHMudGhlbihkID0+IHtcclxuICAgICAgICB0aGlzLl93b3JraW5nLm5leHQoNzUpO1xyXG4gICAgICAgIHRoaXMuaHRtbCA9IHRoaXMuX2dlbmVyYXRlKGQpO1xyXG4gICAgICAgIHRoaXMuX3Njcm9sbFRvcCgpO1xyXG4gICAgICAgIHRoaXMuX3dvcmtpbmcubmV4dCgxMDApO1xyXG4gICAgICAgIHRoaXMubm9uZSA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fd29ya2luZy5uZXh0KDEwMCk7XHJcbiAgICAgICAgdGhpcy5ub25lID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSwgKCkgPT4gdGhpcy5fc2IuZXJyb3IoKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3Njcm9sbFRvcCgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb250ZW50cy5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQuc2Nyb2xsKHsgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGFcclxuICAgKiBAcGFyYW0gYlxyXG4gICAqIEBwYXJhbSBkaWZmXHJcbiAgICogQHBhcmFtIHNjb3BlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfY29tcGFyZShhOiB7fSB8IFtdLCBiOiB7fSB8IFtdLCBkaWZmOiB7fSB8IFtdID0ge30sIHNjb3BlOiBTY29wZSA9IHsgbm9kZXM6IFtdIH0pOiBQcm9taXNlPHt9IHwgW10+IHwgZmFsc2Uge1xyXG4gICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8YW55PltdID0gW107XHJcbiAgICBpZiAoaXNBcnJheShhKSkge1xyXG4gICAgICBhLmZvckVhY2goKGUsIGkpID0+IHtcclxuICAgICAgICBjb25zdCBiVmFsID0gYltpXTtcclxuICAgICAgICBpZiAoZSA9PT0gYlZhbCkgcmV0dXJuO1xyXG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KGUpKSB7XHJcbiAgICAgICAgICBjb25zdCBhSnNvbiA9IEpTT04uc3RyaW5naWZ5KGUpLCBiSnNvbiA9IEpTT04uc3RyaW5naWZ5KGJWYWwpO1xyXG4gICAgICAgICAgaWYgKGFKc29uID09PSBiSnNvbikgcmV0dXJuO1xyXG4gICAgICAgICAgaWYgKGJWYWwgJiYgdGhpcy5fbWF0Y2goYlZhbCwgZSkpIHtcclxuICAgICAgICAgICAgY29uc3Qgb2JqID0ge307XHJcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9jb21wYXJlKGUsIGJWYWwsIG9iaiwgeyBub2Rlczogc2NvcGUubm9kZXMsIHR5cGU6IGVbREFUQV9UWVBFXSB8fCBzY29wZS50eXBlIH0pO1xyXG4gICAgICAgICAgICBpZiAoIXByb21pc2UpIHJldHVybjtcclxuICAgICAgICAgICAgKGRpZmYgYXMgYW55W10pLnB1c2godGhpcy5fcmVrZXkoZSwgb2JqLCBzY29wZS5ub2RlcykpO1xyXG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoKGIgYXMgW10pLmZpbmQoYiA9PiBKU09OLnN0cmluZ2lmeShiKSA9PT0gYUpzb24pKSByZXR1cm47XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgYk9iaiA9IChiIGFzIFtdKS5maW5kKGIgPT4gdGhpcy5fbWF0Y2goYiwgZSkpO1xyXG4gICAgICAgICAgICBpZiAoYk9iaikge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG9iaiA9IHt9O1xyXG4gICAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9jb21wYXJlKGUsIGJPYmosIG9iaiwgeyBub2Rlczogc2NvcGUubm9kZXMsIHR5cGU6IGVbREFUQV9UWVBFXSB8fCBzY29wZS50eXBlIH0pO1xyXG4gICAgICAgICAgICAgIGlmICghcHJvbWlzZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIChkaWZmIGFzIGFueVtdKS5wdXNoKHRoaXMuX3Jla2V5KGUsIG9iaiwgc2NvcGUubm9kZXMpKTtcclxuICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG9iaiA9IGlzQXJyYXkoZSkgPyBbXSA6IHt9O1xyXG4gICAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9icmFuY2goZSwgb2JqLCB7IG5vZGVzOiBzY29wZS5ub2RlcywgdHlwZTogZVtEQVRBX1RZUEVdIHx8IHNjb3BlLnR5cGUgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKCFwcm9taXNlKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gKGRpZmYgYXMgYW55W10pLnB1c2gob2JqKTtcclxuICAgICAgICAgICAgICBkaWZmW1NUQVRFICsgKGxlbmd0aCAtIDEpLnRvU3RyaW5nKCldID0gQ2hhbmdlU3RhdGUuQWRkZWQ7XHJcbiAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICghKGIgYXMgW10pLmZpbmQoYiA9PiBiID09IGUpKSB7XHJcbiAgICAgICAgICBjb25zdCBsZW5ndGggPSAoZGlmZiBhcyBhbnlbXSkucHVzaChlKTtcclxuICAgICAgICAgIGlmIChzY29wZS5ub2Rlcy5pbmRleE9mKCdwb3NpdGlvbnMnKSA+IC0xKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9hY2NvdW50cy5nZXQoZSkudG9Qcm9taXNlKCkudGhlbih2ID0+XHJcbiAgICAgICAgICAgICAgZGlmZltsZW5ndGggLSAxXSA9IHYubmFtZSk7XHJcbiAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkaWZmW1NUQVRFICsgKGxlbmd0aCAtIDEpLnRvU3RyaW5nKCldID0gQ2hhbmdlU3RhdGUuQWRkZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgKGIgYXMgW10pLmZvckVhY2goKGUsIGkpID0+IHtcclxuICAgICAgICBpZiAoZSAhPT0gYVtpXSkge1xyXG4gICAgICAgICAgaWYgKGlzT2JqZWN0KGUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJKc29uID0gSlNPTi5zdHJpbmdpZnkoZSk7XHJcbiAgICAgICAgICAgIGlmIChiSnNvbiA9PT0gSlNPTi5zdHJpbmdpZnkoYVtpXSkgfHwgKGEgYXMgW10pLmZpbmQoYSA9PiBKU09OLnN0cmluZ2lmeShhKSA9PT0gYkpzb24gfHxcclxuICAgICAgICAgICAgICB0aGlzLl9tYXRjaChhLCBlKSkpIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3Qgb2JqID0gaXNBcnJheShlKSA/IFtdIDoge307XHJcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9icmFuY2goZSwgb2JqLCB7IG5vZGVzOiBzY29wZS5ub2RlcywgdHlwZTogZVtEQVRBX1RZUEVdIHx8IHNjb3BlLnR5cGUgfSk7XHJcbiAgICAgICAgICAgIGlmICghcHJvbWlzZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSAoZGlmZiBhcyBhbnlbXSkucHVzaChvYmopO1xyXG4gICAgICAgICAgICBkaWZmW1NUQVRFICsgKGxlbmd0aCAtIDEpLnRvU3RyaW5nKCldID0gQ2hhbmdlU3RhdGUuUmVtb3ZlZDtcclxuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKCEoYSBhcyBbXSkuZmluZChhID0+IGEgPT0gZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gKGRpZmYgYXMgW10pLnB1c2goZSk7XHJcbiAgICAgICAgICAgIGlmIChzY29wZS5ub2Rlcy5pbmRleE9mKCdwb3NpdGlvbnMnKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2FjY291bnRzLmdldChlKS50b1Byb21pc2UoKS50aGVuKHYgPT5cclxuICAgICAgICAgICAgICAgIGRpZmZbbGVuZ3RoIC0gMV0gPSB2Lm5hbWUpO1xyXG4gICAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZGlmZltTVEFURSArIChsZW5ndGggLSAxKS50b1N0cmluZygpXSA9IENoYW5nZVN0YXRlLlJlbW92ZWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKCEoZGlmZiBhcyBhbnlbXSkubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgT2JqZWN0LmtleXMoYSkuZm9yRWFjaChrID0+IHtcclxuICAgICAgICBpZiAodGhpcy5faWdub3JlKGssIHNjb3BlLm5vZGVzKSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGFWYWwgPSBhW2tdLCBiVmFsID0gYltrXTtcclxuICAgICAgICBpZiAoYVZhbCA9PT0gYlZhbCkgcmV0dXJuO1xyXG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KGFWYWwpKSB7XHJcbiAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoYVZhbCkgPT09IEpTT04uc3RyaW5naWZ5KGJWYWwpKSByZXR1cm47XHJcbiAgICAgICAgICBpZiAoYlZhbCAhPT0gdW5kZWZpbmVkICYmIGlzQXJyYXkoYlZhbCkgIT09IGlzQXJyYXkoYVZhbCkpIHtcclxuICAgICAgICAgICAgZGlmZltrXSA9IGFWYWw7XHJcbiAgICAgICAgICAgIGRpZmZbT1JJR0lOQUxfVkFMVUUgKyBrXSA9IGlzQXJyYXkoYlZhbCkgPyBiVmFsLmpvaW4oJywgJykgOiBiVmFsO1xyXG4gICAgICAgICAgICBkaWZmW1NUQVRFICsga10gPSBDaGFuZ2VTdGF0ZS5Nb2RpZmllZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgb2JqID0gaXNBcnJheShhVmFsKSA/IFtdIDoge30sXHJcbiAgICAgICAgICAgICAgZXh0cmEgPSB7IHR5cGU6IGFWYWxbREFUQV9UWVBFXSB8fCBzY29wZS50eXBlLCBub2RlczogWy4uLnNjb3BlLm5vZGVzLCBrXSB9IGFzIFNjb3BlO1xyXG4gICAgICAgICAgICBpZiAoYlZhbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2NvbXBhcmUoYVZhbCwgYlZhbCwgb2JqLCBleHRyYSk7XHJcbiAgICAgICAgICAgICAgaWYgKCFwcm9taXNlKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgaWYgKCFpc0FycmF5KGFWYWwpKVxyXG4gICAgICAgICAgICAgICAgb2JqID0gdGhpcy5fcmVrZXkoYVZhbCwgb2JqLCBzY29wZS5ub2Rlcyk7XHJcbiAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fYnJhbmNoKGFWYWwsIG9iaiwgZXh0cmEpO1xyXG4gICAgICAgICAgICAgIGlmICghcHJvbWlzZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChzY29wZS5ub2Rlcy5pbmRleE9mKCdwb3NpdGlvbnMnKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgZGlmZltPUklHSU5BTF9WQUxVRSArIGtdID0gYVZhbDtcclxuICAgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fZHMuZ2V0KHNjb3BlLnR5cGUsIGspLnRvUHJvbWlzZSgpLnRoZW4odiA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gaXNTdHJpbmcodikgPyB2IDogdltPYmplY3Qua2V5cyh2KVswXV07XHJcbiAgICAgICAgICAgICAgICBkaWZmW25hbWVdID0gb2JqXHJcbiAgICAgICAgICAgICAgICBpZiAoYlZhbCA9PT0gdW5kZWZpbmVkKSBkaWZmW1NUQVRFICsgbmFtZV0gPSBDaGFuZ2VTdGF0ZS5BZGRlZDtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGRpZmZba10gPSBvYmo7XHJcbiAgICAgICAgICAgICAgaWYgKGJWYWwgPT09IHVuZGVmaW5lZCkgZGlmZltTVEFURSArIGtdID0gQ2hhbmdlU3RhdGUuQWRkZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBkaWZmW2tdID0gYVZhbDtcclxuICAgICAgICAgIGlmIChrID09PSAndXNlcklkJykge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fYWNjb3VudHMuZ2V0KGFWYWwpLnRvUHJvbWlzZSgpLnRoZW4odiA9PlxyXG4gICAgICAgICAgICAgIGRpZmZba10gPSB2Lm5hbWUpO1xyXG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGJWYWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpZiAoayA9PT0gJ3VzZXJJZCcpIHtcclxuICAgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fYWNjb3VudHMuZ2V0KGJWYWwpLnRvUHJvbWlzZSgpLnRoZW4odiA9PlxyXG4gICAgICAgICAgICAgICAgZGlmZltPUklHSU5BTF9WQUxVRSArIGtdID0gdi5uYW1lKTtcclxuICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICBkaWZmW09SSUdJTkFMX1ZBTFVFICsga10gPSBiVmFsO1xyXG4gICAgICAgICAgICBkaWZmW1NUQVRFICsga10gPSBDaGFuZ2VTdGF0ZS5Nb2RpZmllZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgZGlmZltTVEFURSArIGtdID0gQ2hhbmdlU3RhdGUuQWRkZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgT2JqZWN0LmtleXMoYikuZm9yRWFjaChrID0+IHtcclxuICAgICAgICBpZiAoYVtrXSAhPT0gdW5kZWZpbmVkIHx8IHRoaXMuX2lnbm9yZShrLCBzY29wZS5ub2RlcykpIHJldHVybjtcclxuICAgICAgICBjb25zdCBiVmFsID0gYltrXTtcclxuICAgICAgICBpZiAoc2NvcGUubm9kZXMuaW5kZXhPZigncG9zaXRpb25zJykgPiAtMSkge1xyXG4gICAgICAgICAgY29uc3Qgb2JqID0gW107XHJcbiAgICAgICAgICBkaWZmW09SSUdJTkFMX1ZBTFVFICsga10gPSBiVmFsO1xyXG4gICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2RzLmdldChzY29wZS50eXBlLCBrKS50b1Byb21pc2UoKS50aGVuKHYgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gaXNTdHJpbmcodikgPyB2IDogdltPYmplY3Qua2V5cyh2KVswXV07XHJcbiAgICAgICAgICAgIGRpZmZbbmFtZV0gPSBvYmo7XHJcbiAgICAgICAgICAgIGRpZmZbU1RBVEUgKyBuYW1lXSA9IENoYW5nZVN0YXRlLlJlbW92ZWQ7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICBiVmFsICYmIChiVmFsIGFzIGFueVtdKS5mb3JFYWNoKChlLCBpKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9hY2NvdW50cy5nZXQoZSkudG9Qcm9taXNlKCkudGhlbih2ID0+XHJcbiAgICAgICAgICAgICAgb2JqW2ldID0gdi5uYW1lKTtcclxuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChpc09iamVjdChiVmFsKSkge1xyXG4gICAgICAgICAgICBjb25zdCBvYmogPSBpc0FycmF5KGJWYWwpID8gW10gOiB7fTtcclxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2JyYW5jaChiVmFsLCBvYmosIHsgdHlwZTogYlZhbFtEQVRBX1RZUEVdIHx8IHNjb3BlLnR5cGUsIG5vZGVzOiBbLi4uc2NvcGUubm9kZXMsIGtdIH0pO1xyXG4gICAgICAgICAgICBpZiAoIXByb21pc2UpIHJldHVybjtcclxuICAgICAgICAgICAgZGlmZltrXSA9IG9iajtcclxuICAgICAgICAgICAgcHJvbWlzZSAmJiBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGRpZmZba10gPSBiVmFsO1xyXG4gICAgICAgICAgICBpZiAoayA9PT0gJ3VzZXJJZCcpIHtcclxuICAgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fYWNjb3VudHMuZ2V0KGJWYWwpLnRvUHJvbWlzZSgpLnRoZW4odiA9PlxyXG4gICAgICAgICAgICAgICAgZGlmZltrXSA9IHYubmFtZSk7XHJcbiAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGlmZltTVEFURSArIGtdID0gQ2hhbmdlU3RhdGUuUmVtb3ZlZDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoIU9iamVjdC5rZXlzKGRpZmYpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb21pc2VzLmxlbmd0aCA/IFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKCgpID0+IGRpZmYpIDogUHJvbWlzZS5yZXNvbHZlKGRpZmYpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gb2JqMVxyXG4gICAqIEBwYXJhbSBvYmoyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfbWF0Y2gob2JqMTogYW55LCBvYmoyOiBhbnkpIHtcclxuICAgIHJldHVybiBJTkRFWF9QUk9QRVJUWS5maW5kSW5kZXgoayA9PiBvYmoxW2tdICYmIG9iajFba10gPT09IG9iajJba10pID4gLTE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gYmFzZVxyXG4gICAqIEBwYXJhbSBvYmpcclxuICAgKiBAcGFyYW0gbm9kZXNcclxuICAgKi9cclxuICBwcml2YXRlIF9yZWtleShiYXNlOiB7fSwgb2JqOiB7fSwgbm9kZXM6IHN0cmluZ1tdKSB7XHJcbiAgICBjb25zdCBuZXdPYmogPSB7fTtcclxuICAgIGxldCBvayA9IGZhbHNlO1xyXG4gICAgSU5ERVhfUFJPUEVSVFkuZm9yRWFjaChrID0+IHtcclxuICAgICAgaWYgKHRoaXMuX2lnbm9yZShrLCBub2RlcykpIHJldHVybjtcclxuICAgICAgaWYgKGJhc2Vba10pIHtcclxuICAgICAgICBuZXdPYmpba10gPSBiYXNlW2tdO1xyXG4gICAgICAgIG9rID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gb2sgPyBPYmplY3QuYXNzaWduKG5ld09iaiwgb2JqKSA6IG9iajtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICogQHBhcmFtIG5vZGVzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaWdub3JlKG5hbWU6IHN0cmluZywgbm9kZXM6IHN0cmluZ1tdKSB7XHJcbiAgICByZXR1cm4gSUdOT1JFX05PREUuaW5kZXhPZihuYW1lKSA+IC0xIHx8IElHTk9SRV9OT0RFLmluZGV4T2Yobm9kZXNbbm9kZXMubGVuZ3RoIC0gMV0gKyAnLicgKyBuYW1lKSA+IC0xO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gYmFzZVxyXG4gICAqIEBwYXJhbSBwcmVzdGluZVxyXG4gICAqIEBwYXJhbSBzY29wZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2JyYW5jaChiYXNlOiB7fSB8IFtdLCBwcmVzdGluZToge30gfCBbXSwgc2NvcGU6IFNjb3BlKTogUHJvbWlzZTxhbnk+IHwgZmFsc2Uge1xyXG4gICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8YW55PltdID0gW107XHJcbiAgICBpZiAoaXNBcnJheShiYXNlKSkge1xyXG4gICAgICBiYXNlLmZvckVhY2goZSA9PiB7XHJcbiAgICAgICAgaWYgKGlzT2JqZWN0KGUpKSB7XHJcbiAgICAgICAgICBjb25zdCBvYmogPSBpc0FycmF5KGUpID8gW10gOiB7fTtcclxuICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9icmFuY2goZSwgb2JqLCB7IG5vZGVzOiBzY29wZS5ub2RlcywgdHlwZTogZVtEQVRBX1RZUEVdIHx8IHNjb3BlLnR5cGUgfSk7XHJcbiAgICAgICAgICBpZiAoIXByb21pc2UpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICAocHJlc3RpbmUgYXMgYW55W10pLnB1c2gob2JqKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBsZW5ndGggPSAocHJlc3RpbmUgYXMgYW55W10pLnB1c2goZSk7XHJcbiAgICAgICAgICBpZiAoc2NvcGUubm9kZXMuaW5kZXhPZigncG9zaXRpb25zJykgPiAtMSkge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fYWNjb3VudHMuZ2V0KGUpLnRvUHJvbWlzZSgpLnRoZW4odiA9PlxyXG4gICAgICAgICAgICAgIHByZXN0aW5lW2xlbmd0aCAtIDFdID0gdi5uYW1lKTtcclxuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoIShwcmVzdGluZSBhcyBhbnlbXSkubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBPYmplY3Qua2V5cyhiYXNlKS5mb3JFYWNoKGsgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9pZ25vcmUoaywgc2NvcGUubm9kZXMpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgYVZhbCA9IGJhc2Vba107XHJcbiAgICAgICAgaWYgKGlzT2JqZWN0KGFWYWwpKSB7XHJcbiAgICAgICAgICBjb25zdCBvYmogPSBpc0FycmF5KGFWYWwpID8gW10gOiB7fTtcclxuICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9icmFuY2goYVZhbCwgb2JqLCB7IHR5cGU6IGFWYWxbREFUQV9UWVBFXSB8fCBzY29wZS50eXBlLCBub2RlczogWy4uLnNjb3BlLm5vZGVzLCBrXSB9KTtcclxuICAgICAgICAgIGlmICghcHJvbWlzZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgIGlmIChzY29wZS5ub2Rlcy5pbmRleE9mKCdwb3NpdGlvbnMnKSA+IC0xKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9kcy5nZXQoc2NvcGUudHlwZSwgaykudG9Qcm9taXNlKCkudGhlbih2ID0+XHJcbiAgICAgICAgICAgICAgcHJlc3RpbmVbaXNTdHJpbmcodikgPyB2IDogdltPYmplY3Qua2V5cyh2KVswXV1dID0gb2JqXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHByZXN0aW5lW2tdID0gb2JqO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHByZXN0aW5lW2tdID0gYVZhbDtcclxuICAgICAgICAgIGlmIChrID09PSAndXNlcklkJykge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fYWNjb3VudHMuZ2V0KGFWYWwpLnRvUHJvbWlzZSgpLnRoZW4odiA9PlxyXG4gICAgICAgICAgICAgIHByZXN0aW5lW2tdID0gdi5uYW1lKTtcclxuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoIU9iamVjdC5rZXlzKHByZXN0aW5lKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBwcm9taXNlcy5sZW5ndGggPyBQcm9taXNlLmFsbChwcm9taXNlcykgOiBQcm9taXNlLnJlc29sdmUoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogcmV0dXJuIGh0bWwgZnJvbSBkaWZmIHRyZWVcclxuICAgKiBAcGFyYW0gZGlmZlxyXG4gICAqIEBwYXJhbSBvYmpzdGF0ZVxyXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWVcclxuICAgKiBAcGFyYW0gc2libGluZyBhcnJheSBlbnRyeVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2dlbmVyYXRlKGRpZmY6IHt9IHwgW10sIG9ianN0YXRlOiBDaGFuZ2VTdGF0ZSA9IENoYW5nZVN0YXRlLlVuY2hhbmdlZCxcclxuICAgIHByb3BlcnR5TmFtZSA9IHVuZGVmaW5lZCwgc2libGluZyA9IGZhbHNlKSB7XHJcbiAgICBsZXQgaCA9ICcnO1xyXG4gICAgaWYgKGlzQXJyYXkoZGlmZikpIHtcclxuICAgICAgaCArPSB0aGlzLl93cml0ZShvYmpzdGF0ZSwgVG9rZW5LaW5kLkFycmF5U3RhcnQsIGZhbHNlLCBmYWxzZSwgcHJvcGVydHlOYW1lKTtcclxuICAgICAgY29uc3QgbiA9IGRpZmYubGVuZ3RoO1xyXG4gICAgICBkaWZmLmZvckVhY2goKGUsIGkpID0+IHtcclxuICAgICAgICBjb25zdCBzdGF0ZSA9IGRpZmZbU1RBVEUgKyBpLnRvU3RyaW5nKCldO1xyXG4gICAgICAgIGlmIChpc09iamVjdChlKSlcclxuICAgICAgICAgIGggKz0gdGhpcy5fZ2VuZXJhdGUoZSwgc3RhdGUsIHVuZGVmaW5lZCwgaSA8IG4gLSAxKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBoICs9IHRoaXMuX3dyaXRlKHN0YXRlLCBUb2tlbktpbmQuVmFsdWUsXHJcbiAgICAgICAgICAgIGkgPT09IG4gLSAxIHx8IGRpZmZbU1RBVEUgKyAoaSArIDEpLnRvU3RyaW5nKCldICE9PSBzdGF0ZSxcclxuICAgICAgICAgICAgaSA8IG4gLSAxLCB1bmRlZmluZWQsIGUpO1xyXG4gICAgICB9KTtcclxuICAgICAgaCArPSB0aGlzLl93cml0ZShvYmpzdGF0ZSwgVG9rZW5LaW5kLkFycmF5RW5kLCB0cnVlLCBzaWJsaW5nKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBoICs9IHRoaXMuX3dyaXRlKG9ianN0YXRlLCBUb2tlbktpbmQuT2JqZWN0U3RhcnQsIGZhbHNlLCBmYWxzZSwgcHJvcGVydHlOYW1lKTtcclxuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGRpZmYpLmZpbHRlcihrID0+ICFrLnN0YXJ0c1dpdGgoT1JJR0lOQUxfVkFMVUUpKTtcclxuICAgICAga2V5cy5mb3JFYWNoKChrLCBpKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsID0gZGlmZltrXSwgc3RhdGUgPSBkaWZmW1NUQVRFICsga10sIG4gPSBrZXlzLmxlbmd0aDtcclxuICAgICAgICBpZiAoaXNPYmplY3QodmFsKSlcclxuICAgICAgICAgIGggKz0gdGhpcy5fZ2VuZXJhdGUodmFsLCBzdGF0ZSwgaywgaSA8IG4gLSAxKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBoICs9IHRoaXMuX3dyaXRlKHN0YXRlLCBUb2tlbktpbmQuVmFsdWUsIHN0YXRlICE9PSBvYmpzdGF0ZSwgaSA8IG4gLSAxLCBrLCB2YWwsIGRpZmZbT1JJR0lOQUxfVkFMVUUgKyBrXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBoICs9IHRoaXMuX3dyaXRlKG9ianN0YXRlLCBUb2tlbktpbmQuT2JqZWN0RW5kLCB0cnVlLCBzaWJsaW5nKTtcclxuICAgIH1cclxuICAgIHJldHVybiBoO1xyXG4gIH1cclxuICAvKipcclxuICAgKiB3cml0ZSBodG1sIGxpbmVcclxuICAgKiBAcGFyYW0gc3RhdGVcclxuICAgKiBAcGFyYW0gYW5ub3RhdGVcclxuICAgKiBAcGFyYW0gdG9rZW5cclxuICAgKiBAcGFyYW0gc2libGluZyBhcnJheSBlbnRyeVxyXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWVcclxuICAgKiBAcGFyYW0gdmFsdWVcclxuICAgKiBAcGFyYW0gb3JpZ2luYWxWYWx1ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3dyaXRlKHN0YXRlOiBDaGFuZ2VTdGF0ZSxcclxuICAgIHRva2VuOiBUb2tlbktpbmQsXHJcbiAgICBhbm5vdGF0ZTogYm9vbGVhbixcclxuICAgIHNpYmxpbmc/OiBib29sZWFuLFxyXG4gICAgcHJvcGVydHlOYW1lPzogc3RyaW5nLFxyXG4gICAgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuLFxyXG4gICAgb3JpZ2luYWxWYWx1ZT86IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW5cclxuICApIHtcclxuICAgIGxldCBoID0gJycsIGJyYWNrZXRzOiBzdHJpbmcsIGNsczogc3RyaW5nO1xyXG4gICAgc3dpdGNoIChzdGF0ZSkge1xyXG4gICAgICBjYXNlIENoYW5nZVN0YXRlLlJlbW92ZWQ6XHJcbiAgICAgICAgY2xzID0gJ2NvbXBhcmUgcmVtb3ZlZCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ2hhbmdlU3RhdGUuQWRkZWQ6XHJcbiAgICAgICAgY2xzID0gJ2NvbXBhcmUgYWRkZWQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENoYW5nZVN0YXRlLk1vZGlmaWVkOlxyXG4gICAgICAgIGNscyA9ICdjb21wYXJlIG1vZGlmaWVkJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBjbHMgPSAnJztcclxuICAgIH1cclxuICAgIHN3aXRjaCAodG9rZW4pIHtcclxuICAgICAgY2FzZSBUb2tlbktpbmQuQXJyYXlTdGFydDpcclxuICAgICAgICBicmFja2V0cyA9ICdbJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBUb2tlbktpbmQuT2JqZWN0U3RhcnQ6XHJcbiAgICAgICAgYnJhY2tldHMgPSAneyc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgVG9rZW5LaW5kLkFycmF5RW5kOlxyXG4gICAgICAgIGJyYWNrZXRzID0gJ10nO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFRva2VuS2luZC5PYmplY3RFbmQ6XHJcbiAgICAgICAgYnJhY2tldHMgPSAnfSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBpZiAodG9rZW4gPT0gVG9rZW5LaW5kLk9iamVjdFN0YXJ0IHx8IHRva2VuID09IFRva2VuS2luZC5BcnJheVN0YXJ0KVxyXG4gICAgICBoID0gYDxkaXYgY2xhc3M9XCJzY29wZSAke2Nsc31cIj5gO1xyXG4gICAgaWYgKHByb3BlcnR5TmFtZSlcclxuICAgICAgaCArPSBgPHNwYW4gY2xhc3M9XCJzdHJ1Y3R1cmUgJHtjbHN9XCI+JHtwcm9wZXJ0eU5hbWV9OiA8L3NwYW4+YDtcclxuICAgIGlmIChicmFja2V0cykge1xyXG4gICAgICBpZiAodG9rZW4gPT0gVG9rZW5LaW5kLk9iamVjdEVuZCB8fCB0b2tlbiA9PSBUb2tlbktpbmQuQXJyYXlFbmQpXHJcbiAgICAgICAgaCArPSAnPC9kaXY+JztcclxuICAgICAgaCArPSBgPHNwYW4gY2xhc3M9XCJicmFja2V0c1wiPiR7YnJhY2tldHN9PC9zcGFuPmBcclxuICAgICAgaWYgKHRva2VuID09IFRva2VuS2luZC5PYmplY3RTdGFydCB8fCB0b2tlbiA9PSBUb2tlbktpbmQuQXJyYXlTdGFydClcclxuICAgICAgICBoICs9ICc8c3BhbiBjbGFzcz1cImFsdGVybmF0ZVwiPi4uLjwvc3Bhbj48ZGl2IGNsYXNzPVwic2NvcGUtY29udGVudFwiPic7XHJcbiAgICB9XHJcbiAgICBpZiAodG9rZW4gPT0gVG9rZW5LaW5kLlZhbHVlKSB7XHJcbiAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT09ICdjb2xvcicpIGggKz0gYDxkaXYgY2xhc3M9XCJjb2xvclwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjoke3ZhbHVlfVwiPjwvZGl2PiZuYnNwO2A7XHJcbiAgICAgIGVsc2UgaWYgKChwcm9wZXJ0eU5hbWUgPT09ICdzaGFwZScgfHwgcHJvcGVydHlOYW1lID09PSAnZGF0YScpICYmIFNWR19QQVRIX1JFR0VYLnRlc3QodmFsdWUgYXMgc3RyaW5nKSkgaCArPSBgPHN2ZyB3aWR0aD0xMiBoZWlnaHQ9MTIgdmlld0JveD1cIjAgMCAzNSAzNVwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCI+PHBhdGggZD1cIiR7dmFsdWV9XCI+PC9wYXRoPjwvc3ZnPiZuYnNwO2A7XHJcbiAgICAgIGggKz0gYDxzcGFuIGNsYXNzPVwidmFsdWUgJHtjbHN9XCI+JHt2YWx1ZX08L3NwYW4+YDtcclxuICAgIH1cclxuICAgIGlmIChzaWJsaW5nKSBoICs9ICc8c3BhbiBjbGFzcz1cInN0cnVjdHVyZVwiPiw8L3NwYW4+JztcclxuICAgIGlmIChzdGF0ZSAmJiBhbm5vdGF0ZSkge1xyXG4gICAgICBjb25zdCByZXNvdXJjZSA9IHN0YXRlID09PSBDaGFuZ2VTdGF0ZS5SZW1vdmVkID8gJ0RlbGV0ZWQnIDogc3RhdGUgPT09IENoYW5nZVN0YXRlLkFkZGVkID8gJ0FkZGVkJyA6ICdNb2RpZmllZCc7XHJcbiAgICAgIGggKz0gYDxkaXYgY2xhc3M9XCIke2Nsc31cIj4gPGRpdiBjbGFzcz1cImxhYmVsXCI+PHNwYW4+JHt0aGlzLl90cmFuc2xhdGUuZ2V0KHJlc291cmNlKX1gO1xyXG4gICAgICBpZiAob3JpZ2luYWxWYWx1ZSlcclxuICAgICAgICBoICs9IGAmbmJzcDs8c3BhbiBjbGFzcz1cIm9yaWdpbmFsXCI+JHtvcmlnaW5hbFZhbHVlfTwvc3Bhbj5gO1xyXG4gICAgICBoICs9ICc8L3NwYW4+PC9kaXY+PC9kaXY+JztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRva2VuID09PSBUb2tlbktpbmQuVmFsdWUpXHJcbiAgICAgIGggKz0gJzxici8+JztcclxuICAgIGlmICh0b2tlbiA9PSBUb2tlbktpbmQuT2JqZWN0RW5kIHx8IHRva2VuID09IFRva2VuS2luZC5BcnJheUVuZClcclxuICAgICAgaCArPSAnPC9kaXY+JztcclxuICAgIHJldHVybiBoO1xyXG4gIH1cclxuICAvKipcclxuICAgKiB0b2dnbGVcclxuICAgKiBAcGFyYW0gZXZ0XHJcbiAgICovXHJcbiAgY29sbGFwc2UoZXZ0OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBsZXQgZWwgPSBldnQuc3JjRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHdoaWxlIChlbCAmJiAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdzY29wZScpKVxyXG4gICAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQ7XHJcbiAgICBlbCAmJiBlbC5jbGFzc0xpc3QudG9nZ2xlKCdjb2xsYXBzZScpICYmIGVsLmNsYXNzTGlzdC5yZW1vdmUoJ2ZvY3VzJyk7XHJcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIHJlbW92ZSBjbHNcclxuICAgKi9cclxuICBmb2N1c091dCgpIHtcclxuICAgIHRoaXMuY29udGVudHMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2NvcGUuZm9jdXMnKS5mb3JFYWNoKGUgPT5cclxuICAgICAgZS5jbGFzc0xpc3QucmVtb3ZlKCdmb2N1cycpXHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gZXZ0XHJcbiAgICovXHJcbiAgZm9jdXNJbihldnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuZm9jdXNPdXQoKTtcclxuICAgIGxldCBlbCA9IGV2dC5zcmNFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgd2hpbGUgKGVsICYmICFlbC5jbGFzc0xpc3QuY29udGFpbnMoJ3Njb3BlJykpXHJcbiAgICAgIGVsID0gZWwucGFyZW50RWxlbWVudDtcclxuICAgIGVsICYmICFlbC5jbGFzc0xpc3QuY29udGFpbnMoJ2NvbGxhcHNlJykgJiYgZWwuY2xhc3NMaXN0LmFkZCgnZm9jdXMnKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuaW50ZXJmYWNlIFZlcnNpb25JbmZvIHtcclxuICB0aW1lOiBEYXRlO1xyXG4gIGF1dGhvcjogc3RyaW5nO1xyXG4gIGZpbGU/OiBzdHJpbmc7XHJcbn1cclxuaW50ZXJmYWNlIENvbmZpZ3VydGlvbkluZm8ge1xyXG59XHJcbmludGVyZmFjZSBDb21wYXJlTW9kZWwge1xyXG4gIGRhdGUxOiBEYXRlO1xyXG4gIGRhdGUyOiBEYXRlO1xyXG59XHJcbmludGVyZmFjZSBTY29wZSB7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICBub2Rlczogc3RyaW5nW107XHJcbn1cclxuZW51bSBDaGFuZ2VTdGF0ZSB7XHJcbiAgVW5jaGFuZ2VkLFxyXG4gIEFkZGVkLFxyXG4gIE1vZGlmaWVkLFxyXG4gIFJlbW92ZWRcclxufVxyXG5lbnVtIFRva2VuS2luZCB7XHJcbiAgVmFsdWUsXHJcbiAgQXJyYXlTdGFydCxcclxuICBBcnJheUVuZCxcclxuICBPYmplY3RTdGFydCxcclxuICBPYmplY3RFbmRcclxufVxyXG4iLCI8bWF0LXRvb2xiYXI+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInByb3BlcnRpZXMudG9nZ2xlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInQ29sbGFwc2UnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uPnZpZXdfc2lkZWJhcjwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG48L21hdC10b29sYmFyPlxyXG48bWF0LXNpZGVuYXYtY29udGFpbmVyIGF1dG9zaXplIGZ4RmxleD5cclxuICA8bWF0LXNpZGVuYXYtY29udGVudD5cclxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJidWZmZXJcIiBbdmFsdWVdPXByb2dyZXNzIFtidWZmZXJWYWx1ZV09MCBbc3R5bGUudmlzaWJpbGl0eV09XCJwcm9ncmVzcyA+IDAgJiYgcHJvZ3Jlc3MgPCAxMDAgPyAndmlzaWJsZSc6J2hpZGRlbidcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICA8ZGl2IFtpbm5lckhUTUxdPVwiaHRtbCB8IHNhbml0aXplSHRtbFwiIChtb3VzZWxlYXZlKT1cImZvY3VzT3V0KClcIiAobW91c2Vtb3ZlKT1cImZvY3VzSW4oJGV2ZW50KVwiIGNsYXNzPVwiY29uZmlndXJhdGlvbi1kaWZmXCIgKGNsaWNrKT1cImNvbGxhcHNlKCRldmVudClcIiAjY29udGVudHM+PC9kaXY+XHJcbiAgPC9tYXQtc2lkZW5hdi1jb250ZW50PlxyXG4gIDxtYXQtc2lkZW5hdiBtb2RlPVwic2lkZVwiIG9wZW5lZCAjcHJvcGVydGllcyBjbGFzcz1cInRpbWVsaW5lXCI+XHJcbiAgICA8bWF0LW5hdi1saXN0ICpuZ0lmPVwidmVyc2lvbnNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdiBvZiB2ZXJzaW9uczsgbGV0IGluZGV4ID0gaW5kZXg7IGxldCBsYXN0ID0gbGFzdFwiPlxyXG4gICAgICAgIDxtYXQtbGlzdC1pdGVtIChjbGljayk9XCJjb21wYXJlKGluZGV4KVwiIFtjbGFzcy5hY3RpdmVdPVwidi50aW1lID09PSBhY3RpdmVEYXRlXCIgKm5nSWY9XCIhbGFzdFwiPlxyXG4gICAgICAgICAgPGgzIG1hdExpbmU+XHJcbiAgICAgICAgICAgIHt7KHYuYXV0aG9yIHx8ICdTeXN0ZW0nKSB8IHVzZXJOYW1lIHwgYXN5bmMgfX1cclxuICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cInRpbWVcIiBtYXRMaW5lPlxyXG4gICAgICAgICAgICB7e3YudGltZSB8IGFtQ2FsZW5kYXI6IG51bGw6IENBTEVOREFSX1NQRUMgfX1cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9tYXQtbmF2LWxpc3Q+XHJcbiAgPC9tYXQtc2lkZW5hdj5cclxuPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XHJcbiJdfQ==
|
558
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1kaWZmLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vZGlmZi9jb25maWd1cmF0aW9uLWRpZmYuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9kaWZmL2NvbmZpZ3VyYXRpb24tZGlmZi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTTVDLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUTtJQUNwSSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQjtJQUMvSCx3QkFBd0IsRUFBRSxtQkFBbUIsRUFBRSx5QkFBeUIsRUFBRSxnQkFBZ0IsQ0FBQyxFQUMzRixjQUFjLEdBQUcsY0FBYyxFQUMvQixjQUFjLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxFQUFFLFNBQVMsR0FBRyxVQUFVLEVBQUUsY0FBYyxHQUFHLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBWTdGLG1CQUFtQixTQUFuQixtQkFBbUI7SUFlOUIsV0FBVztJQUNYLFlBQW9CLEdBQWtCLEVBQ1IsV0FBZ0YsRUFDcEcsVUFBNEIsRUFDNUIsR0FBc0IsRUFDdEIsU0FBeUI7UUFKZixRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQ1IsZ0JBQVcsR0FBWCxXQUFXLENBQXFFO1FBQ3BHLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBbEJuQyxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBR1YsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUVMLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ2hDLGtCQUFhLEdBQWlCO1lBQ3JDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDO1lBQ3BELFFBQVEsRUFBRSxXQUFXO1lBQ3JCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFFBQVEsRUFBRSxhQUFhO1NBQ3hCLENBQUM7UUFDZSxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU9oRCxDQUFDO0lBQ0QsUUFBUTtRQUNOLGlCQUFpQjtRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixvQkFBb0I7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEIsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLEtBQWE7UUFDbkIsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFDaEQsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUNyQixNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN2RCxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFDLElBQUksT0FBTztnQkFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLENBQUM7aUJBQ0U7Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2FBQ2xCO1FBQ0gsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ08sVUFBVTtRQUNoQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssUUFBUSxDQUFDLENBQVUsRUFBRSxDQUFVLEVBQUUsT0FBZ0IsRUFBRSxFQUFFLFFBQWUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ3ZGLE1BQU0sUUFBUSxHQUFtQixFQUFFLENBQUM7UUFDcEMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDZCxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNqQixNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxLQUFLLElBQUk7b0JBQUUsT0FBTztxQkFDbEIsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzlELElBQUksS0FBSyxLQUFLLEtBQUs7d0JBQUUsT0FBTztvQkFDNUIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7d0JBQ2hDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQzt3QkFDZixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzt3QkFDdEcsSUFBSSxDQUFDLE9BQU87NEJBQUUsT0FBTzt3QkFDcEIsSUFBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3ZELFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ3hCO3lCQUNJLElBQUssQ0FBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDO3dCQUFFLE9BQU87eUJBQzdEO3dCQUNILE1BQU0sSUFBSSxHQUFJLENBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNwRCxJQUFJLElBQUksRUFBRTs0QkFDUixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7NEJBQ2YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7NEJBQ3RHLElBQUksQ0FBQyxPQUFPO2dDQUFFLE9BQU87NEJBQ3BCLElBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDOzRCQUN2RCxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3lCQUN4Qjs2QkFDSTs0QkFDSCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDOzRCQUNqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDOzRCQUMvRixJQUFJLENBQUMsT0FBTztnQ0FBRSxPQUFPOzRCQUNyQixNQUFNLE1BQU0sR0FBSSxJQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQzs0QkFDMUQsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzt5QkFDeEI7cUJBQ0Y7aUJBQ0Y7cUJBQ0ksSUFBSSxDQUFFLENBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7b0JBQ3JDLE1BQU0sTUFBTSxHQUFJLElBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7d0JBQ3pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUN6RCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDN0IsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDeEI7b0JBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7aUJBQzNEO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDRixDQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ2QsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDaEMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLOzRCQUNuRixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFBRSxPQUFPO3dCQUM3QixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO3dCQUMvRixJQUFJLENBQUMsT0FBTzs0QkFBRSxPQUFPO3dCQUNyQixNQUFNLE1BQU0sR0FBSSxJQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQzt3QkFDNUQsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDeEI7eUJBQ0ksSUFBSSxDQUFFLENBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7d0JBQ3JDLE1BQU0sTUFBTSxHQUFJLElBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3BDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7NEJBQ3pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUN6RCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDN0IsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzt5QkFDeEI7d0JBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7cUJBQzdEO2lCQUNGO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUUsSUFBYyxDQUFDLE1BQU07Z0JBQUUsT0FBTyxLQUFLLENBQUM7U0FDM0M7YUFDSTtZQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN6QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUM7b0JBQUUsT0FBTztnQkFDekMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLElBQUksSUFBSSxLQUFLLElBQUk7b0JBQUUsT0FBTztxQkFDckIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3ZCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQzt3QkFBRSxPQUFPO29CQUMxRCxJQUFJLElBQUksS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDekQsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQzt3QkFDZixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUNsRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7cUJBQ3hDO3lCQUNJO3dCQUNILElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQy9CLEtBQUssR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQVcsQ0FBQzt3QkFDdkYsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFOzRCQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDOzRCQUN0RCxJQUFJLENBQUMsT0FBTztnQ0FBRSxPQUFPOzRCQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQ0FDaEIsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQzVDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7eUJBQ3hCOzZCQUNJOzRCQUNILE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQzs0QkFDL0MsSUFBSSxDQUFDLE9BQU87Z0NBQUUsT0FBTzs0QkFDckIsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzt5QkFDeEI7d0JBRUQsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTs0QkFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7NEJBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dDQUMvRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQTtnQ0FDaEIsSUFBSSxJQUFJLEtBQUssU0FBUztvQ0FBRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7NEJBQ2pFLENBQUMsQ0FBQyxDQUFDOzRCQUNILFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7eUJBQ3hCOzZCQUNJOzRCQUNILElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7NEJBQ2QsSUFBSSxJQUFJLEtBQUssU0FBUztnQ0FBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7eUJBQzdEO3FCQUNGO2lCQUNGO3FCQUNJO29CQUNILElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQ2YsSUFBSSxDQUFDLEtBQUssUUFBUSxFQUFFO3dCQUNsQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDNUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDeEI7b0JBQ0QsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO3dCQUN0QixJQUFJLENBQUMsS0FBSyxRQUFRLEVBQUU7NEJBQ2xCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUM1RCxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDckMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzt5QkFDeEI7OzRCQUVDLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO3dCQUNsQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7cUJBQ3hDOzt3QkFFQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7aUJBQ3ZDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDekIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUM7b0JBQUUsT0FBTztnQkFDL0QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUN6QyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUMvRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQzt3QkFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO29CQUMzQyxDQUFDLENBQUMsQ0FBQztvQkFDSCxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN2QixJQUFJLElBQUssSUFBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTt3QkFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3pELEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ25CLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3pCLENBQUMsQ0FBQyxDQUFDO2lCQUNKO3FCQUNJO29CQUNILElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUNsQixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNwQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDN0csSUFBSSxDQUFDLE9BQU87NEJBQUUsT0FBTzt3QkFDckIsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQzt3QkFDZCxPQUFPLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDbkM7eUJBQ0k7d0JBQ0gsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQzt3QkFDZixJQUFJLENBQUMsS0FBSyxRQUFRLEVBQUU7NEJBQ2xCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUM1RCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUNwQixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3lCQUN4QjtxQkFDRjtvQkFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7aUJBQ3ZDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1NBQzdDO1FBQ0QsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNLLE1BQU0sQ0FBQyxJQUFTLEVBQUUsSUFBUztRQUNqQyxPQUFPLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLE1BQU0sQ0FBQyxJQUFRLEVBQUUsR0FBTyxFQUFFLEtBQWU7UUFDL0MsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNmLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7Z0JBQUUsT0FBTztZQUNuQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixFQUFFLEdBQUcsSUFBSSxDQUFDO2FBQ1g7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssT0FBTyxDQUFDLElBQVksRUFBRSxLQUFlO1FBQzNDLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSyxPQUFPLENBQUMsSUFBYSxFQUFFLFFBQWlCLEVBQUUsS0FBWTtRQUM1RCxNQUFNLFFBQVEsR0FBbUIsRUFBRSxDQUFDO1FBQ3BDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2YsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ2YsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDL0YsSUFBSSxDQUFDLE9BQU87d0JBQ1YsT0FBTztvQkFDVCxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN0QixRQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDL0I7cUJBQ0k7b0JBQ0gsTUFBTSxNQUFNLEdBQUksUUFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzNDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7d0JBQ3pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUN6RCxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDeEI7aUJBQ0Y7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBRSxRQUFrQixDQUFDLE1BQU07Z0JBQUUsT0FBTyxLQUFLLENBQUM7U0FDL0M7YUFBTTtZQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM1QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUM7b0JBQUUsT0FBTztnQkFDekMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDbEIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDcEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzdHLElBQUksQ0FBQyxPQUFPO3dCQUNWLE9BQU87b0JBQ1QsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDdkIsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTt3QkFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDL0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUN2RCxDQUFDO3dCQUNGLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ3hCOzt3QkFFQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO2lCQUNyQjtxQkFDSTtvQkFDSCxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO29CQUNuQixJQUFJLENBQUMsS0FBSyxRQUFRLEVBQUU7d0JBQ2xCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUM1RCxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN4QixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUN4QjtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTTtnQkFBRSxPQUFPLEtBQUssQ0FBQztTQUNqRDtRQUNELE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JFLENBQUM7SUFDRDs7Ozs7O09BTUc7SUFDSyxTQUFTLENBQUMsSUFBYSxFQUFFLFdBQXdCLFdBQVcsQ0FBQyxTQUFTLEVBQzVFLFlBQVksR0FBRyxTQUFTLEVBQUUsT0FBTyxHQUFHLEtBQUs7UUFDekMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1gsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakIsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztZQUM3RSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ3pDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQztvQkFDYixDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDOztvQkFFcEQsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQ3JDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxLQUFLLEVBQ3pELENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztZQUNILENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMvRDthQUNJO1lBQ0gsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztZQUM5RSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3BCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDOUQsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDO29CQUNmLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7O29CQUU5QyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlHLENBQUMsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0Q7Ozs7Ozs7OztPQVNHO0lBQ0ssTUFBTSxDQUFDLEtBQWtCLEVBQy9CLEtBQWdCLEVBQ2hCLFFBQWlCLEVBQ2pCLE9BQWlCLEVBQ2pCLFlBQXFCLEVBQ3JCLEtBQWlDLEVBQ2pDLGFBQXlDO1FBRXpDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxRQUFnQixFQUFFLEdBQVcsQ0FBQztRQUMxQyxRQUFRLEtBQUssRUFBRTtZQUNiLEtBQUssV0FBVyxDQUFDLE9BQU87Z0JBQ3RCLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQztnQkFDeEIsTUFBTTtZQUNSLEtBQUssV0FBVyxDQUFDLEtBQUs7Z0JBQ3BCLEdBQUcsR0FBRyxlQUFlLENBQUM7Z0JBQ3RCLE1BQU07WUFDUixLQUFLLFdBQVcsQ0FBQyxRQUFRO2dCQUN2QixHQUFHLEdBQUcsa0JBQWtCLENBQUM7Z0JBQ3pCLE1BQU07WUFDUjtnQkFDRSxHQUFHLEdBQUcsRUFBRSxDQUFDO1NBQ1o7UUFDRCxRQUFRLEtBQUssRUFBRTtZQUNiLEtBQUssU0FBUyxDQUFDLFVBQVU7Z0JBQ3ZCLFFBQVEsR0FBRyxHQUFHLENBQUM7Z0JBQ2YsTUFBTTtZQUNSLEtBQUssU0FBUyxDQUFDLFdBQVc7Z0JBQ3hCLFFBQVEsR0FBRyxHQUFHLENBQUM7Z0JBQ2YsTUFBTTtZQUNSLEtBQUssU0FBUyxDQUFDLFFBQVE7Z0JBQ3JCLFFBQVEsR0FBRyxHQUFHLENBQUM7Z0JBQ2YsTUFBTTtZQUNSLEtBQUssU0FBUyxDQUFDLFNBQVM7Z0JBQ3RCLFFBQVEsR0FBRyxHQUFHLENBQUM7Z0JBQ2YsTUFBTTtTQUNUO1FBQ0QsSUFBSSxLQUFLLElBQUksU0FBUyxDQUFDLFdBQVcsSUFBSSxLQUFLLElBQUksU0FBUyxDQUFDLFVBQVU7WUFDakUsQ0FBQyxHQUFHLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUNuQyxJQUFJLFlBQVk7WUFDZCxDQUFDLElBQUksMEJBQTBCLEdBQUcsS0FBSyxZQUFZLFdBQVcsQ0FBQztRQUNqRSxJQUFJLFFBQVEsRUFBRTtZQUNaLElBQUksS0FBSyxJQUFJLFNBQVMsQ0FBQyxTQUFTLElBQUksS0FBSyxJQUFJLFNBQVMsQ0FBQyxRQUFRO2dCQUM3RCxDQUFDLElBQUksUUFBUSxDQUFDO1lBQ2hCLENBQUMsSUFBSSwwQkFBMEIsUUFBUSxTQUFTLENBQUE7WUFDaEQsSUFBSSxLQUFLLElBQUksU0FBUyxDQUFDLFdBQVcsSUFBSSxLQUFLLElBQUksU0FBUyxDQUFDLFVBQVU7Z0JBQ2pFLENBQUMsSUFBSSwrREFBK0QsQ0FBQztTQUN4RTtRQUNELElBQUksS0FBSyxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUU7WUFDNUIsSUFBSSxZQUFZLEtBQUssT0FBTztnQkFBRSxDQUFDLElBQUksOENBQThDLEtBQUssZ0JBQWdCLENBQUM7aUJBQ2xHLElBQUksQ0FBQyxZQUFZLEtBQUssT0FBTyxJQUFJLFlBQVksS0FBSyxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQWUsQ0FBQztnQkFBRSxDQUFDLElBQUksbUZBQW1GLEtBQUssdUJBQXVCLENBQUM7WUFDN04sQ0FBQyxJQUFJLHNCQUFzQixHQUFHLEtBQUssS0FBSyxTQUFTLENBQUM7U0FDbkQ7UUFDRCxJQUFJLE9BQU87WUFBRSxDQUFDLElBQUksa0NBQWtDLENBQUM7UUFDckQsSUFBSSxLQUFLLElBQUksUUFBUSxFQUFFO1lBQ3JCLE1BQU0sUUFBUSxHQUFHLEtBQUssS0FBSyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUNoSCxDQUFDLElBQUksZUFBZSxHQUFHLCtCQUErQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3RGLElBQUksYUFBYTtnQkFDZixDQUFDLElBQUksZ0NBQWdDLGFBQWEsU0FBUyxDQUFDO1lBQzlELENBQUMsSUFBSSxxQkFBcUIsQ0FBQztTQUM1QjthQUNJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQyxLQUFLO1lBQ2hDLENBQUMsSUFBSSxPQUFPLENBQUM7UUFDZixJQUFJLEtBQUssSUFBSSxTQUFTLENBQUMsU0FBUyxJQUFJLEtBQUssSUFBSSxTQUFTLENBQUMsUUFBUTtZQUM3RCxDQUFDLElBQUksUUFBUSxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxHQUFlO1FBQ3RCLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxVQUF5QixDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQzFDLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO1FBQ3hCLEVBQUUsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUNEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUN2RSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFDRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsR0FBZTtRQUNyQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLFVBQXlCLENBQUM7UUFDdkMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDMUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFDeEIsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUNGLENBQUE7Z0hBOWVZLG1CQUFtQiwrQ0FpQnBCLFVBQVU7b0dBakJULG1CQUFtQiw0TEM3QmhDLHF6Q0F3QkE7QURLYSxtQkFBbUI7SUFGL0IsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFFLENBQUM7SUFDbEQsZUFBZTtHQUNGLG1CQUFtQixDQThlL0I7U0E5ZVksbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBVC9CLFNBQVM7MkJBR0Y7d0JBQ0osS0FBSyxFQUFFLE1BQU07cUJBQ2Q7OzBCQXFCRSxNQUFNOzJCQUFDLFVBQVU7d0lBaEJHLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTs7QUE2ZnZCLElBQUssV0FLSjtBQUxELFdBQUssV0FBVztJQUNkLHVEQUFTLENBQUE7SUFDVCwrQ0FBSyxDQUFBO0lBQ0wscURBQVEsQ0FBQTtJQUNSLG1EQUFPLENBQUE7QUFDVCxDQUFDLEVBTEksV0FBVyxLQUFYLFdBQVcsUUFLZjtBQUNELElBQUssU0FNSjtBQU5ELFdBQUssU0FBUztJQUNaLDJDQUFLLENBQUE7SUFDTCxxREFBVSxDQUFBO0lBQ1YsaURBQVEsQ0FBQTtJQUNSLHVEQUFXLENBQUE7SUFDWCxtREFBUyxDQUFBO0FBQ1gsQ0FBQyxFQU5JLFNBQVMsS0FBVCxTQUFTLFFBTWIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBJbmplY3QsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDYWxlbmRhclNwZWMgfSBmcm9tIFwiLi4vLi4vY29yZS9waXBlcy9jYWxlbmRhci5waXBlXCI7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IGlzQXJyYXksIGlzT2JqZWN0LCBpc1N0cmluZyB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgVXRpbGl0eUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUvYmFzZSc7XHJcbmltcG9ydCB7IFV0aWxpdHlSZWYgfSBmcm9tICcuLi91dGlsaXR5LXJlZic7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJzsgXHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRhc291cmNlLnNlcnZpY2UnO1xyXG5cclxuY29uc3QgSUdOT1JFX05PREUgPSBbJ2F1dGhvcicsICdoaXN0b3J5JywgJ3RhcmdldERlY29yYXRvcicsICdzb3VyY2VEZWNvcmF0b3InLCAnb2Zmc2V0WCcsICdvZmZzZXRZJywgJ3JvdGF0ZUFuZ2xlJywgJ3dpZHRoJywgJ2hlaWdodCcsXHJcbiAgJ3N0eWxlJywgJ3NlZ21lbnRzJywgJ29mZnNldCcsICd0YXJnZXRQb3J0SUQnLCAnc291cmNlUG9ydElEJywgJ2hvcml6b250YWxBbGlnbm1lbnQnLCAndmVydGljYWxBbGlnbm1lbnQnLCAnd29ya2Zsb3cudGltZXN0YW1wJyxcclxuICAnY29ubmVjdG9ycy5jb25zdHJhaW50cycsICdub2Rlcy5jb25zdHJhaW50cycsICdhbm5vdGF0aW9ucy5jb25zdHJhaW50cycsICdhbm5vdGF0aW9ucy5pZCddLFxyXG4gIFNWR19QQVRIX1JFR0VYID0gL15bbU1dLitbelpdJC8sXHJcbiAgSU5ERVhfUFJPUEVSVFkgPSBbJ25hbWUnLCAnaWQnLCAnZGF0YVR5cGUnXSwgREFUQV9UWVBFID0gJ2RhdGFUeXBlJywgT1JJR0lOQUxfVkFMVUUgPSAnXycsIFNUQVRFID0gJ19fJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlndXJhdGlvbi1kaWZmLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb25maWd1cmF0aW9uLWRpZmYuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ3BhbmUnXHJcbiAgfVxyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdiaXpkb2MtY29uZmlndXJhdGlvbi1kaWZmJyB9KVxyXG4vKiogY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIFN5c3RlbURpZmZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgVXRpbGl0eUNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnY29udGVudHMnKSBjb250ZW50czogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgaHRtbCA9ICcnO1xyXG4gIHZlcnNpb25zOiBWZXJzaW9uSW5mb1tdO1xyXG4gIGFjdGl2ZURhdGU6IERhdGU7XHJcbiAgcHJvZ3Jlc3MgPSAwO1xyXG4gIG5vbmU6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfd29ya2luZyA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcclxuICByZWFkb25seSBDQUxFTkRBUl9TUEVDOiBDYWxlbmRhclNwZWMgPSB7XHJcbiAgICBsYXN0RGF5OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZZXN0ZXJkYXlBdCcsICdISDptbScpLFxyXG4gICAgbGFzdFdlZWs6ICdkZGQgSEg6bW0nLFxyXG4gICAgc2FtZURheTogJ0hIOm1tJyxcclxuICAgIHNhbWVFbHNlOiAnTU1NIEQgSEg6bW0nXHJcbiAgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAvKiogY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgQEluamVjdChVdGlsaXR5UmVmKSBwcml2YXRlIF91dGlsaXR5UmVmOiBVdGlsaXR5UmVmPENvbmZpZ3VydGlvbkluZm9bXSwgQ29tcGFyZU1vZGVsLCBWZXJzaW9uSW5mb1tdLCBudW1iZXI+LFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZHM6IERhdGFzb3VyY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYWNjb3VudHM6IEFjY291bnRTZXJ2aWNlKSB7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gZGVsYXkgcHJvZ3Jlc3NcclxuICAgIHRoaXMuX3dvcmtpbmcucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSksIGRlYm91bmNlVGltZSgxMDApKS5zdWJzY3JpYmUodiA9PiB2ICYmICh0aGlzLnByb2dyZXNzID0gdikpO1xyXG4gICAgdGhpcy5fd29ya2luZy5uZXh0KDUwKTtcclxuICAgIC8vIHBvcHVsYXRlIHZlcnNpb25zXHJcbiAgICB0aGlzLl91dGlsaXR5UmVmLnBvcHVsYXRlKCkuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICB0aGlzLnZlcnNpb25zID0gZTtcclxuICAgICAgdGhpcy5fd29ya2luZy5uZXh0KDEwMCk7XHJcbiAgICAgIGUubGVuZ3RoID4gMSAmJlxyXG4gICAgICAgIHRoaXMuY29tcGFyZSgwKTtcclxuICAgIH0sICgpID0+IHRoaXMuX3NiLmVycm9yKCkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gaW5kZXhcclxuICAgKi9cclxuICBjb21wYXJlKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHsgdGltZTogZGF0ZTEsIGZpbGUgfSA9IHRoaXMudmVyc2lvbnNbaW5kZXhdLFxyXG4gICAgICB2ZXJzaW9uID0gdGhpcy52ZXJzaW9ucy5zbGljZShpbmRleCArIDEpLmZpbmQodiA9PiB2LmZpbGUgPT09IGZpbGUpO1xyXG4gICAgaWYgKCF2ZXJzaW9uKSByZXR1cm47XHJcbiAgICBjb25zdCB7IHRpbWU6IGRhdGUyIH0gPSB2ZXJzaW9uO1xyXG4gICAgdGhpcy5fd29ya2luZy5uZXh0KDI1KTtcclxuICAgIHRoaXMuX3V0aWxpdHlSZWYuZXhlY3V0ZSh7IGRhdGUxLCBkYXRlMiB9KS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgIHRoaXMuaHRtbCA9ICcnO1xyXG4gICAgICB0aGlzLl93b3JraW5nLm5leHQoNTApO1xyXG4gICAgICB0aGlzLmFjdGl2ZURhdGUgPSBkYXRlMTtcclxuICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuX2NvbXBhcmUoclswXSwgclsxXSk7XHJcbiAgICAgIGlmIChyZXN1bHRzKSByZXN1bHRzLnRoZW4oZCA9PiB7XHJcbiAgICAgICAgdGhpcy5fd29ya2luZy5uZXh0KDc1KTtcclxuICAgICAgICB0aGlzLmh0bWwgPSB0aGlzLl9nZW5lcmF0ZShkKTtcclxuICAgICAgICB0aGlzLl9zY3JvbGxUb3AoKTtcclxuICAgICAgICB0aGlzLl93b3JraW5nLm5leHQoMTAwKTtcclxuICAgICAgICB0aGlzLm5vbmUgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX3dvcmtpbmcubmV4dCgxMDApO1xyXG4gICAgICAgIHRoaXMubm9uZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0sICgpID0+IHRoaXMuX3NiLmVycm9yKCkpO1xyXG4gIH1cclxuICBwcml2YXRlIF9zY3JvbGxUb3AoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29udGVudHMubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnNjcm9sbCh7IHRvcDogMCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBhXHJcbiAgICogQHBhcmFtIGJcclxuICAgKiBAcGFyYW0gZGlmZlxyXG4gICAqIEBwYXJhbSBzY29wZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2NvbXBhcmUoYToge30gfCBbXSwgYjoge30gfCBbXSwgZGlmZjoge30gfCBbXSA9IHt9LCBzY29wZTogU2NvcGUgPSB7IG5vZGVzOiBbXSB9KTogUHJvbWlzZTx7fSB8IFtdPiB8IGZhbHNlIHtcclxuICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xyXG4gICAgaWYgKGlzQXJyYXkoYSkpIHtcclxuICAgICAgYS5mb3JFYWNoKChlLCBpKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYlZhbCA9IGJbaV07XHJcbiAgICAgICAgaWYgKGUgPT09IGJWYWwpIHJldHVybjtcclxuICAgICAgICBlbHNlIGlmIChpc09iamVjdChlKSkge1xyXG4gICAgICAgICAgY29uc3QgYUpzb24gPSBKU09OLnN0cmluZ2lmeShlKSwgYkpzb24gPSBKU09OLnN0cmluZ2lmeShiVmFsKTtcclxuICAgICAgICAgIGlmIChhSnNvbiA9PT0gYkpzb24pIHJldHVybjtcclxuICAgICAgICAgIGlmIChiVmFsICYmIHRoaXMuX21hdGNoKGJWYWwsIGUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9iaiA9IHt9O1xyXG4gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fY29tcGFyZShlLCBiVmFsLCBvYmosIHsgbm9kZXM6IHNjb3BlLm5vZGVzLCB0eXBlOiBlW0RBVEFfVFlQRV0gfHwgc2NvcGUudHlwZSB9KTtcclxuICAgICAgICAgICAgaWYgKCFwcm9taXNlKSByZXR1cm47XHJcbiAgICAgICAgICAgIChkaWZmIGFzIGFueVtdKS5wdXNoKHRoaXMuX3Jla2V5KGUsIG9iaiwgc2NvcGUubm9kZXMpKTtcclxuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKChiIGFzIFtdKS5maW5kKGIgPT4gSlNPTi5zdHJpbmdpZnkoYikgPT09IGFKc29uKSkgcmV0dXJuO1xyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJPYmogPSAoYiBhcyBbXSkuZmluZChiID0+IHRoaXMuX21hdGNoKGIsIGUpKTtcclxuICAgICAgICAgICAgaWYgKGJPYmopIHtcclxuICAgICAgICAgICAgICBjb25zdCBvYmogPSB7fTtcclxuICAgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fY29tcGFyZShlLCBiT2JqLCBvYmosIHsgbm9kZXM6IHNjb3BlLm5vZGVzLCB0eXBlOiBlW0RBVEFfVFlQRV0gfHwgc2NvcGUudHlwZSB9KTtcclxuICAgICAgICAgICAgICBpZiAoIXByb21pc2UpIHJldHVybjtcclxuICAgICAgICAgICAgICAoZGlmZiBhcyBhbnlbXSkucHVzaCh0aGlzLl9yZWtleShlLCBvYmosIHNjb3BlLm5vZGVzKSk7XHJcbiAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zdCBvYmogPSBpc0FycmF5KGUpID8gW10gOiB7fTtcclxuICAgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fYnJhbmNoKGUsIG9iaiwgeyBub2Rlczogc2NvcGUubm9kZXMsIHR5cGU6IGVbREFUQV9UWVBFXSB8fCBzY29wZS50eXBlIH0pO1xyXG4gICAgICAgICAgICAgIGlmICghcHJvbWlzZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IChkaWZmIGFzIGFueVtdKS5wdXNoKG9iaik7XHJcbiAgICAgICAgICAgICAgZGlmZltTVEFURSArIChsZW5ndGggLSAxKS50b1N0cmluZygpXSA9IENoYW5nZVN0YXRlLkFkZGVkO1xyXG4gICAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoIShiIGFzIFtdKS5maW5kKGIgPT4gYiA9PSBlKSkge1xyXG4gICAgICAgICAgY29uc3QgbGVuZ3RoID0gKGRpZmYgYXMgYW55W10pLnB1c2goZSk7XHJcbiAgICAgICAgICBpZiAoc2NvcGUubm9kZXMuaW5kZXhPZigncG9zaXRpb25zJykgPiAtMSkge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fYWNjb3VudHMuZ2V0KGUpLnRvUHJvbWlzZSgpLnRoZW4odiA9PlxyXG4gICAgICAgICAgICAgIGRpZmZbbGVuZ3RoIC0gMV0gPSB2Lm5hbWUpO1xyXG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGlmZltTVEFURSArIChsZW5ndGggLSAxKS50b1N0cmluZygpXSA9IENoYW5nZVN0YXRlLkFkZGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIChiIGFzIFtdKS5mb3JFYWNoKChlLCBpKSA9PiB7XHJcbiAgICAgICAgaWYgKGUgIT09IGFbaV0pIHtcclxuICAgICAgICAgIGlmIChpc09iamVjdChlKSkge1xyXG4gICAgICAgICAgICBjb25zdCBiSnNvbiA9IEpTT04uc3RyaW5naWZ5KGUpO1xyXG4gICAgICAgICAgICBpZiAoYkpzb24gPT09IEpTT04uc3RyaW5naWZ5KGFbaV0pIHx8IChhIGFzIFtdKS5maW5kKGEgPT4gSlNPTi5zdHJpbmdpZnkoYSkgPT09IGJKc29uIHx8XHJcbiAgICAgICAgICAgICAgdGhpcy5fbWF0Y2goYSwgZSkpKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IG9iaiA9IGlzQXJyYXkoZSkgPyBbXSA6IHt9O1xyXG4gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fYnJhbmNoKGUsIG9iaiwgeyBub2Rlczogc2NvcGUubm9kZXMsIHR5cGU6IGVbREFUQV9UWVBFXSB8fCBzY29wZS50eXBlIH0pO1xyXG4gICAgICAgICAgICBpZiAoIXByb21pc2UpIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gKGRpZmYgYXMgYW55W10pLnB1c2gob2JqKTtcclxuICAgICAgICAgICAgZGlmZltTVEFURSArIChsZW5ndGggLSAxKS50b1N0cmluZygpXSA9IENoYW5nZVN0YXRlLlJlbW92ZWQ7XHJcbiAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICghKGEgYXMgW10pLmZpbmQoYSA9PiBhID09IGUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IChkaWZmIGFzIFtdKS5wdXNoKGUpO1xyXG4gICAgICAgICAgICBpZiAoc2NvcGUubm9kZXMuaW5kZXhPZigncG9zaXRpb25zJykgPiAtMSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9hY2NvdW50cy5nZXQoZSkudG9Qcm9taXNlKCkudGhlbih2ID0+XHJcbiAgICAgICAgICAgICAgICBkaWZmW2xlbmd0aCAtIDFdID0gdi5uYW1lKTtcclxuICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRpZmZbU1RBVEUgKyAobGVuZ3RoIC0gMSkudG9TdHJpbmcoKV0gPSBDaGFuZ2VTdGF0ZS5SZW1vdmVkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICghKGRpZmYgYXMgYW55W10pLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKGEpLmZvckVhY2goayA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2lnbm9yZShrLCBzY29wZS5ub2RlcykpIHJldHVybjtcclxuICAgICAgICBjb25zdCBhVmFsID0gYVtrXSwgYlZhbCA9IGJba107XHJcbiAgICAgICAgaWYgKGFWYWwgPT09IGJWYWwpIHJldHVybjtcclxuICAgICAgICBlbHNlIGlmIChpc09iamVjdChhVmFsKSkge1xyXG4gICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGFWYWwpID09PSBKU09OLnN0cmluZ2lmeShiVmFsKSkgcmV0dXJuO1xyXG4gICAgICAgICAgaWYgKGJWYWwgIT09IHVuZGVmaW5lZCAmJiBpc0FycmF5KGJWYWwpICE9PSBpc0FycmF5KGFWYWwpKSB7XHJcbiAgICAgICAgICAgIGRpZmZba10gPSBhVmFsO1xyXG4gICAgICAgICAgICBkaWZmW09SSUdJTkFMX1ZBTFVFICsga10gPSBpc0FycmF5KGJWYWwpID8gYlZhbC5qb2luKCcsICcpIDogYlZhbDtcclxuICAgICAgICAgICAgZGlmZltTVEFURSArIGtdID0gQ2hhbmdlU3RhdGUuTW9kaWZpZWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IG9iaiA9IGlzQXJyYXkoYVZhbCkgPyBbXSA6IHt9LFxyXG4gICAgICAgICAgICAgIGV4dHJhID0geyB0eXBlOiBhVmFsW0RBVEFfVFlQRV0gfHwgc2NvcGUudHlwZSwgbm9kZXM6IFsuLi5zY29wZS5ub2Rlcywga10gfSBhcyBTY29wZTtcclxuICAgICAgICAgICAgaWYgKGJWYWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9jb21wYXJlKGFWYWwsIGJWYWwsIG9iaiwgZXh0cmEpO1xyXG4gICAgICAgICAgICAgIGlmICghcHJvbWlzZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIGlmICghaXNBcnJheShhVmFsKSlcclxuICAgICAgICAgICAgICAgIG9iaiA9IHRoaXMuX3Jla2V5KGFWYWwsIG9iaiwgc2NvcGUubm9kZXMpO1xyXG4gICAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2JyYW5jaChhVmFsLCBvYmosIGV4dHJhKTtcclxuICAgICAgICAgICAgICBpZiAoIXByb21pc2UpIHJldHVybjtcclxuICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoc2NvcGUubm9kZXMuaW5kZXhPZigncG9zaXRpb25zJykgPiAtMSkge1xyXG4gICAgICAgICAgICAgIGRpZmZbT1JJR0lOQUxfVkFMVUUgKyBrXSA9IGFWYWw7XHJcbiAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2RzLmdldChzY29wZS50eXBlLCBrKS50b1Byb21pc2UoKS50aGVuKHYgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGlzU3RyaW5nKHYpID8gdiA6IHZbT2JqZWN0LmtleXModilbMF1dO1xyXG4gICAgICAgICAgICAgICAgZGlmZltuYW1lXSA9IG9ialxyXG4gICAgICAgICAgICAgICAgaWYgKGJWYWwgPT09IHVuZGVmaW5lZCkgZGlmZltTVEFURSArIG5hbWVdID0gQ2hhbmdlU3RhdGUuQWRkZWQ7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBkaWZmW2tdID0gb2JqO1xyXG4gICAgICAgICAgICAgIGlmIChiVmFsID09PSB1bmRlZmluZWQpIGRpZmZbU1RBVEUgKyBrXSA9IENoYW5nZVN0YXRlLkFkZGVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgZGlmZltrXSA9IGFWYWw7XHJcbiAgICAgICAgICBpZiAoayA9PT0gJ3VzZXJJZCcpIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2FjY291bnRzLmdldChhVmFsKS50b1Byb21pc2UoKS50aGVuKHYgPT5cclxuICAgICAgICAgICAgICBkaWZmW2tdID0gdi5uYW1lKTtcclxuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChiVmFsICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKGsgPT09ICd1c2VySWQnKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2FjY291bnRzLmdldChiVmFsKS50b1Byb21pc2UoKS50aGVuKHYgPT5cclxuICAgICAgICAgICAgICAgIGRpZmZbT1JJR0lOQUxfVkFMVUUgKyBrXSA9IHYubmFtZSk7XHJcbiAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgZGlmZltPUklHSU5BTF9WQUxVRSArIGtdID0gYlZhbDtcclxuICAgICAgICAgICAgZGlmZltTVEFURSArIGtdID0gQ2hhbmdlU3RhdGUuTW9kaWZpZWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGRpZmZbU1RBVEUgKyBrXSA9IENoYW5nZVN0YXRlLkFkZGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIE9iamVjdC5rZXlzKGIpLmZvckVhY2goayA9PiB7XHJcbiAgICAgICAgaWYgKGFba10gIT09IHVuZGVmaW5lZCB8fCB0aGlzLl9pZ25vcmUoaywgc2NvcGUubm9kZXMpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgYlZhbCA9IGJba107XHJcbiAgICAgICAgaWYgKHNjb3BlLm5vZGVzLmluZGV4T2YoJ3Bvc2l0aW9ucycpID4gLTEpIHtcclxuICAgICAgICAgIGNvbnN0IG9iaiA9IFtdO1xyXG4gICAgICAgICAgZGlmZltPUklHSU5BTF9WQUxVRSArIGtdID0gYlZhbDtcclxuICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9kcy5nZXQoc2NvcGUudHlwZSwgaykudG9Qcm9taXNlKCkudGhlbih2ID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGlzU3RyaW5nKHYpID8gdiA6IHZbT2JqZWN0LmtleXModilbMF1dO1xyXG4gICAgICAgICAgICBkaWZmW25hbWVdID0gb2JqO1xyXG4gICAgICAgICAgICBkaWZmW1NUQVRFICsgbmFtZV0gPSBDaGFuZ2VTdGF0ZS5SZW1vdmVkO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgYlZhbCAmJiAoYlZhbCBhcyBhbnlbXSkuZm9yRWFjaCgoZSwgaSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fYWNjb3VudHMuZ2V0KGUpLnRvUHJvbWlzZSgpLnRoZW4odiA9PlxyXG4gICAgICAgICAgICAgIG9ialtpXSA9IHYubmFtZSk7XHJcbiAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXNPYmplY3QoYlZhbCkpIHtcclxuICAgICAgICAgICAgY29uc3Qgb2JqID0gaXNBcnJheShiVmFsKSA/IFtdIDoge307XHJcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9icmFuY2goYlZhbCwgb2JqLCB7IHR5cGU6IGJWYWxbREFUQV9UWVBFXSB8fCBzY29wZS50eXBlLCBub2RlczogWy4uLnNjb3BlLm5vZGVzLCBrXSB9KTtcclxuICAgICAgICAgICAgaWYgKCFwcm9taXNlKSByZXR1cm47XHJcbiAgICAgICAgICAgIGRpZmZba10gPSBvYmo7XHJcbiAgICAgICAgICAgIHByb21pc2UgJiYgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBkaWZmW2tdID0gYlZhbDtcclxuICAgICAgICAgICAgaWYgKGsgPT09ICd1c2VySWQnKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2FjY291bnRzLmdldChiVmFsKS50b1Byb21pc2UoKS50aGVuKHYgPT5cclxuICAgICAgICAgICAgICAgIGRpZmZba10gPSB2Lm5hbWUpO1xyXG4gICAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRpZmZbU1RBVEUgKyBrXSA9IENoYW5nZVN0YXRlLlJlbW92ZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKCFPYmplY3Qua2V5cyhkaWZmKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBwcm9taXNlcy5sZW5ndGggPyBQcm9taXNlLmFsbChwcm9taXNlcykudGhlbigoKSA9PiBkaWZmKSA6IFByb21pc2UucmVzb2x2ZShkaWZmKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG9iajFcclxuICAgKiBAcGFyYW0gb2JqMlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX21hdGNoKG9iajE6IGFueSwgb2JqMjogYW55KSB7XHJcbiAgICByZXR1cm4gSU5ERVhfUFJPUEVSVFkuZmluZEluZGV4KGsgPT4gb2JqMVtrXSAmJiBvYmoxW2tdID09PSBvYmoyW2tdKSA+IC0xO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGJhc2VcclxuICAgKiBAcGFyYW0gb2JqXHJcbiAgICogQHBhcmFtIG5vZGVzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcmVrZXkoYmFzZToge30sIG9iajoge30sIG5vZGVzOiBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgbmV3T2JqID0ge307XHJcbiAgICBsZXQgb2sgPSBmYWxzZTtcclxuICAgIElOREVYX1BST1BFUlRZLmZvckVhY2goayA9PiB7XHJcbiAgICAgIGlmICh0aGlzLl9pZ25vcmUoaywgbm9kZXMpKSByZXR1cm47XHJcbiAgICAgIGlmIChiYXNlW2tdKSB7XHJcbiAgICAgICAgbmV3T2JqW2tdID0gYmFzZVtrXTtcclxuICAgICAgICBvayA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG9rID8gT2JqZWN0LmFzc2lnbihuZXdPYmosIG9iaikgOiBvYmo7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqIEBwYXJhbSBub2Rlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgX2lnbm9yZShuYW1lOiBzdHJpbmcsIG5vZGVzOiBzdHJpbmdbXSkge1xyXG4gICAgcmV0dXJuIElHTk9SRV9OT0RFLmluZGV4T2YobmFtZSkgPiAtMSB8fCBJR05PUkVfTk9ERS5pbmRleE9mKG5vZGVzW25vZGVzLmxlbmd0aCAtIDFdICsgJy4nICsgbmFtZSkgPiAtMTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGJhc2VcclxuICAgKiBAcGFyYW0gcHJlc3RpbmVcclxuICAgKiBAcGFyYW0gc2NvcGVcclxuICAgKi9cclxuICBwcml2YXRlIF9icmFuY2goYmFzZToge30gfCBbXSwgcHJlc3RpbmU6IHt9IHwgW10sIHNjb3BlOiBTY29wZSk6IFByb21pc2U8YW55PiB8IGZhbHNlIHtcclxuICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xyXG4gICAgaWYgKGlzQXJyYXkoYmFzZSkpIHtcclxuICAgICAgYmFzZS5mb3JFYWNoKGUgPT4ge1xyXG4gICAgICAgIGlmIChpc09iamVjdChlKSkge1xyXG4gICAgICAgICAgY29uc3Qgb2JqID0gaXNBcnJheShlKSA/IFtdIDoge307XHJcbiAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fYnJhbmNoKGUsIG9iaiwgeyBub2Rlczogc2NvcGUubm9kZXMsIHR5cGU6IGVbREFUQV9UWVBFXSB8fCBzY29wZS50eXBlIH0pO1xyXG4gICAgICAgICAgaWYgKCFwcm9taXNlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgKHByZXN0aW5lIGFzIGFueVtdKS5wdXNoKG9iaik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgbGVuZ3RoID0gKHByZXN0aW5lIGFzIGFueVtdKS5wdXNoKGUpO1xyXG4gICAgICAgICAgaWYgKHNjb3BlLm5vZGVzLmluZGV4T2YoJ3Bvc2l0aW9ucycpID4gLTEpIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2FjY291bnRzLmdldChlKS50b1Byb21pc2UoKS50aGVuKHYgPT5cclxuICAgICAgICAgICAgICBwcmVzdGluZVtsZW5ndGggLSAxXSA9IHYubmFtZSk7XHJcbiAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKCEocHJlc3RpbmUgYXMgYW55W10pLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgT2JqZWN0LmtleXMoYmFzZSkuZm9yRWFjaChrID0+IHtcclxuICAgICAgICBpZiAodGhpcy5faWdub3JlKGssIHNjb3BlLm5vZGVzKSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGFWYWwgPSBiYXNlW2tdO1xyXG4gICAgICAgIGlmIChpc09iamVjdChhVmFsKSkge1xyXG4gICAgICAgICAgY29uc3Qgb2JqID0gaXNBcnJheShhVmFsKSA/IFtdIDoge307XHJcbiAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fYnJhbmNoKGFWYWwsIG9iaiwgeyB0eXBlOiBhVmFsW0RBVEFfVFlQRV0gfHwgc2NvcGUudHlwZSwgbm9kZXM6IFsuLi5zY29wZS5ub2Rlcywga10gfSk7XHJcbiAgICAgICAgICBpZiAoIXByb21pc2UpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICBpZiAoc2NvcGUubm9kZXMuaW5kZXhPZigncG9zaXRpb25zJykgPiAtMSkge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fZHMuZ2V0KHNjb3BlLnR5cGUsIGspLnRvUHJvbWlzZSgpLnRoZW4odiA9PlxyXG4gICAgICAgICAgICAgIHByZXN0aW5lW2lzU3RyaW5nKHYpID8gdiA6IHZbT2JqZWN0LmtleXModilbMF1dXSA9IG9ialxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBwcmVzdGluZVtrXSA9IG9iajtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBwcmVzdGluZVtrXSA9IGFWYWw7XHJcbiAgICAgICAgICBpZiAoayA9PT0gJ3VzZXJJZCcpIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2FjY291bnRzLmdldChhVmFsKS50b1Byb21pc2UoKS50aGVuKHYgPT5cclxuICAgICAgICAgICAgICBwcmVzdGluZVtrXSA9IHYubmFtZSk7XHJcbiAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKCFPYmplY3Qua2V5cyhwcmVzdGluZSkubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJvbWlzZXMubGVuZ3RoID8gUHJvbWlzZS5hbGwocHJvbWlzZXMpIDogUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIHJldHVybiBodG1sIGZyb20gZGlmZiB0cmVlXHJcbiAgICogQHBhcmFtIGRpZmZcclxuICAgKiBAcGFyYW0gb2Jqc3RhdGVcclxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lXHJcbiAgICogQHBhcmFtIHNpYmxpbmcgYXJyYXkgZW50cnlcclxuICAgKi9cclxuICBwcml2YXRlIF9nZW5lcmF0ZShkaWZmOiB7fSB8IFtdLCBvYmpzdGF0ZTogQ2hhbmdlU3RhdGUgPSBDaGFuZ2VTdGF0ZS5VbmNoYW5nZWQsXHJcbiAgICBwcm9wZXJ0eU5hbWUgPSB1bmRlZmluZWQsIHNpYmxpbmcgPSBmYWxzZSkge1xyXG4gICAgbGV0IGggPSAnJztcclxuICAgIGlmIChpc0FycmF5KGRpZmYpKSB7XHJcbiAgICAgIGggKz0gdGhpcy5fd3JpdGUob2Jqc3RhdGUsIFRva2VuS2luZC5BcnJheVN0YXJ0LCBmYWxzZSwgZmFsc2UsIHByb3BlcnR5TmFtZSk7XHJcbiAgICAgIGNvbnN0IG4gPSBkaWZmLmxlbmd0aDtcclxuICAgICAgZGlmZi5mb3JFYWNoKChlLCBpKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBkaWZmW1NUQVRFICsgaS50b1N0cmluZygpXTtcclxuICAgICAgICBpZiAoaXNPYmplY3QoZSkpXHJcbiAgICAgICAgICBoICs9IHRoaXMuX2dlbmVyYXRlKGUsIHN0YXRlLCB1bmRlZmluZWQsIGkgPCBuIC0gMSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgaCArPSB0aGlzLl93cml0ZShzdGF0ZSwgVG9rZW5LaW5kLlZhbHVlLFxyXG4gICAgICAgICAgICBpID09PSBuIC0gMSB8fCBkaWZmW1NUQVRFICsgKGkgKyAxKS50b1N0cmluZygpXSAhPT0gc3RhdGUsXHJcbiAgICAgICAgICAgIGkgPCBuIC0gMSwgdW5kZWZpbmVkLCBlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGggKz0gdGhpcy5fd3JpdGUob2Jqc3RhdGUsIFRva2VuS2luZC5BcnJheUVuZCwgdHJ1ZSwgc2libGluZyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaCArPSB0aGlzLl93cml0ZShvYmpzdGF0ZSwgVG9rZW5LaW5kLk9iamVjdFN0YXJ0LCBmYWxzZSwgZmFsc2UsIHByb3BlcnR5TmFtZSk7XHJcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhkaWZmKS5maWx0ZXIoayA9PiAhay5zdGFydHNXaXRoKE9SSUdJTkFMX1ZBTFVFKSk7XHJcbiAgICAgIGtleXMuZm9yRWFjaCgoaywgaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IGRpZmZba10sIHN0YXRlID0gZGlmZltTVEFURSArIGtdLCBuID0ga2V5cy5sZW5ndGg7XHJcbiAgICAgICAgaWYgKGlzT2JqZWN0KHZhbCkpXHJcbiAgICAgICAgICBoICs9IHRoaXMuX2dlbmVyYXRlKHZhbCwgc3RhdGUsIGssIGkgPCBuIC0gMSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgaCArPSB0aGlzLl93cml0ZShzdGF0ZSwgVG9rZW5LaW5kLlZhbHVlLCBzdGF0ZSAhPT0gb2Jqc3RhdGUsIGkgPCBuIC0gMSwgaywgdmFsLCBkaWZmW09SSUdJTkFMX1ZBTFVFICsga10pO1xyXG4gICAgICB9KTtcclxuICAgICAgaCArPSB0aGlzLl93cml0ZShvYmpzdGF0ZSwgVG9rZW5LaW5kLk9iamVjdEVuZCwgdHJ1ZSwgc2libGluZyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogd3JpdGUgaHRtbCBsaW5lXHJcbiAgICogQHBhcmFtIHN0YXRlXHJcbiAgICogQHBhcmFtIGFubm90YXRlXHJcbiAgICogQHBhcmFtIHRva2VuXHJcbiAgICogQHBhcmFtIHNpYmxpbmcgYXJyYXkgZW50cnlcclxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lXHJcbiAgICogQHBhcmFtIHZhbHVlXHJcbiAgICogQHBhcmFtIG9yaWdpbmFsVmFsdWVcclxuICAgKi9cclxuICBwcml2YXRlIF93cml0ZShzdGF0ZTogQ2hhbmdlU3RhdGUsXHJcbiAgICB0b2tlbjogVG9rZW5LaW5kLFxyXG4gICAgYW5ub3RhdGU6IGJvb2xlYW4sXHJcbiAgICBzaWJsaW5nPzogYm9vbGVhbixcclxuICAgIHByb3BlcnR5TmFtZT86IHN0cmluZyxcclxuICAgIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbixcclxuICAgIG9yaWdpbmFsVmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBsZXQgaCA9ICcnLCBicmFja2V0czogc3RyaW5nLCBjbHM6IHN0cmluZztcclxuICAgIHN3aXRjaCAoc3RhdGUpIHtcclxuICAgICAgY2FzZSBDaGFuZ2VTdGF0ZS5SZW1vdmVkOlxyXG4gICAgICAgIGNscyA9ICdjb21wYXJlIHJlbW92ZWQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENoYW5nZVN0YXRlLkFkZGVkOlxyXG4gICAgICAgIGNscyA9ICdjb21wYXJlIGFkZGVkJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDaGFuZ2VTdGF0ZS5Nb2RpZmllZDpcclxuICAgICAgICBjbHMgPSAnY29tcGFyZSBtb2RpZmllZCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY2xzID0gJyc7XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKHRva2VuKSB7XHJcbiAgICAgIGNhc2UgVG9rZW5LaW5kLkFycmF5U3RhcnQ6XHJcbiAgICAgICAgYnJhY2tldHMgPSAnWyc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgVG9rZW5LaW5kLk9iamVjdFN0YXJ0OlxyXG4gICAgICAgIGJyYWNrZXRzID0gJ3snO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFRva2VuS2luZC5BcnJheUVuZDpcclxuICAgICAgICBicmFja2V0cyA9ICddJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBUb2tlbktpbmQuT2JqZWN0RW5kOlxyXG4gICAgICAgIGJyYWNrZXRzID0gJ30nO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKHRva2VuID09IFRva2VuS2luZC5PYmplY3RTdGFydCB8fCB0b2tlbiA9PSBUb2tlbktpbmQuQXJyYXlTdGFydClcclxuICAgICAgaCA9IGA8ZGl2IGNsYXNzPVwic2NvcGUgJHtjbHN9XCI+YDtcclxuICAgIGlmIChwcm9wZXJ0eU5hbWUpXHJcbiAgICAgIGggKz0gYDxzcGFuIGNsYXNzPVwic3RydWN0dXJlICR7Y2xzfVwiPiR7cHJvcGVydHlOYW1lfTogPC9zcGFuPmA7XHJcbiAgICBpZiAoYnJhY2tldHMpIHtcclxuICAgICAgaWYgKHRva2VuID09IFRva2VuS2luZC5PYmplY3RFbmQgfHwgdG9rZW4gPT0gVG9rZW5LaW5kLkFycmF5RW5kKVxyXG4gICAgICAgIGggKz0gJzwvZGl2Pic7XHJcbiAgICAgIGggKz0gYDxzcGFuIGNsYXNzPVwiYnJhY2tldHNcIj4ke2JyYWNrZXRzfTwvc3Bhbj5gXHJcbiAgICAgIGlmICh0b2tlbiA9PSBUb2tlbktpbmQuT2JqZWN0U3RhcnQgfHwgdG9rZW4gPT0gVG9rZW5LaW5kLkFycmF5U3RhcnQpXHJcbiAgICAgICAgaCArPSAnPHNwYW4gY2xhc3M9XCJhbHRlcm5hdGVcIj4uLi48L3NwYW4+PGRpdiBjbGFzcz1cInNjb3BlLWNvbnRlbnRcIj4nO1xyXG4gICAgfVxyXG4gICAgaWYgKHRva2VuID09IFRva2VuS2luZC5WYWx1ZSkge1xyXG4gICAgICBpZiAocHJvcGVydHlOYW1lID09PSAnY29sb3InKSBoICs9IGA8ZGl2IGNsYXNzPVwiY29sb3JcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6JHt2YWx1ZX1cIj48L2Rpdj4mbmJzcDtgO1xyXG4gICAgICBlbHNlIGlmICgocHJvcGVydHlOYW1lID09PSAnc2hhcGUnIHx8IHByb3BlcnR5TmFtZSA9PT0gJ2RhdGEnKSAmJiBTVkdfUEFUSF9SRUdFWC50ZXN0KHZhbHVlIGFzIHN0cmluZykpIGggKz0gYDxzdmcgd2lkdGg9MTIgaGVpZ2h0PTEyIHZpZXdCb3g9XCIwIDAgMzUgMzVcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiPjxwYXRoIGQ9XCIke3ZhbHVlfVwiPjwvcGF0aD48L3N2Zz4mbmJzcDtgO1xyXG4gICAgICBoICs9IGA8c3BhbiBjbGFzcz1cInZhbHVlICR7Y2xzfVwiPiR7dmFsdWV9PC9zcGFuPmA7XHJcbiAgICB9XHJcbiAgICBpZiAoc2libGluZykgaCArPSAnPHNwYW4gY2xhc3M9XCJzdHJ1Y3R1cmVcIj4sPC9zcGFuPic7XHJcbiAgICBpZiAoc3RhdGUgJiYgYW5ub3RhdGUpIHtcclxuICAgICAgY29uc3QgcmVzb3VyY2UgPSBzdGF0ZSA9PT0gQ2hhbmdlU3RhdGUuUmVtb3ZlZCA/ICdEZWxldGVkJyA6IHN0YXRlID09PSBDaGFuZ2VTdGF0ZS5BZGRlZCA/ICdBZGRlZCcgOiAnTW9kaWZpZWQnO1xyXG4gICAgICBoICs9IGA8ZGl2IGNsYXNzPVwiJHtjbHN9XCI+IDxkaXYgY2xhc3M9XCJsYWJlbFwiPjxzcGFuPiR7dGhpcy5fdHJhbnNsYXRlLmdldChyZXNvdXJjZSl9YDtcclxuICAgICAgaWYgKG9yaWdpbmFsVmFsdWUpXHJcbiAgICAgICAgaCArPSBgJm5ic3A7PHNwYW4gY2xhc3M9XCJvcmlnaW5hbFwiPiR7b3JpZ2luYWxWYWx1ZX08L3NwYW4+YDtcclxuICAgICAgaCArPSAnPC9zcGFuPjwvZGl2PjwvZGl2Pic7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0b2tlbiA9PT0gVG9rZW5LaW5kLlZhbHVlKVxyXG4gICAgICBoICs9ICc8YnIvPic7XHJcbiAgICBpZiAodG9rZW4gPT0gVG9rZW5LaW5kLk9iamVjdEVuZCB8fCB0b2tlbiA9PSBUb2tlbktpbmQuQXJyYXlFbmQpXHJcbiAgICAgIGggKz0gJzwvZGl2Pic7XHJcbiAgICByZXR1cm4gaDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogdG9nZ2xlXHJcbiAgICogQHBhcmFtIGV2dFxyXG4gICAqL1xyXG4gIGNvbGxhcHNlKGV2dDogTW91c2VFdmVudCkge1xyXG4gICAgbGV0IGVsID0gZXZ0LnNyY0VsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICB3aGlsZSAoZWwgJiYgIWVsLmNsYXNzTGlzdC5jb250YWlucygnc2NvcGUnKSlcclxuICAgICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50O1xyXG4gICAgZWwgJiYgZWwuY2xhc3NMaXN0LnRvZ2dsZSgnY29sbGFwc2UnKSAmJiBlbC5jbGFzc0xpc3QucmVtb3ZlKCdmb2N1cycpO1xyXG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiByZW1vdmUgY2xzXHJcbiAgICovXHJcbiAgZm9jdXNPdXQoKSB7XHJcbiAgICB0aGlzLmNvbnRlbnRzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNjb3BlLmZvY3VzJykuZm9yRWFjaChlID0+XHJcbiAgICAgIGUuY2xhc3NMaXN0LnJlbW92ZSgnZm9jdXMnKVxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGV2dFxyXG4gICAqL1xyXG4gIGZvY3VzSW4oZXZ0OiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLmZvY3VzT3V0KCk7XHJcbiAgICBsZXQgZWwgPSBldnQuc3JjRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHdoaWxlIChlbCAmJiAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdzY29wZScpKVxyXG4gICAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQ7XHJcbiAgICBlbCAmJiAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdjb2xsYXBzZScpICYmIGVsLmNsYXNzTGlzdC5hZGQoJ2ZvY3VzJyk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbmludGVyZmFjZSBWZXJzaW9uSW5mbyB7XHJcbiAgdGltZTogRGF0ZTtcclxuICBhdXRob3I6IHN0cmluZztcclxuICBmaWxlPzogc3RyaW5nO1xyXG59XHJcbmludGVyZmFjZSBDb25maWd1cnRpb25JbmZvIHtcclxufVxyXG5pbnRlcmZhY2UgQ29tcGFyZU1vZGVsIHtcclxuICBkYXRlMTogRGF0ZTtcclxuICBkYXRlMjogRGF0ZTtcclxufVxyXG5pbnRlcmZhY2UgU2NvcGUge1xyXG4gIHR5cGU/OiBzdHJpbmc7XHJcbiAgbm9kZXM6IHN0cmluZ1tdO1xyXG59XHJcbmVudW0gQ2hhbmdlU3RhdGUge1xyXG4gIFVuY2hhbmdlZCxcclxuICBBZGRlZCxcclxuICBNb2RpZmllZCxcclxuICBSZW1vdmVkXHJcbn1cclxuZW51bSBUb2tlbktpbmQge1xyXG4gIFZhbHVlLFxyXG4gIEFycmF5U3RhcnQsXHJcbiAgQXJyYXlFbmQsXHJcbiAgT2JqZWN0U3RhcnQsXHJcbiAgT2JqZWN0RW5kXHJcbn1cclxuIiwiPG1hdC10b29sYmFyPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJwcm9wZXJ0aWVzLnRvZ2dsZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NvbGxhcHNlJyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj52aWV3X3NpZGViYXI8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuPC9tYXQtdG9vbGJhcj5cclxuPG1hdC1zaWRlbmF2LWNvbnRhaW5lciBhdXRvc2l6ZSBmeEZsZXg+XHJcbiAgPG1hdC1zaWRlbmF2LWNvbnRlbnQ+XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiYnVmZmVyXCIgW3ZhbHVlXT1wcm9ncmVzcyBbYnVmZmVyVmFsdWVdPTAgW3N0eWxlLnZpc2liaWxpdHldPVwicHJvZ3Jlc3MgPiAwICYmIHByb2dyZXNzIDwgMTAwID8gJ3Zpc2libGUnOidoaWRkZW4nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgPGRpdiBbaW5uZXJIVE1MXT1cImh0bWwgfCBzYW5pdGl6ZUh0bWxcIiAobW91c2VsZWF2ZSk9XCJmb2N1c091dCgpXCIgKG1vdXNlbW92ZSk9XCJmb2N1c0luKCRldmVudClcIiBjbGFzcz1cImNvbmZpZ3VyYXRpb24tZGlmZlwiIChjbGljayk9XCJjb2xsYXBzZSgkZXZlbnQpXCIgI2NvbnRlbnRzPjwvZGl2PlxyXG4gIDwvbWF0LXNpZGVuYXYtY29udGVudD5cclxuICA8bWF0LXNpZGVuYXYgbW9kZT1cInNpZGVcIiBvcGVuZWQgI3Byb3BlcnRpZXMgY2xhc3M9XCJ0aW1lbGluZVwiPlxyXG4gICAgPG1hdC1uYXYtbGlzdCAqbmdJZj1cInZlcnNpb25zXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHYgb2YgdmVyc2lvbnM7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIj5cclxuICAgICAgICA8bWF0LWxpc3QtaXRlbSAoY2xpY2spPVwiY29tcGFyZShpbmRleClcIiBbY2xhc3MuYWN0aXZlXT1cInYudGltZSA9PT0gYWN0aXZlRGF0ZVwiICpuZ0lmPVwiIWxhc3RcIj5cclxuICAgICAgICAgIDxoMyBtYXRMaW5lPlxyXG4gICAgICAgICAgICB7eyh2LmF1dGhvciB8fCAnU3lzdGVtJykgfCB1c2VyTmFtZSB8IGFzeW5jIH19XHJcbiAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJ0aW1lXCIgbWF0TGluZT5cclxuICAgICAgICAgICAge3t2LnRpbWUgfCBhbUNhbGVuZGFyOiBudWxsOiBDQUxFTkRBUl9TUEVDIH19XHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gIDwvbWF0LXNpZGVuYXY+XHJcbjwvbWF0LXNpZGVuYXYtY29udGFpbmVyPlxyXG4iXX0=
|
@@ -57,4 +57,4 @@ SystemService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versio
|
|
57
57
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: SystemService, decorators: [{
|
58
58
|
type: Injectable
|
59
59
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3N5c3RlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLFdBQVcsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFHN0MsTUFBTSxPQUFPLGFBQWE7SUE2Q3hCLFlBQW9CLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7SUFFckMsQ0FBQztJQTlDRCxLQUFLLENBQUMsSUFBVTtRQUNkLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQVMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsV0FBVyxDQUFDLElBQVk7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBb0Isb0JBQW9CLGtCQUFrQixDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUlELE9BQU8sQ0FBQyxPQUFnRjtRQUN0RixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ25CLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUM7YUFDeEI7WUFDSCxJQUFJLE9BQU8sQ0FBQyxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3RELElBQUksT0FBTyxDQUFDLE1BQU07Z0JBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDdEQsSUFBSSxPQUFPLENBQUMsS0FBSztnQkFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzNFLElBQUksT0FBTyxDQUFDLEdBQUc7Z0JBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0RTtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQWlCLDBCQUEwQixFQUFFO1lBQ2hFLE1BQU07U0FDUCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsS0FBSztRQUNILE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFTLDZCQUE2QixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBQ0QsS0FBSyxDQUFDLE1BQWU7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBYyx3QkFBd0IsRUFBRTtZQUMzRCxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRTtTQUNuQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNkLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUMxQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQVk7UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFXLG9CQUFvQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUNELElBQUksQ0FBQyxJQUFZO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBTyxvQkFBb0Isa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFDRCxJQUFJLENBQUMsSUFBVTtRQUNiLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBUyxvQkFBb0Isa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25HLENBQUM7O0FBckNjLG9CQUFNLEdBQUcsRUFBRyxDQUFBOzBHQVBoQixhQUFhOzhHQUFiLGFBQWE7MkZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JtLCBSb2xlIH0gZnJvbSAnLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJy4uL2NvcmUvZnVuY3Rpb25zJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFN5c3RlbVNlcnZpY2Uge1xyXG4gIHJ1bGVzKGFyZ3M/OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSdWxlW10+KCcvYXBpL3N5c3RlbS9mb3JtL3J1bGVzJywgeyBwYXJhbXM6IGFyZ3MgfSk7XHJcbiAgfVxyXG4gIHN5bmNocmluaXplKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxCYWNrZ3JvdW5kSm9iSW5mbz4oYC9hcGkvc3lzdGVtL2N1YmUvJHtlbmNvZGVVUklDb21wb25lbnQobmFtZSl9L3N5bmNocm9uaXplYCwge30pO1xyXG4gIH1cclxuICBwcml2YXRlIHN0YXRpYyBfY2FjaGUgPSB7fTtcclxuICBmaW5kQWxsKG9wdGlvbnM6IHsgc2VhcmNoPzogc3RyaW5nLCBzdGFydD86IERhdGUsIGVuZD86IERhdGUsIGZvcm1JZD86IHN0cmluZyB9KVxyXG4gIGZpbmRBbGwoc2VhcmNoPzogc3RyaW5nKVxyXG4gIGZpbmRBbGwob3B0aW9uczogc3RyaW5nIHwgeyBzZWFyY2g/OiBzdHJpbmcsIHN0YXJ0PzogRGF0ZSwgZW5kPzogRGF0ZSwgZm9ybUlkPzogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPERvY3VtZW50SW5mb1tdPiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7fTtcclxuICAgIGlmIChpc1N0cmluZyhvcHRpb25zKSlcclxuICAgICAgcGFyYW1zWydzZWFyY2gnXSA9IG9wdGlvbnM7XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKG9wdGlvbnMuc2VhcmNoKSBwYXJhbXNbJ3NlYXJjaCddID0gb3B0aW9ucy5zZWFyY2g7XHJcbiAgICAgIGlmIChvcHRpb25zLmZvcm1JZCkgcGFyYW1zWydmb3JtSWQnXSA9IG9wdGlvbnMuZm9ybUlkO1xyXG4gICAgICBpZiAob3B0aW9ucy5zdGFydCkgcGFyYW1zWydzdGFydCddID0gbmV3IERhdGUob3B0aW9ucy5zdGFydCkudG9JU09TdHJpbmcoKTtcclxuICAgICAgaWYgKG9wdGlvbnMuZW5kKSBwYXJhbXNbJ2VuZCddID0gbmV3IERhdGUob3B0aW9ucy5lbmQpLnRvSVNPU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8RG9jdW1lbnRJbmZvW10+KCcvYXBpL3N5c3RlbS9mb3JtL2ZpbmRBbGwnLCB7XHJcbiAgICAgIHBhcmFtc1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvbGVzKCk6IE9ic2VydmFibGU8Um9sZVtdPiB7XHJcbiAgICByZXR1cm4gU3lzdGVtU2VydmljZS5fY2FjaGVbJ3JvbGVzJ10gfHwgKFN5c3RlbVNlcnZpY2UuX2NhY2hlWydyb2xlcyddID1cclxuICAgICAgdGhpcy5faHR0cC5nZXQ8Um9sZVtdPignL2FwaS9zeXN0ZW0vcG9zaXRpb25zL3JvbGVzJykucGlwZShzaGFyZVJlcGxheSgpKSk7XHJcbiAgfVxyXG4gIHJhbmdlKGZvcm1JZD86IHN0cmluZyk6IE9ic2VydmFibGU8UmFuZ2VJbmZvW10+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSYW5nZUluZm9bXT4oJy9hcGkvc3lzdGVtL2Zvcm0vcmFuZ2UnLCB7XHJcbiAgICAgIHBhcmFtczogeyBmb3JtSWQ6IGZvcm1JZCB8fCBudWxsIH1cclxuICAgIH0pLnBpcGUodGFwKHIgPT5cclxuICAgICAgci5mb3JFYWNoKHAgPT4gcC5kYXRlID0gbmV3IERhdGUocC5kYXRlKSlcclxuICAgICkpO1xyXG4gIH1cclxuICBjdWJlKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PEN1YmVJbmZvPihgL2FwaS9zeXN0ZW0vY3ViZS8ke2VuY29kZVVSSUNvbXBvbmVudChuYW1lKX1gKTtcclxuICB9XHJcbiAgZm9ybShuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEZvcm0+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxGb3JtPihgL2FwaS9zeXN0ZW0vZm9ybS8ke2VuY29kZVVSSUNvbXBvbmVudChuYW1lKX1gKTtcclxuICB9XHJcbiAgc2F2ZShmb3JtOiBGb3JtKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgIGNvbnN0IHsgd29ya2Zsb3cgfSA9IGZvcm07XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8bnVtYmVyPihgL2FwaS9zeXN0ZW0vZm9ybS8ke2VuY29kZVVSSUNvbXBvbmVudChmb3JtLm5hbWUpfWAsIHsgd29ya2Zsb3cgfSk7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQpIHtcclxuXHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUmFuZ2VJbmZvIHtcclxuICBjb3VudDogbnVtYmVyO1xyXG4gIGRhdGU6IERhdGU7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudEluZm8ge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbnVtYmVyOiBzdHJpbmc7XHJcbiAgc3ViamVjdDogc3RyaW5nO1xyXG4gIHN0YXRlSWQ6IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEN1YmVJbmZvIHtcclxuICBqb2JJbmZvOiBCYWNrZ3JvdW5kSm9iSW5mbztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEJhY2tncm91bmRKb2JJbmZvIHtcclxuICBlcnJvcj86IHN0cmluZztcclxuICBuZXh0RXhlY3V0aW9uPzogRGF0ZTtcclxuICBsYXN0RXhlY3V0aW9uPzogRGF0ZTtcclxuICBsYXN0Sm9iU3RhdGU/OiBzdHJpbmc7XHJcbn1cclxuaW50ZXJmYWNlIFJ1bGUge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG59XHJcbiJdfQ==
|