@sambath999/localize-token 12.4.7 → 12.4.8
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/bundles/sambath999-localize-token.umd.js +26 -4
- package/bundles/sambath999-localize-token.umd.js.map +1 -1
- package/esm2015/localize-logindlg/localize-logindlg.module.js +1 -1
- package/esm2015/localize-logindlg/localize-logindlg.service.js +1 -1
- package/esm2015/localize-token/helpers/interfaces.js +1 -1
- package/esm2015/localize-token/helpers/loccalize.api.helper.js +25 -4
- package/esm2015/localize-token/localize.api.service.js +4 -3
- package/fesm2015/sambath999-localize-token.js +27 -5
- package/fesm2015/sambath999-localize-token.js.map +1 -1
- package/localize-token/helpers/interfaces.d.ts +1 -0
- package/localize-token/helpers/loccalize.api.helper.d.ts +1 -1
- package/package.json +1 -1
|
@@ -25,4 +25,4 @@ LocalizeLogindlgModule.decorators = [
|
|
|
25
25
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
26
26
|
},] }
|
|
27
27
|
];
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUtbG9naW5kbGcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xvY2FsaXplLWxvZ2luZGxnL2xvY2FsaXplLWxvZ2luZGxnLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQWdCdEUsTUFBTSxPQUFPLHNCQUFzQjs7O1lBZGxDLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDekMsT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUM7Z0JBQ3BDLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFdBQVc7b0JBQ1gsZUFBZTtvQkFDZixhQUFhO29CQUNiLFdBQVc7b0JBQ1gsWUFBWTtpQkFDYjtnQkFDRCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztnQkFDcEMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7YUFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgTG9jYWxpemVMb2dpbmRsZ0NvbXBvbmVudCB9IGZyb20gXCIuL2xvY2FsaXplLWxvZ2luZGxnLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBUb2FzdE1vZHVsZSB9IGZyb20gXCJwcmltZW5nL3RvYXN0XCI7XHJcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gXCJwcmltZW5nL2lucHV0dGV4dFwiO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tIFwicHJpbWVuZy9idXR0b25cIjtcclxuaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTG9jYWxpemVMb2dpbmRsZ1NlcnZpY2UgfSBmcm9tIFwiLi9sb2NhbGl6ZS1sb2dpbmRsZy5zZXJ2aWNlXCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0xvY2FsaXplTG9naW5kbGdDb21wb25lbnRdLFxyXG4gIGV4cG9ydHM6IFtMb2NhbGl6ZUxvZ2luZGxnQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUb2FzdE1vZHVsZSxcclxuICAgIElucHV0VGV4dE1vZHVsZSxcclxuICAgIEJyb3dzZXJNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW0xvY2FsaXplTG9naW5kbGdTZXJ2aWNlXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGl6ZUxvZ2luZGxnTW9kdWxlIHsgfVxyXG4iXX0=
|
|
@@ -61,4 +61,4 @@ LocalizeLogindlgService.decorators = [
|
|
|
61
61
|
LocalizeLogindlgService.ctorParameters = () => [
|
|
62
62
|
{ type: Injector }
|
|
63
63
|
];
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUtbG9naW5kbGcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2NhbGl6ZS1sb2dpbmRsZy9sb2NhbGl6ZS1sb2dpbmRsZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUF1QixNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQXdEMUUsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxZQUE2QixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQUksQ0FBQztJQUU5QyxlQUFlLENBQUMsV0FBK0IsRUFBRSxNQUE0Qjs7WUFFakYsTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRTdCLE1BQU0sQ0FBQyxJQUFJLG1DQUFRLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsR0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFFLENBQUM7WUFFN0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdkQsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUVyRSxNQUFNLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDbEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzdCLElBQUksR0FBRyxFQUFFO29CQUNQLE9BQU8sRUFBRSxDQUFDO2lCQUNYO1lBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNSLENBQUM7S0FBQTtJQUVPLG9CQUFvQixDQUFDLE1BQTRCO1FBQ3ZELE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxJQUFOLE1BQU0sR0FBSztZQUNULE1BQU0sRUFBRSxPQUFPO1lBQ2YsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7WUFDakUsS0FBSyxFQUFFLElBQUk7WUFDWCxRQUFRLEVBQUUsS0FBSztZQUNmLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLEVBQUE7UUFFRCxNQUFNLG1DQUNELE1BQU0sR0FBSztZQUNaLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRTtTQUM1RCxDQUNGLENBQUE7UUFDRCxNQUFNLENBQUMsS0FBSyxtQ0FBUSxNQUFNLENBQUMsS0FBSyxHQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxDQUFFLENBQUM7UUFDbkUsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUdPLFVBQVUsQ0FBQyxXQUErQjs7UUFDaEQsV0FBVyxhQUFYLFdBQVcsY0FBWCxXQUFXLElBQVgsV0FBVyxHQUFLLEVBQUUsRUFBQTtRQUNsQixNQUFBLFdBQVcsQ0FBQyxVQUFVLG9DQUF0QixXQUFXLENBQUMsVUFBVSxHQUFLO1lBQ3pCLEtBQUssRUFBRSwrREFBK0Q7WUFDdEUsbUJBQW1CLEVBQUUsa0NBQWtDO1lBQ3ZELFNBQVMsRUFBRSwrQkFBK0I7WUFDMUMsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRTtZQUNyQyxRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFO1lBQ3JDLFdBQVcsRUFBRSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUU7WUFDckMsWUFBWSxFQUFFO2dCQUNaLE9BQU8sRUFBRSx3Q0FBd0M7Z0JBQ2pELFdBQVcsRUFBRSxRQUFRO2FBQ3RCO1NBQ0YsRUFBQTtJQUNILENBQUM7Ozs7WUExREYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUF6RG9CLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBEeW5hbWljRGlhbG9nQ29uZmlnIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgTG9jYWxpemVMb2dpbmRsZ0NvbXBvbmVudCB9IGZyb20gJy4vbG9jYWxpemUtbG9naW5kbGcuY29tcG9uZW50JztcclxuZXhwb3J0IGludGVyZmFjZSBJTG9naW5EaWFsb2dQbGFjZUhvbGRlciB7XHJcbiAgLyoqXHJcbiAgICogTWVzc2FnZSB0byBkaXNwbGF5IGluIHRoZSBpbnB1dCBmaWVsZCwgdHlwaWNhbGx5IHVzZWQgZm9yIGVycm9yIG1lc3NhZ2VzIG9yIGhpbnRzLlxyXG4gICAqIFRoaXMgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgYWRkaXRpb25hbCBjb250ZXh0IG9yIGluc3RydWN0aW9ucyB0byB0aGUgdXNlci5cclxuICAgKi9cclxuICBtZXNzYWdlPzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIFBsYWNlaG9sZGVyIG9yIGxhYmVsIHRleHQgZm9yIHRoZSBpbnB1dCBmaWVsZFxyXG4gICAqL1xyXG4gIHBsYWNlSG9sZGVyPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMb2dpbkRpYWxvZ1Byb3BlcnRpZXMge1xyXG4gIC8qKlxyXG4gICAqIFRpdGxlIG9mIHRoZSBsb2dpbiBkaWFsb2dcclxuICAgKi9cclxuICB0aXRsZT86IHN0cmluZztcclxuICBsb2dpblN1Y2Nlc3NNZXNzYWdlPzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIExvZ29nIGltYWdlIHBhdGggb3IgVVJMIHRvIGRpc3BsYXkgaW4gdGhlIGxvZ2luIGRpYWxvZ1xyXG4gICAqIElmIG5vdCBwcm92aWRlZCwgdGhlIFwiL2Fzc2V0cy9pbWFnZXMvbG9nby0zMDBweC5wbmdcIiBpbWFnZSB3aWxsIGJlIHVzZWQuXHJcbiAgICovXHJcbiAgbG9nb0ltYWdlPzogc3RyaW5nO1xyXG4gIHVzZXJuYW1lPzogSUxvZ2luRGlhbG9nUGxhY2VIb2xkZXI7XHJcbiAgcGFzc3dvcmQ/OiBJTG9naW5EaWFsb2dQbGFjZUhvbGRlcjtcclxuICBsb2dpbkJ1dHRvbj86IElMb2dpbkRpYWxvZ1BsYWNlSG9sZGVyO1xyXG4gIGxvZ291dEJ1dHRvbj86IElMb2dpbkRpYWxvZ1BsYWNlSG9sZGVyO1xyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIHRvIHZhbGlkYXRlIHRoZSBwYXNzd29yZC5cclxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IHZhbGlkYXRpb24gY2hlY2tzIGlmIHRoZSBwYXNzd29yZCBpcyBiZXR3ZWVuIDYgYW5kIDUwIGNoYXJhY3RlcnMgbG9uZy5cclxuICAgKiBAcGFyYW0gcGFzc3dvcmRcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHBhc3N3b3JkVmFsaWRhdG9yPzogKHBhc3N3b3JkOiBzdHJpbmcpID0+IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxvZ2luRGlhbG9nQ29uZmlnIHtcclxuICBsb2dpblVybD86IHN0cmluZztcclxuICBsb2dvdXRVcmw/OiBzdHJpbmc7XHJcbiAgbG9naW5GdW5jdGlvbj86ICh1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBoZWFkZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkgPT4gUHJvbWlzZTxhbnk+O1xyXG4gIGxvZ291dEZ1bmM/OiAoKSA9PiB2b2lkO1xyXG4gIC8qKlxyXG4gICAqIENvb2tpZSBleHBpcmF0aW9uIGRhdGUgaW4gZGF5cyBmcm9tIG5vdy4gSWYgbm90IHByb3ZpZGVkIHRoZSBjb29raWUgaXMgYSBzZXNzaW9uIGNvb2tpZVxyXG4gICAqL1xyXG4gIGV4cGlyZT86IG51bWJlcjtcclxuICAvKipcclxuICAgKiBDb25maWd1cmF0aW9uIGZvciB0aGUgbG9naW4gZGlhbG9nLlxyXG4gICAqIFRoaXMgaW50ZXJmYWNlIGRlZmluZXMgdGhlIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBjdXN0b21pemUgdGhlIGxvZ2luIGRpYWxvZydzIGJlaGF2aW9yIGFuZCBhcHBlYXJhbmNlXHJcbiAgICovXHJcbiAgcHJvcGVydGllcz86IElMb2dpbkRpYWxvZ1Byb3BlcnRpZXM7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsaXplTG9naW5kbGdTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IpIHsgfVxyXG5cclxuICBhc3luYyBvcGVuTG9naW5EaWFsb2cobG9naW5Db25maWc6IElMb2dpbkRpYWxvZ0NvbmZpZywgY29uZmlnPzogRHluYW1pY0RpYWxvZ0NvbmZpZykge1xyXG5cclxuICAgIGNvbmZpZyA9IHRoaXMuaW50ZXJjZXBEaWFsb2dDb25maWcoY29uZmlnKTtcclxuICAgIHRoaXMuaW5pdENvbmZpZyhsb2dpbkNvbmZpZyk7XHJcblxyXG4gICAgY29uZmlnLmRhdGEgPSB7IC4uLihjb25maWcuZGF0YSB8fCB7fSksIC4uLnsgbG9naW5Db25maWcgfSB9O1xyXG5cclxuICAgIGNvbnN0IGRpYWxvZ1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChEaWFsb2dTZXJ2aWNlKTtcclxuICAgIGNvbnN0IGRpYWxvZyA9IGRpYWxvZ1NlcnZpY2Uub3BlbihMb2NhbGl6ZUxvZ2luZGxnQ29tcG9uZW50LCBjb25maWcpO1xyXG5cclxuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PlxyXG4gICAgICBkaWFsb2cub25DbG9zZS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGludGVyY2VwRGlhbG9nQ29uZmlnKGNvbmZpZz86IER5bmFtaWNEaWFsb2dDb25maWcpIHtcclxuICAgIGNvbmZpZyA/Pz0ge1xyXG4gICAgICBoZWFkZXI6ICdMb2dpbicsXHJcbiAgICAgIHN0eWxlOiB7ICdtYXgtd2lkdGgnOiAnNDAwcHgnLCB3aWR0aDogJzEwMCUnLCAnaGVpZ2h0JzogJzY1MHB4JyB9LFxyXG4gICAgICBtb2RhbDogdHJ1ZSxcclxuICAgICAgY2xvc2FibGU6IGZhbHNlLFxyXG4gICAgICBzaG93SGVhZGVyOiBmYWxzZSxcclxuICAgIH1cclxuXHJcbiAgICBjb25maWcgPSB7XHJcbiAgICAgIC4uLmNvbmZpZywgLi4ue1xyXG4gICAgICAgIGNvbnRlbnRTdHlsZTogeyAnaGVpZ2h0JzogJzEwMCUnLCAnYm9yZGVyLXJhZGl1cyc6ICcyMHB4JyB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbmZpZy5zdHlsZSA9IHsgLi4uY29uZmlnLnN0eWxlLCAuLi57ICdib3JkZXItcmFkaXVzJzogJzIwcHgnIH0gfTtcclxuICAgIHJldHVybiBjb25maWc7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBpbml0Q29uZmlnKGxvZ2luQ29uZmlnOiBJTG9naW5EaWFsb2dDb25maWcpIHtcclxuICAgIGxvZ2luQ29uZmlnID8/PSB7fVxyXG4gICAgbG9naW5Db25maWcucHJvcGVydGllcyA/Pz0ge1xyXG4gICAgICB0aXRsZTogJ1lvdXIgc2Vzc2lvbiBpcyBleHBpcmVkITxici8+IFBsZWFzZSBsb2dpbiBhZ2FpbiB0byBjb250aW51ZS4nLFxyXG4gICAgICBsb2dpblN1Y2Nlc3NNZXNzYWdlOiAnWW91IGhhdmUgc3VjY2Vzc2Z1bGx5IGxvZ2dlZCBpbi4nLFxyXG4gICAgICBsb2dvSW1hZ2U6ICcvYXNzZXRzL2ltYWdlcy9sb2dvLTMwMHB4LnBuZycsXHJcbiAgICAgIHVzZXJuYW1lOiB7IHBsYWNlSG9sZGVyOiAnVXNlcm5hbWUnIH0sXHJcbiAgICAgIHBhc3N3b3JkOiB7IHBsYWNlSG9sZGVyOiAnUGFzc3dvcmQnIH0sXHJcbiAgICAgIGxvZ2luQnV0dG9uOiB7IHBsYWNlSG9sZGVyOiAnTG9naW4nIH0sXHJcbiAgICAgIGxvZ291dEJ1dHRvbjoge1xyXG4gICAgICAgIG1lc3NhZ2U6ICdObywgSSB3YW50IHRvIGxvZ2luIHdpdGggYW5vdGhlciB1c2VyLicsXHJcbiAgICAgICAgcGxhY2VIb2xkZXI6ICdMb2dvdXQnXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -16,4 +16,4 @@ export var EMethod;
|
|
|
16
16
|
// details?: any;
|
|
17
17
|
// status: number;
|
|
18
18
|
// }
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9sb2NhbGl6ZS10b2tlbi9oZWxwZXJzL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxPQU1YO0FBTkQsV0FBWSxPQUFPO0lBQ2Ysd0JBQWEsQ0FBQTtJQUNiLHNCQUFXLENBQUE7SUFDWCxzQkFBVyxDQUFBO0lBQ1gsNEJBQWlCLENBQUE7SUFDakIsMEJBQWUsQ0FBQTtBQUNuQixDQUFDLEVBTlcsT0FBTyxLQUFQLE9BQU8sUUFNbEI7QUF5RkQsc0NBQXNDO0FBQ3RDLGtCQUFrQjtBQUNsQixvQkFBb0I7QUFDcEIsdUJBQXVCO0FBQ3ZCLHFCQUFxQjtBQUNyQixzQkFBc0I7QUFDdEIsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcblxyXG4vKipcclxuICogSHR0cCBtZXRob2Qgb3B0aW9uc1xyXG4gKi9cclxuZXhwb3J0IGVudW0gRU1ldGhvZCB7XHJcbiAgICBQT1NUID0gJ3Bvc3QnLFxyXG4gICAgR0VUID0gJ2dldCcsXHJcbiAgICBQVVQgPSAncHV0JyxcclxuICAgIERFTEVURSA9ICdkZWxldGUnLFxyXG4gICAgUEFUQ0ggPSAncGF0Y2gnLFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPbkNvbm5lY3Rpb25FcnJvciB7XHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgd2hlbiBhIGNvbm5lY3Rpb24gZXJyb3Igb2NjdXJzLlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgUHJvbWlzZSBvciBhbnkgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIGNhbGxiYWNrPzogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gUHJvbWlzZTx2b2lkPiB8IGFueTtcclxuICAgIC8qKlxyXG4gICAgICogSWYgdHJ1ZSwgdGhlIHJlcXVlc3Qgd2lsbCBibG9jayB0aGUgc2NyZWVuIHdpdGggb3ZlcmxheSBvbiBjb25uZWN0aW9uIGVycm9ycy5cclxuICAgICAqIERlZmF1bHQgaXMgZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIGJsb2NrU2NyZWVuPzogYm9vbGVhbjtcclxuXHJcbiAgICAvKiogT3B0aW9uYWwgei1pbmRleCBmb3IgdGhlIGJsb2NrIHNjcmVlbiBvdmVybGF5LlxyXG4gICAgICogRGVmYXVsdCBpcyAxMDAwMC5cclxuICAgICAqL1xyXG4gICAgYmxvY2tTY3JlZW5aSW5kZXg/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcHRpb25hbCBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiBhIGNvbm5lY3Rpb24gZXJyb3Igb2NjdXJzLlxyXG4gICAgICovXHJcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xyXG4gICAgc3VnZ2VzdGlvbk1lc3NhZ2U/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJUmV0cnlPcHRpb25zIHtcclxuXHJcbiAgICAvKipcclxuICAgICAgICogTWF4aW11bSBudW1iZXIgb2YgcmV0cmllcyBmb3IgYSBmYWlsZWQgcmVxdWVzdC5cclxuICAgICAgICogRGVmYXVsdCBpcyAxMDAuXHJcbiAgICAgICAqL1xyXG4gICAgbWF4UmV0cmllcz86IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlbGF5IGluIG1pbGxpc2Vjb25kcyBiZWZvcmUgcmV0cnlpbmcgYSBmYWlsZWQgcmVxdWVzdC5cclxuICAgICAqIERlZmF1bHQgaXMgNTAwbXMuXHJcbiAgICAgKi9cclxuICAgIGRlbGF5PzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGEgcmVxdWVzdCBzaG91bGQgYmUgcmV0cmllZCBiYXNlZCBvbiB0aGUgZXJyb3IuXHJcbiAgICAgKiBJZiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IGZ1bmN0aW9uIHdpbGwgcmV0cnkgZm9yIG5ldHdvcmsgZXJyb3JzIGFuZCBzZXJ2ZXIgZXJyb3JzIChzdGF0dXMgNTAwLTU5OSkuXHJcbiAgICAgKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3Igb2JqZWN0IGZyb20gdGhlIGZhaWxlZCByZXF1ZXN0LlxyXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgcmVxdWVzdCBzaG91bGQgYmUgcmV0cmllZCwgZmFsc2Ugb3RoZXJ3aXNlLlxyXG4gICAgICovXHJcbiAgICByZXRyeUZ1bmN0aW9uPzogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gUHJvbWlzZTxib29sZWFuPiB8IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bmN0aW9uIHRvIGV4ZWN1dGUgd2hlbiBhIGNvbm5lY3Rpb24gZXJyb3Igb2NjdXJzLlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgUHJvbWlzZSBvciBhbnkgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIG9uQ29ubmVjdGlvbkVycm9yPzogSU9uQ29ubmVjdGlvbkVycm9yO1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTG9jYWxpemVBcGlDb25maWdzIHtcclxuICAgIG9uUHJlcGFyZVJlcXVlc3Q/OiAoKSA9PiBQcm9taXNlPHZvaWQ+
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9sb2NhbGl6ZS10b2tlbi9oZWxwZXJzL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxPQU1YO0FBTkQsV0FBWSxPQUFPO0lBQ2Ysd0JBQWEsQ0FBQTtJQUNiLHNCQUFXLENBQUE7SUFDWCxzQkFBVyxDQUFBO0lBQ1gsNEJBQWlCLENBQUE7SUFDakIsMEJBQWUsQ0FBQTtBQUNuQixDQUFDLEVBTlcsT0FBTyxLQUFQLE9BQU8sUUFNbEI7QUF5RkQsc0NBQXNDO0FBQ3RDLGtCQUFrQjtBQUNsQixvQkFBb0I7QUFDcEIsdUJBQXVCO0FBQ3ZCLHFCQUFxQjtBQUNyQixzQkFBc0I7QUFDdEIsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcblxyXG4vKipcclxuICogSHR0cCBtZXRob2Qgb3B0aW9uc1xyXG4gKi9cclxuZXhwb3J0IGVudW0gRU1ldGhvZCB7XHJcbiAgICBQT1NUID0gJ3Bvc3QnLFxyXG4gICAgR0VUID0gJ2dldCcsXHJcbiAgICBQVVQgPSAncHV0JyxcclxuICAgIERFTEVURSA9ICdkZWxldGUnLFxyXG4gICAgUEFUQ0ggPSAncGF0Y2gnLFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPbkNvbm5lY3Rpb25FcnJvciB7XHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgd2hlbiBhIGNvbm5lY3Rpb24gZXJyb3Igb2NjdXJzLlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgUHJvbWlzZSBvciBhbnkgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIGNhbGxiYWNrPzogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gUHJvbWlzZTx2b2lkPiB8IGFueTtcclxuICAgIC8qKlxyXG4gICAgICogSWYgdHJ1ZSwgdGhlIHJlcXVlc3Qgd2lsbCBibG9jayB0aGUgc2NyZWVuIHdpdGggb3ZlcmxheSBvbiBjb25uZWN0aW9uIGVycm9ycy5cclxuICAgICAqIERlZmF1bHQgaXMgZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIGJsb2NrU2NyZWVuPzogYm9vbGVhbjtcclxuXHJcbiAgICAvKiogT3B0aW9uYWwgei1pbmRleCBmb3IgdGhlIGJsb2NrIHNjcmVlbiBvdmVybGF5LlxyXG4gICAgICogRGVmYXVsdCBpcyAxMDAwMC5cclxuICAgICAqL1xyXG4gICAgYmxvY2tTY3JlZW5aSW5kZXg/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcHRpb25hbCBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiBhIGNvbm5lY3Rpb24gZXJyb3Igb2NjdXJzLlxyXG4gICAgICovXHJcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xyXG4gICAgc3VnZ2VzdGlvbk1lc3NhZ2U/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJUmV0cnlPcHRpb25zIHtcclxuXHJcbiAgICAvKipcclxuICAgICAgICogTWF4aW11bSBudW1iZXIgb2YgcmV0cmllcyBmb3IgYSBmYWlsZWQgcmVxdWVzdC5cclxuICAgICAgICogRGVmYXVsdCBpcyAxMDAuXHJcbiAgICAgICAqL1xyXG4gICAgbWF4UmV0cmllcz86IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlbGF5IGluIG1pbGxpc2Vjb25kcyBiZWZvcmUgcmV0cnlpbmcgYSBmYWlsZWQgcmVxdWVzdC5cclxuICAgICAqIERlZmF1bHQgaXMgNTAwbXMuXHJcbiAgICAgKi9cclxuICAgIGRlbGF5PzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGEgcmVxdWVzdCBzaG91bGQgYmUgcmV0cmllZCBiYXNlZCBvbiB0aGUgZXJyb3IuXHJcbiAgICAgKiBJZiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IGZ1bmN0aW9uIHdpbGwgcmV0cnkgZm9yIG5ldHdvcmsgZXJyb3JzIGFuZCBzZXJ2ZXIgZXJyb3JzIChzdGF0dXMgNTAwLTU5OSkuXHJcbiAgICAgKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3Igb2JqZWN0IGZyb20gdGhlIGZhaWxlZCByZXF1ZXN0LlxyXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgcmVxdWVzdCBzaG91bGQgYmUgcmV0cmllZCwgZmFsc2Ugb3RoZXJ3aXNlLlxyXG4gICAgICovXHJcbiAgICByZXRyeUZ1bmN0aW9uPzogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gUHJvbWlzZTxib29sZWFuPiB8IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bmN0aW9uIHRvIGV4ZWN1dGUgd2hlbiBhIGNvbm5lY3Rpb24gZXJyb3Igb2NjdXJzLlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgUHJvbWlzZSBvciBhbnkgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIG9uQ29ubmVjdGlvbkVycm9yPzogSU9uQ29ubmVjdGlvbkVycm9yO1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTG9jYWxpemVBcGlDb25maWdzIHtcclxuICAgIG9uUHJlcGFyZVJlcXVlc3Q/OiAoKSA9PiBQcm9taXNlPHZvaWQ+IHwgYW55O1xyXG4gICAgb25BdXRvTG9nb3V0PzogKCkgPT4gUHJvbWlzZTx2b2lkPiB8IGFueTtcclxuICAgIG9uUmV2b2tlVW5hdXRob3JpemVkPzogKCkgPT4gUHJvbWlzZTx2b2lkPiB8IGFueTtcclxuICAgIG9uUmVzcG9uc2VCb2R5SW52YWxpZD86IChib2R5OiBhbnkpID0+IHZvaWQ7XHJcbiAgICB3YWl0RWFjaFJlcXVlc3Q/OiB7XHJcbiAgICAgICAgbWlsbGlzZWNvbmRzOiBudW1iZXI7XHJcbiAgICB9O1xyXG4gICAgZW5hYmxlUmVxdWVzdENhbmNlbGxhdGlvbj86IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25maWcgZm9yIHJldHJ5aW5nIGZhaWxlZCByZXF1ZXN0cy5cclxuICAgICAqIElmIG5vdCBwcm92aWRlZCwgdGhlIGRlZmF1bHQgcmV0cnkgb3B0aW9ucyB3aWxsIGJlIHVzZWQuXHJcbiAgICAgKi9cclxuICAgIHJldHJ5T3B0aW9ucz86IElSZXRyeU9wdGlvbnM7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFwaU9wdGlvbnMge1xyXG4gICAgaGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XHJcbiAgICBtZXRob2Q6IEVNZXRob2Q7XHJcbiAgICByZXF1ZXN0VXJsOiBzdHJpbmc7XHJcbiAgICByZXF1ZXN0Qm9keT86IGFueTtcclxuICAgIGlzRm9ybURhdGE/OiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBJZiB0cnVlLCB0aGUgcmVxdWVzdCB3aWxsIHVzZSB0aGUgcmVmcmVzaCB0b2tlbiBmb3IgYXV0aG9yaXphdGlvbi5cclxuICAgICAqL1xyXG4gICAgcmVmcmVzaFRva2VuPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSGVhZGVyIHtcclxuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcclxufVxyXG5cclxuLy8gZXhwb3J0IGludGVyZmFjZSBJTm9ybWFsaXplZEVycm9yIHtcclxuLy8gICAgIGVycm9yOiBhbnk7XHJcbi8vICAgICBjb2RlOiBzdHJpbmc7XHJcbi8vICAgICBtZXNzYWdlOiBzdHJpbmc7XHJcbi8vICAgICBkZXRhaWxzPzogYW55O1xyXG4vLyAgICAgc3RhdHVzOiBudW1iZXI7XHJcbi8vIH1cclxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
|
-
import { takeUntil, catchError, throwError } from "rxjs";
|
|
2
|
+
import { takeUntil, catchError, throwError, map } from "rxjs";
|
|
3
3
|
import { waitFor } from "../localize.token";
|
|
4
4
|
import { LOCALIZE_API_ASSETS } from "./localize.api.assets";
|
|
5
5
|
class LocalizeApiHelper {
|
|
@@ -80,8 +80,8 @@ class LocalizeApiHelper {
|
|
|
80
80
|
}
|
|
81
81
|
});
|
|
82
82
|
}
|
|
83
|
-
createRequest(instance, method, url, body, options) {
|
|
84
|
-
const request$ = instance.client.request(method, url, Object.assign(Object.assign({}, options), { body
|
|
83
|
+
createRequest(instance, method, url, body, options, onInvalidResponseBody) {
|
|
84
|
+
const request$ = instance.client.request(method, url, Object.assign(Object.assign({}, options), { body })).pipe(takeUntil(instance.destroy$()), map((body) => extractJsonFromResponse(body, onInvalidResponseBody)), catchError((error) => {
|
|
85
85
|
// Convert to a non-observable error to handle in the promise
|
|
86
86
|
return throwError(() => error);
|
|
87
87
|
}));
|
|
@@ -242,5 +242,26 @@ class LocalizeApiHelper {
|
|
|
242
242
|
styleElement === null || styleElement === void 0 ? void 0 : styleElement.remove();
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
|
+
function extractJsonFromResponse(body, onError) {
|
|
246
|
+
// If already an object, just return
|
|
247
|
+
if (typeof body === 'object' && body !== null)
|
|
248
|
+
return body;
|
|
249
|
+
// If it's a string, try to extract JSON portion
|
|
250
|
+
if (typeof body === 'string') {
|
|
251
|
+
const firstBrace = body.indexOf('{');
|
|
252
|
+
if (firstBrace !== -1) {
|
|
253
|
+
const jsonString = body.substring(firstBrace);
|
|
254
|
+
try {
|
|
255
|
+
return JSON.parse(jsonString);
|
|
256
|
+
}
|
|
257
|
+
catch (e) {
|
|
258
|
+
// If parsing fails, return original string
|
|
259
|
+
onError === null || onError === void 0 ? void 0 : onError(body);
|
|
260
|
+
return body;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return body;
|
|
265
|
+
}
|
|
245
266
|
export const ApiHelper = new LocalizeApiHelper();
|
|
246
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jY2FsaXplLmFwaS5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbG9jYWxpemUtdG9rZW4vaGVscGVycy9sb2NjYWxpemUuYXBpLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFXLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWdCNUQsTUFBTSxpQkFBaUI7SUFBdkI7UUFFYSx3QkFBbUIsR0FBMkI7WUFDbkQsZUFBZSxFQUFFO2dCQUNiLE9BQU8sRUFBRSx3Q0FBd0M7Z0JBQ2pELFdBQVcsRUFBRSxJQUFJO2dCQUNqQixpQkFBaUIsRUFBRSxLQUFLO2FBQzNCO1NBQ0osQ0FBQztJQW1STixDQUFDO0lBalJTLFlBQVksQ0FBVSxPQUFzQjs7WUFDOUMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLElBQUksU0FBYyxDQUFDO1lBQ25CLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztZQUVyQixvREFBb0Q7WUFDcEQsT0FBTyxtQ0FBUSxJQUFJLENBQUMsbUJBQW1CLEdBQUssT0FBTyxDQUFFLENBQUE7WUFFckQsSUFBSSxZQUEwQyxDQUFDO1lBRS9DLE9BQU8sUUFBUSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRTtnQkFDcEMsSUFBSTtvQkFDQSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDakMsT0FBTyxNQUFNLENBQUM7aUJBRWpCO2dCQUFDLE9BQU8sS0FBVSxFQUFFO29CQUNqQixTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUVsQixJQUFJ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LENBQUM7UUFFRixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXJELElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQ3pDLFlBQVksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUMvQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQzthQUNyRDtTQUNKO2FBQU07WUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3BDO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxZQUEwQztRQUM1RCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLEVBQUUsQ0FBQztRQUNsQixZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUUsTUFBTSxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUNKO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJQXBpT3B0aW9ucywgSUxvY2FsaXplQXBpQ29uZmlncywgSU9uQ29ubmVjdGlvbkVycm9yIH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIGNhdGNoRXJyb3IsIHRocm93RXJyb3IsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB3YWl0Rm9yIH0gZnJvbSBcIi4uL2xvY2FsaXplLnRva2VuXCI7XHJcbmltcG9ydCB7IExPQ0FMSVpFX0FQSV9BU1NFVFMgfSBmcm9tIFwiLi9sb2NhbGl6ZS5hcGkuYXNzZXRzXCI7XHJcblxyXG5pbnRlcmZhY2UgSVJlcXVlc3RJbnN0YW5jZSB7XHJcbiAgICBjbGllbnQ6IEh0dHBDbGllbnQ7XHJcbiAgICBkZXN0cm95JDogKCkgPT4gU3ViamVjdDx2b2lkPjtcclxufVxyXG5cclxuaW50ZXJmYWNlIElSZXRyeU9wdGlvbnMge1xyXG4gICAgbWF4UmV0cmllczogKCkgPT4gbnVtYmVyO1xyXG4gICAgZGVsYXk6IG51bWJlcjtcclxuICAgIGNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPGFueT4gfCBhbnk7XHJcbiAgICByZXRyeVVubGVzcz86IChlcnJvcjogYW55KSA9PiBib29sZWFuO1xyXG4gICAgb25FcnJvcj86IChlcnJvcjogYW55KSA9PiBQcm9taXNlPHZvaWQ+IHwgYW55O1xyXG4gICAgY29ubmVjdGlvbkVycm9yPzogSU9uQ29ubmVjdGlvbkVycm9yXHJcbn1cclxuXHJcbmNsYXNzIExvY2FsaXplQXBpSGVscGVyIHtcclxuXHJcbiAgICByZWFkb25seSBkZWZhdWx0UmV0cnlPcHRpb25zOiBQYXJ0aWFsPElSZXRyeU9wdGlvbnM+ID0ge1xyXG4gICAgICAgIGNvbm5lY3Rpb25FcnJvcjoge1xyXG4gICAgICAgICAgICBtZXNzYWdlOiAnQ29ubmVjdGlvbiBlcnJvciBvY2N1cnJlZC4gUGxlYXNlIHdhaXQnLFxyXG4gICAgICAgICAgICBibG9ja1NjcmVlbjogdHJ1ZSxcclxuICAgICAgICAgICAgYmxvY2tTY3JlZW5aSW5kZXg6IDEwMDAwXHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBhc3luYyBwZXJmb3JtUmV0cnk8VCA9IGFueT4ob3B0aW9uczogSVJldHJ5T3B0aW9ucyk6IFByb21pc2U8VD4ge1xyXG4gICAgICAgIGxldCBhdHRlbXB0cyA9IDA7XHJcbiAgICAgICAgbGV0IGxhc3RFcnJvcjogYW55O1xyXG4gICAgICAgIGxldCBjb25zb2xlQ291bnQgPSAwO1xyXG5cclxuICAgICAgICAvLyBNZXJnZSBkZWZhdWx0IHJldHJ5IG9wdGlvbnMgd2l0aCBwcm92aWRlZCBvcHRpb25zXHJcbiAgICAgICAgb3B0aW9ucyA9IHsgLi4udGhpcy5kZWZhdWx0UmV0cnlPcHRpb25zLCAuLi5vcHRpb25zIH1cclxuXHJcbiAgICAgICAgbGV0IHN0eWxlRWxlbWVudDogSFRNTFN0eWxlRWxlbWVudCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgd2hpbGUgKGF0dGVtcHRzIDwgb3B0aW9ucy5tYXhSZXRyaWVzKCkpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG9wdGlvbnMuY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlQmxvY2tlcihzdHlsZUVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuXHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgIGxhc3RFcnJvciA9IGVycm9yO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChjb25zb2xlQ291bnQgPj0gNykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuY2xlYXIoKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlQ291bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnJldHJ5VW5sZXNzICYmICFvcHRpb25zLnJldHJ5VW5sZXNzKGVycm9yKSlcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjsgLy8gSWYgdGhlIGVycm9yIHNob3VsZCBub3QgYmUgcmV0cmllZCwgcmV0aHJvdyBpdFxyXG5cclxuICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBjb25uZWN0aW9uIGVycm9yXHJcbiAgICAgICAgICAgICAgICBzdHlsZUVsZW1lbnQgPSBhd2FpdCB0aGlzLm9uQ29ubmVjdGlvbkVycm9yKG9wdGlvbnMsIGVycm9yKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5vbkVycm9yKVxyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaW52b2tlSG9vayhvcHRpb25zLm9uRXJyb3IuYmluZCh0aGlzLCBlcnJvcikpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChhdHRlbXB0cyA+PSBvcHRpb25zLm1heFJldHJpZXMoKSAtIDEpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XHJcblxyXG4gICAgICAgICAgICAgICAgYXR0ZW1wdHMrKztcclxuICAgICAgICAgICAgICAgIGNvbnNvbGVDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBBdHRlbXB0ICR7YXR0ZW1wdHN9IGZhaWxlZC4gUmV0cnlpbmcuLi5gLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKG9wdGlvbnMuZGVsYXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zb2xlLndhcm4oYEZhaWxlZCBhZnRlciAke29wdGlvbnMubWF4UmV0cmllc30gYXR0ZW1wdHNgKTtcclxuICAgICAgICB0aHJvdyBsYXN0RXJyb3I7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcGVyZm9ybVJlcXVlc3RXaXRoUmV0cnk8VCA9IGFueT4oXHJcbiAgICAgICAgb3B0aW9uczogSUFwaU9wdGlvbnMsXHJcbiAgICAgICAgY29uZmlnOiBJTG9jYWxpemVBcGlDb25maWdzLFxyXG4gICAgICAgIHBlcmZvcm1SZXF1ZXN0OiA8VCA9IGFueT4ob3B0aW9uczogSUFwaU9wdGlvbnMpID0+IFByb21pc2U8VD5cclxuICAgICk6IFByb21pc2U8VD4ge1xyXG5cclxuICAgICAgICBjb25zdCByZXRyeVVubGVzcyA9IGNvbmZpZy5yZXRyeU9wdGlvbnM/LnJldHJ5RnVuY3Rpb25cclxuICAgICAgICAgICAgfHwgdGhpcy5pc0Nvbm5lY3Rpb25FcnJvcjtcclxuXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucGVyZm9ybVJldHJ5KHtcclxuICAgICAgICAgICAgY29ubmVjdGlvbkVycm9yOiBjb25maWcucmV0cnlPcHRpb25zPy5vbkNvbm5lY3Rpb25FcnJvcixcclxuICAgICAgICAgICAgbWF4UmV0cmllczogKCkgPT4gY29uZmlnLnJldHJ5T3B0aW9ucz8ubWF4UmV0cmllcyA/PyAxMDAwLFxyXG4gICAgICAgICAgICBkZWxheTogY29uZmlnLnJldHJ5T3B0aW9ucz8uZGVsYXkgPz8gNTAwLFxyXG4gICAgICAgICAgICBjYWxsYmFjazogKCkgPT4gcGVyZm9ybVJlcXVlc3Q8VD4ob3B0aW9ucyksXHJcbiAgICAgICAgICAgIHJldHJ5VW5sZXNzOiByZXRyeVVubGVzcyxcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkVXJsKGJhc2VVcmw6IHN0cmluZywgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBub3JtYWxpemVkVXJsID0gYCR7YmFzZVVybC50cmltKCkucmVwbGFjZSgvXFwvPyQvLCAnLycpfSR7cGF0aC50cmltKCkucmVwbGFjZSgvXlxcLy8sICcnKX1gO1xyXG4gICAgICAgIHJldHVybiBub3JtYWxpemVkVXJsLmVuZHNXaXRoKCcvJylcclxuICAgICAgICAgICAgPyBub3JtYWxpemVkVXJsLnNsaWNlKDAsIC0xKVxyXG4gICAgICAgICAgICA6IG5vcm1hbGl6ZWRVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW52b2tlSG9vayhjYWxsYmFjaz86ICgpID0+IFByb21pc2U8YW55PiB8IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgaWYgKCFjYWxsYmFjaykgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCByZXN1bHQgPSBjYWxsYmFjaygpO1xyXG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlUmVxdWVzdDxUID0gYW55PihcclxuICAgICAgICBpbnN0YW5jZTogUmVxdWlyZWQ8SVJlcXVlc3RJbnN0YW5jZT4sXHJcbiAgICAgICAgbWV0aG9kOiBzdHJpbmcsXHJcbiAgICAgICAgdXJsOiBzdHJpbmcsXHJcbiAgICAgICAgYm9keTogYW55LFxyXG4gICAgICAgIG9wdGlvbnM6IHsgaGVhZGVyczogSHR0cEhlYWRlcnMgfVxyXG4gICAgKSB7XHJcbiAgICAgICAgY29uc3QgcmVxdWVzdCQgPSBpbnN0YW5jZS5jbGllbnQucmVxdWVzdDxUPihtZXRob2QsIHVybCwge1xyXG4gICAgICAgICAgICAuLi5vcHRpb25zLFxyXG4gICAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgIH0pLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbChpbnN0YW5jZS5kZXN0cm95JCgpKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRvIGEgbm9uLW9ic2VydmFibGUgZXJyb3IgdG8gaGFuZGxlIGluIHRoZSBwcm9taXNlXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlcXVlc3QkO1xyXG4gICAgfVxyXG5cclxuICAgIGRlZmF1bHRSZXRyeUZ1bmN0aW9uKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IGJvb2xlYW4ge1xyXG5cclxuICAgICAgICAvLyBEb24ndCByZXRyeSBmb3Igb3RoZXIgZXJyb3JzIChsaWtlIDQwMCwgNDAxLCA0MDMsIGV0Yy4pXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzQ29ubmVjdGlvbkVycm9yKGVycm9yKSlcclxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlzQ29ubmVjdGlvbkVycm9yKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGlzTmV0d29ya0Vycm9yID0gZXJyb3Iuc3RhdHVzID09PSAwO1xyXG4gICAgICAgIGNvbnN0IGlzU2VydmVyRXJyb3IgPSBlcnJvci5zdGF0dXMgPj0gMTAwMCAmJiBlcnJvci5zdGF0dXMgPCA2MDA7XHJcbiAgICAgICAgcmV0dXJuIGlzTmV0d29ya0Vycm9yIHx8IGlzU2VydmVyRXJyb3I7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25Db25uZWN0aW9uRXJyb3IoXHJcbiAgICAgICAgb3B0aW9uczogSVJldHJ5T3B0aW9ucyxcclxuICAgICAgICBlcnJvcjogYW55XHJcbiAgICApOiBQcm9taXNlPFByb21pc2U8dm9pZD4gfCBhbnk+IHtcclxuXHJcbiAgICAgICAgaWYgKCFvcHRpb25zLmNvbm5lY3Rpb25FcnJvcilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBsZXQgc3R5bGVFbGVtZW50OiBIVE1MU3R5bGVFbGVtZW50IHwgdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICh0aGlzLmlzQ29ubmVjdGlvbkVycm9yKGVycm9yKSkge1xyXG5cclxuICAgICAgICAgICAgc3R5bGVFbGVtZW50ID0gdGhpcy5zY3JlZW5CbG9ja2VyKG9wdGlvbnMsIGVycm9yLCB0cnVlKTtcclxuXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaW52b2tlSG9vayhvcHRpb25zLmNvbm5lY3Rpb25FcnJvci5jYWxsYmFjaz8uYmluZCh0aGlzLCBlcnJvcikpO1xyXG4gICAgICAgICAgICByZXR1cm4gc3R5bGVFbGVtZW50O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2NyZWVuQmxvY2tlcihvcHRpb25zLCBlcnJvciwgZmFsc2UpO1xyXG4gICAgICAgICAgICBzdHlsZUVsZW1lbnQ/LnJlbW92ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzY3JlZW5CbG9ja2VyKG9wdG9uczogSVJldHJ5T3B0aW9ucyxcclxuICAgICAgICBlcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gICAgICAgIGFkZDogYm9vbGVhbiA9IHRydWUpOiBIVE1MU3R5bGVFbGVtZW50IHwgdW5kZWZpbmVkIHtcclxuXHJcbiAgICAgICAgaWYgKCFvcHRvbnMuY29ubmVjdGlvbkVycm9yPy5ibG9ja1NjcmVlbilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gb3B0b25zLmNvbm5lY3Rpb25FcnJvcj8ubWVzc2FnZVxyXG4gICAgICAgICAgICB8fCAnQ29ubmVjdGlvbiBlcnJvciBvY2N1cnJlZC4gUGxlYXNlIHdhaXQnO1xyXG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCAnQW4gZXJyb3Igb2NjdXJyZWQnO1xyXG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpbk1lc3NhZ2UgPSBvcHRvbnMuY29ubmVjdGlvbkVycm9yPy5zdWdnZXN0aW9uTWVzc2FnZVxyXG4gICAgICAgICAgICB8fCAnUGxlYXNlIGNoZWNrIHlvdXIgaW50ZXJuZXQgY29ubmVjdGlvbiBvciB0aGUgc2VydmVyIHN0YXR1cy4nO1xyXG5cclxuICAgICAgICBjb25zdCB6SW5kZXggPSBvcHRvbnMuY29ubmVjdGlvbkVycm9yPy5ibG9ja1NjcmVlblpJbmRleCB8fCAxMDAwMDtcclxuXHJcbiAgICAgICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XHJcbiAgICAgICAgY29uc3QgYmxjb2tlckh0bWwgPSBgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImx6ZS1ibG9ja2VyXCI+XHJcbiAgICAgICAgICAgICR7TE9DQUxJWkVfQVBJX0FTU0VUUy5uZXR3b3JrLm5vQ29ubmVjdGlvbn1cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImx6ZS1ibG9ja2VyX19tZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAke21lc3NhZ2V9XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImx6ZS1ibG9ja2VyX19kb3R0aW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsemUtYmxvY2tlcl9fZG90XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibHplLWJsb2NrZXJfX2RvdFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImx6ZS1ibG9ja2VyX19kb3RcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibHplLWJsb2NrZXJfX2Vycm9yXCI+JHtlcnJvck1lc3NhZ2V9PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsemUtYmxvY2tlcl9fZXJyb3Jfc3VnZ2VzdGlvblwiPiR7c3VnZ2VzdGluTWVzc2FnZX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBgO1xyXG4gICAgICAgIGNvbnN0IHN0eWxlID0gYFxyXG4gICAgICAgIGRpdi5semUtYmxvY2tlciB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuODUpICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIHotaW5kZXg6ICR7ekluZGV4fTtcclxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjtcclxuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN2ZyNsemUtbm8tY29ubmVjdGlvbiB7XHJcbiAgICAgICAgICAgIHdpZHRoOiA3NXB4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDc1cHg7XHJcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGRpdi5semUtYmxvY2tlcl9fbWVzc2FnZSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgLmx6ZS1ibG9ja2VyX19kb3R0aW5nIHtcclxuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzcGFuLmx6ZS1ibG9ja2VyX19kb3Qge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgIHdpZHRoOiA3cHg7XHJcbiAgICAgICAgICAgIGhlaWdodDogN3B4O1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDNweDtcclxuICAgICAgICAgICAgb3BhY2l0eTogMC4zO1xyXG4gICAgICAgICAgICBhbmltYXRpb246IGRvdHRpbmcgMXMgaW5maW5pdGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5semUtYmxvY2tlcl9fZG90Om50aC1jaGlsZCgxKSB7XHJcbiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogMHM7XHJcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5semUtYmxvY2tlcl9fZG90Om50aC1jaGlsZCgyKSB7XHJcbiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4ycztcclxuICAgICAgICB9XHJcbiAgICAgICAgLmx6ZS1ibG9ja2VyX19kb3Q6bnRoLWNoaWxkKDMpIHtcclxuICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjRzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGtleWZyYW1lcyBkb3R0aW5nIHtcclxuICAgICAgICAgICAgMCUsIDgwJSwgMTAwJSB7IG9wYWNpdHk6IDAuMzsgfVxyXG4gICAgICAgICAgICA0MCUgeyBvcGFjaXR5OiAxOyB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkaXYubHplLWJsb2NrZXJfX2Vycm9yIHtcclxuICAgICAgICAgICAgY29sb3I6ICNmMDA7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gICAgICAgICAgICB0ZXh0LXNoYWRvdzogMCAwIDFweCAjZmY1ZjVmICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkaXYubHplLWJsb2NrZXJfX2Vycm9yX3N1Z2dlc3Rpb24ge1xyXG4gICAgICAgICAgICBjb2xvcjogI2NjYyAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcclxuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgQGtleWZyYW1lcyBzcGluIHtcclxuICAgICAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxyXG4gICAgICAgICAgICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBgO1xyXG5cclxuICAgICAgICBjb25zdCBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG5cclxuICAgICAgICBpZiAoYWRkKSB7XHJcbiAgICAgICAgICAgIGlmICghZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmx6ZS1ibG9ja2VyJykpIHtcclxuICAgICAgICAgICAgICAgIHN0eWxlRWxlbWVudC5pbm5lckhUTUwgPSBzdHlsZTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTtcclxuICAgICAgICAgICAgICAgIGJvZHkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCBibGNva2VySHRtbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUJsb2NrZXIoc3R5bGVFbGVtZW50KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBzdHlsZUVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZW1vdmVCbG9ja2VyKHN0eWxlRWxlbWVudDogSFRNTFN0eWxlRWxlbWVudCB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGJsb2NrZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubHplLWJsb2NrZXInKTtcclxuICAgICAgICBibG9ja2VyPy5yZW1vdmUoKTtcclxuICAgICAgICBzdHlsZUVsZW1lbnQ/LnJlbW92ZSgpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQXBpSGVscGVyID0gbmV3IExvY2FsaXplQXBpSGVscGVyKCk7Il19
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jY2FsaXplLmFwaS5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbG9jYWxpemUtdG9rZW4vaGVscGVycy9sb2NjYWxpemUuYXBpLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFXLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFnQjVELE1BQU0saUJBQWlCO0lBQXZCO1FBRWEsd0JBQW1CLEdBQTJCO1lBQ25ELGVBQWUsRUFBRTtnQkFDYixPQUFPLEVBQUUsd0NBQXdDO2dCQUNqRCxXQUFXLEVBQUUsSUFBSTtnQkFDakIsaUJBQWlCLEVBQUUsS0FBSzthQUMzQjtTQUNKLENBQUM7SUFvUk4sQ0FBQztJQWxSUyxZQUFZLENBQVUsT0FBc0I7O1lBQzlDLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztZQUNqQixJQUFJLFNBQWMsQ0FBQztZQUNuQixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7WUFFckIsb0RBQW9EO1lBQ3BELE9BQU8sbUNBQVEsSUFBSSxDQUFDLG1CQUFtQixHQUFLLE9BQU8sQ0FBRSxDQUFBO1lBRXJELElBQUksWUFBMEMsQ0FBQztZQUUvQyxPQUFPLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ3BDLElBQUk7b0JBQ0EsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ2pDLE9BQU8sTUFBTSxDQUFDO2lCQUVqQjtnQkFBQyxPQUFPLEtBQVUsRUFBRTtvQkFDakIsU0FBUyxHQUFHLEtBQUssQ0FBQztv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Q0FBQyxFQUFFO1lBQ25CLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDOUMsSUFBSTtnQkFDQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDakM7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDUiwyQ0FBMkM7Z0JBQzNDLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDaEIsT0FBTyxJQUFJLENBQUM7YUFDZjtTQUNKO0tBQ0o7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJQXBpT3B0aW9ucywgSUxvY2FsaXplQXBpQ29uZmlncywgSU9uQ29ubmVjdGlvbkVycm9yIH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIGNhdGNoRXJyb3IsIHRocm93RXJyb3IsIFN1YmplY3QsIG1hcCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IHdhaXRGb3IgfSBmcm9tIFwiLi4vbG9jYWxpemUudG9rZW5cIjtcclxuaW1wb3J0IHsgTE9DQUxJWkVfQVBJX0FTU0VUUyB9IGZyb20gXCIuL2xvY2FsaXplLmFwaS5hc3NldHNcIjtcclxuXHJcbmludGVyZmFjZSBJUmVxdWVzdEluc3RhbmNlIHtcclxuICAgIGNsaWVudDogSHR0cENsaWVudDtcclxuICAgIGRlc3Ryb3kkOiAoKSA9PiBTdWJqZWN0PHZvaWQ+O1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSVJldHJ5T3B0aW9ucyB7XHJcbiAgICBtYXhSZXRyaWVzOiAoKSA9PiBudW1iZXI7XHJcbiAgICBkZWxheTogbnVtYmVyO1xyXG4gICAgY2FsbGJhY2s6ICgpID0+IFByb21pc2U8YW55PiB8IGFueTtcclxuICAgIHJldHJ5VW5sZXNzPzogKGVycm9yOiBhbnkpID0+IGJvb2xlYW47XHJcbiAgICBvbkVycm9yPzogKGVycm9yOiBhbnkpID0+IFByb21pc2U8dm9pZD4gfCBhbnk7XHJcbiAgICBjb25uZWN0aW9uRXJyb3I/OiBJT25Db25uZWN0aW9uRXJyb3JcclxufVxyXG5cclxuY2xhc3MgTG9jYWxpemVBcGlIZWxwZXIge1xyXG5cclxuICAgIHJlYWRvbmx5IGRlZmF1bHRSZXRyeU9wdGlvbnM6IFBhcnRpYWw8SVJldHJ5T3B0aW9ucz4gPSB7XHJcbiAgICAgICAgY29ubmVjdGlvbkVycm9yOiB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdDb25uZWN0aW9uIGVycm9yIG9jY3VycmVkLiBQbGVhc2Ugd2FpdCcsXHJcbiAgICAgICAgICAgIGJsb2NrU2NyZWVuOiB0cnVlLFxyXG4gICAgICAgICAgICBibG9ja1NjcmVlblpJbmRleDogMTAwMDBcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGFzeW5jIHBlcmZvcm1SZXRyeTxUID0gYW55PihvcHRpb25zOiBJUmV0cnlPcHRpb25zKTogUHJvbWlzZTxUPiB7XHJcbiAgICAgICAgbGV0IGF0dGVtcHRzID0gMDtcclxuICAgICAgICBsZXQgbGFzdEVycm9yOiBhbnk7XHJcbiAgICAgICAgbGV0IGNvbnNvbGVDb3VudCA9IDA7XHJcblxyXG4gICAgICAgIC8vIE1lcmdlIGRlZmF1bHQgcmV0cnkgb3B0aW9ucyB3aXRoIHByb3ZpZGVkIG9wdGlvbnNcclxuICAgICAgICBvcHRpb25zID0geyAuLi50aGlzLmRlZmF1bHRSZXRyeU9wdGlvbnMsIC4uLm9wdGlvbnMgfVxyXG5cclxuICAgICAgICBsZXQgc3R5bGVFbGVtZW50OiBIVE1MU3R5bGVFbGVtZW50IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgICAgICB3aGlsZSAoYXR0ZW1wdHMgPCBvcHRpb25zLm1heFJldHJpZXMoKSkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgb3B0aW9ucy5jYWxsYmFjaygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVCbG9ja2VyKHN0eWxlRWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG5cclxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgbGFzdEVycm9yID0gZXJyb3I7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnNvbGVDb3VudCA+PSA3KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5jbGVhcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGVDb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucmV0cnlVbmxlc3MgJiYgIW9wdGlvbnMucmV0cnlVbmxlc3MoZXJyb3IpKVxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yOyAvLyBJZiB0aGUgZXJyb3Igc2hvdWxkIG5vdCBiZSByZXRyaWVkLCByZXRocm93IGl0XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gSGFuZGxlIGNvbm5lY3Rpb24gZXJyb3JcclxuICAgICAgICAgICAgICAgIHN0eWxlRWxlbWVudCA9IGF3YWl0IHRoaXMub25Db25uZWN0aW9uRXJyb3Iob3B0aW9ucywgZXJyb3IpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLm9uRXJyb3IpXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5pbnZva2VIb29rKG9wdGlvbnMub25FcnJvci5iaW5kKHRoaXMsIGVycm9yKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGF0dGVtcHRzID49IG9wdGlvbnMubWF4UmV0cmllcygpIC0gMSlcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuXHJcbiAgICAgICAgICAgICAgICBhdHRlbXB0cysrO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZUNvdW50Kys7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEF0dGVtcHQgJHthdHRlbXB0c30gZmFpbGVkLiBSZXRyeWluZy4uLmAsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHdhaXRGb3Iob3B0aW9ucy5kZWxheSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnNvbGUud2FybihgRmFpbGVkIGFmdGVyICR7b3B0aW9ucy5tYXhSZXRyaWVzfSBhdHRlbXB0c2ApO1xyXG4gICAgICAgIHRocm93IGxhc3RFcnJvcjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBwZXJmb3JtUmVxdWVzdFdpdGhSZXRyeTxUID0gYW55PihcclxuICAgICAgICBvcHRpb25zOiBJQXBpT3B0aW9ucyxcclxuICAgICAgICBjb25maWc6IElMb2NhbGl6ZUFwaUNvbmZpZ3MsXHJcbiAgICAgICAgcGVyZm9ybVJlcXVlc3Q6IDxUID0gYW55PihvcHRpb25zOiBJQXBpT3B0aW9ucykgPT4gUHJvbWlzZTxUPlxyXG4gICAgKTogUHJvbWlzZTxUPiB7XHJcblxyXG4gICAgICAgIGNvbnN0IHJldHJ5VW5sZXNzID0gY29uZmlnLnJldHJ5T3B0aW9ucz8ucmV0cnlGdW5jdGlvblxyXG4gICAgICAgICAgICB8fCB0aGlzLmlzQ29ubmVjdGlvbkVycm9yO1xyXG5cclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wZXJmb3JtUmV0cnkoe1xyXG4gICAgICAgICAgICBjb25uZWN0aW9uRXJyb3I6IGNvbmZpZy5yZXRyeU9wdGlvbnM/Lm9uQ29ubmVjdGlvbkVycm9yLFxyXG4gICAgICAgICAgICBtYXhSZXRyaWVzOiAoKSA9PiBjb25maWcucmV0cnlPcHRpb25zPy5tYXhSZXRyaWVzID8/IDEwMDAsXHJcbiAgICAgICAgICAgIGRlbGF5OiBjb25maWcucmV0cnlPcHRpb25zPy5kZWxheSA/PyA1MDAsXHJcbiAgICAgICAgICAgIGNhbGxiYWNrOiAoKSA9PiBwZXJmb3JtUmVxdWVzdDxUPihvcHRpb25zKSxcclxuICAgICAgICAgICAgcmV0cnlVbmxlc3M6IHJldHJ5VW5sZXNzLFxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRVcmwoYmFzZVVybDogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVcmwgPSBgJHtiYXNlVXJsLnRyaW0oKS5yZXBsYWNlKC9cXC8/JC8sICcvJyl9JHtwYXRoLnRyaW0oKS5yZXBsYWNlKC9eXFwvLywgJycpfWA7XHJcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRVcmwuZW5kc1dpdGgoJy8nKVxyXG4gICAgICAgICAgICA/IG5vcm1hbGl6ZWRVcmwuc2xpY2UoMCwgLTEpXHJcbiAgICAgICAgICAgIDogbm9ybWFsaXplZFVybDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpbnZva2VIb29rKGNhbGxiYWNrPzogKCkgPT4gUHJvbWlzZTxhbnk+IHwgYW55KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBpZiAoIWNhbGxiYWNrKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxiYWNrKCk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgYXdhaXQgcmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVSZXF1ZXN0PFQgPSBhbnk+KFxyXG4gICAgICAgIGluc3RhbmNlOiBSZXF1aXJlZDxJUmVxdWVzdEluc3RhbmNlPixcclxuICAgICAgICBtZXRob2Q6IHN0cmluZyxcclxuICAgICAgICB1cmw6IHN0cmluZyxcclxuICAgICAgICBib2R5OiBhbnksXHJcbiAgICAgICAgb3B0aW9uczogeyBoZWFkZXJzOiBIdHRwSGVhZGVycyB9LFxyXG4gICAgICAgIG9uSW52YWxpZFJlc3BvbnNlQm9keT86IChib2R5OiBhbnkpID0+IHZvaWRcclxuICAgICkge1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3QkID0gaW5zdGFuY2UuY2xpZW50LnJlcXVlc3Q8VD4obWV0aG9kLCB1cmwsIHtcclxuICAgICAgICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgICAgICAgYm9keSxcclxuICAgICAgICB9KS5waXBlKFxyXG4gICAgICAgICAgICB0YWtlVW50aWwoaW5zdGFuY2UuZGVzdHJveSQoKSksXHJcbiAgICAgICAgICAgIG1hcCgoYm9keSkgPT4gZXh0cmFjdEpzb25Gcm9tUmVzcG9uc2UoYm9keSwgb25JbnZhbGlkUmVzcG9uc2VCb2R5KSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gQ29udmVydCB0byBhIG5vbi1vYnNlcnZhYmxlIGVycm9yIHRvIGhhbmRsZSBpbiB0aGUgcHJvbWlzZVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXF1ZXN0JDtcclxuICAgIH1cclxuXHJcbiAgICBkZWZhdWx0UmV0cnlGdW5jdGlvbihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBib29sZWFuIHtcclxuXHJcbiAgICAgICAgLy8gRG9uJ3QgcmV0cnkgZm9yIG90aGVyIGVycm9ycyAobGlrZSA0MDAsIDQwMSwgNDAzLCBldGMuKVxyXG4gICAgICAgIGlmICghdGhpcy5pc0Nvbm5lY3Rpb25FcnJvcihlcnJvcikpXHJcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpc0Nvbm5lY3Rpb25FcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBpc05ldHdvcmtFcnJvciA9IGVycm9yLnN0YXR1cyA9PT0gMDtcclxuICAgICAgICBjb25zdCBpc1NlcnZlckVycm9yID0gZXJyb3Iuc3RhdHVzID49IDEwMDAgJiYgZXJyb3Iuc3RhdHVzIDwgNjAwO1xyXG4gICAgICAgIHJldHVybiBpc05ldHdvcmtFcnJvciB8fCBpc1NlcnZlckVycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uQ29ubmVjdGlvbkVycm9yKFxyXG4gICAgICAgIG9wdGlvbnM6IElSZXRyeU9wdGlvbnMsXHJcbiAgICAgICAgZXJyb3I6IGFueVxyXG4gICAgKTogUHJvbWlzZTxQcm9taXNlPHZvaWQ+IHwgYW55PiB7XHJcblxyXG4gICAgICAgIGlmICghb3B0aW9ucy5jb25uZWN0aW9uRXJyb3IpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgbGV0IHN0eWxlRWxlbWVudDogSFRNTFN0eWxlRWxlbWVudCB8IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAodGhpcy5pc0Nvbm5lY3Rpb25FcnJvcihlcnJvcikpIHtcclxuXHJcbiAgICAgICAgICAgIHN0eWxlRWxlbWVudCA9IHRoaXMuc2NyZWVuQmxvY2tlcihvcHRpb25zLCBlcnJvciwgdHJ1ZSk7XHJcblxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmludm9rZUhvb2sob3B0aW9ucy5jb25uZWN0aW9uRXJyb3IuY2FsbGJhY2s/LmJpbmQodGhpcywgZXJyb3IpKTtcclxuICAgICAgICAgICAgcmV0dXJuIHN0eWxlRWxlbWVudDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNjcmVlbkJsb2NrZXIob3B0aW9ucywgZXJyb3IsIGZhbHNlKTtcclxuICAgICAgICAgICAgc3R5bGVFbGVtZW50Py5yZW1vdmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2NyZWVuQmxvY2tlcihvcHRvbnM6IElSZXRyeU9wdGlvbnMsXHJcbiAgICAgICAgZXJyb3I/OiBIdHRwRXJyb3JSZXNwb25zZSxcclxuICAgICAgICBhZGQ6IGJvb2xlYW4gPSB0cnVlKTogSFRNTFN0eWxlRWxlbWVudCB8IHVuZGVmaW5lZCB7XHJcblxyXG4gICAgICAgIGlmICghb3B0b25zLmNvbm5lY3Rpb25FcnJvcj8uYmxvY2tTY3JlZW4pXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IG9wdG9ucy5jb25uZWN0aW9uRXJyb3I/Lm1lc3NhZ2VcclxuICAgICAgICAgICAgfHwgJ0Nvbm5lY3Rpb24gZXJyb3Igb2NjdXJyZWQuIFBsZWFzZSB3YWl0JztcclxuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvcj8uZXJyb3I/Lm1lc3NhZ2UgfHwgJ0FuIGVycm9yIG9jY3VycmVkJztcclxuICAgICAgICBjb25zdCBzdWdnZXN0aW5NZXNzYWdlID0gb3B0b25zLmNvbm5lY3Rpb25FcnJvcj8uc3VnZ2VzdGlvbk1lc3NhZ2VcclxuICAgICAgICAgICAgfHwgJ1BsZWFzZSBjaGVjayB5b3VyIGludGVybmV0IGNvbm5lY3Rpb24gb3IgdGhlIHNlcnZlciBzdGF0dXMuJztcclxuXHJcbiAgICAgICAgY29uc3QgekluZGV4ID0gb3B0b25zLmNvbm5lY3Rpb25FcnJvcj8uYmxvY2tTY3JlZW5aSW5kZXggfHwgMTAwMDA7XHJcblxyXG4gICAgICAgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5ib2R5O1xyXG4gICAgICAgIGNvbnN0IGJsY29rZXJIdG1sID0gYFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsemUtYmxvY2tlclwiPlxyXG4gICAgICAgICAgICAke0xPQ0FMSVpFX0FQSV9BU1NFVFMubmV0d29yay5ub0Nvbm5lY3Rpb259XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsemUtYmxvY2tlcl9fbWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgICAgJHttZXNzYWdlfVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsemUtYmxvY2tlcl9fZG90dGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibHplLWJsb2NrZXJfX2RvdFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImx6ZS1ibG9ja2VyX19kb3RcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsemUtYmxvY2tlcl9fZG90XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImx6ZS1ibG9ja2VyX19lcnJvclwiPiR7ZXJyb3JNZXNzYWdlfTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibHplLWJsb2NrZXJfX2Vycm9yX3N1Z2dlc3Rpb25cIj4ke3N1Z2dlc3Rpbk1lc3NhZ2V9PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgYDtcclxuICAgICAgICBjb25zdCBzdHlsZSA9IGBcclxuICAgICAgICBkaXYubHplLWJsb2NrZXIge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgICAgbGVmdDogMDtcclxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjg1KSAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICB6LWluZGV4OiAke3pJbmRleH07XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgICAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7XHJcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgICAgcGFkZGluZzogMjBweDtcclxuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdmcjbHplLW5vLWNvbm5lY3Rpb24ge1xyXG4gICAgICAgICAgICB3aWR0aDogNzVweDtcclxuICAgICAgICAgICAgaGVpZ2h0OiA3NXB4O1xyXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBkaXYubHplLWJsb2NrZXJfX21lc3NhZ2Uge1xyXG4gICAgICAgICAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDtcclxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIC5semUtYmxvY2tlcl9fZG90dGluZyB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3Bhbi5semUtYmxvY2tlcl9fZG90IHtcclxuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICB3aWR0aDogN3B4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDdweDtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAzcHg7XHJcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuMztcclxuICAgICAgICAgICAgYW5pbWF0aW9uOiBkb3R0aW5nIDFzIGluZmluaXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAubHplLWJsb2NrZXJfX2RvdDpudGgtY2hpbGQoMSkge1xyXG4gICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IDBzO1xyXG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICAubHplLWJsb2NrZXJfX2RvdDpudGgtY2hpbGQoMikge1xyXG4gICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMnM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5semUtYmxvY2tlcl9fZG90Om50aC1jaGlsZCgzKSB7XHJcbiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC40cztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBrZXlmcmFtZXMgZG90dGluZyB7XHJcbiAgICAgICAgICAgIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwLjM7IH1cclxuICAgICAgICAgICAgNDAlIHsgb3BhY2l0eTogMTsgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGl2Lmx6ZS1ibG9ja2VyX19lcnJvciB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjZjAwO1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcclxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuICAgICAgICAgICAgdGV4dC1zaGFkb3c6IDAgMCAxcHggI2ZmNWY1ZiAhaW1wb3J0YW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGl2Lmx6ZS1ibG9ja2VyX19lcnJvcl9zdWdnZXN0aW9uIHtcclxuICAgICAgICAgICAgY29sb3I6ICNjY2MgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIEBrZXlmcmFtZXMgc3BpbiB7XHJcbiAgICAgICAgICAgIDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cclxuICAgICAgICAgICAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYDtcclxuXHJcbiAgICAgICAgY29uc3Qgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuXHJcbiAgICAgICAgaWYgKGFkZCkge1xyXG4gICAgICAgICAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5semUtYmxvY2tlcicpKSB7XHJcbiAgICAgICAgICAgICAgICBzdHlsZUVsZW1lbnQuaW5uZXJIVE1MID0gc3R5bGU7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICBib2R5Lmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywgYmxjb2tlckh0bWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVCbG9ja2VyKHN0eWxlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gc3R5bGVFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlQmxvY2tlcihzdHlsZUVsZW1lbnQ6IEhUTUxTdHlsZUVsZW1lbnQgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBibG9ja2VyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmx6ZS1ibG9ja2VyJyk7XHJcbiAgICAgICAgYmxvY2tlcj8ucmVtb3ZlKCk7XHJcbiAgICAgICAgc3R5bGVFbGVtZW50Py5yZW1vdmUoKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZXh0cmFjdEpzb25Gcm9tUmVzcG9uc2UoYm9keTogYW55LCBvbkVycm9yPzogKGJvZHk6IGFueSkgPT4gdm9pZCk6IGFueSB7XHJcbiAgICAvLyBJZiBhbHJlYWR5IGFuIG9iamVjdCwganVzdCByZXR1cm5cclxuICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ29iamVjdCcgJiYgYm9keSAhPT0gbnVsbCkgcmV0dXJuIGJvZHk7XHJcblxyXG4gICAgLy8gSWYgaXQncyBhIHN0cmluZywgdHJ5IHRvIGV4dHJhY3QgSlNPTiBwb3J0aW9uXHJcbiAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgZmlyc3RCcmFjZSA9IGJvZHkuaW5kZXhPZigneycpO1xyXG4gICAgICAgIGlmIChmaXJzdEJyYWNlICE9PSAtMSkge1xyXG4gICAgICAgICAgICBjb25zdCBqc29uU3RyaW5nID0gYm9keS5zdWJzdHJpbmcoZmlyc3RCcmFjZSk7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShqc29uU3RyaW5nKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gSWYgcGFyc2luZyBmYWlscywgcmV0dXJuIG9yaWdpbmFsIHN0cmluZ1xyXG4gICAgICAgICAgICAgICAgb25FcnJvcj8uKGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGJvZHk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiBib2R5O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQXBpSGVscGVyID0gbmV3IExvY2FsaXplQXBpSGVscGVyKCk7Il19
|
|
@@ -101,6 +101,7 @@ export class LocalizeApiService {
|
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
performRequest(options) {
|
|
104
|
+
var _a;
|
|
104
105
|
return __awaiter(this, void 0, void 0, function* () {
|
|
105
106
|
// Build the request options
|
|
106
107
|
const buildOptions = { headers: this.buildHeaderOptions(options) };
|
|
@@ -108,10 +109,10 @@ export class LocalizeApiService {
|
|
|
108
109
|
const request$ = ApiHelper.createRequest({
|
|
109
110
|
client: this.httpClient,
|
|
110
111
|
destroy$: () => this.destroy$
|
|
111
|
-
}, options.method, options.requestUrl, options.requestBody, buildOptions);
|
|
112
|
+
}, options.method, options.requestUrl, options.requestBody, buildOptions, (_a = this.config.onResponseBodyInvalid) === null || _a === void 0 ? void 0 : _a.bind(this));
|
|
112
113
|
// Set the isRequesting state to true before making the request
|
|
113
114
|
this.isRequestingSubject.next(true);
|
|
114
|
-
const response = yield new Promise((resolve, reject) => request$.subscribe({ next:
|
|
115
|
+
const response = yield new Promise((resolve, reject) => request$.subscribe({ next: resolve, error: reject }));
|
|
115
116
|
// Reset the isRequesting state after the request completes
|
|
116
117
|
this.isRequestingSubject.next(false);
|
|
117
118
|
return response;
|
|
@@ -212,4 +213,4 @@ LocalizeApiService.ctorParameters = () => [
|
|
|
212
213
|
{ type: HttpClient },
|
|
213
214
|
{ type: LocalizeTokenService }
|
|
214
215
|
];
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUuYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbG9jYWxpemUtdG9rZW4vbG9jYWxpemUuYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBcUIsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFvQyxPQUFPLEVBQVcsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7QUFFM0QsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQztBQUsxQyxNQUFNLE9BQU8sa0JBQWtCO0lBeUM3QixZQUFxQixVQUFzQixFQUN4QixvQkFBMEM7UUFEeEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN4Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBekM1QyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUMvQixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUErQixFQUFFLENBQUMsQ0FBQztRQUM5RSx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMxRCw4QkFBeUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQWVqRSxrQkFBYSxHQUFpQztZQUNwRCxlQUFlLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFO1lBQ3BDLHlCQUF5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c0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTG9jYWxpemVUb2tlblNlcnZpY2UgfSBmcm9tIFwiLi9sb2NhbGl6ZS50b2tlbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVRva2VuLCB3YWl0Rm9yLCB3YWl0VW50aWwgfSBmcm9tIFwiLi9sb2NhbGl6ZS50b2tlblwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBJTG9jYWxpemVBcGlDb25maWdzLCBJQXBpT3B0aW9ucywgRU1ldGhvZCwgSUhlYWRlciB9IGZyb20gXCIuL2hlbHBlcnMvaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBBcGlIZWxwZXIgfSBmcm9tIFwiLi9oZWxwZXJzL2xvY2NhbGl6ZS5hcGkuaGVscGVyXCI7XHJcblxyXG5jb25zdCBTQ0hFTUVTID0gTG9jYWxpemVUb2tlbi5odHRwSGVhZGVycztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsaXplQXBpU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYXJ0aWFsPElMb2NhbGl6ZUFwaUNvbmZpZ3M+Pih7fSk7XHJcbiAgcmVhZG9ubHkgaXNSZXF1ZXN0aW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5IGlzUmVzb2x2aW5nU3RhcnR1cFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBnZXQgaXNSZXNvbHZpbmdTdGFydHVwKCkgeyByZXR1cm4gdGhpcy5pc1Jlc29sdmluZ1N0YXJ0dXBTdWJqZWN0LnZhbHVlOyB9XHJcblxyXG4gIGdldCBuZWVkVGVuYW50KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5jb25maWcudGVuYW50VG9rZW4gIT09IHVuZGVmaW5lZDsgfVxyXG5cclxuICBnZXQgaXNSZXF1ZXN0aW5nKCkgeyByZXR1cm4gdGhpcy5pc1JlcXVlc3RpbmdTdWJqZWN0LnZhbHVlOyB9XHJcbiAgZ2V0IGlzUmV2b2tpbmdUb2tlbigpIHsgcmV0dXJuIHRoaXMubG9jYWxpemVUb2tlblNlcnZpY2UuaXNSZXZva2luZ1Rva2VuOyB9XHJcbiAgc2V0IGlzUmV2b2tpbmdUb2tlbih2YWx1ZTogYm9vbGVhbikgeyB0aGlzLmxvY2FsaXplVG9rZW5TZXJ2aWNlLmlzUmV2b2tpbmdUb2tlbiA9IHZhbHVlOyB9XHJcblxyXG4gIGdldCBhY2Nlc3NUb2tlbigpOiBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5hY2Nlc3NUb2tlbjsgfVxyXG4gIHNldCBhY2Nlc3NUb2tlbih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7IHRoaXMubG9jYWxpemVUb2tlblNlcnZpY2UuYWNjZXNzVG9rZW4gPSB2YWx1ZTsgfVxyXG5cclxuICBnZXQgcmVmcmVzaFRva2VuKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLmxvY2FsaXplVG9rZW5TZXJ2aWNlLnJlZnJlc2hUb2tlbjsgfVxyXG4gIGdldCB0ZW5hbnRUb2tlbigpOiBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS50ZW5hbnRUb2tlbjsgfVxyXG5cclxuICBwcml2YXRlIGRlZmF1bHRDb25maWc6IFBhcnRpYWw8SUxvY2FsaXplQXBpQ29uZmlncz4gPSB7XHJcbiAgICB3YWl0RWFjaFJlcXVlc3Q6IHsgbWlsbGlzZWNvbmRzOiAwIH0sXHJcbiAgICBlbmFibGVSZXF1ZXN0Q2FuY2VsbGF0aW9uOiB0cnVlLFxyXG5cclxuICAgIHJldHJ5T3B0aW9uczoge1xyXG4gICAgICBtYXhSZXRyaWVzOiAxMDAwLFxyXG4gICAgICBkZWxheTogMTAwMCxcclxuICAgICAgcmV0cnlGdW5jdGlvbjogQXBpSGVscGVyLmRlZmF1bHRSZXRyeUZ1bmN0aW9uLmJpbmQodGhpcyksXHJcbiAgICB9LFxyXG5cclxuICB9O1xyXG5cclxuICBwcml2YXRlIGdldCBjb25maWcoKTogUGFydGlhbDxJTG9jYWxpemVBcGlDb25maWdzPiB7XHJcbiAgICB0aGlzLnZhbGlkYXRlQ29uZmlnKCk7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdWJqZWN0LnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcGlPcHRpb25zOiBQYXJ0aWFsPElBcGlPcHRpb25zPiA9IHtcclxuICAgIG1ldGhvZDogRU1ldGhvZC5HRVQsXHJcbiAgICByZXF1ZXN0Qm9keTogbnVsbCxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGl6ZVRva2VuU2VydmljZTogTG9jYWxpemVUb2tlblNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHRoZSBBUEkgc2VydmljZS5cclxuICAgKiBAcGFyYW0gYXBpQ29uZmlncyAtIFRoZSBBUEkgY29uZmlndXJhdGlvbnMuXHJcbiAgICovXHJcbiAgaW5pdChhcGlDb25maWdzOiBJTG9jYWxpemVBcGlDb25maWdzKSB7XHJcbiAgICBjb25zb2xlLmxvZygnTG9jYWxpemVBcGlTZXJ2aWNlIGlzIGluaXRpYWxpemVkLicpO1xyXG4gICAgdGhpcy5jb25maWdTdWJqZWN0Lm5leHQoeyAuLi50aGlzLmRlZmF1bHRDb25maWcsIC4uLmFwaUNvbmZpZ3MgfSk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxQZW5kaW5nUmVxdWVzdHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpZy5lbmFibGVSZXF1ZXN0Q2FuY2VsbGF0aW9uXHJcbiAgICAgICYmIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgaGlnaGVyLW9yZGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGN1cnJpZWQgZnVuY3Rpb24gZm9yIG1ha2luZyBBUEkgcmVxdWVzdHMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gYmFzZVVybCAtIFRoZSBiYXNlIFVSTCBvZiB0aGUgQVBJLlxyXG4gICAqIEByZXR1cm5zIEEgY3VycmllZCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIG1ha2UgQVBJIHJlcXVlc3RzLlxyXG4gICAqL1xyXG4gIGZ1bmMgPSAoYmFzZVVybDogc3RyaW5nKSA9PlxyXG4gICAgPFQgPSBhbnk+KHBhdGg6IHN0cmluZywgbWV0aG9kOiBFTWV0aG9kID0gRU1ldGhvZC5HRVQsIHJlcUJvZHk6IGFueSA9IG51bGwsIHJlcUhlYWRlcnM/OiBJSGVhZGVyKSA9PlxyXG4gICAgICB0aGlzLnJlcXVlc3Q8VD4oYmFzZVVybCwgcGF0aCwgbWV0aG9kLCByZXFCb2R5LCByZXFIZWFkZXJzKVxyXG5cclxuICBwdWJsaWMgYXN5bmMgcmVxdWVzdDxUID0gYW55PihiYXNlVXJsOiBzdHJpbmcsXHJcbiAgICBwYXRoOiBzdHJpbmcsXHJcbiAgICBtZXRob2Q6IEVNZXRob2QgPSBFTWV0aG9kLkdFVCxcclxuICAgIHJlcUJvZHk6IGFueSA9IG51bGwsXHJcbiAgICByZXFIZWFkZXJzPzogSUhlYWRlcik6IFByb21pc2U8VD4ge1xyXG5cclxuICAgIGF3YWl0IHdhaXRVbnRpbCgoKSA9PiAhdGhpcy5pc1Jlc29sdmluZ1N0YXJ0dXAsIDUwMCk7XHJcblxyXG4gICAgYXdhaXQgQXBpSGVscGVyLmludm9rZUhvb2sodGhpcy5jb25maWcub25QcmVwYXJlUmVxdWVzdCk7XHJcblxyXG4gICAgY29uc3QgYXBpT3B0aW9ucyA9IHRoaXMuYnVpbGRBcGlPcHRpb25zKGJhc2VVcmwsIHBhdGgsIG1ldGhvZCwgcmVxQm9keSwgcmVxSGVhZGVycyk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgdGhpcy50b1dhaXRGb3JQcmV2aW91c1JlcXVlc3QoKTtcclxuXHJcbiAgICAgIHJldHVybiBhd2FpdCBBcGlIZWxwZXIucGVyZm9ybVJlcXVlc3RXaXRoUmV0cnk8VD4oXHJcbiAgICAgICAgYXBpT3B0aW9ucyxcclxuICAgICAgICB0aGlzLmNvbmZpZyxcclxuICAgICAgICB0aGlzLnBlcmZvcm1SZXF1ZXN0LmJpbmQodGhpcylcclxuICAgICAgKTtcclxuXHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVPblJlcXVlc3RFcnJvcihlcnJvciwgYXBpT3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGhhbmRsZU9uUmVxdWVzdEVycm9yKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSwgb3B0aW9uczogSUFwaU9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgaWYgKGVycm9yLnN0YXR1cyAhPT0gNDAxKVxyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuXHJcbiAgICBhd2FpdCB3YWl0VW50aWwoKCkgPT4gIXRoaXMuaXNSZXNvbHZpbmdTdGFydHVwLCA1MCk7XHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IEFwaUhlbHBlci5wZXJmb3JtUmV0cnkoe1xyXG4gICAgICBtYXhSZXRyaWVzOiAoKSA9PiAxMDAwLFxyXG4gICAgICBkZWxheTogMTAsXHJcbiAgICAgIHJldHJ5VW5sZXNzOiAoZXJyb3IpID0+IGVycm9yLnN0YXR1cyA9PT0gNDAxIHx8IEFwaUhlbHBlci5pc0Nvbm5lY3Rpb25FcnJvcihlcnJvciksXHJcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgLy8gT25seSBoYW5kbGUgNDAxIFVuYXV0aG9yaXplZCBlcnJvcnNcclxuICAgICAgICBhd2FpdCB0aGlzLnJldm9rZVRva2VuKCk7XHJcblxyXG4gICAgICAgIC8vIFJldHJ5IHRoZSByZXF1ZXN0IHdpdGggdGhlIG5ldyBhY2Nlc3MgdG9rZW5cclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wZXJmb3JtUmVxdWVzdChvcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHBlcmZvcm1SZXF1ZXN0PFQgPSBhbnk+KG9wdGlvbnM6IElBcGlPcHRpb25zKTogUHJvbWlzZTxUPiB7XHJcblxyXG4gICAgLy8gQnVpbGQgdGhlIHJlcXVlc3Qgb3B0aW9uc1xyXG4gICAgY29uc3QgYnVpbGRPcHRpb25zID0geyBoZWFkZXJzOiB0aGlzLmJ1aWxkSGVhZGVyT3B0aW9ucyhvcHRpb25zKSB9O1xyXG5cclxuICAgIC8vIENyZWF0ZSB0aGUgcmVxdWVzdCBvYnNlcnZhYmxlXHJcbiAgICBjb25zdCByZXF1ZXN0JCA9IEFwaUhlbHBlci5jcmVhdGVSZXF1ZXN0PFQ+KHtcclxuICAgICAgY2xpZW50OiB0aGlzLmh0dHBDbGllbnQsXHJcbiAgICAgIGRlc3Ryb3kkOiAoKSA9PiB0aGlzLmRlc3Ryb3kkXHJcbiAgICB9LCBvcHRpb25zLm1ldGhvZCwgb3B0aW9ucy5yZXF1ZXN0VXJsLCBvcHRpb25zLnJlcXVlc3RCb2R5LCBidWlsZE9wdGlvbnMpO1xyXG5cclxuICAgIC8vIFNldCB0aGUgaXNSZXF1ZXN0aW5nIHN0YXRlIHRvIHRydWUgYmVmb3JlIG1ha2luZyB0aGUgcmVxdWVzdFxyXG4gICAgdGhpcy5pc1JlcXVlc3RpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+XHJcbiAgICAgIHJlcXVlc3QkLnN1YnNjcmliZSh7IG5leHQ6IChyZXMpID0+IHJlc29sdmUocmVzLmJvZHkpLCBlcnJvcjogcmVqZWN0IH0pKTtcclxuXHJcbiAgICAvLyBSZXNldCB0aGUgaXNSZXF1ZXN0aW5nIHN0YXRlIGFmdGVyIHRoZSByZXF1ZXN0IGNvbXBsZXRlc1xyXG4gICAgdGhpcy5pc1JlcXVlc3RpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgcmV2b2tlVG9rZW4oKTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGF3YWl0IHRoaXMuaW50ZXJjZXB0UmV2b2tlVG9rZW4oKSlcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICB0aGlzLmlzUmV2b2tpbmdUb2tlbiA9IHRydWU7XHJcblxyXG4gICAgICBjb25zdCBhcGlPcHRpb25zOiBJQXBpT3B0aW9ucyA9IHtcclxuICAgICAgICAuLi50aGlzLmJ1aWxkQXBpT3B0aW9ucyh0aGlzLmxvY2FsaXplVG9rZW5TZXJ2aWNlLmNvbmZpZy5yZWZyZXNoVG9rZW4/LnJlcXVlc3RVcmwgfHwgJycpLFxyXG4gICAgICAgIHJlZnJlc2hUb2tlbjogdHJ1ZSxcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gY29uc3QgcmV2b2tlVG9rZW4gPSBhd2FpdCB0aGlzLnBlcmZvcm1SZXF1ZXN0KGFwaU9wdGlvbnMpO1xyXG4gICAgICBjb25zdCByZXZva2VUb2tlbiA9IGF3YWl0IEFwaUhlbHBlci5wZXJmb3JtUmVxdWVzdFdpdGhSZXRyeShcclxuICAgICAgICBhcGlPcHRpb25zLFxyXG4gICAgICAgIHRoaXMuY29uZmlnLFxyXG4gICAgICAgIHRoaXMucGVyZm9ybVJlcXVlc3QuYmluZCh0aGlzKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgYXdhaXQgdGhpcy5oYW5kbGVPblRva2VuUmV2b2tlZChyZXZva2VUb2tlbik7XHJcblxyXG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG4gICAgICAvLyBIYW5kbGUgdGhlIGVycm9yLCBsb2cgaXRcclxuICAgICAgYXdhaXQgQXBpSGVscGVyLmludm9rZUhvb2sodGhpcy5jb25maWcub25BdXRvTG9nb3V0KTtcclxuICAgICAgdGhyb3cgZXJyb3I7XHJcblxyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgLy8gUmVzZXQgdGhlIHJldm9raW5nIHRva2VuIHN0YXRlXHJcbiAgICAgIHRoaXMuaXNSZXZva2luZ1Rva2VuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogZGVmYXVsdCBodHRwIHJlcXVlc3Qgb3B0aW9ucyAqL1xyXG4gIHByaXZhdGUgYnVpbGRIZWFkZXJPcHRpb25zKG9wdGlvbnM6IElBcGlPcHRpb25zKTogSHR0cEhlYWRlcnMge1xyXG5cclxuICAgIGNvbnN0IGhlYWRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICAgIC4uLihvcHRpb25zLnJlZnJlc2hUb2tlbiAmJiB7IFtTQ0hFTUVTLlhfUkVGUkVTSF9UT0tFTl06IGAke3RoaXMucmVmcmVzaFRva2VufWAgfSksXHJcbiAgICAgIC4uLighb3B0aW9ucy5pc0Zvcm1EYXRhICYmIHsgW1NDSEVNRVMuQ09OVEVOVF9UWVBFXTogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxyXG4gICAgICBbU0NIRU1FUy5BVVRIT1JJWkFUSU9OXTogYEJlYXJlciAke3RoaXMuYWNjZXNzVG9rZW59YCxcclxuICAgICAgLi4uKHRoaXMubmVlZFRlbmFudCAmJiB7IFtTQ0hFTUVTLlhfVEVOQU5UXTogYCR7dGhpcy50ZW5hbnRUb2tlbn1gIH0pXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoeyAuLi5oZWFkZXJzLCAuLi5vcHRpb25zLmhlYWRlcnMgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkQXBpT3B0aW9ucyhcclxuICAgIGJhc2VVcmw6IHN0cmluZyxcclxuICAgIHBhdGg6IHN0cmluZyA9ICcnLFxyXG4gICAgbWV0aG9kOiBFTWV0aG9kID0gRU1ldGhvZC5HRVQsXHJcbiAgICByZXF1ZXN0Qm9keTogYW55ID0gbnVsbCxcclxuICAgIGhlYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9XHJcbiAgKTogSUFwaU9wdGlvbnMge1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3RVcmwgPSBBcGlIZWxwZXIuYnVpbGRVcmwoYmFzZVVybCwgcGF0aCk7XHJcbiAgICBjb25zdCBpc0Zvcm1EYXRhID0gcmVxdWVzdEJvZHkgJiYgcmVxdWVzdEJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnRoaXMuYXBpT3B0aW9ucyxcclxuICAgICAgLi4ueyBoZWFkZXJzLCBtZXRob2QsIHJlcXVlc3RVcmwsIHJlcXVlc3RCb2R5LCBpc0Zvcm1EYXRhIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyB0b1dhaXRGb3JQcmV2aW91c1JlcXVlc3QoKSB7XHJcbiAgICBpZiAodGhpcy5pc1Jldm9raW5nVG9rZW4pIHtcclxuICAgICAgYXdhaXQgd2FpdFVudGlsKCgpID0+ICF0aGlzLmlzUmV2b2tpbmdUb2tlbik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdG8gd2FpdCBmb3IgZWFjaCByZXF1ZXN0IGluIDUwbXMsIGV2ZW4gaWYgdGhlIHJlcXVlc3QgaXMgbm90IGNvbXBsZXRlZFxyXG4gICAgY29uc3Qgd2FpdE1pbGxpc2Vjb25kcyA9IHRoaXMuY29uZmlnLndhaXRFYWNoUmVxdWVzdD8ubWlsbGlzZWNvbmRzO1xyXG4gICAgaWYgKHdhaXRNaWxsaXNlY29uZHMgJiYgdGhpcy5pc1JlcXVlc3RpbmcpIHtcclxuICAgICAgLy8gY29uc29sZS53YXJuKGBSZXF1ZXN0IHRocm90dGxpbmc6IEFub3RoZXIgcmVxdWVzdCBpcyBpbiBwcm9ncmVzcy4gV2FpdGluZyBmb3IgJHt3YWl0TWlsbGlzZWNvbmRzfW1zLmApO1xyXG4gICAgICBhd2FpdCB3YWl0Rm9yKHdhaXRNaWxsaXNlY29uZHMsIHRoaXMuaXNSZXF1ZXN0aW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGFzeW5jIGhhbmRsZU9uVG9rZW5SZXZva2VkKHJlc3BvbnNlOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHJcbiAgICBpZiAocmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICAvLyBJZiB0aGUgcmVzcG9uc2UgaXMgc3VjY2Vzc2Z1bCwgdXBkYXRlIHRoZSBhY2Nlc3MgdG9rZW5cclxuICAgICAgdGhpcy5hY2Nlc3NUb2tlbiA9IHJlc3BvbnNlLm1lc3NhZ2U7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gSWYgdGhlIHJlc3BvbnNlIGluZGljYXRlcyBhbiBlcnJvciwgaW52b2tlIHRoZSBvblJldm9rZVVuYXV0aG9yaXplZCBob29rXHJcbiAgICAgIGNvbnNvbGUud2FybignVG9rZW4gcmV2b2NhdGlvbiBmYWlsZWQsIHJlZnJlc2ggdG9rZW4gaXMgZXhwaXJlZC4nLCByZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgYXdhaXQgQXBpSGVscGVyLmludm9rZUhvb2sodGhpcy5jb25maWcub25SZXZva2VVbmF1dGhvcml6ZWQpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgaW50ZXJjZXB0UmV2b2tlVG9rZW4oKSB7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNSZXZva2luZ1Rva2VuKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignVG9rZW4gaXMgYWxyZWFkeSBiZWluZyByZXZva2VkLiBXYWl0aW5nIGZvciB0aGUgY3VycmVudCBvcGVyYXRpb24gdG8gY29tcGxldGUuLi4nKTtcclxuICAgICAgYXdhaXQgd2FpdFVudGlsKCgpID0+ICF0aGlzLmlzUmV2b2tpbmdUb2tlbik7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5yZWZyZXNoVG9rZW4pIHtcclxuICAgICAgLy8gYXdhaXQgQXBpSGVscGVyLmludm9rZUhvb2sodGhpcy5hcGlDb25maWdzLm9uQXV0b0xvZ291dCk7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVmcmVzaCB0b2tlbiBpcyBtaXNzaW5nLiBQbGVhc2UgbG9naW4gYWdhaW4uJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUNvbmZpZygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmxvY2FsaXplVG9rZW5TZXJ2aWNlLmNvbmZpZy5yZXF1aXJlZFRlbmFudFxyXG4gICAgICAmJiAhdGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5jb25maWcudGVuYW50VG9rZW4/Lm5hbWU/LnRyaW0oKS5sZW5ndGgpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ1RlbmFudCB0b2tlbiBpcyByZXF1aXJlZCBidXQgdGVuYW50VG9rZW5OYW1lIGlzIG5vdCBjb25maWd1cmVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmxvY2FsaXplVG9rZW5TZXJ2aWNlLmNvbmZpZy5yZWZyZXNoVG9rZW4/LnJlcXVlc3RVcmw/LnRyaW0oKS5sZW5ndGgpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ1Jldm9rZSB0b2tlbiBVUkwgaXMgbm90IGNvbmZpZ3VyZWQgLSB0b2tlbiByZWZyZXNoIHdpbGwgbm90IHdvcmsnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUuYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbG9jYWxpemUtdG9rZW4vbG9jYWxpemUuYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBcUIsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFvQyxPQUFPLEVBQVcsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7QUFFM0QsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQztBQUsxQyxNQUFNLE9BQU8sa0JBQWtCO0lBeUM3QixZQUFxQixVQUFzQixFQUN4QixvQkFBMEM7UUFEeEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN4Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBekM1QyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUMvQixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUErQixFQUFFLENBQUMsQ0FBQztRQUM5RSx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMxRCw4QkFBeUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQWVqRSxrQkFBYSxHQUFpQztZQUNwRCxlQUFlLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFO1lBQ3BDLHlCQUF5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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTG9jYWxpemVUb2tlblNlcnZpY2UgfSBmcm9tIFwiLi9sb2NhbGl6ZS50b2tlbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVRva2VuLCB3YWl0Rm9yLCB3YWl0VW50aWwgfSBmcm9tIFwiLi9sb2NhbGl6ZS50b2tlblwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBJTG9jYWxpemVBcGlDb25maWdzLCBJQXBpT3B0aW9ucywgRU1ldGhvZCwgSUhlYWRlciB9IGZyb20gXCIuL2hlbHBlcnMvaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBBcGlIZWxwZXIgfSBmcm9tIFwiLi9oZWxwZXJzL2xvY2NhbGl6ZS5hcGkuaGVscGVyXCI7XHJcblxyXG5jb25zdCBTQ0hFTUVTID0gTG9jYWxpemVUb2tlbi5odHRwSGVhZGVycztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsaXplQXBpU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYXJ0aWFsPElMb2NhbGl6ZUFwaUNvbmZpZ3M+Pih7fSk7XHJcbiAgcmVhZG9ubHkgaXNSZXF1ZXN0aW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5IGlzUmVzb2x2aW5nU3RhcnR1cFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBnZXQgaXNSZXNvbHZpbmdTdGFydHVwKCkgeyByZXR1cm4gdGhpcy5pc1Jlc29sdmluZ1N0YXJ0dXBTdWJqZWN0LnZhbHVlOyB9XHJcblxyXG4gIGdldCBuZWVkVGVuYW50KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5jb25maWcudGVuYW50VG9rZW4gIT09IHVuZGVmaW5lZDsgfVxyXG5cclxuICBnZXQgaXNSZXF1ZXN0aW5nKCkgeyByZXR1cm4gdGhpcy5pc1JlcXVlc3RpbmdTdWJqZWN0LnZhbHVlOyB9XHJcbiAgZ2V0IGlzUmV2b2tpbmdUb2tlbigpIHsgcmV0dXJuIHRoaXMubG9jYWxpemVUb2tlblNlcnZpY2UuaXNSZXZva2luZ1Rva2VuOyB9XHJcbiAgc2V0IGlzUmV2b2tpbmdUb2tlbih2YWx1ZTogYm9vbGVhbikgeyB0aGlzLmxvY2FsaXplVG9rZW5TZXJ2aWNlLmlzUmV2b2tpbmdUb2tlbiA9IHZhbHVlOyB9XHJcblxyXG4gIGdldCBhY2Nlc3NUb2tlbigpOiBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5hY2Nlc3NUb2tlbjsgfVxyXG4gIHNldCBhY2Nlc3NUb2tlbih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7IHRoaXMubG9jYWxpemVUb2tlblNlcnZpY2UuYWNjZXNzVG9rZW4gPSB2YWx1ZTsgfVxyXG5cclxuICBnZXQgcmVmcmVzaFRva2VuKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLmxvY2FsaXplVG9rZW5TZXJ2aWNlLnJlZnJlc2hUb2tlbjsgfVxyXG4gIGdldCB0ZW5hbnRUb2tlbigpOiBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS50ZW5hbnRUb2tlbjsgfVxyXG5cclxuICBwcml2YXRlIGRlZmF1bHRDb25maWc6IFBhcnRpYWw8SUxvY2FsaXplQXBpQ29uZmlncz4gPSB7XHJcbiAgICB3YWl0RWFjaFJlcXVlc3Q6IHsgbWlsbGlzZWNvbmRzOiAwIH0sXHJcbiAgICBlbmFibGVSZXF1ZXN0Q2FuY2VsbGF0aW9uOiB0cnVlLFxyXG5cclxuICAgIHJldHJ5T3B0aW9uczoge1xyXG4gICAgICBtYXhSZXRyaWVzOiAxMDAwLFxyXG4gICAgICBkZWxheTogMTAwMCxcclxuICAgICAgcmV0cnlGdW5jdGlvbjogQXBpSGVscGVyLmRlZmF1bHRSZXRyeUZ1bmN0aW9uLmJpbmQodGhpcyksXHJcbiAgICB9LFxyXG5cclxuICB9O1xyXG5cclxuICBwcml2YXRlIGdldCBjb25maWcoKTogUGFydGlhbDxJTG9jYWxpemVBcGlDb25maWdzPiB7XHJcbiAgICB0aGlzLnZhbGlkYXRlQ29uZmlnKCk7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdWJqZWN0LnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcGlPcHRpb25zOiBQYXJ0aWFsPElBcGlPcHRpb25zPiA9IHtcclxuICAgIG1ldGhvZDogRU1ldGhvZC5HRVQsXHJcbiAgICByZXF1ZXN0Qm9keTogbnVsbCxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGl6ZVRva2VuU2VydmljZTogTG9jYWxpemVUb2tlblNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHRoZSBBUEkgc2VydmljZS5cclxuICAgKiBAcGFyYW0gYXBpQ29uZmlncyAtIFRoZSBBUEkgY29uZmlndXJhdGlvbnMuXHJcbiAgICovXHJcbiAgaW5pdChhcGlDb25maWdzOiBJTG9jYWxpemVBcGlDb25maWdzKSB7XHJcbiAgICBjb25zb2xlLmxvZygnTG9jYWxpemVBcGlTZXJ2aWNlIGlzIGluaXRpYWxpemVkLicpO1xyXG4gICAgdGhpcy5jb25maWdTdWJqZWN0Lm5leHQoeyAuLi50aGlzLmRlZmF1bHRDb25maWcsIC4uLmFwaUNvbmZpZ3MgfSk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxQZW5kaW5nUmVxdWVzdHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpZy5lbmFibGVSZXF1ZXN0Q2FuY2VsbGF0aW9uXHJcbiAgICAgICYmIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgaGlnaGVyLW9yZGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGN1cnJpZWQgZnVuY3Rpb24gZm9yIG1ha2luZyBBUEkgcmVxdWVzdHMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gYmFzZVVybCAtIFRoZSBiYXNlIFVSTCBvZiB0aGUgQVBJLlxyXG4gICAqIEByZXR1cm5zIEEgY3VycmllZCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIG1ha2UgQVBJIHJlcXVlc3RzLlxyXG4gICAqL1xyXG4gIGZ1bmMgPSAoYmFzZVVybDogc3RyaW5nKSA9PlxyXG4gICAgPFQgPSBhbnk+KHBhdGg6IHN0cmluZywgbWV0aG9kOiBFTWV0aG9kID0gRU1ldGhvZC5HRVQsIHJlcUJvZHk6IGFueSA9IG51bGwsIHJlcUhlYWRlcnM/OiBJSGVhZGVyKSA9PlxyXG4gICAgICB0aGlzLnJlcXVlc3Q8VD4oYmFzZVVybCwgcGF0aCwgbWV0aG9kLCByZXFCb2R5LCByZXFIZWFkZXJzKVxyXG5cclxuICBwdWJsaWMgYXN5bmMgcmVxdWVzdDxUID0gYW55PihiYXNlVXJsOiBzdHJpbmcsXHJcbiAgICBwYXRoOiBzdHJpbmcsXHJcbiAgICBtZXRob2Q6IEVNZXRob2QgPSBFTWV0aG9kLkdFVCxcclxuICAgIHJlcUJvZHk6IGFueSA9IG51bGwsXHJcbiAgICByZXFIZWFkZXJzPzogSUhlYWRlcik6IFByb21pc2U8VD4ge1xyXG5cclxuICAgIGF3YWl0IHdhaXRVbnRpbCgoKSA9PiAhdGhpcy5pc1Jlc29sdmluZ1N0YXJ0dXAsIDUwMCk7XHJcblxyXG4gICAgYXdhaXQgQXBpSGVscGVyLmludm9rZUhvb2sodGhpcy5jb25maWcub25QcmVwYXJlUmVxdWVzdCk7XHJcblxyXG4gICAgY29uc3QgYXBpT3B0aW9ucyA9IHRoaXMuYnVpbGRBcGlPcHRpb25zKGJhc2VVcmwsIHBhdGgsIG1ldGhvZCwgcmVxQm9keSwgcmVxSGVhZGVycyk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgdGhpcy50b1dhaXRGb3JQcmV2aW91c1JlcXVlc3QoKTtcclxuXHJcbiAgICAgIHJldHVybiBhd2FpdCBBcGlIZWxwZXIucGVyZm9ybVJlcXVlc3RXaXRoUmV0cnk8VD4oXHJcbiAgICAgICAgYXBpT3B0aW9ucyxcclxuICAgICAgICB0aGlzLmNvbmZpZyxcclxuICAgICAgICB0aGlzLnBlcmZvcm1SZXF1ZXN0LmJpbmQodGhpcylcclxuICAgICAgKTtcclxuXHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVPblJlcXVlc3RFcnJvcihlcnJvciwgYXBpT3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGhhbmRsZU9uUmVxdWVzdEVycm9yKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSwgb3B0aW9uczogSUFwaU9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgaWYgKGVycm9yLnN0YXR1cyAhPT0gNDAxKVxyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuXHJcbiAgICBhd2FpdCB3YWl0VW50aWwoKCkgPT4gIXRoaXMuaXNSZXNvbHZpbmdTdGFydHVwLCA1MCk7XHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IEFwaUhlbHBlci5wZXJmb3JtUmV0cnkoe1xyXG4gICAgICBtYXhSZXRyaWVzOiAoKSA9PiAxMDAwLFxyXG4gICAgICBkZWxheTogMTAsXHJcbiAgICAgIHJldHJ5VW5sZXNzOiAoZXJyb3IpID0+IGVycm9yLnN0YXR1cyA9PT0gNDAxIHx8IEFwaUhlbHBlci5pc0Nvbm5lY3Rpb25FcnJvcihlcnJvciksXHJcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgLy8gT25seSBoYW5kbGUgNDAxIFVuYXV0aG9yaXplZCBlcnJvcnNcclxuICAgICAgICBhd2FpdCB0aGlzLnJldm9rZVRva2VuKCk7XHJcblxyXG4gICAgICAgIC8vIFJldHJ5IHRoZSByZXF1ZXN0IHdpdGggdGhlIG5ldyBhY2Nlc3MgdG9rZW5cclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wZXJmb3JtUmVxdWVzdChvcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHBlcmZvcm1SZXF1ZXN0PFQgPSBhbnk+KG9wdGlvbnM6IElBcGlPcHRpb25zKTogUHJvbWlzZTxUPiB7XHJcblxyXG4gICAgLy8gQnVpbGQgdGhlIHJlcXVlc3Qgb3B0aW9uc1xyXG4gICAgY29uc3QgYnVpbGRPcHRpb25zID0geyBoZWFkZXJzOiB0aGlzLmJ1aWxkSGVhZGVyT3B0aW9ucyhvcHRpb25zKSB9O1xyXG5cclxuICAgIC8vIENyZWF0ZSB0aGUgcmVxdWVzdCBvYnNlcnZhYmxlXHJcbiAgICBjb25zdCByZXF1ZXN0JCA9IEFwaUhlbHBlci5jcmVhdGVSZXF1ZXN0PFQ+KHtcclxuICAgICAgY2xpZW50OiB0aGlzLmh0dHBDbGllbnQsXHJcbiAgICAgIGRlc3Ryb3kkOiAoKSA9PiB0aGlzLmRlc3Ryb3kkXHJcbiAgICB9LCBvcHRpb25zLm1ldGhvZCwgb3B0aW9ucy5yZXF1ZXN0VXJsLCBvcHRpb25zLnJlcXVlc3RCb2R5LCBidWlsZE9wdGlvbnMsXHJcbiAgICAgIHRoaXMuY29uZmlnLm9uUmVzcG9uc2VCb2R5SW52YWxpZD8uYmluZCh0aGlzKSk7XHJcblxyXG4gICAgLy8gU2V0IHRoZSBpc1JlcXVlc3Rpbmcgc3RhdGUgdG8gdHJ1ZSBiZWZvcmUgbWFraW5nIHRoZSByZXF1ZXN0XHJcbiAgICB0aGlzLmlzUmVxdWVzdGluZ1N1YmplY3QubmV4dCh0cnVlKTtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT5cclxuICAgICAgcmVxdWVzdCQuc3Vic2NyaWJlKHsgbmV4dDogcmVzb2x2ZSwgZXJyb3I6IHJlamVjdCB9KSk7XHJcblxyXG4gICAgLy8gUmVzZXQgdGhlIGlzUmVxdWVzdGluZyBzdGF0ZSBhZnRlciB0aGUgcmVxdWVzdCBjb21wbGV0ZXNcclxuICAgIHRoaXMuaXNSZXF1ZXN0aW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHJldm9rZVRva2VuKCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChhd2FpdCB0aGlzLmludGVyY2VwdFJldm9rZVRva2VuKCkpXHJcbiAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgdGhpcy5pc1Jldm9raW5nVG9rZW4gPSB0cnVlO1xyXG5cclxuICAgICAgY29uc3QgYXBpT3B0aW9uczogSUFwaU9wdGlvbnMgPSB7XHJcbiAgICAgICAgLi4udGhpcy5idWlsZEFwaU9wdGlvbnModGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5jb25maWcucmVmcmVzaFRva2VuPy5yZXF1ZXN0VXJsIHx8ICcnKSxcclxuICAgICAgICByZWZyZXNoVG9rZW46IHRydWUsXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGNvbnN0IHJldm9rZVRva2VuID0gYXdhaXQgdGhpcy5wZXJmb3JtUmVxdWVzdChhcGlPcHRpb25zKTtcclxuICAgICAgY29uc3QgcmV2b2tlVG9rZW4gPSBhd2FpdCBBcGlIZWxwZXIucGVyZm9ybVJlcXVlc3RXaXRoUmV0cnkoXHJcbiAgICAgICAgYXBpT3B0aW9ucyxcclxuICAgICAgICB0aGlzLmNvbmZpZyxcclxuICAgICAgICB0aGlzLnBlcmZvcm1SZXF1ZXN0LmJpbmQodGhpcylcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlT25Ub2tlblJldm9rZWQocmV2b2tlVG9rZW4pO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgLy8gSGFuZGxlIHRoZSBlcnJvciwgbG9nIGl0XHJcbiAgICAgIGF3YWl0IEFwaUhlbHBlci5pbnZva2VIb29rKHRoaXMuY29uZmlnLm9uQXV0b0xvZ291dCk7XHJcbiAgICAgIHRocm93IGVycm9yO1xyXG5cclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIC8vIFJlc2V0IHRoZSByZXZva2luZyB0b2tlbiBzdGF0ZVxyXG4gICAgICB0aGlzLmlzUmV2b2tpbmdUb2tlbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIGRlZmF1bHQgaHR0cCByZXF1ZXN0IG9wdGlvbnMgKi9cclxuICBwcml2YXRlIGJ1aWxkSGVhZGVyT3B0aW9ucyhvcHRpb25zOiBJQXBpT3B0aW9ucyk6IEh0dHBIZWFkZXJzIHtcclxuXHJcbiAgICBjb25zdCBoZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xyXG4gICAgICAuLi4ob3B0aW9ucy5yZWZyZXNoVG9rZW4gJiYgeyBbU0NIRU1FUy5YX1JFRlJFU0hfVE9LRU5dOiBgJHt0aGlzLnJlZnJlc2hUb2tlbn1gIH0pLFxyXG4gICAgICAuLi4oIW9wdGlvbnMuaXNGb3JtRGF0YSAmJiB7IFtTQ0hFTUVTLkNPTlRFTlRfVFlQRV06ICdhcHBsaWNhdGlvbi9qc29uJyB9KSxcclxuICAgICAgW1NDSEVNRVMuQVVUSE9SSVpBVElPTl06IGBCZWFyZXIgJHt0aGlzLmFjY2Vzc1Rva2VufWAsXHJcbiAgICAgIC4uLih0aGlzLm5lZWRUZW5hbnQgJiYgeyBbU0NIRU1FUy5YX1RFTkFOVF06IGAke3RoaXMudGVuYW50VG9rZW59YCB9KVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHsgLi4uaGVhZGVycywgLi4ub3B0aW9ucy5oZWFkZXJzIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEFwaU9wdGlvbnMoXHJcbiAgICBiYXNlVXJsOiBzdHJpbmcsXHJcbiAgICBwYXRoOiBzdHJpbmcgPSAnJyxcclxuICAgIG1ldGhvZDogRU1ldGhvZCA9IEVNZXRob2QuR0VULFxyXG4gICAgcmVxdWVzdEJvZHk6IGFueSA9IG51bGwsXHJcbiAgICBoZWFkZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxyXG4gICk6IElBcGlPcHRpb25zIHtcclxuXHJcbiAgICBjb25zdCByZXF1ZXN0VXJsID0gQXBpSGVscGVyLmJ1aWxkVXJsKGJhc2VVcmwsIHBhdGgpO1xyXG4gICAgY29uc3QgaXNGb3JtRGF0YSA9IHJlcXVlc3RCb2R5ICYmIHJlcXVlc3RCb2R5IGluc3RhbmNlb2YgRm9ybURhdGE7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi50aGlzLmFwaU9wdGlvbnMsXHJcbiAgICAgIC4uLnsgaGVhZGVycywgbWV0aG9kLCByZXF1ZXN0VXJsLCByZXF1ZXN0Qm9keSwgaXNGb3JtRGF0YSB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdG9XYWl0Rm9yUHJldmlvdXNSZXF1ZXN0KCkge1xyXG4gICAgaWYgKHRoaXMuaXNSZXZva2luZ1Rva2VuKSB7XHJcbiAgICAgIGF3YWl0IHdhaXRVbnRpbCgoKSA9PiAhdGhpcy5pc1Jldm9raW5nVG9rZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRvIHdhaXQgZm9yIGVhY2ggcmVxdWVzdCBpbiA1MG1zLCBldmVuIGlmIHRoZSByZXF1ZXN0IGlzIG5vdCBjb21wbGV0ZWRcclxuICAgIGNvbnN0IHdhaXRNaWxsaXNlY29uZHMgPSB0aGlzLmNvbmZpZy53YWl0RWFjaFJlcXVlc3Q/Lm1pbGxpc2Vjb25kcztcclxuICAgIGlmICh3YWl0TWlsbGlzZWNvbmRzICYmIHRoaXMuaXNSZXF1ZXN0aW5nKSB7XHJcbiAgICAgIC8vIGNvbnNvbGUud2FybihgUmVxdWVzdCB0aHJvdHRsaW5nOiBBbm90aGVyIHJlcXVlc3QgaXMgaW4gcHJvZ3Jlc3MuIFdhaXRpbmcgZm9yICR7d2FpdE1pbGxpc2Vjb25kc31tcy5gKTtcclxuICAgICAgYXdhaXQgd2FpdEZvcih3YWl0TWlsbGlzZWNvbmRzLCB0aGlzLmlzUmVxdWVzdGluZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVPblRva2VuUmV2b2tlZChyZXNwb25zZTogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG4gICAgaWYgKHJlc3BvbnNlPy5zdGF0dXMpIHtcclxuICAgICAgLy8gSWYgdGhlIHJlc3BvbnNlIGlzIHN1Y2Nlc3NmdWwsIHVwZGF0ZSB0aGUgYWNjZXNzIHRva2VuXHJcbiAgICAgIHRoaXMuYWNjZXNzVG9rZW4gPSByZXNwb25zZS5tZXNzYWdlO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIElmIHRoZSByZXNwb25zZSBpbmRpY2F0ZXMgYW4gZXJyb3IsIGludm9rZSB0aGUgb25SZXZva2VVbmF1dGhvcml6ZWQgaG9va1xyXG4gICAgICBjb25zb2xlLndhcm4oJ1Rva2VuIHJldm9jYXRpb24gZmFpbGVkLCByZWZyZXNoIHRva2VuIGlzIGV4cGlyZWQuJywgcmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIGF3YWl0IEFwaUhlbHBlci5pbnZva2VIb29rKHRoaXMuY29uZmlnLm9uUmV2b2tlVW5hdXRob3JpemVkKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGludGVyY2VwdFJldm9rZVRva2VuKCkge1xyXG5cclxuICAgIGlmICh0aGlzLmlzUmV2b2tpbmdUb2tlbikge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ1Rva2VuIGlzIGFscmVhZHkgYmVpbmcgcmV2b2tlZC4gV2FpdGluZyBmb3IgdGhlIGN1cnJlbnQgb3BlcmF0aW9uIHRvIGNvbXBsZXRlLi4uJyk7XHJcbiAgICAgIGF3YWl0IHdhaXRVbnRpbCgoKSA9PiAhdGhpcy5pc1Jldm9raW5nVG9rZW4pO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMucmVmcmVzaFRva2VuKSB7XHJcbiAgICAgIC8vIGF3YWl0IEFwaUhlbHBlci5pbnZva2VIb29rKHRoaXMuYXBpQ29uZmlncy5vbkF1dG9Mb2dvdXQpO1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZnJlc2ggdG9rZW4gaXMgbWlzc2luZy4gUGxlYXNlIGxvZ2luIGFnYWluLicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVDb25maWcoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5jb25maWcucmVxdWlyZWRUZW5hbnRcclxuICAgICAgJiYgIXRoaXMubG9jYWxpemVUb2tlblNlcnZpY2UuY29uZmlnLnRlbmFudFRva2VuPy5uYW1lPy50cmltKCkubGVuZ3RoKSB7XHJcbiAgICAgIHRocm93IEVycm9yKCdUZW5hbnQgdG9rZW4gaXMgcmVxdWlyZWQgYnV0IHRlbmFudFRva2VuTmFtZSBpcyBub3QgY29uZmlndXJlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5jb25maWcucmVmcmVzaFRva2VuPy5yZXF1ZXN0VXJsPy50cmltKCkubGVuZ3RoKSB7XHJcbiAgICAgIHRocm93IEVycm9yKCdSZXZva2UgdG9rZW4gVVJMIGlzIG5vdCBjb25maWd1cmVkIC0gdG9rZW4gcmVmcmVzaCB3aWxsIG5vdCB3b3JrJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -5,7 +5,7 @@ import * as i0 from '@angular/core';
|
|
|
5
5
|
import { Injectable, Component, ViewEncapsulation, ChangeDetectorRef, Injector, NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
6
6
|
import { MessageService } from 'primeng/api';
|
|
7
7
|
import { DynamicDialogRef, DynamicDialogConfig, DialogService } from 'primeng/dynamicdialog';
|
|
8
|
-
import { BehaviorSubject, takeUntil, catchError, throwError, Subject } from 'rxjs';
|
|
8
|
+
import { BehaviorSubject, takeUntil, map, catchError, throwError, Subject } from 'rxjs';
|
|
9
9
|
import * as jwt_decode from 'jwt-decode';
|
|
10
10
|
import { DomSanitizer, BrowserModule } from '@angular/platform-browser';
|
|
11
11
|
import { CommonModule } from '@angular/common';
|
|
@@ -873,8 +873,8 @@ class LocalizeApiHelper {
|
|
|
873
873
|
}
|
|
874
874
|
});
|
|
875
875
|
}
|
|
876
|
-
createRequest(instance, method, url, body, options) {
|
|
877
|
-
const request$ = instance.client.request(method, url, Object.assign(Object.assign({}, options), { body
|
|
876
|
+
createRequest(instance, method, url, body, options, onInvalidResponseBody) {
|
|
877
|
+
const request$ = instance.client.request(method, url, Object.assign(Object.assign({}, options), { body })).pipe(takeUntil(instance.destroy$()), map((body) => extractJsonFromResponse(body, onInvalidResponseBody)), catchError((error) => {
|
|
878
878
|
// Convert to a non-observable error to handle in the promise
|
|
879
879
|
return throwError(() => error);
|
|
880
880
|
}));
|
|
@@ -1035,6 +1035,27 @@ class LocalizeApiHelper {
|
|
|
1035
1035
|
styleElement === null || styleElement === void 0 ? void 0 : styleElement.remove();
|
|
1036
1036
|
}
|
|
1037
1037
|
}
|
|
1038
|
+
function extractJsonFromResponse(body, onError) {
|
|
1039
|
+
// If already an object, just return
|
|
1040
|
+
if (typeof body === 'object' && body !== null)
|
|
1041
|
+
return body;
|
|
1042
|
+
// If it's a string, try to extract JSON portion
|
|
1043
|
+
if (typeof body === 'string') {
|
|
1044
|
+
const firstBrace = body.indexOf('{');
|
|
1045
|
+
if (firstBrace !== -1) {
|
|
1046
|
+
const jsonString = body.substring(firstBrace);
|
|
1047
|
+
try {
|
|
1048
|
+
return JSON.parse(jsonString);
|
|
1049
|
+
}
|
|
1050
|
+
catch (e) {
|
|
1051
|
+
// If parsing fails, return original string
|
|
1052
|
+
onError === null || onError === void 0 ? void 0 : onError(body);
|
|
1053
|
+
return body;
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
return body;
|
|
1058
|
+
}
|
|
1038
1059
|
const ApiHelper = new LocalizeApiHelper();
|
|
1039
1060
|
|
|
1040
1061
|
const SCHEMES = LocalizeToken.httpHeaders;
|
|
@@ -1129,6 +1150,7 @@ class LocalizeApiService {
|
|
|
1129
1150
|
});
|
|
1130
1151
|
}
|
|
1131
1152
|
performRequest(options) {
|
|
1153
|
+
var _a;
|
|
1132
1154
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1133
1155
|
// Build the request options
|
|
1134
1156
|
const buildOptions = { headers: this.buildHeaderOptions(options) };
|
|
@@ -1136,10 +1158,10 @@ class LocalizeApiService {
|
|
|
1136
1158
|
const request$ = ApiHelper.createRequest({
|
|
1137
1159
|
client: this.httpClient,
|
|
1138
1160
|
destroy$: () => this.destroy$
|
|
1139
|
-
}, options.method, options.requestUrl, options.requestBody, buildOptions);
|
|
1161
|
+
}, options.method, options.requestUrl, options.requestBody, buildOptions, (_a = this.config.onResponseBodyInvalid) === null || _a === void 0 ? void 0 : _a.bind(this));
|
|
1140
1162
|
// Set the isRequesting state to true before making the request
|
|
1141
1163
|
this.isRequestingSubject.next(true);
|
|
1142
|
-
const response = yield new Promise((resolve, reject) => request$.subscribe({ next:
|
|
1164
|
+
const response = yield new Promise((resolve, reject) => request$.subscribe({ next: resolve, error: reject }));
|
|
1143
1165
|
// Reset the isRequesting state after the request completes
|
|
1144
1166
|
this.isRequestingSubject.next(false);
|
|
1145
1167
|
return response;
|