@c8y/ngx-components 1018.503.23 → 1018.503.26
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/api/services.d.ts +1 -1
- package/core/forms/validation-pattern.d.ts +4 -0
- package/esm2020/api/services.mjs +2 -2
- package/esm2020/core/forms/validation-pattern.mjs +5 -1
- package/esm2020/trusted-certificates/crl/crl-check-settings.component.mjs +39 -0
- package/esm2020/trusted-certificates/crl/crl-settings.component.mjs +109 -0
- package/esm2020/trusted-certificates/crl/crl-settings.module.mjs +46 -0
- package/esm2020/trusted-certificates/factories/tabs.factory.mjs +36 -0
- package/esm2020/trusted-certificates/factories/trusted-certificates-navigation.factory.mjs +26 -0
- package/esm2020/trusted-certificates/index.mjs +4 -4
- package/esm2020/trusted-certificates/{add-trusted-certificate.component.mjs → list/add-trusted-certificate.component.mjs} +1 -1
- package/esm2020/trusted-certificates/list/trusted-certificate-list.component.mjs +184 -0
- package/esm2020/trusted-certificates/list/trusted-certificate-list.module.mjs +54 -0
- package/esm2020/trusted-certificates/list/trusted-certificate.model.mjs +36 -0
- package/esm2020/trusted-certificates/trusted-certificates.module.mjs +24 -35
- package/fesm2015/c8y-ngx-components-api.mjs +3 -2
- package/fesm2015/c8y-ngx-components-api.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-trusted-certificates.mjs +329 -86
- package/fesm2015/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +4 -0
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-api.mjs +3 -2
- package/fesm2020/c8y-ngx-components-api.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-trusted-certificates.mjs +314 -85
- package/fesm2020/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +4 -0
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +48 -0
- package/package.json +1 -1
- package/trusted-certificates/crl/crl-check-settings.component.d.ts +18 -0
- package/trusted-certificates/crl/crl-settings.component.d.ts +28 -0
- package/trusted-certificates/crl/crl-settings.module.d.ts +13 -0
- package/trusted-certificates/factories/tabs.factory.d.ts +10 -0
- package/trusted-certificates/index.d.ts +3 -3
- package/trusted-certificates/{trusted-certificates.component.d.ts → list/trusted-certificate-list.component.d.ts} +4 -4
- package/trusted-certificates/list/trusted-certificate-list.module.d.ts +15 -0
- package/trusted-certificates/trusted-certificates.module.d.ts +4 -10
- package/esm2020/trusted-certificates/trusted-certificate.model.mjs +0 -36
- package/esm2020/trusted-certificates/trusted-certificates-navigation.factory.mjs +0 -26
- package/esm2020/trusted-certificates/trusted-certificates.component.mjs +0 -184
- /package/trusted-certificates/{trusted-certificates-navigation.factory.d.ts → factories/trusted-certificates-navigation.factory.d.ts} +0 -0
- /package/trusted-certificates/{add-trusted-certificate.component.d.ts → list/add-trusted-certificate.component.d.ts} +0 -0
- /package/trusted-certificates/{trusted-certificate.model.d.ts → list/trusted-certificate.model.d.ts} +0 -0
package/api/services.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { FetchClient, BasicAuth, CookieAuth, Realtime, EventBinaryService, EventService, InventoryService, MeasurementService, AlarmService, OperationBulkService, OperationService, ApplicationService, UserService, TenantService, SystemOptionsService, TenantOptionsService, TenantSecurityOptionsService, TenantLoginOptionsService, AuditService, InventoryRoleService, InventoryBinaryService, DeviceRegistrationService, DeviceRegistrationBulkService, UserRoleService, UserGroupService, IdentityService, TrustedCertificateService, SmartGroupsService, SmartRulesService } from '@c8y/client';
|
|
1
|
+
export { FetchClient, BasicAuth, CookieAuth, Realtime, EventBinaryService, EventService, InventoryService, MeasurementService, AlarmService, OperationBulkService, OperationService, ApplicationService, UserService, TenantService, SystemOptionsService, TenantOptionsService, TenantSecurityOptionsService, TenantLoginOptionsService, AuditService, InventoryRoleService, InventoryBinaryService, DeviceRegistrationService, DeviceRegistrationBulkService, UserRoleService, UserGroupService, IdentityService, TrustedCertificateService, CrlService, SmartGroupsService, SmartRulesService } from '@c8y/client';
|
|
@@ -40,6 +40,7 @@ export declare class ValidationPattern {
|
|
|
40
40
|
readonly urlSegment: "Slash, single or double dots and white space not allowed.";
|
|
41
41
|
readonly user: "Username must not contain spaces nor slashes (\"/\", \"\\\") nor (\"+\"), (\":\"), (\"$\") signs.";
|
|
42
42
|
readonly httpUrl: "Must be a valid HTTP(S) URL.";
|
|
43
|
+
readonly hexNumber: "Must be a valid hexadecimal number. Must contain only the following characters: 0-9, a-f, A-F, :.";
|
|
43
44
|
readonly noDots: "Dots not allowed.";
|
|
44
45
|
readonly simpleJsonPath: "Must be a valid JSON path";
|
|
45
46
|
readonly number: "This field must contain a number.";
|
|
@@ -89,6 +90,9 @@ export declare class ValidationPattern {
|
|
|
89
90
|
httpUrl: {
|
|
90
91
|
pattern: RegExp;
|
|
91
92
|
};
|
|
93
|
+
hexNumber: {
|
|
94
|
+
pattern: RegExp;
|
|
95
|
+
};
|
|
92
96
|
};
|
|
93
97
|
static get(key: string): ValidationRules;
|
|
94
98
|
}
|
package/esm2020/api/services.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { FetchClient, BasicAuth, CookieAuth, Realtime, EventBinaryService, EventService, InventoryService, MeasurementService, AlarmService, OperationBulkService, OperationService, ApplicationService, UserService, TenantService, SystemOptionsService, TenantOptionsService, TenantSecurityOptionsService, TenantLoginOptionsService, AuditService, InventoryRoleService, InventoryBinaryService, DeviceRegistrationService, DeviceRegistrationBulkService, UserRoleService, UserGroupService, IdentityService, TrustedCertificateService, SmartGroupsService, SmartRulesService } from '@c8y/client';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export { FetchClient, BasicAuth, CookieAuth, Realtime, EventBinaryService, EventService, InventoryService, MeasurementService, AlarmService, OperationBulkService, OperationService, ApplicationService, UserService, TenantService, SystemOptionsService, TenantOptionsService, TenantSecurityOptionsService, TenantLoginOptionsService, AuditService, InventoryRoleService, InventoryBinaryService, DeviceRegistrationService, DeviceRegistrationBulkService, UserRoleService, UserGroupService, IdentityService, TrustedCertificateService, CrlService, SmartGroupsService, SmartRulesService } from '@c8y/client';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvc2VydmljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQiw0QkFBNEIsRUFDNUIseUJBQXlCLEVBQ3pCLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLHlCQUF5QixFQUN6Qiw2QkFBNkIsRUFDN0IsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YseUJBQXlCLEVBQ3pCLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2xCLE1BQU0sYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgRmV0Y2hDbGllbnQsXG4gIEJhc2ljQXV0aCxcbiAgQ29va2llQXV0aCxcbiAgUmVhbHRpbWUsXG4gIEV2ZW50QmluYXJ5U2VydmljZSxcbiAgRXZlbnRTZXJ2aWNlLFxuICBJbnZlbnRvcnlTZXJ2aWNlLFxuICBNZWFzdXJlbWVudFNlcnZpY2UsXG4gIEFsYXJtU2VydmljZSxcbiAgT3BlcmF0aW9uQnVsa1NlcnZpY2UsXG4gIE9wZXJhdGlvblNlcnZpY2UsXG4gIEFwcGxpY2F0aW9uU2VydmljZSxcbiAgVXNlclNlcnZpY2UsXG4gIFRlbmFudFNlcnZpY2UsXG4gIFN5c3RlbU9wdGlvbnNTZXJ2aWNlLFxuICBUZW5hbnRPcHRpb25zU2VydmljZSxcbiAgVGVuYW50U2VjdXJpdHlPcHRpb25zU2VydmljZSxcbiAgVGVuYW50TG9naW5PcHRpb25zU2VydmljZSxcbiAgQXVkaXRTZXJ2aWNlLFxuICBJbnZlbnRvcnlSb2xlU2VydmljZSxcbiAgSW52ZW50b3J5QmluYXJ5U2VydmljZSxcbiAgRGV2aWNlUmVnaXN0cmF0aW9uU2VydmljZSxcbiAgRGV2aWNlUmVnaXN0cmF0aW9uQnVsa1NlcnZpY2UsXG4gIFVzZXJSb2xlU2VydmljZSxcbiAgVXNlckdyb3VwU2VydmljZSxcbiAgSWRlbnRpdHlTZXJ2aWNlLFxuICBUcnVzdGVkQ2VydGlmaWNhdGVTZXJ2aWNlLFxuICBDcmxTZXJ2aWNlLFxuICBTbWFydEdyb3Vwc1NlcnZpY2UsXG4gIFNtYXJ0UnVsZXNTZXJ2aWNlXG59IGZyb20gJ0BjOHkvY2xpZW50JztcbiJdfQ==
|
|
@@ -45,6 +45,7 @@ ValidationPattern.messages = {
|
|
|
45
45
|
urlSegment: gettext('Slash, single or double dots and white space not allowed.'),
|
|
46
46
|
user: gettext('Username must not contain spaces nor slashes ("/", "\\") nor ("+"), (":"), ("$") signs.'),
|
|
47
47
|
httpUrl: gettext('Must be a valid HTTP(S) URL.'),
|
|
48
|
+
hexNumber: gettext('Must be a valid hexadecimal number. Must contain only the following characters: 0-9, a-f, A-F, :.'),
|
|
48
49
|
noDots: gettext('Dots not allowed.'),
|
|
49
50
|
simpleJsonPath: gettext('Must be a valid JSON path'),
|
|
50
51
|
[DatapointLibraryValidationErrors.SHOULD_CONTAIN_NUMBER]: gettext('This field must contain a number.'),
|
|
@@ -93,6 +94,9 @@ ValidationPattern.rules = {
|
|
|
93
94
|
},
|
|
94
95
|
httpUrl: {
|
|
95
96
|
pattern: /^(https?):\/\/.*$/
|
|
97
|
+
},
|
|
98
|
+
hexNumber: {
|
|
99
|
+
pattern: /^[0-9a-fA-F:]+$/
|
|
96
100
|
}
|
|
97
101
|
};
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1wYXR0ZXJuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9mb3Jtcy92YWxpZGF0aW9uLXBhdHRlcm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0NBQWtDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVMxQyxNQUFNLENBQU4sSUFBWSxnQ0FXWDtBQVhELFdBQVksZ0NBQWdDO0lBQzFDLDREQUF3QixDQUFBO0lBQ3hCLHVEQUFtQixDQUFBO0lBQ25CLG9FQUFnQyxDQUFBO0lBQ2hDLDJFQUF1QyxDQUFBO0lBQ3ZDLHFGQUFpRCxDQUFBO0lBQ2pELCtFQUEyQyxDQUFBO0lBQzNDLHFGQUFpRCxDQUFBO0lBQ2pELCtFQUEyQyxDQUFBO0lBQzNDLHVFQUFtQyxDQUFBO0lBQ25DLHVFQUFtQyxDQUFBO0FBQ3JDLENBQUMsRUFYVyxnQ0FBZ0MsS0FBaEMsZ0NBQWdDLFFBVzNDO0FBRUQsV0FBVztBQUNYLE1BQU0sT0FBTyxpQkFBaUI7SUFzRzVCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBVztRQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sT0FBMEIsQ0FBQztJQUNwQyxDQUFDOztBQXhHZSwwQkFBUSxHQUFHO0lBQ3pCLFFBQVEsRUFBRSxPQUFPLENBQUMscURBQXFELENBQUM7SUFDeEUsTUFBTSxFQUFFLE9BQU8sQ0FDYixtRkFBbUY7UUFDakYsb0ZBQW9GLENBQ3ZGO0lBQ0QsS0FBSyxFQUFFLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztJQUN4QyxNQUFNLEVBQUUsT0FBTyxDQUFDLDBCQUEwQixDQUFDO0lBQzNDLHdCQUF3QixFQUFFLE9BQU8sQ0FDL0IsMElBQTBJLENBQzNJO0lBQ0QsVUFBVSxFQUFFLE9BQU8sQ0FDakIsaUZBQWlGLENBQ2xGO0lBQ0QsR0FBRyxFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztJQUNwQyxHQUFHLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDO0lBQ3BDLFNBQVMsRUFBRSxPQUFPLENBQUMsa0RBQWtELENBQUM7SUFDdEUsU0FBUyxFQUFFLE9BQU8sQ0FBQyx1REFBdUQsQ0FBQztJQUMzRSxTQUFTLEVBQUUsT0FBTyxDQUFDLGlEQUFpRCxDQUFDO0lBQ3JFLFNBQVMsRUFBRSxPQUFPLENBQUMsc0RBQXNELENBQUM7SUFDMUUsT0FBTyxFQUFFLE9BQU8sQ0FBQywrQ0FBK0MsQ0FBQztJQUNqRSxlQUFlLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDO0lBQy9DLFFBQVEsRUFBRSxPQUFPLENBQ2YsOEpBQThKLENBQy9KO0lBQ0QsZUFBZSxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQztJQUNuRCxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsOERBQThELENBQUM7SUFDekYsUUFBUSxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQztJQUM1QyxRQUFRLEVBQUUsT0FBTyxDQUNmLHNEQUFzRDtRQUNwRCxxRkFBcUYsQ0FDeEY7SUFDRCxVQUFVLEVBQUUsT0FBTyxDQUFDLDJEQUEyRCxDQUFDO0lBQ2hGLElBQUksRUFBRSxPQUFPLENBQ1gseUZBQXlGLENBQzFGO0lBQ0QsT0FBTyxFQUFFLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQztJQUNoRCxNQUFNLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLGNBQWMsRUFBRSxPQUFPLENBQUMsMkJBQTJCLENBQUM7SUFDcEQsQ0FBQyxnQ0FBZ0MsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLE9BQU8sQ0FDL0QsbUNBQW1DLENBQ3BDO0lBQ0QsQ0FBQyxnQ0FBZ0MsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztJQUN2RixDQUFDLGdDQUFnQyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxDQUNoRSx3Q0FBd0MsQ0FDekM7SUFDRCxDQUFDLGdDQUFnQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsT0FBTyxDQUM3RCwyQ0FBMkMsQ0FDNUM7SUFDRCxDQUFDLGdDQUFnQyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxDQUNoRSw2Q0FBNkMsQ0FDOUM7SUFDRCxDQUFDLGdDQUFnQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsT0FBTyxDQUM3RCxnREFBZ0QsQ0FDakQ7Q0FDTyxDQUFDO0FBRUssdUJBQUssR0FBRztJQUN0QixRQUFRLEVBQUU7UUFDUixPQUFPLEVBQUUsV0FBVztLQUNyQjtJQUNELE1BQU0sRUFBRTtRQUNOLE9BQU8sRUFBRSxvQ0FBb0M7S0FDOUM7SUFDRCxTQUFTLEVBQUU7UUFDVCxTQUFTLEVBQUUsR0FBRztLQUNmO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsT0FBTyxFQUNMLDJHQUEyRztLQUM5RztJQUNELEVBQUUsRUFBRTtRQUNGLE9BQU8sRUFDTCw2RkFBNkY7S0FDaEc7SUFDRCxlQUFlLEVBQUU7UUFDZixPQUFPLEVBQUUsbUNBQW1DO0tBQzdDO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsT0FBTyxFQUFFLHdEQUF3RDtLQUNsRTtJQUNELFFBQVEsRUFBRTtRQUNSLE9BQU8sRUFBRSw2QkFBNkI7S0FDdkM7SUFDRCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsZ0JBQWdCO0tBQzFCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsT0FBTyxFQUFFLDJFQUEyRTtLQUNyRjtJQUNELFVBQVUsRUFBRTtRQUNWLE9BQU8sRUFBRSxjQUFjO0tBQ3hCO0lBQ0QsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFLFNBQVM7S0FDbkI7SUFDRCxPQUFPLEVBQUU7UUFDUCxPQUFPLEVBQUUsbUJBQW1CO0tBQzdCO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlOiBtYXgtbGluZS1sZW5ndGhcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuL2dldHRleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25SdWxlcyB7XG4gIHBhdHRlcm4/OiBSZWdFeHA7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAgbWluTGVuZ3RoPzogbnVtYmVyO1xufVxuXG5leHBvcnQgZW51bSBEYXRhcG9pbnRMaWJyYXJ5VmFsaWRhdGlvbkVycm9ycyB7XG4gIElTX1JFUVVJUkVEID0gJ3JlcXVpcmVkJyxcbiAgUEFUVEVSTiA9ICdwYXR0ZXJuJyxcbiAgU0hPVUxEX0NPTlRBSU5fTlVNQkVSID0gJ251bWJlcicsXG4gIFNIT1VMRF9CRV9ERUZJTkVEID0gJ3Nob3VsZC1iZS1kZWZpbmVkJyxcbiAgR1JFQVRFUl9USEFOX1NDQUxFX01BWCA9ICdncmVhdGVyLXRoYW4tc2NhbGUtbWF4JyxcbiAgTEVTU19USEFOX1NDQUxFX01JTiA9ICdsZXNzLXRoYW4tc2NhbGUtbWluJyxcbiAgR1JFQVRFUl9USEFOX1JBTkdFX01BWCA9ICdncmVhdGVyLXRoYW4tcmFuZ2UtbWF4JyxcbiAgTEVTU19USEFOX1JBTkdFX01JTiA9ICdsZXNzLXRoYW4tcmFuZ2UtbWluJyxcbiAgTUlOX0FDVElWRV9DT1VOVCA9ICdtaW5BY3RpdmVDb3VudCcsXG4gIE1BWF9BQ1RJVkVfQ09VTlQgPSAnbWF4QWN0aXZlQ291bnQnXG59XG5cbi8vIEBkeW5hbWljXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvblBhdHRlcm4ge1xuICBzdGF0aWMgcmVhZG9ubHkgbWVzc2FnZXMgPSB7XG4gICAgZGV2aWNlSWQ6IGdldHRleHQoJ0RldmljZSBJRCBtdXN0IG5vdCBjb250YWluIHNwYWNlcyBvciBzbGFzaGVzIChcIi9cIikuJyksXG4gICAgZG9tYWluOiBnZXR0ZXh0KFxuICAgICAgJ09ubHkgbG93ZXJjYXNlIGxldHRlcnMsIGRpZ2l0cyBhbmQgaHlwaGVucyBhbGxvd2VkIGluIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBVUkkuICcgK1xuICAgICAgICAnTXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyOyBoeXBoZW5zIG9ubHkgYWxsb3dlZCBpbiB0aGUgbWlkZGxlLiBNdXN0IGJlIGEgdmFsaWQgVVJJLidcbiAgICApLFxuICAgIGVtYWlsOiBnZXR0ZXh0KCdJbnZhbGlkIGVtYWlsIGFkZHJlc3MuJyksXG4gICAgZW1haWxzOiBnZXR0ZXh0KCdJbnZhbGlkIGVtYWlsIGFkZHJlc3Nlcy4nKSxcbiAgICBpbnRlcm5hdGlvbmFsUGhvbmVOdW1iZXI6IGdldHRleHQoXG4gICAgICAnTXVzdCBiZSBhIHZhbGlkIHBob25lIG51bWJlciAob25seSBkaWdpdHMsIHNwYWNlcywgc2xhc2hlcyAoXCIvXCIpLCBkYXNoZXMgKFwiLVwiKSwgYW5kIHBsdXMgKFwiK1wiKSBhbGxvd2VkLCBmb3IgZXhhbXBsZTogKzQ5IDkgODc2IDU0MyAyMTApLidcbiAgICApLFxuICAgIGxvZ2luQWxpYXM6IGdldHRleHQoXG4gICAgICAnTG9naW4gYWxpYXMgbXVzdCBub3QgY29udGFpbiBzbGFzaGVzIChcIi9cIiwgXCJcXFxcXCIpIG5vciAoXCIrXCIpLCAoXCI6XCIpLCAoXCIkXCIpIHNpZ25zLidcbiAgICApLFxuICAgIG1heDogZ2V0dGV4dCgnTWF4IHZhbHVlOiB7eyBtYXggfX0nKSxcbiAgICBtaW46IGdldHRleHQoJ01pbiB2YWx1ZToge3sgbWluIH19JyksXG4gICAgbWluTGVuZ3RoOiBnZXR0ZXh0KCdTaG91bGQgaGF2ZSBhdCBsZWFzdCB7eyBtaW5MZW5ndGggfX0gY2hhcmFjdGVycy4nKSxcbiAgICBtaW5sZW5ndGg6IGdldHRleHQoJ1Nob3VsZCBoYXZlIGF0IGxlYXN0IHt7IHJlcXVpcmVkTGVuZ3RoIH19IGNoYXJhY3RlcnMuJyksXG4gICAgbWF4TGVuZ3RoOiBnZXR0ZXh0KCdTaG91bGQgaGF2ZSBhdCBtb3N0IHt7IG1heExlbmd0aCB9fSBjaGFyYWN0ZXJzLicpLFxuICAgIG1heGxlbmd0aDogZ2V0dGV4dCgnU2hvdWxkIGhhdmUgYXQgbW9zdCB7eyByZXF1aXJlZExlbmd0aCB9fSBjaGFyYWN0ZXJzLicpLFxuICAgIHBhdHRlcm46IGdldHRleHQoJ0RvZXMgbm90IG1hdGNoIHBhdHRlcm4ge3sgcmVxdWlyZWRQYXR0ZXJuIH19LicpLFxuICAgIG9wY3VhQnJvd3NlUGF0aDogZ2V0dGV4dCgnSW52YWxpZCBPUEMgVUEgVVJJLicpLFxuICAgIHBhc3N3b3JkOiBnZXR0ZXh0KFxuICAgICAgJ1Bhc3N3b3JkIG11c3QgaGF2ZSBhdCBsZWFzdCA4IGNoYXJhY3RlcnMgYW5kIG5vIG1vcmUgdGhhbiAzMiBhbmQgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzIGFuZCBmb2xsb3dpbmcgc3ltYm9sczogYH4hQCMkJV4mKigpX3wrLT0/OzpcXCdcIiwuPD57fVtdXFxcXC8nXG4gICAgKSxcbiAgICBwYXNzd29yZENvbmZpcm06IGdldHRleHQoJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2guJyksXG4gICAgcGFzc3dvcmRTdHJlbmd0aDogZ2V0dGV4dCgnUGFzc3dvcmQgbm90IGdvb2QgZW5vdWdoLCBwYXNzd29yZCBtdXN0IGJlIHN0cm9uZ2VyIChncmVlbikuJyksXG4gICAgcmVxdWlyZWQ6IGdldHRleHQoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJyksXG4gICAgdGVuYW50SWQ6IGdldHRleHQoXG4gICAgICAnTWF5IGNvbnRhaW4gbG93ZXJjYXNlIGxldHRlcnMsIGRpZ2l0cywgYW5kIGh5cGhlbnMuICcgK1xuICAgICAgICAnTXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyOyBoeXBoZW5zIG9ubHkgYWxsb3dlZCBpbiB0aGUgbWlkZGxlOyBtaW5pbXVtIDIgY2hhcmFjdGVycy4nXG4gICAgKSxcbiAgICB1cmxTZWdtZW50OiBnZXR0ZXh0KCdTbGFzaCwgc2luZ2xlIG9yIGRvdWJsZSBkb3RzIGFuZCB3aGl0ZSBzcGFjZSBub3QgYWxsb3dlZC4nKSxcbiAgICB1c2VyOiBnZXR0ZXh0KFxuICAgICAgJ1VzZXJuYW1lIG11c3Qgbm90IGNvbnRhaW4gc3BhY2VzIG5vciBzbGFzaGVzIChcIi9cIiwgXCJcXFxcXCIpIG5vciAoXCIrXCIpLCAoXCI6XCIpLCAoXCIkXCIpIHNpZ25zLidcbiAgICApLFxuICAgIGh0dHBVcmw6IGdldHRleHQoJ011c3QgYmUgYSB2YWxpZCBIVFRQKFMpIFVSTC4nKSxcbiAgICBub0RvdHM6IGdldHRleHQoJ0RvdHMgbm90IGFsbG93ZWQuJyksXG4gICAgc2ltcGxlSnNvblBhdGg6IGdldHRleHQoJ011c3QgYmUgYSB2YWxpZCBKU09OIHBhdGgnKSxcbiAgICBbRGF0YXBvaW50TGlicmFyeVZhbGlkYXRpb25FcnJvcnMuU0hPVUxEX0NPTlRBSU5fTlVNQkVSXTogZ2V0dGV4dChcbiAgICAgICdUaGlzIGZpZWxkIG11c3QgY29udGFpbiBhIG51bWJlci4nXG4gICAgKSxcbiAgICBbRGF0YXBvaW50TGlicmFyeVZhbGlkYXRpb25FcnJvcnMuU0hPVUxEX0JFX0RFRklORURdOiBnZXR0ZXh0KCdWYWx1ZSBtdXN0IGJlIGRlZmluZWQuJyksXG4gICAgW0RhdGFwb2ludExpYnJhcnlWYWxpZGF0aW9uRXJyb3JzLkdSRUFURVJfVEhBTl9TQ0FMRV9NQVhdOiBnZXR0ZXh0KFxuICAgICAgJ1ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIHNjYWxlIG1heGltdW0uJ1xuICAgICksXG4gICAgW0RhdGFwb2ludExpYnJhcnlWYWxpZGF0aW9uRXJyb3JzLkxFU1NfVEhBTl9TQ0FMRV9NSU5dOiBnZXR0ZXh0KFxuICAgICAgJ1ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHNjYWxlIG1pbmltdW0uJ1xuICAgICksXG4gICAgW0RhdGFwb2ludExpYnJhcnlWYWxpZGF0aW9uRXJyb3JzLkdSRUFURVJfVEhBTl9SQU5HRV9NQVhdOiBnZXR0ZXh0KFxuICAgICAgJ1ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIHJlc3BlY3RpdmUgbWF4aW11bS4nXG4gICAgKSxcbiAgICBbRGF0YXBvaW50TGlicmFyeVZhbGlkYXRpb25FcnJvcnMuTEVTU19USEFOX1JBTkdFX01JTl06IGdldHRleHQoXG4gICAgICAnVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gcmVzcGVjdGl2ZSBtaW5pbXVtLidcbiAgICApXG4gIH0gYXMgY29uc3Q7XG5cbiAgc3RhdGljIHJlYWRvbmx5IHJ1bGVzID0ge1xuICAgIGRldmljZUlkOiB7XG4gICAgICBwYXR0ZXJuOiAvXlteXFxzL10qJC9cbiAgICB9LFxuICAgIGRvbWFpbjoge1xuICAgICAgcGF0dGVybjogL15bYS16XStbYS16MC05LV0qW2EtejAtOV0rXFwuezF9LiskL1xuICAgIH0sXG4gICAgZ3JvdXBOYW1lOiB7XG4gICAgICBtYXhMZW5ndGg6IDI1NFxuICAgIH0sXG4gICAgaG9zdG5hbWU6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC9eKChbYS16QS1aMC05XXxbYS16QS1aMC05XVthLXpBLVowLTktXSpbYS16QS1aMC05XSlcXC4pKihbQS1aYS16MC05XXxbQS1aYS16MC05XVtBLVphLXowLTktXSpbQS1aYS16MC05XSkkL1xuICAgIH0sXG4gICAgaXA6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pJC9cbiAgICB9LFxuICAgIG9wY3VhQnJvd3NlUGF0aDoge1xuICAgICAgcGF0dGVybjogL14ob3BjLnRjcHxodHRwfGh0dHBzKTpcXC9cXC9bXiBcIl0rJC9cbiAgICB9LFxuICAgIHBhc3N3b3JkOiB7XG4gICAgICBwYXR0ZXJuOiAvXlthLXpBLVowLTlgfiFAIyQlXiYqKClffCtcXC09Pzs6J1wiLC48Pnt9W1xcXVxcXFwvXXs4LDMyfSQvXG4gICAgfSxcbiAgICB0ZW5hbnRJZDoge1xuICAgICAgcGF0dGVybjogL15bYS16XStbYS16MC05LV0qW2EtejAtOV0rJC9cbiAgICB9LFxuICAgIHVzZXI6IHtcbiAgICAgIHBhdHRlcm46IC9eW15cXFxcL1xccyQ6K10qJC9cbiAgICB9LFxuICAgIHVybFNlZ21lbnQ6IHtcbiAgICAgIHBhdHRlcm46IC9eKChbLl17MSwyfSl8KFsvXSkrfCgoWy9dKikoWy5dezEsMn0pKFsvXSopKXwoKC4qKShbL118WyBdKykoLiopKXwoXFxzKykpJC9cbiAgICB9LFxuICAgIGxvZ2luQWxpYXM6IHtcbiAgICAgIHBhdHRlcm46IC9eW15cXFxcLyQ6K10qJC9cbiAgICB9LFxuICAgIG5vRG90czoge1xuICAgICAgcGF0dGVybjogL15bXi5dKiQvXG4gICAgfSxcbiAgICBodHRwVXJsOiB7XG4gICAgICBwYXR0ZXJuOiAvXihodHRwcz8pOlxcL1xcLy4qJC9cbiAgICB9XG4gIH07XG5cbiAgc3RhdGljIGdldChrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHBhdHRlcm4gPSB0aGlzLnJ1bGVzW2tleV07XG4gICAgcmV0dXJuIHBhdHRlcm4gYXMgVmFsaWRhdGlvblJ1bGVzO1xuICB9XG59XG4iXX0=
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1wYXR0ZXJuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9mb3Jtcy92YWxpZGF0aW9uLXBhdHRlcm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0NBQWtDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVMxQyxNQUFNLENBQU4sSUFBWSxnQ0FXWDtBQVhELFdBQVksZ0NBQWdDO0lBQzFDLDREQUF3QixDQUFBO0lBQ3hCLHVEQUFtQixDQUFBO0lBQ25CLG9FQUFnQyxDQUFBO0lBQ2hDLDJFQUF1QyxDQUFBO0lBQ3ZDLHFGQUFpRCxDQUFBO0lBQ2pELCtFQUEyQyxDQUFBO0lBQzNDLHFGQUFpRCxDQUFBO0lBQ2pELCtFQUEyQyxDQUFBO0lBQzNDLHVFQUFtQyxDQUFBO0lBQ25DLHVFQUFtQyxDQUFBO0FBQ3JDLENBQUMsRUFYVyxnQ0FBZ0MsS0FBaEMsZ0NBQWdDLFFBVzNDO0FBRUQsV0FBVztBQUNYLE1BQU0sT0FBTyxpQkFBaUI7SUE0RzVCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBVztRQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sT0FBMEIsQ0FBQztJQUNwQyxDQUFDOztBQTlHZSwwQkFBUSxHQUFHO0lBQ3pCLFFBQVEsRUFBRSxPQUFPLENBQUMscURBQXFELENBQUM7SUFDeEUsTUFBTSxFQUFFLE9BQU8sQ0FDYixtRkFBbUY7UUFDakYsb0ZBQW9GLENBQ3ZGO0lBQ0QsS0FBSyxFQUFFLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztJQUN4QyxNQUFNLEVBQUUsT0FBTyxDQUFDLDBCQUEwQixDQUFDO0lBQzNDLHdCQUF3QixFQUFFLE9BQU8sQ0FDL0IsMElBQTBJLENBQzNJO0lBQ0QsVUFBVSxFQUFFLE9BQU8sQ0FDakIsaUZBQWlGLENBQ2xGO0lBQ0QsR0FBRyxFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztJQUNwQyxHQUFHLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDO0lBQ3BDLFNBQVMsRUFBRSxPQUFPLENBQUMsa0RBQWtELENBQUM7SUFDdEUsU0FBUyxFQUFFLE9BQU8sQ0FBQyx1REFBdUQsQ0FBQztJQUMzRSxTQUFTLEVBQUUsT0FBTyxDQUFDLGlEQUFpRCxDQUFDO0lBQ3JFLFNBQVMsRUFBRSxPQUFPLENBQUMsc0RBQXNELENBQUM7SUFDMUUsT0FBTyxFQUFFLE9BQU8sQ0FBQywrQ0FBK0MsQ0FBQztJQUNqRSxlQUFlLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDO0lBQy9DLFFBQVEsRUFBRSxPQUFPLENBQ2YsOEpBQThKLENBQy9KO0lBQ0QsZUFBZSxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQztJQUNuRCxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsOERBQThELENBQUM7SUFDekYsUUFBUSxFQUFFLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQztJQUM1QyxRQUFRLEVBQUUsT0FBTyxDQUNmLHNEQUFzRDtRQUNwRCxxRkFBcUYsQ0FDeEY7SUFDRCxVQUFVLEVBQUUsT0FBTyxDQUFDLDJEQUEyRCxDQUFDO0lBQ2hGLElBQUksRUFBRSxPQUFPLENBQ1gseUZBQXlGLENBQzFGO0lBQ0QsT0FBTyxFQUFFLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQztJQUNoRCxTQUFTLEVBQUUsT0FBTyxDQUNoQixtR0FBbUcsQ0FDcEc7SUFDRCxNQUFNLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLGNBQWMsRUFBRSxPQUFPLENBQUMsMkJBQTJCLENBQUM7SUFDcEQsQ0FBQyxnQ0FBZ0MsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLE9BQU8sQ0FDL0QsbUNBQW1DLENBQ3BDO0lBQ0QsQ0FBQyxnQ0FBZ0MsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztJQUN2RixDQUFDLGdDQUFnQyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxDQUNoRSx3Q0FBd0MsQ0FDekM7SUFDRCxDQUFDLGdDQUFnQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsT0FBTyxDQUM3RCwyQ0FBMkMsQ0FDNUM7SUFDRCxDQUFDLGdDQUFnQyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxDQUNoRSw2Q0FBNkMsQ0FDOUM7SUFDRCxDQUFDLGdDQUFnQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsT0FBTyxDQUM3RCxnREFBZ0QsQ0FDakQ7Q0FDTyxDQUFDO0FBRUssdUJBQUssR0FBRztJQUN0QixRQUFRLEVBQUU7UUFDUixPQUFPLEVBQUUsV0FBVztLQUNyQjtJQUNELE1BQU0sRUFBRTtRQUNOLE9BQU8sRUFBRSxvQ0FBb0M7S0FDOUM7SUFDRCxTQUFTLEVBQUU7UUFDVCxTQUFTLEVBQUUsR0FBRztLQUNmO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsT0FBTyxFQUNMLDJHQUEyRztLQUM5RztJQUNELEVBQUUsRUFBRTtRQUNGLE9BQU8sRUFDTCw2RkFBNkY7S0FDaEc7SUFDRCxlQUFlLEVBQUU7UUFDZixPQUFPLEVBQUUsbUNBQW1DO0tBQzdDO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsT0FBTyxFQUFFLHdEQUF3RDtLQUNsRTtJQUNELFFBQVEsRUFBRTtRQUNSLE9BQU8sRUFBRSw2QkFBNkI7S0FDdkM7SUFDRCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsZ0JBQWdCO0tBQzFCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsT0FBTyxFQUFFLDJFQUEyRTtLQUNyRjtJQUNELFVBQVUsRUFBRTtRQUNWLE9BQU8sRUFBRSxjQUFjO0tBQ3hCO0lBQ0QsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFLFNBQVM7S0FDbkI7SUFDRCxPQUFPLEVBQUU7UUFDUCxPQUFPLEVBQUUsbUJBQW1CO0tBQzdCO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsT0FBTyxFQUFFLGlCQUFpQjtLQUMzQjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZTogbWF4LWxpbmUtbGVuZ3RoXG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uUnVsZXMge1xuICBwYXR0ZXJuPzogUmVnRXhwO1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBtYXhMZW5ndGg/OiBudW1iZXI7XG4gIG1pbkxlbmd0aD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gRGF0YXBvaW50TGlicmFyeVZhbGlkYXRpb25FcnJvcnMge1xuICBJU19SRVFVSVJFRCA9ICdyZXF1aXJlZCcsXG4gIFBBVFRFUk4gPSAncGF0dGVybicsXG4gIFNIT1VMRF9DT05UQUlOX05VTUJFUiA9ICdudW1iZXInLFxuICBTSE9VTERfQkVfREVGSU5FRCA9ICdzaG91bGQtYmUtZGVmaW5lZCcsXG4gIEdSRUFURVJfVEhBTl9TQ0FMRV9NQVggPSAnZ3JlYXRlci10aGFuLXNjYWxlLW1heCcsXG4gIExFU1NfVEhBTl9TQ0FMRV9NSU4gPSAnbGVzcy10aGFuLXNjYWxlLW1pbicsXG4gIEdSRUFURVJfVEhBTl9SQU5HRV9NQVggPSAnZ3JlYXRlci10aGFuLXJhbmdlLW1heCcsXG4gIExFU1NfVEhBTl9SQU5HRV9NSU4gPSAnbGVzcy10aGFuLXJhbmdlLW1pbicsXG4gIE1JTl9BQ1RJVkVfQ09VTlQgPSAnbWluQWN0aXZlQ291bnQnLFxuICBNQVhfQUNUSVZFX0NPVU5UID0gJ21heEFjdGl2ZUNvdW50J1xufVxuXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25QYXR0ZXJuIHtcbiAgc3RhdGljIHJlYWRvbmx5IG1lc3NhZ2VzID0ge1xuICAgIGRldmljZUlkOiBnZXR0ZXh0KCdEZXZpY2UgSUQgbXVzdCBub3QgY29udGFpbiBzcGFjZXMgb3Igc2xhc2hlcyAoXCIvXCIpLicpLFxuICAgIGRvbWFpbjogZ2V0dGV4dChcbiAgICAgICdPbmx5IGxvd2VyY2FzZSBsZXR0ZXJzLCBkaWdpdHMgYW5kIGh5cGhlbnMgYWxsb3dlZCBpbiB0aGUgZmlyc3QgcGFydCBvZiB0aGUgVVJJLiAnICtcbiAgICAgICAgJ011c3Qgc3RhcnQgd2l0aCBhIGxldHRlcjsgaHlwaGVucyBvbmx5IGFsbG93ZWQgaW4gdGhlIG1pZGRsZS4gTXVzdCBiZSBhIHZhbGlkIFVSSS4nXG4gICAgKSxcbiAgICBlbWFpbDogZ2V0dGV4dCgnSW52YWxpZCBlbWFpbCBhZGRyZXNzLicpLFxuICAgIGVtYWlsczogZ2V0dGV4dCgnSW52YWxpZCBlbWFpbCBhZGRyZXNzZXMuJyksXG4gICAgaW50ZXJuYXRpb25hbFBob25lTnVtYmVyOiBnZXR0ZXh0KFxuICAgICAgJ011c3QgYmUgYSB2YWxpZCBwaG9uZSBudW1iZXIgKG9ubHkgZGlnaXRzLCBzcGFjZXMsIHNsYXNoZXMgKFwiL1wiKSwgZGFzaGVzIChcIi1cIiksIGFuZCBwbHVzIChcIitcIikgYWxsb3dlZCwgZm9yIGV4YW1wbGU6ICs0OSA5IDg3NiA1NDMgMjEwKS4nXG4gICAgKSxcbiAgICBsb2dpbkFsaWFzOiBnZXR0ZXh0KFxuICAgICAgJ0xvZ2luIGFsaWFzIG11c3Qgbm90IGNvbnRhaW4gc2xhc2hlcyAoXCIvXCIsIFwiXFxcXFwiKSBub3IgKFwiK1wiKSwgKFwiOlwiKSwgKFwiJFwiKSBzaWducy4nXG4gICAgKSxcbiAgICBtYXg6IGdldHRleHQoJ01heCB2YWx1ZToge3sgbWF4IH19JyksXG4gICAgbWluOiBnZXR0ZXh0KCdNaW4gdmFsdWU6IHt7IG1pbiB9fScpLFxuICAgIG1pbkxlbmd0aDogZ2V0dGV4dCgnU2hvdWxkIGhhdmUgYXQgbGVhc3Qge3sgbWluTGVuZ3RoIH19IGNoYXJhY3RlcnMuJyksXG4gICAgbWlubGVuZ3RoOiBnZXR0ZXh0KCdTaG91bGQgaGF2ZSBhdCBsZWFzdCB7eyByZXF1aXJlZExlbmd0aCB9fSBjaGFyYWN0ZXJzLicpLFxuICAgIG1heExlbmd0aDogZ2V0dGV4dCgnU2hvdWxkIGhhdmUgYXQgbW9zdCB7eyBtYXhMZW5ndGggfX0gY2hhcmFjdGVycy4nKSxcbiAgICBtYXhsZW5ndGg6IGdldHRleHQoJ1Nob3VsZCBoYXZlIGF0IG1vc3Qge3sgcmVxdWlyZWRMZW5ndGggfX0gY2hhcmFjdGVycy4nKSxcbiAgICBwYXR0ZXJuOiBnZXR0ZXh0KCdEb2VzIG5vdCBtYXRjaCBwYXR0ZXJuIHt7IHJlcXVpcmVkUGF0dGVybiB9fS4nKSxcbiAgICBvcGN1YUJyb3dzZVBhdGg6IGdldHRleHQoJ0ludmFsaWQgT1BDIFVBIFVSSS4nKSxcbiAgICBwYXNzd29yZDogZ2V0dGV4dChcbiAgICAgICdQYXNzd29yZCBtdXN0IGhhdmUgYXQgbGVhc3QgOCBjaGFyYWN0ZXJzIGFuZCBubyBtb3JlIHRoYW4gMzIgYW5kIGNhbiBvbmx5IGNvbnRhaW4gbGV0dGVycywgbnVtYmVycyBhbmQgZm9sbG93aW5nIHN5bWJvbHM6IGB+IUAjJCVeJiooKV98Ky09Pzs6XFwnXCIsLjw+e31bXVxcXFwvJ1xuICAgICksXG4gICAgcGFzc3dvcmRDb25maXJtOiBnZXR0ZXh0KCdQYXNzd29yZHMgZG8gbm90IG1hdGNoLicpLFxuICAgIHBhc3N3b3JkU3RyZW5ndGg6IGdldHRleHQoJ1Bhc3N3b3JkIG5vdCBnb29kIGVub3VnaCwgcGFzc3dvcmQgbXVzdCBiZSBzdHJvbmdlciAoZ3JlZW4pLicpLFxuICAgIHJlcXVpcmVkOiBnZXR0ZXh0KCdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLicpLFxuICAgIHRlbmFudElkOiBnZXR0ZXh0KFxuICAgICAgJ01heSBjb250YWluIGxvd2VyY2FzZSBsZXR0ZXJzLCBkaWdpdHMsIGFuZCBoeXBoZW5zLiAnICtcbiAgICAgICAgJ011c3Qgc3RhcnQgd2l0aCBhIGxldHRlcjsgaHlwaGVucyBvbmx5IGFsbG93ZWQgaW4gdGhlIG1pZGRsZTsgbWluaW11bSAyIGNoYXJhY3RlcnMuJ1xuICAgICksXG4gICAgdXJsU2VnbWVudDogZ2V0dGV4dCgnU2xhc2gsIHNpbmdsZSBvciBkb3VibGUgZG90cyBhbmQgd2hpdGUgc3BhY2Ugbm90IGFsbG93ZWQuJyksXG4gICAgdXNlcjogZ2V0dGV4dChcbiAgICAgICdVc2VybmFtZSBtdXN0IG5vdCBjb250YWluIHNwYWNlcyBub3Igc2xhc2hlcyAoXCIvXCIsIFwiXFxcXFwiKSBub3IgKFwiK1wiKSwgKFwiOlwiKSwgKFwiJFwiKSBzaWducy4nXG4gICAgKSxcbiAgICBodHRwVXJsOiBnZXR0ZXh0KCdNdXN0IGJlIGEgdmFsaWQgSFRUUChTKSBVUkwuJyksXG4gICAgaGV4TnVtYmVyOiBnZXR0ZXh0KFxuICAgICAgJ011c3QgYmUgYSB2YWxpZCBoZXhhZGVjaW1hbCBudW1iZXIuIE11c3QgY29udGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogMC05LCBhLWYsIEEtRiwgOi4nXG4gICAgKSxcbiAgICBub0RvdHM6IGdldHRleHQoJ0RvdHMgbm90IGFsbG93ZWQuJyksXG4gICAgc2ltcGxlSnNvblBhdGg6IGdldHRleHQoJ011c3QgYmUgYSB2YWxpZCBKU09OIHBhdGgnKSxcbiAgICBbRGF0YXBvaW50TGlicmFyeVZhbGlkYXRpb25FcnJvcnMuU0hPVUxEX0NPTlRBSU5fTlVNQkVSXTogZ2V0dGV4dChcbiAgICAgICdUaGlzIGZpZWxkIG11c3QgY29udGFpbiBhIG51bWJlci4nXG4gICAgKSxcbiAgICBbRGF0YXBvaW50TGlicmFyeVZhbGlkYXRpb25FcnJvcnMuU0hPVUxEX0JFX0RFRklORURdOiBnZXR0ZXh0KCdWYWx1ZSBtdXN0IGJlIGRlZmluZWQuJyksXG4gICAgW0RhdGFwb2ludExpYnJhcnlWYWxpZGF0aW9uRXJyb3JzLkdSRUFURVJfVEhBTl9TQ0FMRV9NQVhdOiBnZXR0ZXh0KFxuICAgICAgJ1ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIHNjYWxlIG1heGltdW0uJ1xuICAgICksXG4gICAgW0RhdGFwb2ludExpYnJhcnlWYWxpZGF0aW9uRXJyb3JzLkxFU1NfVEhBTl9TQ0FMRV9NSU5dOiBnZXR0ZXh0KFxuICAgICAgJ1ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHNjYWxlIG1pbmltdW0uJ1xuICAgICksXG4gICAgW0RhdGFwb2ludExpYnJhcnlWYWxpZGF0aW9uRXJyb3JzLkdSRUFURVJfVEhBTl9SQU5HRV9NQVhdOiBnZXR0ZXh0KFxuICAgICAgJ1ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIHJlc3BlY3RpdmUgbWF4aW11bS4nXG4gICAgKSxcbiAgICBbRGF0YXBvaW50TGlicmFyeVZhbGlkYXRpb25FcnJvcnMuTEVTU19USEFOX1JBTkdFX01JTl06IGdldHRleHQoXG4gICAgICAnVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gcmVzcGVjdGl2ZSBtaW5pbXVtLidcbiAgICApXG4gIH0gYXMgY29uc3Q7XG5cbiAgc3RhdGljIHJlYWRvbmx5IHJ1bGVzID0ge1xuICAgIGRldmljZUlkOiB7XG4gICAgICBwYXR0ZXJuOiAvXlteXFxzL10qJC9cbiAgICB9LFxuICAgIGRvbWFpbjoge1xuICAgICAgcGF0dGVybjogL15bYS16XStbYS16MC05LV0qW2EtejAtOV0rXFwuezF9LiskL1xuICAgIH0sXG4gICAgZ3JvdXBOYW1lOiB7XG4gICAgICBtYXhMZW5ndGg6IDI1NFxuICAgIH0sXG4gICAgaG9zdG5hbWU6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC9eKChbYS16QS1aMC05XXxbYS16QS1aMC05XVthLXpBLVowLTktXSpbYS16QS1aMC05XSlcXC4pKihbQS1aYS16MC05XXxbQS1aYS16MC05XVtBLVphLXowLTktXSpbQS1aYS16MC05XSkkL1xuICAgIH0sXG4gICAgaXA6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pJC9cbiAgICB9LFxuICAgIG9wY3VhQnJvd3NlUGF0aDoge1xuICAgICAgcGF0dGVybjogL14ob3BjLnRjcHxodHRwfGh0dHBzKTpcXC9cXC9bXiBcIl0rJC9cbiAgICB9LFxuICAgIHBhc3N3b3JkOiB7XG4gICAgICBwYXR0ZXJuOiAvXlthLXpBLVowLTlgfiFAIyQlXiYqKClffCtcXC09Pzs6J1wiLC48Pnt9W1xcXVxcXFwvXXs4LDMyfSQvXG4gICAgfSxcbiAgICB0ZW5hbnRJZDoge1xuICAgICAgcGF0dGVybjogL15bYS16XStbYS16MC05LV0qW2EtejAtOV0rJC9cbiAgICB9LFxuICAgIHVzZXI6IHtcbiAgICAgIHBhdHRlcm46IC9eW15cXFxcL1xccyQ6K10qJC9cbiAgICB9LFxuICAgIHVybFNlZ21lbnQ6IHtcbiAgICAgIHBhdHRlcm46IC9eKChbLl17MSwyfSl8KFsvXSkrfCgoWy9dKikoWy5dezEsMn0pKFsvXSopKXwoKC4qKShbL118WyBdKykoLiopKXwoXFxzKykpJC9cbiAgICB9LFxuICAgIGxvZ2luQWxpYXM6IHtcbiAgICAgIHBhdHRlcm46IC9eW15cXFxcLyQ6K10qJC9cbiAgICB9LFxuICAgIG5vRG90czoge1xuICAgICAgcGF0dGVybjogL15bXi5dKiQvXG4gICAgfSxcbiAgICBodHRwVXJsOiB7XG4gICAgICBwYXR0ZXJuOiAvXihodHRwcz8pOlxcL1xcLy4qJC9cbiAgICB9LFxuICAgIGhleE51bWJlcjoge1xuICAgICAgcGF0dGVybjogL15bMC05YS1mQS1GOl0rJC9cbiAgICB9XG4gIH07XG5cbiAgc3RhdGljIGdldChrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHBhdHRlcm4gPSB0aGlzLnJ1bGVzW2tleV07XG4gICAgcmV0dXJuIHBhdHRlcm4gYXMgVmFsaWRhdGlvblJ1bGVzO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { TenantOptionsService } from '@c8y/client';
|
|
3
|
+
import { AlertService, gettext, OptionsService } from '@c8y/ngx-components';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@c8y/ngx-components";
|
|
6
|
+
import * as i2 from "@c8y/client";
|
|
7
|
+
import * as i3 from "@angular/common";
|
|
8
|
+
import * as i4 from "@angular/forms";
|
|
9
|
+
import * as i5 from "ngx-bootstrap/dropdown";
|
|
10
|
+
export class CrlCheckSettingsComponent {
|
|
11
|
+
constructor(optionsService, tenantOptionsService, alertService) {
|
|
12
|
+
this.optionsService = optionsService;
|
|
13
|
+
this.tenantOptionsService = tenantOptionsService;
|
|
14
|
+
this.alertService = alertService;
|
|
15
|
+
this.crlCheck = { online: false, offline: false };
|
|
16
|
+
}
|
|
17
|
+
async ngOnInit() {
|
|
18
|
+
this.crlCheck = {
|
|
19
|
+
offline: (await this.optionsService.getTenantOption('configuration', 'crl.offline.check.enabled', false)),
|
|
20
|
+
online: (await this.optionsService.getTenantOption('configuration', 'crl.online.check.enabled', false))
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
async updateTenantOption(tenantOption) {
|
|
24
|
+
try {
|
|
25
|
+
await this.tenantOptionsService.update(tenantOption);
|
|
26
|
+
this.alertService.success(gettext('CRL check configuration saved.'));
|
|
27
|
+
}
|
|
28
|
+
catch (er) {
|
|
29
|
+
this.alertService.addServerFailure(er);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
CrlCheckSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CrlCheckSettingsComponent, deps: [{ token: i1.OptionsService }, { token: i2.TenantOptionsService }, { token: i1.AlertService }], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
+
CrlCheckSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: CrlCheckSettingsComponent, selector: "c8y-crl-check-settings", ngImport: i0, template: "<c8y-action-bar-item [placement]=\"'right'\">\n <div\n class=\"dropdown\"\n dropdown\n [insideClick]=\"true\"\n >\n <button\n class=\"dropdown-toggle c8y-dropdown d-flex a-i-center\"\n title=\"{{ 'CRL check' | translate }}\"\n aria-haspopup=\"true\"\n type=\"button\"\n dropdownToggle\n >\n <i\n class=\"m-r-4\"\n [c8yIcon]=\"'check-document'\"\n ></i>\n <span\n class=\"text-truncate\"\n translate\n >\n CRL check\n </span>\n <i\n class=\"m-l-4 text-primary\"\n [c8yIcon]=\"'caret-down'\"\n ></i>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right hidden-xs\"\n data-cy=\"register-device--dropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"dropdown\"></ng-container>\n </ul>\n\n <ul class=\"dropdown-menu dropdown-menu-right visible-xs\">\n <ng-container *ngTemplateOutlet=\"dropdown\"></ng-container>\n </ul>\n\n <ng-template #dropdown>\n <li>\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n title=\"{{ 'Online`type of checking`' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"crlCheck.online\"\n (ngModelChange)=\"\n updateTenantOption({\n category: 'configuration',\n key: 'crl.online.check.enabled',\n value: $event\n })\n \"\n />\n <span class=\"m-r-4\"></span>\n {{ 'Online`type of checking`' | translate }}\n </label>\n </li>\n <li>\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n title=\"{{ 'Offline`type of checking`' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"crlCheck.offline\"\n (ngModelChange)=\"\n updateTenantOption({\n category: 'configuration',\n key: 'crl.offline.check.enabled',\n value: $event\n })\n \"\n />\n <span class=\"m-r-4\"></span>\n {{ 'Offline`type of checking`' | translate }}\n </label>\n </li>\n </ng-template>\n </div>\n</c8y-action-bar-item>\n", dependencies: [{ kind: "component", type: i1.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i5.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i5.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] });
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CrlCheckSettingsComponent, decorators: [{
|
|
36
|
+
type: Component,
|
|
37
|
+
args: [{ selector: 'c8y-crl-check-settings', template: "<c8y-action-bar-item [placement]=\"'right'\">\n <div\n class=\"dropdown\"\n dropdown\n [insideClick]=\"true\"\n >\n <button\n class=\"dropdown-toggle c8y-dropdown d-flex a-i-center\"\n title=\"{{ 'CRL check' | translate }}\"\n aria-haspopup=\"true\"\n type=\"button\"\n dropdownToggle\n >\n <i\n class=\"m-r-4\"\n [c8yIcon]=\"'check-document'\"\n ></i>\n <span\n class=\"text-truncate\"\n translate\n >\n CRL check\n </span>\n <i\n class=\"m-l-4 text-primary\"\n [c8yIcon]=\"'caret-down'\"\n ></i>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right hidden-xs\"\n data-cy=\"register-device--dropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"dropdown\"></ng-container>\n </ul>\n\n <ul class=\"dropdown-menu dropdown-menu-right visible-xs\">\n <ng-container *ngTemplateOutlet=\"dropdown\"></ng-container>\n </ul>\n\n <ng-template #dropdown>\n <li>\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n title=\"{{ 'Online`type of checking`' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"crlCheck.online\"\n (ngModelChange)=\"\n updateTenantOption({\n category: 'configuration',\n key: 'crl.online.check.enabled',\n value: $event\n })\n \"\n />\n <span class=\"m-r-4\"></span>\n {{ 'Online`type of checking`' | translate }}\n </label>\n </li>\n <li>\n <label\n class=\"c8y-checkbox d-flex a-i-center\"\n title=\"{{ 'Offline`type of checking`' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"crlCheck.offline\"\n (ngModelChange)=\"\n updateTenantOption({\n category: 'configuration',\n key: 'crl.offline.check.enabled',\n value: $event\n })\n \"\n />\n <span class=\"m-r-4\"></span>\n {{ 'Offline`type of checking`' | translate }}\n </label>\n </li>\n </ng-template>\n </div>\n</c8y-action-bar-item>\n" }]
|
|
38
|
+
}], ctorParameters: function () { return [{ type: i1.OptionsService }, { type: i2.TenantOptionsService }, { type: i1.AlertService }]; } });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JsLWNoZWNrLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RydXN0ZWQtY2VydGlmaWNhdGVzL2NybC9jcmwtY2hlY2stc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMvY3JsL2NybC1jaGVjay1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBaUIsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFNNUUsTUFBTSxPQUFPLHlCQUF5QjtJQUdwQyxZQUNVLGNBQThCLEVBQzlCLG9CQUEwQyxFQUMxQyxZQUEwQjtRQUYxQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUxwQyxhQUFRLEdBQTBDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFNakYsQ0FBQztJQUVKLEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNkLE9BQU8sRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQ2pELGVBQWUsRUFDZiwyQkFBMkIsRUFDM0IsS0FBSyxDQUNOLENBQVk7WUFDYixNQUFNLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUNoRCxlQUFlLEVBQ2YsMEJBQTBCLEVBQzFCLEtBQUssQ0FDTixDQUFZO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsWUFBMkI7UUFDbEQsSUFBSTtZQUNGLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDO1NBQ3RFO1FBQUMsT0FBTyxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQzs7c0hBL0JVLHlCQUF5QjswR0FBekIseUJBQXlCLDhEQ1J0QyxteUVBb0ZBOzJGRDVFYSx5QkFBeUI7a0JBSnJDLFNBQVM7K0JBQ0Usd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElUZW5hbnRPcHRpb24sIFRlbmFudE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBnZXR0ZXh0LCBPcHRpb25zU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktY3JsLWNoZWNrLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NybC1jaGVjay1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ3JsQ2hlY2tTZXR0aW5nc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNybENoZWNrOiB7IG9ubGluZTogYm9vbGVhbjsgb2ZmbGluZTogYm9vbGVhbiB9ID0geyBvbmxpbmU6IGZhbHNlLCBvZmZsaW5lOiBmYWxzZSB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGVuYW50T3B0aW9uc1NlcnZpY2U6IFRlbmFudE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY3JsQ2hlY2sgPSB7XG4gICAgICBvZmZsaW5lOiAoYXdhaXQgdGhpcy5vcHRpb25zU2VydmljZS5nZXRUZW5hbnRPcHRpb248Ym9vbGVhbj4oXG4gICAgICAgICdjb25maWd1cmF0aW9uJyxcbiAgICAgICAgJ2NybC5vZmZsaW5lLmNoZWNrLmVuYWJsZWQnLFxuICAgICAgICBmYWxzZVxuICAgICAgKSkgYXMgYm9vbGVhbixcbiAgICAgIG9ubGluZTogKGF3YWl0IHRoaXMub3B0aW9uc1NlcnZpY2UuZ2V0VGVuYW50T3B0aW9uPGJvb2xlYW4+KFxuICAgICAgICAnY29uZmlndXJhdGlvbicsXG4gICAgICAgICdjcmwub25saW5lLmNoZWNrLmVuYWJsZWQnLFxuICAgICAgICBmYWxzZVxuICAgICAgKSkgYXMgYm9vbGVhblxuICAgIH07XG4gIH1cblxuICBhc3luYyB1cGRhdGVUZW5hbnRPcHRpb24odGVuYW50T3B0aW9uOiBJVGVuYW50T3B0aW9uKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMudGVuYW50T3B0aW9uc1NlcnZpY2UudXBkYXRlKHRlbmFudE9wdGlvbik7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0NSTCBjaGVjayBjb25maWd1cmF0aW9uIHNhdmVkLicpKTtcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcik7XG4gICAgfVxuICB9XG59XG4iLCI8Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZHJvcGRvd25cIlxuICAgIGRyb3Bkb3duXG4gICAgW2luc2lkZUNsaWNrXT1cInRydWVcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJkcm9wZG93bi10b2dnbGUgYzh5LWRyb3Bkb3duIGQtZmxleCBhLWktY2VudGVyXCJcbiAgICAgIHRpdGxlPVwie3sgJ0NSTCBjaGVjaycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBkcm9wZG93blRvZ2dsZVxuICAgID5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwibS1yLTRcIlxuICAgICAgICBbYzh5SWNvbl09XCInY2hlY2stZG9jdW1lbnQnXCJcbiAgICAgID48L2k+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgID5cbiAgICAgICAgQ1JMIGNoZWNrXG4gICAgICA8L3NwYW4+XG4gICAgICA8aVxuICAgICAgICBjbGFzcz1cIm0tbC00IHRleHQtcHJpbWFyeVwiXG4gICAgICAgIFtjOHlJY29uXT1cIidjYXJldC1kb3duJ1wiXG4gICAgICA+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDx1bFxuICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHQgaGlkZGVuLXhzXCJcbiAgICAgIGRhdGEtY3k9XCJyZWdpc3Rlci1kZXZpY2UtLWRyb3Bkb3duXCJcbiAgICAgICpkcm9wZG93bk1lbnVcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcGRvd25cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L3VsPlxuXG4gICAgPHVsIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0IHZpc2libGUteHNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wZG93blwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvdWw+XG5cbiAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duPlxuICAgICAgPGxpPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveCBkLWZsZXggYS1pLWNlbnRlclwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAnT25saW5lYHR5cGUgb2YgY2hlY2tpbmdgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNybENoZWNrLm9ubGluZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJcbiAgICAgICAgICAgICAgdXBkYXRlVGVuYW50T3B0aW9uKHtcbiAgICAgICAgICAgICAgICBjYXRlZ29yeTogJ2NvbmZpZ3VyYXRpb24nLFxuICAgICAgICAgICAgICAgIGtleTogJ2NybC5vbmxpbmUuY2hlY2suZW5hYmxlZCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICRldmVudFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1yLTRcIj48L3NwYW4+XG4gICAgICAgICAge3sgJ09ubGluZWB0eXBlIG9mIGNoZWNraW5nYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvbGk+XG4gICAgICA8bGk+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94IGQtZmxleCBhLWktY2VudGVyXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdPZmZsaW5lYHR5cGUgb2YgY2hlY2tpbmdgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNybENoZWNrLm9mZmxpbmVcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgIHVwZGF0ZVRlbmFudE9wdGlvbih7XG4gICAgICAgICAgICAgICAgY2F0ZWdvcnk6ICdjb25maWd1cmF0aW9uJyxcbiAgICAgICAgICAgICAgICBrZXk6ICdjcmwub2ZmbGluZS5jaGVjay5lbmFibGVkJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJGV2ZW50XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLXItNFwiPjwvc3Bhbj5cbiAgICAgICAgICB7eyAnT2ZmbGluZWB0eXBlIG9mIGNoZWNraW5nYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvbGk+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG4iXX0=
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { isEmpty, pull } from 'lodash-es';
|
|
3
|
+
import { CrlService } from '@c8y/client';
|
|
4
|
+
import { AlertService, gettext, ModalService, Status } from '@c8y/ngx-components';
|
|
5
|
+
import { saveAs } from 'file-saver';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@c8y/client";
|
|
8
|
+
import * as i2 from "@c8y/ngx-components";
|
|
9
|
+
import * as i3 from "@angular/common";
|
|
10
|
+
import * as i4 from "@angular/forms";
|
|
11
|
+
import * as i5 from "ngx-bootstrap/datepicker";
|
|
12
|
+
import * as i6 from "ngx-bootstrap/popover";
|
|
13
|
+
import * as i7 from "./crl-check-settings.component";
|
|
14
|
+
export class CrlSettingsComponent {
|
|
15
|
+
constructor(crlService, alertService, modalService) {
|
|
16
|
+
this.crlService = crlService;
|
|
17
|
+
this.alertService = alertService;
|
|
18
|
+
this.modalService = modalService;
|
|
19
|
+
this.crls = [this.getEmptyCertificateRevocation()];
|
|
20
|
+
this.droppedFiles = [];
|
|
21
|
+
this.today = new Date();
|
|
22
|
+
this.MANUAL_ENTRY_POPOVER = gettext('In this section, you can override or add individual entries to the Certificate Revocation List. Providing the serial number is mandatory. In case the revocation date is not set, it will be configured to the current date.');
|
|
23
|
+
this.FILE_UPLOAD_POPOVER = gettext('In this section, you can upload a file containing a revocation list for certificates. The file must be in CSV format, and it should include the serial number and revocation date. If the revocation date is empty, it will be set to the current date.');
|
|
24
|
+
}
|
|
25
|
+
async downloadCrl() {
|
|
26
|
+
let arrayBuffer;
|
|
27
|
+
try {
|
|
28
|
+
const res = await this.crlService.downloadCrlFile();
|
|
29
|
+
arrayBuffer = await res.arrayBuffer();
|
|
30
|
+
const fileBinary = new File([arrayBuffer], 'cumulocity.crl', {
|
|
31
|
+
type: 'application/pkix-crl'
|
|
32
|
+
});
|
|
33
|
+
saveAs(fileBinary);
|
|
34
|
+
}
|
|
35
|
+
catch (ex) {
|
|
36
|
+
this.alertService.addServerFailure(ex);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
downloadCrlTemplate() {
|
|
40
|
+
const blob = new Blob([`SERIALNO,DATE\nSERIAL_NO1,${new Date().toISOString()}`], {
|
|
41
|
+
type: 'text/csv;charset=utf-8;'
|
|
42
|
+
});
|
|
43
|
+
const fileName = 'crl-template';
|
|
44
|
+
saveAs(blob, `${fileName}.csv`);
|
|
45
|
+
}
|
|
46
|
+
addCertificateRevocation() {
|
|
47
|
+
this.crls.push(this.getEmptyCertificateRevocation());
|
|
48
|
+
}
|
|
49
|
+
removeCertificateRevocation(certificateRevocation) {
|
|
50
|
+
pull(this.crls, certificateRevocation);
|
|
51
|
+
if (this.crls.length === 0) {
|
|
52
|
+
this.addCertificateRevocation();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async save() {
|
|
56
|
+
try {
|
|
57
|
+
await this.confirm();
|
|
58
|
+
await this.saveCrls();
|
|
59
|
+
await this.uploadCrlFile();
|
|
60
|
+
await this.clearSavedData();
|
|
61
|
+
this.alertService.success(gettext('CRL saved.'));
|
|
62
|
+
}
|
|
63
|
+
catch (er) {
|
|
64
|
+
this.alertService.addServerFailure(er);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
get isListEmpty() {
|
|
68
|
+
return this.crls.length === 1 && isEmpty(this.crls[0].serialNumberInHex);
|
|
69
|
+
}
|
|
70
|
+
get isFileDropped() {
|
|
71
|
+
return !!(this.droppedFiles && this.droppedFiles[0]);
|
|
72
|
+
}
|
|
73
|
+
async confirm() {
|
|
74
|
+
const isOverrideManualEntries = !this.isListEmpty && this.isFileDropped;
|
|
75
|
+
const status = isOverrideManualEntries ? Status.DANGER : Status.WARNING;
|
|
76
|
+
const body = isOverrideManualEntries
|
|
77
|
+
? gettext('You are about to update certificate revocation list. The CRL file content will override manual entries. Do you want to proceed?')
|
|
78
|
+
: gettext('You are about to update certificate revocation list. Do you want to proceed?');
|
|
79
|
+
await this.modalService.confirm(gettext('Update certificate revocation list'), body, status, {
|
|
80
|
+
ok: gettext('Update')
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
clearSavedData() {
|
|
84
|
+
this.droppedFiles = [];
|
|
85
|
+
this.crls = [this.getEmptyCertificateRevocation()];
|
|
86
|
+
}
|
|
87
|
+
async saveCrls() {
|
|
88
|
+
if (!this.isListEmpty) {
|
|
89
|
+
await this.crlService.uploadCrls(this.crls);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async uploadCrlFile() {
|
|
93
|
+
if (this.isFileDropped) {
|
|
94
|
+
await this.crlService.uploadCrlFile(this.droppedFiles[0].file);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
getEmptyCertificateRevocation() {
|
|
98
|
+
return {
|
|
99
|
+
serialNumberInHex: ''
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
CrlSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CrlSettingsComponent, deps: [{ token: i1.CrlService }, { token: i2.AlertService }, { token: i2.ModalService }], target: i0.ɵɵFactoryTarget.Component });
|
|
104
|
+
CrlSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: CrlSettingsComponent, selector: "c8y-crl-settings", ngImport: i0, template: "<c8y-title>{{ 'Trusted certificates' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n label=\"{{ 'Management' | translate }}\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n icon=\"certificate\"\n label=\"{{ 'Trusted certificates' | translate }}\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-crl-check-settings></c8y-crl-check-settings>\n\n<!-- #TODO uncomment when available in documentation -->\n<!-- <c8y-help src=\"/users-guide/device-management/#TODO\"></c8y-help> -->\n\n<form\n class=\"card card--fullpage\"\n #crlManualForm=\"ngForm\"\n novalidate\n>\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'CRL offline setup' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <div\n class=\"legend form-block\"\n >\n {{ 'Manual' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ MANUAL_ENTRY_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </div>\n\n <div\n class=\"row tight-grid\"\n *ngFor=\"let certificateRevocation of crls; index as index; last as isLast\"\n >\n <div class=\"col-sm-5\">\n <c8y-form-group>\n <label\n [for]=\"'serialNumber' + index\"\n translate\n >\n Serial number\n </label>\n <input\n class=\"form-control\"\n required\n [name]=\"'serialNumber' + index\"\n [id]=\"'serialNumber' + index\"\n [(ngModel)]=\"certificateRevocation.serialNumberInHex\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '8ab34fe5476' }\"\n c8yDefaultValidation=\"hexNumber\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-5\">\n <c8y-form-group class=\"datepicker\">\n <label [for]=\"'validTillPicker' + index\">\n {{ 'Valid till' | translate }}\n </label>\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Date to' | translate\"\n placeholder=\"{{ 'Date to' | translate }}\"\n [name]=\"'validTillPicker' + index\"\n [id]=\"'validTillPicker' + index\"\n [(ngModel)]=\"certificateRevocation.revocationDate\"\n [bsConfig]=\"{ customTodayClass: 'today' }\"\n bsDatepicker\n [maxDate]=\"today\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-2\">\n <c8y-form-group>\n <div class=\"p-t-24\">\n <button\n *ngIf=\"crls.length > 1\"\n class=\"btn btn-link hidden-xs hidden-sm\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"removeCertificateRevocation(certificateRevocation)\"\n >\n <i\n class=\"text-danger\"\n c8yIcon=\"minus-circle\"\n ></i>\n </button>\n <button\n class=\"btn btn-link hidden-xs hidden-sm\"\n title=\"{{ 'Add' | translate }}\"\n type=\"button\"\n (click)=\"addCertificateRevocation()\"\n *ngIf=\"isLast\"\n >\n <i\n class=\"text-primary\"\n c8yIcon=\"plus-circle\"\n ></i>\n </button>\n\n <button\n *ngIf=\"crls.length > 1\"\n class=\"btn btn-danger btn-block btn-sm visible-xs visible-sm\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"removeCertificateRevocation(certificateRevocation)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n {{ 'Remove' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-block btn-sm visible-xs visible-sm\"\n title=\"{{ 'Add' | translate }}\"\n type=\"button\"\n (click)=\"addCertificateRevocation()\"\n *ngIf=\"isLast\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add' | translate }}\n </button>\n </div>\n </c8y-form-group>\n </div>\n </div>\n <div class=\"legend form-block center\">\n {{ 'or' | translate }}\n </div>\n <div\n class=\"legend form-block\"\n >\n {{ 'File upload' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ FILE_UPLOAD_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </div>\n\n <c8y-drop-area\n class=\"drop-area-sm\"\n [title]=\"'Upload CRL file (.csv format)' | translate\"\n name=\"uploadCrlDropArea\"\n [(ngModel)]=\"droppedFiles\"\n [message]=\"'Upload CRL file (.csv format)' | translate\"\n [loadingMessage]=\"'Uploading\u2026' | translate\"\n [accept]=\"'.csv'\"\n [maxAllowedFiles]=\"1\"\n ></c8y-drop-area>\n <p class=\"help-block has-info text-muted m-t-4\">\n {{ 'CRL file content will override manual entries.' | translate }}\n </p>\n\n <button\n class=\"btn btn-sm btn-default m-t-16\"\n title=\"{{ 'Download template' | translate }}\"\n type=\"button\"\n (click)=\"downloadCrlTemplate()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"template\"\n ></i>\n {{ 'Download template' | translate }}\n </button>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Download CRL file' | translate }}\"\n type=\"button\"\n (click)=\"downloadCrl()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"download\"\n ></i>\n {{ 'Download CRL file' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n (click)=\"save()\"\n [disabled]=\"!(crlManualForm.form.valid || isListEmpty) || (isListEmpty && !isFileDropped)\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "maxFileSizeInMegaBytes", "accept"], outputs: ["dropped"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i2.DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i5.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i5.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: i6.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: i7.CrlCheckSettingsComponent, selector: "c8y-crl-check-settings" }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CrlSettingsComponent, decorators: [{
|
|
106
|
+
type: Component,
|
|
107
|
+
args: [{ selector: 'c8y-crl-settings', template: "<c8y-title>{{ 'Trusted certificates' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n label=\"{{ 'Management' | translate }}\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n icon=\"certificate\"\n label=\"{{ 'Trusted certificates' | translate }}\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-crl-check-settings></c8y-crl-check-settings>\n\n<!-- #TODO uncomment when available in documentation -->\n<!-- <c8y-help src=\"/users-guide/device-management/#TODO\"></c8y-help> -->\n\n<form\n class=\"card card--fullpage\"\n #crlManualForm=\"ngForm\"\n novalidate\n>\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'CRL offline setup' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <div\n class=\"legend form-block\"\n >\n {{ 'Manual' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ MANUAL_ENTRY_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </div>\n\n <div\n class=\"row tight-grid\"\n *ngFor=\"let certificateRevocation of crls; index as index; last as isLast\"\n >\n <div class=\"col-sm-5\">\n <c8y-form-group>\n <label\n [for]=\"'serialNumber' + index\"\n translate\n >\n Serial number\n </label>\n <input\n class=\"form-control\"\n required\n [name]=\"'serialNumber' + index\"\n [id]=\"'serialNumber' + index\"\n [(ngModel)]=\"certificateRevocation.serialNumberInHex\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '8ab34fe5476' }\"\n c8yDefaultValidation=\"hexNumber\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-5\">\n <c8y-form-group class=\"datepicker\">\n <label [for]=\"'validTillPicker' + index\">\n {{ 'Valid till' | translate }}\n </label>\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Date to' | translate\"\n placeholder=\"{{ 'Date to' | translate }}\"\n [name]=\"'validTillPicker' + index\"\n [id]=\"'validTillPicker' + index\"\n [(ngModel)]=\"certificateRevocation.revocationDate\"\n [bsConfig]=\"{ customTodayClass: 'today' }\"\n bsDatepicker\n [maxDate]=\"today\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-2\">\n <c8y-form-group>\n <div class=\"p-t-24\">\n <button\n *ngIf=\"crls.length > 1\"\n class=\"btn btn-link hidden-xs hidden-sm\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"removeCertificateRevocation(certificateRevocation)\"\n >\n <i\n class=\"text-danger\"\n c8yIcon=\"minus-circle\"\n ></i>\n </button>\n <button\n class=\"btn btn-link hidden-xs hidden-sm\"\n title=\"{{ 'Add' | translate }}\"\n type=\"button\"\n (click)=\"addCertificateRevocation()\"\n *ngIf=\"isLast\"\n >\n <i\n class=\"text-primary\"\n c8yIcon=\"plus-circle\"\n ></i>\n </button>\n\n <button\n *ngIf=\"crls.length > 1\"\n class=\"btn btn-danger btn-block btn-sm visible-xs visible-sm\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"removeCertificateRevocation(certificateRevocation)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n {{ 'Remove' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-block btn-sm visible-xs visible-sm\"\n title=\"{{ 'Add' | translate }}\"\n type=\"button\"\n (click)=\"addCertificateRevocation()\"\n *ngIf=\"isLast\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add' | translate }}\n </button>\n </div>\n </c8y-form-group>\n </div>\n </div>\n <div class=\"legend form-block center\">\n {{ 'or' | translate }}\n </div>\n <div\n class=\"legend form-block\"\n >\n {{ 'File upload' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ FILE_UPLOAD_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </div>\n\n <c8y-drop-area\n class=\"drop-area-sm\"\n [title]=\"'Upload CRL file (.csv format)' | translate\"\n name=\"uploadCrlDropArea\"\n [(ngModel)]=\"droppedFiles\"\n [message]=\"'Upload CRL file (.csv format)' | translate\"\n [loadingMessage]=\"'Uploading\u2026' | translate\"\n [accept]=\"'.csv'\"\n [maxAllowedFiles]=\"1\"\n ></c8y-drop-area>\n <p class=\"help-block has-info text-muted m-t-4\">\n {{ 'CRL file content will override manual entries.' | translate }}\n </p>\n\n <button\n class=\"btn btn-sm btn-default m-t-16\"\n title=\"{{ 'Download template' | translate }}\"\n type=\"button\"\n (click)=\"downloadCrlTemplate()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"template\"\n ></i>\n {{ 'Download template' | translate }}\n </button>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Download CRL file' | translate }}\"\n type=\"button\"\n (click)=\"downloadCrl()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"download\"\n ></i>\n {{ 'Download CRL file' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n (click)=\"save()\"\n [disabled]=\"!(crlManualForm.form.valid || isListEmpty) || (isListEmpty && !isFileDropped)\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n" }]
|
|
108
|
+
}], ctorParameters: function () { return [{ type: i1.CrlService }, { type: i2.AlertService }, { type: i2.ModalService }]; } });
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JsLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RydXN0ZWQtY2VydGlmaWNhdGVzL2NybC9jcmwtc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMvY3JsL2NybC1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxVQUFVLEVBQTBCLE1BQU0sYUFBYSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQWUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7Ozs7Ozs7QUFNcEMsTUFBTSxPQUFPLG9CQUFvQjtJQWEvQixZQUNVLFVBQXNCLEVBQ3RCLFlBQTBCLEVBQzFCLFlBQTBCO1FBRjFCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFmcEMsU0FBSSxHQUE2QixDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLENBQUM7UUFDeEUsaUJBQVksR0FBa0IsRUFBRSxDQUFDO1FBQ2pDLFVBQUssR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBRXpCLHlCQUFvQixHQUFHLE9BQU8sQ0FDNUIsOE5BQThOLENBQy9OLENBQUM7UUFFRix3QkFBbUIsR0FBRyxPQUFPLENBQzNCLHlQQUF5UCxDQUMxUCxDQUFDO0lBTUMsQ0FBQztJQUVKLEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxXQUF3QixDQUFDO1FBQzdCLElBQUk7WUFDRixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDcEQsV0FBVyxHQUFHLE1BQU0sR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQzNELElBQUksRUFBRSxzQkFBc0I7YUFDN0IsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3BCO1FBQUMsT0FBTyxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLDZCQUE2QixJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUMvRSxJQUFJLEVBQUUseUJBQXlCO1NBQ2hDLENBQUMsQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQztRQUNoQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELDJCQUEyQixDQUFDLHFCQUFxQjtRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSTtZQUNGLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1NBQ2xEO1FBQUMsT0FBTyxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLEtBQUssQ0FBQyxPQUFPO1FBQ25CLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDeEUsTUFBTSxNQUFNLEdBQUcsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDeEUsTUFBTSxJQUFJLEdBQUcsdUJBQXVCO1lBQ2xDLENBQUMsQ0FBQyxPQUFPLENBQ0wsaUlBQWlJLENBQ2xJO1lBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO1FBRTVGLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUMzRixFQUFFLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sS0FBSyxDQUFDLFFBQVE7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLGFBQWE7UUFDekIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoRTtJQUNILENBQUM7SUFFTyw2QkFBNkI7UUFDbkMsT0FBTztZQUNMLGlCQUFpQixFQUFFLEVBQUU7U0FDdEIsQ0FBQztJQUNKLENBQUM7O2lIQTNHVSxvQkFBb0I7cUdBQXBCLG9CQUFvQix3RENWakMsb3NOQWdOQTsyRkR0TWEsb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNFLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFbXB0eSwgcHVsbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBDcmxTZXJ2aWNlLCBJQ2VydGlmaWNhdGVSZXZvY2F0aW9uIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBEcm9wcGVkRmlsZSwgZ2V0dGV4dCwgTW9kYWxTZXJ2aWNlLCBTdGF0dXMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktY3JsLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NybC1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ3JsU2V0dGluZ3NDb21wb25lbnQge1xuICBjcmxzOiBJQ2VydGlmaWNhdGVSZXZvY2F0aW9uW10gPSBbdGhpcy5nZXRFbXB0eUNlcnRpZmljYXRlUmV2b2NhdGlvbigpXTtcbiAgZHJvcHBlZEZpbGVzOiBEcm9wcGVkRmlsZVtdID0gW107XG4gIHRvZGF5OiBEYXRlID0gbmV3IERhdGUoKTtcblxuICBNQU5VQUxfRU5UUllfUE9QT1ZFUiA9IGdldHRleHQoXG4gICAgJ0luIHRoaXMgc2VjdGlvbiwgeW91IGNhbiBvdmVycmlkZSBvciBhZGQgaW5kaXZpZHVhbCBlbnRyaWVzIHRvIHRoZSBDZXJ0aWZpY2F0ZSBSZXZvY2F0aW9uIExpc3QuIFByb3ZpZGluZyB0aGUgc2VyaWFsIG51bWJlciBpcyBtYW5kYXRvcnkuIEluIGNhc2UgdGhlIHJldm9jYXRpb24gZGF0ZSBpcyBub3Qgc2V0LCBpdCB3aWxsIGJlIGNvbmZpZ3VyZWQgdG8gdGhlIGN1cnJlbnQgZGF0ZS4nXG4gICk7XG5cbiAgRklMRV9VUExPQURfUE9QT1ZFUiA9IGdldHRleHQoXG4gICAgJ0luIHRoaXMgc2VjdGlvbiwgeW91IGNhbiB1cGxvYWQgYSBmaWxlIGNvbnRhaW5pbmcgYSByZXZvY2F0aW9uIGxpc3QgZm9yIGNlcnRpZmljYXRlcy4gVGhlIGZpbGUgbXVzdCBiZSBpbiBDU1YgZm9ybWF0LCBhbmQgaXQgc2hvdWxkIGluY2x1ZGUgdGhlIHNlcmlhbCBudW1iZXIgYW5kIHJldm9jYXRpb24gZGF0ZS4gSWYgdGhlIHJldm9jYXRpb24gZGF0ZSBpcyBlbXB0eSwgaXQgd2lsbCBiZSBzZXQgdG8gdGhlIGN1cnJlbnQgZGF0ZS4nXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjcmxTZXJ2aWNlOiBDcmxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgZG93bmxvYWRDcmwoKSB7XG4gICAgbGV0IGFycmF5QnVmZmVyOiBBcnJheUJ1ZmZlcjtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jcmxTZXJ2aWNlLmRvd25sb2FkQ3JsRmlsZSgpO1xuICAgICAgYXJyYXlCdWZmZXIgPSBhd2FpdCByZXMuYXJyYXlCdWZmZXIoKTtcbiAgICAgIGNvbnN0IGZpbGVCaW5hcnkgPSBuZXcgRmlsZShbYXJyYXlCdWZmZXJdLCAnY3VtdWxvY2l0eS5jcmwnLCB7XG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9wa2l4LWNybCdcbiAgICAgIH0pO1xuICAgICAgc2F2ZUFzKGZpbGVCaW5hcnkpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICB9XG4gIH1cblxuICBkb3dubG9hZENybFRlbXBsYXRlKCkge1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYFNFUklBTE5PLERBVEVcXG5TRVJJQUxfTk8xLCR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfWBdLCB7XG4gICAgICB0eXBlOiAndGV4dC9jc3Y7Y2hhcnNldD11dGYtODsnXG4gICAgfSk7XG4gICAgY29uc3QgZmlsZU5hbWUgPSAnY3JsLXRlbXBsYXRlJztcbiAgICBzYXZlQXMoYmxvYiwgYCR7ZmlsZU5hbWV9LmNzdmApO1xuICB9XG5cbiAgYWRkQ2VydGlmaWNhdGVSZXZvY2F0aW9uKCkge1xuICAgIHRoaXMuY3Jscy5wdXNoKHRoaXMuZ2V0RW1wdHlDZXJ0aWZpY2F0ZVJldm9jYXRpb24oKSk7XG4gIH1cblxuICByZW1vdmVDZXJ0aWZpY2F0ZVJldm9jYXRpb24oY2VydGlmaWNhdGVSZXZvY2F0aW9uKSB7XG4gICAgcHVsbCh0aGlzLmNybHMsIGNlcnRpZmljYXRlUmV2b2NhdGlvbik7XG4gICAgaWYgKHRoaXMuY3Jscy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuYWRkQ2VydGlmaWNhdGVSZXZvY2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZSgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jb25maXJtKCk7XG4gICAgICBhd2FpdCB0aGlzLnNhdmVDcmxzKCk7XG4gICAgICBhd2FpdCB0aGlzLnVwbG9hZENybEZpbGUoKTtcbiAgICAgIGF3YWl0IHRoaXMuY2xlYXJTYXZlZERhdGEoKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnQ1JMIHNhdmVkLicpKTtcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcik7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzTGlzdEVtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLmNybHMubGVuZ3RoID09PSAxICYmIGlzRW1wdHkodGhpcy5jcmxzWzBdLnNlcmlhbE51bWJlckluSGV4KTtcbiAgfVxuXG4gIGdldCBpc0ZpbGVEcm9wcGVkKCkge1xuICAgIHJldHVybiAhISh0aGlzLmRyb3BwZWRGaWxlcyAmJiB0aGlzLmRyb3BwZWRGaWxlc1swXSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbmZpcm0oKSB7XG4gICAgY29uc3QgaXNPdmVycmlkZU1hbnVhbEVudHJpZXMgPSAhdGhpcy5pc0xpc3RFbXB0eSAmJiB0aGlzLmlzRmlsZURyb3BwZWQ7XG4gICAgY29uc3Qgc3RhdHVzID0gaXNPdmVycmlkZU1hbnVhbEVudHJpZXMgPyBTdGF0dXMuREFOR0VSIDogU3RhdHVzLldBUk5JTkc7XG4gICAgY29uc3QgYm9keSA9IGlzT3ZlcnJpZGVNYW51YWxFbnRyaWVzXG4gICAgICA/IGdldHRleHQoXG4gICAgICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gdXBkYXRlIGNlcnRpZmljYXRlIHJldm9jYXRpb24gbGlzdC4gVGhlIENSTCBmaWxlIGNvbnRlbnQgd2lsbCBvdmVycmlkZSBtYW51YWwgZW50cmllcy4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nXG4gICAgICAgIClcbiAgICAgIDogZ2V0dGV4dCgnWW91IGFyZSBhYm91dCB0byB1cGRhdGUgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBsaXN0LiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycpO1xuXG4gICAgYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2UuY29uZmlybShnZXR0ZXh0KCdVcGRhdGUgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBsaXN0JyksIGJvZHksIHN0YXR1cywge1xuICAgICAgb2s6IGdldHRleHQoJ1VwZGF0ZScpXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyU2F2ZWREYXRhKCkge1xuICAgIHRoaXMuZHJvcHBlZEZpbGVzID0gW107XG4gICAgdGhpcy5jcmxzID0gW3RoaXMuZ2V0RW1wdHlDZXJ0aWZpY2F0ZVJldm9jYXRpb24oKV07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNhdmVDcmxzKCkge1xuICAgIGlmICghdGhpcy5pc0xpc3RFbXB0eSkge1xuICAgICAgYXdhaXQgdGhpcy5jcmxTZXJ2aWNlLnVwbG9hZENybHModGhpcy5jcmxzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwbG9hZENybEZpbGUoKSB7XG4gICAgaWYgKHRoaXMuaXNGaWxlRHJvcHBlZCkge1xuICAgICAgYXdhaXQgdGhpcy5jcmxTZXJ2aWNlLnVwbG9hZENybEZpbGUodGhpcy5kcm9wcGVkRmlsZXNbMF0uZmlsZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRFbXB0eUNlcnRpZmljYXRlUmV2b2NhdGlvbigpOiBJQ2VydGlmaWNhdGVSZXZvY2F0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VyaWFsTnVtYmVySW5IZXg6ICcnXG4gICAgfTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT57eyAnVHJ1c3RlZCBjZXJ0aWZpY2F0ZXMnIHwgdHJhbnNsYXRlIH19PC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBpY29uPVwiYzh5LW1hbmFnZW1lbnRcIlxuICAgIGxhYmVsPVwie3sgJ01hbmFnZW1lbnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBpY29uPVwiY2VydGlmaWNhdGVcIlxuICAgIGxhYmVsPVwie3sgJ1RydXN0ZWQgY2VydGlmaWNhdGVzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48Yzh5LWNybC1jaGVjay1zZXR0aW5ncz48L2M4eS1jcmwtY2hlY2stc2V0dGluZ3M+XG5cbjwhLS0gI1RPRE8gdW5jb21tZW50IHdoZW4gYXZhaWxhYmxlIGluIGRvY3VtZW50YXRpb24gIC0tPlxuPCEtLSA8Yzh5LWhlbHAgc3JjPVwiL3VzZXJzLWd1aWRlL2RldmljZS1tYW5hZ2VtZW50LyNUT0RPXCI+PC9jOHktaGVscD4gLS0+XG5cbjxmb3JtXG4gIGNsYXNzPVwiY2FyZCBjYXJkLS1mdWxscGFnZVwiXG4gICNjcmxNYW51YWxGb3JtPVwibmdGb3JtXCJcbiAgbm92YWxpZGF0ZVxuPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj5cbiAgICAgIHt7ICdDUkwgb2ZmbGluZSBzZXR1cCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9ja1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrXCJcbiAgICAgID5cbiAgICAgICAge3sgJ01hbnVhbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgcG9wb3Zlcj1cInt7IE1BTlVBTF9FTlRSWV9QT1BPVkVSIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicm93IHRpZ2h0LWdyaWRcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgY2VydGlmaWNhdGVSZXZvY2F0aW9uIG9mIGNybHM7IGluZGV4IGFzIGluZGV4OyBsYXN0IGFzIGlzTGFzdFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNVwiPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBbZm9yXT1cIidzZXJpYWxOdW1iZXInICsgaW5kZXhcIlxuICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgU2VyaWFsIG51bWJlclxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgIFtuYW1lXT1cIidzZXJpYWxOdW1iZXInICsgaW5kZXhcIlxuICAgICAgICAgICAgICBbaWRdPVwiJ3NlcmlhbE51bWJlcicgKyBpbmRleFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2VydGlmaWNhdGVSZXZvY2F0aW9uLnNlcmlhbE51bWJlckluSGV4XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6ICc4YWIzNGZlNTQ3NicgfVwiXG4gICAgICAgICAgICAgIGM4eURlZmF1bHRWYWxpZGF0aW9uPVwiaGV4TnVtYmVyXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNVwiPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cImRhdGVwaWNrZXJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIid2YWxpZFRpbGxQaWNrZXInICsgaW5kZXhcIj5cbiAgICAgICAgICAgICAge3sgJ1ZhbGlkIHRpbGwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRGF0ZSB0bycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdEYXRlIHRvJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIFtuYW1lXT1cIid2YWxpZFRpbGxQaWNrZXInICsgaW5kZXhcIlxuICAgICAgICAgICAgICBbaWRdPVwiJ3ZhbGlkVGlsbFBpY2tlcicgKyBpbmRleFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2VydGlmaWNhdGVSZXZvY2F0aW9uLnJldm9jYXRpb25EYXRlXCJcbiAgICAgICAgICAgICAgW2JzQ29uZmlnXT1cInsgY3VzdG9tVG9kYXlDbGFzczogJ3RvZGF5JyB9XCJcbiAgICAgICAgICAgICAgYnNEYXRlcGlja2VyXG4gICAgICAgICAgICAgIFttYXhEYXRlXT1cInRvZGF5XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMlwiPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXQtMjRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3Jscy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBoaWRkZW4teHMgaGlkZGVuLXNtXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdSZW1vdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ2VydGlmaWNhdGVSZXZvY2F0aW9uKGNlcnRpZmljYXRlUmV2b2NhdGlvbilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1kYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiXG4gICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBoaWRkZW4teHMgaGlkZGVuLXNtXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBZGQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkQ2VydGlmaWNhdGVSZXZvY2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNMYXN0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICBjOHlJY29uPVwicGx1cy1jaXJjbGVcIlxuICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cImNybHMubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBidG4tYmxvY2sgYnRuLXNtIHZpc2libGUteHMgdmlzaWJsZS1zbVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnUmVtb3ZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNlcnRpZmljYXRlUmV2b2NhdGlvbihjZXJ0aWZpY2F0ZVJldm9jYXRpb24pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgJ1JlbW92ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tYmxvY2sgYnRuLXNtIHZpc2libGUteHMgdmlzaWJsZS1zbVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQWRkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZENlcnRpZmljYXRlUmV2b2NhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzTGFzdFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0FkZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrIGNlbnRlclwiPlxuICAgICAgICB7eyAnb3InIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiXG4gICAgICA+XG4gICAgICAgIHt7ICdGaWxlIHVwbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgcG9wb3Zlcj1cInt7IEZJTEVfVVBMT0FEX1BPUE9WRVIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxjOHktZHJvcC1hcmVhXG4gICAgICAgIGNsYXNzPVwiZHJvcC1hcmVhLXNtXCJcbiAgICAgICAgW3RpdGxlXT1cIidVcGxvYWQgQ1JMIGZpbGUgKC5jc3YgZm9ybWF0KScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBuYW1lPVwidXBsb2FkQ3JsRHJvcEFyZWFcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImRyb3BwZWRGaWxlc1wiXG4gICAgICAgIFttZXNzYWdlXT1cIidVcGxvYWQgQ1JMIGZpbGUgKC5jc3YgZm9ybWF0KScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbbG9hZGluZ01lc3NhZ2VdPVwiJ1VwbG9hZGluZ+KApicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbYWNjZXB0XT1cIicuY3N2J1wiXG4gICAgICAgIFttYXhBbGxvd2VkRmlsZXNdPVwiMVwiXG4gICAgICA+PC9jOHktZHJvcC1hcmVhPlxuICAgICAgPHAgY2xhc3M9XCJoZWxwLWJsb2NrIGhhcy1pbmZvIHRleHQtbXV0ZWQgbS10LTRcIj5cbiAgICAgICAge3sgJ0NSTCBmaWxlIGNvbnRlbnQgd2lsbCBvdmVycmlkZSBtYW51YWwgZW50cmllcy4nIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3A+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1kZWZhdWx0IG0tdC0xNlwiXG4gICAgICAgIHRpdGxlPVwie3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRDcmxUZW1wbGF0ZSgpXCJcbiAgICAgID5cbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgICAgICBjOHlJY29uPVwidGVtcGxhdGVcIlxuICAgICAgICA+PC9pPlxuICAgICAgICB7eyAnRG93bmxvYWQgdGVtcGxhdGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBzZXBhcmF0b3JcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICB0aXRsZT1cInt7ICdEb3dubG9hZCBDUkwgZmlsZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwiZG93bmxvYWRDcmwoKVwiXG4gICAgPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJtLXItNFwiXG4gICAgICAgIGM4eUljb249XCJkb3dubG9hZFwiXG4gICAgICA+PC9pPlxuICAgICAge3sgJ0Rvd25sb2FkIENSTCBmaWxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIShjcmxNYW51YWxGb3JtLmZvcm0udmFsaWQgfHwgaXNMaXN0RW1wdHkpIHx8IChpc0xpc3RFbXB0eSAmJiAhaXNGaWxlRHJvcHBlZClcIlxuICAgID5cbiAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { RouterModule } from '@angular/router';
|
|
3
|
+
import { CommonModule, CoreModule } from '@c8y/ngx-components';
|
|
4
|
+
import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
|
|
5
|
+
import { CrlSettingsComponent } from './crl-settings.component';
|
|
6
|
+
import { CrlCheckSettingsComponent } from './crl-check-settings.component';
|
|
7
|
+
import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
|
|
8
|
+
import { PopoverModule } from 'ngx-bootstrap/popover';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/router";
|
|
11
|
+
import * as i2 from "ngx-bootstrap/dropdown";
|
|
12
|
+
const trustedCertificatesRoutes = [
|
|
13
|
+
{
|
|
14
|
+
path: 'trusted-certificates/settings',
|
|
15
|
+
component: CrlSettingsComponent,
|
|
16
|
+
pathMatch: 'full'
|
|
17
|
+
}
|
|
18
|
+
];
|
|
19
|
+
export class CrlSettingsModule {
|
|
20
|
+
}
|
|
21
|
+
CrlSettingsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CrlSettingsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
22
|
+
CrlSettingsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: CrlSettingsModule, declarations: [CrlSettingsComponent, CrlCheckSettingsComponent], imports: [CoreModule,
|
|
23
|
+
CommonModule, i1.RouterModule, i2.BsDropdownModule, BsDatepickerModule,
|
|
24
|
+
PopoverModule] });
|
|
25
|
+
CrlSettingsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CrlSettingsModule, imports: [CoreModule,
|
|
26
|
+
CommonModule,
|
|
27
|
+
RouterModule.forChild(trustedCertificatesRoutes),
|
|
28
|
+
BsDropdownModule.forRoot(),
|
|
29
|
+
BsDatepickerModule,
|
|
30
|
+
PopoverModule] });
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CrlSettingsModule, decorators: [{
|
|
32
|
+
type: NgModule,
|
|
33
|
+
args: [{
|
|
34
|
+
declarations: [CrlSettingsComponent, CrlCheckSettingsComponent],
|
|
35
|
+
exports: [],
|
|
36
|
+
imports: [
|
|
37
|
+
CoreModule,
|
|
38
|
+
CommonModule,
|
|
39
|
+
RouterModule.forChild(trustedCertificatesRoutes),
|
|
40
|
+
BsDropdownModule.forRoot(),
|
|
41
|
+
BsDatepickerModule,
|
|
42
|
+
PopoverModule
|
|
43
|
+
]
|
|
44
|
+
}]
|
|
45
|
+
}] });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JsLXNldHRpbmdzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RydXN0ZWQtY2VydGlmaWNhdGVzL2NybC9jcmwtc2V0dGluZ3MubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFTLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBRXRELE1BQU0seUJBQXlCLEdBQVk7SUFDekM7UUFDRSxJQUFJLEVBQUUsK0JBQStCO1FBQ3JDLFNBQVMsRUFBRSxvQkFBb0I7UUFDL0IsU0FBUyxFQUFFLE1BQU07S0FDbEI7Q0FDRixDQUFDO0FBY0YsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQVhiLG9CQUFvQixFQUFFLHlCQUF5QixhQUc1RCxVQUFVO1FBQ1YsWUFBWSx3Q0FHWixrQkFBa0I7UUFDbEIsYUFBYTsrR0FHSixpQkFBaUIsWUFSMUIsVUFBVTtRQUNWLFlBQVk7UUFDWixZQUFZLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDO1FBQ2hELGdCQUFnQixDQUFDLE9BQU8sRUFBRTtRQUMxQixrQkFBa0I7UUFDbEIsYUFBYTsyRkFHSixpQkFBaUI7a0JBWjdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsb0JBQW9CLEVBQUUseUJBQXlCLENBQUM7b0JBQy9ELE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRTt3QkFDUCxVQUFVO3dCQUNWLFlBQVk7d0JBQ1osWUFBWSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQzt3QkFDaEQsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO3dCQUMxQixrQkFBa0I7d0JBQ2xCLGFBQWE7cUJBQ2Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGUsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIENvcmVNb2R1bGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEJzRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBDcmxTZXR0aW5nc0NvbXBvbmVudCB9IGZyb20gJy4vY3JsLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcmxDaGVja1NldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9jcmwtY2hlY2stc2V0dGluZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IEJzRHJvcGRvd25Nb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3BvcG92ZXInO1xuXG5jb25zdCB0cnVzdGVkQ2VydGlmaWNhdGVzUm91dGVzOiBSb3V0ZVtdID0gW1xuICB7XG4gICAgcGF0aDogJ3RydXN0ZWQtY2VydGlmaWNhdGVzL3NldHRpbmdzJyxcbiAgICBjb21wb25lbnQ6IENybFNldHRpbmdzQ29tcG9uZW50LFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnXG4gIH1cbl07XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0NybFNldHRpbmdzQ29tcG9uZW50LCBDcmxDaGVja1NldHRpbmdzQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW10sXG4gIGltcG9ydHM6IFtcbiAgICBDb3JlTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQodHJ1c3RlZENlcnRpZmljYXRlc1JvdXRlcyksXG4gICAgQnNEcm9wZG93bk1vZHVsZS5mb3JSb290KCksXG4gICAgQnNEYXRlcGlja2VyTW9kdWxlLFxuICAgIFBvcG92ZXJNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDcmxTZXR0aW5nc01vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { gettext } from '@c8y/ngx-components';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/router";
|
|
6
|
+
export class TabsFactory {
|
|
7
|
+
constructor(router) {
|
|
8
|
+
this.router = router;
|
|
9
|
+
}
|
|
10
|
+
get() {
|
|
11
|
+
const tabs = [];
|
|
12
|
+
if (this.router.url.match(/trusted-certificates/g)) {
|
|
13
|
+
tabs.push({
|
|
14
|
+
icon: 'certificate',
|
|
15
|
+
priority: 1000,
|
|
16
|
+
label: gettext('Certificates'),
|
|
17
|
+
path: 'trusted-certificates/certificates',
|
|
18
|
+
orientation: 'horizontal'
|
|
19
|
+
});
|
|
20
|
+
tabs.push({
|
|
21
|
+
icon: 'settings',
|
|
22
|
+
priority: 900,
|
|
23
|
+
label: gettext('Settings'),
|
|
24
|
+
path: 'trusted-certificates/settings',
|
|
25
|
+
orientation: 'horizontal'
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return tabs;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
TabsFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabsFactory, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
32
|
+
TabsFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabsFactory });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabsFactory, decorators: [{
|
|
34
|
+
type: Injectable
|
|
35
|
+
}], ctorParameters: function () { return [{ type: i1.Router }]; } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMvZmFjdG9yaWVzL3RhYnMuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFtQixNQUFNLHFCQUFxQixDQUFDOzs7QUFHL0QsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFBbUIsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBRyxDQUFDO0lBQ3JDLEdBQUc7UUFDRCxNQUFNLElBQUksR0FBVSxFQUFFLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNSLElBQUksRUFBRSxhQUFhO2dCQUNuQixRQUFRLEVBQUUsSUFBSTtnQkFDZCxLQUFLLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQztnQkFDOUIsSUFBSSxFQUFFLG1DQUFtQztnQkFDekMsV0FBVyxFQUFFLFlBQVk7YUFDbkIsQ0FBQyxDQUFDO1lBRVYsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDUixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsUUFBUSxFQUFFLEdBQUc7Z0JBQ2IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBQzFCLElBQUksRUFBRSwrQkFBK0I7Z0JBQ3JDLFdBQVcsRUFBRSxZQUFZO2FBQ25CLENBQUMsQ0FBQztTQUNYO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzt3R0F4QlUsV0FBVzs0R0FBWCxXQUFXOzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZ2V0dGV4dCwgVGFiLCBUYWJGYWN0b3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUYWJzRmFjdG9yeSBpbXBsZW1lbnRzIFRhYkZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcm91dGVyOiBSb3V0ZXIpIHt9XG4gIGdldCgpOiBUYWJbXSB7XG4gICAgY29uc3QgdGFiczogVGFiW10gPSBbXTtcblxuICAgIGlmICh0aGlzLnJvdXRlci51cmwubWF0Y2goL3RydXN0ZWQtY2VydGlmaWNhdGVzL2cpKSB7XG4gICAgICB0YWJzLnB1c2goe1xuICAgICAgICBpY29uOiAnY2VydGlmaWNhdGUnLFxuICAgICAgICBwcmlvcml0eTogMTAwMCxcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0NlcnRpZmljYXRlcycpLFxuICAgICAgICBwYXRoOiAndHJ1c3RlZC1jZXJ0aWZpY2F0ZXMvY2VydGlmaWNhdGVzJyxcbiAgICAgICAgb3JpZW50YXRpb246ICdob3Jpem9udGFsJ1xuICAgICAgfSBhcyBUYWIpO1xuXG4gICAgICB0YWJzLnB1c2goe1xuICAgICAgICBpY29uOiAnc2V0dGluZ3MnLFxuICAgICAgICBwcmlvcml0eTogOTAwLFxuICAgICAgICBsYWJlbDogZ2V0dGV4dCgnU2V0dGluZ3MnKSxcbiAgICAgICAgcGF0aDogJ3RydXN0ZWQtY2VydGlmaWNhdGVzL3NldHRpbmdzJyxcbiAgICAgICAgb3JpZW50YXRpb246ICdob3Jpem9udGFsJ1xuICAgICAgfSBhcyBUYWIpO1xuICAgIH1cblxuICAgIHJldHVybiB0YWJzO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { gettext, NavigatorNode } from '@c8y/ngx-components';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class TrustedCertificatesNavigationFactory {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.navs = [];
|
|
7
|
+
}
|
|
8
|
+
async get() {
|
|
9
|
+
if (this.navs.length === 0) {
|
|
10
|
+
this.navs.push(new NavigatorNode({
|
|
11
|
+
label: gettext('Trusted certificates'),
|
|
12
|
+
icon: 'certificate',
|
|
13
|
+
path: '/trusted-certificates/certificates',
|
|
14
|
+
parent: gettext('Management'),
|
|
15
|
+
priority: 100
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
return this.navs;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
TrustedCertificatesNavigationFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TrustedCertificatesNavigationFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22
|
+
TrustedCertificatesNavigationFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TrustedCertificatesNavigationFactory });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TrustedCertificatesNavigationFactory, decorators: [{
|
|
24
|
+
type: Injectable
|
|
25
|
+
}] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1jZXJ0aWZpY2F0ZXMtbmF2aWdhdGlvbi5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMvZmFjdG9yaWVzL3RydXN0ZWQtY2VydGlmaWNhdGVzLW5hdmlnYXRpb24uZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUF3QixNQUFNLHFCQUFxQixDQUFDOztBQUduRixNQUFNLE9BQU8sb0NBQW9DO0lBRGpEO1FBRUUsU0FBSSxHQUFvQixFQUFFLENBQUM7S0FnQjVCO0lBZEMsS0FBSyxDQUFDLEdBQUc7UUFDUCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDWixJQUFJLGFBQWEsQ0FBQztnQkFDaEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztnQkFDdEMsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLElBQUksRUFBRSxvQ0FBb0M7Z0JBQzFDLE1BQU0sRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDO2dCQUM3QixRQUFRLEVBQUUsR0FBRzthQUNkLENBQUMsQ0FDSCxDQUFDO1NBQ0g7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQzs7aUlBaEJVLG9DQUFvQztxSUFBcEMsb0NBQW9DOzJGQUFwQyxvQ0FBb0M7a0JBRGhELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXR0ZXh0LCBOYXZpZ2F0b3JOb2RlLCBOYXZpZ2F0b3JOb2RlRmFjdG9yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHJ1c3RlZENlcnRpZmljYXRlc05hdmlnYXRpb25GYWN0b3J5IGltcGxlbWVudHMgTmF2aWdhdG9yTm9kZUZhY3Rvcnkge1xuICBuYXZzOiBOYXZpZ2F0b3JOb2RlW10gPSBbXTtcblxuICBhc3luYyBnZXQoKSB7XG4gICAgaWYgKHRoaXMubmF2cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMubmF2cy5wdXNoKFxuICAgICAgICBuZXcgTmF2aWdhdG9yTm9kZSh7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1RydXN0ZWQgY2VydGlmaWNhdGVzJyksXG4gICAgICAgICAgaWNvbjogJ2NlcnRpZmljYXRlJyxcbiAgICAgICAgICBwYXRoOiAnL3RydXN0ZWQtY2VydGlmaWNhdGVzL2NlcnRpZmljYXRlcycsXG4gICAgICAgICAgcGFyZW50OiBnZXR0ZXh0KCdNYW5hZ2VtZW50JyksXG4gICAgICAgICAgcHJpb3JpdHk6IDEwMFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubmF2cztcbiAgfVxufVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from './trusted-certificates.module';
|
|
2
|
-
export * from './trusted-
|
|
3
|
-
export * from './add-trusted-certificate.component';
|
|
4
|
-
export * from './trusted-certificates-navigation.factory';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export * from './list/trusted-certificate-list.component';
|
|
3
|
+
export * from './list/add-trusted-certificate.component';
|
|
4
|
+
export * from './factories/trusted-certificates-navigation.factory';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cnVzdGVkLWNlcnRpZmljYXRlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLHFEQUFxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90cnVzdGVkLWNlcnRpZmljYXRlcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saXN0L3RydXN0ZWQtY2VydGlmaWNhdGUtbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saXN0L2FkZC10cnVzdGVkLWNlcnRpZmljYXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ZhY3Rvcmllcy90cnVzdGVkLWNlcnRpZmljYXRlcy1uYXZpZ2F0aW9uLmZhY3RvcnknO1xuIl19
|
|
@@ -66,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
66
66
|
type: Component,
|
|
67
67
|
args: [{ selector: 'c8y-add-trusted-certificate', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"certificate\"></i>\n <div\n class=\"modal-title\"\n id=\"addCertificateModalTitle\"\n translate\n >\n Add trusted certificate\n </div>\n </div>\n <form\n #addTrustedCertificateForm=\"ngForm\"\n (ngSubmit)=\"addTrustedCertificateForm.form.valid && fileIsUploaded && save()\"\n >\n <div class=\"modal-inner-scroll\">\n <div\n class=\"modal-body\"\n id=\"addCertificateModalDescription\"\n >\n <c8y-form-group>\n <label\n for=\"certificateName\"\n translate\n >\n Certificate name\n </label>\n <input\n class=\"form-control\"\n id=\"certificateName\"\n placeholder=\"{{ 'e.g. My certificate' | translate }}\"\n name=\"certificateName\"\n type=\"text\"\n autocomplete=\"off\"\n required\n [(ngModel)]=\"trustedCertificate.name\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label\n for=\"certificate\"\n translate\n >\n Certificate\n </label>\n <c8y-drop-area\n class=\"drop-area-sm\"\n [title]=\"'Paste the certificate in PEM format.' | translate\"\n (dropped)=\"uploadFile($event)\"\n [loadingMessage]=\"'Importing, please wait.' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Auto registration' | translate }}\"\n >\n <input\n id=\"autoRegistration\"\n name=\"autoRegistration\"\n type=\"checkbox\"\n [(ngModel)]=\"trustedCertificate.autoRegistrationEnabled\"\n />\n <span></span>\n <span>{{ 'Auto registration' | translate }}</span>\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ AUTO_REGISTRATION_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n </c8y-form-group>\n <button\n class=\"btn\"\n name=\"certificateStatus\"\n type=\"button\"\n [(ngModel)]=\"trustedCertificate.status\"\n btnCheckbox\n btnCheckboxTrue=\"ENABLED\"\n btnCheckboxFalse=\"DISABLED\"\n >\n <span\n title=\"{{ 'Disabled`trusted certificate status`' | translate }}\"\n [hidden]=\"trustedCertificate.status !== 'DISABLED'\"\n >\n {{ 'Disabled`trusted certificate status`' | translate }}\n </span>\n <span\n title=\"{{ 'Enabled`trusted certificate status`' | translate }}\"\n [hidden]=\"trustedCertificate.status !== 'ENABLED'\"\n >\n {{ 'Enabled`trusted certificate status`' | translate }}\n </span>\n </button>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add certificate' | translate }}\"\n type=\"submit\"\n [disabled]=\"\n addTrustedCertificateForm.form.invalid ||\n addTrustedCertificateForm.form.pristine ||\n !fileIsUploaded\n \"\n >\n {{ 'Add certificate' | translate }}\n </button>\n </div>\n </form>\n</div>\n" }]
|
|
68
68
|
}], ctorParameters: function () { return [{ type: i1.BsModalRef }, { type: i2.TrustedCertificateService }, { type: i3.AlertService }, { type: i3.GainsightService }]; } });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXRydXN0ZWQtY2VydGlmaWNhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMvYWRkLXRydXN0ZWQtY2VydGlmaWNhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMvYWRkLXRydXN0ZWQtY2VydGlmaWNhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFlLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEUsT0FBTyxFQUF1Qix5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7OztBQU1qRSxNQUFNLE9BQU8sOEJBQThCO0lBa0J6QyxZQUNVLEtBQWlCLEVBQ2pCLHlCQUFvRCxFQUNwRCxZQUEwQixFQUMxQixnQkFBa0M7UUFIbEMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFyQjVDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLDhCQUF5QixHQUFHLE9BQU8sQ0FDakMscU5BQXFOLENBQ3ROLENBQUM7UUFDRix1QkFBa0IsR0FBaUM7WUFDakQsTUFBTSxFQUFFLFVBQVU7U0FDbkIsQ0FBQztRQUNGLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCLFdBQU0sR0FBaUIsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFHSCx1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztJQU9yQyxDQUFDO0lBRUosVUFBVSxDQUFDLE9BQXNCO1FBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksT0FBTyxFQUFFO1lBQ1gsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQWdCLENBQUM7WUFDcEUsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJO1lBQ0YsTUFBTSxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFO2dCQUMzRCxTQUFTLEVBQUUsa0JBQWtCLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUI7Z0JBQ3pFLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVc7Z0JBQzNELE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUc7YUFDcEQsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDZDtRQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDOzsySEF2RFUsOEJBQThCOytHQUE5Qiw4QkFBOEIsbUVDWDNDLDgzSEE4SEE7MkZEbkhhLDhCQUE4QjtrQkFKMUMsU0FBUzsrQkFDRSw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IERyb3BwZWRGaWxlLCBHYWluc2lnaHRTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBJVHJ1c3RlZENlcnRpZmljYXRlLCBUcnVzdGVkQ2VydGlmaWNhdGVTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBQUk9EVUNUX0VYUEVSSUVOQ0UgfSBmcm9tICcuL3RydXN0ZWQtY2VydGlmaWNhdGUubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWRkLXRydXN0ZWQtY2VydGlmaWNhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLXRydXN0ZWQtY2VydGlmaWNhdGUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFkZFRydXN0ZWRDZXJ0aWZpY2F0ZUNvbXBvbmVudCB7XG4gIG1heEFsbG93ZWRGaWxlcyA9IDE7XG4gIEFVVE9fUkVHSVNUUkFUSU9OX1BPUE9WRVIgPSBnZXR0ZXh0KFxuICAgICdEZXZpY2VzIHVzaW5nIHRoZSBNUVRUIHByb3RvY29sIHdpdGggY3JlZGVudGlhbHMgc2lnbmVkIGJ5IHRoaXMgY2VydGlmaWNhdGUgd2lsbCBiZSBhYmxlIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHBsYXRmb3JtIHdpdGhvdXQgcHJpb3IgcmVnaXN0cmF0aW9uLiBUaGUgb3B0aW9uIGRvZXMgbm90IHN1cHBvcnQgZGV2aWNlcyB1c2luZyB0aGUgTFdNMk0gcHJvdG9jb2wuJ1xuICApO1xuICB0cnVzdGVkQ2VydGlmaWNhdGU6IFBhcnRpYWw8SVRydXN0ZWRDZXJ0aWZpY2F0ZT4gPSB7XG4gICAgc3RhdHVzOiAnRElTQUJMRUQnXG4gIH07XG4gIGZpbGVJc1VwbG9hZGVkID0gZmFsc2U7XG5cbiAgcmVzdWx0OiBQcm9taXNlPGFueT4gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdGhpcy5fc2F2ZSA9IHJlc29sdmU7XG4gICAgdGhpcy5fY2FuY2VsID0gcmVqZWN0O1xuICB9KTtcbiAgcHJpdmF0ZSBfc2F2ZTtcbiAgcHJpdmF0ZSBfY2FuY2VsO1xuICBQUk9EVUNUX0VYUEVSSUVOQ0UgPSBQUk9EVUNUX0VYUEVSSUVOQ0U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtb2RhbDogQnNNb2RhbFJlZixcbiAgICBwcml2YXRlIHRydXN0ZWRDZXJ0aWZpY2F0ZVNlcnZpY2U6IFRydXN0ZWRDZXJ0aWZpY2F0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2VcbiAgKSB7fVxuXG4gIHVwbG9hZEZpbGUoZHJvcHBlZDogRHJvcHBlZEZpbGVbXSkge1xuICAgIHRoaXMuZmlsZUlzVXBsb2FkZWQgPSBmYWxzZTtcbiAgICBpZiAoZHJvcHBlZCkge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuZmlsZUlzVXBsb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnRydXN0ZWRDZXJ0aWZpY2F0ZS5jZXJ0SW5QZW1Gb3JtYXQgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcbiAgICAgIH07XG4gICAgICByZWFkZXIucmVhZEFzVGV4dChkcm9wcGVkWzBdLmZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmUoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMudHJ1c3RlZENlcnRpZmljYXRlU2VydmljZS5jcmVhdGUodGhpcy50cnVzdGVkQ2VydGlmaWNhdGUpO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuRVZFTlQsIHtcbiAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQ0VSVElGSUNBVEVTLkNPTVBPTkVOVFMuVFJVU1RFRF9DRVJUSUZJQ0FURSxcbiAgICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQ0VSVElGSUNBVEVTLlJFU1VMVFMuQUREX1NVQ0NFU1MsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkNFUlRJRklDQVRFUy5BQ1RJT05TLkFERFxuICAgICAgfSk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0NlcnRpZmljYXRlIHNhdmVkLicpKTtcbiAgICAgIHRoaXMuX3NhdmUoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5fY2FuY2VsKCk7XG4gICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ2aWV3cG9ydC1tb2RhbFwiPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIGRpYWxvZy1oZWFkZXJcIj5cbiAgICA8aSBjOHlJY29uPVwiY2VydGlmaWNhdGVcIj48L2k+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtb2RhbC10aXRsZVwiXG4gICAgICBpZD1cImFkZENlcnRpZmljYXRlTW9kYWxUaXRsZVwiXG4gICAgICB0cmFuc2xhdGVcbiAgICA+XG4gICAgICBBZGQgdHJ1c3RlZCBjZXJ0aWZpY2F0ZVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGZvcm1cbiAgICAjYWRkVHJ1c3RlZENlcnRpZmljYXRlRm9ybT1cIm5nRm9ybVwiXG4gICAgKG5nU3VibWl0KT1cImFkZFRydXN0ZWRDZXJ0aWZpY2F0ZUZvcm0uZm9ybS52YWxpZCAmJiBmaWxlSXNVcGxvYWRlZCAmJiBzYXZlKClcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWlubmVyLXNjcm9sbFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm1vZGFsLWJvZHlcIlxuICAgICAgICBpZD1cImFkZENlcnRpZmljYXRlTW9kYWxEZXNjcmlwdGlvblwiXG4gICAgICA+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImNlcnRpZmljYXRlTmFtZVwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDZXJ0aWZpY2F0ZSBuYW1lXG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGlkPVwiY2VydGlmaWNhdGVOYW1lXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gTXkgY2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIG5hbWU9XCJjZXJ0aWZpY2F0ZU5hbWVcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRydXN0ZWRDZXJ0aWZpY2F0ZS5uYW1lXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJjZXJ0aWZpY2F0ZVwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDZXJ0aWZpY2F0ZVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGM4eS1kcm9wLWFyZWFcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcC1hcmVhLXNtXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInUGFzdGUgdGhlIGNlcnRpZmljYXRlIGluIFBFTSBmb3JtYXQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoZHJvcHBlZCk9XCJ1cGxvYWRGaWxlKCRldmVudClcIlxuICAgICAgICAgICAgW2xvYWRpbmdNZXNzYWdlXT1cIidJbXBvcnRpbmcsIHBsZWFzZSB3YWl0LicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW21heEFsbG93ZWRGaWxlc109XCJtYXhBbGxvd2VkRmlsZXNcIlxuICAgICAgICAgID48L2M4eS1kcm9wLWFyZWE+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94XCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0F1dG8gcmVnaXN0cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGlkPVwiYXV0b1JlZ2lzdHJhdGlvblwiXG4gICAgICAgICAgICAgIG5hbWU9XCJhdXRvUmVnaXN0cmF0aW9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0cnVzdGVkQ2VydGlmaWNhdGUuYXV0b1JlZ2lzdHJhdGlvbkVuYWJsZWRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdBdXRvIHJlZ2lzdHJhdGlvbicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHBcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHBvcG92ZXI9XCJ7eyBBVVRPX1JFR0lTVFJBVElPTl9QT1BPVkVSIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgbmFtZT1cImNlcnRpZmljYXRlU3RhdHVzXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInRydXN0ZWRDZXJ0aWZpY2F0ZS5zdGF0dXNcIlxuICAgICAgICAgIGJ0bkNoZWNrYm94XG4gICAgICAgICAgYnRuQ2hlY2tib3hUcnVlPVwiRU5BQkxFRFwiXG4gICAgICAgICAgYnRuQ2hlY2tib3hGYWxzZT1cIkRJU0FCTEVEXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdEaXNhYmxlZGB0cnVzdGVkIGNlcnRpZmljYXRlIHN0YXR1c2AnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwidHJ1c3RlZENlcnRpZmljYXRlLnN0YXR1cyAhPT0gJ0RJU0FCTEVEJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0Rpc2FibGVkYHRydXN0ZWQgY2VydGlmaWNhdGUgc3RhdHVzYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0VuYWJsZWRgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSBzdGF0dXNgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cInRydXN0ZWRDZXJ0aWZpY2F0ZS5zdGF0dXMgIT09ICdFTkFCTEVEJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0VuYWJsZWRgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSBzdGF0dXNgJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgIHRpdGxlPVwie3sgJ0FkZCBjZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgIGFkZFRydXN0ZWRDZXJ0aWZpY2F0ZUZvcm0uZm9ybS5pbnZhbGlkIHx8XG4gICAgICAgICAgYWRkVHJ1c3RlZENlcnRpZmljYXRlRm9ybS5mb3JtLnByaXN0aW5lIHx8XG4gICAgICAgICAgIWZpbGVJc1VwbG9hZGVkXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIHt7ICdBZGQgY2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9kaXY+XG4iXX0=
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXRydXN0ZWQtY2VydGlmaWNhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMvbGlzdC9hZGQtdHJ1c3RlZC1jZXJ0aWZpY2F0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi90cnVzdGVkLWNlcnRpZmljYXRlcy9saXN0L2FkZC10cnVzdGVkLWNlcnRpZmljYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BFLE9BQU8sRUFBdUIseUJBQXlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7QUFNakUsTUFBTSxPQUFPLDhCQUE4QjtJQWtCekMsWUFDVSxLQUFpQixFQUNqQix5QkFBb0QsRUFDcEQsWUFBMEIsRUFDMUIsZ0JBQWtDO1FBSGxDLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBckI1QyxvQkFBZSxHQUFHLENBQUMsQ0FBQztRQUNwQiw4QkFBeUIsR0FBRyxPQUFPLENBQ2pDLHFOQUFxTixDQUN0TixDQUFDO1FBQ0YsdUJBQWtCLEdBQWlDO1lBQ2pELE1BQU0sRUFBRSxVQUFVO1NBQ25CLENBQUM7UUFDRixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUV2QixXQUFNLEdBQWlCLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JELElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBR0gsdUJBQWtCLEdBQUcsa0JBQWtCLENBQUM7SUFPckMsQ0FBQztJQUVKLFVBQVUsQ0FBQyxPQUFzQjtRQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLE9BQU8sRUFBRTtZQUNYLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO2dCQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxNQUFnQixDQUFDO1lBQ3BFLENBQUMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSTtZQUNGLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRTtnQkFDM0QsU0FBUyxFQUFFLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsbUJBQW1CO2dCQUN6RSxNQUFNLEVBQUUsa0JBQWtCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXO2dCQUMzRCxNQUFNLEVBQUUsa0JBQWtCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHO2FBQ3BELENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7UUFBQyxPQUFPLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7MkhBdkRVLDhCQUE4QjsrR0FBOUIsOEJBQThCLG1FQ1gzQyw4M0hBOEhBOzJGRG5IYSw4QkFBOEI7a0JBSjFDLFNBQVM7K0JBQ0UsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBEcm9wcGVkRmlsZSwgR2FpbnNpZ2h0U2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgSVRydXN0ZWRDZXJ0aWZpY2F0ZSwgVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUFJPRFVDVF9FWFBFUklFTkNFIH0gZnJvbSAnLi90cnVzdGVkLWNlcnRpZmljYXRlLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWFkZC10cnVzdGVkLWNlcnRpZmljYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC10cnVzdGVkLWNlcnRpZmljYXRlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBZGRUcnVzdGVkQ2VydGlmaWNhdGVDb21wb25lbnQge1xuICBtYXhBbGxvd2VkRmlsZXMgPSAxO1xuICBBVVRPX1JFR0lTVFJBVElPTl9QT1BPVkVSID0gZ2V0dGV4dChcbiAgICAnRGV2aWNlcyB1c2luZyB0aGUgTVFUVCBwcm90b2NvbCB3aXRoIGNyZWRlbnRpYWxzIHNpZ25lZCBieSB0aGlzIGNlcnRpZmljYXRlIHdpbGwgYmUgYWJsZSB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBwbGF0Zm9ybSB3aXRob3V0IHByaW9yIHJlZ2lzdHJhdGlvbi4gVGhlIG9wdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGRldmljZXMgdXNpbmcgdGhlIExXTTJNIHByb3RvY29sLidcbiAgKTtcbiAgdHJ1c3RlZENlcnRpZmljYXRlOiBQYXJ0aWFsPElUcnVzdGVkQ2VydGlmaWNhdGU+ID0ge1xuICAgIHN0YXR1czogJ0RJU0FCTEVEJ1xuICB9O1xuICBmaWxlSXNVcGxvYWRlZCA9IGZhbHNlO1xuXG4gIHJlc3VsdDogUHJvbWlzZTxhbnk+ID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRoaXMuX3NhdmUgPSByZXNvbHZlO1xuICAgIHRoaXMuX2NhbmNlbCA9IHJlamVjdDtcbiAgfSk7XG4gIHByaXZhdGUgX3NhdmU7XG4gIHByaXZhdGUgX2NhbmNlbDtcbiAgUFJPRFVDVF9FWFBFUklFTkNFID0gUFJPRFVDVF9FWFBFUklFTkNFO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbW9kYWw6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSB0cnVzdGVkQ2VydGlmaWNhdGVTZXJ2aWNlOiBUcnVzdGVkQ2VydGlmaWNhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBnYWluc2lnaHRTZXJ2aWNlOiBHYWluc2lnaHRTZXJ2aWNlXG4gICkge31cblxuICB1cGxvYWRGaWxlKGRyb3BwZWQ6IERyb3BwZWRGaWxlW10pIHtcbiAgICB0aGlzLmZpbGVJc1VwbG9hZGVkID0gZmFsc2U7XG4gICAgaWYgKGRyb3BwZWQpIHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmZpbGVJc1VwbG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50cnVzdGVkQ2VydGlmaWNhdGUuY2VydEluUGVtRm9ybWF0ID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc1RleHQoZHJvcHBlZFswXS5maWxlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnRydXN0ZWRDZXJ0aWZpY2F0ZVNlcnZpY2UuY3JlYXRlKHRoaXMudHJ1c3RlZENlcnRpZmljYXRlKTtcbiAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5ULCB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkNFUlRJRklDQVRFUy5DT01QT05FTlRTLlRSVVNURURfQ0VSVElGSUNBVEUsXG4gICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFLkNFUlRJRklDQVRFUy5SRVNVTFRTLkFERF9TVUNDRVNTLFxuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5DRVJUSUZJQ0FURVMuQUNUSU9OUy5BRERcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdDZXJ0aWZpY2F0ZSBzYXZlZC4nKSk7XG4gICAgICB0aGlzLl9zYXZlKCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuX2NhbmNlbCgpO1xuICAgIHRoaXMubW9kYWwuaGlkZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidmlld3BvcnQtbW9kYWxcIj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBkaWFsb2ctaGVhZGVyXCI+XG4gICAgPGkgYzh5SWNvbj1cImNlcnRpZmljYXRlXCI+PC9pPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibW9kYWwtdGl0bGVcIlxuICAgICAgaWQ9XCJhZGRDZXJ0aWZpY2F0ZU1vZGFsVGl0bGVcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgQWRkIHRydXN0ZWQgY2VydGlmaWNhdGVcbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxmb3JtXG4gICAgI2FkZFRydXN0ZWRDZXJ0aWZpY2F0ZUZvcm09XCJuZ0Zvcm1cIlxuICAgIChuZ1N1Ym1pdCk9XCJhZGRUcnVzdGVkQ2VydGlmaWNhdGVGb3JtLmZvcm0udmFsaWQgJiYgZmlsZUlzVXBsb2FkZWQgJiYgc2F2ZSgpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1pbm5lci1zY3JvbGxcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJtb2RhbC1ib2R5XCJcbiAgICAgICAgaWQ9XCJhZGRDZXJ0aWZpY2F0ZU1vZGFsRGVzY3JpcHRpb25cIlxuICAgICAgPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJjZXJ0aWZpY2F0ZU5hbWVcIlxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQ2VydGlmaWNhdGUgbmFtZVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBpZD1cImNlcnRpZmljYXRlTmFtZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIE15IGNlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBuYW1lPVwiY2VydGlmaWNhdGVOYW1lXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0cnVzdGVkQ2VydGlmaWNhdGUubmFtZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwiY2VydGlmaWNhdGVcIlxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQ2VydGlmaWNhdGVcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxjOHktZHJvcC1hcmVhXG4gICAgICAgICAgICBjbGFzcz1cImRyb3AtYXJlYS1zbVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ1Bhc3RlIHRoZSBjZXJ0aWZpY2F0ZSBpbiBQRU0gZm9ybWF0LicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgKGRyb3BwZWQpPVwidXBsb2FkRmlsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtsb2FkaW5nTWVzc2FnZV09XCInSW1wb3J0aW5nLCBwbGVhc2Ugd2FpdC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFttYXhBbGxvd2VkRmlsZXNdPVwibWF4QWxsb3dlZEZpbGVzXCJcbiAgICAgICAgICA+PC9jOHktZHJvcC1hcmVhPlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdBdXRvIHJlZ2lzdHJhdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBpZD1cImF1dG9SZWdpc3RyYXRpb25cIlxuICAgICAgICAgICAgICBuYW1lPVwiYXV0b1JlZ2lzdHJhdGlvblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidHJ1c3RlZENlcnRpZmljYXRlLmF1dG9SZWdpc3RyYXRpb25FbmFibGVkXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj57eyAnQXV0byByZWdpc3RyYXRpb24nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBwb3BvdmVyPVwie3sgQVVUT19SRUdJU1RSQVRJT05fUE9QT1ZFUiB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgIG5hbWU9XCJjZXJ0aWZpY2F0ZVN0YXR1c1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ0cnVzdGVkQ2VydGlmaWNhdGUuc3RhdHVzXCJcbiAgICAgICAgICBidG5DaGVja2JveFxuICAgICAgICAgIGJ0bkNoZWNrYm94VHJ1ZT1cIkVOQUJMRURcIlxuICAgICAgICAgIGJ0bkNoZWNrYm94RmFsc2U9XCJESVNBQkxFRFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRGlzYWJsZWRgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSBzdGF0dXNgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cInRydXN0ZWRDZXJ0aWZpY2F0ZS5zdGF0dXMgIT09ICdESVNBQkxFRCdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdEaXNhYmxlZGB0cnVzdGVkIGNlcnRpZmljYXRlIHN0YXR1c2AnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdFbmFibGVkYHRydXN0ZWQgY2VydGlmaWNhdGUgc3RhdHVzYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJ0cnVzdGVkQ2VydGlmaWNhdGUuc3RhdHVzICE9PSAnRU5BQkxFRCdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdFbmFibGVkYHRydXN0ZWQgY2VydGlmaWNhdGUgc3RhdHVzYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgIHRpdGxlPVwie3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgICAgPlxuICAgICAgICB7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICB0aXRsZT1cInt7ICdBZGQgY2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICBhZGRUcnVzdGVkQ2VydGlmaWNhdGVGb3JtLmZvcm0uaW52YWxpZCB8fFxuICAgICAgICAgIGFkZFRydXN0ZWRDZXJ0aWZpY2F0ZUZvcm0uZm9ybS5wcmlzdGluZSB8fFxuICAgICAgICAgICFmaWxlSXNVcGxvYWRlZFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICB7eyAnQWRkIGNlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvZGl2PlxuIl19
|