@sbcore/ng-absolute-validator 14.0.2 → 14.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -16
- package/esm2020/i18n/ar.mjs +68 -0
- package/esm2020/i18n/index.mjs +12 -0
- package/esm2020/lib/common.utils.mjs +12 -1
- package/esm2020/lib/config-interface.mjs +1 -1
- package/esm2020/lib/constant.mjs +2 -2
- package/esm2020/lib/directive/error-trigger/error-trigger-on.directive.mjs +1 -1
- package/esm2020/lib/interface.mjs +2 -14
- package/esm2020/lib/lang.config.mjs +26 -0
- package/esm2020/lib/ng-absolute-validator.component.mjs +5 -3
- package/esm2020/lib/ng-absolute-validator.module.mjs +10 -22
- package/esm2020/lib/ng-absolute-validator.service.mjs +14 -6
- package/esm2020/lib/pipe/index.mjs +2 -0
- package/esm2020/lib/pipe/replaceWith/replace-with.pipe.mjs +17 -0
- package/esm2020/lib/services/http.request.service.mjs +4 -3
- package/esm2020/lib/services/messages-builder.service.mjs +30 -33
- package/esm2020/lib/services/reactive.validate.mjs +4 -3
- package/esm2020/lib/services/utils.service.mjs +4 -3
- package/esm2020/lib/services/validate-rule.service.mjs +15 -10
- package/esm2020/lib/transator.loader.mjs +35 -24
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/sbcore-ng-absolute-validator.mjs +213 -97
- package/fesm2015/sbcore-ng-absolute-validator.mjs.map +1 -1
- package/fesm2020/sbcore-ng-absolute-validator.mjs +212 -99
- package/fesm2020/sbcore-ng-absolute-validator.mjs.map +1 -1
- package/i18n/ar.d.ts +68 -0
- package/i18n/index.d.ts +11 -0
- package/lib/common.utils.d.ts +4 -0
- package/lib/config-interface.d.ts +1 -2
- package/lib/constant.d.ts +1 -1
- package/lib/interface.d.ts +7 -3
- package/lib/lang.config.d.ts +1 -0
- package/lib/ng-absolute-validator.module.d.ts +6 -9
- package/lib/ng-absolute-validator.service.d.ts +8 -3
- package/lib/pipe/index.d.ts +1 -0
- package/lib/pipe/replaceWith/replace-with.pipe.d.ts +7 -0
- package/lib/services/messages-builder.service.d.ts +5 -3
- package/lib/services/validate-rule.service.d.ts +4 -2
- package/lib/transator.loader.d.ts +5 -3
- package/package.json +2 -2
- package/public-api.d.ts +1 -0
|
@@ -469,8 +469,9 @@ export class UtilService {
|
|
|
469
469
|
}
|
|
470
470
|
}
|
|
471
471
|
UtilService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UtilService, deps: [{ token: i1.HttpRequestService }, { token: i2.NgAbsoluteValidatorService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
472
|
-
UtilService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UtilService });
|
|
472
|
+
UtilService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UtilService, providedIn: 'root' });
|
|
473
473
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UtilService, decorators: [{
|
|
474
|
-
type: Injectable
|
|
474
|
+
type: Injectable,
|
|
475
|
+
args: [{ providedIn: 'root' }]
|
|
475
476
|
}], ctorParameters: function () { return [{ type: i1.HttpRequestService }, { type: i2.NgAbsoluteValidatorService }]; } });
|
|
476
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWFic29sdXRlLXZhbGlkYXRvci9zcmMvbGliL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQWMsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQzs7OztBQUk3RCxNQUFNLE9BQU8sV0FBVztJQVNwQixZQUNZLElBQXdCLEVBQ3hCLEdBQWdDO1FBRGhDLFNBQUksR0FBSixJQUFJLENBQW9CO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQTZCO1FBVHJDLG9CQUFlLEdBQWEsWUFBWSxDQUFDO1FBQ3pDLHNCQUFpQixHQUFRLGNBQWMsQ0FBQyxXQUFXLENBQUM7UUFDcEQscUJBQWdCLEdBQVMsY0FBYyxDQUFDLFVBQVUsQ0FBQztRQUNuRCxxQkFBZ0IsR0FBUyxjQUFjLENBQUMsZ0JBQWdCLENBQUM7UUFDekQsb0JBQWUsR0FBVSxjQUFjLENBQUMsZUFBZSxDQUFBO1FBQ3ZELG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBS2pDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUFBLENBQUM7SUFHZCxJQUFJO1FBQ0EsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztJQUNqRCxD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LE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7O3dHQWxpQlEsV0FBVzs0R0FBWCxXQUFXOzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4vaHR0cC5yZXF1ZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ0Fic29sdXRlVmFsaWRhdG9yU2VydmljZSB9IGZyb20gJy4vLi4vbmctYWJzb2x1dGUtdmFsaWRhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERFRkFVTFRfREFURV9GT1JNQVQsIEdsb2JhbENvbnN0YW50IH0gZnJvbSAnLi4vY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wyLCBIdHRwUmVxdWVzdEFyZ3MgfSBmcm9tICcuLi9pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgdG9BcnJheSB9IGZyb20gJy4uL2NvbW1vbi51dGlscyc7XHJcbmltcG9ydCB7IGlzQWZ0ZXIsIGlzQmVmb3JlLCBpc1ZhbGlkLCBwYXJzZSB9IGZyb20gJ2RhdGUtZm5zJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBVdGlsU2VydmljZSB7XHJcblxyXG4gICAgcHVibGljIGRlZmF1bHRUaW1lWm9uZSAgIDpzdHJpbmcgPSAnREQtTU0tWVlZWSc7XHJcbiAgICBwdWJsaWMgY3JlZGl0Q2FyZElzc3VlcnMgOmFueSA9IEdsb2JhbENvbnN0YW50LmNyZWRpdF9jYXJkO1xyXG4gICAgcHVibGljIGRlYml0Q2FyZElzc3VlcnMgIDphbnkgPSBHbG9iYWxDb25zdGFudC5kZWJpdF9jYXJkO1xyXG4gICAgcHVibGljIGN1c3RvbU9iamVjdE5hbWUgIDphbnkgPSBHbG9iYWxDb25zdGFudC5jdXN0b21PYmplY3ROYW1lO1xyXG4gICAgcHVibGljIGN1c3RvbVJ1bGVzTmFtZSAgIDphbnkgPSBHbG9iYWxDb25zdGFudC5jdXN0b21SdWxlc05hbWVcclxuICAgIHB1YmxpYyBzdHJpbmdTdHJlbmd0aCAgICA6YW55ID0gW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwUmVxdWVzdFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBhYnMgOiBOZ0Fic29sdXRlVmFsaWRhdG9yU2VydmljZVxyXG4gICAgKXt0aGlzLmluaXQoKX1cclxuXHJcblxyXG4gICAgaW5pdCgpe1xyXG4gICAgICAgIHRoaXMuc3RyaW5nU3RyZW5ndGggPSB0aGlzLmFicy5zdHJlbmd0aExldmVsO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRWYWxpZGF0aW9uUnVsZXMoY29udHJvbDpBYnN0cmFjdENvbnRyb2wyLHJ1bGVzOnN0cmluZyB8IHN0cmluZ1tdLGFwcGVuZHMgPSB7fSl7XHJcbiAgICAgICAgbGV0IGN1c3RvbU9iamVjdE5hbWUgPSB0aGlzLmN1c3RvbU9iamVjdE5hbWU7XHJcbiAgICAgICAgbGV0IGN1c3RvbVJ1bGVzTmFtZSAgPSB0aGlzLmN1c3RvbVJ1bGVzTmFtZTtcclxuICAgICAgICBsZXQgcnVsZUFycmF5ICAgICAgICA9IEFycmF5LmlzQXJyYXkocnVsZXMpID8gcnVsZXMgOiBbcnVsZXNdO1xyXG4gICAgICAgIGxldCBhY3RpdmVSdWxlcyAgICAgID0gISFjb250cm9sW2N1c3RvbU9iamVjdE5hbWVdICYmICEhY29udHJvbFtjdXN0b21PYmplY3ROYW1lXVtjdXN0b21SdWxlc05hbWVdID8gY29udHJvbFtjdXN0b21PYmplY3ROYW1lXVtjdXN0b21SdWxlc05hbWVdIDogW107XHJcbiAgICAgICAgbGV0IGZpbmFsT2JqZWN0ICAgICAgPSBPYmplY3QuYXNzaWduKHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycyA6ICBBcnJheS5mcm9tKG5ldyBTZXQoYWN0aXZlUnVsZXMuY29uY2F0KHJ1bGVBcnJheSkpKVxyXG4gICAgICAgIH0sYXBwZW5kcyk7XHJcblxyXG4gICAgICAgIGNvbnRyb2xbY3VzdG9tT2JqZWN0TmFtZV0gPSBmaW5hbE9iamVjdFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBqc29uKHN0cmluZzpzdHJpbmcpOmJvb2xlYW4ge1xyXG4gICAgICAgIGlmKCFzdHJpbmcpIHJldHVybiBmYWxzZTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBKU09OLnBhcnNlKHN0cmluZyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb25maXJtZWQoY29udHJvbDogQWJzdHJhY3RDb250cm9sMiwgYXJnczpzdHJpbmcsIGZpZWxkTmFtZSA9IG51bGwpOiBib29sZWFuIHwgdm9pZCB7XHJcbiAgICAgICAgZmllbGROYW1lID0gZmllbGROYW1lIHx8IGNvbnRyb2xbJ2ZpZWxkX25hbWUnXSB8fCBudWxsO1xyXG4gICAgICAgIGxldCBjb21wYXJlZF9maWVsZF9uYW1lID0gYXJncyB8fCAoYCR7ZmllbGROYW1lfV9jb25maXJtYXRpb25gKTtcclxuICAgICAgICBsZXQgdG9Db21wYXJlV2l0aCA9IGNvbnRyb2wucm9vdC5nZXQoY29tcGFyZWRfZmllbGRfbmFtZSkgYXMgRm9ybUNvbnRyb2w7XHJcbiAgICAgICAgcmV0dXJuIChjb250cm9sLnZhbHVlID09PSB0b0NvbXBhcmVXaXRoPy52YWx1ZSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2FtZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wyLCBhcmdzOnN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCB0b0NvbXBhcmVXaXRoID0gY29udHJvbC5yb290LmdldChhcmdzKSBhcyBGb3JtQ29udHJvbDtcclxuICAgICAgICByZXR1cm4gKGNvbnRyb2wudmFsdWUgPT09IHRvQ29tcGFyZVdpdGg/LnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGlmZmVyZW50KGNvbnRyb2w6QWJzdHJhY3RDb250cm9sMiwgYXJnczpzdHJpbmcpOiBib29sZWFue1xyXG4gICAgICAgIGxldCB0b0NvbXBhcmVXaXRoID0gY29udHJvbC5yb290LmdldChhcmdzKSBhcyBGb3JtQ29udHJvbDtcclxuICAgICAgICByZXR1cm4gKGNvbnRyb2wudmFsdWUgIT09IHRvQ29tcGFyZVdpdGg/LnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVxdWlyZWQoYWN0dWFsRGF0YTpzdHJpbmcpOmJvb2xlYW57XHJcbiAgICAgICAgcmV0dXJuICEhYWN0dWFsRGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVxdWlyZWRJZihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wyLCBhcmdzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBbZGVwZW5kZW50LG1hdGNoV2l0aF0gPSB0b0FycmF5KGFyZ3MpXHJcbiAgICAgICAgaWYoIWRlcGVuZGVudCB8fCAhbWF0Y2hXaXRoKXtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0b0NvbXBhcmVXaXRoID0gY29udHJvbC5yb290LmdldChkZXBlbmRlbnQpIGFzIEZvcm1Db250cm9sXHJcbiAgICAgICAgcmV0dXJuICh0b0NvbXBhcmVXaXRoLnZhbHVlID09PSBtYXRjaFdpdGgpID8gdGhpcy5yZXF1aXJlZChjb250cm9sLnZhbHVlKSA6IHRydWVcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVxdWlyZWRVbmxlc3MoY29udHJvbDogQWJzdHJhY3RDb250cm9sMiwgYXJnczogc3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgW2RlcGVuZGVudCwuLi5tYXRjaFdpdGhdID0gdG9BcnJheShhcmdzKTtcclxuICAgICAgICBpZighZGVwZW5kZW50ICYmIG1hdGNoV2l0aC5sZW5ndGggPT09IDApe1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0b0NvbXBhcmVXaXRoID0gY29udHJvbC5yb290LmdldChkZXBlbmRlbnQpIGFzIEZvcm1Db250cm9sO1xyXG4gICAgICAgIHJldHVybiBtYXRjaFdpdGguc29tZShpdGVtID0+IGl0ZW0gPT09IHRvQ29tcGFyZVdpdGgudmFsdWUpID8gdGhpcy5yZXF1aXJlZChjb250cm9sLnZhbHVlKSA6IHRydWVcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVxdWlyZWRXaXRoKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDIsIGFyZ3M6IHN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IG5hbWVzID0gdG9BcnJheShhcmdzKTtcclxuICAgICAgICBsZXQgYW55SGFzVmFsdWUgPSBuYW1lcy5zb21lKG5hbWUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjID0gY29udHJvbC5yb290LmdldChuYW1lKTtcclxuICAgICAgICAgICAgcmV0dXJuIGMgJiYgYy52YWx1ZSAhPT0gbnVsbCAmJiBjLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgYy52YWx1ZSAhPT0gJyc7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGFueUhhc1ZhbHVlID8gdGhpcy5yZXF1aXJlZChjb250cm9sLnZhbHVlKSA6IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlcXVpcmVkV2l0aEFsbChjb250cm9sOkFic3RyYWN0Q29udHJvbDIsIGFyZ3M6c3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFue1xyXG4gICAgICAgIGxldCBtYXRjaFdpdGggXHQgICAgID0gdG9BcnJheShhcmdzKTtcclxuICAgICAgICBsZXQgY29tcGFyZVdpdGhWYWx1ZSA9IG1hdGNoV2l0aC5tYXAobmFtZSA9PiAoY29udHJvbC5yb290LmdldChuYW1lKSBhcyBGb3JtQ29udHJvbCkudmFsdWUpXHJcbiAgICAgICAgcmV0dXJuIGNvbXBhcmVXaXRoVmFsdWUuZmlsdGVyKEJvb2xlYW4pLmxlbmd0aCA9PT0gbWF0Y2hXaXRoLmxlbmd0aCA/IHRoaXMucmVxdWlyZWQoY29udHJvbC52YWx1ZSkgOiB0cnVlXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlcXVpcmVkV2l0aG91dChjb250cm9sOkFic3RyYWN0Q29udHJvbDIsIGFyZ3M6c3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFue1xyXG4gICAgICAgIGxldCBtYXRjaFdpdGggXHQgICAgID0gdG9BcnJheShhcmdzKTtcclxuICAgICAgICBsZXQgY29tcGFyZVdpdGhWYWx1ZSA9IG1hdGNoV2l0aC5tYXAobmFtZSA9PiAoY29udHJvbC5yb290LmdldChuYW1lKSBhcyBGb3JtQ29udHJvbCkudmFsdWUpXHJcbiAgICAgICAgcmV0dXJuIGNvbXBhcmVXaXRoVmFsdWUuZmlsdGVyKEJvb2xlYW4pLmxlbmd0aCA9PT0gMCA/IHRoaXMucmVxdWlyZWQoY29udHJvbC52YWx1ZSkgOiB0cnVlXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlcXVpcmVkV2l0aG91dEFsbChjb250cm9sOkFic3RyYWN0Q29udHJvbDIsIGFyZ3M6c3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFue1xyXG4gICAgICAgIGxldCBtYXRjaFdpdGggXHRcdCA9IHRvQXJyYXkoYXJncyk7XHJcbiAgICAgICAgbGV0IGNvbXBhcmVXaXRoVmFsdWUgPSBtYXRjaFdpdGgubWFwKG5hbWUgPT4gKGNvbnRyb2wucm9vdC5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2wpLnZhbHVlKVxyXG4gICAgICAgIGxldCBlbXB0eUZpZWxkQ291bnQgID0gY29tcGFyZVdpdGhWYWx1ZS5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZClcclxuICAgICAgICByZXR1cm4gZW1wdHlGaWVsZENvdW50Lmxlbmd0aCA+IDAgPyB0aGlzLnJlcXVpcmVkKGNvbnRyb2wudmFsdWUpIDogdHJ1ZVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBlbWFpbChhY3R1YWxEYXRhOnN0cmluZyk6IGJvb2xlYW57XHJcbiAgICAgICAgcmV0dXJuICgvXlxcdysoW1xcLi1dP1xcdyspKkBcXHcrKFtcXC4tXT9cXHcrKSooXFwuXFx3ezIsM30pKyQvLnRlc3QoYWN0dWFsRGF0YSkpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFib3ZlKGFjdHVhbERhdGE6bnVtYmVyLHRvQmVEYXRhOm51bWJlcik6IGJvb2xlYW57XHJcbiAgICAgICAgcmV0dXJuIChOdW1iZXIodG9CZURhdGEpIDwgTnVtYmVyKGFjdHVhbERhdGEpKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhY2NlcHRlZChhY3R1YWxEYXRhOmFueSk6IGJvb2xlYW57XHJcbiAgICAgICAgcmV0dXJuIChhY3R1YWxEYXRhIHx8IGFjdHVhbERhdGEgIT09IGZhbHNlIHx8IGFjdHVhbERhdGEgIT09IDApXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRhdGUoYWN0dWFsRGF0YTpzdHJpbmcsZm9ybWF0OnN0cmluZyA9IERFRkFVTFRfREFURV9GT1JNQVQpOiBib29sZWFue1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhY3R1YWxEYXRhID8gaXNWYWxpZChwYXJzZShhY3R1YWxEYXRhLCBmb3JtYXQgfHwgREVGQVVMVF9EQVRFX0ZPUk1BVCwgbmV3IERhdGUoKSkpIDogdHJ1ZVxyXG4gICAgICAgIH1jYXRjaCAoZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkYXRlRm9ybWF0KGFjdHVhbERhdGE6YW55LCBmb3JtYXQ6c3RyaW5nID0gREVGQVVMVF9EQVRFX0ZPUk1BVCk6IGJvb2xlYW57XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIGFjdHVhbERhdGEgPyBpc1ZhbGlkKHBhcnNlKGFjdHVhbERhdGEsIGZvcm1hdCB8fCBERUZBVUxUX0RBVEVfRk9STUFULCBuZXcgRGF0ZSgpKSkgOiB0cnVlXHJcbiAgICAgICAgfWNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFmdGVyKGFjdHVhbERhdGE6c3RyaW5nLCB0b0JlRGF0YTpzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW57XHJcbiAgICAgICAgaWYoISEhYWN0dWFsRGF0YSB8fCAhISF0b0JlRGF0YSl7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBbbWF0Y2hXaXRoRGF0ZSxtYXRjaFdpdGhEYXRlRm9ybWF0ID0gREVGQVVMVF9EQVRFX0ZPUk1BVF0gPSBBcnJheS5pc0FycmF5KHRvQmVEYXRhKSA/IHRvQmVEYXRhIDogdG9CZURhdGEuc3BsaXQoJywnKVxyXG4gICAgICAgIGlmKCF0aGlzLmRhdGVGb3JtYXQoYWN0dWFsRGF0YSxtYXRjaFdpdGhEYXRlRm9ybWF0KSB8fCAhdGhpcy5kYXRlRm9ybWF0KG1hdGNoV2l0aERhdGUsbWF0Y2hXaXRoRGF0ZUZvcm1hdCkpe1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBpc0FmdGVyKFxyXG4gICAgICAgICAgICBwYXJzZShhY3R1YWxEYXRhLCBtYXRjaFdpdGhEYXRlRm9ybWF0LCBuZXcgRGF0ZSgpKSxcclxuICAgICAgICAgICAgcGFyc2UobWF0Y2hXaXRoRGF0ZSwgbWF0Y2hXaXRoRGF0ZUZvcm1hdCwgbmV3IERhdGUoKSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBiZWZvcmUoYWN0dWFsRGF0YTpzdHJpbmcsIHRvQmVEYXRhOnN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbntcclxuICAgICAgICBpZighISFhY3R1YWxEYXRhIHx8ICEhIXRvQmVEYXRhKXtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IFttYXRjaFdpdGhEYXRlLG1hdGNoV2l0aERhdGVGb3JtYXQgPSBERUZBVUxUX0RBVEVfRk9STUFUXSA9IEFycmF5LmlzQXJyYXkodG9CZURhdGEpID8gdG9CZURhdGEgOiB0b0JlRGF0YS5zcGxpdCgnLCcpXHJcbiAgICAgICAgaWYoIXRoaXMuZGF0ZUZvcm1hdChhY3R1YWxEYXRhLG1hdGNoV2l0aERhdGVGb3JtYXQpIHx8ICF0aGlzLmRhdGVGb3JtYXQobWF0Y2hXaXRoRGF0ZSxtYXRjaFdpdGhEYXRlRm9ybWF0KSl7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGlzQmVmb3JlKFxyXG4gICAgICAgICAgICBwYXJzZShhY3R1YWxEYXRhLCBtYXRjaFdpdGhEYXRlRm9ybWF0LCBuZXcgRGF0ZSgpKSxcclxuICAgICAgICAgICAgcGFyc2UobWF0Y2hXaXRoRGF0ZSwgbWF0Y2hXaXRoRGF0ZUZvcm1hdCwgbmV3IERhdGUoKSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhbHBoYShhY3R1YWxEYXRhOnN0cmluZykgOmJvb2xlYW57XHJcbiAgICAgICAgcmV0dXJuICgvXlthLXpdKyQvaS50ZXN0KGFjdHVhbERhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWxwaGFOdW1lcmljKGFjdHVhbERhdGE6c3RyaW5nKTogYm9vbGVhbntcclxuICAgICAgICByZXR1cm4gKC9eW2EtejAtOV0rJC9pLnRlc3QoYWN0dWFsRGF0YSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhbHBoYURhc2goYWN0dWFsRGF0YTpzdHJpbmcpOiBib29sZWFue1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlZ2V4KGFjdHVhbERhdGEsJ15bYS16QS1aMC05LV9dKyQnKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXJyYXkoYWN0dWFsRGF0YTpzdHJpbmcpOiBib29sZWFue1xyXG4gICAgICAgIGlmKHR5cGVvZiBhY3R1YWxEYXRhID09PSAnc3RyaW5nJyAmJiB0aGlzLmpzb24oYWN0dWFsRGF0YSkpe1xyXG4gICAgICAgICAgICBhY3R1YWxEYXRhID0gSlNPTi5wYXJzZShhY3R1YWxEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYWN0dWFsRGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGJvb2xlYW4oYWN0dWFsRGF0YTpzdHJpbmcpOmJvb2xlYW57XHJcbiAgICAgICAgbGV0IGJvb2xlYW5BY2NlcHRlZCA9IFtcclxuICAgICAgICAgICAgMSwnMScsMCwnMCcsJ3RydWUnLHRydWUsJ2ZhbHNlJywnZmFsc2UnXHJcbiAgICAgICAgXTtcclxuICAgICAgICByZXR1cm4gYm9vbGVhbkFjY2VwdGVkLmluY2x1ZGVzKGFjdHVhbERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBlcXVhbHMoYWN0dWFsRGF0YTpzdHJpbmcsY29tcGFyZWRfdG9fdmFsdWU6c3RyaW5nKTogYm9vbGVhbntcclxuICAgICAgICByZXR1cm4gKGFjdHVhbERhdGEgPT0gY29tcGFyZWRfdG9fdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBlbmRzV2l0aChhY3R1YWxEYXRhOnN0cmluZywgZW5kX3dpdGg6IGFueSk6IGJvb2xlYW57XHJcbiAgICAgICAgbGV0IF9lbmRfd2l0aCA9IHRvQXJyYXkoZW5kX3dpdGgpO1xyXG4gICAgICAgIHJldHVybiAhX2VuZF93aXRoLmZpbmQoKHYpID0+IGFjdHVhbERhdGEgJiYgYWN0dWFsRGF0YS5lbmRzV2l0aCh2KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXJ0c1dpdGgoYWN0dWFsRGF0YTpzdHJpbmcsIHN0YXJ0X3dpdGg6c3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFue1xyXG4gICAgICAgIHJldHVybiB0b0FycmF5KHN0YXJ0X3dpdGgpLnNvbWUoKHYpID0+IGFjdHVhbERhdGEgJiYgYWN0dWFsRGF0YS5zdGFydHNXaXRoKHYpKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbihhY3R1YWxEYXRhOiBzdHJpbmcsIGNvbXBhcmU6IHN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IHRvQ29tcGFyZSA9IG5ldyBTZXQodG9BcnJheShjb21wYXJlKS5tYXAodiA9PiB2LnRvU3RyaW5nKCkpKVxyXG4gICAgICAgIHJldHVybiB0b0NvbXBhcmUuaGFzKGFjdHVhbERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBub3RJbihhY3R1YWxEYXRhOnN0cmluZywgY29tcGFyZTpzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW57XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmluKGFjdHVhbERhdGEsY29tcGFyZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGluY2x1ZGVzKGFjdHVhbERhdGE6IHN0cmluZywgY29tcGFyZTogc3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIWFjdHVhbERhdGEpIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdG9BcnJheShjb21wYXJlKS5ldmVyeSh2ID0+IGFjdHVhbERhdGEuaW5jbHVkZXModi50b1N0cmluZygpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG51bWJlcihhY3R1YWxEYXRhOmFueSk6IGJvb2xlYW57XHJcbiAgICAgICAgcmV0dXJuICFpc05hTihhY3R1YWxEYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RyaW5nKGFjdHVhbERhdGE6YW55KTogYm9vbGVhbntcclxuICAgICAgICByZXR1cm4gaXNOYU4oYWN0dWFsRGF0YSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaW50ZWdlcihhY3R1YWxEYXRhOmFueSk6IGJvb2xlYW57XHJcbiAgICAgICAgaWYoIXRoaXMubnVtYmVyKGFjdHVhbERhdGEpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIE51bWJlci5pc0ludGVnZXIoTnVtYmVyKGFjdHVhbERhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXAoYWN0dWFsRGF0YTpzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgcmVnZXhFeHAgPSBbXHJcbiAgICAgICAgICAgICdeKDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPyknLFxyXG4gICAgICAgICAgICAnKDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPyknLFxyXG4gICAgICAgICAgICAnKDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPyknLFxyXG4gICAgICAgICAgICAnKDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPykkJ1xyXG4gICAgICAgIF0uam9pbihcIlxcXFwuXCIpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5yZWdleChhY3R1YWxEYXRhLHJlZ2V4RXhwKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXB2NChhY3R1YWxEYXRhOnN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCByZWdleEV4cCA9IG5ldyBSZWdFeHAoJ14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pXFxcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KSQnKTtcclxuICAgICAgICByZXR1cm4gcmVnZXhFeHAudGVzdChhY3R1YWxEYXRhKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpcHY2KGFjdHVhbERhdGE6c3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IHJlZ2V4RXhwID0gbmV3IFJlZ0V4cCgnXihbMC05QS1GYS1mXXsxLDR9Oil7N31bMC05QS1GYS1mXXsxLDR9JCcpO1xyXG4gICAgICAgIHJldHVybiByZWdleEV4cC50ZXN0KGFjdHVhbERhdGEpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG1heChhY3R1YWxEYXRhOmFueSwgbWF4Om51bWJlcik6IGJvb2xlYW57XHJcbiAgICAgICAgaWYoIWFjdHVhbERhdGEpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5pbnRlZ2VyKGFjdHVhbERhdGEpKXtcclxuICAgICAgICAgICAgcmV0dXJuIGFjdHVhbERhdGEgPD0gbWF4XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHJldHVybiAoYWN0dWFsRGF0YS5sZW5ndGggPD0gbWF4KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbWluKGFjdHVhbERhdGE6YW55LCBtaW46c3RyaW5nIHwgbnVtYmVyKTogYm9vbGVhbntcclxuICAgICAgICBpZighISFhY3R1YWxEYXRhIHx8ICEhIW1pbikgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGlmKHRoaXMuaW50ZWdlcihhY3R1YWxEYXRhKSl7XHJcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIoYWN0dWFsRGF0YSkgPj0gTnVtYmVyKG1pbilcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgcmV0dXJuIChhY3R1YWxEYXRhLmxlbmd0aCA+PSBtaW4pXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBub3RFcXVhbHMoYWN0dWFsRGF0YTphbnksY29tcGFyZV90bzphbnkpOiBib29sZWFue1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5lcXVhbHMoYWN0dWFsRGF0YSxjb21wYXJlX3RvKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmFuZ2UoYWN0dWFsRGF0YTogc3RyaW5nLCByYW5nZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudW1iZXJbXSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBbbWluLCBtYXhdID0gdG9BcnJheShyYW5nZSk7XHJcbiAgICAgICAgcmV0dXJuIChOdW1iZXIobWluKSA8PSBOdW1iZXIoYWN0dWFsRGF0YSkpICYmIChOdW1iZXIoYWN0dWFsRGF0YSkgPD0gTnVtYmVyKG1heCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBiZXR3ZWVuKGFjdHVhbERhdGE6IHN0cmluZywgcmFuZ2U6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVtYmVyW10pOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgW21pbiwgbWF4XSA9IHRvQXJyYXkocmFuZ2UpO1xyXG4gICAgICAgIHJldHVybiAoTnVtYmVyKG1pbikgPCBOdW1iZXIoYWN0dWFsRGF0YSkpICYmIChOdW1iZXIoYWN0dWFsRGF0YSkgPCBOdW1iZXIobWF4KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVuZGVyKGFjdHVhbERhdGE6c3RyaW5nLCB1bmRlcjpzdHJpbmcpOiBib29sZWFue1xyXG4gICAgICAgIGlmKCF0aGlzLm51bWJlcihhY3R1YWxEYXRhKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBOdW1iZXIoYWN0dWFsRGF0YSkgPCBOdW1iZXIodW5kZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cmwoYWN0dWFsRGF0YTpzdHJpbmcpOiBib29sZWFue1xyXG4gICAgICAgIGxldCByZWdleEV4cCA9IFtcclxuICAgICAgICAgICAgJ14oPzooPzpodHRwKD86cyk/fGZ0cCk6Ly8pKD86XFxcXFMrKD86Oig/OlxcXFxTKSopP0ApPyg/Oig/OlthLXowLTlcXHUwMGExLVxcdWZmZmZdKD86LSkqKScsXHJcbiAgICAgICAgICAgICcoPzpbYS16MC05XFx1MDBhMS1cXHVmZmZmXSkrKSg/OlxcXFwuKD86W2EtejAtOVxcdTAwYTEtXFx1ZmZmZl0oPzotKSopJyxcclxuICAgICAgICAgICAgJyg/OlthLXowLTlcXHUwMGExLVxcdWZmZmZdKSspJyxcclxuICAgICAgICAgICAgJyg/OlxcXFwuKD86W2EtejAtOVxcdTAwYTEtXFx1ZmZmZl0pezIsfSkoPzo6KD86XFxcXGQpezIsNX0pPyg/Oi8oPzpcXFxcUykqKT8kJ1xyXG4gICAgICAgIF0uam9pbignKicpXHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnJlZ2V4KGFjdHVhbERhdGEscmVnZXhFeHApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWdleChhY3R1YWxEYXRhOnN0cmluZywgZXhwcmVzc2lvbjpzdHJpbmcpOiBib29sZWFue1xyXG4gICAgICAgIGxldCByZWdleEV4cCA9IG5ldyBSZWdFeHAoZXhwcmVzc2lvbik7XHJcbiAgICAgICAgcmV0dXJuIHJlZ2V4RXhwLnRlc3QoYWN0dWFsRGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5vdFJlZ2V4KGFjdHVhbERhdGE6c3RyaW5nLCBleHByZXNzaW9uOnN0cmluZyk6IGJvb2xlYW57XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLnJlZ2V4KGFjdHVhbERhdGEsZXhwcmVzc2lvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHV1aWQoYWN0dWFsRGF0YTpzdHJpbmcpOiBib29sZWFue1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlZ2V4KGFjdHVhbERhdGEsJ1thLWYwLTldezh9LVthLWYwLTldezR9LTRbYS1mMC05XXszfS1bODlhQWJCXVthLWYwLTldezN9LVthLWYwLTldezEyfScpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1bmlxdWUoYXJnczpIdHRwUmVxdWVzdEFyZ3MpOiBPYnNlcnZhYmxlPGJvb2xlYW4+e1xyXG4gICAgICAgIGxldCBodHRwICAgIDpPYnNlcnZhYmxlPGFueT47XHJcbiAgICAgICAgbGV0IGFjdGlvbiAgID0gYXJncy51cmxcclxuICAgICAgICBsZXQgbWV0aG9kICAgPSBhcmdzLm1ldGhvZCB8fCAnR0VUJ1xyXG4gICAgICAgIGxldCByZXF1ZXN0ICA9IGFyZ3MucmVxdWVzdHx8IHt9XHJcbiAgICAgICAgbGV0IHBhcmFtcyAgID0gYXJncy5wYXJhbXMgfHwge31cclxuXHJcbiAgICAgICAgaWYoYWN0aW9uIHx8IE9iamVjdC5rZXlzKHJlcXVlc3QpLmxlbmd0aCA9PT0gMCl7XHJcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN3aXRjaChtZXRob2Qpe1xyXG4gICAgICAgICAgICBjYXNlICdQT1NUJzpcclxuICAgICAgICAgICAgICAgIGh0dHAgPSB0aGlzLmh0dHAucG9zdChhY3Rpb24scmVxdWVzdCxwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBodHRwID0gdGhpcy5odHRwLmdldChhY3Rpb24sey4uLnJlcXVlc3QsLi4ucGFyYW1zfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gaHR0cC5waXBlKG1hcCgoZGF0YTphbnkpPT4gKGRhdGEgJiYgZGF0YS5sZW5ndGggPT09IDApKSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZXhpc3RzKGFyZ3M6SHR0cFJlcXVlc3RBcmdzKTogT2JzZXJ2YWJsZTxib29sZWFuPntcclxuICAgICAgICBsZXQgaHR0cCAgICA6T2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgICAgIGxldCBhY3Rpb24gICA9IGFyZ3MudXJsXHJcbiAgICAgICAgbGV0IG1ldGhvZCAgID0gYXJncy5tZXRob2QgfHwgJ0dFVCdcclxuICAgICAgICBsZXQgcmVxdWVzdCAgPSBhcmdzLnJlcXVlc3R8fCB7fVxyXG4gICAgICAgIGxldCBwYXJhbXMgICA9IGFyZ3MucGFyYW1zIHx8IHt9XHJcblxyXG4gICAgICAgIGlmKCFhY3Rpb24gfHwgT2JqZWN0LmtleXMocmVxdWVzdCkubGVuZ3RoID09PSAwKXtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3dpdGNoKG1ldGhvZCl7XHJcbiAgICAgICAgICAgIGNhc2UgJ1BPU1QnOlxyXG4gICAgICAgICAgICAgICAgaHR0cCA9IHRoaXMuaHR0cC5wb3N0KGFjdGlvbixyZXF1ZXN0LHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGh0dHAgPSB0aGlzLmh0dHAuZ2V0KGFjdGlvbix7Li4ucmVxdWVzdCwuLi5wYXJhbXN9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBodHRwLnBpcGUobWFwKChkYXRhOmFueSk9PiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApKSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0Q3JlZGl0Q2FyZERhdGEobnVtYmVyOnN0cmluZyk6IGFueXtcclxuICAgICAgICBpZighbnVtYmVyKSByZXR1cm47XHJcbiAgICAgICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgIGxldCBjYXJkX2lzc3VlciA9IHRoaXMuY3JlZGl0Q2FyZElzc3VlcnMuZmluZCgoY2FyZDphbnkpID0+IHRoaXMucmVnZXgobnVtYmVyLGNhcmQucmVnZXgpKTtcclxuICAgICAgICByZXR1cm4ge2lzc3VlciA6IChjYXJkX2lzc3VlciA/IGNhcmRfaXNzdWVyLm5hbWUgOiBudWxsKX1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY3JlZGl0Q2FyZChhY3R1YWxEYXRhOnN0cmluZyk6IGJvb2xlYW57XHJcbiAgICAgICAgbGV0IGNhcmRJbmZvID0gdGhpcy5nZXRDcmVkaXRDYXJkRGF0YShhY3R1YWxEYXRhKSBhcyBhbnlcclxuICAgICAgICByZXR1cm4gY2FyZEluZm8gPyAhIWNhcmRJbmZvLmlzc3VlciA6IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RGViaXRDYXJkRGF0YShudW1iZXI6bnVtYmVyKTogYW55e1xyXG4gICAgICAgIGlmKCFudW1iZXIpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBsZXQgX251bWJlciA9IG51bWJlci50b1N0cmluZygpO1xyXG5cclxuICAgICAgICBsZXQgY2FyZF9pc3N1ZXIgPSB0aGlzLmRlYml0Q2FyZElzc3VlcnMuZmluZCgoY2FyZDphbnkpID0+IHRoaXMucmVnZXgoX251bWJlcixjYXJkLnJlZ2V4KSk7XHJcbiAgICAgICAgcmV0dXJuIHtpc3N1ZXIgOiAoY2FyZF9pc3N1ZXIgPyBjYXJkX2lzc3Vlci5uYW1lIDogbnVsbCl9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlYml0Q2FyZChhY3R1YWxEYXRhOm51bWJlcil7XHJcbiAgICAgICAgbGV0IGNhcmRJbmZvID0gdGhpcy5nZXREZWJpdENhcmREYXRhKGFjdHVhbERhdGEpXHJcbiAgICAgICAgcmV0dXJuIGNhcmRJbmZvID8gISFjYXJkSW5mby5pc3N1ZXIgOiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY3Z2KGFjdHVhbERhdGE6c3RyaW5nKTpib29sZWFue1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlZ2V4KGFjdHVhbERhdGEsJ15bMC05XXszLDR9JCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTdHJlbmd0aERhdGEoYWN0dWFsRGF0YTpzdHJpbmcsIGNvbXBhcmU6c3RyaW5nIHwgc3RyaW5nW10pOiBhbnl7XHJcblxyXG4gICAgICAgIGlmKCEhIWFjdHVhbERhdGEpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgbGV0IHRvQ29tcGFyZSAgICAgICAgID0gdG9BcnJheShjb21wYXJlKTtcclxuICAgICAgICBsZXQgYWxsb3dlZFN0cmVuZ3RoICA9IFtdIGFzIGFueTtcclxuICAgICAgICBsZXQgYWN0aXZlU3RyZW5ndGggICA9IFtdIGFzIGFueTtcclxuICAgICAgICBsZXQgaW5BY3RpdmVTdHJlbmd0aCA9IFtdIGFzIGFueTtcclxuICAgICAgICBsZXQgc3RyZW5ndGhTY29yZSAgICA9IDAgIGFzIG51bWJlcjtcclxuICAgICAgICBsZXQgc3RyZW5ndGhfY29sb3IgICA9IHRoaXMuYWJzLnN0cmVuZ3RoQ29sb3I7XHJcbiAgICAgICAgbGV0IHZhbGlkU3RyZW5ndGggICAgPSBzdHJlbmd0aF9jb2xvcltzdHJlbmd0aF9jb2xvci5sZW5ndGggLSAxXTtcclxuICAgICAgICBsZXQgYWxsb3dPbk1heFNjcm9yZSA9IHRoaXMubnVtYmVyKHRvQ29tcGFyZVt0b0NvbXBhcmUubGVuZ3RoIC0xXSkgPyB0b0NvbXBhcmVbdG9Db21wYXJlLmxlbmd0aCAtMV0gOiB2YWxpZFN0cmVuZ3RoLm1pbiB8fCAtOTk5OTtcclxuICAgICAgICBsZXQgc3BlY2lhbENoYXJzICAgICA9IFwiQCUrXFwvJyEjJF4/Oi4oKXt9W11+LV9cIjtcclxuXHJcbiAgICAgICAgdmFyIGxldHRlcnMgPSBuZXcgT2JqZWN0KCkgYXMgYW55O1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWN0dWFsRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgYXNzaWduU2NvcmUgPSBzcGVjaWFsQ2hhcnMuaW5jbHVkZXMoYWN0dWFsRGF0YVtpXSkgPyA4LjAgOiA1LjA7XHJcbiAgICAgICAgICAgIGxldHRlcnNbYWN0dWFsRGF0YVtpXV0gPSAobGV0dGVyc1thY3R1YWxEYXRhW2ldXSB8fCAwKSArIDE7XHJcbiAgICAgICAgICAgIHN0cmVuZ3RoU2NvcmUgKz0gYXNzaWduU2NvcmUgLyBsZXR0ZXJzW2FjdHVhbERhdGFbaV1dO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHZhcmlhdGlvbkNvdW50ID0gMDtcclxuICAgICAgICB0aGlzLnN0cmluZ1N0cmVuZ3RoLmZvckVhY2goKHY6YW55KT0+e1xyXG4gICAgICAgICAgICBpZih0b0NvbXBhcmUuaW5kZXhPZih2LmlkKSA+PSAwIHx8IHRvQ29tcGFyZS5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICBhbGxvd2VkU3RyZW5ndGgucHVzaCh2LmlkKVxyXG4gICAgICAgICAgICAgICAgbGV0IGlzVmFsaWQgPSB0aGlzLnJlZ2V4KGFjdHVhbERhdGEsdi5yZWdleCk7XHJcbiAgICAgICAgICAgICAgICBpc1ZhbGlkID8gYWN0aXZlU3RyZW5ndGgucHVzaCh2LmlkKSA6IGluQWN0aXZlU3RyZW5ndGgucHVzaCh2LmlkKVxyXG4gICAgICAgICAgICAgICAgdmFyaWF0aW9uQ291bnQgKz0gIGlzVmFsaWQgPyAxIDogMFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgc3RyZW5ndGhTY29yZSArPSAodmFyaWF0aW9uQ291bnQgLSAxKSAqIDEwO1xyXG4gICAgICAgIHN0cmVuZ3RoU2NvcmUgPSBNYXRoLnJvdW5kKHN0cmVuZ3RoU2NvcmUpO1xyXG5cclxuICAgICAgICBpZihpbkFjdGl2ZVN0cmVuZ3RoLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBzdHJlbmd0aFNjb3JlID0gKHN0cmVuZ3RoU2NvcmUgPj0gYWxsb3dPbk1heFNjcm9yZSkgPyBhbGxvd09uTWF4U2Nyb3JlIC0gKGluQWN0aXZlU3RyZW5ndGgubGVuZ3RoICogNSkgOiBzdHJlbmd0aFNjb3JlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHNlbmRPYmplY3QgPSB7XHJcbiAgICAgICAgICAgIHNjb3JlICAgICAgICAgICAgOnN0cmVuZ3RoU2NvcmUsXHJcbiAgICAgICAgICAgIGFsbG93ZWRTdHJlbmd0aCAgOmFsbG93ZWRTdHJlbmd0aCxcclxuICAgICAgICAgICAgdmFsaWRGb3IgICAgICAgICA6YWN0aXZlU3RyZW5ndGgsXHJcbiAgICAgICAgICAgIHZhbGlkRXhjZXB0ICAgICAgOmluQWN0aXZlU3RyZW5ndGgsXHJcbiAgICAgICAgICAgIGFsbG93T25NYXhTY29yZSAgOmFsbG93T25NYXhTY3JvcmVcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gc2VuZE9iamVjdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RyZW5ndGgoYWN0dWFsRGF0YTpzdHJpbmcsY29tcGFyZTpzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW57XHJcbiAgICAgICAgbGV0IHN0cmVuZ3RoID0gdGhpcy5nZXRTdHJlbmd0aERhdGEoYWN0dWFsRGF0YSxjb21wYXJlKTtcclxuICAgICAgICByZXR1cm4gKHN0cmVuZ3RoICYmIHN0cmVuZ3RoLnNjb3JlID49IHN0cmVuZ3RoLmFsbG93T25NYXhTY29yZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHBob25lTm8oYWN0dWFsRGF0YTpzdHJpbmcsZXhwcmVzc2lvbjpzdHJpbmcgfCBudWxsID0gbnVsbCk6IGJvb2xlYW57XHJcbiAgICAgICAgbGV0IHJlZ2V4OmFueSA9IC9cXHMqKD86XFwrPyhcXGR7MSwzfSkpP1tcXFdcXERcXHNdXnwoKSooXFxkW1xcV1xcRFxcc10qP1xcZFtcXERcXFdcXHNdKj9cXGQpW1xcV1xcRFxcc10qKFxcZFtcXFdcXERcXHNdKj9cXGRbXFxEXFxXXFxzXSo/XFxkKVtcXFdcXERcXHNdKihcXGRbXFxXXFxEXFxzXSo/XFxkW1xcRFxcV1xcc10qP1xcZFtcXFdcXERcXHNdKj9cXGQpKD86ICp4KFxcZCspKT9cXHMqJC9nO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlZ2V4KGFjdHVhbERhdGEsIGV4cHJlc3Npb24gfHwgcmVnZXgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbWFnZShmaWxlSW5zdGFuY2U6RmlsZVtdKTogYm9vbGVhbntcclxuICAgICAgICBpZighISFmaWxlSW5zdGFuY2UgfHwgZmlsZUluc3RhbmNlLmxlbmd0aCA9PT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGxldCBmaWxlID0gZmlsZUluc3RhbmNlWzBdIGFzIEZpbGU7XHJcbiAgICAgICAgcmV0dXJuIGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdmlkZW8oZmlsZUluc3RhbmNlOkZpbGVbXSk6IGJvb2xlYW57XHJcbiAgICAgICAgaWYoISEhZmlsZUluc3RhbmNlIHx8IGZpbGVJbnN0YW5jZS5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgbGV0IGZpbGUgPSBmaWxlSW5zdGFuY2VbMF0gYXMgRmlsZTtcclxuICAgICAgICByZXR1cm4gZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ3ZpZGVvLycpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBtaW1lcyhmaWxlSW5zdGFuY2U6RmlsZVtdLGNvbXBhcmU6c3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFue1xyXG4gICAgICAgIGlmKCEhIWZpbGVJbnN0YW5jZSB8fCBmaWxlSW5zdGFuY2UubGVuZ3RoID09PSAwIHx8ICEhIWNvbXBhcmUpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgbGV0IGZpbGUgICAgICAgID0gZmlsZUluc3RhbmNlWzBdO1xyXG4gICAgICAgIGxldCBleHQgICAgICAgICA9IGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpO1xyXG4gICAgICAgIGxldCBhY2NlcHRUeXBlICA9IHRvQXJyYXkoY29tcGFyZSk7XHJcbiAgICAgICAgbGV0IGhhc01pbWUgICAgID0gYWNjZXB0VHlwZS5pbmNsdWRlcyhleHQpO1xyXG4gICAgICAgIHJldHVybiAhIWhhc01pbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNpemUoZmlsZUluc3RhbmNlOkZpbGVbXSxjb21wYXJlOm51bWJlcik6IGJvb2xlYW57XHJcbiAgICAgICAgaWYoISEhZmlsZUluc3RhbmNlIHx8IGZpbGVJbnN0YW5jZS5sZW5ndGggPT0gMCB8fCAhISFjb21wYXJlKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIGxldCBmaWxlID0gZmlsZUluc3RhbmNlWzBdO1xyXG4gICAgICAgIHJldHVybiBmaWxlLnNpemUgPD0gY29tcGFyZSAqIDEwMjQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRpbWVuc2lvbihmaWxlSW5zdGFuY2U6RmlsZVtdLCBjb21wYXJlOnN0cmluZyB8IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgICAgIGlmKCEhIWZpbGVJbnN0YW5jZSB8fCBmaWxlSW5zdGFuY2UubGVuZ3RoID09IDAgfHwgY29tcGFyZS5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XHJcblxyXG4gICAgICAgIGxldCBmaWxlICAgICAgICA9IGZpbGVJbnN0YW5jZVswXTtcclxuICAgICAgICBsZXQgdHlwZSAgICAgICAgPSBmaWxlLnR5cGU7XHJcblxyXG4gICAgICAgIGlmKCF0eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKVxyXG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG5cclxuICAgICAgICBsZXQgZGltZW5zaW9uICAgPSB0b0FycmF5KGNvbXBhcmUpO1xyXG4gICAgICAgIGxldCBpbWFnZSAgICAgICA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICAgIGxldCBoZWlnaHQgICAgICA9IDA7XHJcbiAgICAgICAgbGV0IHdpZHRoICAgICAgID0gMDtcclxuICAgICAgICBsZXQgcmF0aW8gICAgICAgPSAwO1xyXG4gICAgICAgIGxldCBoZWlnaHRNYXRjaCA9ICdlcXVhbCc7XHJcbiAgICAgICAgbGV0IHdpZHRoTWF0Y2ggID0gJ2VxdWFsJztcclxuXHJcbiAgICAgICAgLy9tYXhfaGVpZ2h0PTIwMCB8IG1heF9oZWlnaHQ9MjAwIHwgaGVpZ2h0ID0gMjAwXHJcbiAgICAgICAgLy9taW5fd2lkdGg9MjAwICB8IG1pbl93aWR0aD0yMDAgIHwgd2lkdGggPSAyMDBcclxuICAgICAgICAvL3JhdGlvPTEuMlxyXG5cclxuICAgICAgICBkaW1lbnNpb24uZm9yRWFjaChlbCA9PiB7XHJcbiAgICAgICAgICAgIGlmKGVsLmluY2x1ZGVzKCdfaGVpZ2h0PScpIHx8IGVsLnN0YXJ0c1dpdGgoJ2hlaWdodD0nKSl7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQgICAgICA9IHBhcnNlSW50KGVsLnNwbGl0KCc9JylbMV0gfHwgMClcclxuICAgICAgICAgICAgICAgIGhlaWdodE1hdGNoID0gWydtYXgnLCdtaW4nXS5pbmNsdWRlcygoZWwuc3BsaXQoJz0nKVswXSkuc3BsaXQoJ18nKVswXSkgID8gIChlbC5zcGxpdCgnPScpWzBdKS5zcGxpdCgnXycpWzBdIDogJ2VxdWFsJ1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihlbC5pbmNsdWRlcygnX3dpZHRoPScpIHx8IGVsLnN0YXJ0c1dpdGgoJ3dpZHRoPScpKXtcclxuICAgICAgICAgICAgICAgIHdpZHRoICAgICAgID0gcGFyc2VJbnQoZWwuc3BsaXQoJz0nKVsxXSB8fCAwIClcclxuICAgICAgICAgICAgICAgIHdpZHRoTWF0Y2ggID0gWydtYXgnLCdtaW4nXS5pbmNsdWRlcygoZWwuc3BsaXQoJz0nKVswXSkuc3BsaXQoJ18nKVswXSkgID8gIChlbC5zcGxpdCgnPScpWzBdKS5zcGxpdCgnXycpWzBdIDogJ2VxdWFsJ1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihlbC5pbmNsdWRlcygncmF0aW89Jykpe1xyXG4gICAgICAgICAgICAgICAgcmF0aW8gPSBwYXJzZUZsb2F0KGVsLnNwbGl0KCc9JylbMV0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaW1hZ2Uuc3JjID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmcm9tKG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xyXG4gICAgICAgICAgICBpbWFnZS5vbmxvYWQgPSAoKSA9PntcclxuICAgICAgICAgICAgICAgIGxldCBpc1ZhbGlkID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIGlmKHJhdGlvKXtcclxuICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkID0gKChpbWFnZS53aWR0aC9pbWFnZS5oZWlnaHQpLnRvRml4ZWQoMSkgPT09IHJhdGlvLnRvRml4ZWQoMSkpO1xyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlzVmFsaWRXaWR0aCAgPSB3aWR0aCAgPyB0aGlzLmRvQ29tcGFyaXNvbihpbWFnZS53aWR0aCx3aWR0aCx3aWR0aE1hdGNoKSA6IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlzVmFsaWRIZWlnaHQgPSBoZWlnaHQgPyB0aGlzLmRvQ29tcGFyaXNvbihpbWFnZS5oZWlnaHQsaGVpZ2h0LGhlaWdodE1hdGNoKSA6IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IChpc1ZhbGlkV2lkdGggJiYgaXNWYWxpZEhlaWdodCkgYXMgYm9vbGVhblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShpc1ZhbGlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBkb0NvbXBhcmlzb24obWF0Y2hXaXRoOiBudW1iZXIsIG1hdGNoVG86IG51bWJlciwgb3BlcmF0b3IgPSAnZXF1YWwnKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IGNvbXBhcmVTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChvcGVyYXRvciA9PSAnZXF1YWwnKSB7IGNvbXBhcmVTdGF0ZSA9IG1hdGNoV2l0aCA9PSBtYXRjaFRvIH1cclxuICAgICAgICBpZiAob3BlcmF0b3IgPT0gJ21pbicpIHsgY29tcGFyZVN0YXRlID0gbWF0Y2hXaXRoID49IG1hdGNoVG8gfVxyXG4gICAgICAgIGlmIChvcGVyYXRvciA9PSAnbWF4JykgeyBjb21wYXJlU3RhdGUgPSBtYXRjaFdpdGggPD0gbWF0Y2hUbyB9XHJcbiAgICAgICAgcmV0dXJuIGNvbXBhcmVTdGF0ZTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
477
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWFic29sdXRlLXZhbGlkYXRvci9zcmMvbGliL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQWMsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQzs7OztBQUk3RCxNQUFNLE9BQU8sV0FBVztJQVNwQixZQUNZLElBQXdCLEVBQ3hCLEdBQWdDO1FBRGhDLFNBQUksR0FBSixJQUFJLENBQW9CO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQTZCO1FBVHJDLG9CQUFlLEdBQWEsWUFBWSxDQUFDO1FBQ3pDLHNCQUFpQixHQUFRLGNBQWMsQ0FBQyxXQUFXLENBQUM7UUFDcEQscUJBQWdCLEdBQVMsY0FBYyxDQUFDLFVBQVUsQ0FBQztRQUNuRCxxQkFBZ0IsR0FBUyxjQUFjLENBQUMsZ0JBQWdCLENBQUM7UUFDekQsb0JBQWUsR0FBVSxjQUFjLENBQUMsZUFBZSxDQUFBO1FBQ3ZELG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBS2pDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUFBLENBQUM7SUFHZCxJQUFJO1FBQ0EsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztJQUNqRCxD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LE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7O3dHQWxpQlEsV0FBVzs0R0FBWCxXQUFXLGNBREUsTUFBTTsyRkFDbkIsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4vaHR0cC5yZXF1ZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ0Fic29sdXRlVmFsaWRhdG9yU2VydmljZSB9IGZyb20gJy4vLi4vbmctYWJzb2x1dGUtdmFsaWRhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERFRkFVTFRfREFURV9GT1JNQVQsIEdsb2JhbENvbnN0YW50IH0gZnJvbSAnLi4vY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wyLCBIdHRwUmVxdWVzdEFyZ3MgfSBmcm9tICcuLi9pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgdG9BcnJheSB9IGZyb20gJy4uL2NvbW1vbi51dGlscyc7XHJcbmltcG9ydCB7IGlzQWZ0ZXIsIGlzQmVmb3JlLCBpc1ZhbGlkLCBwYXJzZSB9IGZyb20gJ2RhdGUtZm5zJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVXRpbFNlcnZpY2Uge1xyXG5cclxuICAgIHB1YmxpYyBkZWZhdWx0VGltZVpvbmUgICA6c3RyaW5nID0gJ0RELU1NLVlZWVknO1xyXG4gICAgcHVibGljIGNyZWRpdENhcmRJc3N1ZXJzIDphbnkgPSBHbG9iYWxDb25zdGFudC5jcmVkaXRfY2FyZDtcclxuICAgIHB1YmxpYyBkZWJpdENhcmRJc3N1ZXJzICA6YW55ID0gR2xvYmFsQ29uc3RhbnQuZGViaXRfY2FyZDtcclxuICAgIHB1YmxpYyBjdXN0b21PYmplY3ROYW1lICA6YW55ID0gR2xvYmFsQ29uc3RhbnQuY3VzdG9tT2JqZWN0TmFtZTtcclxuICAgIHB1YmxpYyBjdXN0b21SdWxlc05hbWUgICA6YW55ID0gR2xvYmFsQ29uc3RhbnQuY3VzdG9tUnVsZXNOYW1lXHJcbiAgICBwdWJsaWMgc3RyaW5nU3RyZW5ndGggICAgOmFueSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cFJlcXVlc3RTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgYWJzIDogTmdBYnNvbHV0ZVZhbGlkYXRvclNlcnZpY2VcclxuICAgICl7dGhpcy5pbml0KCl9XHJcblxyXG5cclxuICAgIGluaXQoKXtcclxuICAgICAgICB0aGlzLnN0cmluZ1N0cmVuZ3RoID0gdGhpcy5hYnMuc3RyZW5ndGhMZXZlbDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0VmFsaWRhdGlvblJ1bGVzKGNvbnRyb2w6QWJzdHJhY3RDb250cm9sMixydWxlczpzdHJpbmcgfCBzdHJpbmdbXSxhcHBlbmRzID0ge30pe1xyXG4gICAgICAgIGxldCBjdXN0b21PYmplY3ROYW1lID0gdGhpcy5jdXN0b21PYmplY3ROYW1lO1xyXG4gICAgICAgIGxldCBjdXN0b21SdWxlc05hbWUgID0gdGhpcy5jdXN0b21SdWxlc05hbWU7XHJcbiAgICAgICAgbGV0IHJ1bGVBcnJheSAgICAgICAgPSBBcnJheS5pc0FycmF5KHJ1bGVzKSA/IHJ1bGVzIDogW3J1bGVzXTtcclxuICAgICAgICBsZXQgYWN0aXZlUnVsZXMgICAgICA9ICEhY29udHJvbFtjdXN0b21PYmplY3ROYW1lXSAmJiAhIWNvbnRyb2xbY3VzdG9tT2JqZWN0TmFtZV1bY3VzdG9tUnVsZXNOYW1lXSA/IGNvbnRyb2xbY3VzdG9tT2JqZWN0TmFtZV1bY3VzdG9tUnVsZXNOYW1lXSA6IFtdO1xyXG4gICAgICAgIGxldCBmaW5hbE9iamVjdCAgICAgID0gT2JqZWN0LmFzc2lnbih7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMgOiAgQXJyYXkuZnJvbShuZXcgU2V0KGFjdGl2ZVJ1bGVzLmNvbmNhdChydWxlQXJyYXkpKSlcclxuICAgICAgICB9LGFwcGVuZHMpO1xyXG5cclxuICAgICAgICBjb250cm9sW2N1c3RvbU9iamVjdE5hbWVdID0gZmluYWxPYmplY3RcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMganNvbihzdHJpbmc6c3RyaW5nKTpib29sZWFuIHtcclxuICAgICAgICBpZighc3RyaW5nKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgSlNPTi5wYXJzZShzdHJpbmcpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY29uZmlybWVkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDIsIGFyZ3M6c3RyaW5nLCBmaWVsZE5hbWUgPSBudWxsKTogYm9vbGVhbiB8IHZvaWQge1xyXG4gICAgICAgIGZpZWxkTmFtZSA9IGZpZWxkTmFtZSB8fCBjb250cm9sWydmaWVsZF9uYW1lJ10gfHwgbnVsbDtcclxuICAgICAgICBsZXQgY29tcGFyZWRfZmllbGRfbmFtZSA9IGFyZ3MgfHwgKGAke2ZpZWxkTmFtZX1fY29uZmlybWF0aW9uYCk7XHJcbiAgICAgICAgbGV0IHRvQ29tcGFyZVdpdGggPSBjb250cm9sLnJvb3QuZ2V0KGNvbXBhcmVkX2ZpZWxkX25hbWUpIGFzIEZvcm1Db250cm9sO1xyXG4gICAgICAgIHJldHVybiAoY29udHJvbC52YWx1ZSA9PT0gdG9Db21wYXJlV2l0aD8udmFsdWUpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNhbWUoY29udHJvbDogQWJzdHJhY3RDb250cm9sMiwgYXJnczpzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgdG9Db21wYXJlV2l0aCA9IGNvbnRyb2wucm9vdC5nZXQoYXJncykgYXMgRm9ybUNvbnRyb2w7XHJcbiAgICAgICAgcmV0dXJuIChjb250cm9sLnZhbHVlID09PSB0b0NvbXBhcmVXaXRoPy52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRpZmZlcmVudChjb250cm9sOkFic3RyYWN0Q29udHJvbDIsIGFyZ3M6c3RyaW5nKTogYm9vbGVhbntcclxuICAgICAgICBsZXQgdG9Db21wYXJlV2l0aCA9IGNvbnRyb2wucm9vdC5nZXQoYXJncykgYXMgRm9ybUNvbnRyb2w7XHJcbiAgICAgICAgcmV0dXJuIChjb250cm9sLnZhbHVlICE9PSB0b0NvbXBhcmVXaXRoPy52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlcXVpcmVkKGFjdHVhbERhdGE6c3RyaW5nKTpib29sZWFue1xyXG4gICAgICAgIHJldHVybiAhIWFjdHVhbERhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlcXVpcmVkSWYoY29udHJvbDogQWJzdHJhY3RDb250cm9sMiwgYXJnczogc3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgW2RlcGVuZGVudCxtYXRjaFdpdGhdID0gdG9BcnJheShhcmdzKVxyXG4gICAgICAgIGlmKCFkZXBlbmRlbnQgfHwgIW1hdGNoV2l0aCl7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdG9Db21wYXJlV2l0aCA9IGNvbnRyb2wucm9vdC5nZXQoZGVwZW5kZW50KSBhcyBGb3JtQ29udHJvbFxyXG4gICAgICAgIHJldHVybiAodG9Db21wYXJlV2l0aC52YWx1ZSA9PT0gbWF0Y2hXaXRoKSA/IHRoaXMucmVxdWlyZWQoY29udHJvbC52YWx1ZSkgOiB0cnVlXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlcXVpcmVkVW5sZXNzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDIsIGFyZ3M6IHN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IFtkZXBlbmRlbnQsLi4ubWF0Y2hXaXRoXSA9IHRvQXJyYXkoYXJncyk7XHJcbiAgICAgICAgaWYoIWRlcGVuZGVudCAmJiBtYXRjaFdpdGgubGVuZ3RoID09PSAwKXtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdG9Db21wYXJlV2l0aCA9IGNvbnRyb2wucm9vdC5nZXQoZGVwZW5kZW50KSBhcyBGb3JtQ29udHJvbDtcclxuICAgICAgICByZXR1cm4gbWF0Y2hXaXRoLnNvbWUoaXRlbSA9PiBpdGVtID09PSB0b0NvbXBhcmVXaXRoLnZhbHVlKSA/IHRoaXMucmVxdWlyZWQoY29udHJvbC52YWx1ZSkgOiB0cnVlXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlcXVpcmVkV2l0aChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wyLCBhcmdzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBuYW1lcyA9IHRvQXJyYXkoYXJncyk7XHJcbiAgICAgICAgbGV0IGFueUhhc1ZhbHVlID0gbmFtZXMuc29tZShuYW1lID0+IHtcclxuICAgICAgICAgICAgY29uc3QgYyA9IGNvbnRyb2wucm9vdC5nZXQobmFtZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBjICYmIGMudmFsdWUgIT09IG51bGwgJiYgYy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIGMudmFsdWUgIT09ICcnO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBhbnlIYXNWYWx1ZSA/IHRoaXMucmVxdWlyZWQoY29udHJvbC52YWx1ZSkgOiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZXF1aXJlZFdpdGhBbGwoY29udHJvbDpBYnN0cmFjdENvbnRyb2wyLCBhcmdzOnN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbntcclxuICAgICAgICBsZXQgbWF0Y2hXaXRoIFx0ICAgICA9IHRvQXJyYXkoYXJncyk7XHJcbiAgICAgICAgbGV0IGNvbXBhcmVXaXRoVmFsdWUgPSBtYXRjaFdpdGgubWFwKG5hbWUgPT4gKGNvbnRyb2wucm9vdC5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2wpLnZhbHVlKVxyXG4gICAgICAgIHJldHVybiBjb21wYXJlV2l0aFZhbHVlLmZpbHRlcihCb29sZWFuKS5sZW5ndGggPT09IG1hdGNoV2l0aC5sZW5ndGggPyB0aGlzLnJlcXVpcmVkKGNvbnRyb2wudmFsdWUpIDogdHJ1ZVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZXF1aXJlZFdpdGhvdXQoY29udHJvbDpBYnN0cmFjdENvbnRyb2wyLCBhcmdzOnN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbntcclxuICAgICAgICBsZXQgbWF0Y2hXaXRoIFx0ICAgICA9IHRvQXJyYXkoYXJncyk7XHJcbiAgICAgICAgbGV0IGNvbXBhcmVXaXRoVmFsdWUgPSBtYXRjaFdpdGgubWFwKG5hbWUgPT4gKGNvbnRyb2wucm9vdC5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2wpLnZhbHVlKVxyXG4gICAgICAgIHJldHVybiBjb21wYXJlV2l0aFZhbHVlLmZpbHRlcihCb29sZWFuKS5sZW5ndGggPT09IDAgPyB0aGlzLnJlcXVpcmVkKGNvbnRyb2wudmFsdWUpIDogdHJ1ZVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZXF1aXJlZFdpdGhvdXRBbGwoY29udHJvbDpBYnN0cmFjdENvbnRyb2wyLCBhcmdzOnN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbntcclxuICAgICAgICBsZXQgbWF0Y2hXaXRoIFx0XHQgPSB0b0FycmF5KGFyZ3MpO1xyXG4gICAgICAgIGxldCBjb21wYXJlV2l0aFZhbHVlID0gbWF0Y2hXaXRoLm1hcChuYW1lID0+IChjb250cm9sLnJvb3QuZ2V0KG5hbWUpIGFzIEZvcm1Db250cm9sKS52YWx1ZSlcclxuICAgICAgICBsZXQgZW1wdHlGaWVsZENvdW50ICA9IGNvbXBhcmVXaXRoVmFsdWUuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgcmV0dXJuIGVtcHR5RmllbGRDb3VudC5sZW5ndGggPiAwID8gdGhpcy5yZXF1aXJlZChjb250cm9sLnZhbHVlKSA6IHRydWVcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZW1haWwoYWN0dWFsRGF0YTpzdHJpbmcpOiBib29sZWFue1xyXG4gICAgICAgIHJldHVybiAoL15cXHcrKFtcXC4tXT9cXHcrKSpAXFx3KyhbXFwuLV0/XFx3KykqKFxcLlxcd3syLDN9KSskLy50ZXN0KGFjdHVhbERhdGEpKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhYm92ZShhY3R1YWxEYXRhOm51bWJlcix0b0JlRGF0YTpudW1iZXIpOiBib29sZWFue1xyXG4gICAgICAgIHJldHVybiAoTnVtYmVyKHRvQmVEYXRhKSA8IE51bWJlcihhY3R1YWxEYXRhKSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWNjZXB0ZWQoYWN0dWFsRGF0YTphbnkpOiBib29sZWFue1xyXG4gICAgICAgIHJldHVybiAoYWN0dWFsRGF0YSB8fCBhY3R1YWxEYXRhICE9PSBmYWxzZSB8fCBhY3R1YWxEYXRhICE9PSAwKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkYXRlKGFjdHVhbERhdGE6c3RyaW5nLGZvcm1hdDpzdHJpbmcgPSBERUZBVUxUX0RBVEVfRk9STUFUKTogYm9vbGVhbntcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gYWN0dWFsRGF0YSA/IGlzVmFsaWQocGFyc2UoYWN0dWFsRGF0YSwgZm9ybWF0IHx8IERFRkFVTFRfREFURV9GT1JNQVQsIG5ldyBEYXRlKCkpKSA6IHRydWVcclxuICAgICAgICB9Y2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGF0ZUZvcm1hdChhY3R1YWxEYXRhOmFueSwgZm9ybWF0OnN0cmluZyA9IERFRkFVTFRfREFURV9GT1JNQVQpOiBib29sZWFue1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhY3R1YWxEYXRhID8gaXNWYWxpZChwYXJzZShhY3R1YWxEYXRhLCBmb3JtYXQgfHwgREVGQVVMVF9EQVRFX0ZPUk1BVCwgbmV3IERhdGUoKSkpIDogdHJ1ZVxyXG4gICAgICAgIH1jYXRjaCAoZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZnRlcihhY3R1YWxEYXRhOnN0cmluZywgdG9CZURhdGE6c3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFue1xyXG4gICAgICAgIGlmKCEhIWFjdHVhbERhdGEgfHwgISEhdG9CZURhdGEpe1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgW21hdGNoV2l0aERhdGUsbWF0Y2hXaXRoRGF0ZUZvcm1hdCA9IERFRkFVTFRfREFURV9GT1JNQVRdID0gQXJyYXkuaXNBcnJheSh0b0JlRGF0YSkgPyB0b0JlRGF0YSA6IHRvQmVEYXRhLnNwbGl0KCcsJylcclxuICAgICAgICBpZighdGhpcy5kYXRlRm9ybWF0KGFjdHVhbERhdGEsbWF0Y2hXaXRoRGF0ZUZvcm1hdCkgfHwgIXRoaXMuZGF0ZUZvcm1hdChtYXRjaFdpdGhEYXRlLG1hdGNoV2l0aERhdGVGb3JtYXQpKXtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gaXNBZnRlcihcclxuICAgICAgICAgICAgcGFyc2UoYWN0dWFsRGF0YSwgbWF0Y2hXaXRoRGF0ZUZvcm1hdCwgbmV3IERhdGUoKSksXHJcbiAgICAgICAgICAgIHBhcnNlKG1hdGNoV2l0aERhdGUsIG1hdGNoV2l0aERhdGVGb3JtYXQsIG5ldyBEYXRlKCkpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYmVmb3JlKGFjdHVhbERhdGE6c3RyaW5nLCB0b0JlRGF0YTpzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW57XHJcbiAgICAgICAgaWYoISEhYWN0dWFsRGF0YSB8fCAhISF0b0JlRGF0YSl7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBbbWF0Y2hXaXRoRGF0ZSxtYXRjaFdpdGhEYXRlRm9ybWF0ID0gREVGQVVMVF9EQVRFX0ZPUk1BVF0gPSBBcnJheS5pc0FycmF5KHRvQmVEYXRhKSA/IHRvQmVEYXRhIDogdG9CZURhdGEuc3BsaXQoJywnKVxyXG4gICAgICAgIGlmKCF0aGlzLmRhdGVGb3JtYXQoYWN0dWFsRGF0YSxtYXRjaFdpdGhEYXRlRm9ybWF0KSB8fCAhdGhpcy5kYXRlRm9ybWF0KG1hdGNoV2l0aERhdGUsbWF0Y2hXaXRoRGF0ZUZvcm1hdCkpe1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBpc0JlZm9yZShcclxuICAgICAgICAgICAgcGFyc2UoYWN0dWFsRGF0YSwgbWF0Y2hXaXRoRGF0ZUZvcm1hdCwgbmV3IERhdGUoKSksXHJcbiAgICAgICAgICAgIHBhcnNlKG1hdGNoV2l0aERhdGUsIG1hdGNoV2l0aERhdGVGb3JtYXQsIG5ldyBEYXRlKCkpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWxwaGEoYWN0dWFsRGF0YTpzdHJpbmcpIDpib29sZWFue1xyXG4gICAgICAgIHJldHVybiAoL15bYS16XSskL2kudGVzdChhY3R1YWxEYXRhKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFscGhhTnVtZXJpYyhhY3R1YWxEYXRhOnN0cmluZyk6IGJvb2xlYW57XHJcbiAgICAgICAgcmV0dXJuICgvXlthLXowLTldKyQvaS50ZXN0KGFjdHVhbERhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWxwaGFEYXNoKGFjdHVhbERhdGE6c3RyaW5nKTogYm9vbGVhbntcclxuICAgICAgICByZXR1cm4gdGhpcy5yZWdleChhY3R1YWxEYXRhLCdeW2EtekEtWjAtOS1fXSskJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFycmF5KGFjdHVhbERhdGE6c3RyaW5nKTogYm9vbGVhbntcclxuICAgICAgICBpZih0eXBlb2YgYWN0dWFsRGF0YSA9PT0gJ3N0cmluZycgJiYgdGhpcy5qc29uKGFjdHVhbERhdGEpKXtcclxuICAgICAgICAgICAgYWN0dWFsRGF0YSA9IEpTT04ucGFyc2UoYWN0dWFsRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGFjdHVhbERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBib29sZWFuKGFjdHVhbERhdGE6c3RyaW5nKTpib29sZWFue1xyXG4gICAgICAgIGxldCBib29sZWFuQWNjZXB0ZWQgPSBbXHJcbiAgICAgICAgICAgIDEsJzEnLDAsJzAnLCd0cnVlJyx0cnVlLCdmYWxzZScsJ2ZhbHNlJ1xyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmV0dXJuIGJvb2xlYW5BY2NlcHRlZC5pbmNsdWRlcyhhY3R1YWxEYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZXF1YWxzKGFjdHVhbERhdGE6c3RyaW5nLGNvbXBhcmVkX3RvX3ZhbHVlOnN0cmluZyk6IGJvb2xlYW57XHJcbiAgICAgICAgcmV0dXJuIChhY3R1YWxEYXRhID09IGNvbXBhcmVkX3RvX3ZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZW5kc1dpdGgoYWN0dWFsRGF0YTpzdHJpbmcsIGVuZF93aXRoOiBhbnkpOiBib29sZWFue1xyXG4gICAgICAgIGxldCBfZW5kX3dpdGggPSB0b0FycmF5KGVuZF93aXRoKTtcclxuICAgICAgICByZXR1cm4gIV9lbmRfd2l0aC5maW5kKCh2KSA9PiBhY3R1YWxEYXRhICYmIGFjdHVhbERhdGEuZW5kc1dpdGgodikpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGFydHNXaXRoKGFjdHVhbERhdGE6c3RyaW5nLCBzdGFydF93aXRoOnN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbntcclxuICAgICAgICByZXR1cm4gdG9BcnJheShzdGFydF93aXRoKS5zb21lKCh2KSA9PiBhY3R1YWxEYXRhICYmIGFjdHVhbERhdGEuc3RhcnRzV2l0aCh2KSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaW4oYWN0dWFsRGF0YTogc3RyaW5nLCBjb21wYXJlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCB0b0NvbXBhcmUgPSBuZXcgU2V0KHRvQXJyYXkoY29tcGFyZSkubWFwKHYgPT4gdi50b1N0cmluZygpKSlcclxuICAgICAgICByZXR1cm4gdG9Db21wYXJlLmhhcyhhY3R1YWxEYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbm90SW4oYWN0dWFsRGF0YTpzdHJpbmcsIGNvbXBhcmU6c3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFue1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5pbihhY3R1YWxEYXRhLGNvbXBhcmUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbmNsdWRlcyhhY3R1YWxEYXRhOiBzdHJpbmcsIGNvbXBhcmU6IHN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFhY3R1YWxEYXRhKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRvQXJyYXkoY29tcGFyZSkuZXZlcnkodiA9PiBhY3R1YWxEYXRhLmluY2x1ZGVzKHYudG9TdHJpbmcoKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBudW1iZXIoYWN0dWFsRGF0YTphbnkpOiBib29sZWFue1xyXG4gICAgICAgIHJldHVybiAhaXNOYU4oYWN0dWFsRGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0cmluZyhhY3R1YWxEYXRhOmFueSk6IGJvb2xlYW57XHJcbiAgICAgICAgcmV0dXJuIGlzTmFOKGFjdHVhbERhdGEpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGludGVnZXIoYWN0dWFsRGF0YTphbnkpOiBib29sZWFue1xyXG4gICAgICAgIGlmKCF0aGlzLm51bWJlcihhY3R1YWxEYXRhKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcihhY3R1YWxEYXRhKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlwKGFjdHVhbERhdGE6c3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IHJlZ2V4RXhwID0gW1xyXG4gICAgICAgICAgICAnXigyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pJyxcclxuICAgICAgICAgICAgJygyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pJyxcclxuICAgICAgICAgICAgJygyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pJyxcclxuICAgICAgICAgICAgJygyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pJCdcclxuICAgICAgICBdLmpvaW4oXCJcXFxcLlwiKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVnZXgoYWN0dWFsRGF0YSxyZWdleEV4cCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlwdjQoYWN0dWFsRGF0YTpzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgcmVnZXhFeHAgPSBuZXcgUmVnRXhwKCdeKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVxcXFwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPykkJyk7XHJcbiAgICAgICAgcmV0dXJuIHJlZ2V4RXhwLnRlc3QoYWN0dWFsRGF0YSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXB2NihhY3R1YWxEYXRhOnN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCByZWdleEV4cCA9IG5ldyBSZWdFeHAoJ14oWzAtOUEtRmEtZl17MSw0fTopezd9WzAtOUEtRmEtZl17MSw0fSQnKTtcclxuICAgICAgICByZXR1cm4gcmVnZXhFeHAudGVzdChhY3R1YWxEYXRhKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBtYXgoYWN0dWFsRGF0YTphbnksIG1heDpudW1iZXIpOiBib29sZWFue1xyXG4gICAgICAgIGlmKCFhY3R1YWxEYXRhKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmKHRoaXMuaW50ZWdlcihhY3R1YWxEYXRhKSl7XHJcbiAgICAgICAgICAgIHJldHVybiBhY3R1YWxEYXRhIDw9IG1heFxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICByZXR1cm4gKGFjdHVhbERhdGEubGVuZ3RoIDw9IG1heClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG1pbihhY3R1YWxEYXRhOmFueSwgbWluOnN0cmluZyB8IG51bWJlcik6IGJvb2xlYW57XHJcbiAgICAgICAgaWYoISEhYWN0dWFsRGF0YSB8fCAhISFtaW4pIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZih0aGlzLmludGVnZXIoYWN0dWFsRGF0YSkpe1xyXG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKGFjdHVhbERhdGEpID49IE51bWJlcihtaW4pXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHJldHVybiAoYWN0dWFsRGF0YS5sZW5ndGggPj0gbWluKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbm90RXF1YWxzKGFjdHVhbERhdGE6YW55LGNvbXBhcmVfdG86YW55KTogYm9vbGVhbntcclxuICAgICAgICByZXR1cm4gIXRoaXMuZXF1YWxzKGFjdHVhbERhdGEsY29tcGFyZV90byk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJhbmdlKGFjdHVhbERhdGE6IHN0cmluZywgcmFuZ2U6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVtYmVyW10pOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgW21pbiwgbWF4XSA9IHRvQXJyYXkocmFuZ2UpO1xyXG4gICAgICAgIHJldHVybiAoTnVtYmVyKG1pbikgPD0gTnVtYmVyKGFjdHVhbERhdGEpKSAmJiAoTnVtYmVyKGFjdHVhbERhdGEpIDw9IE51bWJlcihtYXgpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYmV0d2VlbihhY3R1YWxEYXRhOiBzdHJpbmcsIHJhbmdlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bWJlcltdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IFttaW4sIG1heF0gPSB0b0FycmF5KHJhbmdlKTtcclxuICAgICAgICByZXR1cm4gKE51bWJlcihtaW4pIDwgTnVtYmVyKGFjdHVhbERhdGEpKSAmJiAoTnVtYmVyKGFjdHVhbERhdGEpIDwgTnVtYmVyKG1heCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1bmRlcihhY3R1YWxEYXRhOnN0cmluZywgdW5kZXI6c3RyaW5nKTogYm9vbGVhbntcclxuICAgICAgICBpZighdGhpcy5udW1iZXIoYWN0dWFsRGF0YSkpIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gTnVtYmVyKGFjdHVhbERhdGEpIDwgTnVtYmVyKHVuZGVyKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXJsKGFjdHVhbERhdGE6c3RyaW5nKTogYm9vbGVhbntcclxuICAgICAgICBsZXQgcmVnZXhFeHAgPSBbXHJcbiAgICAgICAgICAgICdeKD86KD86aHR0cCg/OnMpP3xmdHApOi8vKSg/OlxcXFxTKyg/OjooPzpcXFxcUykqKT9AKT8oPzooPzpbYS16MC05XFx1MDBhMS1cXHVmZmZmXSg/Oi0pKiknLFxyXG4gICAgICAgICAgICAnKD86W2EtejAtOVxcdTAwYTEtXFx1ZmZmZl0pKykoPzpcXFxcLig/OlthLXowLTlcXHUwMGExLVxcdWZmZmZdKD86LSkqKScsXHJcbiAgICAgICAgICAgICcoPzpbYS16MC05XFx1MDBhMS1cXHVmZmZmXSkrKScsXHJcbiAgICAgICAgICAgICcoPzpcXFxcLig/OlthLXowLTlcXHUwMGExLVxcdWZmZmZdKXsyLH0pKD86Oig/OlxcXFxkKXsyLDV9KT8oPzovKD86XFxcXFMpKik/JCdcclxuICAgICAgICBdLmpvaW4oJyonKVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5yZWdleChhY3R1YWxEYXRhLHJlZ2V4RXhwKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVnZXgoYWN0dWFsRGF0YTpzdHJpbmcsIGV4cHJlc3Npb246c3RyaW5nKTogYm9vbGVhbntcclxuICAgICAgICBsZXQgcmVnZXhFeHAgPSBuZXcgUmVnRXhwKGV4cHJlc3Npb24pO1xyXG4gICAgICAgIHJldHVybiByZWdleEV4cC50ZXN0KGFjdHVhbERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBub3RSZWdleChhY3R1YWxEYXRhOnN0cmluZywgZXhwcmVzc2lvbjpzdHJpbmcpOiBib29sZWFue1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5yZWdleChhY3R1YWxEYXRhLGV4cHJlc3Npb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1dWlkKGFjdHVhbERhdGE6c3RyaW5nKTogYm9vbGVhbntcclxuICAgICAgICByZXR1cm4gdGhpcy5yZWdleChhY3R1YWxEYXRhLCdbYS1mMC05XXs4fS1bYS1mMC05XXs0fS00W2EtZjAtOV17M30tWzg5YUFiQl1bYS1mMC05XXszfS1bYS1mMC05XXsxMn0nKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdW5pcXVlKGFyZ3M6SHR0cFJlcXVlc3RBcmdzKTogT2JzZXJ2YWJsZTxib29sZWFuPntcclxuICAgICAgICBsZXQgaHR0cCAgICA6T2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgICAgIGxldCBhY3Rpb24gICA9IGFyZ3MudXJsXHJcbiAgICAgICAgbGV0IG1ldGhvZCAgID0gYXJncy5tZXRob2QgfHwgJ0dFVCdcclxuICAgICAgICBsZXQgcmVxdWVzdCAgPSBhcmdzLnJlcXVlc3R8fCB7fVxyXG4gICAgICAgIGxldCBwYXJhbXMgICA9IGFyZ3MucGFyYW1zIHx8IHt9XHJcblxyXG4gICAgICAgIGlmKGFjdGlvbiB8fCBPYmplY3Qua2V5cyhyZXF1ZXN0KS5sZW5ndGggPT09IDApe1xyXG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzd2l0Y2gobWV0aG9kKXtcclxuICAgICAgICAgICAgY2FzZSAnUE9TVCc6XHJcbiAgICAgICAgICAgICAgICBodHRwID0gdGhpcy5odHRwLnBvc3QoYWN0aW9uLHJlcXVlc3QscGFyYW1zKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgaHR0cCA9IHRoaXMuaHR0cC5nZXQoYWN0aW9uLHsuLi5yZXF1ZXN0LC4uLnBhcmFtc30pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGh0dHAucGlwZShtYXAoKGRhdGE6YW55KT0+IChkYXRhICYmIGRhdGEubGVuZ3RoID09PSAwKSkpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGV4aXN0cyhhcmdzOkh0dHBSZXF1ZXN0QXJncyk6IE9ic2VydmFibGU8Ym9vbGVhbj57XHJcbiAgICAgICAgbGV0IGh0dHAgICAgOk9ic2VydmFibGU8YW55PjtcclxuICAgICAgICBsZXQgYWN0aW9uICAgPSBhcmdzLnVybFxyXG4gICAgICAgIGxldCBtZXRob2QgICA9IGFyZ3MubWV0aG9kIHx8ICdHRVQnXHJcbiAgICAgICAgbGV0IHJlcXVlc3QgID0gYXJncy5yZXF1ZXN0fHwge31cclxuICAgICAgICBsZXQgcGFyYW1zICAgPSBhcmdzLnBhcmFtcyB8fCB7fVxyXG5cclxuICAgICAgICBpZighYWN0aW9uIHx8IE9iamVjdC5rZXlzKHJlcXVlc3QpLmxlbmd0aCA9PT0gMCl7XHJcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN3aXRjaChtZXRob2Qpe1xyXG4gICAgICAgICAgICBjYXNlICdQT1NUJzpcclxuICAgICAgICAgICAgICAgIGh0dHAgPSB0aGlzLmh0dHAucG9zdChhY3Rpb24scmVxdWVzdCxwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBodHRwID0gdGhpcy5odHRwLmdldChhY3Rpb24sey4uLnJlcXVlc3QsLi4ucGFyYW1zfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gaHR0cC5waXBlKG1hcCgoZGF0YTphbnkpPT4gKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSkpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldENyZWRpdENhcmREYXRhKG51bWJlcjpzdHJpbmcpOiBhbnl7XHJcbiAgICAgICAgaWYoIW51bWJlcikgcmV0dXJuO1xyXG4gICAgICAgIG51bWJlciA9IG51bWJlci50b1N0cmluZygpO1xyXG5cclxuICAgICAgICBsZXQgY2FyZF9pc3N1ZXIgPSB0aGlzLmNyZWRpdENhcmRJc3N1ZXJzLmZpbmQoKGNhcmQ6YW55KSA9PiB0aGlzLnJlZ2V4KG51bWJlcixjYXJkLnJlZ2V4KSk7XHJcbiAgICAgICAgcmV0dXJuIHtpc3N1ZXIgOiAoY2FyZF9pc3N1ZXIgPyBjYXJkX2lzc3Vlci5uYW1lIDogbnVsbCl9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNyZWRpdENhcmQoYWN0dWFsRGF0YTpzdHJpbmcpOiBib29sZWFue1xyXG4gICAgICAgIGxldCBjYXJkSW5mbyA9IHRoaXMuZ2V0Q3JlZGl0Q2FyZERhdGEoYWN0dWFsRGF0YSkgYXMgYW55XHJcbiAgICAgICAgcmV0dXJuIGNhcmRJbmZvID8gISFjYXJkSW5mby5pc3N1ZXIgOiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldERlYml0Q2FyZERhdGEobnVtYmVyOm51bWJlcik6IGFueXtcclxuICAgICAgICBpZighbnVtYmVyKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgbGV0IF9udW1iZXIgPSBudW1iZXIudG9TdHJpbmcoKTtcclxuXHJcbiAgICAgICAgbGV0IGNhcmRfaXNzdWVyID0gdGhpcy5kZWJpdENhcmRJc3N1ZXJzLmZpbmQoKGNhcmQ6YW55KSA9PiB0aGlzLnJlZ2V4KF9udW1iZXIsY2FyZC5yZWdleCkpO1xyXG4gICAgICAgIHJldHVybiB7aXNzdWVyIDogKGNhcmRfaXNzdWVyID8gY2FyZF9pc3N1ZXIubmFtZSA6IG51bGwpfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkZWJpdENhcmQoYWN0dWFsRGF0YTpudW1iZXIpe1xyXG4gICAgICAgIGxldCBjYXJkSW5mbyA9IHRoaXMuZ2V0RGViaXRDYXJkRGF0YShhY3R1YWxEYXRhKVxyXG4gICAgICAgIHJldHVybiBjYXJkSW5mbyA/ICEhY2FyZEluZm8uaXNzdWVyIDogZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGN2dihhY3R1YWxEYXRhOnN0cmluZyk6Ym9vbGVhbntcclxuICAgICAgICByZXR1cm4gdGhpcy5yZWdleChhY3R1YWxEYXRhLCdeWzAtOV17Myw0fSQnKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U3RyZW5ndGhEYXRhKGFjdHVhbERhdGE6c3RyaW5nLCBjb21wYXJlOnN0cmluZyB8IHN0cmluZ1tdKTogYW55e1xyXG5cclxuICAgICAgICBpZighISFhY3R1YWxEYXRhKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIGxldCB0b0NvbXBhcmUgICAgICAgICA9IHRvQXJyYXkoY29tcGFyZSk7XHJcbiAgICAgICAgbGV0IGFsbG93ZWRTdHJlbmd0aCAgPSBbXSBhcyBhbnk7XHJcbiAgICAgICAgbGV0IGFjdGl2ZVN0cmVuZ3RoICAgPSBbXSBhcyBhbnk7XHJcbiAgICAgICAgbGV0IGluQWN0aXZlU3RyZW5ndGggPSBbXSBhcyBhbnk7XHJcbiAgICAgICAgbGV0IHN0cmVuZ3RoU2NvcmUgICAgPSAwICBhcyBudW1iZXI7XHJcbiAgICAgICAgbGV0IHN0cmVuZ3RoX2NvbG9yICAgPSB0aGlzLmFicy5zdHJlbmd0aENvbG9yO1xyXG4gICAgICAgIGxldCB2YWxpZFN0cmVuZ3RoICAgID0gc3RyZW5ndGhfY29sb3Jbc3RyZW5ndGhfY29sb3IubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgbGV0IGFsbG93T25NYXhTY3JvcmUgPSB0aGlzLm51bWJlcih0b0NvbXBhcmVbdG9Db21wYXJlLmxlbmd0aCAtMV0pID8gdG9Db21wYXJlW3RvQ29tcGFyZS5sZW5ndGggLTFdIDogdmFsaWRTdHJlbmd0aC5taW4gfHwgLTk5OTk7XHJcbiAgICAgICAgbGV0IHNwZWNpYWxDaGFycyAgICAgPSBcIkAlK1xcLychIyRePzouKCl7fVtdfi1fXCI7XHJcblxyXG4gICAgICAgIHZhciBsZXR0ZXJzID0gbmV3IE9iamVjdCgpIGFzIGFueTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdHVhbERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGFzc2lnblNjb3JlID0gc3BlY2lhbENoYXJzLmluY2x1ZGVzKGFjdHVhbERhdGFbaV0pID8gOC4wIDogNS4wO1xyXG4gICAgICAgICAgICBsZXR0ZXJzW2FjdHVhbERhdGFbaV1dID0gKGxldHRlcnNbYWN0dWFsRGF0YVtpXV0gfHwgMCkgKyAxO1xyXG4gICAgICAgICAgICBzdHJlbmd0aFNjb3JlICs9IGFzc2lnblNjb3JlIC8gbGV0dGVyc1thY3R1YWxEYXRhW2ldXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB2YXJpYXRpb25Db3VudCA9IDA7XHJcbiAgICAgICAgdGhpcy5zdHJpbmdTdHJlbmd0aC5mb3JFYWNoKCh2OmFueSk9PntcclxuICAgICAgICAgICAgaWYodG9Db21wYXJlLmluZGV4T2Yodi5pZCkgPj0gMCB8fCB0b0NvbXBhcmUubGVuZ3RoID09IDApe1xyXG4gICAgICAgICAgICAgICAgYWxsb3dlZFN0cmVuZ3RoLnB1c2godi5pZClcclxuICAgICAgICAgICAgICAgIGxldCBpc1ZhbGlkID0gdGhpcy5yZWdleChhY3R1YWxEYXRhLHYucmVnZXgpO1xyXG4gICAgICAgICAgICAgICAgaXNWYWxpZCA/IGFjdGl2ZVN0cmVuZ3RoLnB1c2godi5pZCkgOiBpbkFjdGl2ZVN0cmVuZ3RoLnB1c2godi5pZClcclxuICAgICAgICAgICAgICAgIHZhcmlhdGlvbkNvdW50ICs9ICBpc1ZhbGlkID8gMSA6IDBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHN0cmVuZ3RoU2NvcmUgKz0gKHZhcmlhdGlvbkNvdW50IC0gMSkgKiAxMDtcclxuICAgICAgICBzdHJlbmd0aFNjb3JlID0gTWF0aC5yb3VuZChzdHJlbmd0aFNjb3JlKTtcclxuXHJcbiAgICAgICAgaWYoaW5BY3RpdmVTdHJlbmd0aC5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgc3RyZW5ndGhTY29yZSA9IChzdHJlbmd0aFNjb3JlID49IGFsbG93T25NYXhTY3JvcmUpID8gYWxsb3dPbk1heFNjcm9yZSAtIChpbkFjdGl2ZVN0cmVuZ3RoLmxlbmd0aCAqIDUpIDogc3RyZW5ndGhTY29yZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzZW5kT2JqZWN0ID0ge1xyXG4gICAgICAgICAgICBzY29yZSAgICAgICAgICAgIDpzdHJlbmd0aFNjb3JlLFxyXG4gICAgICAgICAgICBhbGxvd2VkU3RyZW5ndGggIDphbGxvd2VkU3RyZW5ndGgsXHJcbiAgICAgICAgICAgIHZhbGlkRm9yICAgICAgICAgOmFjdGl2ZVN0cmVuZ3RoLFxyXG4gICAgICAgICAgICB2YWxpZEV4Y2VwdCAgICAgIDppbkFjdGl2ZVN0cmVuZ3RoLFxyXG4gICAgICAgICAgICBhbGxvd09uTWF4U2NvcmUgIDphbGxvd09uTWF4U2Nyb3JlXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHNlbmRPYmplY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0cmVuZ3RoKGFjdHVhbERhdGE6c3RyaW5nLGNvbXBhcmU6c3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFue1xyXG4gICAgICAgIGxldCBzdHJlbmd0aCA9IHRoaXMuZ2V0U3RyZW5ndGhEYXRhKGFjdHVhbERhdGEsY29tcGFyZSk7XHJcbiAgICAgICAgcmV0dXJuIChzdHJlbmd0aCAmJiBzdHJlbmd0aC5zY29yZSA+PSBzdHJlbmd0aC5hbGxvd09uTWF4U2NvcmUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBwaG9uZU5vKGFjdHVhbERhdGE6c3RyaW5nLGV4cHJlc3Npb246c3RyaW5nIHwgbnVsbCA9IG51bGwpOiBib29sZWFue1xyXG4gICAgICAgIGxldCByZWdleDphbnkgPSAvXFxzKig/OlxcKz8oXFxkezEsM30pKT9bXFxXXFxEXFxzXV58KCkqKFxcZFtcXFdcXERcXHNdKj9cXGRbXFxEXFxXXFxzXSo/XFxkKVtcXFdcXERcXHNdKihcXGRbXFxXXFxEXFxzXSo/XFxkW1xcRFxcV1xcc10qP1xcZClbXFxXXFxEXFxzXSooXFxkW1xcV1xcRFxcc10qP1xcZFtcXERcXFdcXHNdKj9cXGRbXFxXXFxEXFxzXSo/XFxkKSg/OiAqeChcXGQrKSk/XFxzKiQvZztcclxuICAgICAgICByZXR1cm4gdGhpcy5yZWdleChhY3R1YWxEYXRhLCBleHByZXNzaW9uIHx8IHJlZ2V4KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaW1hZ2UoZmlsZUluc3RhbmNlOkZpbGVbXSk6IGJvb2xlYW57XHJcbiAgICAgICAgaWYoISEhZmlsZUluc3RhbmNlIHx8IGZpbGVJbnN0YW5jZS5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICBsZXQgZmlsZSA9IGZpbGVJbnN0YW5jZVswXSBhcyBGaWxlO1xyXG4gICAgICAgIHJldHVybiBmaWxlLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHZpZGVvKGZpbGVJbnN0YW5jZTpGaWxlW10pOiBib29sZWFue1xyXG4gICAgICAgIGlmKCEhIWZpbGVJbnN0YW5jZSB8fCBmaWxlSW5zdGFuY2UubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIGxldCBmaWxlID0gZmlsZUluc3RhbmNlWzBdIGFzIEZpbGU7XHJcbiAgICAgICAgcmV0dXJuIGZpbGUudHlwZS5zdGFydHNXaXRoKCd2aWRlby8nKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbWltZXMoZmlsZUluc3RhbmNlOkZpbGVbXSxjb21wYXJlOnN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbntcclxuICAgICAgICBpZighISFmaWxlSW5zdGFuY2UgfHwgZmlsZUluc3RhbmNlLmxlbmd0aCA9PT0gMCB8fCAhISFjb21wYXJlKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIGxldCBmaWxlICAgICAgICA9IGZpbGVJbnN0YW5jZVswXTtcclxuICAgICAgICBsZXQgZXh0ICAgICAgICAgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKTtcclxuICAgICAgICBsZXQgYWNjZXB0VHlwZSAgPSB0b0FycmF5KGNvbXBhcmUpO1xyXG4gICAgICAgIGxldCBoYXNNaW1lICAgICA9IGFjY2VwdFR5cGUuaW5jbHVkZXMoZXh0KTtcclxuICAgICAgICByZXR1cm4gISFoYXNNaW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzaXplKGZpbGVJbnN0YW5jZTpGaWxlW10sY29tcGFyZTpudW1iZXIpOiBib29sZWFue1xyXG4gICAgICAgIGlmKCEhIWZpbGVJbnN0YW5jZSB8fCBmaWxlSW5zdGFuY2UubGVuZ3RoID09IDAgfHwgISEhY29tcGFyZSlcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICBsZXQgZmlsZSA9IGZpbGVJbnN0YW5jZVswXTtcclxuICAgICAgICByZXR1cm4gZmlsZS5zaXplIDw9IGNvbXBhcmUgKiAxMDI0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkaW1lbnNpb24oZmlsZUluc3RhbmNlOkZpbGVbXSwgY29tcGFyZTpzdHJpbmcgfCBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PntcclxuICAgICAgICBpZighISFmaWxlSW5zdGFuY2UgfHwgZmlsZUluc3RhbmNlLmxlbmd0aCA9PSAwIHx8IGNvbXBhcmUubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG5cclxuICAgICAgICBsZXQgZmlsZSAgICAgICAgPSBmaWxlSW5zdGFuY2VbMF07XHJcbiAgICAgICAgbGV0IHR5cGUgICAgICAgID0gZmlsZS50eXBlO1xyXG5cclxuICAgICAgICBpZighdHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSlcclxuICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuXHJcbiAgICAgICAgbGV0IGRpbWVuc2lvbiAgID0gdG9BcnJheShjb21wYXJlKTtcclxuICAgICAgICBsZXQgaW1hZ2UgICAgICAgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgICBsZXQgaGVpZ2h0ICAgICAgPSAwO1xyXG4gICAgICAgIGxldCB3aWR0aCAgICAgICA9IDA7XHJcbiAgICAgICAgbGV0IHJhdGlvICAgICAgID0gMDtcclxuICAgICAgICBsZXQgaGVpZ2h0TWF0Y2ggPSAnZXF1YWwnO1xyXG4gICAgICAgIGxldCB3aWR0aE1hdGNoICA9ICdlcXVhbCc7XHJcblxyXG4gICAgICAgIC8vbWF4X2hlaWdodD0yMDAgfCBtYXhfaGVpZ2h0PTIwMCB8IGhlaWdodCA9IDIwMFxyXG4gICAgICAgIC8vbWluX3dpZHRoPTIwMCAgfCBtaW5fd2lkdGg9MjAwICB8IHdpZHRoID0gMjAwXHJcbiAgICAgICAgLy9yYXRpbz0xLjJcclxuXHJcbiAgICAgICAgZGltZW5zaW9uLmZvckVhY2goZWwgPT4ge1xyXG4gICAgICAgICAgICBpZihlbC5pbmNsdWRlcygnX2hlaWdodD0nKSB8fCBlbC5zdGFydHNXaXRoKCdoZWlnaHQ9Jykpe1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0ICAgICAgPSBwYXJzZUludChlbC5zcGxpdCgnPScpWzFdIHx8IDApXHJcbiAgICAgICAgICAgICAgICBoZWlnaHRNYXRjaCA9IFsnbWF4JywnbWluJ10uaW5jbHVkZXMoKGVsLnNwbGl0KCc9JylbMF0pLnNwbGl0KCdfJylbMF0pICA/ICAoZWwuc3BsaXQoJz0nKVswXSkuc3BsaXQoJ18nKVswXSA6ICdlcXVhbCdcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYoZWwuaW5jbHVkZXMoJ193aWR0aD0nKSB8fCBlbC5zdGFydHNXaXRoKCd3aWR0aD0nKSl7XHJcbiAgICAgICAgICAgICAgICB3aWR0aCAgICAgICA9IHBhcnNlSW50KGVsLnNwbGl0KCc9JylbMV0gfHwgMCApXHJcbiAgICAgICAgICAgICAgICB3aWR0aE1hdGNoICA9IFsnbWF4JywnbWluJ10uaW5jbHVkZXMoKGVsLnNwbGl0KCc9JylbMF0pLnNwbGl0KCdfJylbMF0pICA/ICAoZWwuc3BsaXQoJz0nKVswXSkuc3BsaXQoJ18nKVswXSA6ICdlcXVhbCdcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYoZWwuaW5jbHVkZXMoJ3JhdGlvPScpKXtcclxuICAgICAgICAgICAgICAgIHJhdGlvID0gcGFyc2VGbG9hdChlbC5zcGxpdCgnPScpWzFdKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGltYWdlLnNyYyA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xyXG5cclxuICAgICAgICByZXR1cm4gZnJvbShuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcclxuICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gKCkgPT57XHJcbiAgICAgICAgICAgICAgICBsZXQgaXNWYWxpZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICBpZihyYXRpbyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9ICgoaW1hZ2Uud2lkdGgvaW1hZ2UuaGVpZ2h0KS50b0ZpeGVkKDEpID09PSByYXRpby50b0ZpeGVkKDEpKTtcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpc1ZhbGlkV2lkdGggID0gd2lkdGggID8gdGhpcy5kb0NvbXBhcmlzb24oaW1hZ2Uud2lkdGgsd2lkdGgsd2lkdGhNYXRjaCkgOiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpc1ZhbGlkSGVpZ2h0ID0gaGVpZ2h0ID8gdGhpcy5kb0NvbXBhcmlzb24oaW1hZ2UuaGVpZ2h0LGhlaWdodCxoZWlnaHRNYXRjaCkgOiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSAoaXNWYWxpZFdpZHRoICYmIGlzVmFsaWRIZWlnaHQpIGFzIGJvb2xlYW5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlc29sdmUoaXNWYWxpZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgZG9Db21wYXJpc29uKG1hdGNoV2l0aDogbnVtYmVyLCBtYXRjaFRvOiBudW1iZXIsIG9wZXJhdG9yID0gJ2VxdWFsJyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBjb21wYXJlU3RhdGUgPSBmYWxzZTtcclxuICAgICAgICBpZiAob3BlcmF0b3IgPT0gJ2VxdWFsJykgeyBjb21wYXJlU3RhdGUgPSBtYXRjaFdpdGggPT0gbWF0Y2hUbyB9XHJcbiAgICAgICAgaWYgKG9wZXJhdG9yID09ICdtaW4nKSB7IGNvbXBhcmVTdGF0ZSA9IG1hdGNoV2l0aCA+PSBtYXRjaFRvIH1cclxuICAgICAgICBpZiAob3BlcmF0b3IgPT0gJ21heCcpIHsgY29tcGFyZVN0YXRlID0gbWF0Y2hXaXRoIDw9IG1hdGNoVG8gfVxyXG4gICAgICAgIHJldHVybiBjb21wYXJlU3RhdGU7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -4,15 +4,17 @@ import { ASYNC_RULES, CROSS_FIELD_VALIDATORS, FILE_TYPE_RULES } from '../constan
|
|
|
4
4
|
import { camelCase, toArray } from '../common.utils';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "./messages-builder.service";
|
|
7
|
-
import * as i2 from "
|
|
7
|
+
import * as i2 from "../ng-absolute-validator.service";
|
|
8
|
+
import * as i3 from "./utils.service";
|
|
8
9
|
export class ValidateRuleService {
|
|
9
|
-
constructor(mb, utl) {
|
|
10
|
+
constructor(mb, abs, utl) {
|
|
10
11
|
this.mb = mb;
|
|
12
|
+
this.abs = abs;
|
|
11
13
|
this.utl = utl;
|
|
12
14
|
this.subMessageMethod = ['max', 'min'];
|
|
13
15
|
this.wiredRulesMap = new WeakMap();
|
|
14
16
|
}
|
|
15
|
-
gererateRuleAndValidate(fieldName, control, rule,
|
|
17
|
+
gererateRuleAndValidate(fieldName, control, rule, customMessage) {
|
|
16
18
|
let messages = {};
|
|
17
19
|
let generateRules = toArray(rule, '|');
|
|
18
20
|
let activeRules = generateRules.map(v => v.includes(':') ? v.split(':')[0] : v);
|
|
@@ -54,8 +56,10 @@ export class ValidateRuleService {
|
|
|
54
56
|
}
|
|
55
57
|
this.utl.setValidationRules(control, activeRules, emitData);
|
|
56
58
|
if (!isValid) {
|
|
57
|
-
messages[messageKey] = this.mb.call(messageKey, fieldName, ...mulArg,
|
|
58
|
-
|
|
59
|
+
messages[messageKey] = this.mb.call(messageKey, fieldName, ...mulArg, customMessage);
|
|
60
|
+
if (!this.abs.showAllErrors) {
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
59
63
|
}
|
|
60
64
|
}
|
|
61
65
|
if (Object.keys(messages).length > 0) {
|
|
@@ -95,9 +99,10 @@ export class ValidateRuleService {
|
|
|
95
99
|
}
|
|
96
100
|
}
|
|
97
101
|
}
|
|
98
|
-
ValidateRuleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ValidateRuleService, deps: [{ token: i1.MessageBuilderService }, { token: i2.UtilService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
99
|
-
ValidateRuleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ValidateRuleService });
|
|
102
|
+
ValidateRuleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ValidateRuleService, deps: [{ token: i1.MessageBuilderService }, { token: i2.NgAbsoluteValidatorService }, { token: i3.UtilService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
103
|
+
ValidateRuleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ValidateRuleService, providedIn: 'root' });
|
|
100
104
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ValidateRuleService, decorators: [{
|
|
101
|
-
type: Injectable
|
|
102
|
-
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtcnVsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYWJzb2x1dGUtdmFsaWRhdG9yL3NyYy9saWIvc2VydmljZXMvdmFsaWRhdGUtcnVsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxFQUFrQixNQUFNLGFBQWEsQ0FBQztBQUVuRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBSXJELE1BQU0sT0FBTyxtQkFBbUI7SUFLNUIsWUFDTSxFQUEwQixFQUMxQixHQUFpQjtRQURqQixPQUFFLEdBQUYsRUFBRSxDQUF3QjtRQUMxQixRQUFHLEdBQUgsR0FBRyxDQUFjO1FBTGYscUJBQWdCLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsa0JBQWEsR0FBTSxJQUFJLE9BQU8sRUFBNEIsQ0FBQztJQUtqRSxDQUFDO0lBRUksdUJBQXVCLENBQUMsU0FBaUIsRUFBRSxPQUF5QixFQUFFLElBQXVCLEVBQUUsY0FBb0M7UUFDNUksSUFBSSxRQUFRLEdBQVUsRUFBUyxDQUFDO1FBQzFCLElBQUksYUFBYSxHQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsSUFBSSxXQUFXLEdBQVMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksZUFBZSxHQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO1FBRXpFLElBQUcsQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBQztZQUNwQyxPQUFPLElBQUksQ0FBQztTQUNmO1FBRVAsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxPQUFPLEdBQU8sSUFBSSxDQUFDO1lBQ3ZCLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQTtZQUN0QixJQUFJLFFBQVEsR0FBTSxFQUFTLENBQUM7WUFDckMsSUFBSSxJQUFJLEdBQU8sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksVUFBVSxHQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUN4RCxJQUFJLElBQUksR0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDckUsSUFBSSxNQUFNLEdBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVwRCxJQUFJLFdBQVcsR0FBUSxVQUFVLENBQUM7WUFDbEMsSUFBSSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDbkUsSUFBSSxVQUFVLEdBQVMsVUFBVSxDQUFDO1lBRWxDLFVBQVUsR0FBUSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEMsSUFBSSxVQUFVLEdBQUksU0FBUyxDQUFDLE9BQU8sVUFBVSxPQUFPLENBQUMsQ0FBQztZQUV0RCxJQUFHLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUErQixDQUFDLEtBQUssVUFBVSxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDdEcsU0FBUztZQUV0QixJQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFDO2dCQUNyQyxVQUFVLEdBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUMsVUFBVSxDQUFDLENBQUM7YUFDNUU7WUFFRCxJQUFHLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBQztnQkFDM0MsV0FBVyxHQUFHLE9BQU8sQ0FBQTthQUN4QjtpQkFDSSxJQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUM7Z0JBQ3pDLFdBQVcsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO2FBQ3BGO2lCQUNHO2dCQUNBLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFBO2FBQzlCO1lBRUQsZ0JBQWdCLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBRXZGLE9BQU8sR0FBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQStCLENBQUMsQ0FBQyxXQUFXLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFFdkUsSUFBRyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBK0IsQ0FBQyxLQUFLLFVBQVUsRUFBQztnQkFDL0QsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBK0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUMsTUFBTSxDQUFDLENBQUM7YUFDMUY7WUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBQyxXQUFXLEVBQUMsUUFBUSxDQUFDLENBQUM7WUFFMUQsSUFBRyxDQUFDLE9BQU8sRUFBQztnQkFDUixRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQTtnQkFDckYsTUFBTTthQUNUO1NBQ0o7UUFFRCxJQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUNoQyxPQUFPLFFBQVEsQ0FBQTtTQUNsQjthQUFJO1lBQ0QsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNMLENBQUM7SUFFTywyQkFBMkIsQ0FBQyxLQUFVLEVBQUUsVUFBa0I7UUFDOUQsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUFFLE9BQU8sR0FBRyxVQUFVLFFBQVEsQ0FBQztTQUFFO1FBQzVELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLEdBQUcsVUFBVSxTQUFTLENBQUM7U0FBRTtRQUM5RCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQUUsT0FBTyxHQUFHLFVBQVUsVUFBVSxDQUFDO1NBQUU7UUFDaEUsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE9BQXlCLEVBQUUsS0FBYSxFQUFFLElBQVksRUFBRSxVQUFrQjtRQUNsRyxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDbkMsSUFBSSxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQ3RCLFNBQVMsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLEdBQUcsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO1FBRUQsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN0QyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNyQixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQWdCLENBQUE7Z0JBQ2hELElBQUksSUFBSSxFQUFFO29CQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQzt5QkFDcEMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQzVFO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7O2dIQXBHUSxtQkFBbUI7b0hBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4vdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lc3NhZ2VCdWlsZGVyU2VydmljZSB9IGZyb20gJy4vbWVzc2FnZXMtYnVpbGRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBU1lOQ19SVUxFUywgQ1JPU1NfRklFTERfVkFMSURBVE9SUywgRklMRV9UWVBFX1JVTEVTLCBHbG9iYWxDb25zdGFudCB9IGZyb20gJy4uL2NvbnN0YW50JztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgY2FtZWxDYXNlLCB0b0FycmF5IH0gZnJvbSAnLi4vY29tbW9uLnV0aWxzJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sMiwgTG9jYWxpemVkTWVzc2FnZUdyb3VwIH0gZnJvbSAnLi4vaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRlUnVsZVNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgc3ViTWVzc2FnZU1ldGhvZCA9IFsnbWF4JywnbWluJ107XHJcbiAgICBwcml2YXRlIHdpcmVkUnVsZXNNYXAgICAgPSBuZXcgV2Vha01hcDxBYnN0cmFjdENvbnRyb2wsIGJvb2xlYW4+KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIG1iXHQ6IE1lc3NhZ2VCdWlsZGVyU2VydmljZSxcclxuXHRcdHByaXZhdGUgdXRsIDogVXRpbFNlcnZpY2VcclxuICAgICl7fVxyXG5cclxuICAgIHB1YmxpYyBnZXJlcmF0ZVJ1bGVBbmRWYWxpZGF0ZShmaWVsZE5hbWU6IHN0cmluZywgY29udHJvbDogQWJzdHJhY3RDb250cm9sMiwgcnVsZTogc3RyaW5nIHwgc3RyaW5nW10sIGN1c3RvbV9tZXNzYWdlOkxvY2FsaXplZE1lc3NhZ2VHcm91cCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuXHRcdGxldCBtZXNzYWdlcyBcdCAgICAgID0ge30gYXMgYW55O1xyXG4gICAgICAgIGxldCBnZW5lcmF0ZVJ1bGVzICAgICA9IHRvQXJyYXkocnVsZSwnfCcpO1xyXG4gICAgICAgIGxldCBhY3RpdmVSdWxlcyAgICAgICA9IGdlbmVyYXRlUnVsZXMubWFwKHYgPT4gdi5pbmNsdWRlcygnOicpID8gdi5zcGxpdCgnOicpWzBdOnYpO1xyXG4gICAgICAgIGxldCBpc1JlcXVpcmVkR3JvdXAgICA9ICEhYWN0aXZlUnVsZXMuZmluZCh2ID0+IHYuc3RhcnRzV2l0aCgncmVxdWlyZWQnKSlcclxuXHJcbiAgICAgICAgaWYoIWlzUmVxdWlyZWRHcm91cCAmJiAhISFjb250cm9sLnZhbHVlKXtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZ2VuZXJhdGVSdWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaXNWYWxpZCAgICAgPSBudWxsO1xyXG4gICAgICAgICAgICBsZXQgY29udHJvbEFyZ3MgPSBudWxsXHJcbiAgICAgICAgICAgIGxldCBlbWl0RGF0YSAgICA9IHt9IGFzIGFueTtcclxuXHRcdFx0bGV0IHJ1bGUgICBcdFx0PSBnZW5lcmF0ZVJ1bGVzW2ldO1xyXG5cdFx0XHRsZXQgbWV0aG9kTmFtZSBcdD0gcnVsZS5pbmNsdWRlcygnOicpID8gcnVsZS5zcGxpdCgnOicpWzBdIDogcnVsZTtcclxuICAgICAgICAgICAgbGV0IGFyZ3MgICBcdFx0PSBydWxlLmluY2x1ZGVzKCc6JykgPyBydWxlLnNwbGl0KCc6JylbMV0gOiAnJztcclxuXHRcdFx0bGV0IG11bEFyZyBcdFx0PSBhcmdzLmluY2x1ZGVzKCcsJykgPyBhcmdzLnNwbGl0KCcsJykgOiBbYXJnc107XHJcblxyXG4gICAgICAgICAgICBsZXQgY3VycmVudFJ1bGUgICAgICA9IG1ldGhvZE5hbWU7XHJcbiAgICAgICAgICAgIGxldCBpc0Nyb3NzRmllbGRSdWxlID0gQ1JPU1NfRklFTERfVkFMSURBVE9SUy5pbmNsdWRlcyhjdXJyZW50UnVsZSlcclxuICAgICAgICAgICAgbGV0IG1lc3NhZ2VLZXkgICAgICAgPSBtZXRob2ROYW1lO1xyXG5cclxuICAgICAgICAgICAgbWV0aG9kTmFtZSAgICAgID0gY2FtZWxDYXNlKG1ldGhvZE5hbWUpO1xyXG4gICAgICAgICAgICBsZXQgZW1pdEZuTmFtZSAgPSBjYW1lbENhc2UoYGdldF8ke21lc3NhZ2VLZXl9X2RhdGFgKTtcclxuXHJcbiAgICAgICAgICAgIGlmKHR5cGVvZiB0aGlzLnV0bFttZXRob2ROYW1lIGFzIGtleW9mIFV0aWxTZXJ2aWNlXSAhPT0gJ2Z1bmN0aW9uJyB8fCBBU1lOQ19SVUxFUy5pbmRleE9mKG1ldGhvZE5hbWUpID49IDApXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuXHJcblx0XHRcdGlmKHRoaXMuc3ViTWVzc2FnZU1ldGhvZC5pbmRleE9mKG1ldGhvZE5hbWUpID49IDApe1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZUtleSAgPSB0aGlzLmdldE1lc3NhZ2VLZXlSZXNwZWN0VG9WYWx1ZShjb250cm9sLnZhbHVlLG1lc3NhZ2VLZXkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihDUk9TU19GSUVMRF9WQUxJREFUT1JTLmluY2x1ZGVzKG1lc3NhZ2VLZXkpKXtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xBcmdzID0gY29udHJvbFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoRklMRV9UWVBFX1JVTEVTLmluY2x1ZGVzKG1lc3NhZ2VLZXkpKXtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xBcmdzID0gY29udHJvbFsnbmF0aXZlRWxlbWVudCddID8gY29udHJvbFsnbmF0aXZlRWxlbWVudCddWydmaWxlcyddIDogbnVsbFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sQXJncyA9IGNvbnRyb2wudmFsdWVcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaXNDcm9zc0ZpZWxkUnVsZSAmJiB0aGlzLndpcmVTaWJsaW5nV2F0Y2hlcnMoY29udHJvbEFyZ3MsIGZpZWxkTmFtZSwgY3VycmVudFJ1bGUsIGFyZ3MpXHJcblxyXG4gICAgICAgICAgICBpc1ZhbGlkICA9IHRoaXMudXRsW21ldGhvZE5hbWUgYXMga2V5b2YgVXRpbFNlcnZpY2VdKGNvbnRyb2xBcmdzLGFyZ3MpO1xyXG5cclxuICAgICAgICAgICAgaWYodHlwZW9mIHRoaXMudXRsW2VtaXRGbk5hbWUgYXMga2V5b2YgVXRpbFNlcnZpY2VdID09PSAnZnVuY3Rpb24nKXtcclxuICAgICAgICAgICAgICAgIGVtaXREYXRhW21lc3NhZ2VLZXldID0gdGhpcy51dGxbZW1pdEZuTmFtZSBhcyBrZXlvZiBVdGlsU2VydmljZV0oY29udHJvbC52YWx1ZSxtdWxBcmcpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnV0bC5zZXRWYWxpZGF0aW9uUnVsZXMoY29udHJvbCxhY3RpdmVSdWxlcyxlbWl0RGF0YSk7XHJcblxyXG4gICAgICAgICAgICBpZighaXNWYWxpZCl7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlc1ttZXNzYWdlS2V5XSA9IHRoaXMubWIuY2FsbChtZXNzYWdlS2V5LCBmaWVsZE5hbWUsIC4uLm11bEFyZywgY3VzdG9tX21lc3NhZ2UpXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYoT2JqZWN0LmtleXMobWVzc2FnZXMpLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICByZXR1cm4gbWVzc2FnZXNcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0TWVzc2FnZUtleVJlc3BlY3RUb1ZhbHVlKHZhbHVlOiBhbnksIG1lc3NhZ2VLZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHRoaXMudXRsLmFycmF5KHZhbHVlKSkgeyByZXR1cm4gYCR7bWVzc2FnZUtleX0uYXJyYXlgOyB9XHJcbiAgICAgICAgaWYgKHRoaXMudXRsLnN0cmluZyh2YWx1ZSkpIHsgcmV0dXJuIGAke21lc3NhZ2VLZXl9LnN0cmluZ2A7IH1cclxuICAgICAgICBpZiAodGhpcy51dGwuaW50ZWdlcih2YWx1ZSkpIHsgcmV0dXJuIGAke21lc3NhZ2VLZXl9Lm51bWVyaWNgOyB9XHJcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VLZXk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB3aXJlU2libGluZ1dhdGNoZXJzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDIsIGlucHV0OiBzdHJpbmcsIHJ1bGU6IHN0cmluZywgZGVwZW5kZW50czogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IGN0cmxOYW1lcyA9IHRvQXJyYXkoZGVwZW5kZW50cylcclxuICAgICAgICBpZiAocnVsZSA9PT0gJ2NvbmZpcm1lZCcpIHtcclxuICAgICAgICAgICAgY3RybE5hbWVzID0gW2RlcGVuZGVudHMgfHwgKGAke2lucHV0fV9jb25maXJtYXRpb25gKV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgd2lyZWRSdWxlcyA9IHRoaXMud2lyZWRSdWxlc01hcC5nZXQoY29udHJvbCk7XHJcbiAgICAgICAgaWYgKCF3aXJlZFJ1bGVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMud2lyZWRSdWxlc01hcC5zZXQoY29udHJvbCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGN0cmxOYW1lcy5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGN0cmwgPSBjb250cm9sLnJvb3QuZ2V0KG5hbWUpIGFzIEZvcm1Db250cm9sXHJcbiAgICAgICAgICAgICAgICBpZiAoY3RybCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGN0cmwudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDIwMCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IHRydWUgfSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
105
|
+
type: Injectable,
|
|
106
|
+
args: [{ providedIn: 'root' }]
|
|
107
|
+
}], ctorParameters: function () { return [{ type: i1.MessageBuilderService }, { type: i2.NgAbsoluteValidatorService }, { type: i3.UtilService }]; } });
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtcnVsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYWJzb2x1dGUtdmFsaWRhdG9yL3NyYy9saWIvc2VydmljZXMvdmFsaWRhdGUtcnVsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRW5GLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBS3JELE1BQU0sT0FBTyxtQkFBbUI7SUFLNUIsWUFDTSxFQUEwQixFQUNwQixHQUFnQyxFQUN0QyxHQUFpQjtRQUZqQixPQUFFLEdBQUYsRUFBRSxDQUF3QjtRQUNwQixRQUFHLEdBQUgsR0FBRyxDQUE2QjtRQUN0QyxRQUFHLEdBQUgsR0FBRyxDQUFjO1FBTmYscUJBQWdCLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsa0JBQWEsR0FBTSxJQUFJLE9BQU8sRUFBNEIsQ0FBQztJQU1qRSxDQUFDO0lBRUksdUJBQXVCLENBQUMsU0FBaUIsRUFBRSxPQUF5QixFQUFFLElBQXVCLEVBQUUsYUFBbUM7UUFDM0ksSUFBSSxRQUFRLEdBQVUsRUFBUyxDQUFDO1FBQzFCLElBQUksYUFBYSxHQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsSUFBSSxXQUFXLEdBQVMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksZUFBZSxHQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO1FBRXpFLElBQUcsQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBQztZQUNwQyxPQUFPLElBQUksQ0FBQztTQUNmO1FBRVAsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxPQUFPLEdBQU8sSUFBSSxDQUFDO1lBQ3ZCLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQTtZQUN0QixJQUFJLFFBQVEsR0FBTSxFQUFTLENBQUM7WUFDckMsSUFBSSxJQUFJLEdBQU8sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksVUFBVSxHQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUN4RCxJQUFJLElBQUksR0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDckUsSUFBSSxNQUFNLEdBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVwRCxJQUFJLFdBQVcsR0FBUSxVQUFVLENBQUM7WUFDbEMsSUFBSSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDbkUsSUFBSSxVQUFVLEdBQVMsVUFBVSxDQUFDO1lBRWxDLFVBQVUsR0FBUSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEMsSUFBSSxVQUFVLEdBQUksU0FBUyxDQUFDLE9BQU8sVUFBVSxPQUFPLENBQUMsQ0FBQztZQUV0RCxJQUFHLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUErQixDQUFDLEtBQUssVUFBVSxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDdEcsU0FBUztZQUV0QixJQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFDO2dCQUNyQyxVQUFVLEdBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUMsVUFBVSxDQUFDLENBQUM7YUFDNUU7WUFFRCxJQUFHLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBQztnQkFDM0MsV0FBVyxHQUFHLE9BQU8sQ0FBQTthQUN4QjtpQkFDSSxJQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUM7Z0JBQ3pDLFdBQVcsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO2FBQ3BGO2lCQUNHO2dCQUNBLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFBO2FBQzlCO1lBRUQsZ0JBQWdCLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBRXZGLE9BQU8sR0FBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQStCLENBQUMsQ0FBQyxXQUFXLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFFdkUsSUFBRyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBK0IsQ0FBQyxLQUFLLFVBQVUsRUFBQztnQkFDL0QsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBK0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUMsTUFBTSxDQUFDLENBQUM7YUFDMUY7WUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBQyxXQUFXLEVBQUMsUUFBUSxDQUFDLENBQUM7WUFFMUQsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDVixRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQTtnQkFDcEYsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFO29CQUN6QixNQUFNO2lCQUNUO2FBQ0o7U0FDSjtRQUVELElBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ2hDLE9BQU8sUUFBUSxDQUFBO1NBQ2xCO2FBQUk7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0wsQ0FBQztJQUVPLDJCQUEyQixDQUFDLEtBQVUsRUFBRSxVQUFrQjtRQUM5RCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQUUsT0FBTyxHQUFHLFVBQVUsUUFBUSxDQUFDO1NBQUU7UUFDNUQsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUFFLE9BQU8sR0FBRyxVQUFVLFNBQVMsQ0FBQztTQUFFO1FBQzlELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLEdBQUcsVUFBVSxVQUFVLENBQUM7U0FBRTtRQUNoRSxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRU8sbUJBQW1CLENBQUMsT0FBeUIsRUFBRSxLQUFhLEVBQUUsSUFBWSxFQUFFLFVBQWtCO1FBQ2xHLElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNuQyxJQUFJLElBQUksS0FBSyxXQUFXLEVBQUU7WUFDdEIsU0FBUyxHQUFHLENBQUMsVUFBVSxJQUFJLENBQUMsR0FBRyxLQUFLLGVBQWUsQ0FBQyxDQUFDLENBQUM7U0FDekQ7UUFFRCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3JCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBZ0IsQ0FBQTtnQkFDaEQsSUFBSSxJQUFJLEVBQUU7b0JBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3lCQUNwQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDNUU7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQzs7Z0hBdkdRLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRE4sTUFBTTsyRkFDbkIsbUJBQW1CO2tCQUQvQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuL3V0aWxzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZXNzYWdlQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuL21lc3NhZ2VzLWJ1aWxkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQVNZTkNfUlVMRVMsIENST1NTX0ZJRUxEX1ZBTElEQVRPUlMsIEZJTEVfVFlQRV9SVUxFUyB9IGZyb20gJy4uL2NvbnN0YW50JztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgY2FtZWxDYXNlLCB0b0FycmF5IH0gZnJvbSAnLi4vY29tbW9uLnV0aWxzJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sMiwgTG9jYWxpemVkTWVzc2FnZUdyb3VwIH0gZnJvbSAnLi4vaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgTmdBYnNvbHV0ZVZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICcuLi9uZy1hYnNvbHV0ZS12YWxpZGF0b3Iuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGVSdWxlU2VydmljZSB7XHJcblxyXG4gICAgcHJpdmF0ZSBzdWJNZXNzYWdlTWV0aG9kID0gWydtYXgnLCdtaW4nXTtcclxuICAgIHByaXZhdGUgd2lyZWRSdWxlc01hcCAgICA9IG5ldyBXZWFrTWFwPEFic3RyYWN0Q29udHJvbCwgYm9vbGVhbj4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgbWJcdDogTWVzc2FnZUJ1aWxkZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgYWJzIDogTmdBYnNvbHV0ZVZhbGlkYXRvclNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHV0bCA6IFV0aWxTZXJ2aWNlXHJcbiAgICApe31cclxuXHJcbiAgICBwdWJsaWMgZ2VyZXJhdGVSdWxlQW5kVmFsaWRhdGUoZmllbGROYW1lOiBzdHJpbmcsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDIsIHJ1bGU6IHN0cmluZyB8IHN0cmluZ1tdLCBjdXN0b21NZXNzYWdlOkxvY2FsaXplZE1lc3NhZ2VHcm91cCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuXHRcdGxldCBtZXNzYWdlcyBcdCAgICAgID0ge30gYXMgYW55O1xyXG4gICAgICAgIGxldCBnZW5lcmF0ZVJ1bGVzICAgICA9IHRvQXJyYXkocnVsZSwnfCcpO1xyXG4gICAgICAgIGxldCBhY3RpdmVSdWxlcyAgICAgICA9IGdlbmVyYXRlUnVsZXMubWFwKHYgPT4gdi5pbmNsdWRlcygnOicpID8gdi5zcGxpdCgnOicpWzBdOnYpO1xyXG4gICAgICAgIGxldCBpc1JlcXVpcmVkR3JvdXAgICA9ICEhYWN0aXZlUnVsZXMuZmluZCh2ID0+IHYuc3RhcnRzV2l0aCgncmVxdWlyZWQnKSlcclxuXHJcbiAgICAgICAgaWYoIWlzUmVxdWlyZWRHcm91cCAmJiAhISFjb250cm9sLnZhbHVlKXtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZ2VuZXJhdGVSdWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaXNWYWxpZCAgICAgPSBudWxsO1xyXG4gICAgICAgICAgICBsZXQgY29udHJvbEFyZ3MgPSBudWxsXHJcbiAgICAgICAgICAgIGxldCBlbWl0RGF0YSAgICA9IHt9IGFzIGFueTtcclxuXHRcdFx0bGV0IHJ1bGUgICBcdFx0PSBnZW5lcmF0ZVJ1bGVzW2ldO1xyXG5cdFx0XHRsZXQgbWV0aG9kTmFtZSBcdD0gcnVsZS5pbmNsdWRlcygnOicpID8gcnVsZS5zcGxpdCgnOicpWzBdIDogcnVsZTtcclxuICAgICAgICAgICAgbGV0IGFyZ3MgICBcdFx0PSBydWxlLmluY2x1ZGVzKCc6JykgPyBydWxlLnNwbGl0KCc6JylbMV0gOiAnJztcclxuXHRcdFx0bGV0IG11bEFyZyBcdFx0PSBhcmdzLmluY2x1ZGVzKCcsJykgPyBhcmdzLnNwbGl0KCcsJykgOiBbYXJnc107XHJcblxyXG4gICAgICAgICAgICBsZXQgY3VycmVudFJ1bGUgICAgICA9IG1ldGhvZE5hbWU7XHJcbiAgICAgICAgICAgIGxldCBpc0Nyb3NzRmllbGRSdWxlID0gQ1JPU1NfRklFTERfVkFMSURBVE9SUy5pbmNsdWRlcyhjdXJyZW50UnVsZSlcclxuICAgICAgICAgICAgbGV0IG1lc3NhZ2VLZXkgICAgICAgPSBtZXRob2ROYW1lO1xyXG5cclxuICAgICAgICAgICAgbWV0aG9kTmFtZSAgICAgID0gY2FtZWxDYXNlKG1ldGhvZE5hbWUpO1xyXG4gICAgICAgICAgICBsZXQgZW1pdEZuTmFtZSAgPSBjYW1lbENhc2UoYGdldF8ke21lc3NhZ2VLZXl9X2RhdGFgKTtcclxuXHJcbiAgICAgICAgICAgIGlmKHR5cGVvZiB0aGlzLnV0bFttZXRob2ROYW1lIGFzIGtleW9mIFV0aWxTZXJ2aWNlXSAhPT0gJ2Z1bmN0aW9uJyB8fCBBU1lOQ19SVUxFUy5pbmRleE9mKG1ldGhvZE5hbWUpID49IDApXHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuXHJcblx0XHRcdGlmKHRoaXMuc3ViTWVzc2FnZU1ldGhvZC5pbmRleE9mKG1ldGhvZE5hbWUpID49IDApe1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZUtleSAgPSB0aGlzLmdldE1lc3NhZ2VLZXlSZXNwZWN0VG9WYWx1ZShjb250cm9sLnZhbHVlLG1lc3NhZ2VLZXkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihDUk9TU19GSUVMRF9WQUxJREFUT1JTLmluY2x1ZGVzKG1lc3NhZ2VLZXkpKXtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xBcmdzID0gY29udHJvbFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoRklMRV9UWVBFX1JVTEVTLmluY2x1ZGVzKG1lc3NhZ2VLZXkpKXtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xBcmdzID0gY29udHJvbFsnbmF0aXZlRWxlbWVudCddID8gY29udHJvbFsnbmF0aXZlRWxlbWVudCddWydmaWxlcyddIDogbnVsbFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sQXJncyA9IGNvbnRyb2wudmFsdWVcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaXNDcm9zc0ZpZWxkUnVsZSAmJiB0aGlzLndpcmVTaWJsaW5nV2F0Y2hlcnMoY29udHJvbEFyZ3MsIGZpZWxkTmFtZSwgY3VycmVudFJ1bGUsIGFyZ3MpXHJcblxyXG4gICAgICAgICAgICBpc1ZhbGlkICA9IHRoaXMudXRsW21ldGhvZE5hbWUgYXMga2V5b2YgVXRpbFNlcnZpY2VdKGNvbnRyb2xBcmdzLGFyZ3MpO1xyXG5cclxuICAgICAgICAgICAgaWYodHlwZW9mIHRoaXMudXRsW2VtaXRGbk5hbWUgYXMga2V5b2YgVXRpbFNlcnZpY2VdID09PSAnZnVuY3Rpb24nKXtcclxuICAgICAgICAgICAgICAgIGVtaXREYXRhW21lc3NhZ2VLZXldID0gdGhpcy51dGxbZW1pdEZuTmFtZSBhcyBrZXlvZiBVdGlsU2VydmljZV0oY29udHJvbC52YWx1ZSxtdWxBcmcpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnV0bC5zZXRWYWxpZGF0aW9uUnVsZXMoY29udHJvbCxhY3RpdmVSdWxlcyxlbWl0RGF0YSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIWlzVmFsaWQpIHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2VzW21lc3NhZ2VLZXldID0gdGhpcy5tYi5jYWxsKG1lc3NhZ2VLZXksIGZpZWxkTmFtZSwgLi4ubXVsQXJnLCBjdXN0b21NZXNzYWdlKVxyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFicy5zaG93QWxsRXJyb3JzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKE9iamVjdC5rZXlzKG1lc3NhZ2VzKS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2VzXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldE1lc3NhZ2VLZXlSZXNwZWN0VG9WYWx1ZSh2YWx1ZTogYW55LCBtZXNzYWdlS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLnV0bC5hcnJheSh2YWx1ZSkpIHsgcmV0dXJuIGAke21lc3NhZ2VLZXl9LmFycmF5YDsgfVxyXG4gICAgICAgIGlmICh0aGlzLnV0bC5zdHJpbmcodmFsdWUpKSB7IHJldHVybiBgJHttZXNzYWdlS2V5fS5zdHJpbmdgOyB9XHJcbiAgICAgICAgaWYgKHRoaXMudXRsLmludGVnZXIodmFsdWUpKSB7IHJldHVybiBgJHttZXNzYWdlS2V5fS5udW1lcmljYDsgfVxyXG4gICAgICAgIHJldHVybiBtZXNzYWdlS2V5O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgd2lyZVNpYmxpbmdXYXRjaGVycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wyLCBpbnB1dDogc3RyaW5nLCBydWxlOiBzdHJpbmcsIGRlcGVuZGVudHM6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGxldCBjdHJsTmFtZXMgPSB0b0FycmF5KGRlcGVuZGVudHMpXHJcbiAgICAgICAgaWYgKHJ1bGUgPT09ICdjb25maXJtZWQnKSB7XHJcbiAgICAgICAgICAgIGN0cmxOYW1lcyA9IFtkZXBlbmRlbnRzIHx8IChgJHtpbnB1dH1fY29uZmlybWF0aW9uYCldO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHdpcmVkUnVsZXMgPSB0aGlzLndpcmVkUnVsZXNNYXAuZ2V0KGNvbnRyb2wpO1xyXG4gICAgICAgIGlmICghd2lyZWRSdWxlcykge1xyXG4gICAgICAgICAgICB0aGlzLndpcmVkUnVsZXNNYXAuc2V0KGNvbnRyb2wsIHRydWUpO1xyXG4gICAgICAgICAgICBjdHJsTmFtZXMuZm9yRWFjaChuYW1lID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBjdHJsID0gY29udHJvbC5yb290LmdldChuYW1lKSBhcyBGb3JtQ29udHJvbFxyXG4gICAgICAgICAgICAgICAgaWYgKGN0cmwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjdHJsLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgyMDApKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiB0cnVlIH0pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,38 +1,49 @@
|
|
|
1
|
-
import { of } from "rxjs";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { firstValueFrom, of } from "rxjs";
|
|
2
|
+
import { DEFAULT_LOCALE_LANG, I18N_LANG_PREFIX } from "./constant";
|
|
3
|
+
import { BUILT_IN_TRANSLATIONS } from "./lang.config";
|
|
4
|
+
export function TranslateLoaderFactory(config) {
|
|
5
|
+
return new InlineTranslateLoader(config?.translations);
|
|
6
|
+
}
|
|
7
|
+
export function appInitializerFactory(translate, config, activeLoader) {
|
|
8
|
+
return () => {
|
|
9
|
+
const languages = Object.keys(BUILT_IN_TRANSLATIONS);
|
|
10
|
+
const browserLang = translate.getBrowserLang();
|
|
11
|
+
const langToUse = browserLang && languages.includes(browserLang)
|
|
12
|
+
? browserLang
|
|
13
|
+
: (config?.defaultLanguage || DEFAULT_LOCALE_LANG);
|
|
14
|
+
const consumerHasOwnLoader = !(activeLoader instanceof InlineTranslateLoader);
|
|
15
|
+
if (consumerHasOwnLoader) {
|
|
16
|
+
const loader = new InlineTranslateLoader(config?.translations);
|
|
17
|
+
const translations = loader.translations;
|
|
18
|
+
translate.onLangChange.subscribe(event => {
|
|
19
|
+
if (translations[event.lang]) {
|
|
20
|
+
translate.setTranslation(event.lang, translations[event.lang], true);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return firstValueFrom(translate.use(langToUse));
|
|
25
|
+
};
|
|
26
|
+
}
|
|
13
27
|
export class InlineTranslateLoader {
|
|
14
|
-
constructor(
|
|
15
|
-
this.mergeTranslations = mergeTranslations;
|
|
28
|
+
constructor(replaceTranslations = {}) {
|
|
16
29
|
this.replaceTranslations = replaceTranslations;
|
|
17
30
|
this.translations = {};
|
|
18
31
|
this.init();
|
|
19
32
|
}
|
|
20
33
|
init() {
|
|
21
34
|
this.translations = { ...BUILT_IN_TRANSLATIONS };
|
|
22
|
-
// Full replace happens first — wipes out all existing keys for that lang
|
|
23
35
|
for (const lang of Object.keys(this.replaceTranslations)) {
|
|
24
|
-
this.translations[lang]
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
};
|
|
36
|
+
if (this.translations[lang]) {
|
|
37
|
+
const translation = Object.assign(this.translations[lang][I18N_LANG_PREFIX], this.replaceTranslations[lang]);
|
|
38
|
+
this.translations[lang] = { [I18N_LANG_PREFIX]: translation };
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
this.translations[lang] = { [I18N_LANG_PREFIX]: this.replaceTranslations[lang] };
|
|
42
|
+
}
|
|
32
43
|
}
|
|
33
44
|
}
|
|
34
45
|
getTranslation(lang) {
|
|
35
46
|
return of(this.translations[lang] ?? this.translations['en']);
|
|
36
47
|
}
|
|
37
48
|
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhdG9yLmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWFic29sdXRlLXZhbGlkYXRvci9zcmMvbGliL3RyYW5zYXRvci5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBdUI7SUFDMUQsT0FBTyxJQUFJLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUFDLFNBQTJCLEVBQUUsTUFBdUIsRUFBRSxZQUE2QjtJQUNySCxPQUFPLEdBQUcsRUFBRTtRQUNSLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQTtRQUNwRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsV0FBVyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1lBQzVELENBQUMsQ0FBQyxXQUFXO1lBQ2IsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLGVBQWUsSUFBSSxtQkFBbUIsQ0FBQyxDQUFDO1FBRXZELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLFlBQVksWUFBWSxxQkFBcUIsQ0FBQyxDQUFDO1FBRTlFLElBQUksb0JBQW9CLEVBQUU7WUFDdEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDL0QsTUFBTSxZQUFZLEdBQUksTUFBYyxDQUFDLFlBQW1DLENBQUM7WUFFekUsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3JDLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDMUIsU0FBUyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ3hFO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUVELE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtJQUNuRCxDQUFDLENBQUM7QUFDTixDQUFDO0FBR0QsTUFBTSxPQUFPLHFCQUFxQjtJQUk5QixZQUNZLHNCQUEyQyxFQUFFO1FBQTdDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBMEI7UUFIakQsaUJBQVksR0FBd0IsRUFBRSxDQUFDO1FBSTNDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUFDLENBQUM7SUFHakIsSUFBSTtRQUNBLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxHQUFHLHFCQUFxQixFQUFFLENBQUM7UUFDakQsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO1lBQ3RELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7Z0JBQzVHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUM7YUFDakU7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzthQUNwRjtTQUNKO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZO1FBQ3ZCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0ZUxvYWRlciwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENvbmZpZ0ludGVyZmFjZSB9IGZyb20gXCIuL2NvbmZpZy1pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgREVGQVVMVF9MT0NBTEVfTEFORywgSTE4Tl9MQU5HX1BSRUZJWCB9IGZyb20gXCIuL2NvbnN0YW50XCI7XHJcbmltcG9ydCB7IEJVSUxUX0lOX1RSQU5TTEFUSU9OUyB9IGZyb20gXCIuL2xhbmcuY29uZmlnXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gVHJhbnNsYXRlTG9hZGVyRmFjdG9yeShjb25maWc6IENvbmZpZ0ludGVyZmFjZSkge1xyXG4gICAgcmV0dXJuIG5ldyBJbmxpbmVUcmFuc2xhdGVMb2FkZXIoY29uZmlnPy50cmFuc2xhdGlvbnMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYXBwSW5pdGlhbGl6ZXJGYWN0b3J5KHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgY29uZmlnOiBDb25maWdJbnRlcmZhY2UsIGFjdGl2ZUxvYWRlcjogVHJhbnNsYXRlTG9hZGVyKTogKCkgPT4gUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbGFuZ3VhZ2VzID0gT2JqZWN0LmtleXMoQlVJTFRfSU5fVFJBTlNMQVRJT05TKVxyXG4gICAgICAgIGNvbnN0IGJyb3dzZXJMYW5nID0gdHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XHJcbiAgICAgICAgY29uc3QgbGFuZ1RvVXNlID0gYnJvd3NlckxhbmcgJiYgbGFuZ3VhZ2VzLmluY2x1ZGVzKGJyb3dzZXJMYW5nKVxyXG4gICAgICAgICAgICA/IGJyb3dzZXJMYW5nXHJcbiAgICAgICAgICAgIDogKGNvbmZpZz8uZGVmYXVsdExhbmd1YWdlIHx8IERFRkFVTFRfTE9DQUxFX0xBTkcpO1xyXG5cclxuICAgICAgICBjb25zdCBjb25zdW1lckhhc093bkxvYWRlciA9ICEoYWN0aXZlTG9hZGVyIGluc3RhbmNlb2YgSW5saW5lVHJhbnNsYXRlTG9hZGVyKTtcclxuXHJcbiAgICAgICAgaWYgKGNvbnN1bWVySGFzT3duTG9hZGVyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvYWRlciA9IG5ldyBJbmxpbmVUcmFuc2xhdGVMb2FkZXIoY29uZmlnPy50cmFuc2xhdGlvbnMpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSAobG9hZGVyIGFzIGFueSkudHJhbnNsYXRpb25zIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XHJcblxyXG4gICAgICAgICAgICB0cmFuc2xhdGUub25MYW5nQ2hhbmdlLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRpb25zW2V2ZW50LmxhbmddKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlLnNldFRyYW5zbGF0aW9uKGV2ZW50LmxhbmcsIHRyYW5zbGF0aW9uc1tldmVudC5sYW5nXSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRyYW5zbGF0ZS51c2UobGFuZ1RvVXNlKSlcclxuICAgIH07XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgSW5saW5lVHJhbnNsYXRlTG9hZGVyIGltcGxlbWVudHMgVHJhbnNsYXRlTG9hZGVyIHtcclxuXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0aW9uczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgcmVwbGFjZVRyYW5zbGF0aW9uczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XHJcbiAgICApIHsgdGhpcy5pbml0KCkgfVxyXG5cclxuXHJcbiAgICBpbml0KCkge1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25zID0geyAuLi5CVUlMVF9JTl9UUkFOU0xBVElPTlMgfTtcclxuICAgICAgICBmb3IgKGNvbnN0IGxhbmcgb2YgT2JqZWN0LmtleXModGhpcy5yZXBsYWNlVHJhbnNsYXRpb25zKSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy50cmFuc2xhdGlvbnNbbGFuZ10pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gT2JqZWN0LmFzc2lnbih0aGlzLnRyYW5zbGF0aW9uc1tsYW5nXVtJMThOX0xBTkdfUFJFRklYXSwgdGhpcy5yZXBsYWNlVHJhbnNsYXRpb25zW2xhbmddKVxyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbnNbbGFuZ10gPSB7IFtJMThOX0xBTkdfUFJFRklYXTogdHJhbnNsYXRpb24gfTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25zW2xhbmddID0geyBbSTE4Tl9MQU5HX1BSRUZJWF06IHRoaXMucmVwbGFjZVRyYW5zbGF0aW9uc1tsYW5nXSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFRyYW5zbGF0aW9uKGxhbmc6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMudHJhbnNsYXRpb25zW2xhbmddID8/IHRoaXMudHJhbnNsYXRpb25zWydlbiddKTtcclxuICAgIH1cclxufVxyXG5cclxuIl19
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -8,4 +8,5 @@ export * from './lib/services/reactive.validate';
|
|
|
8
8
|
export * from './lib/interface';
|
|
9
9
|
export * from './lib/directive';
|
|
10
10
|
export * from './lib/rule';
|
|
11
|
-
|
|
11
|
+
export * from './i18n';
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLWFic29sdXRlLXZhbGlkYXRvci9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxpQkFBaUIsQ0FBQztBQUVoQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsWUFBWSxDQUFDO0FBRTNCLGNBQWMsUUFBUSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5nLWFic29sdXRlLXZhbGlkYXRvclxyXG4gKi9cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctYWJzb2x1dGUtdmFsaWRhdG9yLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZy1hYnNvbHV0ZS12YWxpZGF0b3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctYWJzb2x1dGUtdmFsaWRhdG9yLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3JlYWN0aXZlLnZhbGlkYXRlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9pMThuJ1xyXG5cclxuIl19
|