@c8y/ngx-components 1021.71.3 → 1021.73.3
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/core/beta-feature/beta-preview.component.d.ts +0 -1
- package/core/beta-feature/beta-preview.component.d.ts.map +1 -1
- package/core/common/ApplicationOptions.d.ts +4 -1
- package/core/common/ApplicationOptions.d.ts.map +1 -1
- package/esm2022/core/beta-feature/beta-preview.component.mjs +1 -3
- package/esm2022/core/common/ApplicationOptions.mjs +1 -1
- package/esm2022/messaging-management/messaging-management.module.mjs +21 -5
- package/esm2022/register-device/general/general-device-registration.component.mjs +3 -3
- package/esm2022/register-device/general/general-device-registration.service.mjs +2 -2
- package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +6 -3
- package/fesm2022/c8y-ngx-components-messaging-management.mjs +19 -3
- package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-register-device.mjs +3 -3
- package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +5 -2
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +0 -1
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +300 -4
- package/messaging-management/messaging-management.module.d.ts.map +1 -1
- package/package.json +1 -1
- package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
|
@@ -8,7 +8,7 @@ export class GeneralDeviceRegistrationService {
|
|
|
8
8
|
}
|
|
9
9
|
async open(initialState) {
|
|
10
10
|
const modalRef = this.modalService.show(GeneralDeviceRegistrationComponent, {
|
|
11
|
-
class: 'modal-
|
|
11
|
+
class: 'modal-lg',
|
|
12
12
|
ariaDescribedby: 'modal-body',
|
|
13
13
|
ariaLabelledBy: 'modal-title',
|
|
14
14
|
ignoreBackdropClick: true,
|
|
@@ -27,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27
27
|
providedIn: 'root'
|
|
28
28
|
}]
|
|
29
29
|
}] });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC1kZXZpY2UtcmVnaXN0cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9yZWdpc3Rlci1kZXZpY2UvZ2VuZXJhbC9nZW5lcmFsLWRldmljZS1yZWdpc3RyYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7O0FBSzdGLE1BQU0sT0FBTyxnQ0FBZ0M7SUFIN0M7UUFJVSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztLQWUvQztJQWJDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBMEQ7UUFDbkUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0NBQWtDLEVBQUU7WUFDMUUsS0FBSyxFQUFFLFVBQVU7WUFDakIsZUFBZSxFQUFFLFlBQVk7WUFDN0IsY0FBYyxFQUFFLGFBQWE7WUFDN0IsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixZQUFZLEVBQUU7Z0JBQ1osR0FBRyxZQUFZO2FBQ2hCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ3ZDLENBQUM7K0dBZlUsZ0NBQWdDO21IQUFoQyxnQ0FBZ0MsY0FGL0IsTUFBTTs7NEZBRVAsZ0NBQWdDO2tCQUg1QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IEdlbmVyYWxEZXZpY2VSZWdpc3RyYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2dlbmVyYWwtZGV2aWNlLXJlZ2lzdHJhdGlvbi5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmFsRGV2aWNlUmVnaXN0cmF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgbW9kYWxTZXJ2aWNlID0gaW5qZWN0KEJzTW9kYWxTZXJ2aWNlKTtcblxuICBhc3luYyBvcGVuKGluaXRpYWxTdGF0ZT86IFBhcnRpYWw8R2VuZXJhbERldmljZVJlZ2lzdHJhdGlvbkNvbXBvbmVudD4pIHtcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLnNob3coR2VuZXJhbERldmljZVJlZ2lzdHJhdGlvbkNvbXBvbmVudCwge1xuICAgICAgY2xhc3M6ICdtb2RhbC1sZycsXG4gICAgICBhcmlhRGVzY3JpYmVkYnk6ICdtb2RhbC1ib2R5JyxcbiAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAuLi5pbml0aWFsU3RhdGVcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhd2FpdCBtb2RhbFJlZi5jb250ZW50LnJlc3VsdDtcbiAgfVxufVxuIl19
|
|
@@ -93,8 +93,11 @@ export class TrustedCertificateListComponent {
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
async deleteTrustedCertificate(certificate) {
|
|
96
|
-
const
|
|
97
|
-
const
|
|
96
|
+
const isCA = certificate.tenantCertificateAuthority;
|
|
97
|
+
const title = isCA ? gettext('Delete CA certificate?') : gettext('Delete trusted certificate?');
|
|
98
|
+
const confirmationText = isCA
|
|
99
|
+
? gettext('You are about to delete the Certificate Authority (CA) certificate for this tenant. Any device enrolled using this CA certificate for authentication will no longer be able to connect to the platform.')
|
|
100
|
+
: gettext('You are about to delete a trusted certificate "{{ certificateName }}".');
|
|
98
101
|
const finalQuestion = gettext('Do you want to proceed?');
|
|
99
102
|
const certificateName = certificate.name;
|
|
100
103
|
const body = [
|
|
@@ -217,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
217
220
|
type: Component,
|
|
218
221
|
args: [{ selector: 'c8y-trusted-certificates', 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-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"certificateAuthorityFeatureEnabled\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add CA certificate' | translate }}\"\n type=\"button\"\n [disabled]=\"certificateAuthorityExists\"\n (click)=\"addCACertificate()\"\n >\n <i c8yIcon=\"contract\"></i>\n {{ 'Add CA certificate' | translate }}\n </button>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Adding a CA certificate lets the app trust certificates from the specified authority, ensuring secure connections. Only one certificate is allowed, which is why the button is disabled.'\n | translate\n }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n type=\"button\"\n *ngIf=\"certificateAuthorityExists\"\n ></button>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Adding a CA certificate lets the app trust certificates from the specified authority, ensuring secure connections.'\n | translate\n }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n type=\"button\"\n *ngIf=\"!certificateAuthorityExists\"\n ></button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add trusted certificate' | translate }}\"\n type=\"button\"\n (click)=\"addTrustedCertificate()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add trusted certificate' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"loadTrustedCertificates()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading | async }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-certificate-authentication/managing-trusted-certificates/#managing-trusted-certificates\"\n></c8y-help>\n\n<c8y-ui-empty-state\n [icon]=\"'certificate'\"\n [title]=\"'No trusted certificates to display.' | translate\"\n [subtitle]=\"'Add your first certificate by clicking below.' | translate\"\n *ngIf=\"(trustedCertificates | async)?.data.length === 0\"\n>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add trusted certificate' | translate }}\"\n type=\"button\"\n (click)=\"addTrustedCertificate()\"\n >\n {{ 'Add trusted certificate' | translate }}\n </button>\n</c8y-ui-empty-state>\n\n<c8y-list-group class=\"m-b-24\">\n <div\n class=\"page-sticky-header hidden-xs c8y-list__item c8y-list__item--empty-actions\"\n *ngIf=\"(trustedCertificates | async)?.data.length > 0\"\n >\n <div class=\"c8y-list__item__block\">\n <div class=\"c8y-list__item__icon\">\n <i\n class=\"invisible\"\n c8yIcon=\"certificate\"\n ></i>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"content-flex-60\">\n <div class=\"col-2\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Certificate' | translate }} \"\n >\n {{ 'Certificate' | translate }}\n </span>\n </div>\n <div class=\"col-2\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Status' | translate }}\"\n >\n {{ 'Status' | translate }}\n </span>\n </div>\n <div class=\"col-2\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Algorithm' | translate }}\"\n >\n {{ 'Algorithm' | translate }}\n </span>\n </div>\n <div class=\"col-2\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Expiration date' | translate }}\"\n >\n {{ 'Expiration date' | translate }}\n </span>\n </div>\n <div class=\"col-2\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Auto registration' | translate }}\"\n >\n {{ 'Auto registration' | translate }}\n </span>\n </div>\n <div class=\"col-2\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Proof of possession' | translate }}\"\n >\n {{ 'Proof of possession' | translate }}\n </span>\n </div>\n </div>\n </div>\n <div class=\"c8y-list__item__actions\"></div>\n </div>\n </div>\n\n <c8y-li\n *c8yFor=\"\n let trustedCertificate of trustedCertificates | async;\n let i = index;\n pipe: sortByExpirationDateAsc;\n loadMore: 'none'\n \"\n #listItem\n data-cy=\"c8y-trusted-certificates-list--item-block\"\n >\n <c8y-li-icon>\n <button\n class=\"btn-clean\"\n attr.aria-label=\"{{ 'Certificate' | translate }}\"\n tooltip=\"{{ 'Certificate' | translate }}\"\n type=\"button\"\n [delay]=\"500\"\n *ngIf=\"!trustedCertificate.tenantCertificateAuthority\"\n >\n <i c8yIcon=\"certificate\"></i>\n </button>\n <button\n class=\"btn-clean\"\n attr.aria-label=\"{{ 'CA certificate' | translate }}\"\n tooltip=\"{{ 'CA certificate' | translate }}\"\n type=\"button\"\n [delay]=\"500\"\n *ngIf=\"trustedCertificate.tenantCertificateAuthority\"\n >\n <i c8yIcon=\"contract\"></i>\n </button>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-2\">\n <button\n class=\"btn-clean text-truncate\"\n title=\"{{ trustedCertificate.name }}\"\n type=\"button\"\n (click)=\"listItem.toggleCollapsed()\"\n >\n {{ trustedCertificate.name }}\n </button>\n </div>\n <div class=\"col-2\">\n <div class=\"visible-xs p-8\"></div>\n <button\n class=\"btn c8y-btn-checkbox--inline\"\n name=\"certificateStatus\"\n type=\"button\"\n [(ngModel)]=\"trustedCertificate.status\"\n btnCheckbox\n btnCheckboxTrue=\"ENABLED\"\n btnCheckboxFalse=\"DISABLED\"\n (ngModelChange)=\"updateCertificate(trustedCertificate, { status: $event })\"\n >\n <small\n title=\"{{ 'Disabled`trusted certificate status`' | translate }}\"\n [hidden]=\"trustedCertificate.status !== 'DISABLED'\"\n >\n {{ 'Disabled`trusted certificate status`' | translate }}\n </small>\n <small\n title=\"{{ 'Enabled`trusted certificate status`' | translate }}\"\n [hidden]=\"trustedCertificate.status !== 'ENABLED'\"\n >\n {{ 'Enabled`trusted certificate status`' | translate }}\n </small>\n </button>\n <div class=\"visible-xs p-8\"></div>\n </div>\n <div class=\"col-2\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Algorithm' | translate }}: {{ trustedCertificate.algorithmName }}\"\n >\n <span\n class=\"text-label-small m-t-8 m-r-8 visible-xs-inline\"\n translate\n >\n Algorithm\n </span>\n {{ trustedCertificate.algorithmName }}\n </div>\n </div>\n\n <div class=\"col-2\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Expiration date' | translate }}: {{ trustedCertificate.notAfter | c8yDate }}\"\n >\n <span\n class=\"text-label-small m-t-8 m-r-8 visible-xs-inline\"\n translate\n >\n Expiration date\n </span>\n <small [ngClass]=\"highlightDependingOnExpirationStatus(trustedCertificate)\">\n <i\n class=\"m-r-4\"\n c8yIcon=\"calendar\"\n *ngIf=\"!highlightDependingOnExpirationStatus(trustedCertificate)\"\n ></i>\n <i\n class=\"m-r-4\"\n c8yIcon=\"warning\"\n *ngIf=\"highlightDependingOnExpirationStatus(trustedCertificate)\"\n ></i>\n <span>{{ trustedCertificate.notAfter | c8yDate }}</span>\n </small>\n </div>\n </div>\n <div class=\"col-2\">\n <div class=\"text-truncate\">\n <span class=\"text-label-small m-t-8 m-r-4 visible-xs-inline\">\n {{ 'Auto registration' | translate }}\n </span>\n <span\n title=\"{{ 'Auto registration' | translate }}: {{\n 'Enabled`auto registration`' | translate\n }}\"\n *ngIf=\"trustedCertificate.autoRegistrationEnabled\"\n >\n {{ 'Enabled`auto registration`' | translate }}\n </span>\n <span\n title=\"{{ 'Auto registration' | translate }}: {{\n 'Disabled`auto registration`' | translate\n }}\"\n *ngIf=\"!trustedCertificate.autoRegistrationEnabled\"\n >\n {{ 'Disabled`auto registration`' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\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 type=\"button\"\n ></button>\n </div>\n </div>\n <div class=\"col-2 d-flex\">\n <div class=\"text-truncate\">\n <span class=\"text-label-small m-t-8 m-r-4 visible-xs-inline\">\n {{ 'Proof of possession' | translate }}\n </span>\n <span\n title=\"{{ 'Proof of possession' | translate }}: {{ 'N/A' | translate }}\"\n *ngIf=\"trustedCertificate.tenantCertificateAuthority\"\n >\n {{ 'N/A' | translate }}\n </span>\n <span *ngIf=\"!trustedCertificate.tenantCertificateAuthority\">\n <span\n title=\"{{ 'Proof of possession' | translate }}: {{\n 'Complete`proof of possession`' | translate\n }}\"\n *ngIf=\"trustedCertificate.proofOfPossessionValid\"\n >\n <div class=\"icon-flex\">\n <i\n class=\"text-success\"\n c8yIcon=\"success\"\n ></i>\n {{ 'Complete`proof of possession`' | translate }}\n </div>\n </span>\n <span\n title=\"{{ 'Proof of possession' | translate }}: {{\n 'Incomplete`proof of possession`' | translate\n }}\"\n *ngIf=\"!trustedCertificate.proofOfPossessionValid\"\n >\n <div class=\"icon-flex\">\n <i\n class=\"text-warning\"\n c8yIcon=\"warning\"\n ></i>\n {{ 'Incomplete`proof of possession`' | translate }}\n </div>\n </span>\n </span>\n </div>\n <button\n class=\"m-l-auto btn-dot btn-dot--danger btn showOnHover m-r-8\"\n [attr.aria-label]=\"'Delete' | translate\"\n tooltip=\"{{ 'Delete' | translate }}\"\n placement=\"right\"\n type=\"button\"\n data-cy=\"c8y-trusted-certificate--delete\"\n [delay]=\"500\"\n (click)=\"deleteTrustedCertificate(trustedCertificate)\"\n >\n <i c8yIcon=\"delete\"></i>\n </button>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse>\n <div class=\"p-t-16 p-b-16\">\n <div class=\"row\">\n <div class=\"col-md-4\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Certificate name' | translate }}\n </label>\n <div class=\"input-group input-group-editable\">\n <input\n class=\"form-control\"\n type=\"text\"\n required\n data-cy=\"c8y-trusted-certificates--edit-certificate-name\"\n [(ngModel)]=\"trustedCertificate.name\"\n />\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Update certificate name' | translate }}\"\n type=\"button\"\n (click)=\"\n updateCertificate(trustedCertificate, { name: trustedCertificate.name })\n \"\n [disabled]=\"!trustedCertificate.name\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-md-1\"></div>\n <div class=\"col-md-7\">\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"certInPemFormat\"\n translate\n >\n Certificate\n </label>\n <textarea\n class=\"form-control no-resize\"\n id=\"certInPemFormat\"\n name=\"certInPemFormat\"\n type=\"text\"\n rows=\"7\"\n readonly\n [(ngModel)]=\"trustedCertificate.certInPemFormat\"\n ></textarea>\n </c8y-form-group>\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Auto registration' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"trustedCertificate.autoRegistrationEnabled\"\n (ngModelChange)=\"\n updateCertificate(trustedCertificate, { autoRegistrationEnabled: $event })\n \"\n />\n <span></span>\n <span>{{ 'Auto registration' | translate }}</span>\n <button\n class=\"btn-help btn-help--sm\"\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 type=\"button\"\n ></button>\n </label>\n </c8y-form-group>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-4\">\n <div\n class=\"legend form-block\"\n translate\n >\n Additional properties\n </div>\n <ul class=\"list-unstyled\">\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom flex-wrap\">\n <label class=\"small m-b-0 m-r-8 a-s-start flex-grow\">\n {{ 'Algorithm' | translate }}\n </label>\n <span class=\"m-l-auto text-break-word\">\n {{ trustedCertificate.algorithmName }}\n </span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom flex-wrap\">\n <label class=\"small m-b-0 m-r-8 a-s-start flex-grow\">\n {{ 'Version' | translate }}\n </label>\n <span class=\"m-l-auto text-break-word\">\n {{ trustedCertificate.version }}\n </span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom flex-wrap\">\n <label class=\"small m-b-0 m-r-8 a-s-start flex-grow\">\n {{ 'Valid from' | translate }}\n </label>\n <span class=\"m-l-auto text-break-word\">\n {{ trustedCertificate.notBefore | c8yDate }}\n </span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom flex-wrap\">\n <label class=\"small m-b-0 m-r-8 a-s-start flex-grow\">\n {{ 'Issuer' | translate }}\n </label>\n <span class=\"m-l-auto text-break-word\">\n {{ trustedCertificate.issuer }}\n </span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom flex-wrap\">\n <label class=\"small m-b-0 m-r-8 a-s-start flex-grow\">\n {{ 'Expiration date' | translate }}\n </label>\n <span class=\"m-l-auto text-break-word\">\n {{ trustedCertificate.notAfter | c8yDate }}\n </span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom flex-wrap\">\n <label class=\"small m-b-0 m-r-8 a-s-start flex-grow\">\n {{ 'Serial number' | translate }}\n </label>\n <span class=\"m-l-auto text-break-word\">\n {{ trustedCertificate.serialNumber }}\n </span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom flex-wrap\">\n <label class=\"small m-b-0 m-r-8 a-s-start flex-grow\">\n {{ 'Subject`of a certificate`' | translate }}\n </label>\n <span class=\"m-l-auto text-break-word\">\n {{ trustedCertificate.subject }}\n </span>\n </li>\n </ul>\n </div>\n <div class=\"col-md-1\"></div>\n <div\n class=\"col-md-7\"\n *ngIf=\"!trustedCertificate.tenantCertificateAuthority\"\n >\n <div class=\"legend form-block\">\n {{ 'Proof of possession' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ PROOF_OF_POSSESSION_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n type=\"button\"\n ></button>\n </div>\n <div *ngIf=\"trustedCertificate.proofOfPossessionValid\">\n <span\n class=\"icon-flex\"\n title=\"{{ 'Proof of possession' | translate }}: {{\n 'Complete`proof of possession`' | translate\n }}\"\n >\n <i\n class=\"text-success\"\n c8yIcon=\"success\"\n ></i>\n {{ 'Complete`proof of possession`' | translate }}\n </span>\n </div>\n <div *ngIf=\"!trustedCertificate.proofOfPossessionValid\">\n <div class=\"row m-b-16\">\n <div class=\"col-md-6\">\n <span\n class=\"icon-flex\"\n title=\"{{ 'Proof of possession' | translate }}: {{\n 'Incomplete`proof of possession`' | translate\n }}\"\n >\n <i\n class=\"text-warning\"\n c8yIcon=\"warning\"\n ></i>\n {{ 'Incomplete`proof of possession`' | translate }}\n </span>\n </div>\n <div class=\"col-md-6 col-lg-6 text-right-md\">\n <span class=\"text-label-small m-r-4\">\n {{ 'Verification code expires/expired on' | translate }}\n </span>\n {{\n (trustedCertificate.proofOfPossessionVerificationCodeUsableUntil | c8yDate) ||\n '---'\n }}\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-6 col-lg-6\">\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"unsignedVerificationCode\"\n translate\n >\n Verification code\n </label>\n <textarea\n class=\"form-control no-resize\"\n id=\"unsignedVerificationCode\"\n name=\"unsignedVerificationCode\"\n type=\"text\"\n rows=\"5\"\n readonly\n [(ngModel)]=\"trustedCertificate.proofOfPossessionUnsignedVerificationCode\"\n ></textarea>\n </c8y-form-group>\n <div class=\"d-flex\">\n <button\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Regenerate verification code' | translate }}\"\n type=\"button\"\n (click)=\"regenerateUnsignedVerificationCode(trustedCertificate)\"\n >\n {{ 'Regenerate`verification code`' | translate }}\n </button>\n\n <button\n class=\"btn btn-sm btn-default m-l-auto m-r-0\"\n [attr.aria-label]=\"'Copy to clipboard' | translate\"\n tooltip=\"{{ 'Copy to clipboard' | translate }}\"\n placement=\"right\"\n type=\"button\"\n data-cy=\"c8y-trusted-certificates--copy-to-clipboard\"\n [delay]=\"500\"\n [disabled]=\"!trustedCertificate.proofOfPossessionUnsignedVerificationCode\"\n (click)=\"copyUnsignedVerificationCodeToClipboard(trustedCertificate)\"\n >\n <i c8yIcon=\"clipboard\"></i>\n </button>\n <button\n class=\"btn btn-default btn-sm\"\n [attr.aria-label]=\"'Download as file' | translate\"\n tooltip=\"{{ 'Download as file' | translate }}\"\n type=\"button\"\n data-cy=\"c8y-trusted-certificates--download-as-file\"\n [delay]=\"500\"\n [disabled]=\"!trustedCertificate.proofOfPossessionUnsignedVerificationCode\"\n (click)=\"downloadUnsignedVerificationCode(trustedCertificate)\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.VERIFICATION_CODE.COMPONENTS.DOWNLOAD_CODE,\n action: PRODUCT_EXPERIENCE.VERIFICATION_CODE.ACTIONS.DOWNLOAD\n }\"\n >\n <i c8yIcon=\"download\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"col-md-6 col-lg-6\">\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"signedVerificationCode\"\n >\n {{ 'Signed verification code' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ SIGNED_VERIFICATION_CODE_POPOVER | translate }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n data-cy=\"c8y-trusted-certificates--signed-verification-code-popup\"\n [outsideClick]=\"true\"\n ></button>\n </label>\n <textarea\n class=\"form-control no-resize\"\n id=\"signedVerificationCode\"\n name=\"signedVerificationCode\"\n type=\"text\"\n rows=\"5\"\n [(ngModel)]=\"trustedCertificate.signedVerificationCode\"\n ></textarea>\n </c8y-form-group>\n <div class=\"d-flex\">\n <button\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Verify signed verification code' | translate }}\"\n type=\"button\"\n (click)=\"verifySignedVerificationCode(trustedCertificate)\"\n [disabled]=\"!trustedCertificate.signedVerificationCode\"\n >\n {{ 'Verify`signed verification code`' | translate }}\n </button>\n <button\n class=\"btn btn-sm btn-default m-l-auto\"\n [attr.aria-label]=\"'Upload file' | translate\"\n tooltip=\"{{ 'Upload file' | translate }}\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"fileInput.click()\"\n >\n <i c8yIcon=\"upload\"></i>\n </button>\n <input\n class=\"hidden\"\n type=\"file\"\n #fileInput\n (change)=\"onFileInput($event, trustedCertificate)\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </c8y-li-collapse>\n </c8y-li>\n</c8y-list-group>\n" }]
|
|
219
222
|
}], ctorParameters: () => [{ type: i1.BsModalService }, { type: i2.AlertService }, { type: i3.TrustedCertificateService }, { type: i2.ModalService }, { type: i4.TranslateService }, { type: i2.ClipboardService }, { type: i2.GainsightService }, { type: i3.SystemOptionsService }, { type: i2.FeatureCacheService }] });
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1jZXJ0aWZpY2F0ZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RydXN0ZWQtY2VydGlmaWNhdGVzL2xpc3QvdHJ1c3RlZC1jZXJ0aWZpY2F0ZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3RydXN0ZWQtY2VydGlmaWNhdGVzL2xpc3QvdHJ1c3RlZC1jZXJ0aWZpY2F0ZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUNMLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBRW5CLGdCQUFnQixFQUNoQixPQUFPLEVBQ1AsWUFBWSxFQUNaLE1BQU0sRUFDUCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBR0wsb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUMxQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBYyxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFDTCx1Q0FBdUMsRUFFeEMsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7QUFNckMsTUFBTSxPQUFPLCtCQUErQjtJQXlD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R0FBRyxNQUFNLGNBQWMsQ0FDNUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUNsRSxDQUFDO0lBQ0osQ0FBQzsrR0F2UFUsK0JBQStCO21HQUEvQiwrQkFBK0IsZ0VDakM1QyxnaDBCQStyQkE7OzRGRDlwQmEsK0JBQStCO2tCQUozQyxTQUFTOytCQUNFLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIENsaXBib2FyZFNlcnZpY2UsXG4gIEZlYXR1cmVDYWNoZVNlcnZpY2UsXG4gIEZvck9mRmlsdGVyUGlwZSxcbiAgR2FpbnNpZ2h0U2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgTW9kYWxTZXJ2aWNlLFxuICBTdGF0dXNcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBZGRUcnVzdGVkQ2VydGlmaWNhdGVDb21wb25lbnQgfSBmcm9tICcuL2FkZC10cnVzdGVkLWNlcnRpZmljYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHtcbiAgSVJlc3VsdExpc3QsXG4gIElUcnVzdGVkQ2VydGlmaWNhdGUsXG4gIFN5c3RlbU9wdGlvbnNTZXJ2aWNlLFxuICBUcnVzdGVkQ2VydGlmaWNhdGVTZXJ2aWNlXG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IHRhcCwgc3dpdGNoTWFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHBpcGUsIEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xuaW1wb3J0IHsgYXNzaWduIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7XG4gIFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUyxcbiAgVHJ1c3RlZENlcnRpZmljYXRlXG59IGZyb20gJy4vdHJ1c3RlZC1jZXJ0aWZpY2F0ZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS10cnVzdGVkLWNlcnRpZmljYXRlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi90cnVzdGVkLWNlcnRpZmljYXRlLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRydXN0ZWRDZXJ0aWZpY2F0ZUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBQUk9PRl9PRl9QT1NTRVNTSU9OX1BPUE9WRVIgPSBnZXR0ZXh0KFxuICAgICdcIlByb29mIG9mIHBvc3Nlc3Npb25cIiBpcyBhIHNlY3VyaXR5IG1ldGhvZCB1c2VkIHRvIHByb3ZlIHRoYXQgd2hvZXZlciBzZW5kcyBhIG1lc3NhZ2UgaXMgYWxzbyBpbiB0aGUgcG9zc2Vzc2lvbiBvZiB0aGUgcGFydGljdWxhciBjcnlwdG9ncmFwaGljIGtleS4nXG4gICk7XG4gIFNJR05FRF9WRVJJRklDQVRJT05fQ09ERV9QT1BPVkVSID0gZ2V0dGV4dChcbiAgICAnVXNlIHRoZSBmb2xsb3dpbmcgb3BlbnNzbCBjb21tYW5kIHRvIGNyZWF0ZSB0aGUgc2lnbmVkIHZlcmlmaWNhdGlvbiBjb2RlOiBvcGVuc3NsIGRnc3QgLXNoYTI1NiAtc2lnbiA8cHJpdmF0ZS5rZXk+IDx2ZXJpZmljYXRpb25fY29kZS50eHQ+IHwgb3BlbnNzbCBiYXNlNjQgLUEnXG4gICk7XG5cbiAgQVVUT19SRUdJU1RSQVRJT05fUE9QT1ZFUiA9IGdldHRleHQoXG4gICAgJ0RldmljZXMgdXNpbmcgdGhlIE1RVFQgcHJvdG9jb2wgd2l0aCBjcmVkZW50aWFscyBzaWduZWQgYnkgdGhpcyBjZXJ0aWZpY2F0ZSB3aWxsIGJlIGFibGUgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgcGxhdGZvcm0gd2l0aG91dCBwcmlvciByZWdpc3RyYXRpb24uIFRoZSBvcHRpb24gZG9lcyBub3Qgc3VwcG9ydCBkZXZpY2VzIHVzaW5nIHRoZSBMV00yTSBwcm90b2NvbC4nXG4gICk7XG5cbiAgcmVsb2FkaW5nOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcmVsb2FkOiBCZWhhdmlvclN1YmplY3Q8dm9pZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElUcnVzdGVkQ2VydGlmaWNhdGU+PiA9IHRoaXMucmVsb2FkLnBpcGUoXG4gICAgdGFwKCgpID0+IHRoaXMucmVsb2FkaW5nLm5leHQodHJ1ZSkpLFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmdldFRydXN0ZWRDZXJ0aWZpY2F0ZXMoKSksXG4gICAgdGFwKHJlcG9uc2UgPT4ge1xuICAgICAgdGhpcy5jZXJ0aWZpY2F0ZUF1dGhvcml0eUV4aXN0cyA9IHJlcG9uc2UuZGF0YS5zb21lKFxuICAgICAgICB2YWx1ZSA9PiB2YWx1ZS50ZW5hbnRDZXJ0aWZpY2F0ZUF1dGhvcml0eVxuICAgICAgKTtcbiAgICB9KSxcbiAgICB0YXAoKCkgPT4gdGhpcy5yZWxvYWRpbmcubmV4dChmYWxzZSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG4gIHNvcnRCeUV4cGlyYXRpb25EYXRlQXNjOiBGb3JPZkZpbHRlclBpcGU8SVRydXN0ZWRDZXJ0aWZpY2F0ZT4gPSBwaXBlKFxuICAgIHRhcChyZXN1bHRzID0+IHtcbiAgICAgIHJldHVybiByZXN1bHRzLnNvcnQoKG4xLCBuMikgPT4ge1xuICAgICAgICBpZiAobjEudGVuYW50Q2VydGlmaWNhdGVBdXRob3JpdHkgIT09IG4yLnRlbmFudENlcnRpZmljYXRlQXV0aG9yaXR5KSB7XG4gICAgICAgICAgcmV0dXJuIG4xLnRlbmFudENlcnRpZmljYXRlQXV0aG9yaXR5ID8gLTEgOiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuMS5ub3RBZnRlci5sb2NhbGVDb21wYXJlKG4yLm5vdEFmdGVyKTtcbiAgICAgIH0pO1xuICAgIH0pXG4gICk7XG5cbiAgY2VydGlmaWNhdGVBdXRob3JpdHlFeGlzdHMgPSBmYWxzZTtcbiAgc2lnbmVkVmVyaWZpY2F0aW9uQ29kZTogc3RyaW5nO1xuICBQUk9EVUNUX0VYUEVSSUVOQ0UgPSBQUk9EVUNUX0VYUEVSSUVOQ0VfVFJVU1RFRF9DRVJUSUZJQ0FURVM7XG4gIGNlcnRpZmljYXRlQXV0aG9yaXR5RmVhdHVyZUVuYWJsZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJzTW9kYWw6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cnVzdGVkQ2VydGlmaWNhdGVTZXJ2aWNlOiBUcnVzdGVkQ2VydGlmaWNhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2xpcGJvYXJkU2VydmljZTogQ2xpcGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1PcHRpb25zU2VydmljZTogU3lzdGVtT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmZWF0dXJlQ2FjaGVTZXJ2aWNlOiBGZWF0dXJlQ2FjaGVTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBhd2FpdCB0aGlzLmxvYWRUcnVzdGVkQ2VydGlmaWNhdGVzKCk7XG4gICAgdGhpcy5zaG93TGltaXRhdGlvbkFsZXJ0KCk7XG4gICAgdGhpcy5jaGVja0NlcnRpZmljYXRlQXV0aG9yaXR5RmVhdHVyZSgpO1xuICB9XG5cbiAgYXN5bmMgbG9hZFRydXN0ZWRDZXJ0aWZpY2F0ZXMoKSB7XG4gICAgdGhpcy5yZWxvYWQubmV4dCgpO1xuICB9XG5cbiAgZ2V0VHJ1c3RlZENlcnRpZmljYXRlcygpIHtcbiAgICBjb25zdCBmaWx0ZXI6IG9iamVjdCA9IHtcbiAgICAgIHBhZ2VTaXplOiAxMDAwLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWVcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnRydXN0ZWRDZXJ0aWZpY2F0ZVNlcnZpY2UubGlzdChmaWx0ZXIpO1xuICB9XG5cbiAgYXN5bmMgYWRkVHJ1c3RlZENlcnRpZmljYXRlKCkge1xuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5ic01vZGFsLnNob3coQWRkVHJ1c3RlZENlcnRpZmljYXRlQ29tcG9uZW50LCB7XG4gICAgICBjbGFzczogJ21vZGFsLXNtJyxcbiAgICAgIGFyaWFEZXNjcmliZWRieTogJ2FkZENlcnRpZmljYXRlTW9kYWxEZXNjcmlwdGlvbicsXG4gICAgICBhcmlhTGFiZWxsZWRCeTogJ2FkZENlcnRpZmljYXRlTW9kYWxUaXRsZScsXG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAga2V5Ym9hcmQ6IGZhbHNlXG4gICAgfSkuY29udGVudCBhcyBBZGRUcnVzdGVkQ2VydGlmaWNhdGVDb21wb25lbnQ7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG1vZGFsLnJlc3VsdDtcbiAgICAgIG1vZGFsLmNsb3NlKCk7XG4gICAgICB0aGlzLnJlbG9hZC5uZXh0KCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gIH1cblxuICBhc3luYyBhZGRDQUNlcnRpZmljYXRlKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnRydXN0ZWRDZXJ0aWZpY2F0ZVNlcnZpY2UuZ2VuZXJhdGVDZXJ0aWZpY2F0ZUF1dGhvcml0eSgpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuY3JlYXRlU3VjY2VzcygnQ2VydGlmaWNhdGUgYXV0aG9yaXR5Jyk7XG4gICAgICB0aGlzLnJlbG9hZC5uZXh0KCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVRydXN0ZWRDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZSkge1xuICAgIGNvbnN0IHRpdGxlID0gZ2V0dGV4dCgnRGVsZXRlIHRydXN0ZWQgY2VydGlmaWNhdGUnKTtcbiAgICBjb25zdCBjb25maXJtYXRpb25UZXh0ID0gZ2V0dGV4dChcbiAgICAgICdZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSBhIHRydXN0ZWQgY2VydGlmaWNhdGUgXCJ7eyBjZXJ0aWZpY2F0ZU5hbWUgfX1cIi4nXG4gICAgKTtcbiAgICBjb25zdCBmaW5hbFF1ZXN0aW9uID0gZ2V0dGV4dCgnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nKTtcbiAgICBjb25zdCBjZXJ0aWZpY2F0ZU5hbWUgPSBjZXJ0aWZpY2F0ZS5uYW1lO1xuICAgIGNvbnN0IGJvZHkgPSBbXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChjb25maXJtYXRpb25UZXh0LCB7XG4gICAgICAgIGNlcnRpZmljYXRlTmFtZVxuICAgICAgfSksXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChmaW5hbFF1ZXN0aW9uKVxuICAgIF0uam9pbignICcpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubW9kYWxTZXJ2aWNlLmNvbmZpcm0odGl0bGUsIGJvZHksIFN0YXR1cy5EQU5HRVIsIHsgb2s6IGdldHRleHQoJ0RlbGV0ZScpIH0pO1xuICAgICAgYXdhaXQgdGhpcy50cnVzdGVkQ2VydGlmaWNhdGVTZXJ2aWNlLmRlbGV0ZShjZXJ0aWZpY2F0ZS5maW5nZXJwcmludCk7XG4gICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5FVkVOVCwge1xuICAgICAgICBjb21wb25lbnQ6XG4gICAgICAgICAgUFJPRFVDVF9FWFBFUklFTkNFX1RSVVNURURfQ0VSVElGSUNBVEVTLkNFUlRJRklDQVRFUy5DT01QT05FTlRTLlRSVVNURURfQ0VSVElGSUNBVEUsXG4gICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFX1RSVVNURURfQ0VSVElGSUNBVEVTLkNFUlRJRklDQVRFUy5SRVNVTFRTLkRFTEVURV9TVUNDRVNTLFxuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5DRVJUSUZJQ0FURVMuQUNUSU9OUy5ERUxFVEVcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdDZXJ0aWZpY2F0ZSBkZWxldGVkLicpKTtcbiAgICAgIHRoaXMucmVsb2FkLm5leHQoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlQ2VydGlmaWNhdGUoXG4gICAgdHJ1c3RlZENlcnRpZmljYXRlOiBJVHJ1c3RlZENlcnRpZmljYXRlLFxuICAgIHVwZGF0aW5nUGFydDogUGFydGlhbDxJVHJ1c3RlZENlcnRpZmljYXRlPlxuICApIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy50cnVzdGVkQ2VydGlmaWNhdGVTZXJ2aWNlLnVwZGF0ZSh7XG4gICAgICAgIGZpbmdlcnByaW50OiB0cnVzdGVkQ2VydGlmaWNhdGUuZmluZ2VycHJpbnQsXG4gICAgICAgIC4uLnVwZGF0aW5nUGFydFxuICAgICAgfSk7XG4gICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5FVkVOVCwge1xuICAgICAgICBjb21wb25lbnQ6XG4gICAgICAgICAgUFJPRFVDVF9FWFBFUklFTkNFX1RSVVNURURfQ0VSVElGSUNBVEVTLkNFUlRJRklDQVRFUy5DT01QT05FTlRTLlRSVVNURURfQ0VSVElGSUNBVEUsXG4gICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFX1RSVVNURURfQ0VSVElGSUNBVEVTLkNFUlRJRklDQVRFUy5SRVNVTFRTLlVQREFURV9TVUNDRVNTLFxuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5DRVJUSUZJQ0FURVMuQUNUSU9OUy5VUERBVEVcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdDZXJ0aWZpY2F0ZSBzYXZlZC4nKSk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgIH1cbiAgfVxuXG4gIGhpZ2hsaWdodERlcGVuZGluZ09uRXhwaXJhdGlvblN0YXR1cyhpdGVtOiBJVHJ1c3RlZENlcnRpZmljYXRlKSB7XG4gICAgY29uc3Qgd2FybmluZ09mZnNldCA9IDI0ICogNjAgKiA2MCAqIDEwMDAgKiA5MDsgLy8gOTAgZGF5c1xuICAgIGNvbnN0IHRvZGF5VGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgY29uc3Qgd2FybmluZ1RpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgd2FybmluZ09mZnNldDtcbiAgICBjb25zdCBub3RBZnRlclRpbWVzdGFtcCA9IG5ldyBEYXRlKGl0ZW0ubm90QWZ0ZXIpLmdldFRpbWUoKTtcbiAgICBjb25zdCBleHBpcmVkID0gbm90QWZ0ZXJUaW1lc3RhbXAgPCB0b2RheVRpbWVzdGFtcDtcbiAgICBjb25zdCBleHBpcmVzSW5MZXNzVGhhbjkwRGF5cyA9IG5vdEFmdGVyVGltZXN0YW1wIDwgd2FybmluZ1RpbWVzdGFtcDtcbiAgICBpZiAoZXhwaXJlZCkge1xuICAgICAgcmV0dXJuICd0ZXh0LWRhbmdlcic7XG4gICAgfVxuICAgIGlmIChleHBpcmVzSW5MZXNzVGhhbjkwRGF5cykge1xuICAgICAgcmV0dXJuICd0ZXh0LXdhcm5pbmcnO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZWdlbmVyYXRlVW5zaWduZWRWZXJpZmljYXRpb25Db2RlKHRydXN0ZWRDZXJ0aWZpY2F0ZTogSVRydXN0ZWRDZXJ0aWZpY2F0ZSkge1xuICAgIHRoaXMudHJ1c3RlZENlcnRpZmljYXRlU2VydmljZS5yZWdlbmVyYXRlUG9QVmVyaWZpY2F0aW9uQ29kZSh0cnVzdGVkQ2VydGlmaWNhdGUpLnRoZW4oXG4gICAgICAoeyBkYXRhIH0pID0+IHtcbiAgICAgICAgYXNzaWduKHRydXN0ZWRDZXJ0aWZpY2F0ZSwgZGF0YSk7XG4gICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFX1RSVVNURURfQ0VSVElGSUNBVEVTLkVWRU5ULCB7XG4gICAgICAgICAgY29tcG9uZW50OlxuICAgICAgICAgICAgUFJPRFVDVF9FWFBFUklFTkNFX1RSVVNURURfQ0VSVElGSUNBVEVTLlZFUklGSUNBVElPTl9DT0RFLkNPTVBPTkVOVFMuUkVHRU5FUkFURV9DT0RFLFxuICAgICAgICAgIHJlc3VsdDpcbiAgICAgICAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5WRVJJRklDQVRJT05fQ09ERS5SRVNVTFRTLlJFR0VORVJBVEVfU1VDQ0VTUyxcbiAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5WRVJJRklDQVRJT05fQ09ERS5BQ1RJT05TLlJFR0VORVJBVEVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnVmVyaWZpY2F0aW9uIGNvZGUgcmVnZW5lcmF0ZWQuJykpO1xuICAgICAgfSxcbiAgICAgIGV4ID0+IHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXgpXG4gICAgKTtcbiAgfVxuXG4gIHZlcmlmeVNpZ25lZFZlcmlmaWNhdGlvbkNvZGUodHJ1c3RlZENlcnRpZmljYXRlOiBUcnVzdGVkQ2VydGlmaWNhdGUpIHtcbiAgICB0aGlzLnRydXN0ZWRDZXJ0aWZpY2F0ZVNlcnZpY2VcbiAgICAgIC52ZXJpZnlTaWduZWRWZXJpZmljYXRpb25Db2RlKHRydXN0ZWRDZXJ0aWZpY2F0ZSwgdHJ1c3RlZENlcnRpZmljYXRlLnNpZ25lZFZlcmlmaWNhdGlvbkNvZGUpXG4gICAgICAudGhlbihcbiAgICAgICAgKHsgZGF0YSB9KSA9PiB7XG4gICAgICAgICAgYXNzaWduKHRydXN0ZWRDZXJ0aWZpY2F0ZSwgZGF0YSk7XG4gICAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0VfVFJVU1RFRF9DRVJUSUZJQ0FURVMuRVZFTlQsIHtcbiAgICAgICAgICAgIGNvbXBvbmVudDpcbiAgICAgICAgICAgICAgUFJPRFVDVF9FWFBFUklFTkNFX1RSVVNURURfQ0VSVElGSUNBVEVTLlZFUklGSUNBVElPTl9DT0RFLkNPTVBPTkVOVFMuVkVSSUZZX0NPREUsXG4gICAgICAgICAgICByZXN1bHQ6XG4gICAgICAgICAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5WRVJJRklDQVRJT05fQ09ERS5SRVNVTFRTLlZFUklGWV9TVUNDRVNTLFxuICAgICAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0VfVFJVU1RFRF9DRVJUSUZJQ0FURVMuVkVSSUZJQ0FUSU9OX0NPREUuQUNUSU9OUy5WRVJJRllcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ1NpZ25lZCB2ZXJpZmljYXRpb24gY29kZSB2ZXJpZmllZC4nKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGV4ID0+IHtcbiAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5FVkVOVCwge1xuICAgICAgICAgICAgY29tcG9uZW50OlxuICAgICAgICAgICAgICBQUk9EVUNUX0VYUEVSSUVOQ0VfVFJVU1RFRF9DRVJUSUZJQ0FURVMuVkVSSUZJQ0FUSU9OX0NPREUuQ09NUE9ORU5UUy5WRVJJRllfQ09ERSxcbiAgICAgICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFX1RSVVNURURfQ0VSVElGSUNBVEVTLlZFUklGSUNBVElPTl9DT0RFLlJFU1VMVFMuVkVSSUZZX0ZBSUxFRCxcbiAgICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFX1RSVVNURURfQ0VSVElGSUNBVEVTLlZFUklGSUNBVElPTl9DT0RFLkFDVElPTlMuVkVSSUZZXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBkb3dubG9hZFVuc2lnbmVkVmVyaWZpY2F0aW9uQ29kZSh0cnVzdGVkQ2VydGlmaWNhdGU6IElUcnVzdGVkQ2VydGlmaWNhdGUpIHtcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RydXN0ZWRDZXJ0aWZpY2F0ZS5wcm9vZk9mUG9zc2Vzc2lvblVuc2lnbmVkVmVyaWZpY2F0aW9uQ29kZV0pO1xuICAgIGNvbnN0IGZpbGVOYW1lID0gdHJ1c3RlZENlcnRpZmljYXRlLm5hbWU7XG4gICAgc2F2ZUFzKGJsb2IsIGAke2ZpbGVOYW1lfS50eHRgKTtcbiAgfVxuXG4gIGNvcHlVbnNpZ25lZFZlcmlmaWNhdGlvbkNvZGVUb0NsaXBib2FyZCh0cnVzdGVkQ2VydGlmaWNhdGU6IElUcnVzdGVkQ2VydGlmaWNhdGUpIHtcbiAgICB0aGlzLmNsaXBib2FyZFNlcnZpY2Uud3JpdGVUZXh0KHRydXN0ZWRDZXJ0aWZpY2F0ZS5wcm9vZk9mUG9zc2Vzc2lvblVuc2lnbmVkVmVyaWZpY2F0aW9uQ29kZSk7XG4gIH1cblxuICBvbkZpbGVJbnB1dChldmVudCwgdHJ1c3RlZENlcnRpZmljYXRlOiBUcnVzdGVkQ2VydGlmaWNhdGUpIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldDtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICB0cnVzdGVkQ2VydGlmaWNhdGUuc2lnbmVkVmVyaWZpY2F0aW9uQ29kZSA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xuICAgIH07XG4gICAgcmVhZGVyLnJlYWRBc1RleHQoaW5wdXQuZmlsZXNbMF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzaG93TGltaXRhdGlvbkFsZXJ0KCkge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5zeXN0ZW1PcHRpb25zU2VydmljZS5kZXRhaWwoe1xuICAgICAgY2F0ZWdvcnk6ICdzc2wnLFxuICAgICAga2V5OiAnc2hhcmVkLXRydXN0c3RvcmUuZW5hYmxlZCdcbiAgICB9KTtcbiAgICBjb25zdCBzaGFyZWRUcnVzdHN0b3JlRW5hYmxlZCA9IGRhdGEudmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoc2hhcmVkVHJ1c3RzdG9yZUVuYWJsZWQgPT09ICd0cnVlJykge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uud2FybmluZyhcbiAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAnU2hhcmVkIHRydXN0ZWQgY2VydGlmaWNhdGVzIGFyZSBlbmFibGVkIGluIHRoaXMgaW5zdGFuY2UuIERldmljZXMgbWF5IG5vdCBiZSBhYmxlIHRvIGNvbm5lY3QgaWYgY2VydGlmaWNhdGVzIGZyb20gdGhlIHNhbWUgY2hhaW4gYXJlIGRpc3RyaWJ1dGVkIGFjcm9zcyBkaWZmZXJlbnQgdGVuYW50czogTVFUVCBjb25uZWN0aW9ucyB3aWxsIG5vdCBiZSBwb3NzaWJsZSBhbmQgUkVTVCBjb25uZWN0aW9ucyB3aWxsIHJlcXVpcmUgYW4gZXhwbGljaXQgdGVuYW50IElELidcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNoZWNrQ2VydGlmaWNhdGVBdXRob3JpdHlGZWF0dXJlKCkge1xuICAgIHRoaXMuY2VydGlmaWNhdGVBdXRob3JpdHlGZWF0dXJlRW5hYmxlZCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy5mZWF0dXJlQ2FjaGVTZXJ2aWNlLmdldEZlYXR1cmVTdGF0ZSgnY2VydGlmaWNhdGUtYXV0aG9yaXR5JylcbiAgICApO1xuICB9XG59XG4iLCI8Yzh5LXRpdGxlPnt7ICdUcnVzdGVkIGNlcnRpZmljYXRlcycgfCB0cmFuc2xhdGUgfX08L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIGljb249XCJjOHktbWFuYWdlbWVudFwiXG4gICAgbGFiZWw9XCJ7eyAnTWFuYWdlbWVudCcgfCB0cmFuc2xhdGUgfX1cIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIGljb249XCJjZXJ0aWZpY2F0ZVwiXG4gICAgbGFiZWw9XCJ7eyAnVHJ1c3RlZCBjZXJ0aWZpY2F0ZXMnIHwgdHJhbnNsYXRlIH19XCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gICpuZ0lmPVwiY2VydGlmaWNhdGVBdXRob3JpdHlGZWF0dXJlRW5hYmxlZFwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnQWRkIENBIGNlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2Rpc2FibGVkXT1cImNlcnRpZmljYXRlQXV0aG9yaXR5RXhpc3RzXCJcbiAgICAoY2xpY2spPVwiYWRkQ0FDZXJ0aWZpY2F0ZSgpXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJjb250cmFjdFwiPjwvaT5cbiAgICB7eyAnQWRkIENBIGNlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgcG9wb3Zlcj1cInt7XG4gICAgICAnQWRkaW5nIGEgQ0EgY2VydGlmaWNhdGUgbGV0cyB0aGUgYXBwIHRydXN0IGNlcnRpZmljYXRlcyBmcm9tIHRoZSBzcGVjaWZpZWQgYXV0aG9yaXR5LCBlbnN1cmluZyBzZWN1cmUgY29ubmVjdGlvbnMuIE9ubHkgb25lIGNlcnRpZmljYXRlIGlzIGFsbG93ZWQsIHdoaWNoIGlzIHdoeSB0aGUgYnV0dG9uIGlzIGRpc2FibGVkLidcbiAgICAgICAgfCB0cmFuc2xhdGVcbiAgICB9fVwiXG4gICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAqbmdJZj1cImNlcnRpZmljYXRlQXV0aG9yaXR5RXhpc3RzXCJcbiAgPjwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICBwb3BvdmVyPVwie3tcbiAgICAgICdBZGRpbmcgYSBDQSBjZXJ0aWZpY2F0ZSBsZXRzIHRoZSBhcHAgdHJ1c3QgY2VydGlmaWNhdGVzIGZyb20gdGhlIHNwZWNpZmllZCBhdXRob3JpdHksIGVuc3VyaW5nIHNlY3VyZSBjb25uZWN0aW9ucy4nXG4gICAgICAgIHwgdHJhbnNsYXRlXG4gICAgfX1cIlxuICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKm5nSWY9XCIhY2VydGlmaWNhdGVBdXRob3JpdHlFeGlzdHNcIlxuICA+PC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIHRpdGxlPVwie3sgJ0FkZCB0cnVzdGVkIGNlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKGNsaWNrKT1cImFkZFRydXN0ZWRDZXJ0aWZpY2F0ZSgpXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICB7eyAnQWRkIHRydXN0ZWQgY2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdSZWxvYWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAoY2xpY2spPVwibG9hZFRydXN0ZWRDZXJ0aWZpY2F0ZXMoKVwiXG4gID5cbiAgICA8aVxuICAgICAgYzh5SWNvbj1cInJlZnJlc2hcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnaWNvbi1zcGluJzogcmVsb2FkaW5nIHwgYXN5bmMgfVwiXG4gICAgPjwvaT5cbiAgICB7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1oZWxwXG4gIHNyYz1cIi9kb2NzL2RldmljZS1jZXJ0aWZpY2F0ZS1hdXRoZW50aWNhdGlvbi9tYW5hZ2luZy10cnVzdGVkLWNlcnRpZmljYXRlcy8jbWFuYWdpbmctdHJ1c3RlZC1jZXJ0aWZpY2F0ZXNcIlxuPjwvYzh5LWhlbHA+XG5cbjxjOHktdWktZW1wdHktc3RhdGVcbiAgW2ljb25dPVwiJ2NlcnRpZmljYXRlJ1wiXG4gIFt0aXRsZV09XCInTm8gdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgW3N1YnRpdGxlXT1cIidBZGQgeW91ciBmaXJzdCBjZXJ0aWZpY2F0ZSBieSBjbGlja2luZyBiZWxvdy4nIHwgdHJhbnNsYXRlXCJcbiAgKm5nSWY9XCIodHJ1c3RlZENlcnRpZmljYXRlcyB8IGFzeW5jKT8uZGF0YS5sZW5ndGggPT09IDBcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgIHRpdGxlPVwie3sgJ0FkZCB0cnVzdGVkIGNlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKGNsaWNrKT1cImFkZFRydXN0ZWRDZXJ0aWZpY2F0ZSgpXCJcbiAgPlxuICAgIHt7ICdBZGQgdHJ1c3RlZCBjZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS11aS1lbXB0eS1zdGF0ZT5cblxuPGM4eS1saXN0LWdyb3VwIGNsYXNzPVwibS1iLTI0XCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInBhZ2Utc3RpY2t5LWhlYWRlciBoaWRkZW4teHMgYzh5LWxpc3RfX2l0ZW0gYzh5LWxpc3RfX2l0ZW0tLWVtcHR5LWFjdGlvbnNcIlxuICAgICpuZ0lmPVwiKHRydXN0ZWRDZXJ0aWZpY2F0ZXMgfCBhc3luYyk/LmRhdGEubGVuZ3RoID4gMFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2Jsb2NrXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2ljb25cIj5cbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImludmlzaWJsZVwiXG4gICAgICAgICAgYzh5SWNvbj1cImNlcnRpZmljYXRlXCJcbiAgICAgICAgPjwvaT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWZsZXgtNjBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgIHRpdGxlPVwiIHt7ICdDZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGUgfX0gXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0NlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU3RhdHVzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdTdGF0dXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBbGdvcml0aG0nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0FsZ29yaXRobScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0V4cGlyYXRpb24gZGF0ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnRXhwaXJhdGlvbiBkYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCIge3sgJ0F1dG8gcmVnaXN0cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdBdXRvIHJlZ2lzdHJhdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgIHRpdGxlPVwiIHt7ICdQcm9vZiBvZiBwb3NzZXNzaW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdQcm9vZiBvZiBwb3NzZXNzaW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19hY3Rpb25zXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxjOHktbGlcbiAgICAqYzh5Rm9yPVwiXG4gICAgICBsZXQgdHJ1c3RlZENlcnRpZmljYXRlIG9mIHRydXN0ZWRDZXJ0aWZpY2F0ZXMgfCBhc3luYztcbiAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICBwaXBlOiBzb3J0QnlFeHBpcmF0aW9uRGF0ZUFzYztcbiAgICAgIGxvYWRNb3JlOiAnbm9uZSdcbiAgICBcIlxuICAgICNsaXN0SXRlbVxuICAgIGRhdGEtY3k9XCJjOHktdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMtbGlzdC0taXRlbS1ibG9ja1wiXG4gID5cbiAgICA8Yzh5LWxpLWljb24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuXCJcbiAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgJ0NlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHRvb2x0aXA9XCJ7eyAnQ2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAqbmdJZj1cIiF0cnVzdGVkQ2VydGlmaWNhdGUudGVuYW50Q2VydGlmaWNhdGVBdXRob3JpdHlcIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwiY2VydGlmaWNhdGVcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4tY2xlYW5cIlxuICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyAnQ0EgY2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgdG9vbHRpcD1cInt7ICdDQSBjZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICpuZ0lmPVwidHJ1c3RlZENlcnRpZmljYXRlLnRlbmFudENlcnRpZmljYXRlQXV0aG9yaXR5XCJcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cImNvbnRyYWN0XCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9jOHktbGktaWNvbj5cblxuICAgIDxjOHktbGktYm9keSBjbGFzcz1cImNvbnRlbnQtZmxleC02MFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0bi1jbGVhbiB0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICB0aXRsZT1cInt7IHRydXN0ZWRDZXJ0aWZpY2F0ZS5uYW1lIH19XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwibGlzdEl0ZW0udG9nZ2xlQ29sbGFwc2VkKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgdHJ1c3RlZENlcnRpZmljYXRlLm5hbWUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidmlzaWJsZS14cyBwLThcIj48L2Rpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGM4eS1idG4tY2hlY2tib3gtLWlubGluZVwiXG4gICAgICAgICAgbmFtZT1cImNlcnRpZmljYXRlU3RhdHVzXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInRydXN0ZWRDZXJ0aWZpY2F0ZS5zdGF0dXNcIlxuICAgICAgICAgIGJ0bkNoZWNrYm94XG4gICAgICAgICAgYnRuQ2hlY2tib3hUcnVlPVwiRU5BQkxFRFwiXG4gICAgICAgICAgYnRuQ2hlY2tib3hGYWxzZT1cIkRJU0FCTEVEXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVDZXJ0aWZpY2F0ZSh0cnVzdGVkQ2VydGlmaWNhdGUsIHsgc3RhdHVzOiAkZXZlbnQgfSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdEaXNhYmxlZGB0cnVzdGVkIGNlcnRpZmljYXRlIHN0YXR1c2AnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwidHJ1c3RlZENlcnRpZmljYXRlLnN0YXR1cyAhPT0gJ0RJU0FCTEVEJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0Rpc2FibGVkYHRydXN0ZWQgY2VydGlmaWNhdGUgc3RhdHVzYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRW5hYmxlZGB0cnVzdGVkIGNlcnRpZmljYXRlIHN0YXR1c2AnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwidHJ1c3RlZENlcnRpZmljYXRlLnN0YXR1cyAhPT0gJ0VOQUJMRUQnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnRW5hYmxlZGB0cnVzdGVkIGNlcnRpZmljYXRlIHN0YXR1c2AnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2aXNpYmxlLXhzIHAtOFwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAnQWxnb3JpdGhtJyB8IHRyYW5zbGF0ZSB9fToge3sgdHJ1c3RlZENlcnRpZmljYXRlLmFsZ29yaXRobU5hbWUgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXQtOCBtLXItOCB2aXNpYmxlLXhzLWlubGluZVwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBBbGdvcml0aG1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge3sgdHJ1c3RlZENlcnRpZmljYXRlLmFsZ29yaXRobU5hbWUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ0V4cGlyYXRpb24gZGF0ZScgfCB0cmFuc2xhdGUgfX06IHt7IHRydXN0ZWRDZXJ0aWZpY2F0ZS5ub3RBZnRlciB8IGM4eURhdGUgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXQtOCBtLXItOCB2aXNpYmxlLXhzLWlubGluZVwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBFeHBpcmF0aW9uIGRhdGVcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNtYWxsIFtuZ0NsYXNzXT1cImhpZ2hsaWdodERlcGVuZGluZ09uRXhwaXJhdGlvblN0YXR1cyh0cnVzdGVkQ2VydGlmaWNhdGUpXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgICAgICAgICAgYzh5SWNvbj1cImNhbGVuZGFyXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaGlnaGxpZ2h0RGVwZW5kaW5nT25FeHBpcmF0aW9uU3RhdHVzKHRydXN0ZWRDZXJ0aWZpY2F0ZSlcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwibS1yLTRcIlxuICAgICAgICAgICAgICBjOHlJY29uPVwid2FybmluZ1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiaGlnaGxpZ2h0RGVwZW5kaW5nT25FeHBpcmF0aW9uU3RhdHVzKHRydXN0ZWRDZXJ0aWZpY2F0ZSlcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDxzcGFuPnt7IHRydXN0ZWRDZXJ0aWZpY2F0ZS5ub3RBZnRlciB8IGM4eURhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXQtOCBtLXItNCB2aXNpYmxlLXhzLWlubGluZVwiPlxuICAgICAgICAgICAge3sgJ0F1dG8gcmVnaXN0cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQXV0byByZWdpc3RyYXRpb24nIHwgdHJhbnNsYXRlIH19OiAge3tcbiAgICAgICAgICAgICAgJ0VuYWJsZWRgYXV0byByZWdpc3RyYXRpb25gJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgKm5nSWY9XCJ0cnVzdGVkQ2VydGlmaWNhdGUuYXV0b1JlZ2lzdHJhdGlvbkVuYWJsZWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdFbmFibGVkYGF1dG8gcmVnaXN0cmF0aW9uYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0F1dG8gcmVnaXN0cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fTogIHt7XG4gICAgICAgICAgICAgICdEaXNhYmxlZGBhdXRvIHJlZ2lzdHJhdGlvbmAnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAqbmdJZj1cIiF0cnVzdGVkQ2VydGlmaWNhdGUuYXV0b1JlZ2lzdHJhdGlvbkVuYWJsZWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdEaXNhYmxlZGBhdXRvIHJlZ2lzdHJhdGlvbmAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIHBvcG92ZXI9XCJ7eyBBVVRPX1JFR0lTVFJBVElPTl9QT1BPVkVSIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMiBkLWZsZXhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGwgbS10LTggbS1yLTQgdmlzaWJsZS14cy1pbmxpbmVcIj5cbiAgICAgICAgICAgIHt7ICdQcm9vZiBvZiBwb3NzZXNzaW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnUHJvb2Ygb2YgcG9zc2Vzc2lvbicgfCB0cmFuc2xhdGUgfX06IHt7ICdOL0EnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICpuZ0lmPVwidHJ1c3RlZENlcnRpZmljYXRlLnRlbmFudENlcnRpZmljYXRlQXV0aG9yaXR5XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnTi9BJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0cnVzdGVkQ2VydGlmaWNhdGUudGVuYW50Q2VydGlmaWNhdGVBdXRob3JpdHlcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1Byb29mIG9mIHBvc3Nlc3Npb24nIHwgdHJhbnNsYXRlIH19OiAge3tcbiAgICAgICAgICAgICAgICAnQ29tcGxldGVgcHJvb2Ygb2YgcG9zc2Vzc2lvbmAnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0cnVzdGVkQ2VydGlmaWNhdGUucHJvb2ZPZlBvc3Nlc3Npb25WYWxpZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgICAgYzh5SWNvbj1cInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0NvbXBsZXRlYHByb29mIG9mIHBvc3Nlc3Npb25gJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1Byb29mIG9mIHBvc3Nlc3Npb24nIHwgdHJhbnNsYXRlIH19OiAge3tcbiAgICAgICAgICAgICAgICAnSW5jb21wbGV0ZWBwcm9vZiBvZiBwb3NzZXNzaW9uYCcgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAqbmdJZj1cIiF0cnVzdGVkQ2VydGlmaWNhdGUucHJvb2ZPZlBvc3Nlc3Npb25WYWxpZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXdhcm5pbmdcIlxuICAgICAgICAgICAgICAgICAgYzh5SWNvbj1cIndhcm5pbmdcIlxuICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0luY29tcGxldGVgcHJvb2Ygb2YgcG9zc2Vzc2lvbmAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cIm0tbC1hdXRvIGJ0bi1kb3QgYnRuLWRvdC0tZGFuZ2VyIGJ0biBzaG93T25Ib3ZlciBtLXItOFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRGVsZXRlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgdG9vbHRpcD1cInt7ICdEZWxldGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgZGF0YS1jeT1cImM4eS10cnVzdGVkLWNlcnRpZmljYXRlLS1kZWxldGVcIlxuICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgIChjbGljayk9XCJkZWxldGVUcnVzdGVkQ2VydGlmaWNhdGUodHJ1c3RlZENlcnRpZmljYXRlKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjOHlJY29uPVwiZGVsZXRlXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYzh5LWxpLWJvZHk+XG5cbiAgICA8Yzh5LWxpLWNvbGxhcHNlPlxuICAgICAgPGRpdiBjbGFzcz1cInAtdC0xNiBwLWItMTZcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAge3sgJ0NlcnRpZmljYXRlIG5hbWUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1lZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgIGRhdGEtY3k9XCJjOHktdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMtLWVkaXQtY2VydGlmaWNhdGUtbmFtZVwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRydXN0ZWRDZXJ0aWZpY2F0ZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnVXBkYXRlIGNlcnRpZmljYXRlIG5hbWUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDZXJ0aWZpY2F0ZSh0cnVzdGVkQ2VydGlmaWNhdGUsIHsgbmFtZTogdHJ1c3RlZENlcnRpZmljYXRlLm5hbWUgfSlcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiF0cnVzdGVkQ2VydGlmaWNhdGUubmFtZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cbiAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb250cm9sLWxhYmVsXCJcbiAgICAgICAgICAgICAgICBmb3I9XCJjZXJ0SW5QZW1Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQ2VydGlmaWNhdGVcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbm8tcmVzaXplXCJcbiAgICAgICAgICAgICAgICBpZD1cImNlcnRJblBlbUZvcm1hdFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImNlcnRJblBlbUZvcm1hdFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHJvd3M9XCI3XCJcbiAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidHJ1c3RlZENlcnRpZmljYXRlLmNlcnRJblBlbUZvcm1hdFwiXG4gICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0F1dG8gcmVnaXN0cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRydXN0ZWRDZXJ0aWZpY2F0ZS5hdXRvUmVnaXN0cmF0aW9uRW5hYmxlZFwiXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ2VydGlmaWNhdGUodHJ1c3RlZENlcnRpZmljYXRlLCB7IGF1dG9SZWdpc3RyYXRpb25FbmFibGVkOiAkZXZlbnQgfSlcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgJ0F1dG8gcmVnaXN0cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBwb3BvdmVyPVwie3sgQVVUT19SRUdJU1RSQVRJT05fUE9QT1ZFUiB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrXCJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFkZGl0aW9uYWwgcHJvcGVydGllc1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCI+XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtdC00IHAtYi00IGQtZmxleCBzZXBhcmF0b3ItYm90dG9tIGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInNtYWxsIG0tYi0wIG0tci04IGEtcy1zdGFydCBmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdBbGdvcml0aG0nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tbC1hdXRvIHRleHQtYnJlYWstd29yZFwiPlxuICAgICAgICAgICAgICAgICAge3sgdHJ1c3RlZENlcnRpZmljYXRlLmFsZ29yaXRobU5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtdC00IHAtYi00IGQtZmxleCBzZXBhcmF0b3ItYm90dG9tIGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInNtYWxsIG0tYi0wIG0tci04IGEtcy1zdGFydCBmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdWZXJzaW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtYXV0byB0ZXh0LWJyZWFrLXdvcmRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHRydXN0ZWRDZXJ0aWZpY2F0ZS52ZXJzaW9uIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwLXQtNCBwLWItNCBkLWZsZXggc2VwYXJhdG9yLWJvdHRvbSBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzbWFsbCBtLWItMCBtLXItOCBhLXMtc3RhcnQgZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgICAgICB7eyAnVmFsaWQgZnJvbScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1sLWF1dG8gdGV4dC1icmVhay13b3JkXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0cnVzdGVkQ2VydGlmaWNhdGUubm90QmVmb3JlIHwgYzh5RGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC10LTQgcC1iLTQgZC1mbGV4IHNlcGFyYXRvci1ib3R0b20gZmxleC13cmFwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic21hbGwgbS1iLTAgbS1yLTggYS1zLXN0YXJ0IGZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgICAgICAge3sgJ0lzc3VlcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1sLWF1dG8gdGV4dC1icmVhay13b3JkXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0cnVzdGVkQ2VydGlmaWNhdGUuaXNzdWVyIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwLXQtNCBwLWItNCBkLWZsZXggc2VwYXJhdG9yLWJvdHRvbSBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzbWFsbCBtLWItMCBtLXItOCBhLXMtc3RhcnQgZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgICAgICB7eyAnRXhwaXJhdGlvbiBkYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtYXV0byB0ZXh0LWJyZWFrLXdvcmRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHRydXN0ZWRDZXJ0aWZpY2F0ZS5ub3RBZnRlciB8IGM4eURhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtdC00IHAtYi00IGQtZmxleCBzZXBhcmF0b3ItYm90dG9tIGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInNtYWxsIG0tYi0wIG0tci04IGEtcy1zdGFydCBmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdTZXJpYWwgbnVtYmVyJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtYXV0byB0ZXh0LWJyZWFrLXdvcmRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHRydXN0ZWRDZXJ0aWZpY2F0ZS5zZXJpYWxOdW1iZXIgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtdC00IHAtYi00IGQtZmxleCBzZXBhcmF0b3ItYm90dG9tIGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInNtYWxsIG0tYi0wIG0tci04IGEtcy1zdGFydCBmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdTdWJqZWN0YG9mIGEgY2VydGlmaWNhdGVgJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtYXV0byB0ZXh0LWJyZWFrLXdvcmRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHRydXN0ZWRDZXJ0aWZpY2F0ZS5zdWJqZWN0IH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNvbC1tZC03XCJcbiAgICAgICAgICAgICpuZ0lmPVwiIXRydXN0ZWRDZXJ0aWZpY2F0ZS50ZW5hbnRDZXJ0aWZpY2F0ZUF1dGhvcml0eVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrXCI+XG4gICAgICAgICAgICAgIHt7ICdQcm9vZiBvZiBwb3NzZXNzaW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBwb3BvdmVyPVwie3sgUFJPT0ZfT0ZfUE9TU0VTU0lPTl9QT1BPVkVSIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRydXN0ZWRDZXJ0aWZpY2F0ZS5wcm9vZk9mUG9zc2Vzc2lvblZhbGlkXCI+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLWZsZXhcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1Byb29mIG9mIHBvc3Nlc3Npb24nIHwgdHJhbnNsYXRlIH19OiAge3tcbiAgICAgICAgICAgICAgICAgICdDb21wbGV0ZWBwcm9vZiBvZiBwb3NzZXNzaW9uYCcgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgICAgYzh5SWNvbj1cInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0NvbXBsZXRlYHByb29mIG9mIHBvc3Nlc3Npb25gJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhdHJ1c3RlZENlcnRpZmljYXRlLnByb29mT2ZQb3NzZXNzaW9uVmFsaWRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtLWItMTZcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1mbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnUHJvb2Ygb2YgcG9zc2Vzc2lvbicgfCB0cmFuc2xhdGUgfX06ICB7e1xuICAgICAgICAgICAgICAgICAgICAgICdJbmNvbXBsZXRlYHByb29mIG9mIHBvc3Nlc3Npb25gJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXdhcm5pbmdcIlxuICAgICAgICAgICAgICAgICAgICAgIGM4eUljb249XCJ3YXJuaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0luY29tcGxldGVgcHJvb2Ygb2YgcG9zc2Vzc2lvbmAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1sZy02IHRleHQtcmlnaHQtbWRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXItNFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnVmVyaWZpY2F0aW9uIGNvZGUgZXhwaXJlcy9leHBpcmVkIG9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgKHRydXN0ZWRDZXJ0aWZpY2F0ZS5wcm9vZk9mUG9zc2Vzc2lvblZlcmlmaWNhdGlvbkNvZGVVc2FibGVVbnRpbCB8IGM4eURhdGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgJy0tLSdcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1sZy02XCI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgZm9yPVwidW5zaWduZWRWZXJpZmljYXRpb25Db2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIFZlcmlmaWNhdGlvbiBjb2RlXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIG5vLXJlc2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ1bnNpZ25lZFZlcmlmaWNhdGlvbkNvZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ1bnNpZ25lZFZlcmlmaWNhdGlvbkNvZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICByb3dzPVwiNVwiXG4gICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRydXN0ZWRDZXJ0aWZpY2F0ZS5wcm9vZk9mUG9zc2Vzc2lvblVuc2lnbmVkVmVyaWZpY2F0aW9uQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnUmVnZW5lcmF0ZSB2ZXJpZmljYXRpb24gY29kZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWdlbmVyYXRlVW5zaWduZWRWZXJpZmljYXRpb25Db2RlKHRydXN0ZWRDZXJ0aWZpY2F0ZSlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ1JlZ2VuZXJhdGVgdmVyaWZpY2F0aW9uIGNvZGVgJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1kZWZhdWx0IG0tbC1hdXRvIG0tci0wXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDb3B5IHRvIGNsaXBib2FyZCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA9XCJ7eyAnQ29weSB0byBjbGlwYm9hcmQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1jeT1cImM4eS10cnVzdGVkLWNlcnRpZmljYXRlcy0tY29weS10by1jbGlwYm9hcmRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhdHJ1c3RlZENlcnRpZmljYXRlLnByb29mT2ZQb3NzZXNzaW9uVW5zaWduZWRWZXJpZmljYXRpb25Db2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29weVVuc2lnbmVkVmVyaWZpY2F0aW9uQ29kZVRvQ2xpcGJvYXJkKHRydXN0ZWRDZXJ0aWZpY2F0ZSlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImNsaXBib2FyZFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0Rvd25sb2FkIGFzIGZpbGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwPVwie3sgJ0Rvd25sb2FkIGFzIGZpbGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLWN5PVwiYzh5LXRydXN0ZWQtY2VydGlmaWNhdGVzLS1kb3dubG9hZC1hcy1maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXRydXN0ZWRDZXJ0aWZpY2F0ZS5wcm9vZk9mUG9zc2Vzc2lvblVuc2lnbmVkVmVyaWZpY2F0aW9uQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkVW5zaWduZWRWZXJpZmljYXRpb25Db2RlKHRydXN0ZWRDZXJ0aWZpY2F0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICAgICAgICAgICAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5UXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5WRVJJRklDQVRJT05fQ09ERS5DT01QT05FTlRTLkRPV05MT0FEX0NPREUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5WRVJJRklDQVRJT05fQ09ERS5BQ1RJT05TLkRPV05MT0FEXG4gICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiZG93bmxvYWRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLWxnLTZcIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb250cm9sLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJzaWduZWRWZXJpZmljYXRpb25Db2RlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdTaWduZWQgdmVyaWZpY2F0aW9uIGNvZGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7IFNJR05FRF9WRVJJRklDQVRJT05fQ09ERV9QT1BPVkVSIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1jeT1cImM4eS10cnVzdGVkLWNlcnRpZmljYXRlcy0tc2lnbmVkLXZlcmlmaWNhdGlvbi1jb2RlLXBvcHVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvdXRzaWRlQ2xpY2tdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBuby1yZXNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwic2lnbmVkVmVyaWZpY2F0aW9uQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNpZ25lZFZlcmlmaWNhdGlvbkNvZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICByb3dzPVwiNVwiXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0cnVzdGVkQ2VydGlmaWNhdGUuc2lnbmVkVmVyaWZpY2F0aW9uQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnVmVyaWZ5IHNpZ25lZCB2ZXJpZmljYXRpb24gY29kZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2ZXJpZnlTaWduZWRWZXJpZmljYXRpb25Db2RlKHRydXN0ZWRDZXJ0aWZpY2F0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhdHJ1c3RlZENlcnRpZmljYXRlLnNpZ25lZFZlcmlmaWNhdGlvbkNvZGVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ1ZlcmlmeWBzaWduZWQgdmVyaWZpY2F0aW9uIGNvZGVgJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGVmYXVsdCBtLWwtYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInVXBsb2FkIGZpbGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwPVwie3sgJ1VwbG9hZCBmaWxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJ1cGxvYWRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZUlucHV0KCRldmVudCwgdHJ1c3RlZENlcnRpZmljYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2M4eS1saS1jb2xsYXBzZT5cbiAgPC9jOHktbGk+XG48L2M4eS1saXN0LWdyb3VwPlxuIl19
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1jZXJ0aWZpY2F0ZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RydXN0ZWQtY2VydGlmaWNhdGVzL2xpc3QvdHJ1c3RlZC1jZXJ0aWZpY2F0ZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3RydXN0ZWQtY2VydGlmaWNhdGVzL2xpc3QvdHJ1c3RlZC1jZXJ0aWZpY2F0ZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUNMLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBRW5CLGdCQUFnQixFQUNoQixPQUFPLEVBQ1AsWUFBWSxFQUNaLE1BQU0sRUFDUCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBR0wsb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUMxQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBYyxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFDTCx1Q0FBdUMsRUFFeEMsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7QUFNckMsTUFBTSxPQUFPLCtCQUErQjtJQXlDMUMsWUFDVSxPQUF1QixFQUN2QixZQUEwQixFQUMxQix5QkFBb0QsRUFDcEQsWUFBMEIsRUFDMUIsZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDbEMsb0JBQTBDLEVBQzFDLG1CQUF3QztRQVJ4QyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQWpEbEQsZ0NBQTJCLEdBQUcsT0FBTyxDQUNuQyxzSkFBc0osQ0FDdkosQ0FBQztRQUNGLHFDQUFnQyxHQUFHLE9BQU8sQ0FDeEMsZ0tBQWdLLENBQ2pLLENBQUM7UUFFRiw4QkFBeUIsR0FBRyxPQUFPLENBQ2pDLHFOQUFxTixDQUN0TixDQUFDO1FBRUYsY0FBUyxHQUE2QixJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxXQUFNLEdBQTBCLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELHdCQUFtQixHQUFpRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbEYsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ3BDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxFQUM5QyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDWixJQUFJLENBQUMsMEJBQTBCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ2pELEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUMxQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ3JDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBQ0YsNEJBQXVCLEdBQXlDLElBQUksQ0FDbEUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1osT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO2dCQUM3QixJQUFJLEVBQUUsQ0FBQywwQkFBMEIsS0FBSyxFQUFFLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztvQkFDcEUsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hELENBQUM7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsK0JBQTBCLEdBQUcsS0FBSyxDQUFDO1FBRW5DLHVCQUFrQixHQUFHLHVDQUF1QyxDQUFDO1FBQzdELHVDQUFrQyxHQUFHLEtBQUssQ0FBQztJQVl4QyxDQUFDO0lBRUosS0FBSyxDQUFDLFFBQVE7UUFDWixNQUFNLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixNQUFNLE1BQU0sR0FBVztZQUNyQixRQUFRLEVBQUUsSUFBSTtZQUNkLGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELEtBQUssQ0FBQyxxQkFBcUI7UUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUU7WUFDOUQsS0FBSyxFQUFFLFVBQVU7WUFDakIsZUFBZSxFQUFFLGdDQUFnQztZQUNqRCxjQUFjLEVBQUUsMEJBQTBCO1lBQzFDLG1CQUFtQixFQUFFLElBQUk7WUFDekIsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFDLE9BQXlDLENBQUM7UUFDN0MsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ25CLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDWixhQUFhO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLDRCQUE0QixFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQywwQkFBMEIsQ0FBQztRQUNwRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNoRyxNQUFNLGdCQUFnQixHQUFHLElBQUk7WUFDM0IsQ0FBQyxDQUFDLE9BQU8sQ0FDTCx5TUFBeU0sQ0FDMU07WUFDSCxDQUFDLENBQUMsT0FBTyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7UUFDdEYsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDekQsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQUN6QyxNQUFNLElBQUksR0FBRztZQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQzlDLGVBQWU7YUFDaEIsQ0FBQztZQUNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1NBQzdDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRVosSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2RixNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsdUNBQXVDLENBQUMsS0FBSyxFQUFFO2dCQUNoRixTQUFTLEVBQ1AsdUNBQXVDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUI7Z0JBQ3JGLE1BQU0sRUFBRSx1Q0FBdUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWM7Z0JBQ25GLE1BQU0sRUFBRSx1Q0FBdUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU07YUFDNUUsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLENBQUM7UUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FDckIsa0JBQXVDLEVBQ3ZDLFlBQTBDO1FBRTFDLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQztnQkFDMUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLFdBQVc7Z0JBQzNDLEdBQUcsWUFBWTthQUNoQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLHVDQUF1QyxDQUFDLEtBQUssRUFBRTtnQkFDaEYsU0FBUyxFQUNQLHVDQUF1QyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsbUJBQW1CO2dCQUNyRixNQUFNLEVBQUUsdUNBQXVDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjO2dCQUNuRixNQUFNLEVBQUUsdUNBQXVDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2FBQzVFLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRUQsb0NBQW9DLENBQUMsSUFBeUI7UUFDNUQsTUFBTSxhQUFhLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFVBQVU7UUFDMUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1QyxNQUFNLGdCQUFnQixHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsYUFBYSxDQUFDO1FBQzlELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVELE1BQU0sT0FBTyxHQUFHLGlCQUFpQixHQUFHLGNBQWMsQ0FBQztRQUNuRCxNQUFNLHVCQUF1QixHQUFHLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQ3JFLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO1FBQ0QsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1lBQzVCLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxrQ0FBa0MsQ0FBQyxrQkFBdUM7UUFDeEUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLDZCQUE2QixDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUNuRixDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUNYLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLHVDQUF1QyxDQUFDLEtBQUssRUFBRTtnQkFDaEYsU0FBUyxFQUNQLHVDQUF1QyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxlQUFlO2dCQUN0RixNQUFNLEVBQ0osdUNBQXVDLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLGtCQUFrQjtnQkFDdEYsTUFBTSxFQUFFLHVDQUF1QyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxVQUFVO2FBQ3JGLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7UUFDdkUsQ0FBQyxFQUNELEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FDN0MsQ0FBQztJQUNKLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxrQkFBc0M7UUFDakUsSUFBSSxDQUFDLHlCQUF5QjthQUMzQiw0QkFBNEIsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQzthQUMzRixJQUFJLENBQ0gsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDWCxNQUFNLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyx1Q0FBdUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2hGLFNBQVMsRUFDUCx1Q0FBdUMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsV0FBVztnQkFDbEYsTUFBTSxFQUNKLHVDQUF1QyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxjQUFjO2dCQUNsRixNQUFNLEVBQUUsdUNBQXVDLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE1BQU07YUFDakYsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FBQztRQUMzRSxDQUFDLEVBQ0QsRUFBRSxDQUFDLEVBQUU7WUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLHVDQUF1QyxDQUFDLEtBQUssRUFBRTtnQkFDaEYsU0FBUyxFQUNQLHVDQUF1QyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxXQUFXO2dCQUNsRixNQUFNLEVBQUUsdUNBQXVDLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLGFBQWE7Z0JBQ3ZGLE1BQU0sRUFBRSx1Q0FBdUMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsTUFBTTthQUNqRixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELGdDQUFnQyxDQUFDLGtCQUF1QztRQUN0RSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLGtCQUFrQixDQUFDLHlDQUF5QyxDQUFDLENBQUMsQ0FBQztRQUN0RixNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFDekMsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLFFBQVEsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELHVDQUF1QyxDQUFDLGtCQUF1QztRQUM3RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFLLEVBQUUsa0JBQXNDO1FBQ3ZELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNuQixrQkFBa0IsQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMsTUFBZ0IsQ0FBQztRQUN0RSxDQUFDLENBQUM7UUFDRixNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sS0FBSyxDQUFDLG1CQUFtQjtRQUMvQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDO1lBQ3RELFFBQVEsRUFBRSxLQUFLO1lBQ2YsR0FBRyxFQUFFLDJCQUEyQjtTQUNqQyxDQUFDLENBQUM7UUFDSCxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekQsSUFBSSx1QkFBdUIsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FDdkIsT0FBTyxDQUNMLDJRQUEyUSxDQUM1USxDQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxnQ0FBZ0M7UUFDNUMsSUFBSSxDQUFDLGtDQUFrQyxHQUFHLE1BQU0sY0FBYyxDQUM1RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLENBQ2xFLENBQUM7SUFDSixDQUFDOytHQTFQVSwrQkFBK0I7bUdBQS9CLCtCQUErQixnRUNqQzVDLGdoMEJBK3JCQTs7NEZEOXBCYSwrQkFBK0I7a0JBSjNDLFNBQVM7K0JBQ0UsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgQ2xpcGJvYXJkU2VydmljZSxcbiAgRmVhdHVyZUNhY2hlU2VydmljZSxcbiAgRm9yT2ZGaWx0ZXJQaXBlLFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBNb2RhbFNlcnZpY2UsXG4gIFN0YXR1c1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFkZFRydXN0ZWRDZXJ0aWZpY2F0ZUNvbXBvbmVudCB9IGZyb20gJy4vYWRkLXRydXN0ZWQtY2VydGlmaWNhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQge1xuICBJUmVzdWx0TGlzdCxcbiAgSVRydXN0ZWRDZXJ0aWZpY2F0ZSxcbiAgU3lzdGVtT3B0aW9uc1NlcnZpY2UsXG4gIFRydXN0ZWRDZXJ0aWZpY2F0ZVNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgdGFwLCBzd2l0Y2hNYXAsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgcGlwZSwgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBhc3NpZ24gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgUFJPRFVDVF9FWFBFUklFTkNFX1RSVVNURURfQ0VSVElGSUNBVEVTLFxuICBUcnVzdGVkQ2VydGlmaWNhdGVcbn0gZnJvbSAnLi90cnVzdGVkLWNlcnRpZmljYXRlLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXRydXN0ZWQtY2VydGlmaWNhdGVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RydXN0ZWQtY2VydGlmaWNhdGUtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVHJ1c3RlZENlcnRpZmljYXRlTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIFBST09GX09GX1BPU1NFU1NJT05fUE9QT1ZFUiA9IGdldHRleHQoXG4gICAgJ1wiUHJvb2Ygb2YgcG9zc2Vzc2lvblwiIGlzIGEgc2VjdXJpdHkgbWV0aG9kIHVzZWQgdG8gcHJvdmUgdGhhdCB3aG9ldmVyIHNlbmRzIGEgbWVzc2FnZSBpcyBhbHNvIGluIHRoZSBwb3NzZXNzaW9uIG9mIHRoZSBwYXJ0aWN1bGFyIGNyeXB0b2dyYXBoaWMga2V5LidcbiAgKTtcbiAgU0lHTkVEX1ZFUklGSUNBVElPTl9DT0RFX1BPUE9WRVIgPSBnZXR0ZXh0KFxuICAgICdVc2UgdGhlIGZvbGxvd2luZyBvcGVuc3NsIGNvbW1hbmQgdG8gY3JlYXRlIHRoZSBzaWduZWQgdmVyaWZpY2F0aW9uIGNvZGU6IG9wZW5zc2wgZGdzdCAtc2hhMjU2IC1zaWduIDxwcml2YXRlLmtleT4gPHZlcmlmaWNhdGlvbl9jb2RlLnR4dD4gfCBvcGVuc3NsIGJhc2U2NCAtQSdcbiAgKTtcblxuICBBVVRPX1JFR0lTVFJBVElPTl9QT1BPVkVSID0gZ2V0dGV4dChcbiAgICAnRGV2aWNlcyB1c2luZyB0aGUgTVFUVCBwcm90b2NvbCB3aXRoIGNyZWRlbnRpYWxzIHNpZ25lZCBieSB0aGlzIGNlcnRpZmljYXRlIHdpbGwgYmUgYWJsZSB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBwbGF0Zm9ybSB3aXRob3V0IHByaW9yIHJlZ2lzdHJhdGlvbi4gVGhlIG9wdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGRldmljZXMgdXNpbmcgdGhlIExXTTJNIHByb3RvY29sLidcbiAgKTtcblxuICByZWxvYWRpbmc6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICByZWxvYWQ6IEJlaGF2aW9yU3ViamVjdDx2b2lkPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIHRydXN0ZWRDZXJ0aWZpY2F0ZXM6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SVRydXN0ZWRDZXJ0aWZpY2F0ZT4+ID0gdGhpcy5yZWxvYWQucGlwZShcbiAgICB0YXAoKCkgPT4gdGhpcy5yZWxvYWRpbmcubmV4dCh0cnVlKSksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZ2V0VHJ1c3RlZENlcnRpZmljYXRlcygpKSxcbiAgICB0YXAocmVwb25zZSA9PiB7XG4gICAgICB0aGlzLmNlcnRpZmljYXRlQXV0aG9yaXR5RXhpc3RzID0gcmVwb25zZS5kYXRhLnNvbWUoXG4gICAgICAgIHZhbHVlID0+IHZhbHVlLnRlbmFudENlcnRpZmljYXRlQXV0aG9yaXR5XG4gICAgICApO1xuICAgIH0pLFxuICAgIHRhcCgoKSA9PiB0aGlzLnJlbG9hZGluZy5uZXh0KGZhbHNlKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcbiAgc29ydEJ5RXhwaXJhdGlvbkRhdGVBc2M6IEZvck9mRmlsdGVyUGlwZTxJVHJ1c3RlZENlcnRpZmljYXRlPiA9IHBpcGUoXG4gICAgdGFwKHJlc3VsdHMgPT4ge1xuICAgICAgcmV0dXJuIHJlc3VsdHMuc29ydCgobjEsIG4yKSA9PiB7XG4gICAgICAgIGlmIChuMS50ZW5hbnRDZXJ0aWZpY2F0ZUF1dGhvcml0eSAhPT0gbjIudGVuYW50Q2VydGlmaWNhdGVBdXRob3JpdHkpIHtcbiAgICAgICAgICByZXR1cm4gbjEudGVuYW50Q2VydGlmaWNhdGVBdXRob3JpdHkgPyAtMSA6IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG4xLm5vdEFmdGVyLmxvY2FsZUNvbXBhcmUobjIubm90QWZ0ZXIpO1xuICAgICAgfSk7XG4gICAgfSlcbiAgKTtcblxuICBjZXJ0aWZpY2F0ZUF1dGhvcml0eUV4aXN0cyA9IGZhbHNlO1xuICBzaWduZWRWZXJpZmljYXRpb25Db2RlOiBzdHJpbmc7XG4gIFBST0RVQ1RfRVhQRVJJRU5DRSA9IFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUztcbiAgY2VydGlmaWNhdGVBdXRob3JpdHlGZWF0dXJlRW5hYmxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYnNNb2RhbDogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHRydXN0ZWRDZXJ0aWZpY2F0ZVNlcnZpY2U6IFRydXN0ZWRDZXJ0aWZpY2F0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjbGlwYm9hcmRTZXJ2aWNlOiBDbGlwYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbU9wdGlvbnNTZXJ2aWNlOiBTeXN0ZW1PcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGZlYXR1cmVDYWNoZVNlcnZpY2U6IEZlYXR1cmVDYWNoZVNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGF3YWl0IHRoaXMubG9hZFRydXN0ZWRDZXJ0aWZpY2F0ZXMoKTtcbiAgICB0aGlzLnNob3dMaW1pdGF0aW9uQWxlcnQoKTtcbiAgICB0aGlzLmNoZWNrQ2VydGlmaWNhdGVBdXRob3JpdHlGZWF0dXJlKCk7XG4gIH1cblxuICBhc3luYyBsb2FkVHJ1c3RlZENlcnRpZmljYXRlcygpIHtcbiAgICB0aGlzLnJlbG9hZC5uZXh0KCk7XG4gIH1cblxuICBnZXRUcnVzdGVkQ2VydGlmaWNhdGVzKCkge1xuICAgIGNvbnN0IGZpbHRlcjogb2JqZWN0ID0ge1xuICAgICAgcGFnZVNpemU6IDEwMDAsXG4gICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMudHJ1c3RlZENlcnRpZmljYXRlU2VydmljZS5saXN0KGZpbHRlcik7XG4gIH1cblxuICBhc3luYyBhZGRUcnVzdGVkQ2VydGlmaWNhdGUoKSB7XG4gICAgY29uc3QgbW9kYWwgPSB0aGlzLmJzTW9kYWwuc2hvdyhBZGRUcnVzdGVkQ2VydGlmaWNhdGVDb21wb25lbnQsIHtcbiAgICAgIGNsYXNzOiAnbW9kYWwtc20nLFxuICAgICAgYXJpYURlc2NyaWJlZGJ5OiAnYWRkQ2VydGlmaWNhdGVNb2RhbERlc2NyaXB0aW9uJyxcbiAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnYWRkQ2VydGlmaWNhdGVNb2RhbFRpdGxlJyxcbiAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUsXG4gICAgICBrZXlib2FyZDogZmFsc2VcbiAgICB9KS5jb250ZW50IGFzIEFkZFRydXN0ZWRDZXJ0aWZpY2F0ZUNvbXBvbmVudDtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbW9kYWwucmVzdWx0O1xuICAgICAgbW9kYWwuY2xvc2UoKTtcbiAgICAgIHRoaXMucmVsb2FkLm5leHQoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGFkZENBQ2VydGlmaWNhdGUoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMudHJ1c3RlZENlcnRpZmljYXRlU2VydmljZS5nZW5lcmF0ZUNlcnRpZmljYXRlQXV0aG9yaXR5KCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5jcmVhdGVTdWNjZXNzKCdDZXJ0aWZpY2F0ZSBhdXRob3JpdHknKTtcbiAgICAgIHRoaXMucmVsb2FkLm5leHQoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlVHJ1c3RlZENlcnRpZmljYXRlKGNlcnRpZmljYXRlKSB7XG4gICAgY29uc3QgaXNDQSA9IGNlcnRpZmljYXRlLnRlbmFudENlcnRpZmljYXRlQXV0aG9yaXR5O1xuICAgIGNvbnN0IHRpdGxlID0gaXNDQSA/IGdldHRleHQoJ0RlbGV0ZSBDQSBjZXJ0aWZpY2F0ZT8nKSA6IGdldHRleHQoJ0RlbGV0ZSB0cnVzdGVkIGNlcnRpZmljYXRlPycpO1xuICAgIGNvbnN0IGNvbmZpcm1hdGlvblRleHQgPSBpc0NBXG4gICAgICA/IGdldHRleHQoXG4gICAgICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKENBKSBjZXJ0aWZpY2F0ZSBmb3IgdGhpcyB0ZW5hbnQuIEFueSBkZXZpY2UgZW5yb2xsZWQgdXNpbmcgdGhpcyBDQSBjZXJ0aWZpY2F0ZSBmb3IgYXV0aGVudGljYXRpb24gd2lsbCBubyBsb25nZXIgYmUgYWJsZSB0byBjb25uZWN0IHRvIHRoZSBwbGF0Zm9ybS4nXG4gICAgICAgIClcbiAgICAgIDogZ2V0dGV4dCgnWW91IGFyZSBhYm91dCB0byBkZWxldGUgYSB0cnVzdGVkIGNlcnRpZmljYXRlIFwie3sgY2VydGlmaWNhdGVOYW1lIH19XCIuJyk7XG4gICAgY29uc3QgZmluYWxRdWVzdGlvbiA9IGdldHRleHQoJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/Jyk7XG4gICAgY29uc3QgY2VydGlmaWNhdGVOYW1lID0gY2VydGlmaWNhdGUubmFtZTtcbiAgICBjb25zdCBib2R5ID0gW1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoY29uZmlybWF0aW9uVGV4dCwge1xuICAgICAgICBjZXJ0aWZpY2F0ZU5hbWVcbiAgICAgIH0pLFxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZmluYWxRdWVzdGlvbilcbiAgICBdLmpvaW4oJyAnKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtKHRpdGxlLCBib2R5LCBTdGF0dXMuREFOR0VSLCB7IG9rOiBnZXR0ZXh0KCdEZWxldGUnKSB9KTtcbiAgICAgIGF3YWl0IHRoaXMudHJ1c3RlZENlcnRpZmljYXRlU2VydmljZS5kZWxldGUoY2VydGlmaWNhdGUuZmluZ2VycHJpbnQpO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0VfVFJVU1RFRF9DRVJUSUZJQ0FURVMuRVZFTlQsIHtcbiAgICAgICAgY29tcG9uZW50OlxuICAgICAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5DRVJUSUZJQ0FURVMuQ09NUE9ORU5UUy5UUlVTVEVEX0NFUlRJRklDQVRFLFxuICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5DRVJUSUZJQ0FURVMuUkVTVUxUUy5ERUxFVEVfU1VDQ0VTUyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0VfVFJVU1RFRF9DRVJUSUZJQ0FURVMuQ0VSVElGSUNBVEVTLkFDVElPTlMuREVMRVRFXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnQ2VydGlmaWNhdGUgZGVsZXRlZC4nKSk7XG4gICAgICB0aGlzLnJlbG9hZC5uZXh0KCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUNlcnRpZmljYXRlKFxuICAgIHRydXN0ZWRDZXJ0aWZpY2F0ZTogSVRydXN0ZWRDZXJ0aWZpY2F0ZSxcbiAgICB1cGRhdGluZ1BhcnQ6IFBhcnRpYWw8SVRydXN0ZWRDZXJ0aWZpY2F0ZT5cbiAgKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMudHJ1c3RlZENlcnRpZmljYXRlU2VydmljZS51cGRhdGUoe1xuICAgICAgICBmaW5nZXJwcmludDogdHJ1c3RlZENlcnRpZmljYXRlLmZpbmdlcnByaW50LFxuICAgICAgICAuLi51cGRhdGluZ1BhcnRcbiAgICAgIH0pO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0VfVFJVU1RFRF9DRVJUSUZJQ0FURVMuRVZFTlQsIHtcbiAgICAgICAgY29tcG9uZW50OlxuICAgICAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5DRVJUSUZJQ0FURVMuQ09NUE9ORU5UUy5UUlVTVEVEX0NFUlRJRklDQVRFLFxuICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5DRVJUSUZJQ0FURVMuUkVTVUxUUy5VUERBVEVfU1VDQ0VTUyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0VfVFJVU1RFRF9DRVJUSUZJQ0FURVMuQ0VSVElGSUNBVEVTLkFDVElPTlMuVVBEQVRFXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnQ2VydGlmaWNhdGUgc2F2ZWQuJykpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICB9XG4gIH1cblxuICBoaWdobGlnaHREZXBlbmRpbmdPbkV4cGlyYXRpb25TdGF0dXMoaXRlbTogSVRydXN0ZWRDZXJ0aWZpY2F0ZSkge1xuICAgIGNvbnN0IHdhcm5pbmdPZmZzZXQgPSAyNCAqIDYwICogNjAgKiAxMDAwICogOTA7IC8vIDkwIGRheXNcbiAgICBjb25zdCB0b2RheVRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IHdhcm5pbmdUaW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIHdhcm5pbmdPZmZzZXQ7XG4gICAgY29uc3Qgbm90QWZ0ZXJUaW1lc3RhbXAgPSBuZXcgRGF0ZShpdGVtLm5vdEFmdGVyKS5nZXRUaW1lKCk7XG4gICAgY29uc3QgZXhwaXJlZCA9IG5vdEFmdGVyVGltZXN0YW1wIDwgdG9kYXlUaW1lc3RhbXA7XG4gICAgY29uc3QgZXhwaXJlc0luTGVzc1RoYW45MERheXMgPSBub3RBZnRlclRpbWVzdGFtcCA8IHdhcm5pbmdUaW1lc3RhbXA7XG4gICAgaWYgKGV4cGlyZWQpIHtcbiAgICAgIHJldHVybiAndGV4dC1kYW5nZXInO1xuICAgIH1cbiAgICBpZiAoZXhwaXJlc0luTGVzc1RoYW45MERheXMpIHtcbiAgICAgIHJldHVybiAndGV4dC13YXJuaW5nJztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmVnZW5lcmF0ZVVuc2lnbmVkVmVyaWZpY2F0aW9uQ29kZSh0cnVzdGVkQ2VydGlmaWNhdGU6IElUcnVzdGVkQ2VydGlmaWNhdGUpIHtcbiAgICB0aGlzLnRydXN0ZWRDZXJ0aWZpY2F0ZVNlcnZpY2UucmVnZW5lcmF0ZVBvUFZlcmlmaWNhdGlvbkNvZGUodHJ1c3RlZENlcnRpZmljYXRlKS50aGVuKFxuICAgICAgKHsgZGF0YSB9KSA9PiB7XG4gICAgICAgIGFzc2lnbih0cnVzdGVkQ2VydGlmaWNhdGUsIGRhdGEpO1xuICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5FVkVOVCwge1xuICAgICAgICAgIGNvbXBvbmVudDpcbiAgICAgICAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5WRVJJRklDQVRJT05fQ09ERS5DT01QT05FTlRTLlJFR0VORVJBVEVfQ09ERSxcbiAgICAgICAgICByZXN1bHQ6XG4gICAgICAgICAgICBQUk9EVUNUX0VYUEVSSUVOQ0VfVFJVU1RFRF9DRVJUSUZJQ0FURVMuVkVSSUZJQ0FUSU9OX0NPREUuUkVTVUxUUy5SRUdFTkVSQVRFX1NVQ0NFU1MsXG4gICAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0VfVFJVU1RFRF9DRVJUSUZJQ0FURVMuVkVSSUZJQ0FUSU9OX0NPREUuQUNUSU9OUy5SRUdFTkVSQVRFXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ1ZlcmlmaWNhdGlvbiBjb2RlIHJlZ2VuZXJhdGVkLicpKTtcbiAgICAgIH0sXG4gICAgICBleCA9PiB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGV4KVxuICAgICk7XG4gIH1cblxuICB2ZXJpZnlTaWduZWRWZXJpZmljYXRpb25Db2RlKHRydXN0ZWRDZXJ0aWZpY2F0ZTogVHJ1c3RlZENlcnRpZmljYXRlKSB7XG4gICAgdGhpcy50cnVzdGVkQ2VydGlmaWNhdGVTZXJ2aWNlXG4gICAgICAudmVyaWZ5U2lnbmVkVmVyaWZpY2F0aW9uQ29kZSh0cnVzdGVkQ2VydGlmaWNhdGUsIHRydXN0ZWRDZXJ0aWZpY2F0ZS5zaWduZWRWZXJpZmljYXRpb25Db2RlKVxuICAgICAgLnRoZW4oXG4gICAgICAgICh7IGRhdGEgfSkgPT4ge1xuICAgICAgICAgIGFzc2lnbih0cnVzdGVkQ2VydGlmaWNhdGUsIGRhdGEpO1xuICAgICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFX1RSVVNURURfQ0VSVElGSUNBVEVTLkVWRU5ULCB7XG4gICAgICAgICAgICBjb21wb25lbnQ6XG4gICAgICAgICAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5WRVJJRklDQVRJT05fQ09ERS5DT01QT05FTlRTLlZFUklGWV9DT0RFLFxuICAgICAgICAgICAgcmVzdWx0OlxuICAgICAgICAgICAgICBQUk9EVUNUX0VYUEVSSUVOQ0VfVFJVU1RFRF9DRVJUSUZJQ0FURVMuVkVSSUZJQ0FUSU9OX0NPREUuUkVTVUxUUy5WRVJJRllfU1VDQ0VTUyxcbiAgICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFX1RSVVNURURfQ0VSVElGSUNBVEVTLlZFUklGSUNBVElPTl9DT0RFLkFDVElPTlMuVkVSSUZZXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdTaWduZWQgdmVyaWZpY2F0aW9uIGNvZGUgdmVyaWZpZWQuJykpO1xuICAgICAgICB9LFxuICAgICAgICBleCA9PiB7XG4gICAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0VfVFJVU1RFRF9DRVJUSUZJQ0FURVMuRVZFTlQsIHtcbiAgICAgICAgICAgIGNvbXBvbmVudDpcbiAgICAgICAgICAgICAgUFJPRFVDVF9FWFBFUklFTkNFX1RSVVNURURfQ0VSVElGSUNBVEVTLlZFUklGSUNBVElPTl9DT0RFLkNPTVBPTkVOVFMuVkVSSUZZX0NPREUsXG4gICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5WRVJJRklDQVRJT05fQ09ERS5SRVNVTFRTLlZFUklGWV9GQUlMRUQsXG4gICAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRV9UUlVTVEVEX0NFUlRJRklDQVRFUy5WRVJJRklDQVRJT05fQ09ERS5BQ1RJT05TLlZFUklGWVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZG93bmxvYWRVbnNpZ25lZFZlcmlmaWNhdGlvbkNvZGUodHJ1c3RlZENlcnRpZmljYXRlOiBJVHJ1c3RlZENlcnRpZmljYXRlKSB7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFt0cnVzdGVkQ2VydGlmaWNhdGUucHJvb2ZPZlBvc3Nlc3Npb25VbnNpZ25lZFZlcmlmaWNhdGlvbkNvZGVdKTtcbiAgICBjb25zdCBmaWxlTmFtZSA9IHRydXN0ZWRDZXJ0aWZpY2F0ZS5uYW1lO1xuICAgIHNhdmVBcyhibG9iLCBgJHtmaWxlTmFtZX0udHh0YCk7XG4gIH1cblxuICBjb3B5VW5zaWduZWRWZXJpZmljYXRpb25Db2RlVG9DbGlwYm9hcmQodHJ1c3RlZENlcnRpZmljYXRlOiBJVHJ1c3RlZENlcnRpZmljYXRlKSB7XG4gICAgdGhpcy5jbGlwYm9hcmRTZXJ2aWNlLndyaXRlVGV4dCh0cnVzdGVkQ2VydGlmaWNhdGUucHJvb2ZPZlBvc3Nlc3Npb25VbnNpZ25lZFZlcmlmaWNhdGlvbkNvZGUpO1xuICB9XG5cbiAgb25GaWxlSW5wdXQoZXZlbnQsIHRydXN0ZWRDZXJ0aWZpY2F0ZTogVHJ1c3RlZENlcnRpZmljYXRlKSB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgdHJ1c3RlZENlcnRpZmljYXRlLnNpZ25lZFZlcmlmaWNhdGlvbkNvZGUgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcbiAgICB9O1xuICAgIHJlYWRlci5yZWFkQXNUZXh0KGlucHV0LmZpbGVzWzBdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2hvd0xpbWl0YXRpb25BbGVydCgpIHtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuc3lzdGVtT3B0aW9uc1NlcnZpY2UuZGV0YWlsKHtcbiAgICAgIGNhdGVnb3J5OiAnc3NsJyxcbiAgICAgIGtleTogJ3NoYXJlZC10cnVzdHN0b3JlLmVuYWJsZWQnXG4gICAgfSk7XG4gICAgY29uc3Qgc2hhcmVkVHJ1c3RzdG9yZUVuYWJsZWQgPSBkYXRhLnZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHNoYXJlZFRydXN0c3RvcmVFbmFibGVkID09PSAndHJ1ZScpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLndhcm5pbmcoXG4gICAgICAgIGdldHRleHQoXG4gICAgICAgICAgJ1NoYXJlZCB0cnVzdGVkIGNlcnRpZmljYXRlcyBhcmUgZW5hYmxlZCBpbiB0aGlzIGluc3RhbmNlLiBEZXZpY2VzIG1heSBub3QgYmUgYWJsZSB0byBjb25uZWN0IGlmIGNlcnRpZmljYXRlcyBmcm9tIHRoZSBzYW1lIGNoYWluIGFyZSBkaXN0cmlidXRlZCBhY3Jvc3MgZGlmZmVyZW50IHRlbmFudHM6IE1RVFQgY29ubmVjdGlvbnMgd2lsbCBub3QgYmUgcG9zc2libGUgYW5kIFJFU1QgY29ubmVjdGlvbnMgd2lsbCByZXF1aXJlIGFuIGV4cGxpY2l0IHRlbmFudCBJRC4nXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjaGVja0NlcnRpZmljYXRlQXV0aG9yaXR5RmVhdHVyZSgpIHtcbiAgICB0aGlzLmNlcnRpZmljYXRlQXV0aG9yaXR5RmVhdHVyZUVuYWJsZWQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuZmVhdHVyZUNhY2hlU2VydmljZS5nZXRGZWF0dXJlU3RhdGUoJ2NlcnRpZmljYXRlLWF1dGhvcml0eScpXG4gICAgKTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT57eyAnVHJ1c3RlZCBjZXJ0aWZpY2F0ZXMnIHwgdHJhbnNsYXRlIH19PC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBpY29uPVwiYzh5LW1hbmFnZW1lbnRcIlxuICAgIGxhYmVsPVwie3sgJ01hbmFnZW1lbnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBpY29uPVwiY2VydGlmaWNhdGVcIlxuICAgIGxhYmVsPVwie3sgJ1RydXN0ZWQgY2VydGlmaWNhdGVzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidyaWdodCdcIlxuICAqbmdJZj1cImNlcnRpZmljYXRlQXV0aG9yaXR5RmVhdHVyZUVuYWJsZWRcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIHRpdGxlPVwie3sgJ0FkZCBDQSBjZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtkaXNhYmxlZF09XCJjZXJ0aWZpY2F0ZUF1dGhvcml0eUV4aXN0c1wiXG4gICAgKGNsaWNrKT1cImFkZENBQ2VydGlmaWNhdGUoKVwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwiY29udHJhY3RcIj48L2k+XG4gICAge3sgJ0FkZCBDQSBjZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgIHBvcG92ZXI9XCJ7e1xuICAgICAgJ0FkZGluZyBhIENBIGNlcnRpZmljYXRlIGxldHMgdGhlIGFwcCB0cnVzdCBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgc3BlY2lmaWVkIGF1dGhvcml0eSwgZW5zdXJpbmcgc2VjdXJlIGNvbm5lY3Rpb25zLiBPbmx5IG9uZSBjZXJ0aWZpY2F0ZSBpcyBhbGxvd2VkLCB3aGljaCBpcyB3aHkgdGhlIGJ1dHRvbiBpcyBkaXNhYmxlZC4nXG4gICAgICAgIHwgdHJhbnNsYXRlXG4gICAgfX1cIlxuICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKm5nSWY9XCJjZXJ0aWZpY2F0ZUF1dGhvcml0eUV4aXN0c1wiXG4gID48L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgcG9wb3Zlcj1cInt7XG4gICAgICAnQWRkaW5nIGEgQ0EgY2VydGlmaWNhdGUgbGV0cyB0aGUgYXBwIHRydXN0IGNlcnRpZmljYXRlcyBmcm9tIHRoZSBzcGVjaWZpZWQgYXV0aG9yaXR5LCBlbnN1cmluZyBzZWN1cmUgY29ubmVjdGlvbnMuJ1xuICAgICAgICB8IHRyYW5zbGF0ZVxuICAgIH19XCJcbiAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgICpuZ0lmPVwiIWNlcnRpZmljYXRlQXV0aG9yaXR5RXhpc3RzXCJcbiAgPjwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdBZGQgdHJ1c3RlZCBjZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJhZGRUcnVzdGVkQ2VydGlmaWNhdGUoKVwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIj48L2k+XG4gICAge3sgJ0FkZCB0cnVzdGVkIGNlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKGNsaWNrKT1cImxvYWRUcnVzdGVkQ2VydGlmaWNhdGVzKClcIlxuICA+XG4gICAgPGlcbiAgICAgIGM4eUljb249XCJyZWZyZXNoXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2ljb24tc3Bpbic6IHJlbG9hZGluZyB8IGFzeW5jIH1cIlxuICAgID48L2k+XG4gICAge3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktaGVscFxuICBzcmM9XCIvZG9jcy9kZXZpY2UtY2VydGlmaWNhdGUtYXV0aGVudGljYXRpb24vbWFuYWdpbmctdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMvI21hbmFnaW5nLXRydXN0ZWQtY2VydGlmaWNhdGVzXCJcbj48L2M4eS1oZWxwPlxuXG48Yzh5LXVpLWVtcHR5LXN0YXRlXG4gIFtpY29uXT1cIidjZXJ0aWZpY2F0ZSdcIlxuICBbdGl0bGVdPVwiJ05vIHRydXN0ZWQgY2VydGlmaWNhdGVzIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gIFtzdWJ0aXRsZV09XCInQWRkIHlvdXIgZmlyc3QgY2VydGlmaWNhdGUgYnkgY2xpY2tpbmcgYmVsb3cuJyB8IHRyYW5zbGF0ZVwiXG4gICpuZ0lmPVwiKHRydXN0ZWRDZXJ0aWZpY2F0ZXMgfCBhc3luYyk/LmRhdGEubGVuZ3RoID09PSAwXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICB0aXRsZT1cInt7ICdBZGQgdHJ1c3RlZCBjZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJhZGRUcnVzdGVkQ2VydGlmaWNhdGUoKVwiXG4gID5cbiAgICB7eyAnQWRkIHRydXN0ZWQgY2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9jOHktdWktZW1wdHktc3RhdGU+XG5cbjxjOHktbGlzdC1ncm91cCBjbGFzcz1cIm0tYi0yNFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJwYWdlLXN0aWNreS1oZWFkZXIgaGlkZGVuLXhzIGM4eS1saXN0X19pdGVtIGM4eS1saXN0X19pdGVtLS1lbXB0eS1hY3Rpb25zXCJcbiAgICAqbmdJZj1cIih0cnVzdGVkQ2VydGlmaWNhdGVzIHwgYXN5bmMpPy5kYXRhLmxlbmd0aCA+IDBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19ibG9ja1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19pY29uXCI+XG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJpbnZpc2libGVcIlxuICAgICAgICAgIGM4eUljb249XCJjZXJ0aWZpY2F0ZVwiXG4gICAgICAgID48L2k+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9fYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mbGV4LTYwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICB0aXRsZT1cIiB7eyAnQ2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlIH19IFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdDZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1N0YXR1cycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnU3RhdHVzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQWxnb3JpdGhtJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdBbGdvcml0aG0nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdFeHBpcmF0aW9uIGRhdGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0V4cGlyYXRpb24gZGF0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgIHRpdGxlPVwiIHt7ICdBdXRvIHJlZ2lzdHJhdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnQXV0byByZWdpc3RyYXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICB0aXRsZT1cIiB7eyAnUHJvb2Ygb2YgcG9zc2Vzc2lvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnUHJvb2Ygb2YgcG9zc2Vzc2lvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9fYWN0aW9uc1wiPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8Yzh5LWxpXG4gICAgKmM4eUZvcj1cIlxuICAgICAgbGV0IHRydXN0ZWRDZXJ0aWZpY2F0ZSBvZiB0cnVzdGVkQ2VydGlmaWNhdGVzIHwgYXN5bmM7XG4gICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgcGlwZTogc29ydEJ5RXhwaXJhdGlvbkRhdGVBc2M7XG4gICAgICBsb2FkTW9yZTogJ25vbmUnXG4gICAgXCJcbiAgICAjbGlzdEl0ZW1cbiAgICBkYXRhLWN5PVwiYzh5LXRydXN0ZWQtY2VydGlmaWNhdGVzLWxpc3QtLWl0ZW0tYmxvY2tcIlxuICA+XG4gICAgPGM4eS1saS1pY29uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0bi1jbGVhblwiXG4gICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cInt7ICdDZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0b29sdGlwPVwie3sgJ0NlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgKm5nSWY9XCIhdHJ1c3RlZENlcnRpZmljYXRlLnRlbmFudENlcnRpZmljYXRlQXV0aG9yaXR5XCJcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cImNlcnRpZmljYXRlXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuXCJcbiAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgJ0NBIGNlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHRvb2x0aXA9XCJ7eyAnQ0EgY2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAqbmdJZj1cInRydXN0ZWRDZXJ0aWZpY2F0ZS50ZW5hbnRDZXJ0aWZpY2F0ZUF1dGhvcml0eVwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJjb250cmFjdFwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvYzh5LWxpLWljb24+XG5cbiAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJjb250ZW50LWZsZXgtNjBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4tY2xlYW4gdGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyB0cnVzdGVkQ2VydGlmaWNhdGUubmFtZSB9fVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImxpc3RJdGVtLnRvZ2dsZUNvbGxhcHNlZCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHRydXN0ZWRDZXJ0aWZpY2F0ZS5uYW1lIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZpc2libGUteHMgcC04XCI+PC9kaXY+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBjOHktYnRuLWNoZWNrYm94LS1pbmxpbmVcIlxuICAgICAgICAgIG5hbWU9XCJjZXJ0aWZpY2F0ZVN0YXR1c1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ0cnVzdGVkQ2VydGlmaWNhdGUuc3RhdHVzXCJcbiAgICAgICAgICBidG5DaGVja2JveFxuICAgICAgICAgIGJ0bkNoZWNrYm94VHJ1ZT1cIkVOQUJMRURcIlxuICAgICAgICAgIGJ0bkNoZWNrYm94RmFsc2U9XCJESVNBQkxFRFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlQ2VydGlmaWNhdGUodHJ1c3RlZENlcnRpZmljYXRlLCB7IHN0YXR1czogJGV2ZW50IH0pXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRGlzYWJsZWRgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSBzdGF0dXNgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cInRydXN0ZWRDZXJ0aWZpY2F0ZS5zdGF0dXMgIT09ICdESVNBQkxFRCdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdEaXNhYmxlZGB0cnVzdGVkIGNlcnRpZmljYXRlIHN0YXR1c2AnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0VuYWJsZWRgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSBzdGF0dXNgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cInRydXN0ZWRDZXJ0aWZpY2F0ZS5zdGF0dXMgIT09ICdFTkFCTEVEJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0VuYWJsZWRgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSBzdGF0dXNgJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidmlzaWJsZS14cyBwLThcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ0FsZ29yaXRobScgfCB0cmFuc2xhdGUgfX06IHt7IHRydXN0ZWRDZXJ0aWZpY2F0ZS5hbGdvcml0aG1OYW1lIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtbGFiZWwtc21hbGwgbS10LTggbS1yLTggdmlzaWJsZS14cy1pbmxpbmVcIlxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQWxnb3JpdGhtXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHt7IHRydXN0ZWRDZXJ0aWZpY2F0ZS5hbGdvcml0aG1OYW1lIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdFeHBpcmF0aW9uIGRhdGUnIHwgdHJhbnNsYXRlIH19OiB7eyB0cnVzdGVkQ2VydGlmaWNhdGUubm90QWZ0ZXIgfCBjOHlEYXRlIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtbGFiZWwtc21hbGwgbS10LTggbS1yLTggdmlzaWJsZS14cy1pbmxpbmVcIlxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgRXhwaXJhdGlvbiBkYXRlXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzbWFsbCBbbmdDbGFzc109XCJoaWdobGlnaHREZXBlbmRpbmdPbkV4cGlyYXRpb25TdGF0dXModHJ1c3RlZENlcnRpZmljYXRlKVwiPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJtLXItNFwiXG4gICAgICAgICAgICAgIGM4eUljb249XCJjYWxlbmRhclwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWhpZ2hsaWdodERlcGVuZGluZ09uRXhwaXJhdGlvblN0YXR1cyh0cnVzdGVkQ2VydGlmaWNhdGUpXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgICAgICAgICAgYzh5SWNvbj1cIndhcm5pbmdcIlxuICAgICAgICAgICAgICAqbmdJZj1cImhpZ2hsaWdodERlcGVuZGluZ09uRXhwaXJhdGlvblN0YXR1cyh0cnVzdGVkQ2VydGlmaWNhdGUpXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8c3Bhbj57eyB0cnVzdGVkQ2VydGlmaWNhdGUubm90QWZ0ZXIgfCBjOHlEYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGwgbS10LTggbS1yLTQgdmlzaWJsZS14cy1pbmxpbmVcIj5cbiAgICAgICAgICAgIHt7ICdBdXRvIHJlZ2lzdHJhdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0F1dG8gcmVnaXN0cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fTogIHt7XG4gICAgICAgICAgICAgICdFbmFibGVkYGF1dG8gcmVnaXN0cmF0aW9uYCcgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICpuZ0lmPVwidHJ1c3RlZENlcnRpZmljYXRlLmF1dG9SZWdpc3RyYXRpb25FbmFibGVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnRW5hYmxlZGBhdXRvIHJlZ2lzdHJhdGlvbmAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdBdXRvIHJlZ2lzdHJhdGlvbicgfCB0cmFuc2xhdGUgfX06ICB7e1xuICAgICAgICAgICAgICAnRGlzYWJsZWRgYXV0byByZWdpc3RyYXRpb25gJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgKm5nSWY9XCIhdHJ1c3RlZENlcnRpZmljYXRlLmF1dG9SZWdpc3RyYXRpb25FbmFibGVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnRGlzYWJsZWRgYXV0byByZWdpc3RyYXRpb25gJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBwb3BvdmVyPVwie3sgQVVUT19SRUdJU1RSQVRJT05fUE9QT1ZFUiB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTIgZC1mbGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxhYmVsLXNtYWxsIG0tdC04IG0tci00IHZpc2libGUteHMtaW5saW5lXCI+XG4gICAgICAgICAgICB7eyAnUHJvb2Ygb2YgcG9zc2Vzc2lvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ1Byb29mIG9mIHBvc3Nlc3Npb24nIHwgdHJhbnNsYXRlIH19OiB7eyAnTi9BJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAqbmdJZj1cInRydXN0ZWRDZXJ0aWZpY2F0ZS50ZW5hbnRDZXJ0aWZpY2F0ZUF1dGhvcml0eVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ04vQScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdHJ1c3RlZENlcnRpZmljYXRlLnRlbmFudENlcnRpZmljYXRlQXV0aG9yaXR5XCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdQcm9vZiBvZiBwb3NzZXNzaW9uJyB8IHRyYW5zbGF0ZSB9fTogIHt7XG4gICAgICAgICAgICAgICAgJ0NvbXBsZXRlYHByb29mIG9mIHBvc3Nlc3Npb25gJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwidHJ1c3RlZENlcnRpZmljYXRlLnByb29mT2ZQb3NzZXNzaW9uVmFsaWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1zdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgIGM4eUljb249XCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdDb21wbGV0ZWBwcm9vZiBvZiBwb3NzZXNzaW9uYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdQcm9vZiBvZiBwb3NzZXNzaW9uJyB8IHRyYW5zbGF0ZSB9fTogIHt7XG4gICAgICAgICAgICAgICAgJ0luY29tcGxldGVgcHJvb2Ygb2YgcG9zc2Vzc2lvbmAnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhdHJ1c3RlZENlcnRpZmljYXRlLnByb29mT2ZQb3NzZXNzaW9uVmFsaWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC13YXJuaW5nXCJcbiAgICAgICAgICAgICAgICAgIGM4eUljb249XCJ3YXJuaW5nXCJcbiAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdJbmNvbXBsZXRlYHByb29mIG9mIHBvc3Nlc3Npb25gJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJtLWwtYXV0byBidG4tZG90IGJ0bi1kb3QtLWRhbmdlciBidG4gc2hvd09uSG92ZXIgbS1yLThcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0RlbGV0ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIHRvb2x0aXA9XCJ7eyAnRGVsZXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGRhdGEtY3k9XCJjOHktdHJ1c3RlZC1jZXJ0aWZpY2F0ZS0tZGVsZXRlXCJcbiAgICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlVHJ1c3RlZENlcnRpZmljYXRlKHRydXN0ZWRDZXJ0aWZpY2F0ZSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImRlbGV0ZVwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2M4eS1saS1ib2R5PlxuXG4gICAgPGM4eS1saS1jb2xsYXBzZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLXQtMTYgcC1iLTE2XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cbiAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgIHt7ICdDZXJ0aWZpY2F0ZSBuYW1lJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtZWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICBkYXRhLWN5PVwiYzh5LXRydXN0ZWQtY2VydGlmaWNhdGVzLS1lZGl0LWNlcnRpZmljYXRlLW5hbWVcIlxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0cnVzdGVkQ2VydGlmaWNhdGUubmFtZVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1VwZGF0ZSBjZXJ0aWZpY2F0ZSBuYW1lJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ2VydGlmaWNhdGUodHJ1c3RlZENlcnRpZmljYXRlLCB7IG5hbWU6IHRydXN0ZWRDZXJ0aWZpY2F0ZS5uYW1lIH0pXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhdHJ1c3RlZENlcnRpZmljYXRlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XG4gICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgZm9yPVwiY2VydEluUGVtRm9ybWF0XCJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIENlcnRpZmljYXRlXG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIG5vLXJlc2l6ZVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJjZXJ0SW5QZW1Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJjZXJ0SW5QZW1Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICByb3dzPVwiN1wiXG4gICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRydXN0ZWRDZXJ0aWZpY2F0ZS5jZXJ0SW5QZW1Gb3JtYXRcIlxuICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBdXRvIHJlZ2lzdHJhdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0cnVzdGVkQ2VydGlmaWNhdGUuYXV0b1JlZ2lzdHJhdGlvbkVuYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNlcnRpZmljYXRlKHRydXN0ZWRDZXJ0aWZpY2F0ZSwgeyBhdXRvUmVnaXN0cmF0aW9uRW5hYmxlZDogJGV2ZW50IH0pXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdBdXRvIHJlZ2lzdHJhdGlvbicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7IEFVVE9fUkVHSVNUUkFUSU9OX1BPUE9WRVIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBBZGRpdGlvbmFsIHByb3BlcnRpZXNcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZFwiPlxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwLXQtNCBwLWItNCBkLWZsZXggc2VwYXJhdG9yLWJvdHRvbSBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzbWFsbCBtLWItMCBtLXItOCBhLXMtc3RhcnQgZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgICAgICB7eyAnQWxnb3JpdGhtJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtYXV0byB0ZXh0LWJyZWFrLXdvcmRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHRydXN0ZWRDZXJ0aWZpY2F0ZS5hbGdvcml0aG1OYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwLXQtNCBwLWItNCBkLWZsZXggc2VwYXJhdG9yLWJvdHRvbSBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzbWFsbCBtLWItMCBtLXItOCBhLXMtc3RhcnQgZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgICAgICB7eyAnVmVyc2lvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1sLWF1dG8gdGV4dC1icmVhay13b3JkXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0cnVzdGVkQ2VydGlmaWNhdGUudmVyc2lvbiB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC10LTQgcC1iLTQgZC1mbGV4IHNlcGFyYXRvci1ib3R0b20gZmxleC13cmFwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic21hbGwgbS1iLTAgbS1yLTggYS1zLXN0YXJ0IGZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgICAgICAge3sgJ1ZhbGlkIGZyb20nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tbC1hdXRvIHRleHQtYnJlYWstd29yZFwiPlxuICAgICAgICAgICAgICAgICAge3sgdHJ1c3RlZENlcnRpZmljYXRlLm5vdEJlZm9yZSB8IGM4eURhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtdC00IHAtYi00IGQtZmxleCBzZXBhcmF0b3ItYm90dG9tIGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInNtYWxsIG0tYi0wIG0tci04IGEtcy1zdGFydCBmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdJc3N1ZXInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tbC1hdXRvIHRleHQtYnJlYWstd29yZFwiPlxuICAgICAgICAgICAgICAgICAge3sgdHJ1c3RlZENlcnRpZmljYXRlLmlzc3VlciB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC10LTQgcC1iLTQgZC1mbGV4IHNlcGFyYXRvci1ib3R0b20gZmxleC13cmFwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic21hbGwgbS1iLTAgbS1yLTggYS1zLXN0YXJ0IGZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgICAgICAge3sgJ0V4cGlyYXRpb24gZGF0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1sLWF1dG8gdGV4dC1icmVhay13b3JkXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0cnVzdGVkQ2VydGlmaWNhdGUubm90QWZ0ZXIgfCBjOHlEYXRlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwLXQtNCBwLWItNCBkLWZsZXggc2VwYXJhdG9yLWJvdHRvbSBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzbWFsbCBtLWItMCBtLXItOCBhLXMtc3RhcnQgZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgICAgICB7eyAnU2VyaWFsIG51bWJlcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1sLWF1dG8gdGV4dC1icmVhay13b3JkXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0cnVzdGVkQ2VydGlmaWNhdGUuc2VyaWFsTnVtYmVyIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwLXQtNCBwLWItNCBkLWZsZXggc2VwYXJhdG9yLWJvdHRvbSBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzbWFsbCBtLWItMCBtLXItOCBhLXMtc3RhcnQgZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgICAgICB7eyAnU3ViamVjdGBvZiBhIGNlcnRpZmljYXRlYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1sLWF1dG8gdGV4dC1icmVhay13b3JkXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0cnVzdGVkQ2VydGlmaWNhdGUuc3ViamVjdCB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtbWQtN1wiXG4gICAgICAgICAgICAqbmdJZj1cIiF0cnVzdGVkQ2VydGlmaWNhdGUudGVuYW50Q2VydGlmaWNhdGVBdXRob3JpdHlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiPlxuICAgICAgICAgICAgICB7eyAnUHJvb2Ygb2YgcG9zc2Vzc2lvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7IFBST09GX09GX1BPU1NFU1NJT05fUE9QT1ZFUiB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0cnVzdGVkQ2VydGlmaWNhdGUucHJvb2ZPZlBvc3Nlc3Npb25WYWxpZFwiPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1mbGV4XCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdQcm9vZiBvZiBwb3NzZXNzaW9uJyB8IHRyYW5zbGF0ZSB9fTogIHt7XG4gICAgICAgICAgICAgICAgICAnQ29tcGxldGVgcHJvb2Ygb2YgcG9zc2Vzc2lvbmAnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1zdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgIGM4eUljb249XCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdDb21wbGV0ZWBwcm9vZiBvZiBwb3NzZXNzaW9uYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXRydXN0ZWRDZXJ0aWZpY2F0ZS5wcm9vZk9mUG9zc2Vzc2lvblZhbGlkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbS1iLTE2XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb24tZmxleFwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1Byb29mIG9mIHBvc3Nlc3Npb24nIHwgdHJhbnNsYXRlIH19OiAge3tcbiAgICAgICAgICAgICAgICAgICAgICAnSW5jb21wbGV0ZWBwcm9vZiBvZiBwb3NzZXNzaW9uYCcgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC13YXJuaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICBjOHlJY29uPVwid2FybmluZ1wiXG4gICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdJbmNvbXBsZXRlYHByb29mIG9mIHBvc3Nlc3Npb25gJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjb2wtbGctNiB0ZXh0LXJpZ2h0LW1kXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGwgbS1yLTRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ1ZlcmlmaWNhdGlvbiBjb2RlIGV4cGlyZXMvZXhwaXJlZCBvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICh0cnVzdGVkQ2VydGlmaWNhdGUucHJvb2ZPZlBvc3Nlc3Npb25WZXJpZmljYXRpb25Db2RlVXNhYmxlVW50aWwgfCBjOHlEYXRlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICctLS0nXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjb2wtbGctNlwiPlxuICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGZvcj1cInVuc2lnbmVkVmVyaWZpY2F0aW9uQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICBWZXJpZmljYXRpb24gY29kZVxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBuby1yZXNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwidW5zaWduZWRWZXJpZmljYXRpb25Db2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwidW5zaWduZWRWZXJpZmljYXRpb25Db2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgcm93cz1cIjVcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0cnVzdGVkQ2VydGlmaWNhdGUucHJvb2ZPZlBvc3Nlc3Npb25VbnNpZ25lZFZlcmlmaWNhdGlvbkNvZGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIlxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlZ2VuZXJhdGUgdmVyaWZpY2F0aW9uIGNvZGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVnZW5lcmF0ZVVuc2lnbmVkVmVyaWZpY2F0aW9uQ29kZSh0cnVzdGVkQ2VydGlmaWNhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdSZWdlbmVyYXRlYHZlcmlmaWNhdGlvbiBjb2RlYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGVmYXVsdCBtLWwtYXV0byBtLXItMFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQ29weSB0byBjbGlwYm9hcmQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwPVwie3sgJ0NvcHkgdG8gY2xpcGJvYXJkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtY3k9XCJjOHktdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMtLWNvcHktdG8tY2xpcGJvYXJkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXRydXN0ZWRDZXJ0aWZpY2F0ZS5wcm9vZk9mUG9zc2Vzc2lvblVuc2lnbmVkVmVyaWZpY2F0aW9uQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvcHlVbnNpZ25lZFZlcmlmaWNhdGlvbkNvZGVUb0NsaXBib2FyZCh0cnVzdGVkQ2VydGlmaWNhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJjbGlwYm9hcmRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidEb3dubG9hZCBhcyBmaWxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD1cInt7ICdEb3dubG9hZCBhcyBmaWxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1jeT1cImM4eS10cnVzdGVkLWNlcnRpZmljYXRlcy0tZG93bmxvYWQtYXMtZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiF0cnVzdGVkQ2VydGlmaWNhdGUucHJvb2ZPZlBvc3Nlc3Npb25VbnNpZ25lZFZlcmlmaWNhdGlvbkNvZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZFVuc2lnbmVkVmVyaWZpY2F0aW9uQ29kZSh0cnVzdGVkQ2VydGlmaWNhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgICAgICAgICAgIFthY3Rpb25OYW1lXT1cIlBST0RVQ1RfRVhQRVJJRU5DRS5FVkVOVFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuVkVSSUZJQ0FUSU9OX0NPREUuQ09NUE9ORU5UUy5ET1dOTE9BRF9DT0RFLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuVkVSSUZJQ0FUSU9OX0NPREUuQUNUSU9OUy5ET1dOTE9BRFxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImRvd25sb2FkXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1sZy02XCI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgZm9yPVwic2lnbmVkVmVyaWZpY2F0aW9uQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAnU2lnbmVkIHZlcmlmaWNhdGlvbiBjb2RlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXI9XCJ7eyBTSUdORURfVkVSSUZJQ0FUSU9OX0NPREVfUE9QT1ZFUiB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtY3k9XCJjOHktdHJ1c3RlZC1jZXJ0aWZpY2F0ZXMtLXNpZ25lZC12ZXJpZmljYXRpb24tY29kZS1wb3B1cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3V0c2lkZUNsaWNrXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbm8tcmVzaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInNpZ25lZFZlcmlmaWNhdGlvbkNvZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzaWduZWRWZXJpZmljYXRpb25Db2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgcm93cz1cIjVcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidHJ1c3RlZENlcnRpZmljYXRlLnNpZ25lZFZlcmlmaWNhdGlvbkNvZGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIlxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1ZlcmlmeSBzaWduZWQgdmVyaWZpY2F0aW9uIGNvZGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmVyaWZ5U2lnbmVkVmVyaWZpY2F0aW9uQ29kZSh0cnVzdGVkQ2VydGlmaWNhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXRydXN0ZWRDZXJ0aWZpY2F0ZS5zaWduZWRWZXJpZmljYXRpb25Db2RlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdWZXJpZnlgc2lnbmVkIHZlcmlmaWNhdGlvbiBjb2RlYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWRlZmF1bHQgbS1sLWF1dG9cIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1VwbG9hZCBmaWxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD1cInt7ICdVcGxvYWQgZmlsZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwidXBsb2FkXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAjZmlsZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVJbnB1dCgkZXZlbnQsIHRydXN0ZWRDZXJ0aWZpY2F0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktbGktY29sbGFwc2U+XG4gIDwvYzh5LWxpPlxuPC9jOHktbGlzdC1ncm91cD5cbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Injectable, LOCALE_ID, Pipe, input, computed, Component, Input, DestroyRef, EventEmitter, ViewChild, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1$1 from '@c8y/ngx-components';
|
|
4
|
-
import { gettext, AlertService, Permissions, NavigatorNode, AppStateService, NavigatorService, IconDirective, C8yTranslatePipe, C8yTranslateModule, HeaderModule, HelpModule, BreadcrumbModule, ActionBarItemComponent, LoadingComponent, BaseColumn, DataGridModule, BytesPipe, EmptyStateComponent, EmptyStateContextDirective, ModalService, Status, DataGridComponent, C8yTranslateDirective, RelativeTimePipe, hookRoute, hookTab, hookNavigator } from '@c8y/ngx-components';
|
|
4
|
+
import { gettext, AlertService, Permissions, NavigatorNode, AppStateService, NavigatorService, IconDirective, C8yTranslatePipe, C8yTranslateModule, HeaderModule, HelpModule, BreadcrumbModule, ActionBarItemComponent, LoadingComponent, BaseColumn, DataGridModule, BytesPipe, EmptyStateComponent, EmptyStateContextDirective, ModalService, Status, DataGridComponent, C8yTranslateDirective, RelativeTimePipe, hookRoute, hookTab, hookNavigator, hookPreview } from '@c8y/ngx-components';
|
|
5
5
|
import * as i1 from '@c8y/client';
|
|
6
6
|
import { Service, UserService, FeatureService, ApplicationService, Paging } from '@c8y/client';
|
|
7
7
|
import { filter, map, take, switchMap, catchError, shareReplay, tap } from 'rxjs/operators';
|
|
@@ -1182,7 +1182,15 @@ class MessagingManagementModule {
|
|
|
1182
1182
|
}
|
|
1183
1183
|
]),
|
|
1184
1184
|
hookTab(TopicDetailsTabFactory),
|
|
1185
|
-
hookNavigator(MessagingNavigatorNodeFactory)
|
|
1185
|
+
hookNavigator(MessagingNavigatorNodeFactory),
|
|
1186
|
+
hookPreview({
|
|
1187
|
+
key: MESSAGING_MANAGEMENT_FEATURE_KEY,
|
|
1188
|
+
label: 'Messaging service - monitoring & management',
|
|
1189
|
+
description: () => import('@c8y/style/markdown-files/messaging-management-preview.md').then(m => m.default),
|
|
1190
|
+
settings: {
|
|
1191
|
+
reload: true
|
|
1192
|
+
}
|
|
1193
|
+
})
|
|
1186
1194
|
] }); }
|
|
1187
1195
|
}
|
|
1188
1196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingManagementModule, decorators: [{
|
|
@@ -1212,7 +1220,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
1212
1220
|
}
|
|
1213
1221
|
]),
|
|
1214
1222
|
hookTab(TopicDetailsTabFactory),
|
|
1215
|
-
hookNavigator(MessagingNavigatorNodeFactory)
|
|
1223
|
+
hookNavigator(MessagingNavigatorNodeFactory),
|
|
1224
|
+
hookPreview({
|
|
1225
|
+
key: MESSAGING_MANAGEMENT_FEATURE_KEY,
|
|
1226
|
+
label: 'Messaging service - monitoring & management',
|
|
1227
|
+
description: () => import('@c8y/style/markdown-files/messaging-management-preview.md').then(m => m.default),
|
|
1228
|
+
settings: {
|
|
1229
|
+
reload: true
|
|
1230
|
+
}
|
|
1231
|
+
})
|
|
1216
1232
|
]
|
|
1217
1233
|
}]
|
|
1218
1234
|
}] });
|