tnx-shared 5.0.75 → 5.0.77
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/tnx-shared.umd.js +408 -104
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/form-schema.d.ts +20 -0
- package/classes/form-schema.d.ts.map +1 -1
- package/classes/public-function.d.ts +1 -1
- package/components/address/address.component.d.ts.map +1 -1
- package/components/address-new/address-new.component.d.ts +37 -0
- package/components/address-new/address-new.component.d.ts.map +1 -0
- package/components/address-new/address-new.component.ngfactory.d.ts.map +1 -0
- package/components/address-new/address-new.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/components/address-new/models/don-vi-hanh-chinh.d.ts +6 -0
- package/components/address-new/models/don-vi-hanh-chinh.d.ts.map +1 -0
- package/components/address-new/services/address.service.d.ts +8 -0
- package/components/address-new/services/address.service.d.ts.map +1 -0
- package/components/address-new/services/address.service.ngfactory.d.ts.map +1 -0
- package/components/crud/crud-form/crud-form.component.d.ts +2 -2
- package/components/crud/crud-form/crud-form.component.d.ts.map +1 -1
- package/esm2015/classes/form-schema.js +26 -1
- package/esm2015/components/address/address.component.js +10 -4
- package/esm2015/components/address-new/address-new.component.js +224 -0
- package/esm2015/components/address-new/models/don-vi-hanh-chinh.js +8 -0
- package/esm2015/components/address-new/services/address.service.js +25 -0
- package/esm2015/components/crud/crud-form/crud-form.component.js +11 -3
- package/esm2015/components/file-explorer/services/file-explorer.service.js +2 -2
- package/esm2015/components/file-explorer/signature-detail/signature-detail.component.js +2 -2
- package/esm2015/tnx-shared.js +98 -96
- package/esm2015/tnx-shared.module.js +3 -1
- package/fesm2015/tnx-shared.js +287 -9
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/tnx-shared.d.ts +97 -95
- package/tnx-shared.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
- package/tnx-shared.module.d.ts +2 -1
- package/tnx-shared.module.d.ts.map +1 -1
- package/tnx-shared.module.ngfactory.d.ts.map +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { HttpClient } from '@angular/common/http';
|
|
3
3
|
import { Injectable } from '@angular/core';
|
|
4
|
-
import printJS_ from 'print-js';
|
|
4
|
+
import * as printJS_ from 'print-js';
|
|
5
5
|
import { catchError, retry, shareReplay } from 'rxjs/operators';
|
|
6
6
|
import { AuthenService } from '../../../services/authen.service';
|
|
7
7
|
import { CommonService } from '../../../services/common.service';
|
|
@@ -447,4 +447,4 @@ FileExplorerService.ctorParameters = () => [
|
|
|
447
447
|
{ type: ModuleConfigService },
|
|
448
448
|
{ type: NotifierService }
|
|
449
449
|
];
|
|
450
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1leHBsb3Jlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWV4cGxvcmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUc5RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUsvRSxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7O0FBRXJFLHFCQUFxQjtBQUNyQixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUM7QUFLekIsTUFBTSxPQUFPLG1CQUFtQjtJQVE3QixZQUNXLEtBQWlCLEVBQ2pCLGFBQWtDLEVBQ2xDLGNBQTZCLEVBQzdCLGNBQTZCLEVBQzdCLG9CQUF5QyxFQUN6QyxnQkFBaUM7UUFMakMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFDbEMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IseUJBQW9C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QUM7SUFDRCxtQkFBbUIsQ0FBQyxRQUFnQixFQUFFLFlBQW9CO1FBQ3ZELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQzs7OztZQTFrQkgsVUFBVSxTQUFDO2dCQUNULFVBQVUsRUFBRSxNQUFNO2FBQ3BCOzs7WUF2QlEsVUFBVTtZQU9WLG1CQUFtQjtZQUZuQixhQUFhO1lBQ2IsYUFBYTtZQUNiLG1CQUFtQjtZQVNuQixlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHByaW50SlNfIGZyb20gJ3ByaW50LWpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgcmV0cnksIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZXNwb25zZS1yZXN1bHQnO1xyXG5pbXBvcnQgeyBBdXRoZW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aGVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kdWxlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29weUZpbGVEdG8gfSBmcm9tICcuLi9tb2RlbHMvY29weS1maWxlLWR0byc7XHJcbmltcG9ydCB7IEZvbGRlckNyZWF0ZUFuZFNldFBlcm1pc3Npb25EVE8gfSBmcm9tICcuLi9tb2RlbHMvZm9sZGVyLWNyZWF0ZS1hbmQtc2V0LXBlcm1pc3Npb24tZHRvJztcclxuaW1wb3J0IHsgR2VuZXJhdGVMaW5rRG93bmxvYWREVE8gfSBmcm9tICcuLi9tb2RlbHMvZ2VuZXJhdGUtbGluay1kb3dubG9hZC1kdG8nO1xyXG5pbXBvcnQgeyBNb3ZlRmlsZURUTyB9IGZyb20gJy4uL21vZGVscy9tb3ZlLWZpbGUtZHRvJztcclxuaW1wb3J0IHsgU2VydmljZVJlcXVlc3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zZXJ2aWNlLXJlcXVlc3QtbW9kZWwnO1xyXG5pbXBvcnQgeyBTaGFyZUZpbGVEVE8gfSBmcm9tICcuLi9tb2RlbHMvc2hhcmUtZmlsZS1kdG8nO1xyXG5pbXBvcnQgeyBTaGFyZUZvbGRlckRUTyB9IGZyb20gJy4uL21vZGVscy9zaGFyZS1mb2xkZXItZHRvJztcclxuaW1wb3J0IEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm90aWZpZXIuc2VydmljZSc7XHJcblxyXG4vLyBmaXggZm9yIGJ1aWxkIHByb2RcclxuY29uc3QgcHJpbnRKUyA9IHByaW50SlNfO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVFeHBsb3JlclNlcnZpY2Uge1xyXG5cclxuICAgcmVhZG9ubHkgUkVUUllfQ09VTlQ6IG51bWJlciA9IDA7XHJcbiAgIHJlYWRvbmx5IFJFUExBWV9DT1VOVDogbnVtYmVyID0gMTtcclxuXHJcbiAgIHByaXZhdGUgX3NlcnZpY2VVcmk6IHN0cmluZztcclxuICAgX2RvY3VtZW50U2VydmVyVXJsOiBhbnk7XHJcblxyXG4gICBjb25zdHJ1Y3RvcihcclxuICAgICAgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgcHJpdmF0ZSBfbW9kdWxlQ29uZmlnOiBNb2R1bGVDb25maWdTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIF9hdXRoZW5TZXJ2aWNlOiBBdXRoZW5TZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIF9jb21tb25TZXJpdmNlOiBDb21tb25TZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIF9ub3RpZmllclNlcnZpY2U6IE5vdGlmaWVyU2VydmljZVxyXG4gICApIHtcclxuICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5fbW9kdWxlQ29uZmlnLmdldENvbmZpZygpO1xyXG5cclxuICAgICAgdGhpcy5fc2VydmljZVVyaSA9IGAke2NvbmZpZy5lbnZpcm9ubWVudC5hcGlEb21haW4uZmlsZUVuZHBvaW50fS8ke2NvbmZpZy5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufWA7XHJcblxyXG4gICAgICB0aGlzLl9kb2N1bWVudFNlcnZlclVybCA9IHRoaXMuX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLmRvY3VtZW50U2VydmVyO1xyXG4gICB9XHJcblxyXG4gICBnZXRNeUZpbGVzKCk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0dldE15RmlsZXNgO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRTZXJ2aWNlRm9sZGVySWQobW9kZWw6IFNlcnZpY2VSZXF1ZXN0TW9kZWwpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRm9sZGVyL0dldFNlcnZpY2VGb2xkZXI/c2VydmljZT0ke21vZGVsLnNlcnZpY2V9JmVudGl0eT0ke21vZGVsLmVudGl0eX0mZW50aXR5SW5zdGFuY2VJZD0ke21vZGVsLmVudGl0eUluc3RhbmNlSWR9YDtcclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybClcclxuICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKSlcclxuICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBkZWxldGVTZXJ2aWNlRm9sZGVyKG1vZGVsOiBTZXJ2aWNlUmVxdWVzdE1vZGVsKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci9EZWxldGVTZXJ2aWNlRm9sZGVyP3NlcnZpY2U9JHttb2RlbC5zZXJ2aWNlfSZlbnRpdHk9JHttb2RlbC5lbnRpdHl9JmVudGl0eUluc3RhbmNlSWQ9JHttb2RlbC5lbnRpdHlJbnN0YW5jZUlkfWA7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmRlbGV0ZTxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpXHJcbiAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSkpXHJcbiAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0QnlGb2xkZXJJZChmb2xkZXJJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBpZiAoZm9sZGVySWQgPT0gJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCcpIHtcclxuICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHsgc3RhdHVzOiA0MDAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZT9mb2xkZXJJZD0ke2ZvbGRlcklkfWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICBzaGFyZVJlcGxheSh0aGlzLlJFUExBWV9DT1VOVCksXHJcbiAgICAgICAgIHJldHJ5KHRoaXMuUkVUUllfQ09VTlQpLFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGdldE15RHJpdmUoZm9sZGVySWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgaWYgKGZvbGRlcklkID09ICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnKSB7XHJcbiAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7IHN0YXR1czogNDAwIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvR2V0TXlEcml2ZT9mb2xkZXJJZD0ke2ZvbGRlcklkfWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICBzaGFyZVJlcGxheSh0aGlzLlJFUExBWV9DT1VOVCksXHJcbiAgICAgICAgIHJldHJ5KHRoaXMuUkVUUllfQ09VTlQpLFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGdldE15U2hhcmUodXNlcklkOiBudW1iZXIpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGlmICh1c2VySWQgPCAwKSB7XHJcbiAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7IHN0YXR1czogNDAwIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci9HZXRNeVNoYXJlP3VzZXJJZD0ke3VzZXJJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG5cclxuXHJcbiAgIGdldE15U2hhcmVUb090aGVyKG93bmVySWQ6IG51bWJlcik6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgaWYgKG93bmVySWQgPCAwKSB7XHJcbiAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7IHN0YXR1czogNDAwIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci9HZXRNeVNoYXJlVG9PdGhlcj9vd25lcklkPSR7b3duZXJJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRGb2xkZXJUcmVlKGZvbGRlcklkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGlmIChmb2xkZXJJZCA9PSAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJykge1xyXG4gICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoeyBzdGF0dXM6IDQwMCB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgYXBpVXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9HZXRUcmVlP2ZvbGRlcklkPSR7Zm9sZGVySWR9YDtcclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihhcGlVcmwpXHJcbiAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSkpXHJcbiAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgY29weUZpbGUoY29weUZpbGVEdG86IENvcHlGaWxlRHRvKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvQ29weUZpbGVgO1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgY29weUZpbGVEdG8pLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgY29udmVydERvY3VtZW50VG9QZGZBbmRTYXZlKGNvcHlGaWxlRHRvOiBDb3B5RmlsZUR0byk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0NvbnZlcnREb2N1bWVudFRvUGRmQW5kU2F2ZWA7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCBjb3B5RmlsZUR0bykucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBjcmVhdGVOZXdGb2xkZXIoZm9sZGVyOiBGb2xkZXJDcmVhdGVBbmRTZXRQZXJtaXNzaW9uRFRPKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlcmA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgZm9sZGVyKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGRlbGV0ZUZvbGRlcihmb2xkZXJJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci8ke2ZvbGRlcklkfWA7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmRlbGV0ZTxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZGVsZXRlTXVsdGlwbGVGb2xkZXIoZm9sZGVySWRzKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci9kZWxldGVNdWx0aXBsZUZvbGRlcmA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgZm9sZGVySWRzKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIHJlbmFtZUZvbGRlcihmb2xkZXJJZDogc3RyaW5nLCBuZXdGb2xkZXJOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRm9sZGVyLyR7Zm9sZGVySWR9L1JlbmFtZUZvbGRlci8ke25ld0ZvbGRlck5hbWV9YDtcclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucGF0Y2g8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCB7fSkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBzaGFyZUZvbGRlcihzaGFyZUZvbGRlcjogU2hhcmVGb2xkZXJEVE8pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRm9sZGVyL1NoYXJlRm9sZGVyYDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCBzaGFyZUZvbGRlcikucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBkZWxldGVTaGFyZUZvbGRlcihmb2xkZXJJZDogc3RyaW5nLCBvYmplY3RJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci8ke2ZvbGRlcklkfS9EZWxldGVTaGFyZUZvbGRlci8ke29iamVjdElkfWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGU8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGdldFVwbG9hZFVybCgpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3RgO1xyXG4gICB9XHJcblxyXG4gICBnZXRTZXJ2aWNlQ3JlYXRlRmlsZSgpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvQ3JlYXRlU2VydmljZUZpbGVgO1xyXG4gICB9XHJcblxyXG4gICBnZXRGaWxlRG93bmxvYWRVcmwoZmlsZUlkOiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvcHVibGljLyR7ZmlsZUlkfS9kb3dubG9hZGA7XHJcbiAgIH1cclxuXHJcbiAgIGdldEJpbmFyeUZpbGVCeUZpbGVJZChmaWxlSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgIHRoaXMuX2h0dHAuZ2V0KHRoaXMuZ2V0RmlsZURvd25sb2FkVXJsKGZpbGVJZCkpLnRvUHJvbWlzZSgpLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhycyk7XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgICB9KS5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xyXG4gICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgZ2V0U2NhbkZpbGVVcGxvYWRFbmRwb2ludChjb3JyZWxhdGlvbklkOiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvQ3JlYXRlU2Nhbm5lZEZpbGUvJHtjb3JyZWxhdGlvbklkfWA7XHJcbiAgIH1cclxuXHJcbiAgIGdldEZpbGUoZmlsZUlkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC8ke2ZpbGVJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBhc3luYyBnZXRCYXNlNjRGcm9tRmlsZUlkKGZpbGVJZDogc3RyaW5nLCBpc0ZpbGVWZXJzaW9uOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICBjb25zdCBsaW5rID0gYXdhaXQgdGhpcy5nZW5lcmF0ZUxpbmtEb3dubG9hZCh7XHJcbiAgICAgICAgIGZpbGVJZCxcclxuICAgICAgICAgaXNGaWxlVmVyc2lvblxyXG4gICAgICB9IGFzIEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPKTtcclxuICAgICAgY29uc3QgdXJsRG93bmxvYWQgPSB0aGlzLmdldEFub255bW91c0Rvd25sb2FkVXJsKGxpbmsuZGF0YSk7XHJcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEJhc2U2NEltYWdlRnJvbVVybCh1cmxEb3dubG9hZCk7XHJcbiAgIH1cclxuXHJcbiAgIGFzeW5jIGdldEJhc2U2NEltYWdlRnJvbVVybChpbWFnZVVybCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGltYWdlVXJsKTtcclxuICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IHJlcy5ibG9iKCk7XHJcblxyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG4gICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgIH07XHJcblxyXG4gICAgICAgICByZWFkZXIub25lcnJvciA9ICgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlamVjdCgnJyk7XHJcbiAgICAgICAgIH07XHJcbiAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpO1xyXG4gICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgYXN5bmMgZ2V0QmFzZTY0RnJvbUZpbGVJZFRvVXJsKGZpbGVJZDogc3RyaW5nLCBpc0ZpbGVWZXJzaW9uOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICBjb25zdCBsaW5rID0gYXdhaXQgdGhpcy5nZW5lcmF0ZUxpbmtEb3dubG9hZCh7XHJcbiAgICAgICAgIGZpbGVJZCxcclxuICAgICAgICAgaXNGaWxlVmVyc2lvblxyXG4gICAgICB9IGFzIEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0QW5vbnltb3VzRG93bmxvYWRVcmwobGluay5kYXRhKTtcclxuICAgfVxyXG5cclxuICAgZ2V0RmlsZVZlcnNpb25Eb3dubG9hZFVybChmaWxlVmVyc2lvbklkOiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVWZXJzaW9uLyR7ZmlsZVZlcnNpb25JZH0vZG93bmxvYWRgO1xyXG4gICB9XHJcblxyXG4gICBnZXRBbm9ueW1vdXNEb3dubG9hZFVybChoYXNoOiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0Rvd25sb2FkTGluay8ke2hhc2h9YDtcclxuICAgfVxyXG5cclxuICAgZ2V0RG93bmxvYWRGb3JTaWduVXJsKGhhc2g6IHN0cmluZykge1xyXG4gICAgICByZXR1cm4gYCR7dGhpcy5fc2VydmljZVVyaX0vRG93bmxvYWRMaW5rL2Rvd25sb2FkZm9yc2lnbi8ke2hhc2h9YDtcclxuICAgfVxyXG5cclxuICAgZ2VuZXJhdGVMaW5rRG93bmxvYWQobW9kZWw6IEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0Rvd25sb2FkTGluay9HZW5lcmF0ZURvd25sb2FkTGlua2A7XHJcblxyXG4gICAgICBpZiAobW9kZWwuaXNGaWxlVmVyc2lvbiAmJiAhbW9kZWwuZmlsZVZlcnNpb25JZCkge1xyXG4gICAgICAgICBtb2RlbC5maWxlVmVyc2lvbklkID0gbW9kZWwuZmlsZUlkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgbW9kZWwpLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSkpLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG5cclxuICAgZG93bmxvYWRGaWxlKGZpbGVJZDogc3RyaW5nLCBpc0ZpbGVWZXJzaW9uOiBib29sZWFuID0gZmFsc2UsIGZpbGVOYW1lPykge1xyXG4gICAgICBjb25zdCBtb2RlbCA9IG5ldyBHZW5lcmF0ZUxpbmtEb3dubG9hZERUTygpO1xyXG4gICAgICBtb2RlbC5maWxlSWQgPSBmaWxlSWQ7XHJcbiAgICAgIG1vZGVsLmlzRmlsZVZlcnNpb24gPSBpc0ZpbGVWZXJzaW9uO1xyXG4gICAgICB0aGlzLmdlbmVyYXRlTGlua0Rvd25sb2FkKG1vZGVsKS50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgY29uc3QgZG93bmxvYWRVcmwgPSB0aGlzLmdldEFub255bW91c0Rvd25sb2FkVXJsKHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICBpZiAoZmlsZU5hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5zYXZlV2l0aEZpbGVOYW1lKGRvd25sb2FkVXJsLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKGRvd25sb2FkVXJsKTtcclxuICAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgLyoqXHJcbiAgICAqIFNhdmUgZmlsZSB04bqjaSB04burIHNlcnZlciB24bubaSB0w6puIMSRxrDhu6NjIHRydXnhu4FuIHbDoG8sIGNobyBwaMOpcCBsxrB1IGPhuqMgYXVkaW8sIHZpZGVvLlxyXG4gICAgKi9cclxuICAgc2F2ZVdpdGhGaWxlTmFtZSh1cmwsIGZpbGVOYW1lKSB7XHJcbiAgICAgIHRoaXMuX2h0dHAuZ2V0PGFueT4odXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIGFzICdqc29uJyB9KVxyXG4gICAgICAgICAudG9Qcm9taXNlKClcclxuICAgICAgICAgLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICBGaWxlU2F2ZXIuc2F2ZUFzKHJzLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgIH0pXHJcbiAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ0zhu5dpIHThuqNpIGZpbGUnKTtcclxuICAgICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIGdlbmVyYXRlTGlua0Rvd25sb2FkTXVsdGlwbGUobW9kZWw6IEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPW10pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRG93bmxvYWQvR2VuZXJhdGVEb3dubG9hZE11bHRpcGxlTGlua2A7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgbW9kZWwpLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSkpLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBkb3dubG9hZEZvbGRlcihmb2xkZXJJZDogc3RyaW5nKSB7XHJcbiAgICAgIGNvbnN0IG1vZGVsID0gbmV3IEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPKCk7XHJcbiAgICAgIG1vZGVsLmZvbGRlcklkID0gZm9sZGVySWQ7XHJcbiAgICAgIHRoaXMuZ2VuZXJhdGVMaW5rRG93bmxvYWRNdWx0aXBsZShbbW9kZWxdKS50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgY29uc3QgZG93bmxvYWRVcmwgPSB0aGlzLmdldEFub255bW91c0Rvd25sb2FkVXJsKHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICB3aW5kb3cub3Blbihkb3dubG9hZFVybCk7XHJcbiAgICAgIH0pO1xyXG4gICB9XHJcblxyXG4gICBnZXRCaW5hcnlGaWxlKGxpbmtEb3dubG9hZDogc3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldChsaW5rRG93bmxvYWQpLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBzZXRNb3ZlRmlsZUl0ZW0obW92ZUZpbGU6IE1vdmVGaWxlRFRPKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvTW92ZUZpbGVgO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIG1vdmVGaWxlKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGRlbGV0ZUZpbGUoZmlsZUlkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9GaWxlLyR7ZmlsZUlkfWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGU8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGRlbGV0ZU11bHRpcGxlRmlsZShmaWxlSWRzKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvZGVsZXRlTXVsdGlwbGVGaWxlYDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCBmaWxlSWRzKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIHJlbmFtZUZpbGUoZmlsZUlkOiBzdHJpbmcsIG5ld0ZpbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC8ke2ZpbGVJZH0vUmVuYW1lRmlsZS8ke25ld0ZpbGVOYW1lfWA7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBhdGNoPFJlc3BvbnNlUmVzdWx0PihzdlVybCwge30pLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgc2hhcmVGaWxlKHNoYXJlRmlsZTogU2hhcmVGaWxlRFRPKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvU2hhcmVGaWxlYDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCBzaGFyZUZpbGUpLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZGVsZXRlU2hhcmVGaWxlKGZpbGVJZDogc3RyaW5nLCBvYmplY3RJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvJHtmaWxlSWR9L0RlbGV0ZVNoYXJlRmlsZS8ke29iamVjdElkfWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGU8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGdldFNoYXJlZEZpbGVzKGZvbGRlcklkPzogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBsZXQgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0dldE15U2hhcmVkRmlsZXNgO1xyXG4gICAgICBpZiAoZm9sZGVySWQpIHtcclxuICAgICAgICAgc3ZVcmwgPSBgJHtzdlVybH0/Zm9sZGVySWQ9JHtmb2xkZXJJZH1gO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICBzaGFyZVJlcGxheSh0aGlzLlJFUExBWV9DT1VOVCksXHJcbiAgICAgICAgIHJldHJ5KHRoaXMuUkVUUllfQ09VTlQpLFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGdldFVzZXJTaGFyaW5nQnlGaWxlKGZpbGVJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBsZXQgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0dldFVzZXJTaGFyaW5nQnlGaWxlYDtcclxuICAgICAgaWYgKGZpbGVJZCkge1xyXG4gICAgICAgICBzdlVybCA9IGAke3N2VXJsfT9maWxlSWQ9JHtmaWxlSWR9YDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRGb2xkZXJJZCh1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgbGV0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRm9sZGVyL0dldEZvbGRlcklkYDtcclxuICAgICAgaWYgKHVzZXJJZCkge1xyXG4gICAgICAgICBzdlVybCA9IGAke3N2VXJsfT91c2VySWQ9JHt1c2VySWR9YDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICBzaGFyZVJlcGxheSh0aGlzLlJFUExBWV9DT1VOVCksXHJcbiAgICAgICAgIHJldHJ5KHRoaXMuUkVUUllfQ09VTlQpLFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcblxyXG4gICBpc1N1cHBvcnRlZFZpZXdPbmxpbmUoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAvLyBmaWxlIGtow7RuZyBjw7MgxJF14buVaSAtPiBsb+G6oWlcclxuICAgICAgaWYgKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgPT09IC0xKSB7XHJcbiAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgZmlsZVR5cGUgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEpO1xyXG5cclxuICAgICAgaWYgKCgvKGdpZnxqcGd8anBlZ3x0aWZmfHBuZykkL2kpLnRlc3QoZmlsZVR5cGUpKSB7XHJcbiAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKCgvKGRvY3xkb2NtfGRvY3h8ZG90fGRvdG18ZG90eHxlcHVifGZvZHR8aHRtfGh0bWx8bWh0fG9kdHxvdHR8cGRmfHJ0Znx0eHR8ZGp2dXx4cHMpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICgoLyhjc3Z8Zm9kc3xvZHN8b3RzfHhsc3x4bHNtfHhsc3h8eGx0fHhsdG18eGx0eCkkL2kpLnRlc3QoZmlsZVR5cGUpKSB7XHJcbiAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKCgvKGZvZHB8b2RwfG90cHxwb3R8cG90bXxwb3R4fHBwc3xwcHNtfHBwc3h8cHB0fHBwdG18cHB0eCkkL2kpLnRlc3QoZmlsZVR5cGUpKSB7XHJcbiAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKCgvKG1wNHxtb3Z8YXZpfHdtdnx2b2J8cm18YXNmfDNncCkkL2kpLnRlc3QoZmlsZVR5cGUpKSB7XHJcbiAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKCgvKG1wM3x3bWF8d2F2fHdtdnxvZ2cpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICB9XHJcblxyXG4gICBnZXRGaWxlVHlwZShmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgaWYgKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgPT09IC0xKSB7XHJcbiAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgYXJyID0gZmlsZU5hbWUuc3BsaXQoJy4nKTtcclxuICAgICAgcmV0dXJuIGFyclthcnIubGVuZ3RoIC0gMV07XHJcbiAgIH1cclxuXHJcbiAgIGNvbnZlcnRUb1BkZihmaWxlTmFtZTogc3RyaW5nLCBmaWxlSWQ6IHN0cmluZywgaXNGaWxlVmVyc2lvbjogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgIGNvbnN0IGNvbnZlcnRTZXJ2aWNlID0gYCR7dGhpcy5fc2VydmljZVVyaX0vQ29udmVydC9Db252ZXJ0RG9jdW1lbnRUb1BkZmA7XHJcbiAgICAgICAgIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oY29udmVydFNlcnZpY2UsIHtcclxuICAgICAgICAgICAgZmlsZU5hbWUsXHJcbiAgICAgICAgICAgIGZpbGVJZCxcclxuICAgICAgICAgICAgaXNGaWxlVmVyc2lvbixcclxuICAgICAgICAgICAgb3V0cHV0VHlwZTogMFxyXG4gICAgICAgICB9LCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIGFzICdqc29uJyB9KS50b1Byb21pc2UoKS50aGVuKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xyXG4gICAgICAgICAgICB9LCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChycykge1xyXG4gICAgICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChycyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgcHJpbnQoZGF0YTogYW55KSB7XHJcbiAgICAgIGlmIChkYXRhLmluZGV4T2YoJ2Jhc2U2NCwnKSA+IC0xKSB7XHJcbiAgICAgICAgIGRhdGEgPSBkYXRhLnNwbGl0KCdiYXNlNjQsJylbMV07XHJcbiAgICAgIH1cclxuICAgICAgcHJpbnRKUyh7IHByaW50YWJsZTogZGF0YSwgdHlwZTogJ3BkZicsIGJhc2U2NDogdHJ1ZSB9KTtcclxuICAgfVxyXG5cclxuICAgZG93bmxvYWRCeUlmcmFtZShfZWxlbWVudFJlZjogRWxlbWVudFJlZiwgZmlsZUlkKSB7XHJcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0RmlsZURvd25sb2FkVXJsKGZpbGVJZCk7XHJcbiAgICAgIGNvbnN0IGlmcmFtZSA9IGA8aWZyYW1lIHN0eWxlPVwiZGlzcGxheTpub25lO1wiIHdpZHRoPVwiMFwiIGhlaWdodD1cIjBcIiBzcmM9XCIke3VybH1cIj48L2lmcmFtZT5gO1xyXG4gICAgICBfZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywgaWZyYW1lKTtcclxuICAgfVxyXG5cclxuICAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSkge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcclxuICAgICAgICAgdGhpcy5fYXV0aGVuU2VydmljZS50cnlMb2dpbkFuZExvZ291dElmRmFsc2UoKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xyXG4gICB9XHJcblxyXG4gICBzdXBwb3J0RGlnaXRhbFNpZ25hdHVyZShmaWxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgIGlmIChmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpID09PSAtMSkgeyByZXR1cm4gZmFsc2U7IH1cclxuXHJcbiAgICAgIGNvbnN0IGZpbGVFeHRBcnIgPSBmaWxlTmFtZS5zcGxpdCgnLicpO1xyXG4gICAgICBjb25zdCBleHQgPSAnLicgKyBmaWxlRXh0QXJyW2ZpbGVFeHRBcnIubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTtcclxuICAgICAgY29uc3QgcmVnZXggPSAoL1xcLihwZGZ8eGxzP3h8ZG9jP3h8b2R0fHR0ZikkL2kpO1xyXG4gICAgICByZXR1cm4gcmVnZXgudGVzdChleHQpO1xyXG4gICB9XHJcblxyXG4gICBzYXZlU2lnbmVkRmlsZShkYXRhOiBhbnkpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KGAke3RoaXMuX3NlcnZpY2VVcml9L0t5U29GaWxlL1NhdmVTaWduZWRGaWxlYCwgZGF0YSkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGdldFNpZ25hdHVyZUluZm9CeUZpbGVJZChmaWxlSWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihgJHt0aGlzLl9zZXJ2aWNlVXJpfS9LeVNvRmlsZS9HZXRMaXN0U2lnbmF0dXJlQnlGaWxlSWQ/ZmlsZUlkPSR7ZmlsZUlkfWApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRTaWduYXR1cmVJbmZvQnlGaWxlVmVyc2lvbklkKGZpbGVWZXJzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihgJHt0aGlzLl9zZXJ2aWNlVXJpfS9LeVNvRmlsZS9HZXRMaXN0U2lnbmF0dXJlQnlGaWxlVmVyc2lvbklkP2ZpbGVWZXJzaW9uSWQ9JHtmaWxlVmVyc2lvbklkfWApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRVcGxvYWRGaWxlVmVyc2lvbkFwaVVybCgpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVWZXJzaW9uL1NhdmVWZXJzaW9uT25FZGl0YDtcclxuICAgfVxyXG5cclxuICAgZ2V0UmVtb3ZlRmlsZVZlcnNpb25BcGlVcmwoKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlVmVyc2lvbmA7XHJcbiAgIH1cclxuXHJcbiAgIGRvd25sb2FkRmlsZUJ5U2VydmljZVJlcXVlc3RNb2RlbChzZXJ2aWNlUmVxdWVzdE1vZGVsOiBhbnkpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvR2V0RG93bmxvYWRGaWxlU2VydmljZT9zZXJ2aWNlPSR7c2VydmljZVJlcXVlc3RNb2RlbC5zZXJ2aWNlfSZlbnRpdHk9JHtzZXJ2aWNlUmVxdWVzdE1vZGVsLmVudGl0eX0mZW50aXR5SW5zdGFuY2VJZD0ke3NlcnZpY2VSZXF1ZXN0TW9kZWwuZW50aXR5SW5zdGFuY2VJZH1gO1xyXG4gICB9XHJcblxyXG4gICBnZXRJbWFnZUZpbGVCYXNlNjQoZmlsZUlkOiBzdHJpbmcsIGV4dGVuc2lvbiA9ICdqcGcnLCB3aWR0aCA9IDAsIGhlaWdodCA9IDApOiBQcm9taXNlPGFueT4geyAvLyByZXR1cm4gYmFzZSA2NFxyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L2dldEltYWdlRmlsZUJhc2U2ND9maWxlSWQ9JHtmaWxlSWR9JmV4dGVuc2lvbj0ke2V4dGVuc2lvbn0md2lkdGg9JHt3aWR0aH0maGVpZ2h0PSR7aGVpZ2h0fWA7XHJcbiAgICAgICAgIHRoaXMuX2h0dHAuZ2V0PGFueT4odXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIGFzICdqc29uJyB9KVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCkudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICAgICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xyXG4gICAgICAgICAgICAgICB9LCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgIGlmIChycykge1xyXG4gICAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChycyk7XHJcbiAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgLyoqXHJcbiAgICAqIEzhuqV5IGZpbGUgYuG6sW5nIGLhu5kgMyBrZXk6IHNlcnZpY2UsIGVudGl0eSwgZW50aXR5SW5zdGFuY2VJZFxyXG4gICAgKi9cclxuICAgZ2V0U2luZ2xlU2VydmljZUZpbGUoc2VydmljZVJlcXVlc3RNb2RlbDogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvR2V0U2luZ2xlU2VydmljZUZpbGVgO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIHNlcnZpY2VSZXF1ZXN0TW9kZWwpLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0U2VydmljZUZpbGVFeHBsb3JlcihzZXJ2aWNlQ29kZTogc3RyaW5nLCBlbnRpdHk6IHN0cmluZywgZW50aXR5S2V5OiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9HZXRTZXJ2aWNlRmlsZUV4cGxvcmVyP3NlcnZpY2VDb2RlPSR7c2VydmljZUNvZGV9JmVudGl0eT0ke2VudGl0eX0mZW50aXR5S2V5PSR7ZW50aXR5S2V5fWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGNyZWF0ZVNlcnZpY2VGaWxlKHNlcnZpY2VGaWxlT2JqZWN0RFRPOiBGb3JtRGF0YSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0NyZWF0ZVNlcnZpY2VGaWxlYDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCBzZXJ2aWNlRmlsZU9iamVjdERUTykucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBjcmVhdGVTZXJ2aWNlRmlsZUFub255bW91cyhzZXJ2aWNlRmlsZU9iamVjdERUTzogRm9ybURhdGEpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9DcmVhdGVTZXJ2aWNlRmlsZUFub255bW91c2A7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgc2VydmljZUZpbGVPYmplY3REVE8pLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG4gICBuZWVkQ29udmVydEJlZm9yZVNpZ24oZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICBpZiAoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSA9PT0gLTEpIHtcclxuICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGZpbGVUeXBlID0gZmlsZU5hbWUuc3Vic3RyaW5nKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBpZiAoKC8oZG9jfGRvY3h8ZG90fGRvdG18ZG90eHx4bHN8eGxzeHxwcHR8cHB0eCkkL2kpLnRlc3QoZmlsZVR5cGUpKSB7XHJcbiAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgfVxyXG4gICBjaGFuZ2VGaWxlRXh0ZW5zaW9uKGZpbGVOYW1lOiBzdHJpbmcsIG5ld0V4dGVuc2lvbjogc3RyaW5nKSB7XHJcbiAgICAgIGNvbnN0IGFyciA9IGZpbGVOYW1lLnNwbGl0KCcuJyk7XHJcbiAgICAgIHJldHVybiBmaWxlTmFtZS5yZXBsYWNlKGAuJHthcnJbYXJyLmxlbmd0aCAtIDFdfWAsIGAuJHtuZXdFeHRlbnNpb259YCk7XHJcbiAgIH1cclxufVxyXG4iXX0=
|
|
450
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1leHBsb3Jlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWV4cGxvcmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEtBQUssUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRzlFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBSy9FLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7QUFFckUscUJBQXFCO0FBQ3JCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQztBQUt6QixNQUFNLE9BQU8sbUJBQW1CO0lBUTdCLFlBQ1csS0FBaUIsRUFDakIsYUFBa0MsRUFDbEMsY0FBNkIsRUFDN0IsY0FBNkIsRUFDN0Isb0JBQXlDLEVBQ3pDLGdCQUFpQztRQUxqQyxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3Qix5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aEIsQ0FBQztJQUNELG1CQUFtQixDQUFDLFFBQWdCLEVBQUUsWUFBb0I7UUFDdkQsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDOzs7O1lBMWtCSCxVQUFVLFNBQUM7Z0JBQ1QsVUFBVSxFQUFFLE1BQU07YUFDcEI7OztZQXZCUSxVQUFVO1lBT1YsbUJBQW1CO1lBRm5CLGFBQWE7WUFDYixhQUFhO1lBQ2IsbUJBQW1CO1lBU25CLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBwcmludEpTXyBmcm9tICdwcmludC1qcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHJldHJ5LCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgQXV0aGVuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZHVsZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IENvcHlGaWxlRHRvIH0gZnJvbSAnLi4vbW9kZWxzL2NvcHktZmlsZS1kdG8nO1xyXG5pbXBvcnQgeyBGb2xkZXJDcmVhdGVBbmRTZXRQZXJtaXNzaW9uRFRPIH0gZnJvbSAnLi4vbW9kZWxzL2ZvbGRlci1jcmVhdGUtYW5kLXNldC1wZXJtaXNzaW9uLWR0byc7XHJcbmltcG9ydCB7IEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPIH0gZnJvbSAnLi4vbW9kZWxzL2dlbmVyYXRlLWxpbmstZG93bmxvYWQtZHRvJztcclxuaW1wb3J0IHsgTW92ZUZpbGVEVE8gfSBmcm9tICcuLi9tb2RlbHMvbW92ZS1maWxlLWR0byc7XHJcbmltcG9ydCB7IFNlcnZpY2VSZXF1ZXN0TW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc2VydmljZS1yZXF1ZXN0LW1vZGVsJztcclxuaW1wb3J0IHsgU2hhcmVGaWxlRFRPIH0gZnJvbSAnLi4vbW9kZWxzL3NoYXJlLWZpbGUtZHRvJztcclxuaW1wb3J0IHsgU2hhcmVGb2xkZXJEVE8gfSBmcm9tICcuLi9tb2RlbHMvc2hhcmUtZm9sZGVyLWR0byc7XHJcbmltcG9ydCBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25vdGlmaWVyLnNlcnZpY2UnO1xyXG5cclxuLy8gZml4IGZvciBidWlsZCBwcm9kXHJcbmNvbnN0IHByaW50SlMgPSBwcmludEpTXztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWxlRXhwbG9yZXJTZXJ2aWNlIHtcclxuXHJcbiAgIHJlYWRvbmx5IFJFVFJZX0NPVU5UOiBudW1iZXIgPSAwO1xyXG4gICByZWFkb25seSBSRVBMQVlfQ09VTlQ6IG51bWJlciA9IDE7XHJcblxyXG4gICBwcml2YXRlIF9zZXJ2aWNlVXJpOiBzdHJpbmc7XHJcbiAgIF9kb2N1bWVudFNlcnZlclVybDogYW55O1xyXG5cclxuICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgIHByaXZhdGUgX21vZHVsZUNvbmZpZzogTW9kdWxlQ29uZmlnU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBfYXV0aGVuU2VydmljZTogQXV0aGVuU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBfY29tbW9uU2VyaXZjZTogQ29tbW9uU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBfbW9kdWxlQ29uZmlnU2VydmljZTogTW9kdWxlQ29uZmlnU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBfbm90aWZpZXJTZXJ2aWNlOiBOb3RpZmllclNlcnZpY2VcclxuICAgKSB7XHJcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuX21vZHVsZUNvbmZpZy5nZXRDb25maWcoKTtcclxuXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgPSBgJHtjb25maWcuZW52aXJvbm1lbnQuYXBpRG9tYWluLmZpbGVFbmRwb2ludH0vJHtjb25maWcuZW52aXJvbm1lbnQuYXBpVmVyc2lvbn1gO1xyXG5cclxuICAgICAgdGhpcy5fZG9jdW1lbnRTZXJ2ZXJVcmwgPSB0aGlzLl9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi5kb2N1bWVudFNlcnZlcjtcclxuICAgfVxyXG5cclxuICAgZ2V0TXlGaWxlcygpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9HZXRNeUZpbGVzYDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpLnBpcGUoXHJcbiAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgcmV0cnkodGhpcy5SRVRSWV9DT1VOVCksXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0U2VydmljZUZvbGRlcklkKG1vZGVsOiBTZXJ2aWNlUmVxdWVzdE1vZGVsKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci9HZXRTZXJ2aWNlRm9sZGVyP3NlcnZpY2U9JHttb2RlbC5zZXJ2aWNlfSZlbnRpdHk9JHttb2RlbC5lbnRpdHl9JmVudGl0eUluc3RhbmNlSWQ9JHttb2RlbC5lbnRpdHlJbnN0YW5jZUlkfWA7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpXHJcbiAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSkpXHJcbiAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZGVsZXRlU2VydmljZUZvbGRlcihtb2RlbDogU2VydmljZVJlcXVlc3RNb2RlbCk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Gb2xkZXIvRGVsZXRlU2VydmljZUZvbGRlcj9zZXJ2aWNlPSR7bW9kZWwuc2VydmljZX0mZW50aXR5PSR7bW9kZWwuZW50aXR5fSZlbnRpdHlJbnN0YW5jZUlkPSR7bW9kZWwuZW50aXR5SW5zdGFuY2VJZH1gO1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGU8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKVxyXG4gICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpKVxyXG4gICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGdldEJ5Rm9sZGVySWQoZm9sZGVySWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgaWYgKGZvbGRlcklkID09ICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnKSB7XHJcbiAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7IHN0YXR1czogNDAwIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGU/Zm9sZGVySWQ9JHtmb2xkZXJJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRNeURyaXZlKGZvbGRlcklkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGlmIChmb2xkZXJJZCA9PSAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJykge1xyXG4gICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoeyBzdGF0dXM6IDQwMCB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0dldE15RHJpdmU/Zm9sZGVySWQ9JHtmb2xkZXJJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRNeVNoYXJlKHVzZXJJZDogbnVtYmVyKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBpZiAodXNlcklkIDwgMCkge1xyXG4gICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoeyBzdGF0dXM6IDQwMCB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Gb2xkZXIvR2V0TXlTaGFyZT91c2VySWQ9JHt1c2VySWR9YDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpLnBpcGUoXHJcbiAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgcmV0cnkodGhpcy5SRVRSWV9DT1VOVCksXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuXHJcblxyXG4gICBnZXRNeVNoYXJlVG9PdGhlcihvd25lcklkOiBudW1iZXIpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGlmIChvd25lcklkIDwgMCkge1xyXG4gICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoeyBzdGF0dXM6IDQwMCB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Gb2xkZXIvR2V0TXlTaGFyZVRvT3RoZXI/b3duZXJJZD0ke293bmVySWR9YDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpLnBpcGUoXHJcbiAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgcmV0cnkodGhpcy5SRVRSWV9DT1VOVCksXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0Rm9sZGVyVHJlZShmb2xkZXJJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBpZiAoZm9sZGVySWQgPT0gJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCcpIHtcclxuICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHsgc3RhdHVzOiA0MDAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvR2V0VHJlZT9mb2xkZXJJZD0ke2ZvbGRlcklkfWA7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsKVxyXG4gICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpKVxyXG4gICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGNvcHlGaWxlKGNvcHlGaWxlRHRvOiBDb3B5RmlsZUR0byk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0NvcHlGaWxlYDtcclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIGNvcHlGaWxlRHRvKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGNvbnZlcnREb2N1bWVudFRvUGRmQW5kU2F2ZShjb3B5RmlsZUR0bzogQ29weUZpbGVEdG8pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9Db252ZXJ0RG9jdW1lbnRUb1BkZkFuZFNhdmVgO1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgY29weUZpbGVEdG8pLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgY3JlYXRlTmV3Rm9sZGVyKGZvbGRlcjogRm9sZGVyQ3JlYXRlQW5kU2V0UGVybWlzc2lvbkRUTyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Gb2xkZXJgO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIGZvbGRlcikucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBkZWxldGVGb2xkZXIoZm9sZGVySWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Gb2xkZXIvJHtmb2xkZXJJZH1gO1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGU8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGRlbGV0ZU11bHRpcGxlRm9sZGVyKGZvbGRlcklkcyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Gb2xkZXIvZGVsZXRlTXVsdGlwbGVGb2xkZXJgO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIGZvbGRlcklkcykucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICByZW5hbWVGb2xkZXIoZm9sZGVySWQ6IHN0cmluZywgbmV3Rm9sZGVyTmFtZTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci8ke2ZvbGRlcklkfS9SZW5hbWVGb2xkZXIvJHtuZXdGb2xkZXJOYW1lfWA7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBhdGNoPFJlc3BvbnNlUmVzdWx0PihzdlVybCwge30pLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgc2hhcmVGb2xkZXIoc2hhcmVGb2xkZXI6IFNoYXJlRm9sZGVyRFRPKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci9TaGFyZUZvbGRlcmA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgc2hhcmVGb2xkZXIpLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZGVsZXRlU2hhcmVGb2xkZXIoZm9sZGVySWQ6IHN0cmluZywgb2JqZWN0SWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Gb2xkZXIvJHtmb2xkZXJJZH0vRGVsZXRlU2hhcmVGb2xkZXIvJHtvYmplY3RJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlPFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRVcGxvYWRVcmwoKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0YDtcclxuICAgfVxyXG5cclxuICAgZ2V0U2VydmljZUNyZWF0ZUZpbGUoKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0NyZWF0ZVNlcnZpY2VGaWxlYDtcclxuICAgfVxyXG5cclxuICAgZ2V0RmlsZURvd25sb2FkVXJsKGZpbGVJZDogc3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L3B1YmxpYy8ke2ZpbGVJZH0vZG93bmxvYWRgO1xyXG4gICB9XHJcblxyXG4gICBnZXRCaW5hcnlGaWxlQnlGaWxlSWQoZmlsZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICB0aGlzLl9odHRwLmdldCh0aGlzLmdldEZpbGVEb3dubG9hZFVybChmaWxlSWQpKS50b1Byb21pc2UoKS50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2cocnMpO1xyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIGdldFNjYW5GaWxlVXBsb2FkRW5kcG9pbnQoY29ycmVsYXRpb25JZDogc3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0NyZWF0ZVNjYW5uZWRGaWxlLyR7Y29ycmVsYXRpb25JZH1gO1xyXG4gICB9XHJcblxyXG4gICBnZXRGaWxlKGZpbGVJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvJHtmaWxlSWR9YDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpLnBpcGUoXHJcbiAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgcmV0cnkodGhpcy5SRVRSWV9DT1VOVCksXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgYXN5bmMgZ2V0QmFzZTY0RnJvbUZpbGVJZChmaWxlSWQ6IHN0cmluZywgaXNGaWxlVmVyc2lvbjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgY29uc3QgbGluayA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVMaW5rRG93bmxvYWQoe1xyXG4gICAgICAgICBmaWxlSWQsXHJcbiAgICAgICAgIGlzRmlsZVZlcnNpb25cclxuICAgICAgfSBhcyBHZW5lcmF0ZUxpbmtEb3dubG9hZERUTyk7XHJcbiAgICAgIGNvbnN0IHVybERvd25sb2FkID0gdGhpcy5nZXRBbm9ueW1vdXNEb3dubG9hZFVybChsaW5rLmRhdGEpO1xyXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRCYXNlNjRJbWFnZUZyb21VcmwodXJsRG93bmxvYWQpO1xyXG4gICB9XHJcblxyXG4gICBhc3luYyBnZXRCYXNlNjRJbWFnZUZyb21VcmwoaW1hZ2VVcmwpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChpbWFnZVVybCk7XHJcbiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCByZXMuYmxvYigpO1xyXG5cclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICB9O1xyXG5cclxuICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoJycpO1xyXG4gICAgICAgICB9O1xyXG4gICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIGFzeW5jIGdldEJhc2U2NEZyb21GaWxlSWRUb1VybChmaWxlSWQ6IHN0cmluZywgaXNGaWxlVmVyc2lvbjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgY29uc3QgbGluayA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVMaW5rRG93bmxvYWQoe1xyXG4gICAgICAgICBmaWxlSWQsXHJcbiAgICAgICAgIGlzRmlsZVZlcnNpb25cclxuICAgICAgfSBhcyBHZW5lcmF0ZUxpbmtEb3dubG9hZERUTyk7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldEFub255bW91c0Rvd25sb2FkVXJsKGxpbmsuZGF0YSk7XHJcbiAgIH1cclxuXHJcbiAgIGdldEZpbGVWZXJzaW9uRG93bmxvYWRVcmwoZmlsZVZlcnNpb25JZDogc3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlVmVyc2lvbi8ke2ZpbGVWZXJzaW9uSWR9L2Rvd25sb2FkYDtcclxuICAgfVxyXG5cclxuICAgZ2V0QW5vbnltb3VzRG93bmxvYWRVcmwoaGFzaDogc3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Eb3dubG9hZExpbmsvJHtoYXNofWA7XHJcbiAgIH1cclxuXHJcbiAgIGdldERvd25sb2FkRm9yU2lnblVybChoYXNoOiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0Rvd25sb2FkTGluay9kb3dubG9hZGZvcnNpZ24vJHtoYXNofWA7XHJcbiAgIH1cclxuXHJcbiAgIGdlbmVyYXRlTGlua0Rvd25sb2FkKG1vZGVsOiBHZW5lcmF0ZUxpbmtEb3dubG9hZERUTyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Eb3dubG9hZExpbmsvR2VuZXJhdGVEb3dubG9hZExpbmtgO1xyXG5cclxuICAgICAgaWYgKG1vZGVsLmlzRmlsZVZlcnNpb24gJiYgIW1vZGVsLmZpbGVWZXJzaW9uSWQpIHtcclxuICAgICAgICAgbW9kZWwuZmlsZVZlcnNpb25JZCA9IG1vZGVsLmZpbGVJZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIG1vZGVsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuXHJcbiAgIGRvd25sb2FkRmlsZShmaWxlSWQ6IHN0cmluZywgaXNGaWxlVmVyc2lvbjogYm9vbGVhbiA9IGZhbHNlLCBmaWxlTmFtZT8pIHtcclxuICAgICAgY29uc3QgbW9kZWwgPSBuZXcgR2VuZXJhdGVMaW5rRG93bmxvYWREVE8oKTtcclxuICAgICAgbW9kZWwuZmlsZUlkID0gZmlsZUlkO1xyXG4gICAgICBtb2RlbC5pc0ZpbGVWZXJzaW9uID0gaXNGaWxlVmVyc2lvbjtcclxuICAgICAgdGhpcy5nZW5lcmF0ZUxpbmtEb3dubG9hZChtb2RlbCkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgIGNvbnN0IGRvd25sb2FkVXJsID0gdGhpcy5nZXRBbm9ueW1vdXNEb3dubG9hZFVybChyZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgaWYgKGZpbGVOYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2F2ZVdpdGhGaWxlTmFtZShkb3dubG9hZFVybCwgZmlsZU5hbWUpO1xyXG4gICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB3aW5kb3cub3Blbihkb3dubG9hZFVybCk7XHJcbiAgICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIC8qKlxyXG4gICAgKiBTYXZlIGZpbGUgdOG6o2kgdOG7qyBzZXJ2ZXIgduG7m2kgdMOqbiDEkcaw4bujYyB0cnV54buBbiB2w6BvLCBjaG8gcGjDqXAgbMawdSBj4bqjIGF1ZGlvLCB2aWRlby5cclxuICAgICovXHJcbiAgIHNhdmVXaXRoRmlsZU5hbWUodXJsLCBmaWxlTmFtZSkge1xyXG4gICAgICB0aGlzLl9odHRwLmdldDxhbnk+KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicgfSlcclxuICAgICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgICAgIC50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgRmlsZVNhdmVyLnNhdmVBcyhycywgZmlsZU5hbWUpO1xyXG4gICAgICAgICB9KVxyXG4gICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdM4buXaSB04bqjaSBmaWxlJyk7XHJcbiAgICAgICAgIH0pO1xyXG4gICB9XHJcblxyXG4gICBnZW5lcmF0ZUxpbmtEb3dubG9hZE11bHRpcGxlKG1vZGVsOiBHZW5lcmF0ZUxpbmtEb3dubG9hZERUT1tdKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0Rvd25sb2FkL0dlbmVyYXRlRG93bmxvYWRNdWx0aXBsZUxpbmtgO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIG1vZGVsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZG93bmxvYWRGb2xkZXIoZm9sZGVySWQ6IHN0cmluZykge1xyXG4gICAgICBjb25zdCBtb2RlbCA9IG5ldyBHZW5lcmF0ZUxpbmtEb3dubG9hZERUTygpO1xyXG4gICAgICBtb2RlbC5mb2xkZXJJZCA9IGZvbGRlcklkO1xyXG4gICAgICB0aGlzLmdlbmVyYXRlTGlua0Rvd25sb2FkTXVsdGlwbGUoW21vZGVsXSkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgIGNvbnN0IGRvd25sb2FkVXJsID0gdGhpcy5nZXRBbm9ueW1vdXNEb3dubG9hZFVybChyZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgd2luZG93Lm9wZW4oZG93bmxvYWRVcmwpO1xyXG4gICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgZ2V0QmluYXJ5RmlsZShsaW5rRG93bmxvYWQ6IHN0cmluZykge1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQobGlua0Rvd25sb2FkKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgc2V0TW92ZUZpbGVJdGVtKG1vdmVGaWxlOiBNb3ZlRmlsZURUTyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L01vdmVGaWxlYDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCBtb3ZlRmlsZSkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBkZWxldGVGaWxlKGZpbGVJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvRmlsZS8ke2ZpbGVJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlPFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBkZWxldGVNdWx0aXBsZUZpbGUoZmlsZUlkcyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L2RlbGV0ZU11bHRpcGxlRmlsZWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgZmlsZUlkcykucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICByZW5hbWVGaWxlKGZpbGVJZDogc3RyaW5nLCBuZXdGaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvJHtmaWxlSWR9L1JlbmFtZUZpbGUvJHtuZXdGaWxlTmFtZX1gO1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wYXRjaDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIHt9KS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIHNoYXJlRmlsZShzaGFyZUZpbGU6IFNoYXJlRmlsZURUTyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L1NoYXJlRmlsZWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgc2hhcmVGaWxlKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGRlbGV0ZVNoYXJlRmlsZShmaWxlSWQ6IHN0cmluZywgb2JqZWN0SWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0LyR7ZmlsZUlkfS9EZWxldGVTaGFyZUZpbGUvJHtvYmplY3RJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlPFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRTaGFyZWRGaWxlcyhmb2xkZXJJZD86IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgbGV0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9HZXRNeVNoYXJlZEZpbGVzYDtcclxuICAgICAgaWYgKGZvbGRlcklkKSB7XHJcbiAgICAgICAgIHN2VXJsID0gYCR7c3ZVcmx9P2ZvbGRlcklkPSR7Zm9sZGVySWR9YDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRVc2VyU2hhcmluZ0J5RmlsZShmaWxlSWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgbGV0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9HZXRVc2VyU2hhcmluZ0J5RmlsZWA7XHJcbiAgICAgIGlmIChmaWxlSWQpIHtcclxuICAgICAgICAgc3ZVcmwgPSBgJHtzdlVybH0/ZmlsZUlkPSR7ZmlsZUlkfWA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpLnBpcGUoXHJcbiAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgcmV0cnkodGhpcy5SRVRSWV9DT1VOVCksXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0Rm9sZGVySWQodXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGxldCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci9HZXRGb2xkZXJJZGA7XHJcbiAgICAgIGlmICh1c2VySWQpIHtcclxuICAgICAgICAgc3ZVcmwgPSBgJHtzdlVybH0/dXNlcklkPSR7dXNlcklkfWA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG5cclxuICAgaXNTdXBwb3J0ZWRWaWV3T25saW5lKGZpbGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgLy8gZmlsZSBraMO0bmcgY8OzIMSRdeG7lWkgLT4gbG/huqFpXHJcbiAgICAgIGlmIChmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpID09PSAtMSkge1xyXG4gICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGZpbGVUeXBlID0gZmlsZU5hbWUuc3Vic3RyaW5nKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcclxuXHJcbiAgICAgIGlmICgoLyhnaWZ8anBnfGpwZWd8dGlmZnxwbmcpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICgoLyhkb2N8ZG9jbXxkb2N4fGRvdHxkb3RtfGRvdHh8ZXB1Ynxmb2R0fGh0bXxodG1sfG1odHxvZHR8b3R0fHBkZnxydGZ8dHh0fGRqdnV8eHBzKSQvaSkudGVzdChmaWxlVHlwZSkpIHtcclxuICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoKC8oY3N2fGZvZHN8b2RzfG90c3x4bHN8eGxzbXx4bHN4fHhsdHx4bHRtfHhsdHgpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICgoLyhmb2RwfG9kcHxvdHB8cG90fHBvdG18cG90eHxwcHN8cHBzbXxwcHN4fHBwdHxwcHRtfHBwdHgpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICgoLyhtcDR8bW92fGF2aXx3bXZ8dm9ifHJtfGFzZnwzZ3ApJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICgoLyhtcDN8d21hfHdhdnx3bXZ8b2dnKSQvaSkudGVzdChmaWxlVHlwZSkpIHtcclxuICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgfVxyXG5cclxuICAgZ2V0RmlsZVR5cGUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgIGlmIChmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpID09PSAtMSkge1xyXG4gICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGFyciA9IGZpbGVOYW1lLnNwbGl0KCcuJyk7XHJcbiAgICAgIHJldHVybiBhcnJbYXJyLmxlbmd0aCAtIDFdO1xyXG4gICB9XHJcblxyXG4gICBjb252ZXJ0VG9QZGYoZmlsZU5hbWU6IHN0cmluZywgZmlsZUlkOiBzdHJpbmcsIGlzRmlsZVZlcnNpb246IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICBjb25zdCBjb252ZXJ0U2VydmljZSA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0NvbnZlcnQvQ29udmVydERvY3VtZW50VG9QZGZgO1xyXG4gICAgICAgICB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KGNvbnZlcnRTZXJ2aWNlLCB7XHJcbiAgICAgICAgICAgIGZpbGVOYW1lLFxyXG4gICAgICAgICAgICBmaWxlSWQsXHJcbiAgICAgICAgICAgIGlzRmlsZVZlcnNpb24sXHJcbiAgICAgICAgICAgIG91dHB1dFR5cGU6IDBcclxuICAgICAgICAgfSwgeyByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicgfSkudG9Qcm9taXNlKCkudGhlbigocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcclxuICAgICAgICAgICAgfSwgZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAocnMpIHtcclxuICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwocnMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIHByaW50KGRhdGE6IGFueSkge1xyXG4gICAgICBpZiAoZGF0YS5pbmRleE9mKCdiYXNlNjQsJykgPiAtMSkge1xyXG4gICAgICAgICBkYXRhID0gZGF0YS5zcGxpdCgnYmFzZTY0LCcpWzFdO1xyXG4gICAgICB9XHJcbiAgICAgIHByaW50SlMoeyBwcmludGFibGU6IGRhdGEsIHR5cGU6ICdwZGYnLCBiYXNlNjQ6IHRydWUgfSk7XHJcbiAgIH1cclxuXHJcbiAgIGRvd25sb2FkQnlJZnJhbWUoX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIGZpbGVJZCkge1xyXG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmdldEZpbGVEb3dubG9hZFVybChmaWxlSWQpO1xyXG4gICAgICBjb25zdCBpZnJhbWUgPSBgPGlmcmFtZSBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIiB3aWR0aD1cIjBcIiBoZWlnaHQ9XCIwXCIgc3JjPVwiJHt1cmx9XCI+PC9pZnJhbWU+YDtcclxuICAgICAgX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsIGlmcmFtZSk7XHJcbiAgIH1cclxuXHJcbiAgIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpIHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XHJcbiAgICAgICAgIHRoaXMuX2F1dGhlblNlcnZpY2UudHJ5TG9naW5BbmRMb2dvdXRJZkZhbHNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcclxuICAgfVxyXG5cclxuICAgc3VwcG9ydERpZ2l0YWxTaWduYXR1cmUoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICBpZiAoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSA9PT0gLTEpIHsgcmV0dXJuIGZhbHNlOyB9XHJcblxyXG4gICAgICBjb25zdCBmaWxlRXh0QXJyID0gZmlsZU5hbWUuc3BsaXQoJy4nKTtcclxuICAgICAgY29uc3QgZXh0ID0gJy4nICsgZmlsZUV4dEFycltmaWxlRXh0QXJyLmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IHJlZ2V4ID0gKC9cXC4ocGRmfHhscz94fGRvYz94fG9kdHx0dGYpJC9pKTtcclxuICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QoZXh0KTtcclxuICAgfVxyXG5cclxuICAgc2F2ZVNpZ25lZEZpbGUoZGF0YTogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihgJHt0aGlzLl9zZXJ2aWNlVXJpfS9LeVNvRmlsZS9TYXZlU2lnbmVkRmlsZWAsIGRhdGEpLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRTaWduYXR1cmVJbmZvQnlGaWxlSWQoZmlsZUlkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYCR7dGhpcy5fc2VydmljZVVyaX0vS3lTb0ZpbGUvR2V0TGlzdFNpZ25hdHVyZUJ5RmlsZUlkP2ZpbGVJZD0ke2ZpbGVJZH1gKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0U2lnbmF0dXJlSW5mb0J5RmlsZVZlcnNpb25JZChmaWxlVmVyc2lvbklkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYCR7dGhpcy5fc2VydmljZVVyaX0vS3lTb0ZpbGUvR2V0TGlzdFNpZ25hdHVyZUJ5RmlsZVZlcnNpb25JZD9maWxlVmVyc2lvbklkPSR7ZmlsZVZlcnNpb25JZH1gKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0VXBsb2FkRmlsZVZlcnNpb25BcGlVcmwoKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlVmVyc2lvbi9TYXZlVmVyc2lvbk9uRWRpdGA7XHJcbiAgIH1cclxuXHJcbiAgIGdldFJlbW92ZUZpbGVWZXJzaW9uQXBpVXJsKCkge1xyXG4gICAgICByZXR1cm4gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZVZlcnNpb25gO1xyXG4gICB9XHJcblxyXG4gICBkb3dubG9hZEZpbGVCeVNlcnZpY2VSZXF1ZXN0TW9kZWwoc2VydmljZVJlcXVlc3RNb2RlbDogYW55KSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0dldERvd25sb2FkRmlsZVNlcnZpY2U/c2VydmljZT0ke3NlcnZpY2VSZXF1ZXN0TW9kZWwuc2VydmljZX0mZW50aXR5PSR7c2VydmljZVJlcXVlc3RNb2RlbC5lbnRpdHl9JmVudGl0eUluc3RhbmNlSWQ9JHtzZXJ2aWNlUmVxdWVzdE1vZGVsLmVudGl0eUluc3RhbmNlSWR9YDtcclxuICAgfVxyXG5cclxuICAgZ2V0SW1hZ2VGaWxlQmFzZTY0KGZpbGVJZDogc3RyaW5nLCBleHRlbnNpb24gPSAnanBnJywgd2lkdGggPSAwLCBoZWlnaHQgPSAwKTogUHJvbWlzZTxhbnk+IHsgLy8gcmV0dXJuIGJhc2UgNjRcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9nZXRJbWFnZUZpbGVCYXNlNjQ/ZmlsZUlkPSR7ZmlsZUlkfSZleHRlbnNpb249JHtleHRlbnNpb259JndpZHRoPSR7d2lkdGh9JmhlaWdodD0ke2hlaWdodH1gO1xyXG4gICAgICAgICB0aGlzLl9odHRwLmdldDxhbnk+KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicgfSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcclxuICAgICAgICAgICAgICAgfSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICBpZiAocnMpIHtcclxuICAgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwocnMpO1xyXG4gICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIC8qKlxyXG4gICAgKiBM4bqleSBmaWxlIGLhurFuZyBi4buZIDMga2V5OiBzZXJ2aWNlLCBlbnRpdHksIGVudGl0eUluc3RhbmNlSWRcclxuICAgICovXHJcbiAgIGdldFNpbmdsZVNlcnZpY2VGaWxlKHNlcnZpY2VSZXF1ZXN0TW9kZWw6IGFueSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0dldFNpbmdsZVNlcnZpY2VGaWxlYDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCBzZXJ2aWNlUmVxdWVzdE1vZGVsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGdldFNlcnZpY2VGaWxlRXhwbG9yZXIoc2VydmljZUNvZGU6IHN0cmluZywgZW50aXR5OiBzdHJpbmcsIGVudGl0eUtleTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvR2V0U2VydmljZUZpbGVFeHBsb3Jlcj9zZXJ2aWNlQ29kZT0ke3NlcnZpY2VDb2RlfSZlbnRpdHk9JHtlbnRpdHl9JmVudGl0eUtleT0ke2VudGl0eUtleX1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBjcmVhdGVTZXJ2aWNlRmlsZShzZXJ2aWNlRmlsZU9iamVjdERUTzogRm9ybURhdGEpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9DcmVhdGVTZXJ2aWNlRmlsZWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgc2VydmljZUZpbGVPYmplY3REVE8pLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgY3JlYXRlU2VydmljZUZpbGVBbm9ueW1vdXMoc2VydmljZUZpbGVPYmplY3REVE86IEZvcm1EYXRhKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvQ3JlYXRlU2VydmljZUZpbGVBbm9ueW1vdXNgO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIHNlcnZpY2VGaWxlT2JqZWN0RFRPKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuICAgbmVlZENvbnZlcnRCZWZvcmVTaWduKGZpbGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgaWYgKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgPT09IC0xKSB7XHJcbiAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBmaWxlVHlwZSA9IGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpICsgMSkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgaWYgKCgvKGRvY3xkb2N4fGRvdHxkb3RtfGRvdHh8eGxzfHhsc3h8cHB0fHBwdHgpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgIH1cclxuICAgY2hhbmdlRmlsZUV4dGVuc2lvbihmaWxlTmFtZTogc3RyaW5nLCBuZXdFeHRlbnNpb246IHN0cmluZykge1xyXG4gICAgICBjb25zdCBhcnIgPSBmaWxlTmFtZS5zcGxpdCgnLicpO1xyXG4gICAgICByZXR1cm4gZmlsZU5hbWUucmVwbGFjZShgLiR7YXJyW2Fyci5sZW5ndGggLSAxXX1gLCBgLiR7bmV3RXh0ZW5zaW9ufWApO1xyXG4gICB9XHJcbn1cclxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, Injector } from '@angular/core';
|
|
2
2
|
import { ComponentBase } from '../../../classes/base/component-base';
|
|
3
3
|
import { ComponentContextService } from '../../../app-context/component-context.service';
|
|
4
|
-
import moment_ from 'moment';
|
|
4
|
+
import * as moment_ from 'moment';
|
|
5
5
|
// fix for build prod
|
|
6
6
|
const moment = moment_;
|
|
7
7
|
export class SignatureDetailComponent extends ComponentBase {
|
|
@@ -63,4 +63,4 @@ SignatureDetailComponent.decorators = [
|
|
|
63
63
|
SignatureDetailComponent.ctorParameters = () => [
|
|
64
64
|
{ type: Injector }
|
|
65
65
|
];
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9maWxlLWV4cGxvcmVyL3NpZ25hdHVyZS1kZXRhaWwvc2lnbmF0dXJlLWRldGFpbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBR2xDLHFCQUFxQjtBQUNyQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFRdkIsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGFBQWE7SUFDdkQsWUFDSSxRQUFrQjtRQUVsQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLEtBQUssR0FBZSxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtZQUMvQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxNQUFNLFVBQVUsR0FBYSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQzlELFVBQVUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsVUFBVSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQztZQUM3QyxVQUFVLENBQUMsYUFBYSxHQUFHLGtCQUFrQixDQUFDO1lBQzlDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBRXhCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDYixVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztvQkFDckIsS0FBSyxFQUFFLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxZQUFZO29CQUMzRCxZQUFZLEVBQUUsaUJBQWlCO29CQUMvQixhQUFhLEVBQUUsaUJBQWlCO29CQUNoQyxJQUFJLEVBQUUsSUFBSTtpQkFDYixDQUFDLENBQUM7YUFDTjtZQUVELFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNyQixLQUFLLEVBQUUsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGdCQUFnQixHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxZQUFZO2dCQUM3RyxZQUFZLEVBQUUsaUJBQWlCO2dCQUMvQixhQUFhLEVBQUUsaUJBQWlCO2dCQUNoQyxJQUFJLEVBQUUsSUFBSTthQUNiLENBQUMsQ0FBQztZQUVILFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNyQixLQUFLLEVBQUUscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsWUFBWTtnQkFDckUsWUFBWSxFQUFFLG9CQUFvQjtnQkFDbEMsYUFBYSxFQUFFLG9CQUFvQjtnQkFDbkMsSUFBSSxFQUFFLElBQUk7YUFDYixDQUFDLENBQUM7WUFFSCxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDckIsS0FBSyxFQUFFLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDO2dCQUMzRSxZQUFZLEVBQUUsY0FBYztnQkFDNUIsYUFBYSxFQUFFLGNBQWM7Z0JBQzdCLElBQUksRUFBRSxJQUFJO2FBQ2IsQ0FBQyxDQUFDO1lBRUgsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMxQjtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNsQyxDQUFDOzs7WUE3REosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLDJOQUFnRDtnQkFFaEQsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O2FBQ3ZDOzs7WUFkMkIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2FwaSc7XHJcblxyXG4vLyBmaXggZm9yIGJ1aWxkIHByb2RcclxuY29uc3QgbW9tZW50ID0gbW9tZW50XztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzaWduYXR1cmUtZGV0YWlsJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9zaWduYXR1cmUtZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3NpZ25hdHVyZS1kZXRhaWwuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2lnbmF0dXJlRGV0YWlsQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGEgPSB0aGlzLnBhcmVudE1vZGVsLmFkdmFuY2VEYXRhO1xyXG4gICAgICAgIHRoaXMuYnVpbGRUcmVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRUcmVlKCkge1xyXG4gICAgICAgIGNvbnN0IG5vZGVzOiBUcmVlTm9kZVtdID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBpbmQgaW4gdGhpcy5tb2RlbC5kYXRhKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLm1vZGVsLmRhdGFbaW5kXTtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGROb2RlczogVHJlZU5vZGUgPSB7IGV4cGFuZGVkOiB0cnVlLCBjaGlsZHJlbjogW10gfTtcclxuICAgICAgICAgICAgY2hpbGROb2Rlcy5sYWJlbCA9IGAke2l0ZW0ucmVhc29ufWA7XHJcbiAgICAgICAgICAgIGNoaWxkTm9kZXMuZXhwYW5kZWRJY29uID0gJ2ZhcyBmYS1zaWduYXR1cmUnO1xyXG4gICAgICAgICAgICBjaGlsZE5vZGVzLmNvbGxhcHNlZEljb24gPSAnZmFzIGZhLXNpZ25hdHVyZSc7XHJcbiAgICAgICAgICAgIGNoaWxkTm9kZXMubGVhZiA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0ucmVhc29uKSB7XHJcbiAgICAgICAgICAgICAgICBjaGlsZE5vZGVzLmNoaWxkcmVuLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfGsOG7nWkga8O9OiAnICsgaXRlbS5jZXJ0aWZpY2F0ZS5zdWJqZWN0Lm5hbWVPZlNpZ25lcixcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZEljb246ICdmYXMgZmEtdXNlci10YWcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZEljb246ICdmYXMgZmEtdXNlci10YWcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGxlYWY6IHRydWVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjaGlsZE5vZGVzLmNoaWxkcmVuLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICfEkMahbiB24buLOiAnICsgaXRlbS5jZXJ0aWZpY2F0ZS5zdWJqZWN0Lm9yZ2FuaXphdGlvblVuaXQgKyAnIC0gJyArIGl0ZW0uY2VydGlmaWNhdGUuc3ViamVjdC5vcmdhbml6YXRpb24sXHJcbiAgICAgICAgICAgICAgICBleHBhbmRlZEljb246ICdmYXMgZmEtYnVpbGRpbmcnLFxyXG4gICAgICAgICAgICAgICAgY29sbGFwc2VkSWNvbjogJ2ZhcyBmYS1idWlsZGluZycsXHJcbiAgICAgICAgICAgICAgICBsZWFmOiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgY2hpbGROb2Rlcy5jaGlsZHJlbi5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnQ2jhu6luZyB0aMawIGPhuqVwIGLhu59pOiAnICsgaXRlbS5jZXJ0aWZpY2F0ZS5pc3N1ZXJETi5uYW1lT2ZJc3N1ZXIsXHJcbiAgICAgICAgICAgICAgICBleHBhbmRlZEljb246ICdmYXMgZmEtY2VydGlmaWNhdGUnLFxyXG4gICAgICAgICAgICAgICAgY29sbGFwc2VkSWNvbjogJ2ZhcyBmYS1jZXJ0aWZpY2F0ZScsXHJcbiAgICAgICAgICAgICAgICBsZWFmOiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgY2hpbGROb2Rlcy5jaGlsZHJlbi5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVGjhu51pIGdpYW4ga8O9OiAnICsgbW9tZW50KGl0ZW0uc2lnbkRhdGUpLmZvcm1hdCgnRC9NTS9ZIGhoOm1tOnNzIFonKSxcclxuICAgICAgICAgICAgICAgIGV4cGFuZGVkSWNvbjogJ2ZhcyBmYS1jbG9jaycsXHJcbiAgICAgICAgICAgICAgICBjb2xsYXBzZWRJY29uOiAnZmFzIGZhLWNsb2NrJyxcclxuICAgICAgICAgICAgICAgIGxlYWY6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBub2Rlcy5wdXNoKGNoaWxkTm9kZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGFTb3VyY2UgPSBub2RlcztcclxuICAgIH1cclxufVxyXG4iXX0=
|