@c8y/ngx-components 1021.59.6 → 1021.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts +1 -1
- package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts.map +1 -1
- package/esm2022/device-provisioned-certificates/device-provisioned-certificates.guard.mjs +2 -2
- package/esm2022/device-provisioned-certificates/device-provisioned-certificates.service.mjs +2 -2
- package/esm2022/register-device/bulk/bulk-device-registration-modal.component.mjs +12 -9
- package/esm2022/register-device/general/general-device-registration.component.mjs +3 -3
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +2 -2
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-register-device.mjs +21 -20
- package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
- package/package.json +1 -1
- package/register-device/bulk/bulk-device-registration-modal.component.d.ts +3 -1
- package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
|
@@ -5,7 +5,7 @@ export declare class DeviceProvisionedCertificatesService {
|
|
|
5
5
|
private userService;
|
|
6
6
|
private client;
|
|
7
7
|
constructor(userService: UserService, client: FetchClient);
|
|
8
|
-
getDeviceProvisionedCertificates(device: IManagedObject): Promise<ProvisionedCertificate[]>;
|
|
8
|
+
getDeviceProvisionedCertificates(device: IManagedObject): Promise<ProvisionedCertificate[] | undefined>;
|
|
9
9
|
private getDeviceUserName;
|
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<DeviceProvisionedCertificatesService, never>;
|
|
11
11
|
static ɵprov: i0.ɵɵInjectableDeclaration<DeviceProvisionedCertificatesService>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-provisioned-certificates.service.d.ts","sourceRoot":"","sources":["../../device-provisioned-certificates/device-provisioned-certificates.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;;AAEzF,qBACa,oCAAoC;IAE7C,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;gBADN,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,WAAW;IAGvB,gCAAgC,CACpC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,sBAAsB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"device-provisioned-certificates.service.d.ts","sourceRoot":"","sources":["../../device-provisioned-certificates/device-provisioned-certificates.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;;AAEzF,qBACa,oCAAoC;IAE7C,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;gBADN,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,WAAW;IAGvB,gCAAgC,CACpC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,sBAAsB,EAAE,GAAG,SAAS,CAAC;YAMlC,iBAAiB;yCAdpB,oCAAoC;6CAApC,oCAAoC;CAwBhD"}
|
|
@@ -13,7 +13,7 @@ export class DeviceProvisionedCertificatesGuard {
|
|
|
13
13
|
}
|
|
14
14
|
try {
|
|
15
15
|
const provisionedCertificates = await this.deviceProvisionedCertificatesService.getDeviceProvisionedCertificates(contextData);
|
|
16
|
-
return provisionedCertificates
|
|
16
|
+
return provisionedCertificates?.length > 0;
|
|
17
17
|
}
|
|
18
18
|
catch (error) {
|
|
19
19
|
return false;
|
|
@@ -25,4 +25,4 @@ export class DeviceProvisionedCertificatesGuard {
|
|
|
25
25
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceProvisionedCertificatesGuard, decorators: [{
|
|
26
26
|
type: Injectable
|
|
27
27
|
}], ctorParameters: () => [{ type: i1.DeviceProvisionedCertificatesService }] });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXByb3Zpc2lvbmVkLWNlcnRpZmljYXRlcy5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RldmljZS1wcm92aXNpb25lZC1jZXJ0aWZpY2F0ZXMvZGV2aWNlLXByb3Zpc2lvbmVkLWNlcnRpZmljYXRlcy5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7QUFJakcsTUFBTSxPQUFPLGtDQUFrQztJQUM3QyxZQUFvQixvQ0FBMEU7UUFBMUUseUNBQW9DLEdBQXBDLG9DQUFvQyxDQUFzQztJQUFHLENBQUM7SUFFbEcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUE2QjtRQUM3QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDNUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE1BQU0sdUJBQXVCLEdBQzNCLE1BQU0sSUFBSSxDQUFDLG9DQUFvQyxDQUFDLGdDQUFnQyxDQUM5RSxXQUFXLENBQ1osQ0FBQztZQUNKLE9BQU8sdUJBQXVCLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7K0dBakJVLGtDQUFrQzttSEFBbEMsa0NBQWtDOzs0RkFBbEMsa0NBQWtDO2tCQUQ5QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGV2aWNlUHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZXNTZXJ2aWNlIH0gZnJvbSAnLi9kZXZpY2UtcHJvdmlzaW9uZWQtY2VydGlmaWNhdGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZXZpY2VQcm92aXNpb25lZENlcnRpZmljYXRlc0d1YXJkIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkZXZpY2VQcm92aXNpb25lZENlcnRpZmljYXRlc1NlcnZpY2U6IERldmljZVByb3Zpc2lvbmVkQ2VydGlmaWNhdGVzU2VydmljZSkge31cblxuICBhc3luYyBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCkge1xuICAgIGNvbnN0IGNvbnRleHREYXRhID0gcm91dGUuZGF0YS5jb250ZXh0RGF0YSB8fCByb3V0ZS5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YTtcbiAgICBpZiAoIWNvbnRleHREYXRhKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcm92aXNpb25lZENlcnRpZmljYXRlcyA9XG4gICAgICAgIGF3YWl0IHRoaXMuZGV2aWNlUHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZXNTZXJ2aWNlLmdldERldmljZVByb3Zpc2lvbmVkQ2VydGlmaWNhdGVzKFxuICAgICAgICAgIGNvbnRleHREYXRhXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gcHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZXM/Lmxlbmd0aCA+IDA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -17,7 +17,7 @@ export class DeviceProvisionedCertificatesService {
|
|
|
17
17
|
const url = `/inventory/managedObjects/${device.id}/user`;
|
|
18
18
|
const res = await this.client.fetch(url, { method });
|
|
19
19
|
const data = await res.json();
|
|
20
|
-
if (res.status
|
|
20
|
+
if (res.status >= 400) {
|
|
21
21
|
throw new Error(data.message);
|
|
22
22
|
}
|
|
23
23
|
return data.userName;
|
|
@@ -28,4 +28,4 @@ export class DeviceProvisionedCertificatesService {
|
|
|
28
28
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceProvisionedCertificatesService, decorators: [{
|
|
29
29
|
type: Injectable
|
|
30
30
|
}], ctorParameters: () => [{ type: i1.UserService }, { type: i1.FetchClient }] });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXByb3Zpc2lvbmVkLWNlcnRpZmljYXRlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2aWNlLXByb3Zpc2lvbmVkLWNlcnRpZmljYXRlcy9kZXZpY2UtcHJvdmlzaW9uZWQtY2VydGlmaWNhdGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBa0IsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUkzQyxNQUFNLE9BQU8sb0NBQW9DO0lBQy9DLFlBQ1UsV0FBd0IsRUFDeEIsTUFBbUI7UUFEbkIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtJQUMxQixDQUFDO0lBRUosS0FBSyxDQUFDLGdDQUFnQyxDQUNwQyxNQUFzQjtRQUV0QixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3RDLENBQUM7SUFFTyxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTTtRQUNwQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDckIsTUFBTSxHQUFHLEdBQUcsNkJBQTZCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQztRQUMxRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDckQsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQzsrR0F2QlUsb0NBQW9DO21IQUFwQyxvQ0FBb0M7OzRGQUFwQyxvQ0FBb0M7a0JBRGhELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZXRjaENsaWVudCwgSU1hbmFnZWRPYmplY3QsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZSB9IGZyb20gJy4vZGV2aWNlLXRhYi1wcm92aXNpb25lZC1jZXJ0aWZpY2F0ZXMuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERldmljZVByb3Zpc2lvbmVkQ2VydGlmaWNhdGVzU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2xpZW50OiBGZXRjaENsaWVudFxuICApIHt9XG5cbiAgYXN5bmMgZ2V0RGV2aWNlUHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZXMoXG4gICAgZGV2aWNlOiBJTWFuYWdlZE9iamVjdFxuICApOiBQcm9taXNlPFByb3Zpc2lvbmVkQ2VydGlmaWNhdGVbXSB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGRldmljZUlkID0gYXdhaXQgdGhpcy5nZXREZXZpY2VVc2VyTmFtZShkZXZpY2UpO1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy51c2VyU2VydmljZS5kZXRhaWwoZGV2aWNlSWQsIHsgd2l0aENlcnRpZmljYXRlczogdHJ1ZSB9KTtcbiAgICByZXR1cm4gZGF0YS5wcm92aXNpb25lZENlcnRpZmljYXRlcztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RGV2aWNlVXNlck5hbWUoZGV2aWNlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBtZXRob2QgPSAnR0VUJztcbiAgICBjb25zdCB1cmwgPSBgL2ludmVudG9yeS9tYW5hZ2VkT2JqZWN0cy8ke2RldmljZS5pZH0vdXNlcmA7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2godXJsLCB7IG1ldGhvZCB9KTtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICBpZiAocmVzLnN0YXR1cyA+PSA0MDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihkYXRhLm1lc3NhZ2UpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YS51c2VyTmFtZTtcbiAgfVxufVxuIl19
|
|
@@ -6,14 +6,16 @@ import { saveAs } from 'file-saver';
|
|
|
6
6
|
import { BsModalRef } from 'ngx-bootstrap/modal';
|
|
7
7
|
import { PRODUCT_EXPERIENCE_BASE_REGISTRATION } from '../extensible/base-device-registration.model';
|
|
8
8
|
import { RegisterDeviceService } from '../register-device.service';
|
|
9
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
11
|
import * as i1 from "@c8y/ngx-components";
|
|
11
12
|
import * as i2 from "@c8y/client";
|
|
12
13
|
import * as i3 from "../register-device.service";
|
|
13
14
|
import * as i4 from "ngx-bootstrap/modal";
|
|
14
|
-
import * as i5 from "@
|
|
15
|
-
import * as i6 from "@angular/
|
|
16
|
-
import * as i7 from "@
|
|
15
|
+
import * as i5 from "@ngx-translate/core";
|
|
16
|
+
import * as i6 from "@angular/common";
|
|
17
|
+
import * as i7 from "@angular/cdk/stepper";
|
|
18
|
+
import * as i8 from "@ngx-formly/core";
|
|
17
19
|
const registerDeviceBulkSchema = {
|
|
18
20
|
$schema: 'https://json-schema.org/draft/2019-09/schema',
|
|
19
21
|
type: 'object',
|
|
@@ -42,13 +44,14 @@ const csvHeaders = [
|
|
|
42
44
|
const fullCsvHeaders = [...csvHeaders, 'CREDENTIALS'];
|
|
43
45
|
export const ESTCsvHeaders = [...csvHeaders, 'ENROLLMENT_OTP'];
|
|
44
46
|
export class BulkDeviceRegistrationModalComponent {
|
|
45
|
-
constructor(jsonschema, deviceRegistrationService, registerDeviceService, bsModalRef, gainsightService, featureService) {
|
|
47
|
+
constructor(jsonschema, deviceRegistrationService, registerDeviceService, bsModalRef, gainsightService, featureService, translateService) {
|
|
46
48
|
this.jsonschema = jsonschema;
|
|
47
49
|
this.deviceRegistrationService = deviceRegistrationService;
|
|
48
50
|
this.registerDeviceService = registerDeviceService;
|
|
49
51
|
this.bsModalRef = bsModalRef;
|
|
50
52
|
this.gainsightService = gainsightService;
|
|
51
53
|
this.featureService = featureService;
|
|
54
|
+
this.translateService = translateService;
|
|
52
55
|
this.form = new FormGroup({});
|
|
53
56
|
this.model = {};
|
|
54
57
|
this.certificateAuthorityFeatureEnabled = this.featureService
|
|
@@ -113,7 +116,7 @@ export class BulkDeviceRegistrationModalComponent {
|
|
|
113
116
|
download(headers, fileName) {
|
|
114
117
|
const headerRaw = headers.map(header => `"${header}"`).join(';');
|
|
115
118
|
const binaryFile = new Blob([headerRaw], { type: 'text/csv' });
|
|
116
|
-
saveAs(binaryFile, fileName);
|
|
119
|
+
saveAs(binaryFile, this.translateService.instant(fileName));
|
|
117
120
|
}
|
|
118
121
|
complete() {
|
|
119
122
|
this.registerDeviceService.list();
|
|
@@ -126,14 +129,14 @@ export class BulkDeviceRegistrationModalComponent {
|
|
|
126
129
|
const csvBulkFile = model?.csvBulkFile;
|
|
127
130
|
return csvBulkFile ? csvBulkFile[0]?.file : undefined;
|
|
128
131
|
}
|
|
129
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BulkDeviceRegistrationModalComponent, deps: [{ token: i1.C8yJSONSchema }, { token: i2.DeviceRegistrationBulkService }, { token: i3.RegisterDeviceService }, { token: i4.BsModalRef }, { token: i1.GainsightService }, { token: i2.FeatureService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
130
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BulkDeviceRegistrationModalComponent, selector: "bulk-device-registration", viewQueries: [{ propertyName: "stepper", first: true, predicate: C8yStepper, descendants: true, static: true }], ngImport: i0, template: "<c8y-modal\n [title]=\"'Bulk device registration' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <i c8yIcon=\"upload\"></i>\n </ng-container>\n\n <c8y-stepper [hideStepProgress]=\"true\" linear id=\"modal-body\">\n <cdk-step>\n <p class=\"modal-subtitle sticky-top\" translate>Register devices in bulk</p>\n\n <c8y-form-group class=\"d-block p-24 p-t-16 p-b-0 m-b-0\">\n <formly-form [form]=\"form\" [fields]=\"template\" [model]=\"model\"></formly-form>\n </c8y-form-group>\n\n <div class=\"p-24 m-t-0 bg-level-1\">\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Simple registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all registration requests at once, then each one needs to go through regular\n acceptance process.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadSimple()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Full registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all device credentials and devices using provided list of property values.\n Devices can start communicating with the platform immediately.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadFull()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\" *ngIf=\"certificateAuthorityFeatureEnabled | async\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Full registration with device certificate creation</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates device certificates and devices using the provided list of property values. Once the certificates are provisioned, the devices can immediately start communicating with the platform\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadEst()\"\n >\n <i c8yIcon=\"download\"></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [disabled]=\"form.invalid\"\n [pending]=\"pending\"\n (onCancel)=\"cancel()\"\n (onNext)=\"upload()\"\n [labels]=\"{ next: 'Upload' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n\n <cdk-step state=\"final\">\n <div class=\"m-24\">\n <div *ngIf=\"success; else warning\">\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n <ng-template #warning>\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n </ng-template>\n <c8y-list-group class=\"separator-top m-t-16\">\n <ng-container *ngIf=\"result; else failedResponse\">\n <c8y-li *ngIf=\"success; else fail\">\n <c8y-li-icon class=\"text-success\" icon=\"check-circle\"></c8y-li-icon>\n <p>{{ 'All devices have been processed.' | translate }}</p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n <ng-template #fail>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" icon=\"ban\"></c8y-li-icon>\n <p\n ngNonBindable\n [translateParams]=\"{ count: result?.numberOfFailed, total: result?.numberOfAll }\"\n translate\n >\n Failed to process {{ count }} out of {{ total }}.\n </p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </ng-container>\n <ng-template #failedResponse>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" [icon]=\"'ban'\"></c8y-li-icon>\n <small>{{ failedResult?.message | translate }}</small>\n <c8y-li-collapse>\n <pre><code>{{ failedResult | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </c8y-list-group>\n </div>\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ next: true }\"\n (onNext)=\"complete()\"\n [labels]=\"{ next: success ? 'Close' : 'Cancel' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</c8y-modal>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type:
|
|
132
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BulkDeviceRegistrationModalComponent, deps: [{ token: i1.C8yJSONSchema }, { token: i2.DeviceRegistrationBulkService }, { token: i3.RegisterDeviceService }, { token: i4.BsModalRef }, { token: i1.GainsightService }, { token: i2.FeatureService }, { token: i5.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
133
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BulkDeviceRegistrationModalComponent, selector: "bulk-device-registration", viewQueries: [{ propertyName: "stepper", first: true, predicate: C8yStepper, descendants: true, static: true }], ngImport: i0, template: "<c8y-modal\n [title]=\"'Bulk device registration' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <i c8yIcon=\"upload\"></i>\n </ng-container>\n\n <c8y-stepper [hideStepProgress]=\"true\" linear id=\"modal-body\">\n <cdk-step>\n <p class=\"modal-subtitle sticky-top\" translate>Register devices in bulk</p>\n\n <c8y-form-group class=\"d-block p-24 p-t-16 p-b-0 m-b-0\">\n <formly-form [form]=\"form\" [fields]=\"template\" [model]=\"model\"></formly-form>\n </c8y-form-group>\n\n <div class=\"p-24 m-t-0 bg-level-1\">\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Simple registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all registration requests at once, then each one needs to go through regular\n acceptance process.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadSimple()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Full registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all device credentials and devices using provided list of property values.\n Devices can start communicating with the platform immediately.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadFull()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\" *ngIf=\"certificateAuthorityFeatureEnabled | async\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Full registration with device certificate creation</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates device certificates and devices using the provided list of property values. Once the certificates are provisioned, the devices can immediately start communicating with the platform\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadEst()\"\n >\n <i c8yIcon=\"download\"></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [disabled]=\"form.invalid\"\n [pending]=\"pending\"\n (onCancel)=\"cancel()\"\n (onNext)=\"upload()\"\n [labels]=\"{ next: 'Upload' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n\n <cdk-step state=\"final\">\n <div class=\"m-24\">\n <div *ngIf=\"success; else warning\">\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n <ng-template #warning>\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n </ng-template>\n <c8y-list-group class=\"separator-top m-t-16\">\n <ng-container *ngIf=\"result; else failedResponse\">\n <c8y-li *ngIf=\"success; else fail\">\n <c8y-li-icon class=\"text-success\" icon=\"check-circle\"></c8y-li-icon>\n <p>{{ 'All devices have been processed.' | translate }}</p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n <ng-template #fail>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" icon=\"ban\"></c8y-li-icon>\n <p\n ngNonBindable\n [translateParams]=\"{ count: result?.numberOfFailed, total: result?.numberOfAll }\"\n translate\n >\n Failed to process {{ count }} out of {{ total }}.\n </p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </ng-container>\n <ng-template #failedResponse>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" [icon]=\"'ban'\"></c8y-li-icon>\n <small>{{ failedResult?.message | translate }}</small>\n <c8y-li-collapse>\n <pre><code>{{ failedResult | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </c8y-list-group>\n </div>\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ next: true }\"\n (onNext)=\"complete()\"\n [labels]=\"{ next: success ? 'Close' : 'Cancel' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</c8y-modal>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.OperationResultComponent, selector: "c8y-operation-result", inputs: ["text", "vertical", "size", "type"] }, { kind: "component", type: i1.ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i1.C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "component", type: i7.CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "component", type: i1.C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i1.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i1.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i1.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: i8.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.JsonPipe, name: "json" }] }); }
|
|
131
134
|
}
|
|
132
135
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BulkDeviceRegistrationModalComponent, decorators: [{
|
|
133
136
|
type: Component,
|
|
134
137
|
args: [{ selector: 'bulk-device-registration', template: "<c8y-modal\n [title]=\"'Bulk device registration' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <i c8yIcon=\"upload\"></i>\n </ng-container>\n\n <c8y-stepper [hideStepProgress]=\"true\" linear id=\"modal-body\">\n <cdk-step>\n <p class=\"modal-subtitle sticky-top\" translate>Register devices in bulk</p>\n\n <c8y-form-group class=\"d-block p-24 p-t-16 p-b-0 m-b-0\">\n <formly-form [form]=\"form\" [fields]=\"template\" [model]=\"model\"></formly-form>\n </c8y-form-group>\n\n <div class=\"p-24 m-t-0 bg-level-1\">\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Simple registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all registration requests at once, then each one needs to go through regular\n acceptance process.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadSimple()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Full registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all device credentials and devices using provided list of property values.\n Devices can start communicating with the platform immediately.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadFull()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\" *ngIf=\"certificateAuthorityFeatureEnabled | async\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Full registration with device certificate creation</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates device certificates and devices using the provided list of property values. Once the certificates are provisioned, the devices can immediately start communicating with the platform\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadEst()\"\n >\n <i c8yIcon=\"download\"></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [disabled]=\"form.invalid\"\n [pending]=\"pending\"\n (onCancel)=\"cancel()\"\n (onNext)=\"upload()\"\n [labels]=\"{ next: 'Upload' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n\n <cdk-step state=\"final\">\n <div class=\"m-24\">\n <div *ngIf=\"success; else warning\">\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n <ng-template #warning>\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n </ng-template>\n <c8y-list-group class=\"separator-top m-t-16\">\n <ng-container *ngIf=\"result; else failedResponse\">\n <c8y-li *ngIf=\"success; else fail\">\n <c8y-li-icon class=\"text-success\" icon=\"check-circle\"></c8y-li-icon>\n <p>{{ 'All devices have been processed.' | translate }}</p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n <ng-template #fail>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" icon=\"ban\"></c8y-li-icon>\n <p\n ngNonBindable\n [translateParams]=\"{ count: result?.numberOfFailed, total: result?.numberOfAll }\"\n translate\n >\n Failed to process {{ count }} out of {{ total }}.\n </p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </ng-container>\n <ng-template #failedResponse>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" [icon]=\"'ban'\"></c8y-li-icon>\n <small>{{ failedResult?.message | translate }}</small>\n <c8y-li-collapse>\n <pre><code>{{ failedResult | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </c8y-list-group>\n </div>\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ next: true }\"\n (onNext)=\"complete()\"\n [labels]=\"{ next: success ? 'Close' : 'Cancel' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</c8y-modal>\n" }]
|
|
135
|
-
}], ctorParameters: () => [{ type: i1.C8yJSONSchema }, { type: i2.DeviceRegistrationBulkService }, { type: i3.RegisterDeviceService }, { type: i4.BsModalRef }, { type: i1.GainsightService }, { type: i2.FeatureService }], propDecorators: { stepper: [{
|
|
138
|
+
}], ctorParameters: () => [{ type: i1.C8yJSONSchema }, { type: i2.DeviceRegistrationBulkService }, { type: i3.RegisterDeviceService }, { type: i4.BsModalRef }, { type: i1.GainsightService }, { type: i2.FeatureService }, { type: i5.TranslateService }], propDecorators: { stepper: [{
|
|
136
139
|
type: ViewChild,
|
|
137
140
|
args: [C8yStepper, { static: true }]
|
|
138
141
|
}] } });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay1kZXZpY2UtcmVnaXN0cmF0aW9uLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlZ2lzdGVyLWRldmljZS9idWxrL2J1bGstZGV2aWNlLXJlZ2lzdHJhdGlvbi1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9yZWdpc3Rlci1kZXZpY2UvYnVsay9idWxrLWRldmljZS1yZWdpc3RyYXRpb24tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsY0FBYyxFQUVmLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXBHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7QUFFbkUsTUFBTSx3QkFBd0IsR0FBVztJQUN2QyxPQUFPLEVBQUUsOENBQThDO0lBQ3ZELElBQUksRUFBRSxRQUFRO0lBQ2QsVUFBVSxFQUFFO1FBQ1YsV0FBVyxFQUFFO1lBQ1gsSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1lBQ2pDLFdBQVcsRUFBRSxPQUFPLENBQ2xCLHVHQUF1RyxDQUN4RztZQUNELGdCQUFnQixFQUFFLEtBQUs7U0FD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bnQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgRGV2aWNlUmVnaXN0cmF0aW9uQnVsa1NlcnZpY2UsXG4gIEZlYXR1cmVTZXJ2aWNlLFxuICBJRGV2aWNlUmVnaXN0cmF0aW9uQnVsa1Jlc3VsdFxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBDOHlKU09OU2NoZW1hLCBDOHlTdGVwcGVyLCBHYWluc2lnaHRTZXJ2aWNlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBQUk9EVUNUX0VYUEVSSUVOQ0VfQkFTRV9SRUdJU1RSQVRJT04gfSBmcm9tICcuLi9leHRlbnNpYmxlL2Jhc2UtZGV2aWNlLXJlZ2lzdHJhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBCdWxrRmFpbGVkUmVzdWx0IH0gZnJvbSAnLi4vZXh0ZW5zaWJsZS9idWxrL2V4dGVuc2libGUtYnVsay1kZXZpY2UtcmVnaXN0cmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IFJlZ2lzdGVyRGV2aWNlU2VydmljZSB9IGZyb20gJy4uL3JlZ2lzdGVyLWRldmljZS5zZXJ2aWNlJztcblxuY29uc3QgcmVnaXN0ZXJEZXZpY2VCdWxrU2NoZW1hOiBvYmplY3QgPSB7XG4gICRzY2hlbWE6ICdodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDE5LTA5L3NjaGVtYScsXG4gIHR5cGU6ICdvYmplY3QnLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgY3N2QnVsa0ZpbGU6IHtcbiAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICB0aXRsZTogZ2V0dGV4dCgnQ1NWIGZpbGUgdXBsb2FkJyksXG4gICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgICAgICAgJ1lvdSBjYW4gdXNlIGZpbGUgdXBsb2FkIGNvbXBvbmVudCB0byBsZXQgdXNlcnMgc2VuZCBmaWxlcy4gVGhpcyBpbnB1dCBhY2NlcHRzIG9ubHkgYSBzaW5nbGUgQ1NWIGZpbGUuJ1xuICAgICAgKSxcbiAgICAgIGNvbnRlbnRNZWRpYVR5cGU6ICdjc3YnXG4gICAgfVxuICB9LFxuICByZXF1aXJlZDogWydjc3ZCdWxrRmlsZSddLFxuICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2Vcbn07XG5cbmNvbnN0IHNpbXBsZUNzdkhlYWRlcnM6IHN0cmluZ1tdID0gWydJRCcsICdQQVRIJ107XG5jb25zdCBjc3ZIZWFkZXJzOiBzdHJpbmdbXSA9IFtcbiAgJ0lEJyxcbiAgJ1RZUEUnLFxuICAnTkFNRScsXG4gICdJQ0NJRCcsXG4gICdJRFRZUEUnLFxuICAnUEFUSCcsXG4gICdTSEVMTCcsXG4gICdBVVRIX1RZUEUnXG5dO1xuY29uc3QgZnVsbENzdkhlYWRlcnM6IHN0cmluZ1tdID0gWy4uLmNzdkhlYWRlcnMsICdDUkVERU5USUFMUyddO1xuZXhwb3J0IGNvbnN0IEVTVENzdkhlYWRlcnM6IHN0cmluZ1tdID0gWy4uLmNzdkhlYWRlcnMsICdFTlJPTExNRU5UX09UUCddO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdidWxrLWRldmljZS1yZWdpc3RyYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJ2J1bGstZGV2aWNlLXJlZ2lzdHJhdGlvbi1tb2RhbC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQnVsa0RldmljZVJlZ2lzdHJhdGlvbk1vZGFsQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZChDOHlTdGVwcGVyLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdGVwcGVyOiBDOHlTdGVwcGVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIHBlbmRpbmc6IGJvb2xlYW47XG4gIHJlc3VsdDogSURldmljZVJlZ2lzdHJhdGlvbkJ1bGtSZXN1bHQ7XG4gIGZhaWxlZFJlc3VsdDogQnVsa0ZhaWxlZFJlc3VsdDtcbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBtb2RlbCA9IHt9O1xuICB0ZW1wbGF0ZTogRm9ybWx5RmllbGRDb25maWdbXTtcbiAgY2VydGlmaWNhdGVBdXRob3JpdHlGZWF0dXJlRW5hYmxlZCA9IHRoaXMuZmVhdHVyZVNlcnZpY2VcbiAgICAuZGV0YWlsKCdjZXJ0aWZpY2F0ZS1hdXRob3JpdHknKVxuICAgIC50aGVuKCh7IGRhdGEgfSkgPT4gZGF0YS5hY3RpdmUpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUganNvbnNjaGVtYTogQzh5SlNPTlNjaGVtYSxcbiAgICBwcml2YXRlIGRldmljZVJlZ2lzdHJhdGlvblNlcnZpY2U6IERldmljZVJlZ2lzdHJhdGlvbkJ1bGtTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVnaXN0ZXJEZXZpY2VTZXJ2aWNlOiBSZWdpc3RlckRldmljZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBic01vZGFsUmVmOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZSxcbiAgICBwcml2YXRlIGZlYXR1cmVTZXJ2aWNlOiBGZWF0dXJlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IFt0aGlzLmpzb25zY2hlbWEudG9GaWVsZENvbmZpZyhyZWdpc3RlckRldmljZUJ1bGtTY2hlbWEpXTtcbiAgfVxuXG4gIHVwbG9hZCgpIHtcbiAgICB0aGlzLnBlbmRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGZpbGUgPSB0aGlzLmdldEZpbGUodGhpcy5tb2RlbCk7XG4gICAgdGhpcy5kZXZpY2VSZWdpc3RyYXRpb25TZXJ2aWNlXG4gICAgICAuY3JlYXRlKGZpbGUpXG4gICAgICAudGhlbigoeyByZXMsIGRhdGEgfSkgPT4ge1xuICAgICAgICBpZiAocmVzLnN0YXR1cyA8IDQwMCkge1xuICAgICAgICAgIHRoaXMucmVzdWx0ID0gZGF0YTtcbiAgICAgICAgICB0aGlzLnN1Y2Nlc3MgPSBkYXRhLm51bWJlck9mRmFpbGVkID09PSAwICYmIGRhdGEubnVtYmVyT2ZTdWNjZXNzZnVsID09PSBkYXRhLm51bWJlck9mQWxsO1xuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuc3VjY2Vzc1xuICAgICAgICAgICAgPyBnZXR0ZXh0KCdEZXZpY2UgcmVnaXN0cmF0aW9uIGNyZWF0ZWQuJylcbiAgICAgICAgICAgIDogKHRoaXMubWVzc2FnZSA9IGdldHRleHQoJ0RldmljZSByZWdpc3RyYXRpb24gZmFpbGVkLicpKTtcbiAgICAgICAgICBpZiAodGhpcy5zdWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5FVkVOVCwge1xuICAgICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5SRVNVTFQuU1VDQ0VTUyxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfQkFTRV9SRUdJU1RSQVRJT04uQ09NUE9ORU5ULkJVTEtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5FVkVOVCwge1xuICAgICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5SRVNVTFQuRkFJTFVSRSxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfQkFTRV9SRUdJU1RSQVRJT04uQ09NUE9ORU5ULkJVTEtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZhaWxlZFJlc3VsdCA9IGRhdGEgYXMgdW5rbm93biBhcyBCdWxrRmFpbGVkUmVzdWx0O1xuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IGdldHRleHQoJ0RldmljZSByZWdpc3RyYXRpb24gZmFpbGVkLicpO1xuICAgICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLkVWRU5ULCB7XG4gICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5SRVNVTFQuRkFJTFVSRSxcbiAgICAgICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLkNPTVBPTkVOVC5CVUxLXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb2RlbCA9IHt9O1xuICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBnZXR0ZXh0KCdFcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSB1cGxvYWRlZCBmaWxlLicpO1xuICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZG93bmxvYWRTaW1wbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZG93bmxvYWQoc2ltcGxlQ3N2SGVhZGVycywgZ2V0dGV4dCgnU2ltcGxlIGJ1bGsgcmVnaXN0cmF0aW9uIC0gdGVtcGxhdGUuY3N2JykpO1xuICB9XG5cbiAgZG93bmxvYWRGdWxsKCkge1xuICAgIHJldHVybiB0aGlzLmRvd25sb2FkKGZ1bGxDc3ZIZWFkZXJzLCBnZXR0ZXh0KCdGdWxsIGJ1bGsgcmVnaXN0cmF0aW9uIC0gdGVtcGxhdGUuY3N2JykpO1xuICB9XG5cbiAgZG93bmxvYWRFc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZG93bmxvYWQoRVNUQ3N2SGVhZGVycywgZ2V0dGV4dCgnRVNUIHJlZ2lzdHJhdGlvbiAtIHRlbXBsYXRlLmNzdicpKTtcbiAgfVxuXG4gIGRvd25sb2FkKGhlYWRlcnM6IHN0cmluZ1tdLCBmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgaGVhZGVyUmF3ID0gaGVhZGVycy5tYXAoaGVhZGVyID0+IGBcIiR7aGVhZGVyfVwiYCkuam9pbignOycpO1xuICAgIGNvbnN0IGJpbmFyeUZpbGUgPSBuZXcgQmxvYihbaGVhZGVyUmF3XSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pO1xuICAgIHNhdmVBcyhiaW5hcnlGaWxlLCBmaWxlTmFtZSk7XG4gIH1cblxuICBjb21wbGV0ZSgpIHtcbiAgICB0aGlzLnJlZ2lzdGVyRGV2aWNlU2VydmljZS5saXN0KCk7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlKG1vZGVsKTogRmlsZSB7XG4gICAgY29uc3QgY3N2QnVsa0ZpbGUgPSAobW9kZWwgYXMgYW55KT8uY3N2QnVsa0ZpbGU7XG4gICAgcmV0dXJuIGNzdkJ1bGtGaWxlID8gY3N2QnVsa0ZpbGVbMF0/LmZpbGUgOiB1bmRlZmluZWQ7XG4gIH1cbn1cbiIsIjxjOHktbW9kYWxcbiAgW3RpdGxlXT1cIidCdWxrIGRldmljZSByZWdpc3RyYXRpb24nIHwgdHJhbnNsYXRlXCJcbiAgW2hlYWRlckNsYXNzZXNdPVwiJ2RpYWxvZy1oZWFkZXInXCJcbiAgW2N1c3RvbUZvb3Rlcl09XCJ0cnVlXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBjOHktbW9kYWwtdGl0bGU+XG4gICAgPGkgYzh5SWNvbj1cInVwbG9hZFwiPjwvaT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGM4eS1zdGVwcGVyIFtoaWRlU3RlcFByb2dyZXNzXT1cInRydWVcIiBsaW5lYXIgaWQ9XCJtb2RhbC1ib2R5XCI+XG4gICAgPGNkay1zdGVwPlxuICAgICAgPHAgY2xhc3M9XCJtb2RhbC1zdWJ0aXRsZSBzdGlja3ktdG9wXCIgdHJhbnNsYXRlPlJlZ2lzdGVyIGRldmljZXMgaW4gYnVsazwvcD5cblxuICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwiZC1ibG9jayBwLTI0IHAtdC0xNiBwLWItMCBtLWItMFwiPlxuICAgICAgICA8Zm9ybWx5LWZvcm0gW2Zvcm1dPVwiZm9ybVwiIFtmaWVsZHNdPVwidGVtcGxhdGVcIiBbbW9kZWxdPVwibW9kZWxcIj48L2Zvcm1seS1mb3JtPlxuICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgPGRpdiBjbGFzcz1cInAtMjQgbS10LTAgYmctbGV2ZWwtMVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmF5LXdoaXRlIHNlcGFyYXRvci1ib3R0b20gcC10LTE2IHAtYi0xNiBwLWwtMjQgcC1yLTI0XCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tYi04IHRleHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyB0cmFuc2xhdGU+U2ltcGxlIHJlZ2lzdHJhdGlvbjwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWRcIiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgICAgQ3JlYXRlcyBhbGwgcmVnaXN0cmF0aW9uIHJlcXVlc3RzIGF0IG9uY2UsIHRoZW4gZWFjaCBvbmUgbmVlZHMgdG8gZ28gdGhyb3VnaCByZWd1bGFyXG4gICAgICAgICAgICAgICAgYWNjZXB0YW5jZSBwcm9jZXNzLlxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1iLTE2IG0tdC0xNlwiPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfc2VsZlwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkU2ltcGxlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImRvd25sb2FkXCIgdHJhbnNsYXRlPjwvaT5cbiAgICAgICAgICAgICAgICB7eyAnRG93bmxvYWQgdGVtcGxhdGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmF5LXdoaXRlIHNlcGFyYXRvci1ib3R0b20gcC10LTE2IHAtYi0xNiBwLWwtMjQgcC1yLTI0XCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tYi04IHRleHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyB0cmFuc2xhdGU+RnVsbCByZWdpc3RyYXRpb248L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICAgIENyZWF0ZXMgYWxsIGRldmljZSBjcmVkZW50aWFscyBhbmQgZGV2aWNlcyB1c2luZyBwcm92aWRlZCBsaXN0IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgICAgICAgICAgICBEZXZpY2VzIGNhbiBzdGFydCBjb21tdW5pY2F0aW5nIHdpdGggdGhlIHBsYXRmb3JtIGltbWVkaWF0ZWx5LlxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1iLTE2IG0tdC0xNlwiPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfc2VsZlwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkRnVsbCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJkb3dubG9hZFwiIHRyYW5zbGF0ZT48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JheS13aGl0ZSBzZXBhcmF0b3ItYm90dG9tIHAtdC0xNiBwLWItMTYgcC1sLTI0IHAtci0yNFwiICpuZ0lmPVwiY2VydGlmaWNhdGVBdXRob3JpdHlGZWF0dXJlRW5hYmxlZCB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tYi04IHRleHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyB0cmFuc2xhdGU+RnVsbCByZWdpc3RyYXRpb24gd2l0aCBkZXZpY2UgY2VydGlmaWNhdGUgY3JlYXRpb248L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICAgIENyZWF0ZXMgZGV2aWNlIGNlcnRpZmljYXRlcyBhbmQgZGV2aWNlcyB1c2luZyB0aGUgcHJvdmlkZWQgbGlzdCBvZiBwcm9wZXJ0eSB2YWx1ZXMuIE9uY2UgdGhlIGNlcnRpZmljYXRlcyBhcmUgcHJvdmlzaW9uZWQsIHRoZSBkZXZpY2VzIGNhbiBpbW1lZGlhdGVseSBzdGFydCBjb21tdW5pY2F0aW5nIHdpdGggdGhlIHBsYXRmb3JtXG4gICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWItMTYgbS10LTE2XCI+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRG93bmxvYWQgdGVtcGxhdGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9zZWxmXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRFc3QoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiZG93bmxvYWRcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Yzh5LXN0ZXBwZXItYnV0dG9uc1xuICAgICAgICBjbGFzcz1cInN0aWNreS1ib3R0b20gZC1ibG9jayBwLXQtMTYgcC1iLTE2IHNlcGFyYXRvci10b3AgYmctbGV2ZWwtMFwiXG4gICAgICAgIFtzaG93QnV0dG9uc109XCJ7IGNhbmNlbDogdHJ1ZSwgbmV4dDogdHJ1ZSB9XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXG4gICAgICAgIFtwZW5kaW5nXT1cInBlbmRpbmdcIlxuICAgICAgICAob25DYW5jZWwpPVwiY2FuY2VsKClcIlxuICAgICAgICAob25OZXh0KT1cInVwbG9hZCgpXCJcbiAgICAgICAgW2xhYmVsc109XCJ7IG5leHQ6ICdVcGxvYWQnIH1cIlxuICAgICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgICA8L2Nkay1zdGVwPlxuXG4gICAgPGNkay1zdGVwIHN0YXRlPVwiZmluYWxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtLTI0XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdWNjZXNzOyBlbHNlIHdhcm5pbmdcIj5cbiAgICAgICAgICA8Yzh5LW9wZXJhdGlvbi1yZXN1bHRcbiAgICAgICAgICAgIHRleHQ9XCJ7eyBtZXNzYWdlIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIFtzaXplXT1cIjg0XCJcbiAgICAgICAgICAgIFt2ZXJ0aWNhbF09XCJ0cnVlXCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICAgICAgPjwvYzh5LW9wZXJhdGlvbi1yZXN1bHQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI3dhcm5pbmc+XG4gICAgICAgICAgPGM4eS1vcGVyYXRpb24tcmVzdWx0XG4gICAgICAgICAgICB0ZXh0PVwie3sgbWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICB0eXBlPVwiZXJyb3JcIlxuICAgICAgICAgICAgY2xhc3M9XCJsZWFkXCJcbiAgICAgICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPGM4eS1saXN0LWdyb3VwIGNsYXNzPVwic2VwYXJhdG9yLXRvcCBtLXQtMTZcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzdWx0OyBlbHNlIGZhaWxlZFJlc3BvbnNlXCI+XG4gICAgICAgICAgICA8Yzh5LWxpICpuZ0lmPVwic3VjY2VzczsgZWxzZSBmYWlsXCI+XG4gICAgICAgICAgICAgIDxjOHktbGktaWNvbiBjbGFzcz1cInRleHQtc3VjY2Vzc1wiIGljb249XCJjaGVjay1jaXJjbGVcIj48L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgICA8cD57eyAnQWxsIGRldmljZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4nIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+e3sgcmVzdWx0IHwganNvbiB9fTwvY29kZT48L3ByZT5cbiAgICAgICAgICAgICAgPC9jOHktbGktY29sbGFwc2U+XG4gICAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmFpbD5cbiAgICAgICAgICAgICAgPGM4eS1saT5cbiAgICAgICAgICAgICAgICA8Yzh5LWxpLWljb24gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiIGljb249XCJiYW5cIj48L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInsgY291bnQ6IHJlc3VsdD8ubnVtYmVyT2ZGYWlsZWQsIHRvdGFsOiByZXN1bHQ/Lm51bWJlck9mQWxsIH1cIlxuICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgRmFpbGVkIHRvIHByb2Nlc3Mge3sgY291bnQgfX0gb3V0IG9mIHt7IHRvdGFsIH19LlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8Yzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT57eyByZXN1bHQgfCBqc29uIH19PC9jb2RlPjwvcHJlPlxuICAgICAgICAgICAgICAgIDwvYzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNmYWlsZWRSZXNwb25zZT5cbiAgICAgICAgICAgIDxjOHktbGk+XG4gICAgICAgICAgICAgIDxjOHktbGktaWNvbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgW2ljb25dPVwiJ2JhbidcIj48L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgZmFpbGVkUmVzdWx0Py5tZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPGM4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPnt7IGZhaWxlZFJlc3VsdCB8IGpzb24gfX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICAgIDwvYzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnNcbiAgICAgICAgY2xhc3M9XCJzdGlja3ktYm90dG9tIGQtYmxvY2sgcC10LTE2IHAtYi0xNiBzZXBhcmF0b3ItdG9wIGJnLWxldmVsLTBcIlxuICAgICAgICBbc2hvd0J1dHRvbnNdPVwieyBuZXh0OiB0cnVlIH1cIlxuICAgICAgICAob25OZXh0KT1cImNvbXBsZXRlKClcIlxuICAgICAgICBbbGFiZWxzXT1cInsgbmV4dDogc3VjY2VzcyA/ICdDbG9zZScgOiAnQ2FuY2VsJyB9XCJcbiAgICAgID48L2M4eS1zdGVwcGVyLWJ1dHRvbnM+XG4gICAgPC9jZGstc3RlcD5cbiAgPC9jOHktc3RlcHBlcj5cbjwvYzh5LW1vZGFsPlxuIl19
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay1kZXZpY2UtcmVnaXN0cmF0aW9uLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlZ2lzdGVyLWRldmljZS9idWxrL2J1bGstZGV2aWNlLXJlZ2lzdHJhdGlvbi1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9yZWdpc3Rlci1kZXZpY2UvYnVsay9idWxrLWRldmljZS1yZWdpc3RyYXRpb24tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsY0FBYyxFQUVmLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXBHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7O0FBRXZELE1BQU0sd0JBQXdCLEdBQVc7SUFDdkMsT0FBTyxFQUFFLDhDQUE4QztJQUN2RCxJQUFJLEVBQUUsUUFBUTtJQUNkLFVBQVUsRUFBRTtRQUNWLFdBQVcsRUFBRTtZQUNYLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztZQUNqQyxXQUFXLEVBQUUsT0FB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b0M7a0JBSmhELFNBQVM7K0JBQ0UsMEJBQTBCO3NSQUlLLE9BQU87c0JBQS9DLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBEZXZpY2VSZWdpc3RyYXRpb25CdWxrU2VydmljZSxcbiAgRmVhdHVyZVNlcnZpY2UsXG4gIElEZXZpY2VSZWdpc3RyYXRpb25CdWxrUmVzdWx0XG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEM4eUpTT05TY2hlbWEsIEM4eVN0ZXBwZXIsIEdhaW5zaWdodFNlcnZpY2UsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTiB9IGZyb20gJy4uL2V4dGVuc2libGUvYmFzZS1kZXZpY2UtcmVnaXN0cmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IEJ1bGtGYWlsZWRSZXN1bHQgfSBmcm9tICcuLi9leHRlbnNpYmxlL2J1bGsvZXh0ZW5zaWJsZS1idWxrLWRldmljZS1yZWdpc3RyYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgUmVnaXN0ZXJEZXZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vcmVnaXN0ZXItZGV2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5jb25zdCByZWdpc3RlckRldmljZUJ1bGtTY2hlbWE6IG9iamVjdCA9IHtcbiAgJHNjaGVtYTogJ2h0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMTktMDkvc2NoZW1hJyxcbiAgdHlwZTogJ29iamVjdCcsXG4gIHByb3BlcnRpZXM6IHtcbiAgICBjc3ZCdWxrRmlsZToge1xuICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdDU1YgZmlsZSB1cGxvYWQnKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAgICAgICAnWW91IGNhbiB1c2UgZmlsZSB1cGxvYWQgY29tcG9uZW50IHRvIGxldCB1c2VycyBzZW5kIGZpbGVzLiBUaGlzIGlucHV0IGFjY2VwdHMgb25seSBhIHNpbmdsZSBDU1YgZmlsZS4nXG4gICAgICApLFxuICAgICAgY29udGVudE1lZGlhVHlwZTogJ2NzdidcbiAgICB9XG4gIH0sXG4gIHJlcXVpcmVkOiBbJ2NzdkJ1bGtGaWxlJ10sXG4gIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZVxufTtcblxuY29uc3Qgc2ltcGxlQ3N2SGVhZGVyczogc3RyaW5nW10gPSBbJ0lEJywgJ1BBVEgnXTtcbmNvbnN0IGNzdkhlYWRlcnM6IHN0cmluZ1tdID0gW1xuICAnSUQnLFxuICAnVFlQRScsXG4gICdOQU1FJyxcbiAgJ0lDQ0lEJyxcbiAgJ0lEVFlQRScsXG4gICdQQVRIJyxcbiAgJ1NIRUxMJyxcbiAgJ0FVVEhfVFlQRSdcbl07XG5jb25zdCBmdWxsQ3N2SGVhZGVyczogc3RyaW5nW10gPSBbLi4uY3N2SGVhZGVycywgJ0NSRURFTlRJQUxTJ107XG5leHBvcnQgY29uc3QgRVNUQ3N2SGVhZGVyczogc3RyaW5nW10gPSBbLi4uY3N2SGVhZGVycywgJ0VOUk9MTE1FTlRfT1RQJ107XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2J1bGstZGV2aWNlLXJlZ2lzdHJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnYnVsay1kZXZpY2UtcmVnaXN0cmF0aW9uLW1vZGFsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBCdWxrRGV2aWNlUmVnaXN0cmF0aW9uTW9kYWxDb21wb25lbnQge1xuICBAVmlld0NoaWxkKEM4eVN0ZXBwZXIsIHsgc3RhdGljOiB0cnVlIH0pIHN0ZXBwZXI6IEM4eVN0ZXBwZXI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgcGVuZGluZzogYm9vbGVhbjtcbiAgcmVzdWx0OiBJRGV2aWNlUmVnaXN0cmF0aW9uQnVsa1Jlc3VsdDtcbiAgZmFpbGVkUmVzdWx0OiBCdWxrRmFpbGVkUmVzdWx0O1xuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIG1vZGVsID0ge307XG4gIHRlbXBsYXRlOiBGb3JtbHlGaWVsZENvbmZpZ1tdO1xuICBjZXJ0aWZpY2F0ZUF1dGhvcml0eUZlYXR1cmVFbmFibGVkID0gdGhpcy5mZWF0dXJlU2VydmljZVxuICAgIC5kZXRhaWwoJ2NlcnRpZmljYXRlLWF1dGhvcml0eScpXG4gICAgLnRoZW4oKHsgZGF0YSB9KSA9PiBkYXRhLmFjdGl2ZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBqc29uc2NoZW1hOiBDOHlKU09OU2NoZW1hLFxuICAgIHByaXZhdGUgZGV2aWNlUmVnaXN0cmF0aW9uU2VydmljZTogRGV2aWNlUmVnaXN0cmF0aW9uQnVsa1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWdpc3RlckRldmljZVNlcnZpY2U6IFJlZ2lzdGVyRGV2aWNlU2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBnYWluc2lnaHRTZXJ2aWNlOiBHYWluc2lnaHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmVhdHVyZVNlcnZpY2U6IEZlYXR1cmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IFt0aGlzLmpzb25zY2hlbWEudG9GaWVsZENvbmZpZyhyZWdpc3RlckRldmljZUJ1bGtTY2hlbWEpXTtcbiAgfVxuXG4gIHVwbG9hZCgpIHtcbiAgICB0aGlzLnBlbmRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGZpbGUgPSB0aGlzLmdldEZpbGUodGhpcy5tb2RlbCk7XG4gICAgdGhpcy5kZXZpY2VSZWdpc3RyYXRpb25TZXJ2aWNlXG4gICAgICAuY3JlYXRlKGZpbGUpXG4gICAgICAudGhlbigoeyByZXMsIGRhdGEgfSkgPT4ge1xuICAgICAgICBpZiAocmVzLnN0YXR1cyA8IDQwMCkge1xuICAgICAgICAgIHRoaXMucmVzdWx0ID0gZGF0YTtcbiAgICAgICAgICB0aGlzLnN1Y2Nlc3MgPSBkYXRhLm51bWJlck9mRmFpbGVkID09PSAwICYmIGRhdGEubnVtYmVyT2ZTdWNjZXNzZnVsID09PSBkYXRhLm51bWJlck9mQWxsO1xuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuc3VjY2Vzc1xuICAgICAgICAgICAgPyBnZXR0ZXh0KCdEZXZpY2UgcmVnaXN0cmF0aW9uIGNyZWF0ZWQuJylcbiAgICAgICAgICAgIDogKHRoaXMubWVzc2FnZSA9IGdldHRleHQoJ0RldmljZSByZWdpc3RyYXRpb24gZmFpbGVkLicpKTtcbiAgICAgICAgICBpZiAodGhpcy5zdWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5FVkVOVCwge1xuICAgICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5SRVNVTFQuU1VDQ0VTUyxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfQkFTRV9SRUdJU1RSQVRJT04uQ09NUE9ORU5ULkJVTEtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5FVkVOVCwge1xuICAgICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5SRVNVTFQuRkFJTFVSRSxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfQkFTRV9SRUdJU1RSQVRJT04uQ09NUE9ORU5ULkJVTEtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZhaWxlZFJlc3VsdCA9IGRhdGEgYXMgdW5rbm93biBhcyBCdWxrRmFpbGVkUmVzdWx0O1xuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IGdldHRleHQoJ0RldmljZSByZWdpc3RyYXRpb24gZmFpbGVkLicpO1xuICAgICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLkVWRU5ULCB7XG4gICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5SRVNVTFQuRkFJTFVSRSxcbiAgICAgICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLkNPTVBPTkVOVC5CVUxLXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb2RlbCA9IHt9O1xuICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBnZXR0ZXh0KCdFcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSB1cGxvYWRlZCBmaWxlLicpO1xuICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZG93bmxvYWRTaW1wbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZG93bmxvYWQoc2ltcGxlQ3N2SGVhZGVycywgZ2V0dGV4dCgnU2ltcGxlIGJ1bGsgcmVnaXN0cmF0aW9uIC0gdGVtcGxhdGUuY3N2JykpO1xuICB9XG5cbiAgZG93bmxvYWRGdWxsKCkge1xuICAgIHJldHVybiB0aGlzLmRvd25sb2FkKGZ1bGxDc3ZIZWFkZXJzLCBnZXR0ZXh0KCdGdWxsIGJ1bGsgcmVnaXN0cmF0aW9uIC0gdGVtcGxhdGUuY3N2JykpO1xuICB9XG5cbiAgZG93bmxvYWRFc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZG93bmxvYWQoRVNUQ3N2SGVhZGVycywgZ2V0dGV4dCgnRVNUIHJlZ2lzdHJhdGlvbiAtIHRlbXBsYXRlLmNzdicpKTtcbiAgfVxuXG4gIGRvd25sb2FkKGhlYWRlcnM6IHN0cmluZ1tdLCBmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgaGVhZGVyUmF3ID0gaGVhZGVycy5tYXAoaGVhZGVyID0+IGBcIiR7aGVhZGVyfVwiYCkuam9pbignOycpO1xuICAgIGNvbnN0IGJpbmFyeUZpbGUgPSBuZXcgQmxvYihbaGVhZGVyUmF3XSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pO1xuICAgIHNhdmVBcyhiaW5hcnlGaWxlLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChmaWxlTmFtZSkpO1xuICB9XG5cbiAgY29tcGxldGUoKSB7XG4gICAgdGhpcy5yZWdpc3RlckRldmljZVNlcnZpY2UubGlzdCgpO1xuICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZShtb2RlbCk6IEZpbGUge1xuICAgIGNvbnN0IGNzdkJ1bGtGaWxlID0gKG1vZGVsIGFzIGFueSk/LmNzdkJ1bGtGaWxlO1xuICAgIHJldHVybiBjc3ZCdWxrRmlsZSA/IGNzdkJ1bGtGaWxlWzBdPy5maWxlIDogdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8Yzh5LW1vZGFsXG4gIFt0aXRsZV09XCInQnVsayBkZXZpY2UgcmVnaXN0cmF0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gIFtoZWFkZXJDbGFzc2VzXT1cIidkaWFsb2ctaGVhZGVyJ1wiXG4gIFtjdXN0b21Gb290ZXJdPVwidHJ1ZVwiXG4+XG4gIDxuZy1jb250YWluZXIgYzh5LW1vZGFsLXRpdGxlPlxuICAgIDxpIGM4eUljb249XCJ1cGxvYWRcIj48L2k+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxjOHktc3RlcHBlciBbaGlkZVN0ZXBQcm9ncmVzc109XCJ0cnVlXCIgbGluZWFyIGlkPVwibW9kYWwtYm9keVwiPlxuICAgIDxjZGstc3RlcD5cbiAgICAgIDxwIGNsYXNzPVwibW9kYWwtc3VidGl0bGUgc3RpY2t5LXRvcFwiIHRyYW5zbGF0ZT5SZWdpc3RlciBkZXZpY2VzIGluIGJ1bGs8L3A+XG5cbiAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cImQtYmxvY2sgcC0yNCBwLXQtMTYgcC1iLTAgbS1iLTBcIj5cbiAgICAgICAgPGZvcm1seS1mb3JtIFtmb3JtXT1cImZvcm1cIiBbZmllbGRzXT1cInRlbXBsYXRlXCIgW21vZGVsXT1cIm1vZGVsXCI+PC9mb3JtbHktZm9ybT5cbiAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTI0IG0tdC0wIGJnLWxldmVsLTFcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JheS13aGl0ZSBzZXBhcmF0b3ItYm90dG9tIHAtdC0xNiBwLWItMTYgcC1sLTI0IHAtci0yNFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLWItOCB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmcgdHJhbnNsYXRlPlNpbXBsZSByZWdpc3RyYXRpb248L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICAgIENyZWF0ZXMgYWxsIHJlZ2lzdHJhdGlvbiByZXF1ZXN0cyBhdCBvbmNlLCB0aGVuIGVhY2ggb25lIG5lZWRzIHRvIGdvIHRocm91Z2ggcmVndWxhclxuICAgICAgICAgICAgICAgIGFjY2VwdGFuY2UgcHJvY2Vzcy5cbiAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tYi0xNiBtLXQtMTZcIj5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdEb3dubG9hZCB0ZW1wbGF0ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX3NlbGZcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZFNpbXBsZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJkb3dubG9hZFwiIHRyYW5zbGF0ZT48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JheS13aGl0ZSBzZXBhcmF0b3ItYm90dG9tIHAtdC0xNiBwLWItMTYgcC1sLTI0IHAtci0yNFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLWItOCB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmcgdHJhbnNsYXRlPkZ1bGwgcmVnaXN0cmF0aW9uPC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgICBDcmVhdGVzIGFsbCBkZXZpY2UgY3JlZGVudGlhbHMgYW5kIGRldmljZXMgdXNpbmcgcHJvdmlkZWQgbGlzdCBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICAgICAgICAgICAgRGV2aWNlcyBjYW4gc3RhcnQgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBwbGF0Zm9ybSBpbW1lZGlhdGVseS5cbiAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tYi0xNiBtLXQtMTZcIj5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdEb3dubG9hZCB0ZW1wbGF0ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX3NlbGZcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEZ1bGwoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiZG93bmxvYWRcIiB0cmFuc2xhdGU+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdEb3dubG9hZCB0ZW1wbGF0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJnLWdyYXktd2hpdGUgc2VwYXJhdG9yLWJvdHRvbSBwLXQtMTYgcC1iLTE2IHAtbC0yNCBwLXItMjRcIiAqbmdJZj1cImNlcnRpZmljYXRlQXV0aG9yaXR5RmVhdHVyZUVuYWJsZWQgfCBhc3luY1wiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLWItOCB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmcgdHJhbnNsYXRlPkZ1bGwgcmVnaXN0cmF0aW9uIHdpdGggZGV2aWNlIGNlcnRpZmljYXRlIGNyZWF0aW9uPC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgICBDcmVhdGVzIGRldmljZSBjZXJ0aWZpY2F0ZXMgYW5kIGRldmljZXMgdXNpbmcgdGhlIHByb3ZpZGVkIGxpc3Qgb2YgcHJvcGVydHkgdmFsdWVzLiBPbmNlIHRoZSBjZXJ0aWZpY2F0ZXMgYXJlIHByb3Zpc2lvbmVkLCB0aGUgZGV2aWNlcyBjYW4gaW1tZWRpYXRlbHkgc3RhcnQgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBwbGF0Zm9ybVxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1iLTE2IG0tdC0xNlwiPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfc2VsZlwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkRXN0KClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImRvd25sb2FkXCI+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdEb3dubG9hZCB0ZW1wbGF0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnNcbiAgICAgICAgY2xhc3M9XCJzdGlja3ktYm90dG9tIGQtYmxvY2sgcC10LTE2IHAtYi0xNiBzZXBhcmF0b3ItdG9wIGJnLWxldmVsLTBcIlxuICAgICAgICBbc2hvd0J1dHRvbnNdPVwieyBjYW5jZWw6IHRydWUsIG5leHQ6IHRydWUgfVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIlxuICAgICAgICBbcGVuZGluZ109XCJwZW5kaW5nXCJcbiAgICAgICAgKG9uQ2FuY2VsKT1cImNhbmNlbCgpXCJcbiAgICAgICAgKG9uTmV4dCk9XCJ1cGxvYWQoKVwiXG4gICAgICAgIFtsYWJlbHNdPVwieyBuZXh0OiAnVXBsb2FkJyB9XCJcbiAgICAgID48L2M4eS1zdGVwcGVyLWJ1dHRvbnM+XG4gICAgPC9jZGstc3RlcD5cblxuICAgIDxjZGstc3RlcCBzdGF0ZT1cImZpbmFsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibS0yNFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic3VjY2VzczsgZWxzZSB3YXJuaW5nXCI+XG4gICAgICAgICAgPGM4eS1vcGVyYXRpb24tcmVzdWx0XG4gICAgICAgICAgICB0ZXh0PVwie3sgbWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICB0eXBlPVwic3VjY2Vzc1wiXG4gICAgICAgICAgICBjbGFzcz1cImxlYWRcIlxuICAgICAgICAgID48L2M4eS1vcGVyYXRpb24tcmVzdWx0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN3YXJuaW5nPlxuICAgICAgICAgIDxjOHktb3BlcmF0aW9uLXJlc3VsdFxuICAgICAgICAgICAgdGV4dD1cInt7IG1lc3NhZ2UgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgW3NpemVdPVwiODRcIlxuICAgICAgICAgICAgW3ZlcnRpY2FsXT1cInRydWVcIlxuICAgICAgICAgICAgdHlwZT1cImVycm9yXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICAgICAgPjwvYzh5LW9wZXJhdGlvbi1yZXN1bHQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxjOHktbGlzdC1ncm91cCBjbGFzcz1cInNlcGFyYXRvci10b3AgbS10LTE2XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3VsdDsgZWxzZSBmYWlsZWRSZXNwb25zZVwiPlxuICAgICAgICAgICAgPGM4eS1saSAqbmdJZj1cInN1Y2Nlc3M7IGVsc2UgZmFpbFwiPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWljb24gY2xhc3M9XCJ0ZXh0LXN1Y2Nlc3NcIiBpY29uPVwiY2hlY2stY2lyY2xlXCI+PC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgPHA+e3sgJ0FsbCBkZXZpY2VzIGhhdmUgYmVlbiBwcm9jZXNzZWQuJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgICAgPGM4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPnt7IHJlc3VsdCB8IGpzb24gfX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICAgIDwvYzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZhaWw+XG4gICAgICAgICAgICAgIDxjOHktbGk+XG4gICAgICAgICAgICAgICAgPGM4eS1saS1pY29uIGNsYXNzPVwidGV4dC1kYW5nZXJcIiBpY29uPVwiYmFuXCI+PC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7IGNvdW50OiByZXN1bHQ/Lm51bWJlck9mRmFpbGVkLCB0b3RhbDogcmVzdWx0Py5udW1iZXJPZkFsbCB9XCJcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEZhaWxlZCB0byBwcm9jZXNzIHt7IGNvdW50IH19IG91dCBvZiB7eyB0b3RhbCB9fS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPGM4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+e3sgcmVzdWx0IHwganNvbiB9fTwvY29kZT48L3ByZT5cbiAgICAgICAgICAgICAgICA8L2M4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmFpbGVkUmVzcG9uc2U+XG4gICAgICAgICAgICA8Yzh5LWxpPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWljb24gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiIFtpY29uXT1cIidiYW4nXCI+PC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IGZhaWxlZFJlc3VsdD8ubWVzc2FnZSB8IHRyYW5zbGF0ZSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxjOHktbGktY29sbGFwc2U+XG4gICAgICAgICAgICAgICAgPHByZT48Y29kZT57eyBmYWlsZWRSZXN1bHQgfCBqc29uIH19PC9jb2RlPjwvcHJlPlxuICAgICAgICAgICAgICA8L2M4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICAgIDwvYzh5LWxpPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYzh5LWxpc3QtZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjOHktc3RlcHBlci1idXR0b25zXG4gICAgICAgIGNsYXNzPVwic3RpY2t5LWJvdHRvbSBkLWJsb2NrIHAtdC0xNiBwLWItMTYgc2VwYXJhdG9yLXRvcCBiZy1sZXZlbC0wXCJcbiAgICAgICAgW3Nob3dCdXR0b25zXT1cInsgbmV4dDogdHJ1ZSB9XCJcbiAgICAgICAgKG9uTmV4dCk9XCJjb21wbGV0ZSgpXCJcbiAgICAgICAgW2xhYmVsc109XCJ7IG5leHQ6IHN1Y2Nlc3MgPyAnQ2xvc2UnIDogJ0NhbmNlbCcgfVwiXG4gICAgICA+PC9jOHktc3RlcHBlci1idXR0b25zPlxuICAgIDwvY2RrLXN0ZXA+XG4gIDwvYzh5LXN0ZXBwZXI+XG48L2M4eS1tb2RhbD5cbiJdfQ==
|
|
@@ -210,14 +210,14 @@ export class GeneralDeviceRegistrationComponent {
|
|
|
210
210
|
.createMultiple(dataToSend)
|
|
211
211
|
.pipe(takeUntil(this.destroy$))
|
|
212
212
|
.subscribe(requests => {
|
|
213
|
-
this.success = requests.success;
|
|
213
|
+
this.success = requests.success ?? [];
|
|
214
214
|
if (this.success.length > 0) {
|
|
215
215
|
this.gainsightService.triggerEvent(this.PRODUCT_EXPERIENCE.EVENT, {
|
|
216
216
|
result: this.PRODUCT_EXPERIENCE.RESULT.SUCCESS,
|
|
217
217
|
component: this.PRODUCT_EXPERIENCE.COMPONENT
|
|
218
218
|
});
|
|
219
219
|
}
|
|
220
|
-
this.failed = requests.failed;
|
|
220
|
+
this.failed = requests.failed ?? [];
|
|
221
221
|
if (this.failed.length > 0) {
|
|
222
222
|
this.gainsightService.triggerEvent(this.PRODUCT_EXPERIENCE.EVENT, {
|
|
223
223
|
result: this.PRODUCT_EXPERIENCE.RESULT.FAILURE,
|
|
@@ -304,4 +304,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
304
304
|
type: Component,
|
|
305
305
|
args: [{ selector: 'c8y-general-device-registration', changeDetection: ChangeDetectionStrategy.OnPush, template: "<c8y-modal\n [title]=\"'Register devices' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'c8y-device-connect'\"></span>\n </ng-container>\n <c8y-stepper [hideStepProgress]=\"true\" linear c8y-modal-body>\n <cdk-step [stepControl]=\"form\">\n <div class=\"text-center sticky-top bg-component\">\n <p class=\"text-medium text-16 separator-bottom p-16\" translate>Register general devices</p>\n <label\n class=\"c8y-switch m-24 a-i-center\"\n title=\"{{ 'Create device certificates during device registration' | translate }}\"\n for=\"useEST\"\n *ngIf=\"certificateAuthorityFeatureEnabled | async\"\n >\n <input\n type=\"checkbox\"\n name=\"useEST\"\n id=\"useEST\"\n [ngModel]=\"useEST$.getValue()\"\n (ngModelChange)=\"useEST$.next($event)\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Create device certificates during device registration' | translate }}</span>\n <button\n type=\"button\"\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ 'The device registration process includes creating device certificates, which are issued by the tenant\\'s Certificate Authority (CA).' | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n </div>\n <div>\n <formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n class=\"formly-group-array-cols d-block p-l-24 p-b-24 min-height-fit p-r-8\"\n [ngClass]=\"{'p-t-24' : !(certificateAuthorityFeatureEnabled | async)}\"\n ></formly-form>\n </div>\n <c8y-stepper-buttons\n (onNext)=\"registerDevice($event)\"\n (onCancel)=\"bsModalRef.hide()\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [disabled]=\"!form?.valid\"\n [pending]=\"isLoading$ | async\"\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n ></c8y-stepper-buttons>\n </cdk-step>\n <cdk-step state=\"final\">\n <div class=\"p-24 min-height-fit\">\n <c8y-operation-result\n *ngIf=\"success.length === 1 && failed.length === 0\"\n text=\"{{ 'Device registered' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n <c8y-operation-result\n *ngIf=\"success.length === 0 && failed.length === 1\"\n text=\"{{ 'Failed to register device' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n\n <ng-container *ngIf=\"success.length > 1 || failed.length > 1\">\n <c8y-operation-result\n *ngIf=\"failed.length === 0\"\n [text]=\"\n '{{ successfulDevicesCount }} devices registered'\n | translate: { successfulDevicesCount: success.length }\n \"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n <c8y-operation-result\n *ngIf=\"success.length === 0\"\n [text]=\"\n '{{ failedDevicesCount }} devices failed to register'\n | translate: { failedDevicesCount: failed.length }\n \"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n </ng-container>\n\n <div *ngIf=\"success.length > 0 && failed.length > 0\" class=\"p-l-24 p-r-24 text-center\">\n <c8y-operation-result\n text=\"{{ 'Several devices failed to register' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n <p\n ngNonBindable\n translate\n [translateParams]=\"{ count: failed.length, total: failed.length + success.length }\"\n class=\"p-b-16 text-danger\"\n >\n Registration failed for {{ count }} devices out of {{ total }}.\n </p>\n </div>\n\n <div class=\"m-b-8 p-l-24 p-r-24\" *ngIf=\"success.length > 0\" translate>\n Turn on the registered device(s) and wait for connection(s) to be established. Once a\n device is connected, its status will change to \"Pending acceptance\". You will need to\n approve it by clicking on the \"Accept\" button.\n </div>\n\n <c8y-list-group class=\"separator-top m-t-16\">\n <c8y-li *ngFor=\"let fail of failed\">\n <c8y-li-icon class=\"text-danger\" [icon]=\"'ban'\"></c8y-li-icon>\n <p>{{ fail?.id }}</p>\n <small>{{ fail?.message | translate }}</small>\n <c8y-li-collapse>\n <pre><code>{{ fail?.details | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n\n <c8y-li *ngFor=\"let s of success\">\n <c8y-li-icon class=\"text-success\" [icon]=\"'check-circle'\"></c8y-li-icon>\n {{ s?.id }}\n </c8y-li>\n </c8y-list-group>\n </div>\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n (onCustom)=\"bsModalRef.hide()\"\n (onBack)=\"fixErrors($event, failed)\"\n [showButtons]=\"{ back: failed.length > 0, custom: true }\"\n [labels]=\"{ back: 'Fix errors', custom: 'Close' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</c8y-modal>\n" }]
|
|
306
306
|
}], ctorParameters: () => [{ type: i1.TenantUiService }, { type: i2.TenantService }, { type: i3.RegisterDeviceService }, { type: i2.InventoryService }, { type: i0.ChangeDetectorRef }, { type: i4.BsModalRef }, { type: i1.GainsightService }, { type: i2.DeviceRegistrationBulkService }, { type: i2.FeatureService }], propDecorators: { canLoadTenants$: [], getTenants$: [], getGroups$: [] } });
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC1kZXZpY2UtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlZ2lzdGVyLWRldmljZS9nZW5lcmFsL2dlbmVyYWwtZGV2aWNlLXJlZ2lzdHJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9yZWdpc3Rlci1kZXZpY2UvZ2VuZXJhbC9nZW5lcmFsLWRldmljZS1yZWdpc3RyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsZUFBZSxFQUNmLE9BQU8sRUFFUCxPQUFPLEVBQ1AsZ0JBQWdCLEVBQ2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFlLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUNMLDZCQUE2QixFQUM3QixjQUFjLEVBRWQsZ0JBQWdCLEVBR2hCLGFBQWEsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7Ozs7Ozs7OztBQWNqRixNQUFNLE9BQU8sa0NBQWtDO0lBcUs3QyxZQUNVLGVBQWdDLEVBQ2hDLGFBQTRCLEVBQzVC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QVU7eUVBRXBDO0FBR087SUFEUCxPQUFPLEVBQUU7OztvQ0FDYSxVQUFVO3FFQUVoQztBQUdPO0lBRFAsT0FBTyxFQUFFOzs7b0NBQ1ksVUFBVTtvRUFTL0I7NEZBL1RVLGtDQUFrQztrQkFMOUMsU0FBUzsrQkFDRSxpQ0FBaUMsbUJBRTFCLHVCQUF1QixDQUFDLE1BQU07b1ZBOFN2QyxlQUFlLE1BS2YsV0FBVyxNQUtYLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seUZvcm1PcHRpb25zIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge1xuICBUZW5hbnRVaVNlcnZpY2UsXG4gIGdldHRleHQsXG4gIEM4eVN0ZXBwZXIsXG4gIG1lbW9pemUsXG4gIEdhaW5zaWdodFNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZGVmZXIsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIERldmljZVJlZ2lzdHJhdGlvbkJ1bGtTZXJ2aWNlLFxuICBGZWF0dXJlU2VydmljZSxcbiAgSU1hbmFnZWRPYmplY3QsXG4gIEludmVudG9yeVNlcnZpY2UsXG4gIElSZXN1bHRMaXN0LFxuICBJVGVuYW50LFxuICBUZW5hbnRTZXJ2aWNlXG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IFJlZ2lzdGVyRGV2aWNlU2VydmljZSB9IGZyb20gJy4uL3JlZ2lzdGVyLWRldmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IENka1N0ZXAgfSBmcm9tICdAYW5ndWxhci9jZGsvc3RlcHBlcic7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBFU1RDc3ZIZWFkZXJzIH0gZnJvbSAnLi4vYnVsay9idWxrLWRldmljZS1yZWdpc3RyYXRpb24tbW9kYWwuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIEdlbmVyYWxEZXZpY2VSZWdpc3RyYXRpb25Nb2RlbFR5cGUge1xuICBpZDogc3RyaW5nO1xuICB0ZW5hbnQ/OiB7IGlkOiBzdHJpbmcgfTtcbiAgZ3JvdXA/OiB7IGlkOiBzdHJpbmc7IG5hbWU/OiBzdHJpbmcgfTtcbiAgb25lVGltZVBhc3N3b3JkPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZ2VuZXJhbC1kZXZpY2UtcmVnaXN0cmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICdnZW5lcmFsLWRldmljZS1yZWdpc3RyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmFsRGV2aWNlUmVnaXN0cmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgTUFOQUdFTUVOVCA9ICdtYW5hZ2VtZW50JztcbiAgcmVhZG9ubHkgRklMVEVSOiBvYmplY3QgPSB7XG4gICAgd2l0aFRvdGFsUGFnZXM6IHRydWUsXG4gICAgcGFnZVNpemU6IDI1XG4gIH07XG5cbiAgdXNlRVNUJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBjZXJ0aWZpY2F0ZUF1dGhvcml0eUZlYXR1cmVFbmFibGVkID0gdGhpcy5mZWF0dXJlU2VydmljZVxuICAgIC5kZXRhaWwoJ2NlcnRpZmljYXRlLWF1dGhvcml0eScpXG4gICAgLnRoZW4oKHsgZGF0YSB9KSA9PiBkYXRhLmFjdGl2ZSk7XG5cbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBtb2RlbCA9IHtcbiAgICBkZXZpY2VzVG9DcmVhdGU6IFt7fSBhcyBHZW5lcmFsRGV2aWNlUmVnaXN0cmF0aW9uTW9kZWxUeXBlXVxuICB9O1xuICBvcHRpb25zOiBGb3JtbHlGb3JtT3B0aW9ucyA9IHtcbiAgICBmb3JtU3RhdGU6IHtcbiAgICAgIGNhbkxvYWRUZW5hbnRzOiB0cnVlLFxuICAgICAgdXNlRVNUOiB0aGlzLnVzZUVTVCQuZ2V0VmFsdWUoKVxuICAgIH1cbiAgfTtcblxuICBQUk9EVUNUX0VYUEVSSUVOQ0UgPSB7XG4gICAgRVZFTlQ6ICdkZXZpY2VSZWdpc3RyYXRpb24nLFxuICAgIENPTVBPTkVOVDogJ3NpbmdsZS1nZW5lcmFsLXJlZ2lzdHJhdGlvbicsXG4gICAgUkVTVUxUOiB7IFNVQ0NFU1M6ICdyZWdpc3RyYXRpb25TdWNjZXNzJywgRkFJTFVSRTogJ3JlZ2lzdHJhdGlvbkZhaWx1cmUnIH1cbiAgfTtcblxuICBpc0xvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBzdWNjZXNzOiB7IGlkOiBzdHJpbmcgfVtdID0gW107XG4gIGZhaWxlZDogeyBpZDogc3RyaW5nOyBtZXNzYWdlPzogc3RyaW5nOyBkZXRhaWxzPzogYW55IH1bXSA9IFtdO1xuXG4gIGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtcbiAgICB7XG4gICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAga2V5OiAnZGV2aWNlc1RvQ3JlYXRlJyxcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIGFkZFRleHQ6IGdldHRleHQoJ0FkZCBkZXZpY2UnKSxcbiAgICAgICAgYWRkVGV4dERhdGFDeTogJ2FkZC1kZXZpY2UnXG4gICAgICB9LFxuICAgICAgZmllbGRBcnJheToge1xuICAgICAgICBmaWVsZEdyb3VwOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnaWQnLFxuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBmb2N1czogdHJ1ZSxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMDEyM2FiMzJmY2QnLFxuICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnRGV2aWNlIElEJyksXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmFsaWRhdG9yczoge1xuICAgICAgICAgICAgICB1bmlxdWU6IHtcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAoY29udHJvbDogRm9ybUNvbnRyb2wpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gKFxuICAgICAgICAgICAgICAgICAgICBjb250cm9sLnJvb3QuZ2V0KCdkZXZpY2VzVG9DcmVhdGUnKS52YWx1ZSBhcyBBcnJheTx7IGlkOiBzdHJpbmcgfT5cbiAgICAgICAgICAgICAgICAgICkuZmlsdGVyKGVsID0+IGVsLmlkID09PSBjb250cm9sLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZC5sZW5ndGggPT09IDA7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAoKSA9PiBnZXR0ZXh0KCdEZXZpY2UgSUQgZHVwbGljYXRlcyBhcmUgbm90IGFsbG93ZWQnKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICd0ZW5hbnQnLFxuICAgICAgICAgICAgdHlwZTogJ3R5cGVhaGVhZCcsXG4gICAgICAgICAgICBleHByZXNzaW9uczoge1xuICAgICAgICAgICAgICBoaWRlOiBmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybVN0YXRlID0gZmllbGQub3B0aW9ucz8uZm9ybVN0YXRlO1xuICAgICAgICAgICAgICAgIGlmICghZm9ybVN0YXRlPy5jYW5Mb2FkVGVuYW50cykge1xuICAgICAgICAgICAgICAgICAgZmllbGQuZm9ybUNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAhZm9ybVN0YXRlPy5jYW5Mb2FkVGVuYW50cyB8fCBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyBpZDogdGhpcy5NQU5BR0VNRU5UIH0sXG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQWRkIHRvIHRlbmFudCcpLFxuICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgYzh5Rm9yT3B0aW9uczogdGhpcy5jYW5Mb2FkVGVuYW50cyQoKS5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihjYW5Mb2FkID0+IGNhbkxvYWQpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmdldFRlbmFudHMkKCkpXG4gICAgICAgICAgICAgICkgYXMgT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxJVGVuYW50Pj4sXG4gICAgICAgICAgICAgIGNvbnRhaW5lcjogJ2JvZHknLFxuICAgICAgICAgICAgICBkaXNwbGF5UHJvcGVydHk6ICdpZCcsXG4gICAgICAgICAgICAgIHZhbHVlUHJvcGVydGllczogWydpZCddXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICAgICAgb25Jbml0OiBfZmllbGQgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmNhbkxvYWRUZW5hbnRzJCgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICB0YXAoY2FuTG9hZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5mb3JtU3RhdGUuY2FuTG9hZFRlbmFudHMgPSBjYW5Mb2FkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnZ3JvdXAnLFxuICAgICAgICAgICAgdHlwZTogJ3R5cGVhaGVhZCcsXG4gICAgICAgICAgICBleHByZXNzaW9uczoge1xuICAgICAgICAgICAgICAncHJvcHMuZGlzYWJsZWQnOiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybVN0YXRlID0gZmllbGQub3B0aW9ucz8uZm9ybVN0YXRlO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gZmllbGQubW9kZWw7XG4gICAgICAgICAgICAgICAgaWYgKGZvcm1TdGF0ZT8uY2FuTG9hZFRlbmFudHMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChtb2RlbD8udGVuYW50Py5pZCAhPT0gdGhpcy5NQU5BR0VNRU5UKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLmZvcm1Db250cm9sLnNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuICEobW9kZWw/LnRlbmFudD8uaWQgPT09IHRoaXMuTUFOQUdFTUVOVCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlbGV0ZSBmaWVsZD8ucHJvcHM/LmRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0FkZCB0byBncm91cCcpLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgICAgICAgICAgICAgICAnWW91IGNhbiBhZGQgZGV2aWNlIHRvIHNwZWNpZmljIGdyb3VwIGZvciBtYW5hZ2VtZW50IHRlbmFudCBvbmx5LidcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgY29udGFpbmVyOiAnYm9keScsXG4gICAgICAgICAgICAgIGRpc3BsYXlQcm9wZXJ0eTogJ25hbWUnLFxuICAgICAgICAgICAgICB2YWx1ZVByb3BlcnRpZXM6IFsnaWQnXSxcbiAgICAgICAgICAgICAgYzh5Rm9yT3B0aW9uczogdGhpcy5nZXRHcm91cHMkKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBob29rczoge1xuICAgICAgICAgICAgICBvbkluaXQ6IF9maWVsZCA9PlxuICAgICAgICAgICAgICAgIHRoaXMuY2FuTG9hZFRlbmFudHMkKCkucGlwZShcbiAgICAgICAgICAgICAgICAgIHRhcChjYW5Mb2FkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmZvcm1TdGF0ZS5jYW5Mb2FkVGVuYW50cyA9IGNhbkxvYWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdvbmVUaW1lUGFzc3dvcmQnLFxuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBleHByZXNzaW9uczoge1xuICAgICAgICAgICAgICBoaWRlOiBmaWVsZCA9PiAhZmllbGQub3B0aW9ucz8uZm9ybVN0YXRlPy51c2VFU1RcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1RydUROM0g0NUwwJyxcbiAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ09uZS10aW1lIHBhc3N3b3JkJyksXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICAgICAgb25Jbml0OiBfZmllbGQgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnVzZUVTVCQucGlwZShcbiAgICAgICAgICAgICAgICAgIHRhcCh1c2VFU1QgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuZm9ybVN0YXRlLnVzZUVTVCA9IHVzZUVTVDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIF07XG5cbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgbGFzdENyZWF0ZWREZXZpY2VzOiBHZW5lcmFsRGV2aWNlUmVnaXN0cmF0aW9uTW9kZWxUeXBlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRlbmFudFVJU2VydmljZTogVGVuYW50VWlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGVuYW50U2VydmljZTogVGVuYW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlZ2lzdGVyRGV2aWNlU2VydmljZTogUmVnaXN0ZXJEZXZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5U2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgYnNNb2RhbFJlZjogQnNNb2RhbFJlZixcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkZXZpY2VSZWdpc3RyYXRpb25TZXJ2aWNlOiBEZXZpY2VSZWdpc3RyYXRpb25CdWxrU2VydmljZSxcbiAgICBwcml2YXRlIGZlYXR1cmVTZXJ2aWNlOiBGZWF0dXJlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmlzTG9hZGluZyQgPSB0aGlzLnJlZ2lzdGVyRGV2aWNlU2VydmljZS5sb2FkaW5nJDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyRGV2aWNlKGV2ZW50T2JqZWN0OiB7IHN0ZXBwZXI6IEM4eVN0ZXBwZXI7IHN0ZXA6IENka1N0ZXAgfSkge1xuICAgICF0aGlzLnVzZUVTVCQuZ2V0VmFsdWUoKSA/IHRoaXMuY3JlYXRlKGV2ZW50T2JqZWN0KSA6IHRoaXMucmVnaXN0ZXJCeUVzdChldmVudE9iamVjdCk7XG4gIH1cblxuICBmaXhFcnJvcnMoZXZlbnQ6IHsgc3RlcHBlcjogQzh5U3RlcHBlcjsgc3RlcDogQ2RrU3RlcCB9LCBmYWlsZWRSZXF1ZXN0czogYW55KSB7XG4gICAgaWYgKGZhaWxlZFJlcXVlc3RzICYmIGZhaWxlZFJlcXVlc3RzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMub3B0aW9ucy5yZXNldE1vZGVsKHtcbiAgICAgICAgZGV2aWNlc1RvQ3JlYXRlOiBbXG4gICAgICAgICAgLi4udGhpcy5sYXN0Q3JlYXRlZERldmljZXMuZmlsdGVyKGVsID0+XG4gICAgICAgICAgICBmYWlsZWRSZXF1ZXN0cy5tYXAoZGF0YSA9PiBkYXRhLmlkKS5pbmNsdWRlcyhlbC5pZClcbiAgICAgICAgICApXG4gICAgICAgIF1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIGV2ZW50Py5zdGVwcGVyLnByZXZpb3VzKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZShldmVudE9iamVjdDogeyBzdGVwcGVyOiBDOHlTdGVwcGVyOyBzdGVwOiBDZGtTdGVwIH0pIHtcbiAgICBpZiAodGhpcy5tb2RlbD8uZGV2aWNlc1RvQ3JlYXRlPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmxhc3RDcmVhdGVkRGV2aWNlcyA9IFsuLi50aGlzLm1vZGVsLmRldmljZXNUb0NyZWF0ZV07XG5cbiAgICAgIGNvbnN0IGRhdGFUb1NlbmQgPSB0aGlzLm1vZGVsLmRldmljZXNUb0NyZWF0ZS5tYXAoXG4gICAgICAgIChlbDogR2VuZXJhbERldmljZVJlZ2lzdHJhdGlvbk1vZGVsVHlwZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgaWQsIHRlbmFudCwgZ3JvdXAgfSA9IGVsO1xuICAgICAgICAgIGxldCBkYXRhOiB7IGlkOiBzdHJpbmc7IHRlbmFudElkPzogc3RyaW5nOyBncm91cElkPzogc3RyaW5nIH0gPSB7IGlkIH07XG5cbiAgICAgICAgICBpZiAodGVuYW50Py5pZCkge1xuICAgICAgICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgdGVuYW50SWQ6IHRlbmFudC5pZCB9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChncm91cD8uaWQpIHtcbiAgICAgICAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIGdyb3VwSWQ6IGdyb3VwLmlkIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMucmVnaXN0ZXJEZXZpY2VTZXJ2aWNlXG4gICAgICAgIC5jcmVhdGVNdWx0aXBsZShkYXRhVG9TZW5kKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUocmVxdWVzdHMgPT4ge1xuICAgICAgICAgIHRoaXMuc3VjY2VzcyA9IHJlcXVlc3RzLnN1Y2Nlc3M7XG4gICAgICAgICAgaWYgKHRoaXMuc3VjY2Vzcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KHRoaXMuUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5ULCB7XG4gICAgICAgICAgICAgIHJlc3VsdDogdGhpcy5QUk9EVUNUX0VYUEVSSUVOQ0UuUkVTVUxULlNVQ0NFU1MsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcy5QUk9EVUNUX0VYUEVSSUVOQ0UuQ09NUE9ORU5UXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmZhaWxlZCA9IHJlcXVlc3RzLmZhaWxlZDtcbiAgICAgICAgICBpZiAodGhpcy5mYWlsZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudCh0aGlzLlBST0RVQ1RfRVhQRVJJRU5DRS5FVkVOVCwge1xuICAgICAgICAgICAgICByZXN1bHQ6IHRoaXMuUFJPRFVDVF9FWFBFUklFTkNFLlJFU1VMVC5GQUlMVVJFLFxuICAgICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMuUFJPRFVDVF9FWFBFUklFTkNFLkNPTVBPTkVOVFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV2ZW50T2JqZWN0KSB7XG4gICAgICAgICAgICBldmVudE9iamVjdC5zdGVwcGVyLm5leHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJCeUVzdChldmVudE9iamVjdDogeyBzdGVwcGVyOiBDOHlTdGVwcGVyOyBzdGVwOiBDZGtTdGVwIH0pIHtcbiAgICB0aGlzLmxhc3RDcmVhdGVkRGV2aWNlcyA9IFsuLi50aGlzLm1vZGVsLmRldmljZXNUb0NyZWF0ZV07XG4gICAgdGhpcy5kZXZpY2VSZWdpc3RyYXRpb25TZXJ2aWNlXG4gICAgICAuY3JlYXRlKHRoaXMuY29udmVydE9iamVjdFRvQ1NWRmlsZSh0aGlzLm1vZGVsLmRldmljZXNUb0NyZWF0ZSkpXG4gICAgICAudGhlbigoeyByZXMsIGRhdGEgfSkgPT4ge1xuICAgICAgICBpZiAocmVzLnN0YXR1cyA8IDQwMCkge1xuICAgICAgICAgIHRoaXMuZmFpbGVkID0gZGF0YS5mYWlsZWRDcmVhdGlvbkxpc3QubWFwKHZhbHVlID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGlkOiB2YWx1ZS5kZXZpY2VJZCxcbiAgICAgICAgICAgICAgbWVzc2FnZTogdmFsdWUuZmFpbHVyZVJlYXNvblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBmYWlsZWRJZHMgPSBuZXcgU2V0KHRoaXMuZmFpbGVkLm1hcChpdGVtID0+IGl0ZW0uaWQpKTtcbiAgICAgICAgICB0aGlzLnN1Y2Nlc3MgPSB0aGlzLm1vZGVsLmRldmljZXNUb0NyZWF0ZS5maWx0ZXIoaXRlbSA9PiAhZmFpbGVkSWRzLmhhcyhpdGVtLmlkKSk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnRPYmplY3Quc3RlcHBlci5uZXh0KCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgZXZlbnRPYmplY3Quc3RlcHBlci5uZXh0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydE9iamVjdFRvQ1NWRmlsZShkYXRhOiBhbnkpOiBGaWxlIHtcbiAgICBjb25zdCBmdWxsQ3N2SGVhZGVycyA9IEVTVENzdkhlYWRlcnM7XG5cbiAgICBjb25zdCBjc3ZIZWFkZXJzID0gZnVsbENzdkhlYWRlcnMuam9pbignOycpICsgJ1xcbic7XG4gICAgY29uc3QgZGF0YVRvU2VuZCA9IGRhdGEubWFwKGVsID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIElEOiBlbC5pZCxcbiAgICAgICAgQVVUSF9UWVBFOiAnQ0VSVElGSUNBVEVTJyxcbiAgICAgICAgRU5ST0xMTUVOVF9PVFA6IGVsLm9uZVRpbWVQYXNzd29yZCxcbiAgICAgICAgUEFUSDogZWwuZ3JvdXA/LmlkIHx8ICcnLFxuICAgICAgICBURU5BTlQ6IGVsLnRlbmFudD8uaWQgfHwgJydcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBjc3ZSb3dzID0gZGF0YVRvU2VuZFxuICAgICAgLm1hcChyb3cgPT4gZnVsbENzdkhlYWRlcnMubWFwKGhlYWRlciA9PiByb3dbaGVhZGVyXSA/PyAnJykuam9pbignOycpKVxuICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gICAgY29uc3QgY3N2Q29udGVudCA9IGNzdkhlYWRlcnMgKyBjc3ZSb3dzO1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbY3N2Q29udGVudF0sIHsgdHlwZTogJ3RleHQvY3N2JyB9KTtcbiAgICByZXR1cm4gbmV3IEZpbGUoW2Jsb2JdLCBgRVNUUmVnaXN0cmF0aW9uRmlsZS5jc3ZgLCB7IHR5cGU6ICd0ZXh0L2NzdicgfSk7XG4gIH1cblxuICBAbWVtb2l6ZSgpXG4gIHByaXZhdGUgY2FuTG9hZFRlbmFudHMkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMudGVuYW50VUlTZXJ2aWNlLmlzTWFuYWdlbWVudFRlbmFudCgpKSkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gIH1cblxuICBAbWVtb2l6ZSgpXG4gIHByaXZhdGUgZ2V0VGVuYW50cyQoKTogT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxJVGVuYW50Pj4ge1xuICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMudGVuYW50U2VydmljZS5saXN0KHRoaXMuRklMVEVSKSkpLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuICB9XG5cbiAgQG1lbW9pemUoKVxuICBwcml2YXRlIGdldEdyb3VwcyQoKTogT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxJTWFuYWdlZE9iamVjdD4+IHtcbiAgICByZXR1cm4gZGVmZXIoKCkgPT5cbiAgICAgIGZyb20oXG4gICAgICAgIHRoaXMuaW52ZW50b3J5U2VydmljZS5saXN0UXVlcnkoXG4gICAgICAgICAgeyBfX2ZpbHRlcjogeyBfX2hhczogJ2M4eV9Jc0RldmljZUdyb3VwJyB9LCBfX29yZGVyYnk6IFt7IG5hbWU6IDEgfV0gfSxcbiAgICAgICAgICB7IC4uLnRoaXMuRklMVEVSIH1cbiAgICAgICAgKVxuICAgICAgKVxuICAgICkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gIH1cbn1cbiIsIjxjOHktbW9kYWxcbiAgW3RpdGxlXT1cIidSZWdpc3RlciBkZXZpY2VzJyB8IHRyYW5zbGF0ZVwiXG4gIFtoZWFkZXJDbGFzc2VzXT1cIidkaWFsb2ctaGVhZGVyJ1wiXG4gIFtjdXN0b21Gb290ZXJdPVwidHJ1ZVwiXG4+XG4gIDxuZy1jb250YWluZXIgYzh5LW1vZGFsLXRpdGxlPlxuICAgIDxzcGFuIFtjOHlJY29uXT1cIidjOHktZGV2aWNlLWNvbm5lY3QnXCI+PC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGM4eS1zdGVwcGVyIFtoaWRlU3RlcFByb2dyZXNzXT1cInRydWVcIiBsaW5lYXIgYzh5LW1vZGFsLWJvZHk+XG4gICAgPGNkay1zdGVwIFtzdGVwQ29udHJvbF09XCJmb3JtXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgc3RpY2t5LXRvcCBiZy1jb21wb25lbnRcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LW1lZGl1bSB0ZXh0LTE2IHNlcGFyYXRvci1ib3R0b20gcC0xNlwiIHRyYW5zbGF0ZT5SZWdpc3RlciBnZW5lcmFsIGRldmljZXM8L3A+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBtLTI0IGEtaS1jZW50ZXJcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ0NyZWF0ZSBkZXZpY2UgY2VydGlmaWNhdGVzIGR1cmluZyBkZXZpY2UgcmVnaXN0cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgZm9yPVwidXNlRVNUXCJcbiAgICAgICAgICAqbmdJZj1cImNlcnRpZmljYXRlQXV0aG9yaXR5RmVhdHVyZUVuYWJsZWQgfCBhc3luY1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBuYW1lPVwidXNlRVNUXCJcbiAgICAgICAgICAgIGlkPVwidXNlRVNUXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInVzZUVTVCQuZ2V0VmFsdWUoKVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1c2VFU1QkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb250cm9sLWxhYmVsXCI+e3sgJ0NyZWF0ZSBkZXZpY2UgY2VydGlmaWNhdGVzIGR1cmluZyBkZXZpY2UgcmVnaXN0cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHBcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgcG9wb3Zlcj1cInt7ICdUaGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGluY2x1ZGVzIGNyZWF0aW5nIGRldmljZSBjZXJ0aWZpY2F0ZXMsIHdoaWNoIGFyZSBpc3N1ZWQgYnkgdGhlIHRlbmFudFxcJ3MgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IChDQSkuJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPGZvcm1seS1mb3JtXG4gICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiXG4gICAgICAgICAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICAgICAgICAgIFttb2RlbF09XCJtb2RlbFwiXG4gICAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtbHktZ3JvdXAtYXJyYXktY29scyBkLWJsb2NrIHAtbC0yNCBwLWItMjQgbWluLWhlaWdodC1maXQgcC1yLThcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC10LTI0JyA6ICEoY2VydGlmaWNhdGVBdXRob3JpdHlGZWF0dXJlRW5hYmxlZCB8IGFzeW5jKX1cIlxuICAgICAgICA+PC9mb3JtbHktZm9ybT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnNcbiAgICAgICAgKG9uTmV4dCk9XCJyZWdpc3RlckRldmljZSgkZXZlbnQpXCJcbiAgICAgICAgKG9uQ2FuY2VsKT1cImJzTW9kYWxSZWYuaGlkZSgpXCJcbiAgICAgICAgW3Nob3dCdXR0b25zXT1cInsgY2FuY2VsOiB0cnVlLCBuZXh0OiB0cnVlIH1cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWZvcm0/LnZhbGlkXCJcbiAgICAgICAgW3BlbmRpbmddPVwiaXNMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgY2xhc3M9XCJzdGlja3ktYm90dG9tIGQtYmxvY2sgcC10LTE2IHAtYi0xNiBzZXBhcmF0b3ItdG9wIGJnLWxldmVsLTBcIlxuICAgICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgICA8L2Nkay1zdGVwPlxuICAgIDxjZGstc3RlcCBzdGF0ZT1cImZpbmFsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0yNCBtaW4taGVpZ2h0LWZpdFwiPlxuICAgICAgICA8Yzh5LW9wZXJhdGlvbi1yZXN1bHRcbiAgICAgICAgICAqbmdJZj1cInN1Y2Nlc3MubGVuZ3RoID09PSAxICYmIGZhaWxlZC5sZW5ndGggPT09IDBcIlxuICAgICAgICAgIHRleHQ9XCJ7eyAnRGV2aWNlIHJlZ2lzdGVyZWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgW3ZlcnRpY2FsXT1cInRydWVcIlxuICAgICAgICAgIHR5cGU9XCJzdWNjZXNzXCJcbiAgICAgICAgICBjbGFzcz1cImxlYWRcIlxuICAgICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cbiAgICAgICAgPGM4eS1vcGVyYXRpb24tcmVzdWx0XG4gICAgICAgICAgKm5nSWY9XCJzdWNjZXNzLmxlbmd0aCA9PT0gMCAmJiBmYWlsZWQubGVuZ3RoID09PSAxXCJcbiAgICAgICAgICB0ZXh0PVwie3sgJ0ZhaWxlZCB0byByZWdpc3RlciBkZXZpY2UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgW3ZlcnRpY2FsXT1cInRydWVcIlxuICAgICAgICAgIHR5cGU9XCJlcnJvclwiXG4gICAgICAgICAgY2xhc3M9XCJsZWFkXCJcbiAgICAgICAgPjwvYzh5LW9wZXJhdGlvbi1yZXN1bHQ+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN1Y2Nlc3MubGVuZ3RoID4gMSB8fCBmYWlsZWQubGVuZ3RoID4gMVwiPlxuICAgICAgICAgIDxjOHktb3BlcmF0aW9uLXJlc3VsdFxuICAgICAgICAgICAgKm5nSWY9XCJmYWlsZWQubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cIlxuICAgICAgICAgICAgICAne3sgc3VjY2Vzc2Z1bERldmljZXNDb3VudCB9fSBkZXZpY2VzIHJlZ2lzdGVyZWQnXG4gICAgICAgICAgICAgICAgfCB0cmFuc2xhdGU6IHsgc3VjY2Vzc2Z1bERldmljZXNDb3VudDogc3VjY2Vzcy5sZW5ndGggfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtzaXplXT1cIjg0XCJcbiAgICAgICAgICAgIFt2ZXJ0aWNhbF09XCJ0cnVlXCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICAgICAgPjwvYzh5LW9wZXJhdGlvbi1yZXN1bHQ+XG4gICAgICAgICAgPGM4eS1vcGVyYXRpb24tcmVzdWx0XG4gICAgICAgICAgICAqbmdJZj1cInN1Y2Nlc3MubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cIlxuICAgICAgICAgICAgICAne3sgZmFpbGVkRGV2aWNlc0NvdW50IH19IGRldmljZXMgZmFpbGVkIHRvIHJlZ2lzdGVyJ1xuICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IGZhaWxlZERldmljZXNDb3VudDogZmFpbGVkLmxlbmd0aCB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3NpemVdPVwiODRcIlxuICAgICAgICAgICAgW3ZlcnRpY2FsXT1cInRydWVcIlxuICAgICAgICAgICAgdHlwZT1cImVycm9yXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICAgICAgPjwvYzh5LW9wZXJhdGlvbi1yZXN1bHQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdWNjZXNzLmxlbmd0aCA+IDAgJiYgZmFpbGVkLmxlbmd0aCA+IDBcIiBjbGFzcz1cInAtbC0yNCBwLXItMjQgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICA8Yzh5LW9wZXJhdGlvbi1yZXN1bHRcbiAgICAgICAgICAgIHRleHQ9XCJ7eyAnU2V2ZXJhbCBkZXZpY2VzIGZhaWxlZCB0byByZWdpc3RlcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgW3NpemVdPVwiODRcIlxuICAgICAgICAgICAgW3ZlcnRpY2FsXT1cInRydWVcIlxuICAgICAgICAgICAgdHlwZT1cImVycm9yXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICAgICAgPjwvYzh5LW9wZXJhdGlvbi1yZXN1bHQ+XG4gICAgICAgICAgPHBcbiAgICAgICAgICAgIG5nTm9uQmluZGFibGVcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7IGNvdW50OiBmYWlsZWQubGVuZ3RoLCB0b3RhbDogZmFpbGVkLmxlbmd0aCArIHN1Y2Nlc3MubGVuZ3RoIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJwLWItMTYgdGV4dC1kYW5nZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFJlZ2lzdHJhdGlvbiBmYWlsZWQgZm9yIHt7IGNvdW50IH19IGRldmljZXMgb3V0IG9mIHt7IHRvdGFsIH19LlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tYi04IHAtbC0yNCBwLXItMjRcIiAqbmdJZj1cInN1Y2Nlc3MubGVuZ3RoID4gMFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICBUdXJuIG9uIHRoZSByZWdpc3RlcmVkIGRldmljZShzKSBhbmQgd2FpdCBmb3IgY29ubmVjdGlvbihzKSB0byBiZSBlc3RhYmxpc2hlZC4gT25jZSBhXG4gICAgICAgICAgZGV2aWNlIGlzIGNvbm5lY3RlZCwgaXRzIHN0YXR1cyB3aWxsIGNoYW5nZSB0byBcIlBlbmRpbmcgYWNjZXB0YW5jZVwiLiBZb3Ugd2lsbCBuZWVkIHRvXG4gICAgICAgICAgYXBwcm92ZSBpdCBieSBjbGlja2luZyBvbiB0aGUgXCJBY2NlcHRcIiBidXR0b24uXG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxjOHktbGlzdC1ncm91cCBjbGFzcz1cInNlcGFyYXRvci10b3AgbS10LTE2XCI+XG4gICAgICAgICAgPGM4eS1saSAqbmdGb3I9XCJsZXQgZmFpbCBvZiBmYWlsZWRcIj5cbiAgICAgICAgICAgIDxjOHktbGktaWNvbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgW2ljb25dPVwiJ2JhbidcIj48L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgPHA+e3sgZmFpbD8uaWQgfX08L3A+XG4gICAgICAgICAgICA8c21hbGw+e3sgZmFpbD8ubWVzc2FnZSB8IHRyYW5zbGF0ZSB9fTwvc21hbGw+XG4gICAgICAgICAgICA8Yzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgICA8cHJlPjxjb2RlPnt7IGZhaWw/LmRldGFpbHMgfCBqc29uIH19PC9jb2RlPjwvcHJlPlxuICAgICAgICAgICAgPC9jOHktbGktY29sbGFwc2U+XG4gICAgICAgICAgPC9jOHktbGk+XG5cbiAgICAgICAgICA8Yzh5LWxpICpuZ0Zvcj1cImxldCBzIG9mIHN1Y2Nlc3NcIj5cbiAgICAgICAgICAgIDxjOHktbGktaWNvbiBjbGFzcz1cInRleHQtc3VjY2Vzc1wiIFtpY29uXT1cIidjaGVjay1jaXJjbGUnXCI+PC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgIHt7IHM/LmlkIH19XG4gICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgIDwvYzh5LWxpc3QtZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjOHktc3RlcHBlci1idXR0b25zXG4gICAgICAgIGNsYXNzPVwic3RpY2t5LWJvdHRvbSBkLWJsb2NrIHAtdC0xNiBwLWItMTYgc2VwYXJhdG9yLXRvcCBiZy1sZXZlbC0wXCJcbiAgICAgICAgKG9uQ3VzdG9tKT1cImJzTW9kYWxSZWYuaGlkZSgpXCJcbiAgICAgICAgKG9uQmFjayk9XCJmaXhFcnJvcnMoJGV2ZW50LCBmYWlsZWQpXCJcbiAgICAgICAgW3Nob3dCdXR0b25zXT1cInsgYmFjazogZmFpbGVkLmxlbmd0aCA+IDAsIGN1c3RvbTogdHJ1ZSB9XCJcbiAgICAgICAgW2xhYmVsc109XCJ7IGJhY2s6ICdGaXggZXJyb3JzJywgY3VzdG9tOiAnQ2xvc2UnIH1cIlxuICAgICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgICA8L2Nkay1zdGVwPlxuICA8L2M4eS1zdGVwcGVyPlxuPC9jOHktbW9kYWw+XG4iXX0=
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC1kZXZpY2UtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlZ2lzdGVyLWRldmljZS9nZW5lcmFsL2dlbmVyYWwtZGV2aWNlLXJlZ2lzdHJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9yZWdpc3Rlci1kZXZpY2UvZ2VuZXJhbC9nZW5lcmFsLWRldmljZS1yZWdpc3RyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsZUFBZSxFQUNmLE9BQU8sRUFFUCxPQUFPLEVBQ1AsZ0JBQWdCLEVBQ2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFlLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUNMLDZCQUE2QixFQUM3QixjQUFjLEVBRWQsZ0JBQWdCLEVBR2hCLGFBQWEsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7Ozs7Ozs7OztBQWNqRixNQUFNLE9BQU8sa0NBQWtDO0lBcUs3QyxZQUNVLGVBQWdDLEVBQ2hDLGFBQTRCLEVBQzVC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QUFPLEVBQUU7OztvQ0FDaUIsVUFBVTt5RUFFcEM7QUFHTztJQURQLE9BQU8sRUFBRTs7O29DQUNhLFVBQVU7cUVBRWhDO0FBR087SUFEUCxPQUFPLEVBQUU7OztvQ0FDWSxVQUFVO29FQVMvQjs0RkEvVFUsa0NBQWtDO2tCQUw5QyxTQUFTOytCQUNFLGlDQUFpQyxtQkFFMUIsdUJBQXVCLENBQUMsTUFBTTtvVkE4U3ZDLGVBQWUsTUFLZixXQUFXLE1BS1gsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5Rm9ybU9wdGlvbnMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7XG4gIFRlbmFudFVpU2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgQzh5U3RlcHBlcixcbiAgbWVtb2l6ZSxcbiAgR2FpbnNpZ2h0U2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBkZWZlciwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgRGV2aWNlUmVnaXN0cmF0aW9uQnVsa1NlcnZpY2UsXG4gIEZlYXR1cmVTZXJ2aWNlLFxuICBJTWFuYWdlZE9iamVjdCxcbiAgSW52ZW50b3J5U2VydmljZSxcbiAgSVJlc3VsdExpc3QsXG4gIElUZW5hbnQsXG4gIFRlbmFudFNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgUmVnaXN0ZXJEZXZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vcmVnaXN0ZXItZGV2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2RrU3RlcCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zdGVwcGVyJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IEVTVENzdkhlYWRlcnMgfSBmcm9tICcuLi9idWxrL2J1bGstZGV2aWNlLXJlZ2lzdHJhdGlvbi1tb2RhbC5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgR2VuZXJhbERldmljZVJlZ2lzdHJhdGlvbk1vZGVsVHlwZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRlbmFudD86IHsgaWQ6IHN0cmluZyB9O1xuICBncm91cD86IHsgaWQ6IHN0cmluZzsgbmFtZT86IHN0cmluZyB9O1xuICBvbmVUaW1lUGFzc3dvcmQ/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1nZW5lcmFsLWRldmljZS1yZWdpc3RyYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJ2dlbmVyYWwtZGV2aWNlLXJlZ2lzdHJhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyYWxEZXZpY2VSZWdpc3RyYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICByZWFkb25seSBNQU5BR0VNRU5UID0gJ21hbmFnZW1lbnQnO1xuICByZWFkb25seSBGSUxURVI6IG9iamVjdCA9IHtcbiAgICB3aXRoVG90YWxQYWdlczogdHJ1ZSxcbiAgICBwYWdlU2l6ZTogMjVcbiAgfTtcblxuICB1c2VFU1QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGNlcnRpZmljYXRlQXV0aG9yaXR5RmVhdHVyZUVuYWJsZWQgPSB0aGlzLmZlYXR1cmVTZXJ2aWNlXG4gICAgLmRldGFpbCgnY2VydGlmaWNhdGUtYXV0aG9yaXR5JylcbiAgICAudGhlbigoeyBkYXRhIH0pID0+IGRhdGEuYWN0aXZlKTtcblxuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIG1vZGVsID0ge1xuICAgIGRldmljZXNUb0NyZWF0ZTogW3t9IGFzIEdlbmVyYWxEZXZpY2VSZWdpc3RyYXRpb25Nb2RlbFR5cGVdXG4gIH07XG4gIG9wdGlvbnM6IEZvcm1seUZvcm1PcHRpb25zID0ge1xuICAgIGZvcm1TdGF0ZToge1xuICAgICAgY2FuTG9hZFRlbmFudHM6IHRydWUsXG4gICAgICB1c2VFU1Q6IHRoaXMudXNlRVNUJC5nZXRWYWx1ZSgpXG4gICAgfVxuICB9O1xuXG4gIFBST0RVQ1RfRVhQRVJJRU5DRSA9IHtcbiAgICBFVkVOVDogJ2RldmljZVJlZ2lzdHJhdGlvbicsXG4gICAgQ09NUE9ORU5UOiAnc2luZ2xlLWdlbmVyYWwtcmVnaXN0cmF0aW9uJyxcbiAgICBSRVNVTFQ6IHsgU1VDQ0VTUzogJ3JlZ2lzdHJhdGlvblN1Y2Nlc3MnLCBGQUlMVVJFOiAncmVnaXN0cmF0aW9uRmFpbHVyZScgfVxuICB9O1xuXG4gIGlzTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHN1Y2Nlc3M6IHsgaWQ6IHN0cmluZyB9W10gPSBbXTtcbiAgZmFpbGVkOiB7IGlkOiBzdHJpbmc7IG1lc3NhZ2U/OiBzdHJpbmc7IGRldGFpbHM/OiBhbnkgfVtdID0gW107XG5cbiAgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW1xuICAgIHtcbiAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICBrZXk6ICdkZXZpY2VzVG9DcmVhdGUnLFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgYWRkVGV4dDogZ2V0dGV4dCgnQWRkIGRldmljZScpLFxuICAgICAgICBhZGRUZXh0RGF0YUN5OiAnYWRkLWRldmljZSdcbiAgICAgIH0sXG4gICAgICBmaWVsZEFycmF5OiB7XG4gICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdpZCcsXG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGZvY3VzOiB0cnVlLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcwMTIzYWIzMmZjZCcsXG4gICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdEZXZpY2UgSUQnKSxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2YWxpZGF0b3JzOiB7XG4gICAgICAgICAgICAgIHVuaXF1ZToge1xuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IChjb250cm9sOiBGb3JtQ29udHJvbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZm91bmQgPSAoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wucm9vdC5nZXQoJ2RldmljZXNUb0NyZWF0ZScpLnZhbHVlIGFzIEFycmF5PHsgaWQ6IHN0cmluZyB9PlxuICAgICAgICAgICAgICAgICAgKS5maWx0ZXIoZWwgPT4gZWwuaWQgPT09IGNvbnRyb2wudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICgpID0+IGdldHRleHQoJ0RldmljZSBJRCBkdXBsaWNhdGVzIGFyZSBub3QgYWxsb3dlZCcpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ3RlbmFudCcsXG4gICAgICAgICAgICB0eXBlOiAndHlwZWFoZWFkJyxcbiAgICAgICAgICAgIGV4cHJlc3Npb25zOiB7XG4gICAgICAgICAgICAgIGhpZGU6IGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtU3RhdGUgPSBmaWVsZC5vcHRpb25zPy5mb3JtU3RhdGU7XG4gICAgICAgICAgICAgICAgaWYgKCFmb3JtU3RhdGU/LmNhbkxvYWRUZW5hbnRzKSB7XG4gICAgICAgICAgICAgICAgICBmaWVsZC5mb3JtQ29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICFmb3JtU3RhdGU/LmNhbkxvYWRUZW5hbnRzIHx8IGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IGlkOiB0aGlzLk1BTkFHRU1FTlQgfSxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdBZGQgdG8gdGVuYW50JyksXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICBjOHlGb3JPcHRpb25zOiB0aGlzLmNhbkxvYWRUZW5hbnRzJCgpLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKGNhbkxvYWQgPT4gY2FuTG9hZCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZ2V0VGVuYW50cyQoKSlcbiAgICAgICAgICAgICAgKSBhcyBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElUZW5hbnQ+PixcbiAgICAgICAgICAgICAgY29udGFpbmVyOiAnYm9keScsXG4gICAgICAgICAgICAgIGRpc3BsYXlQcm9wZXJ0eTogJ2lkJyxcbiAgICAgICAgICAgICAgdmFsdWVQcm9wZXJ0aWVzOiBbJ2lkJ11cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBob29rczoge1xuICAgICAgICAgICAgICBvbkluaXQ6IF9maWVsZCA9PlxuICAgICAgICAgICAgICAgIHRoaXMuY2FuTG9hZFRlbmFudHMkKCkucGlwZShcbiAgICAgICAgICAgICAgICAgIHRhcChjYW5Mb2FkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmZvcm1TdGF0ZS5jYW5Mb2FkVGVuYW50cyA9IGNhbkxvYWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdncm91cCcsXG4gICAgICAgICAgICB0eXBlOiAndHlwZWFoZWFkJyxcbiAgICAgICAgICAgIGV4cHJlc3Npb25zOiB7XG4gICAgICAgICAgICAgICdwcm9wcy5kaXNhYmxlZCc6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtU3RhdGUgPSBmaWVsZC5vcHRpb25zPy5mb3JtU3RhdGU7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBmaWVsZC5tb2RlbDtcbiAgICAgICAgICAgICAgICBpZiAoZm9ybVN0YXRlPy5jYW5Mb2FkVGVuYW50cykge1xuICAgICAgICAgICAgICAgICAgaWYgKG1vZGVsPy50ZW5hbnQ/LmlkICE9PSB0aGlzLk1BTkFHRU1FTlQpIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQuZm9ybUNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gIShtb2RlbD8udGVuYW50Py5pZCA9PT0gdGhpcy5NQU5BR0VNRU5UKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVsZXRlIGZpZWxkPy5wcm9wcz8uZGVzY3JpcHRpb247XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQWRkIHRvIGdyb3VwJyksXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAgICAgICAgICAgICAgICdZb3UgY2FuIGFkZCBkZXZpY2UgdG8gc3BlY2lmaWMgZ3JvdXAgZm9yIG1hbmFnZW1lbnQgdGVuYW50IG9ubHkuJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBjb250YWluZXI6ICdib2R5JyxcbiAgICAgICAgICAgICAgZGlzcGxheVByb3BlcnR5OiAnbmFtZScsXG4gICAgICAgICAgICAgIHZhbHVlUHJvcGVydGllczogWydpZCddLFxuICAgICAgICAgICAgICBjOHlGb3JPcHRpb25zOiB0aGlzLmdldEdyb3VwcyQoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhvb2tzOiB7XG4gICAgICAgICAgICAgIG9uSW5pdDogX2ZpZWxkID0+XG4gICAgICAgICAgICAgICAgdGhpcy5jYW5Mb2FkVGVuYW50cyQoKS5waXBlKFxuICAgICAgICAgICAgICAgICAgdGFwKGNhbkxvYWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuZm9ybVN0YXRlLmNhbkxvYWRUZW5hbnRzID0gY2FuTG9hZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ29uZVRpbWVQYXNzd29yZCcsXG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGV4cHJlc3Npb25zOiB7XG4gICAgICAgICAgICAgIGhpZGU6IGZpZWxkID0+ICFmaWVsZC5vcHRpb25zPy5mb3JtU3RhdGU/LnVzZUVTVFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnVHJ1RE4zSDQ1TDAnLFxuICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnT25lLXRpbWUgcGFzc3dvcmQnKSxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBob29rczoge1xuICAgICAgICAgICAgICBvbkluaXQ6IF9maWVsZCA9PlxuICAgICAgICAgICAgICAgIHRoaXMudXNlRVNUJC5waXBlKFxuICAgICAgICAgICAgICAgICAgdGFwKHVzZUVTVCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5mb3JtU3RhdGUudXNlRVNUID0gdXNlRVNUO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgXTtcblxuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBsYXN0Q3JlYXRlZERldmljZXM6IEdlbmVyYWxEZXZpY2VSZWdpc3RyYXRpb25Nb2RlbFR5cGVbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVuYW50VUlTZXJ2aWNlOiBUZW5hbnRVaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0ZW5hbnRTZXJ2aWNlOiBUZW5hbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVnaXN0ZXJEZXZpY2VTZXJ2aWNlOiBSZWdpc3RlckRldmljZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBic01vZGFsUmVmOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZSxcbiAgICBwcml2YXRlIGRldmljZVJlZ2lzdHJhdGlvblNlcnZpY2U6IERldmljZVJlZ2lzdHJhdGlvbkJ1bGtTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmVhdHVyZVNlcnZpY2U6IEZlYXR1cmVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaXNMb2FkaW5nJCA9IHRoaXMucmVnaXN0ZXJEZXZpY2VTZXJ2aWNlLmxvYWRpbmckO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJEZXZpY2UoZXZlbnRPYmplY3Q6IHsgc3RlcHBlcjogQzh5U3RlcHBlcjsgc3RlcDogQ2RrU3RlcCB9KSB7XG4gICAgIXRoaXMudXNlRVNUJC5nZXRWYWx1ZSgpID8gdGhpcy5jcmVhdGUoZXZlbnRPYmplY3QpIDogdGhpcy5yZWdpc3RlckJ5RXN0KGV2ZW50T2JqZWN0KTtcbiAgfVxuXG4gIGZpeEVycm9ycyhldmVudDogeyBzdGVwcGVyOiBDOHlTdGVwcGVyOyBzdGVwOiBDZGtTdGVwIH0sIGZhaWxlZFJlcXVlc3RzOiBhbnkpIHtcbiAgICBpZiAoZmFpbGVkUmVxdWVzdHMgJiYgZmFpbGVkUmVxdWVzdHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vcHRpb25zLnJlc2V0TW9kZWwoe1xuICAgICAgICBkZXZpY2VzVG9DcmVhdGU6IFtcbiAgICAgICAgICAuLi50aGlzLmxhc3RDcmVhdGVkRGV2aWNlcy5maWx0ZXIoZWwgPT5cbiAgICAgICAgICAgIGZhaWxlZFJlcXVlc3RzLm1hcChkYXRhID0+IGRhdGEuaWQpLmluY2x1ZGVzKGVsLmlkKVxuICAgICAgICAgIClcbiAgICAgICAgXVxuICAgICAgfSk7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgZXZlbnQ/LnN0ZXBwZXIucHJldmlvdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlKGV2ZW50T2JqZWN0OiB7IHN0ZXBwZXI6IEM4eVN0ZXBwZXI7IHN0ZXA6IENka1N0ZXAgfSkge1xuICAgIGlmICh0aGlzLm1vZGVsPy5kZXZpY2VzVG9DcmVhdGU/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubGFzdENyZWF0ZWREZXZpY2VzID0gWy4uLnRoaXMubW9kZWwuZGV2aWNlc1RvQ3JlYXRlXTtcblxuICAgICAgY29uc3QgZGF0YVRvU2VuZCA9IHRoaXMubW9kZWwuZGV2aWNlc1RvQ3JlYXRlLm1hcChcbiAgICAgICAgKGVsOiBHZW5lcmFsRGV2aWNlUmVnaXN0cmF0aW9uTW9kZWxUeXBlKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBpZCwgdGVuYW50LCBncm91cCB9ID0gZWw7XG4gICAgICAgICAgbGV0IGRhdGE6IHsgaWQ6IHN0cmluZzsgdGVuYW50SWQ/OiBzdHJpbmc7IGdyb3VwSWQ/OiBzdHJpbmcgfSA9IHsgaWQgfTtcblxuICAgICAgICAgIGlmICh0ZW5hbnQ/LmlkKSB7XG4gICAgICAgICAgICBkYXRhID0geyAuLi5kYXRhLCB0ZW5hbnRJZDogdGVuYW50LmlkIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGdyb3VwPy5pZCkge1xuICAgICAgICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgZ3JvdXBJZDogZ3JvdXAuaWQgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgdGhpcy5yZWdpc3RlckRldmljZVNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZU11bHRpcGxlKGRhdGFUb1NlbmQpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZShyZXF1ZXN0cyA9PiB7XG4gICAgICAgICAgdGhpcy5zdWNjZXNzID0gcmVxdWVzdHMuc3VjY2VzcyA/PyBbXTtcbiAgICAgICAgICBpZiAodGhpcy5zdWNjZXNzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQodGhpcy5QUk9EVUNUX0VYUEVSSUVOQ0UuRVZFTlQsIHtcbiAgICAgICAgICAgICAgcmVzdWx0OiB0aGlzLlBST0RVQ1RfRVhQRVJJRU5DRS5SRVNVTFQuU1VDQ0VTUyxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLlBST0RVQ1RfRVhQRVJJRU5DRS5DT01QT05FTlRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZmFpbGVkID0gcmVxdWVzdHMuZmFpbGVkID8/IFtdO1xuICAgICAgICAgIGlmICh0aGlzLmZhaWxlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KHRoaXMuUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5ULCB7XG4gICAgICAgICAgICAgIHJlc3VsdDogdGhpcy5QUk9EVUNUX0VYUEVSSUVOQ0UuUkVTVUxULkZBSUxVUkUsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcy5QUk9EVUNUX0VYUEVSSUVOQ0UuQ09NUE9ORU5UXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZXZlbnRPYmplY3QpIHtcbiAgICAgICAgICAgIGV2ZW50T2JqZWN0LnN0ZXBwZXIubmV4dCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckJ5RXN0KGV2ZW50T2JqZWN0OiB7IHN0ZXBwZXI6IEM4eVN0ZXBwZXI7IHN0ZXA6IENka1N0ZXAgfSkge1xuICAgIHRoaXMubGFzdENyZWF0ZWREZXZpY2VzID0gWy4uLnRoaXMubW9kZWwuZGV2aWNlc1RvQ3JlYXRlXTtcbiAgICB0aGlzLmRldmljZVJlZ2lzdHJhdGlvblNlcnZpY2VcbiAgICAgIC5jcmVhdGUodGhpcy5jb252ZXJ0T2JqZWN0VG9DU1ZGaWxlKHRoaXMubW9kZWwuZGV2aWNlc1RvQ3JlYXRlKSlcbiAgICAgIC50aGVuKCh7IHJlcywgZGF0YSB9KSA9PiB7XG4gICAgICAgIGlmIChyZXMuc3RhdHVzIDwgNDAwKSB7XG4gICAgICAgICAgdGhpcy5mYWlsZWQgPSBkYXRhLmZhaWxlZENyZWF0aW9uTGlzdC5tYXAodmFsdWUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgaWQ6IHZhbHVlLmRldmljZUlkLFxuICAgICAgICAgICAgICBtZXNzYWdlOiB2YWx1ZS5mYWlsdXJlUmVhc29uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGZhaWxlZElkcyA9IG5ldyBTZXQodGhpcy5mYWlsZWQubWFwKGl0ZW0gPT4gaXRlbS5pZCkpO1xuICAgICAgICAgIHRoaXMuc3VjY2VzcyA9IHRoaXMubW9kZWwuZGV2aWNlc1RvQ3JlYXRlLmZpbHRlcihpdGVtID0+ICFmYWlsZWRJZHMuaGFzKGl0ZW0uaWQpKTtcbiAgICAgICAgfVxuICAgICAgICBldmVudE9iamVjdC5zdGVwcGVyLm5leHQoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBldmVudE9iamVjdC5zdGVwcGVyLm5leHQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0T2JqZWN0VG9DU1ZGaWxlKGRhdGE6IGFueSk6IEZpbGUge1xuICAgIGNvbnN0IGZ1bGxDc3ZIZWFkZXJzID0gRVNUQ3N2SGVhZGVycztcblxuICAgIGNvbnN0IGNzdkhlYWRlcnMgPSBmdWxsQ3N2SGVhZGVycy5qb2luKCc7JykgKyAnXFxuJztcbiAgICBjb25zdCBkYXRhVG9TZW5kID0gZGF0YS5tYXAoZWwgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgSUQ6IGVsLmlkLFxuICAgICAgICBBVVRIX1RZUEU6ICdDRVJUSUZJQ0FURVMnLFxuICAgICAgICBFTlJPTExNRU5UX09UUDogZWwub25lVGltZVBhc3N3b3JkLFxuICAgICAgICBQQVRIOiBlbC5ncm91cD8uaWQgfHwgJycsXG4gICAgICAgIFRFTkFOVDogZWwudGVuYW50Py5pZCB8fCAnJ1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNzdlJvd3MgPSBkYXRhVG9TZW5kXG4gICAgICAubWFwKHJvdyA9PiBmdWxsQ3N2SGVhZGVycy5tYXAoaGVhZGVyID0+IHJvd1toZWFkZXJdID8/ICcnKS5qb2luKCc7JykpXG4gICAgICAuam9pbignXFxuJyk7XG5cbiAgICBjb25zdCBjc3ZDb250ZW50ID0gY3N2SGVhZGVycyArIGNzdlJvd3M7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtjc3ZDb250ZW50XSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pO1xuICAgIHJldHVybiBuZXcgRmlsZShbYmxvYl0sIGBFU1RSZWdpc3RyYXRpb25GaWxlLmNzdmAsIHsgdHlwZTogJ3RleHQvY3N2JyB9KTtcbiAgfVxuXG4gIEBtZW1vaXplKClcbiAgcHJpdmF0ZSBjYW5Mb2FkVGVuYW50cyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IGZyb20odGhpcy50ZW5hbnRVSVNlcnZpY2UuaXNNYW5hZ2VtZW50VGVuYW50KCkpKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgfVxuXG4gIEBtZW1vaXplKClcbiAgcHJpdmF0ZSBnZXRUZW5hbnRzJCgpOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElUZW5hbnQ+PiB7XG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IGZyb20odGhpcy50ZW5hbnRTZXJ2aWNlLmxpc3QodGhpcy5GSUxURVIpKSkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gIH1cblxuICBAbWVtb2l6ZSgpXG4gIHByaXZhdGUgZ2V0R3JvdXBzJCgpOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj4ge1xuICAgIHJldHVybiBkZWZlcigoKSA9PlxuICAgICAgZnJvbShcbiAgICAgICAgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmxpc3RRdWVyeShcbiAgICAgICAgICB7IF9fZmlsdGVyOiB7IF9faGFzOiAnYzh5X0lzRGV2aWNlR3JvdXAnIH0sIF9fb3JkZXJieTogW3sgbmFtZTogMSB9XSB9LFxuICAgICAgICAgIHsgLi4udGhpcy5GSUxURVIgfVxuICAgICAgICApXG4gICAgICApXG4gICAgKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgfVxufVxuIiwiPGM4eS1tb2RhbFxuICBbdGl0bGVdPVwiJ1JlZ2lzdGVyIGRldmljZXMnIHwgdHJhbnNsYXRlXCJcbiAgW2hlYWRlckNsYXNzZXNdPVwiJ2RpYWxvZy1oZWFkZXInXCJcbiAgW2N1c3RvbUZvb3Rlcl09XCJ0cnVlXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBjOHktbW9kYWwtdGl0bGU+XG4gICAgPHNwYW4gW2M4eUljb25dPVwiJ2M4eS1kZXZpY2UtY29ubmVjdCdcIj48L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuICA8Yzh5LXN0ZXBwZXIgW2hpZGVTdGVwUHJvZ3Jlc3NdPVwidHJ1ZVwiIGxpbmVhciBjOHktbW9kYWwtYm9keT5cbiAgICA8Y2RrLXN0ZXAgW3N0ZXBDb250cm9sXT1cImZvcm1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBzdGlja3ktdG9wIGJnLWNvbXBvbmVudFwiPlxuICAgICAgICA8cCBjbGFzcz1cInRleHQtbWVkaXVtIHRleHQtMTYgc2VwYXJhdG9yLWJvdHRvbSBwLTE2XCIgdHJhbnNsYXRlPlJlZ2lzdGVyIGdlbmVyYWwgZGV2aWNlczwvcD5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIG0tMjQgYS1pLWNlbnRlclwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAnQ3JlYXRlIGRldmljZSBjZXJ0aWZpY2F0ZXMgZHVyaW5nIGRldmljZSByZWdpc3RyYXRpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBmb3I9XCJ1c2VFU1RcIlxuICAgICAgICAgICpuZ0lmPVwiY2VydGlmaWNhdGVBdXRob3JpdHlGZWF0dXJlRW5hYmxlZCB8IGFzeW5jXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIG5hbWU9XCJ1c2VFU1RcIlxuICAgICAgICAgICAgaWQ9XCJ1c2VFU1RcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwidXNlRVNUJC5nZXRWYWx1ZSgpXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVzZUVTVCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIj57eyAnQ3JlYXRlIGRldmljZSBjZXJ0aWZpY2F0ZXMgZHVyaW5nIGRldmljZSByZWdpc3RyYXRpb24nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBwb3BvdmVyPVwie3sgJ1RoZSBkZXZpY2UgcmVnaXN0cmF0aW9uIHByb2Nlc3MgaW5jbHVkZXMgY3JlYXRpbmcgZGV2aWNlIGNlcnRpZmljYXRlcywgd2hpY2ggYXJlIGlzc3VlZCBieSB0aGUgdGVuYW50XFwncyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKENBKS4nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8Zm9ybWx5LWZvcm1cbiAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcbiAgICAgICAgICBbZmllbGRzXT1cImZpZWxkc1wiXG4gICAgICAgICAgW21vZGVsXT1cIm1vZGVsXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJvcHRpb25zXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm1seS1ncm91cC1hcnJheS1jb2xzIGQtYmxvY2sgcC1sLTI0IHAtYi0yNCBtaW4taGVpZ2h0LWZpdCBwLXItOFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydwLXQtMjQnIDogIShjZXJ0aWZpY2F0ZUF1dGhvcml0eUZlYXR1cmVFbmFibGVkIHwgYXN5bmMpfVwiXG4gICAgICAgID48L2Zvcm1seS1mb3JtPlxuICAgICAgPC9kaXY+XG4gICAgICA8Yzh5LXN0ZXBwZXItYnV0dG9uc1xuICAgICAgICAob25OZXh0KT1cInJlZ2lzdGVyRGV2aWNlKCRldmVudClcIlxuICAgICAgICAob25DYW5jZWwpPVwiYnNNb2RhbFJlZi5oaWRlKClcIlxuICAgICAgICBbc2hvd0J1dHRvbnNdPVwieyBjYW5jZWw6IHRydWUsIG5leHQ6IHRydWUgfVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhZm9ybT8udmFsaWRcIlxuICAgICAgICBbcGVuZGluZ109XCJpc0xvYWRpbmckIHwgYXN5bmNcIlxuICAgICAgICBjbGFzcz1cInN0aWNreS1ib3R0b20gZC1ibG9jayBwLXQtMTYgcC1iLTE2IHNlcGFyYXRvci10b3AgYmctbGV2ZWwtMFwiXG4gICAgICA+PC9jOHktc3RlcHBlci1idXR0b25zPlxuICAgIDwvY2RrLXN0ZXA+XG4gICAgPGNkay1zdGVwIHN0YXRlPVwiZmluYWxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTI0IG1pbi1oZWlnaHQtZml0XCI+XG4gICAgICAgIDxjOHktb3BlcmF0aW9uLXJlc3VsdFxuICAgICAgICAgICpuZ0lmPVwic3VjY2Vzcy5sZW5ndGggPT09IDEgJiYgZmFpbGVkLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgdGV4dD1cInt7ICdEZXZpY2UgcmVnaXN0ZXJlZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIFtzaXplXT1cIjg0XCJcbiAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgdHlwZT1cInN1Y2Nlc3NcIlxuICAgICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICAgID48L2M4eS1vcGVyYXRpb24tcmVzdWx0PlxuICAgICAgICA8Yzh5LW9wZXJhdGlvbi1yZXN1bHRcbiAgICAgICAgICAqbmdJZj1cInN1Y2Nlc3MubGVuZ3RoID09PSAwICYmIGZhaWxlZC5sZW5ndGggPT09IDFcIlxuICAgICAgICAgIHRleHQ9XCJ7eyAnRmFpbGVkIHRvIHJlZ2lzdGVyIGRldmljZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIFtzaXplXT1cIjg0XCJcbiAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgdHlwZT1cImVycm9yXCJcbiAgICAgICAgICBjbGFzcz1cImxlYWRcIlxuICAgICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VjY2Vzcy5sZW5ndGggPiAxIHx8IGZhaWxlZC5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgPGM4eS1vcGVyYXRpb24tcmVzdWx0XG4gICAgICAgICAgICAqbmdJZj1cImZhaWxlZC5sZW5ndGggPT09IDBcIlxuICAgICAgICAgICAgW3RleHRdPVwiXG4gICAgICAgICAgICAgICd7eyBzdWNjZXNzZnVsRGV2aWNlc0NvdW50IH19IGRldmljZXMgcmVnaXN0ZXJlZCdcbiAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyBzdWNjZXNzZnVsRGV2aWNlc0NvdW50OiBzdWNjZXNzLmxlbmd0aCB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3NpemVdPVwiODRcIlxuICAgICAgICAgICAgW3ZlcnRpY2FsXT1cInRydWVcIlxuICAgICAgICAgICAgdHlwZT1cInN1Y2Nlc3NcIlxuICAgICAgICAgICAgY2xhc3M9XCJsZWFkXCJcbiAgICAgICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cbiAgICAgICAgICA8Yzh5LW9wZXJhdGlvbi1yZXN1bHRcbiAgICAgICAgICAgICpuZ0lmPVwic3VjY2Vzcy5sZW5ndGggPT09IDBcIlxuICAgICAgICAgICAgW3RleHRdPVwiXG4gICAgICAgICAgICAgICd7eyBmYWlsZWREZXZpY2VzQ291bnQgfX0gZGV2aWNlcyBmYWlsZWQgdG8gcmVnaXN0ZXInXG4gICAgICAgICAgICAgICAgfCB0cmFuc2xhdGU6IHsgZmFpbGVkRGV2aWNlc0NvdW50OiBmYWlsZWQubGVuZ3RoIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICB0eXBlPVwiZXJyb3JcIlxuICAgICAgICAgICAgY2xhc3M9XCJsZWFkXCJcbiAgICAgICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cInN1Y2Nlc3MubGVuZ3RoID4gMCAmJiBmYWlsZWQubGVuZ3RoID4gMFwiIGNsYXNzPVwicC1sLTI0IHAtci0yNCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxjOHktb3BlcmF0aW9uLXJlc3VsdFxuICAgICAgICAgICAgdGV4dD1cInt7ICdTZXZlcmFsIGRldmljZXMgZmFpbGVkIHRvIHJlZ2lzdGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICB0eXBlPVwiZXJyb3JcIlxuICAgICAgICAgICAgY2xhc3M9XCJsZWFkXCJcbiAgICAgICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cbiAgICAgICAgICA8cFxuICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInsgY291bnQ6IGZhaWxlZC5sZW5ndGgsIHRvdGFsOiBmYWlsZWQubGVuZ3RoICsgc3VjY2Vzcy5sZW5ndGggfVwiXG4gICAgICAgICAgICBjbGFzcz1cInAtYi0xNiB0ZXh0LWRhbmdlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgUmVnaXN0cmF0aW9uIGZhaWxlZCBmb3Ige3sgY291bnQgfX0gZGV2aWNlcyBvdXQgb2Yge3sgdG90YWwgfX0uXG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1iLTggcC1sLTI0IHAtci0yNFwiICpuZ0lmPVwic3VjY2Vzcy5sZW5ndGggPiAwXCIgdHJhbnNsYXRlPlxuICAgICAgICAgIFR1cm4gb24gdGhlIHJlZ2lzdGVyZWQgZGV2aWNlKHMpIGFuZCB3YWl0IGZvciBjb25uZWN0aW9uKHMpIHRvIGJlIGVzdGFibGlzaGVkLiBPbmNlIGFcbiAgICAgICAgICBkZXZpY2UgaXMgY29ubmVjdGVkLCBpdHMgc3RhdHVzIHdpbGwgY2hhbmdlIHRvIFwiUGVuZGluZyBhY2NlcHRhbmNlXCIuIFlvdSB3aWxsIG5lZWQgdG9cbiAgICAgICAgICBhcHByb3ZlIGl0IGJ5IGNsaWNraW5nIG9uIHRoZSBcIkFjY2VwdFwiIGJ1dHRvbi5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGM4eS1saXN0LWdyb3VwIGNsYXNzPVwic2VwYXJhdG9yLXRvcCBtLXQtMTZcIj5cbiAgICAgICAgICA8Yzh5LWxpICpuZ0Zvcj1cImxldCBmYWlsIG9mIGZhaWxlZFwiPlxuICAgICAgICAgICAgPGM4eS1saS1pY29uIGNsYXNzPVwidGV4dC1kYW5nZXJcIiBbaWNvbl09XCInYmFuJ1wiPjwvYzh5LWxpLWljb24+XG4gICAgICAgICAgICA8cD57eyBmYWlsPy5pZCB9fTwvcD5cbiAgICAgICAgICAgIDxzbWFsbD57eyBmYWlsPy5tZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDxjOHktbGktY29sbGFwc2U+XG4gICAgICAgICAgICAgIDxwcmU+PGNvZGU+e3sgZmFpbD8uZGV0YWlscyB8IGpzb24gfX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICA8L2M4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICA8L2M4eS1saT5cblxuICAgICAgICAgIDxjOHktbGkgKm5nRm9yPVwibGV0IHMgb2Ygc3VjY2Vzc1wiPlxuICAgICAgICAgICAgPGM4eS1saS1pY29uIGNsYXNzPVwidGV4dC1zdWNjZXNzXCIgW2ljb25dPVwiJ2NoZWNrLWNpcmNsZSdcIj48L2M4eS1saS1pY29uPlxuICAgICAgICAgICAge3sgcz8uaWQgfX1cbiAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnNcbiAgICAgICAgY2xhc3M9XCJzdGlja3ktYm90dG9tIGQtYmxvY2sgcC10LTE2IHAtYi0xNiBzZXBhcmF0b3ItdG9wIGJnLWxldmVsLTBcIlxuICAgICAgICAob25DdXN0b20pPVwiYnNNb2RhbFJlZi5oaWRlKClcIlxuICAgICAgICAob25CYWNrKT1cImZpeEVycm9ycygkZXZlbnQsIGZhaWxlZClcIlxuICAgICAgICBbc2hvd0J1dHRvbnNdPVwieyBiYWNrOiBmYWlsZWQubGVuZ3RoID4gMCwgY3VzdG9tOiB0cnVlIH1cIlxuICAgICAgICBbbGFiZWxzXT1cInsgYmFjazogJ0ZpeCBlcnJvcnMnLCBjdXN0b206ICdDbG9zZScgfVwiXG4gICAgICA+PC9jOHktc3RlcHBlci1idXR0b25zPlxuICAgIDwvY2RrLXN0ZXA+XG4gIDwvYzh5LXN0ZXBwZXI+XG48L2M4eS1tb2RhbD5cbiJdfQ==
|
|
@@ -28,7 +28,7 @@ class DeviceProvisionedCertificatesService {
|
|
|
28
28
|
const url = `/inventory/managedObjects/${device.id}/user`;
|
|
29
29
|
const res = await this.client.fetch(url, { method });
|
|
30
30
|
const data = await res.json();
|
|
31
|
-
if (res.status
|
|
31
|
+
if (res.status >= 400) {
|
|
32
32
|
throw new Error(data.message);
|
|
33
33
|
}
|
|
34
34
|
return data.userName;
|
|
@@ -51,7 +51,7 @@ class DeviceProvisionedCertificatesGuard {
|
|
|
51
51
|
}
|
|
52
52
|
try {
|
|
53
53
|
const provisionedCertificates = await this.deviceProvisionedCertificatesService.getDeviceProvisionedCertificates(contextData);
|
|
54
|
-
return provisionedCertificates
|
|
54
|
+
return provisionedCertificates?.length > 0;
|
|
55
55
|
}
|
|
56
56
|
catch (error) {
|
|
57
57
|
return false;
|