@idea-ionic/auth 8.2.17 → 8.2.18

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.
@@ -86,7 +86,7 @@ export class IDEASignUpPage {
86
86
  </ion-card-header>
87
87
  <ion-card-content>
88
88
  @if (errorMsg) {
89
- <p class="errorBox">
89
+ <p testId="signup.error" class="errorBox">
90
90
  <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>
91
91
  {{ errorMsg }}
92
92
  </p>
@@ -96,6 +96,7 @@ export class IDEASignUpPage {
96
96
  <ion-icon name="person-circle" color="primary" />
97
97
  </ion-label>
98
98
  <ion-input
99
+ testId="signup.email"
99
100
  type="email"
100
101
  inputmode="email"
101
102
  pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}"
@@ -114,6 +115,7 @@ export class IDEASignUpPage {
114
115
  <ion-icon name="key" color="primary" />
115
116
  </ion-label>
116
117
  <ion-input
118
+ testId="signup.password"
117
119
  type="password"
118
120
  spellcheck="false"
119
121
  autocorrect="off"
@@ -126,7 +128,13 @@ export class IDEASignUpPage {
126
128
  [(ngModel)]="password"
127
129
  (keyup.enter)="register()"
128
130
  />
129
- <ion-button slot="end" fill="clear" color="dark" (click)="openPasswordPolicy($event)">
131
+ <ion-button
132
+ testId="openPasswordPolicyButton"
133
+ slot="end"
134
+ fill="clear"
135
+ color="dark"
136
+ (click)="openPasswordPolicy($event)"
137
+ >
130
138
  <ion-icon icon="help-circle-outline" slot="icon-only" />
131
139
  </ion-button>
132
140
  </ion-item>
@@ -141,6 +149,7 @@ export class IDEASignUpPage {
141
149
  @if (translationExists('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')) {
142
150
  <a
143
151
  ion-text
152
+ testId="openTermsAndConditionsButton"
144
153
  color="primary"
145
154
  target="_blank"
146
155
  [title]="'IDEA_AUTH.TERMS_AND_CONDITIONS_HINT' | translate"
@@ -158,6 +167,7 @@ export class IDEASignUpPage {
158
167
  @if (translationExists('IDEA_VARIABLES.PRIVACY_POLICY_URL')) {
159
168
  <a
160
169
  ion-text
170
+ testId="openPrivacyPolicyButton"
161
171
  color="primary"
162
172
  target="_blank"
163
173
  [title]="'IDEA_AUTH.PRIVACY_POLICY_HINT' | translate"
@@ -170,6 +180,7 @@ export class IDEASignUpPage {
170
180
  </ion-row>
171
181
  }
172
182
  <ion-button
183
+ testId="signUpButton"
173
184
  expand="block"
174
185
  [disabled]="!agreementsCheck"
175
186
  [title]="'IDEA_AUTH.CREATE_AN_ACCOUNT_HINT' | translate"
@@ -178,6 +189,7 @@ export class IDEASignUpPage {
178
189
  {{ 'IDEA_AUTH.CREATE_AN_ACCOUNT' | translate }}
179
190
  </ion-button>
180
191
  <ion-button
192
+ testId="resendLinkButton"
181
193
  fill="clear"
182
194
  expand="block"
183
195
  class="smallCaseButton"
@@ -187,6 +199,7 @@ export class IDEASignUpPage {
187
199
  {{ 'IDEA_AUTH.HAVEN_T_RECEIVED_CONFIRMATION_LINK' | translate }}
188
200
  </ion-button>
189
201
  <ion-button
202
+ testId="backToSignInButton"
190
203
  fill="clear"
191
204
  expand="block"
192
205
  class="smallCaseButton"
@@ -232,7 +245,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
232
245
  </ion-card-header>
233
246
  <ion-card-content>
234
247
  @if (errorMsg) {
235
- <p class="errorBox">
248
+ <p testId="signup.error" class="errorBox">
236
249
  <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>
237
250
  {{ errorMsg }}
238
251
  </p>
@@ -242,6 +255,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
242
255
  <ion-icon name="person-circle" color="primary" />
243
256
  </ion-label>
244
257
  <ion-input
258
+ testId="signup.email"
245
259
  type="email"
246
260
  inputmode="email"
247
261
  pattern="[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}"
@@ -260,6 +274,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
260
274
  <ion-icon name="key" color="primary" />
261
275
  </ion-label>
262
276
  <ion-input
277
+ testId="signup.password"
263
278
  type="password"
264
279
  spellcheck="false"
265
280
  autocorrect="off"
@@ -272,7 +287,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
272
287
  [(ngModel)]="password"
273
288
  (keyup.enter)="register()"
274
289
  />
275
- <ion-button slot="end" fill="clear" color="dark" (click)="openPasswordPolicy($event)">
290
+ <ion-button
291
+ testId="openPasswordPolicyButton"
292
+ slot="end"
293
+ fill="clear"
294
+ color="dark"
295
+ (click)="openPasswordPolicy($event)"
296
+ >
276
297
  <ion-icon icon="help-circle-outline" slot="icon-only" />
277
298
  </ion-button>
278
299
  </ion-item>
@@ -287,6 +308,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
287
308
  @if (translationExists('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')) {
288
309
  <a
289
310
  ion-text
311
+ testId="openTermsAndConditionsButton"
290
312
  color="primary"
291
313
  target="_blank"
292
314
  [title]="'IDEA_AUTH.TERMS_AND_CONDITIONS_HINT' | translate"
@@ -304,6 +326,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
304
326
  @if (translationExists('IDEA_VARIABLES.PRIVACY_POLICY_URL')) {
305
327
  <a
306
328
  ion-text
329
+ testId="openPrivacyPolicyButton"
307
330
  color="primary"
308
331
  target="_blank"
309
332
  [title]="'IDEA_AUTH.PRIVACY_POLICY_HINT' | translate"
@@ -316,6 +339,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
316
339
  </ion-row>
317
340
  }
318
341
  <ion-button
342
+ testId="signUpButton"
319
343
  expand="block"
320
344
  [disabled]="!agreementsCheck"
321
345
  [title]="'IDEA_AUTH.CREATE_AN_ACCOUNT_HINT' | translate"
@@ -324,6 +348,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
324
348
  {{ 'IDEA_AUTH.CREATE_AN_ACCOUNT' | translate }}
325
349
  </ion-button>
326
350
  <ion-button
351
+ testId="resendLinkButton"
327
352
  fill="clear"
328
353
  expand="block"
329
354
  class="smallCaseButton"
@@ -333,6 +358,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
333
358
  {{ 'IDEA_AUTH.HAVEN_T_RECEIVED_CONFIRMATION_LINK' | translate }}
334
359
  </ion-button>
335
360
  <ion-button
361
+ testId="backToSignInButton"
336
362
  fill="clear"
337
363
  expand="block"
338
364
  class="smallCaseButton"
@@ -347,4 +373,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
347
373
  </ion-content>
348
374
  `, styles: [".flexBox{background:var(--idea-auth-background-color, var(--ion-color-white-shade))}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--idea-auth-card-background-color, var(--ion-color-white));border:1px solid var(--idea-auth-card-border-color, var(--ion-color-light));border-radius:10px;box-shadow:none;text-align:center}.authCard ion-img{width:150px;display:block;margin:0 auto}.authCard ion-card-title{font-family:auth-title;font-size:3em}.authCard ion-card-subtitle{font-family:auth-title;font-size:1.2em}.authCard ion-card-content{padding-top:16px}.authCard ion-card-content .errorBox{padding-left:10px;margin-bottom:20px;text-align:left;border-left:2px solid var(--ion-color-danger)}.authCard ion-card-content ion-item{--ion-item-background: var(--idea-auth-card-background-color, var(--ion-color-white));--border-color: var(--idea-auth-card-border-color, var(--ion-color-light))}.authCard ion-card-content ion-label[position=inline] ion-icon{padding-top:4px;padding-right:5px;font-size:1.3em}.authCard ion-card-content .agreementsAcceptanceRow{margin-top:15px;font-size:.9em}.authCard ion-card-content .agreementsAcceptanceRow ion-checkbox{vertical-align:bottom;margin-right:3px}.authCard ion-card-content ion-button:not([slot=end]){margin-top:15px}.authCard ion-card-content .smallCaseButton{text-transform:none;letter-spacing:normal;font-size:1em}@media only screen and (max-width: 500px){.authCard{background-color:transparent;border:none}}.ideaLogo{width:65px;margin:40px auto 0;cursor:pointer}.passwordPolicyPopover{--width: 350px}\n"] }]
349
375
  }], ctorParameters: () => [] });
350
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblVwLnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL2F1dGgvc3JjL3NpZ25VcC5wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUNMLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsVUFBVSxFQUNWLE9BQU8sRUFDUCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGVBQWUsRUFDZixjQUFjLEVBQ2QsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sT0FBTyxFQUNQLFFBQVEsRUFDUixXQUFXLEVBQ1osTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2xCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUF1SmpELE1BQU0sT0FBTyxjQUFjO0lBZXpCO1FBZFUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqQyxTQUFJLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdCLGFBQVEsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyQyxhQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFD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TSxrVEFDTixNQUFNLG9EQUNOLFNBQVMsb1BBQ1QsUUFBUSw2RkFDUixPQUFPLDJKQUNQLE9BQU8sME5BQ1AsY0FBYywrRUFDZCxlQUFlLHlGQUNmLFlBQVksc0ZBQ1osYUFBYSxzR0FDYixPQUFPLHlMQUNQLFVBQVUsd0tBQ1YsUUFBUSw4ZUFDUixXQUFXOzsyRkFnSUYsY0FBYztrQkFySjFCLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsaUJBQWlCO3dCQUNqQixPQUFPO3dCQUNQLE1BQU07d0JBQ04sTUFBTTt3QkFDTixTQUFTO3dCQUNULFFBQVE7d0JBQ1IsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsT0FBTzt3QkFDUCxVQUFVO3dCQUNWLFFBQVE7d0JBQ1IsV0FBVztxQkFDWixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EySFQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBOYXZDb250cm9sbGVyLFxuICBQb3BvdmVyQ29udHJvbGxlcixcbiAgSW9uQ29udGVudCxcbiAgSW9uQ2FyZCxcbiAgSW9uQ2FyZEhlYWRlcixcbiAgSW9uQ2FyZFRpdGxlLFxuICBJb25DYXJkU3VidGl0bGUsXG4gIElvbkNhcmRDb250ZW50LFxuICBJb25JdGVtLFxuICBJb25JY29uLFxuICBJb25MYWJlbCxcbiAgSW9uQnV0dG9uLFxuICBJb25Sb3csXG4gIElvbkNvbCxcbiAgSW9uVGV4dCxcbiAgSW9uSW5wdXQsXG4gIElvbkNoZWNrYm94XG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2lkZWEtdG9vbGJveCc7XG5pbXBvcnQge1xuICBJREVBRW52aXJvbm1lbnQsXG4gIElERUFNZXNzYWdlU2VydmljZSxcbiAgSURFQUxvYWRpbmdTZXJ2aWNlLFxuICBJREVBVHJhbnNsYXRpb25zU2VydmljZSxcbiAgSURFQVRyYW5zbGF0ZVBpcGVcbn0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQVBhc3N3b3JkUG9saWN5Q29tcG9uZW50IH0gZnJvbSAnLi9wYXNzd29yZFBvbGljeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSURFQUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLXNpZ24tdXAnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIElERUFUcmFuc2xhdGVQaXBlLFxuICAgIElvblRleHQsXG4gICAgSW9uQ29sLFxuICAgIElvblJvdyxcbiAgICBJb25CdXR0b24sXG4gICAgSW9uTGFiZWwsXG4gICAgSW9uSWNvbixcbiAgICBJb25JdGVtLFxuICAgIElvbkNhcmRDb250ZW50LFxuICAgIElvbkNhcmRTdWJ0aXRsZSxcbiAgICBJb25DYXJkVGl0bGUsXG4gICAgSW9uQ2FyZEhlYWRlcixcbiAgICBJb25DYXJkLFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uSW5wdXQsXG4gICAgSW9uQ2hlY2tib3hcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWNvbnRlbnQ+XG4gICAgICA8Zm9ybSBjbGFzcz1cImZsZXhCb3hcIj5cbiAgICAgICAgPGlvbi1jYXJkIGNsYXNzPVwiYXV0aENhcmRcIj5cbiAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlIGNvbG9yPVwicHJpbWFyeVwiPnt7ICdJREVBX0FVVEguTkVXX0FDQ09VTlQnIHwgdHJhbnNsYXRlIH19PC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT57eyAnSURFQV9BVVRILlJFR0lTVEVSX0FfTkVXX0FDQ09VTlRfVE9fVEhFX1NZU1RFTScgfCB0cmFuc2xhdGUgfX08L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgQGlmIChlcnJvck1zZykge1xuICAgICAgICAgICAgICA8cCBjbGFzcz1cImVycm9yQm94XCI+XG4gICAgICAgICAgICAgICAgPGI+IHt7ICdJREVBX0FVVEguRVJST1InIHwgdHJhbnNsYXRlIH19LiA8L2I+XG4gICAgICAgICAgICAgICAge3sgZXJyb3JNc2cgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGlvbi1pdGVtPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsIHBvc2l0aW9uPVwiaW5saW5lXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJwZXJzb24tY2lyY2xlXCIgY29sb3I9XCJwcmltYXJ5XCIgLz5cbiAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgIGlucHV0bW9kZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICBwYXR0ZXJuPVwiW0EtWmEtejAtOS5fJSstXXsyLH1AW2EtekEtWi1fLl17Mix9Wy5dezF9W2EtekEtWl17Mix9XCJcbiAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInSURFQV9BVVRILkVNQUlMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguUkVHSVNUUkFUSU9OX0VNQUlMX0hJTlQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJyZWdpc3RlcigpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgICA8aW9uLWl0ZW0+XG4gICAgICAgICAgICAgIDxpb24tbGFiZWwgcG9zaXRpb249XCJpbmxpbmVcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImtleVwiIGNvbG9yPVwicHJpbWFyeVwiIC8+XG4gICAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgIFtwYXR0ZXJuXT1cIl9hdXRoLmdldFBhc3N3b3JkUG9saWN5UGF0dGVybkZvcklucHV0KClcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRWRpdF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidJREVBX0FVVEguUEFTU1dPUkQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0lERUFfQVVUSC5DSE9PU0VfQV9QQVNTV09SRCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInJlZ2lzdGVyKClcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzbG90PVwiZW5kXCIgZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cIm9wZW5QYXNzd29yZFBvbGljeSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIGljb249XCJoZWxwLWNpcmNsZS1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiIC8+XG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICB0cmFuc2xhdGlvbkV4aXN0cygnSURFQV9WQVJJQUJMRVMuVEVSTVNfQU5EX0NPTkRJVElPTlNfVVJMJykgfHxcbiAgICAgICAgICAgICAgdHJhbnNsYXRpb25FeGlzdHMoJ0lERUFfVkFSSUFCTEVTLlBSSVZBQ1lfUE9MSUNZX1VSTCcpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgPGlvbi1yb3cgY2xhc3M9XCJhZ3JlZW1lbnRzQWNjZXB0YW5jZVJvd1wiPlxuICAgICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveCBzaXplPVwic21hbGxcIiBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIiBbKG5nTW9kZWwpXT1cImFncmVlbWVudHNDaGVja1wiIC8+XG4gICAgICAgICAgICAgICAgICB7eyAnSURFQV9BVVRILkFHUkVFTUVOVFNfQ0hFQ0tfUkVHSVNUUkFUSU9OJyB8IHRyYW5zbGF0ZSB9fTpcbiAgICAgICAgICAgICAgICAgIEBpZiAodHJhbnNsYXRpb25FeGlzdHMoJ0lERUFfVkFSSUFCTEVTLlRFUk1TX0FORF9DT05ESVRJT05TX1VSTCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgaW9uLXRleHRcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguVEVSTVNfQU5EX0NPTkRJVElPTlNfSElOVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cIidJREVBX1ZBUklBQkxFUy5URVJNU19BTkRfQ09ORElUSU9OU19VUkwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdJREVBX0FVVEguVEVSTVNfQU5EX0NPTkRJVElPTlMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uRXhpc3RzKCdJREVBX1ZBUklBQkxFUy5QUklWQUNZX1BPTElDWV9VUkwnKSAmJlxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbkV4aXN0cygnSURFQV9WQVJJQUJMRVMuVEVSTVNfQU5EX0NPTkRJVElPTlNfVVJMJylcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQ+ICYgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAodHJhbnNsYXRpb25FeGlzdHMoJ0lERUFfVkFSSUFCTEVTLlBSSVZBQ1lfUE9MSUNZX1VSTCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgaW9uLXRleHRcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguUFJJVkFDWV9QT0xJQ1lfSElOVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cIidJREVBX1ZBUklBQkxFUy5QUklWQUNZX1BPTElDWV9VUkwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdJREVBX0FVVEguUFJJVkFDWV9QT0xJQ1knIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIGV4cGFuZD1cImJsb2NrXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFhZ3JlZW1lbnRzQ2hlY2tcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0lERUFfQVVUSC5DUkVBVEVfQU5fQUNDT1VOVF9ISU5UJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZWdpc3RlcigpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0lERUFfQVVUSC5DUkVBVEVfQU5fQUNDT1VOVCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgIGV4cGFuZD1cImJsb2NrXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzbWFsbENhc2VCdXR0b25cIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0lERUFfQVVUSC5IQVZFTl9UX1JFQ0VJVkVEX0NPTkZJUk1BVElPTl9MSU5LX0hJTlQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9SZXNlbmRMaW5rKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnSURFQV9BVVRILkhBVkVOX1RfUkVDRUlWRURfQ09ORklSTUFUSU9OX0xJTksnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwic21hbGxDYXNlQnV0dG9uXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguQkFDS19UT19TSUdOX0lOX0hJTlQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9BdXRoKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnSURFQV9BVVRILkJBQ0tfVE9fU0lHTl9JTicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9pb24tY29udGVudD5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJ2F1dGguc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIElERUFTaWduVXBQYWdlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvdGVjdGVkIF9lbnYgPSBpbmplY3QoSURFQUVudmlyb25tZW50KTtcbiAgcHJpdmF0ZSBfbmF2ID0gaW5qZWN0KE5hdkNvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9wb3BvdmVyID0gaW5qZWN0KFBvcG92ZXJDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfbWVzc2FnZSA9IGluamVjdChJREVBTWVzc2FnZVNlcnZpY2UpO1xuICBwcml2YXRlIF9sb2FkaW5nID0gaW5qZWN0KElERUFMb2FkaW5nU2VydmljZSk7XG4gIHByaXZhdGUgX3RyYW5zbGF0ZSA9IGluamVjdChJREVBVHJhbnNsYXRpb25zU2VydmljZSk7XG4gIHB1YmxpYyBfYXV0aCA9IGluamVjdChJREVBQXV0aFNlcnZpY2UpO1xuXG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG4gIGFncmVlbWVudHNDaGVjayA9IGZhbHNlO1xuICBwYXNzd29yZFBvbGljeTogYW55O1xuICBlcnJvck1zZzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucGFzc3dvcmRQb2xpY3kgPSB0aGlzLl9lbnYuaWRlYS5hdXRoLnBhc3N3b3JkUG9saWN5O1xuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZW52LmlkZWEuYXV0aC5yZWdpc3RyYXRpb25Jc1Bvc3NpYmxlKSByZXR1cm4gdGhpcy5nb1RvQXV0aCgpO1xuICAgIHRoaXMuYWdyZWVtZW50c0NoZWNrID1cbiAgICAgIHRoaXMuX3RyYW5zbGF0ZS5fKCdJREVBX1ZBUklBQkxFUy5URVJNU19BTkRfQ09ORElUSU9OU19VUkwnKSB8fFxuICAgICAgdGhpcy5fdHJhbnNsYXRlLl8oJ0lERUFfVkFSSUFCTEVTLlBSSVZBQ1lfUE9MSUNZX1VSTCcpXG4gICAgICAgID8gdGhpcy5hZ3JlZW1lbnRzQ2hlY2tcbiAgICAgICAgOiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgcmVnaXN0ZXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX2xvYWRpbmcuc2hvdygpO1xuICAgICAgdGhpcy5lcnJvck1zZyA9IG51bGw7XG4gICAgICBpZiAoaXNFbXB0eSh0aGlzLmVtYWlsLCAnZW1haWwnKSkgdGhpcy5lcnJvck1zZyA9IHRoaXMuX3RyYW5zbGF0ZS5fKCdJREVBX0FVVEguVkFMSURfRU1BSUxfT0JMSUdBVE9SWScpO1xuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuX2F1dGgudmFsaWRhdGVQYXNzd29yZEFnYWluc3RQb2xpY3kodGhpcy5wYXNzd29yZCk7XG4gICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAwICYmIHRoaXMucGFzc3dvcmRQb2xpY3kuYWR2YW5jZWRQYXNzd29yZENoZWNrKSB7XG4gICAgICAgICAgY29uc3QgZW1haWxQYXJ0cyA9IFsuLi50aGlzLmVtYWlsPy5zcGxpdCgnQCcpWzBdLnNwbGl0KC9cXFcvZyldO1xuICAgICAgICAgIGVycm9ycy5wdXNoKC4uLihhd2FpdCB0aGlzLl9hdXRoLnZhbGlkYXRlUGFzc3dvcmRBZ2FpbnN0RGF0YWJhc2VzKHRoaXMucGFzc3dvcmQsIGVtYWlsUGFydHMpKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpXG4gICAgICAgICAgdGhpcy5lcnJvck1zZyA9IFtcbiAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5fKCdJREVBX0FVVEguUEFTU1dPUkRfUkVRVUlSRU1FTlRTX0ZPTExPVycpLFxuICAgICAgICAgICAgLi4uZXJyb3JzLm1hcCh4ID0+XG4gICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5fKCdJREVBX0FVVEguUEFTU1dPUkRfUkVRVUlSRU1FTlRTLicuY29uY2F0KHgpLCB7IG46IHRoaXMucGFzc3dvcmRQb2xpY3kubWluTGVuZ3RoIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgXS5qb2luKCcgJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5lcnJvck1zZykgcmV0dXJuIHRoaXMuX21lc3NhZ2UuZXJyb3IoJ0lERUFfQVVUSC5SRUdJU1RSQVRJT05fRkFJTEVEJyk7XG4gICAgICBhd2FpdCB0aGlzLl9hdXRoLnJlZ2lzdGVyKHRoaXMuZW1haWwsIHRoaXMucGFzc3dvcmQpO1xuICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdJREVBX0FVVEguUkVHSVNUUkFUSU9OX0NPTVBMRVRFRCcpO1xuICAgICAgdGhpcy5nb1RvQXV0aCgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvck1zZyA9IChlcnIgYXMgYW55KS5tZXNzYWdlO1xuICAgICAgdGhpcy5fbWVzc2FnZS5lcnJvcignSURFQV9BVVRILlJFR0lTVFJBVElPTl9GQUlMRUQnKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fbG9hZGluZy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNsYXRpb25FeGlzdHMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl90cmFuc2xhdGUuXyhrZXkpO1xuICB9XG5cbiAgYXN5bmMgb3BlblBhc3N3b3JkUG9saWN5KGV2ZW50OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNzc0NsYXNzID0gJ3Bhc3N3b3JkUG9saWN5UG9wb3Zlcic7XG4gICAgY29uc3QgcG9wb3ZlciA9IGF3YWl0IHRoaXMuX3BvcG92ZXIuY3JlYXRlKHsgY29tcG9uZW50OiBJREVBUGFzc3dvcmRQb2xpY3lDb21wb25lbnQsIGV2ZW50LCBjc3NDbGFzcyB9KTtcbiAgICBhd2FpdCBwb3BvdmVyLnByZXNlbnQoKTtcbiAgfVxuXG4gIGdvVG9SZXNlbmRMaW5rKCk6IHZvaWQge1xuICAgIHRoaXMuX25hdi5uYXZpZ2F0ZUZvcndhcmQoWydhdXRoJywgJ3Jlc2VuZC1saW5rJ10pO1xuICB9XG4gIGdvVG9BdXRoKCk6IHZvaWQge1xuICAgIHRoaXMuX25hdi5uYXZpZ2F0ZUJhY2soWydhdXRoJ10pO1xuICB9XG59XG4iXX0=
376
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblVwLnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL2F1dGgvc3JjL3NpZ25VcC5wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUNMLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsVUFBVSxFQUNWLE9BQU8sRUFDUCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGVBQWUsRUFDZixjQUFjLEVBQ2QsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sT0FBTyxFQUNQLFFBQVEsRUFDUixXQUFXLEVBQ1osTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2xCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFvS2pELE1BQU0sT0FBTyxjQUFjO0lBZXpCO1FBZFUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqQyxTQUFJLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdCLGFBQVEsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyQyxhQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFD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QUFPLGdGQUNQLE1BQU0sa1RBQ04sTUFBTSxvREFDTixTQUFTLG9QQUNULFFBQVEsNkZBQ1IsT0FBTywySkFDUCxPQUFPLDBOQUNQLGNBQWMsK0VBQ2QsZUFBZSx5RkFDZixZQUFZLHNGQUNaLGFBQWEsc0dBQ2IsT0FBTyx5TEFDUCxVQUFVLHdLQUNWLFFBQVEsOGVBQ1IsV0FBVzs7MkZBNklGLGNBQWM7a0JBbEsxQixTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsT0FBTzt3QkFDUCxNQUFNO3dCQUNOLE1BQU07d0JBQ04sU0FBUzt3QkFDVCxRQUFRO3dCQUNSLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixhQUFhO3dCQUNiLE9BQU87d0JBQ1AsVUFBVTt3QkFDVixRQUFRO3dCQUNSLFdBQVc7cUJBQ1osWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdJVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIE5hdkNvbnRyb2xsZXIsXG4gIFBvcG92ZXJDb250cm9sbGVyLFxuICBJb25Db250ZW50LFxuICBJb25DYXJkLFxuICBJb25DYXJkSGVhZGVyLFxuICBJb25DYXJkVGl0bGUsXG4gIElvbkNhcmRTdWJ0aXRsZSxcbiAgSW9uQ2FyZENvbnRlbnQsXG4gIElvbkl0ZW0sXG4gIElvbkljb24sXG4gIElvbkxhYmVsLFxuICBJb25CdXR0b24sXG4gIElvblJvdyxcbiAgSW9uQ29sLFxuICBJb25UZXh0LFxuICBJb25JbnB1dCxcbiAgSW9uQ2hlY2tib3hcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnaWRlYS10b29sYm94JztcbmltcG9ydCB7XG4gIElERUFFbnZpcm9ubWVudCxcbiAgSURFQU1lc3NhZ2VTZXJ2aWNlLFxuICBJREVBTG9hZGluZ1NlcnZpY2UsXG4gIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlLFxuICBJREVBVHJhbnNsYXRlUGlwZVxufSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5pbXBvcnQgeyBJREVBUGFzc3dvcmRQb2xpY3lDb21wb25lbnQgfSBmcm9tICcuL3Bhc3N3b3JkUG9saWN5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJREVBQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtc2lnbi11cCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSURFQVRyYW5zbGF0ZVBpcGUsXG4gICAgSW9uVGV4dCxcbiAgICBJb25Db2wsXG4gICAgSW9uUm93LFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25MYWJlbCxcbiAgICBJb25JY29uLFxuICAgIElvbkl0ZW0sXG4gICAgSW9uQ2FyZENvbnRlbnQsXG4gICAgSW9uQ2FyZFN1YnRpdGxlLFxuICAgIElvbkNhcmRUaXRsZSxcbiAgICBJb25DYXJkSGVhZGVyLFxuICAgIElvbkNhcmQsXG4gICAgSW9uQ29udGVudCxcbiAgICBJb25JbnB1dCxcbiAgICBJb25DaGVja2JveFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tY29udGVudD5cbiAgICAgIDxmb3JtIGNsYXNzPVwiZmxleEJveFwiPlxuICAgICAgICA8aW9uLWNhcmQgY2xhc3M9XCJhdXRoQ2FyZFwiPlxuICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGUgY29sb3I9XCJwcmltYXJ5XCI+e3sgJ0lERUFfQVVUSC5ORVdfQUNDT1VOVCcgfCB0cmFuc2xhdGUgfX08L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPnt7ICdJREVBX0FVVEguUkVHSVNURVJfQV9ORVdfQUNDT1VOVF9UT19USEVfU1lTVEVNJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICBAaWYgKGVycm9yTXNnKSB7XG4gICAgICAgICAgICAgIDxwIHRlc3RJZD1cInNpZ251cC5lcnJvclwiIGNsYXNzPVwiZXJyb3JCb3hcIj5cbiAgICAgICAgICAgICAgICA8Yj4ge3sgJ0lERUFfQVVUSC5FUlJPUicgfCB0cmFuc2xhdGUgfX0uIDwvYj5cbiAgICAgICAgICAgICAgICB7eyBlcnJvck1zZyB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8aW9uLWl0ZW0+XG4gICAgICAgICAgICAgIDxpb24tbGFiZWwgcG9zaXRpb249XCJpbmxpbmVcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlcnNvbi1jaXJjbGVcIiBjb2xvcj1cInByaW1hcnlcIiAvPlxuICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgICAgIHRlc3RJZD1cInNpZ251cC5lbWFpbFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICBpbnB1dG1vZGU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgcGF0dGVybj1cIltBLVphLXowLTkuXyUrLV17Mix9QFthLXpBLVotXy5dezIsfVsuXXsxfVthLXpBLVpdezIsfVwiXG4gICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0lERUFfQVVUSC5FTUFJTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInSURFQV9BVVRILlJFR0lTVFJBVElPTl9FTUFJTF9ISU5UJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwicmVnaXN0ZXIoKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgPGlvbi1pdGVtPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsIHBvc2l0aW9uPVwiaW5saW5lXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJrZXlcIiBjb2xvcj1cInByaW1hcnlcIiAvPlxuICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgICAgIHRlc3RJZD1cInNpZ251cC5wYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgIFtwYXR0ZXJuXT1cIl9hdXRoLmdldFBhc3N3b3JkUG9saWN5UGF0dGVybkZvcklucHV0KClcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRWRpdF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidJREVBX0FVVEguUEFTU1dPUkQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0lERUFfQVVUSC5DSE9PU0VfQV9QQVNTV09SRCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInJlZ2lzdGVyKClcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAgIHRlc3RJZD1cIm9wZW5QYXNzd29yZFBvbGljeUJ1dHRvblwiXG4gICAgICAgICAgICAgICAgc2xvdD1cImVuZFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuUGFzc3dvcmRQb2xpY3koJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gaWNvbj1cImhlbHAtY2lyY2xlLW91dGxpbmVcIiBzbG90PVwiaWNvbi1vbmx5XCIgLz5cbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgIHRyYW5zbGF0aW9uRXhpc3RzKCdJREVBX1ZBUklBQkxFUy5URVJNU19BTkRfQ09ORElUSU9OU19VUkwnKSB8fFxuICAgICAgICAgICAgICB0cmFuc2xhdGlvbkV4aXN0cygnSURFQV9WQVJJQUJMRVMuUFJJVkFDWV9QT0xJQ1lfVVJMJylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImFncmVlbWVudHNBY2NlcHRhbmNlUm93XCI+XG4gICAgICAgICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNoZWNrYm94IHNpemU9XCJzbWFsbFwiIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiIFsobmdNb2RlbCldPVwiYWdyZWVtZW50c0NoZWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgIHt7ICdJREVBX0FVVEguQUdSRUVNRU5UU19DSEVDS19SRUdJU1RSQVRJT04nIHwgdHJhbnNsYXRlIH19OlxuICAgICAgICAgICAgICAgICAgQGlmICh0cmFuc2xhdGlvbkV4aXN0cygnSURFQV9WQVJJQUJMRVMuVEVSTVNfQU5EX0NPTkRJVElPTlNfVVJMJykpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICBpb24tdGV4dFxuICAgICAgICAgICAgICAgICAgICAgIHRlc3RJZD1cIm9wZW5UZXJtc0FuZENvbmRpdGlvbnNCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0lERUFfQVVUSC5URVJNU19BTkRfQ09ORElUSU9OU19ISU5UJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiJ0lERUFfVkFSSUFCTEVTLlRFUk1TX0FORF9DT05ESVRJT05TX1VSTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0lERUFfQVVUSC5URVJNU19BTkRfQ09ORElUSU9OUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25FeGlzdHMoJ0lERUFfVkFSSUFCTEVTLlBSSVZBQ1lfUE9MSUNZX1VSTCcpICYmXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uRXhpc3RzKCdJREVBX1ZBUklBQkxFUy5URVJNU19BTkRfQ09ORElUSU9OU19VUkwnKVxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dD4gJiA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmICh0cmFuc2xhdGlvbkV4aXN0cygnSURFQV9WQVJJQUJMRVMuUFJJVkFDWV9QT0xJQ1lfVVJMJykpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICBpb24tdGV4dFxuICAgICAgICAgICAgICAgICAgICAgIHRlc3RJZD1cIm9wZW5Qcml2YWN5UG9saWN5QnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguUFJJVkFDWV9QT0xJQ1lfSElOVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cIidJREVBX1ZBUklBQkxFUy5QUklWQUNZX1BPTElDWV9VUkwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdJREVBX0FVVEguUFJJVkFDWV9QT0xJQ1knIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIHRlc3RJZD1cInNpZ25VcEJ1dHRvblwiXG4gICAgICAgICAgICAgIGV4cGFuZD1cImJsb2NrXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFhZ3JlZW1lbnRzQ2hlY2tcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0lERUFfQVVUSC5DUkVBVEVfQU5fQUNDT1VOVF9ISU5UJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZWdpc3RlcigpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0lERUFfQVVUSC5DUkVBVEVfQU5fQUNDT1VOVCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIHRlc3RJZD1cInJlc2VuZExpbmtCdXR0b25cIlxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwic21hbGxDYXNlQnV0dG9uXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguSEFWRU5fVF9SRUNFSVZFRF9DT05GSVJNQVRJT05fTElOS19ISU5UJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUmVzZW5kTGluaygpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0lERUFfQVVUSC5IQVZFTl9UX1JFQ0VJVkVEX0NPTkZJUk1BVElPTl9MSU5LJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgdGVzdElkPVwiYmFja1RvU2lnbkluQnV0dG9uXCJcbiAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgZXhwYW5kPVwiYmxvY2tcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNtYWxsQ2FzZUJ1dHRvblwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInSURFQV9BVVRILkJBQ0tfVE9fU0lHTl9JTl9ISU5UJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJnb1RvQXV0aCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0lERUFfQVVUSC5CQUNLX1RPX1NJR05fSU4nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgPC9mb3JtPlxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlVXJsczogWydhdXRoLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBU2lnblVwUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBfZW52ID0gaW5qZWN0KElERUFFbnZpcm9ubWVudCk7XG4gIHByaXZhdGUgX25hdiA9IGluamVjdChOYXZDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfcG9wb3ZlciA9IGluamVjdChQb3BvdmVyQ29udHJvbGxlcik7XG4gIHByaXZhdGUgX21lc3NhZ2UgPSBpbmplY3QoSURFQU1lc3NhZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfbG9hZGluZyA9IGluamVjdChJREVBTG9hZGluZ1NlcnZpY2UpO1xuICBwcml2YXRlIF90cmFuc2xhdGUgPSBpbmplY3QoSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UpO1xuICBwdWJsaWMgX2F1dGggPSBpbmplY3QoSURFQUF1dGhTZXJ2aWNlKTtcblxuICBlbWFpbDogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xuICBhZ3JlZW1lbnRzQ2hlY2sgPSBmYWxzZTtcbiAgcGFzc3dvcmRQb2xpY3k6IGFueTtcbiAgZXJyb3JNc2c6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnBhc3N3b3JkUG9saWN5ID0gdGhpcy5fZW52LmlkZWEuYXV0aC5wYXNzd29yZFBvbGljeTtcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2Vudi5pZGVhLmF1dGgucmVnaXN0cmF0aW9uSXNQb3NzaWJsZSkgcmV0dXJuIHRoaXMuZ29Ub0F1dGgoKTtcbiAgICB0aGlzLmFncmVlbWVudHNDaGVjayA9XG4gICAgICB0aGlzLl90cmFuc2xhdGUuXygnSURFQV9WQVJJQUJMRVMuVEVSTVNfQU5EX0NPTkRJVElPTlNfVVJMJykgfHxcbiAgICAgIHRoaXMuX3RyYW5zbGF0ZS5fKCdJREVBX1ZBUklBQkxFUy5QUklWQUNZX1BPTElDWV9VUkwnKVxuICAgICAgICA/IHRoaXMuYWdyZWVtZW50c0NoZWNrXG4gICAgICAgIDogdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIHJlZ2lzdGVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9sb2FkaW5nLnNob3coKTtcbiAgICAgIHRoaXMuZXJyb3JNc2cgPSBudWxsO1xuICAgICAgaWYgKGlzRW1wdHkodGhpcy5lbWFpbCwgJ2VtYWlsJykpIHRoaXMuZXJyb3JNc2cgPSB0aGlzLl90cmFuc2xhdGUuXygnSURFQV9BVVRILlZBTElEX0VNQUlMX09CTElHQVRPUlknKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBlcnJvcnMgPSB0aGlzLl9hdXRoLnZhbGlkYXRlUGFzc3dvcmRBZ2FpbnN0UG9saWN5KHRoaXMucGFzc3dvcmQpO1xuICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLnBhc3N3b3JkUG9saWN5LmFkdmFuY2VkUGFzc3dvcmRDaGVjaykge1xuICAgICAgICAgIGNvbnN0IGVtYWlsUGFydHMgPSBbLi4udGhpcy5lbWFpbD8uc3BsaXQoJ0AnKVswXS5zcGxpdCgvXFxXL2cpXTtcbiAgICAgICAgICBlcnJvcnMucHVzaCguLi4oYXdhaXQgdGhpcy5fYXV0aC52YWxpZGF0ZVBhc3N3b3JkQWdhaW5zdERhdGFiYXNlcyh0aGlzLnBhc3N3b3JkLCBlbWFpbFBhcnRzKSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvcnMubGVuZ3RoKVxuICAgICAgICAgIHRoaXMuZXJyb3JNc2cgPSBbXG4gICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuXygnSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UU19GT0xMT1cnKSxcbiAgICAgICAgICAgIC4uLmVycm9ycy5tYXAoeCA9PlxuICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuXygnSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UUy4nLmNvbmNhdCh4KSwgeyBuOiB0aGlzLnBhc3N3b3JkUG9saWN5Lm1pbkxlbmd0aCB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0uam9pbignICcpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZXJyb3JNc2cpIHJldHVybiB0aGlzLl9tZXNzYWdlLmVycm9yKCdJREVBX0FVVEguUkVHSVNUUkFUSU9OX0ZBSUxFRCcpO1xuICAgICAgYXdhaXQgdGhpcy5fYXV0aC5yZWdpc3Rlcih0aGlzLmVtYWlsLCB0aGlzLnBhc3N3b3JkKTtcbiAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnSURFQV9BVVRILlJFR0lTVFJBVElPTl9DT01QTEVURUQnKTtcbiAgICAgIHRoaXMuZ29Ub0F1dGgoKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JNc2cgPSAoZXJyIGFzIGFueSkubWVzc2FnZTtcbiAgICAgIHRoaXMuX21lc3NhZ2UuZXJyb3IoJ0lERUFfQVVUSC5SRUdJU1RSQVRJT05fRkFJTEVEJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX2xvYWRpbmcuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHRyYW5zbGF0aW9uRXhpc3RzKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fdHJhbnNsYXRlLl8oa2V5KTtcbiAgfVxuXG4gIGFzeW5jIG9wZW5QYXNzd29yZFBvbGljeShldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjc3NDbGFzcyA9ICdwYXNzd29yZFBvbGljeVBvcG92ZXInO1xuICAgIGNvbnN0IHBvcG92ZXIgPSBhd2FpdCB0aGlzLl9wb3BvdmVyLmNyZWF0ZSh7IGNvbXBvbmVudDogSURFQVBhc3N3b3JkUG9saWN5Q29tcG9uZW50LCBldmVudCwgY3NzQ2xhc3MgfSk7XG4gICAgYXdhaXQgcG9wb3Zlci5wcmVzZW50KCk7XG4gIH1cblxuICBnb1RvUmVzZW5kTGluaygpOiB2b2lkIHtcbiAgICB0aGlzLl9uYXYubmF2aWdhdGVGb3J3YXJkKFsnYXV0aCcsICdyZXNlbmQtbGluayddKTtcbiAgfVxuICBnb1RvQXV0aCgpOiB2b2lkIHtcbiAgICB0aGlzLl9uYXYubmF2aWdhdGVCYWNrKFsnYXV0aCddKTtcbiAgfVxufVxuIl19