valtech-components 2.0.739 → 2.0.741

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.
@@ -176,21 +176,22 @@ export class UsernameInputComponent {
176
176
  <label class="username-label">{{ props.label }}</label>
177
177
  }
178
178
 
179
- <div class="username-input-wrapper" [class.focused]="isFocused()" [class.error]="hasError()">
180
- <span class="username-prefix">{{ props.prefix || '@' }}</span>
181
- <ion-input
182
- [formControl]="props.control"
183
- type="text"
184
- [placeholder]="props.placeholder || 'username'"
185
- [maxlength]="props.maxLength || 30"
186
- (ionFocus)="onFocus()"
187
- (ionBlur)="onBlur()"
188
- (ionInput)="onInput($event)"
189
- class="username-field"
190
- />
191
-
179
+ <!-- ion-input nativo: renderiza la pill shape como val-text-input.
180
+ Prefijo @ via slot="start", status indicator via slot="end". -->
181
+ <ion-input
182
+ [formControl]="props.control"
183
+ type="text"
184
+ [placeholder]="props.placeholder || 'username'"
185
+ [maxlength]="props.maxLength || 30"
186
+ (ionFocus)="onFocus()"
187
+ (ionBlur)="onBlur()"
188
+ (ionInput)="onInput($event)"
189
+ class="username-field"
190
+ [class.has-error]="hasError()"
191
+ >
192
+ <span slot="start" class="username-prefix">{{ props.prefix || '@' }}</span>
192
193
  @if (props.showAvailability !== false) {
193
- <div class="availability-indicator">
194
+ <span slot="end" class="availability-indicator">
194
195
  @switch (availabilityStatus()) {
195
196
  @case ('checking') {
196
197
  <ion-spinner name="crescent" class="checking-spinner" />
@@ -205,9 +206,9 @@ export class UsernameInputComponent {
205
206
  <ion-icon name="alert-circle" class="status-icon invalid" />
206
207
  }
207
208
  }
208
- </div>
209
+ </span>
209
210
  }
210
- </div>
211
+ </ion-input>
211
212
 
212
213
  @if (showStatusMessage()) {
213
214
  <ion-text [color]="statusColor()" class="status-message">
@@ -221,7 +222,7 @@ export class UsernameInputComponent {
221
222
  </ion-text>
222
223
  }
223
224
  </div>
224
- `, isInline: true, styles: [".username-input-container{margin-bottom:1rem}.username-label{display:block;font-size:.875rem;font-weight:500;color:var(--ion-color-dark);margin-bottom:.5rem}.username-input-wrapper{display:flex;align-items:center;gap:.5rem;position:relative}.username-prefix{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);font-size:1rem;font-weight:500;color:var(--ion-color-medium);-webkit-user-select:none;user-select:none;z-index:2;pointer-events:none}.username-field{flex:1}.username-field::part(native){padding-left:1.75rem}.availability-indicator{display:flex;align-items:center;justify-content:center;width:24px;height:24px;margin-left:.5rem}.checking-spinner{width:18px;height:18px;--color: var(--ion-color-medium)}.status-icon{font-size:1.25rem}.status-icon.available{color:var(--ion-color-success)}.status-icon.taken{color:var(--ion-color-danger)}.status-icon.invalid{color:var(--ion-color-warning)}.status-message,.error-message{display:block;margin-top:.25rem;padding-left:.25rem}:host-context(body.dark){.username-input-wrapper{background:var(--ion-color-step-50);border-color:var(--ion-color-step-150)}.username-label{color:var(--ion-color-light)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }] }); }
225
+ `, isInline: true, styles: [".username-input-container{margin-bottom:1rem}.username-label{display:block;font-size:.875rem;font-weight:500;color:var(--ion-color-dark);margin-bottom:.5rem}.username-prefix{font-size:1rem;font-weight:500;color:var(--ion-color-medium);-webkit-user-select:none;user-select:none;margin-inline-end:.25rem;display:inline-flex;align-items:center}.username-field{width:100%}.username-field.has-error{--highlight-color: var(--ion-color-danger)}.availability-indicator{display:inline-flex;align-items:center;justify-content:center;margin-inline-start:.5rem}.checking-spinner{width:18px;height:18px;--color: var(--ion-color-medium)}.status-icon{font-size:1.25rem}.status-icon.available{color:var(--ion-color-success)}.status-icon.taken{color:var(--ion-color-danger)}.status-icon.invalid{color:var(--ion-color-warning)}.status-message,.error-message{display:block;margin-top:.25rem;padding-left:.25rem}:host-context(body.dark){.username-input-wrapper{background:var(--ion-color-step-50);border-color:var(--ion-color-step-150)}.username-label{color:var(--ion-color-light)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }] }); }
225
226
  }
226
227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UsernameInputComponent, decorators: [{
227
228
  type: Component,
@@ -231,21 +232,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
231
232
  <label class="username-label">{{ props.label }}</label>
232
233
  }
233
234
 
234
- <div class="username-input-wrapper" [class.focused]="isFocused()" [class.error]="hasError()">
235
- <span class="username-prefix">{{ props.prefix || '@' }}</span>
236
- <ion-input
237
- [formControl]="props.control"
238
- type="text"
239
- [placeholder]="props.placeholder || 'username'"
240
- [maxlength]="props.maxLength || 30"
241
- (ionFocus)="onFocus()"
242
- (ionBlur)="onBlur()"
243
- (ionInput)="onInput($event)"
244
- class="username-field"
245
- />
246
-
235
+ <!-- ion-input nativo: renderiza la pill shape como val-text-input.
236
+ Prefijo @ via slot="start", status indicator via slot="end". -->
237
+ <ion-input
238
+ [formControl]="props.control"
239
+ type="text"
240
+ [placeholder]="props.placeholder || 'username'"
241
+ [maxlength]="props.maxLength || 30"
242
+ (ionFocus)="onFocus()"
243
+ (ionBlur)="onBlur()"
244
+ (ionInput)="onInput($event)"
245
+ class="username-field"
246
+ [class.has-error]="hasError()"
247
+ >
248
+ <span slot="start" class="username-prefix">{{ props.prefix || '@' }}</span>
247
249
  @if (props.showAvailability !== false) {
248
- <div class="availability-indicator">
250
+ <span slot="end" class="availability-indicator">
249
251
  @switch (availabilityStatus()) {
250
252
  @case ('checking') {
251
253
  <ion-spinner name="crescent" class="checking-spinner" />
@@ -260,9 +262,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
260
262
  <ion-icon name="alert-circle" class="status-icon invalid" />
261
263
  }
262
264
  }
263
- </div>
265
+ </span>
264
266
  }
265
- </div>
267
+ </ion-input>
266
268
 
267
269
  @if (showStatusMessage()) {
268
270
  <ion-text [color]="statusColor()" class="status-message">
@@ -276,8 +278,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
276
278
  </ion-text>
277
279
  }
278
280
  </div>
279
- `, styles: [".username-input-container{margin-bottom:1rem}.username-label{display:block;font-size:.875rem;font-weight:500;color:var(--ion-color-dark);margin-bottom:.5rem}.username-input-wrapper{display:flex;align-items:center;gap:.5rem;position:relative}.username-prefix{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);font-size:1rem;font-weight:500;color:var(--ion-color-medium);-webkit-user-select:none;user-select:none;z-index:2;pointer-events:none}.username-field{flex:1}.username-field::part(native){padding-left:1.75rem}.availability-indicator{display:flex;align-items:center;justify-content:center;width:24px;height:24px;margin-left:.5rem}.checking-spinner{width:18px;height:18px;--color: var(--ion-color-medium)}.status-icon{font-size:1.25rem}.status-icon.available{color:var(--ion-color-success)}.status-icon.taken{color:var(--ion-color-danger)}.status-icon.invalid{color:var(--ion-color-warning)}.status-message,.error-message{display:block;margin-top:.25rem;padding-left:.25rem}:host-context(body.dark){.username-input-wrapper{background:var(--ion-color-step-50);border-color:var(--ion-color-step-150)}.username-label{color:var(--ion-color-light)}}\n"] }]
281
+ `, styles: [".username-input-container{margin-bottom:1rem}.username-label{display:block;font-size:.875rem;font-weight:500;color:var(--ion-color-dark);margin-bottom:.5rem}.username-prefix{font-size:1rem;font-weight:500;color:var(--ion-color-medium);-webkit-user-select:none;user-select:none;margin-inline-end:.25rem;display:inline-flex;align-items:center}.username-field{width:100%}.username-field.has-error{--highlight-color: var(--ion-color-danger)}.availability-indicator{display:inline-flex;align-items:center;justify-content:center;margin-inline-start:.5rem}.checking-spinner{width:18px;height:18px;--color: var(--ion-color-medium)}.status-icon{font-size:1.25rem}.status-icon.available{color:var(--ion-color-success)}.status-icon.taken{color:var(--ion-color-danger)}.status-icon.invalid{color:var(--ion-color-warning)}.status-message,.error-message{display:block;margin-top:.25rem;padding-left:.25rem}:host-context(body.dark){.username-input-wrapper{background:var(--ion-color-step-50);border-color:var(--ion-color-step-150)}.username-label{color:var(--ion-color-light)}}\n"] }]
280
282
  }], propDecorators: { props: [{
281
283
  type: Input
282
284
  }] } });
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcm5hbWUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy91c2VybmFtZS1pbnB1dC91c2VybmFtZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkYsT0FBTyxFQUVMLE9BQU8sRUFDUCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsRUFBRSxFQUNGLFVBQVUsRUFDVixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7O0FBR2xFLFFBQVEsQ0FBQyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUV4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQTJKSCxNQUFNLE9BQU8sc0JBQXNCO0lBMUpuQztRQTZKRTs7OztXQUlHO1FBQ0ssZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFdEQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDL0IsdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUVuRCxVQUFVO1FBQ1YsY0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQix1QkFBa0IsR0FBRyxNQUFNLENBQTZCLE1BQU0sQ0FBQyxDQUFDO1FBRWhFLFdBQVc7UUFDWCxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztZQUNwQyxPQUFPLE9BQU8sRUFBRSxPQUFPLElBQUksT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUVILHNCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDekMsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sS0FBSyxPQUFPLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO1FBRUgsa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3pDLElBQUksTUFBTSxLQUFLLFdBQVc7Z0JBQUUsT0FBTyxxQkFBcUIsQ0FBQztZQUN6RCxJQUFJLE1BQU0sS0FBSyxPQUFPO2dCQUFFLE9BQU8seUJBQXlCLENBQUM7WUFDekQsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztRQUVILGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztZQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU07Z0JBQUUsT0FBTyxFQUFFLENBQUM7WUFFaEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO1lBRXhDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUMvQixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSwwQkFBMEIsQ0FBQztZQUMxRCxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxJQUFJLENBQUMsQ0FBQztnQkFDdkMsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksVUFBVSxHQUFHLGFBQWEsQ0FBQztZQUMzRCxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQztnQkFDeEMsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksVUFBVSxHQUFHLGFBQWEsQ0FBQztZQUMzRCxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLHVDQUF1QyxDQUFDO1lBQ3RFLENBQUM7WUFFRCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUFDO0tBbUdKO0lBakdDLFFBQVE7UUFDTixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFrQjtRQUN4QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDdkMsOERBQThEO1FBQzlELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqRCxJQUFJLFVBQVUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUVELDBFQUEwRTtRQUMxRSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN0RSxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxDQUFDO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssY0FBYztRQUNwQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsaUJBQWlCO1lBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1FBQ3ZFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FDMUIsSUFBSSxDQUFDLFdBQVksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzNGLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFFckIsSUFBSSxDQUFDLGtCQUFrQjthQUNwQixJQUFJLENBQ0gsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxFQUM1QyxvQkFBb0IsRUFBRSxFQUN0QixTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDL0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsQ0FBQztZQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFeEMsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ3pCO2FBQ0EsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3JCLElBQUksU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLENBQUM7aUJBQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMzQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBYTtRQUNyQyxPQUFPLEtBQUs7YUFDVCxXQUFXLEVBQUU7YUFDYixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQzthQUNsQixPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxhQUFhLENBQUMsS0FBYTtRQUNqQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxJQUFJLENBQUMsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDO1FBQy9CLE9BQU8sS0FBSyxDQUFDLE1BQU0sSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRixDQUFDOytHQS9KVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwwR0F0SnZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtRFQsc3RDQXBEUyxZQUFZLDhCQUFFLG1CQUFtQiw2ZEFBRSxRQUFRLDhlQUFFLFVBQVUseUdBQUUsT0FBTywySkFBRSxPQUFPOzs0RkF1SnhFLHNCQUFzQjtrQkExSmxDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFDMUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1EVDs4QkFvR1EsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIHNpZ25hbCwgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25JbnB1dCwgSW9uU3Bpbm5lciwgSW9uSWNvbiwgSW9uVGV4dCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgZGVib3VuY2VUaW1lLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgdGFrZVVudGlsLFxuICBzd2l0Y2hNYXAsXG4gIG9mLFxuICBjYXRjaEVycm9yLFxuICBtYXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjaGVja21hcmtDaXJjbGUsIGNsb3NlQ2lyY2xlLCBhbGVydENpcmNsZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlcm5hbWVJbnB1dE1ldGFkYXRhLCBVc2VybmFtZUF2YWlsYWJpbGl0eVN0YXR1cyB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7IGNoZWNrbWFya0NpcmNsZSwgY2xvc2VDaXJjbGUsIGFsZXJ0Q2lyY2xlIH0pO1xuXG4vKipcbiAqIFVzZXJuYW1lIElucHV0IENvbXBvbmVudFxuICpcbiAqIElucHV0IGVzcGVjaWFsaXphZG8gcGFyYSB1c2VybmFtZXMvaGFuZGxlcyBjb246XG4gKiAtIFByZWZpam8gJ0AnIHZpc3VhbFxuICogLSBWYWxpZGFjacOzbiBkZSBmb3JtYXRvIChhbGZhbnVtw6lyaWNvcyB5IF8pXG4gKiAtIE5vcm1hbGl6YWNpw7NuIGF1dG9tw6F0aWNhIChsb3dlcmNhc2UsIHNpbiBlc3BhY2lvcylcbiAqIC0gVmVyaWZpY2FjacOzbiBkZSBkaXNwb25pYmlsaWRhZCBjb24gZGVib3VuY2VcbiAqIC0gRXN0YWRvcyB2aXN1YWxlczogYXZhaWxhYmxlLCB0YWtlbiwgY2hlY2tpbmdcbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC11c2VybmFtZS1pbnB1dFxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbnRyb2w6IHVzZXJuYW1lQ29udHJvbCxcbiAqICAgICBsYWJlbDogJ05vbWJyZSBkZSB1c3VhcmlvJyxcbiAqICAgICBwbGFjZWhvbGRlcjogJ3R1X3VzZXJuYW1lJyxcbiAqICAgICBjaGVja0F2YWlsYWJpbGl0eTogY2hlY2tGblxuICogICB9XCJcbiAqIC8+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC11c2VybmFtZS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIElvbklucHV0LCBJb25TcGlubmVyLCBJb25JY29uLCBJb25UZXh0XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwidXNlcm5hbWUtaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICBAaWYgKHByb3BzLmxhYmVsKSB7XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInVzZXJuYW1lLWxhYmVsXCI+e3sgcHJvcHMubGFiZWwgfX08L2xhYmVsPlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwidXNlcm5hbWUtaW5wdXQtd3JhcHBlclwiIFtjbGFzcy5mb2N1c2VkXT1cImlzRm9jdXNlZCgpXCIgW2NsYXNzLmVycm9yXT1cImhhc0Vycm9yKClcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VybmFtZS1wcmVmaXhcIj57eyBwcm9wcy5wcmVmaXggfHwgJ0AnIH19PC9zcGFuPlxuICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cInByb3BzLmNvbnRyb2xcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcHMucGxhY2Vob2xkZXIgfHwgJ3VzZXJuYW1lJ1wiXG4gICAgICAgICAgW21heGxlbmd0aF09XCJwcm9wcy5tYXhMZW5ndGggfHwgMzBcIlxuICAgICAgICAgIChpb25Gb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAgIChpb25CbHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgICAoaW9uSW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cInVzZXJuYW1lLWZpZWxkXCJcbiAgICAgICAgLz5cblxuICAgICAgICBAaWYgKHByb3BzLnNob3dBdmFpbGFiaWxpdHkgIT09IGZhbHNlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF2YWlsYWJpbGl0eS1pbmRpY2F0b3JcIj5cbiAgICAgICAgICAgIEBzd2l0Y2ggKGF2YWlsYWJpbGl0eVN0YXR1cygpKSB7XG4gICAgICAgICAgICAgIEBjYXNlICgnY2hlY2tpbmcnKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiIGNsYXNzPVwiY2hlY2tpbmctc3Bpbm5lclwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGNhc2UgKCdhdmFpbGFibGUnKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGVja21hcmstY2lyY2xlXCIgY2xhc3M9XCJzdGF0dXMtaWNvbiBhdmFpbGFibGVcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBjYXNlICgndGFrZW4nKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1jaXJjbGVcIiBjbGFzcz1cInN0YXR1cy1pY29uIHRha2VuXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAY2FzZSAoJ2ludmFsaWQnKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhbGVydC1jaXJjbGVcIiBjbGFzcz1cInN0YXR1cy1pY29uIGludmFsaWRcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKHNob3dTdGF0dXNNZXNzYWdlKCkpIHtcbiAgICAgICAgPGlvbi10ZXh0IFtjb2xvcl09XCJzdGF0dXNDb2xvcigpXCIgY2xhc3M9XCJzdGF0dXMtbWVzc2FnZVwiPlxuICAgICAgICAgIDxzbWFsbD57eyBzdGF0dXNNZXNzYWdlKCkgfX08L3NtYWxsPlxuICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgfVxuXG4gICAgICBAaWYgKGhhc0Vycm9yKCkgJiYgZXJyb3JNZXNzYWdlKCkpIHtcbiAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgPHNtYWxsPnt7IGVycm9yTWVzc2FnZSgpIH19PC9zbWFsbD5cbiAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnVzZXJuYW1lLWlucHV0LWNvbnRhaW5lciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC51c2VybmFtZS1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC8qIFdyYXBwZXIgdHJhbnNwYXJlbnRlOiBkZWphIHF1ZSBpb24taW5wdXQgcmVuZGVyaWNlIHN1IHByb3BpYSBzaGFwZVxuICAgICAgICogcGFyYSBjb2luY2lkaXIgdmlzdWFsbWVudGUgY29uIHZhbC10ZXh0LWlucHV0IHkgb3Ryb3MgaW5wdXRzIGRlIGxhIGxpYi5cbiAgICAgICAqIEVsIHByZWZpam8gQCB5IGxvcyBpY29ub3MgZGUgc3RhdHVzIGZsb3RhbiBjb21vIGRlY29yYWRvcmVzLiAqL1xuICAgICAgLnVzZXJuYW1lLWlucHV0LXdyYXBwZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuXG4gICAgICAudXNlcm5hbWUtcHJlZml4IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiAwLjc1cmVtO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuXG4gICAgICAudXNlcm5hbWUtZmllbGQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgfVxuXG4gICAgICAvKiBFbXB1amEgZWwgdGV4dG8gYSBsYSBkZXJlY2hhIGRlbCBAIHF1ZSBlc3TDoSBwb3NpY2lvbmFkbyBhYnNvbHV0YW1lbnRlLiAqL1xuICAgICAgLnVzZXJuYW1lLWZpZWxkOjpwYXJ0KG5hdGl2ZSkge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5hdmFpbGFiaWxpdHktaW5kaWNhdG9yIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVja2luZy1zcGlubmVyIHtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgLS1jb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICB9XG5cbiAgICAgIC5zdGF0dXMtaWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgIH1cblxuICAgICAgLnN0YXR1cy1pY29uLmF2YWlsYWJsZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2Vzcyk7XG4gICAgICB9XG5cbiAgICAgIC5zdGF0dXMtaWNvbi50YWtlbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyKTtcbiAgICAgIH1cblxuICAgICAgLnN0YXR1cy1pY29uLmludmFsaWQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXdhcm5pbmcpO1xuICAgICAgfVxuXG4gICAgICAuc3RhdHVzLW1lc3NhZ2UsXG4gICAgICAuZXJyb3ItbWVzc2FnZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07XG4gICAgICB9XG5cbiAgICAgIC8qIERhcmsgbW9kZSAqL1xuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIHtcbiAgICAgICAgLnVzZXJuYW1lLWlucHV0LXdyYXBwZXIge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zdGVwLTUwKTtcbiAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1zdGVwLTE1MCk7XG4gICAgICAgIH1cblxuICAgICAgICAudXNlcm5hbWUtbGFiZWwge1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVXNlcm5hbWVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHJvcHMhOiBVc2VybmFtZUlucHV0TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEF1dGhTZXJ2aWNlIG9wdGlvbmFsIOKAlCBzaSBlc3TDoSBpbnllY3RhZG8geSBgcHJvcHMuY2hlY2tBdmFpbGFiaWxpdHlgIG5vIHNlIHByb3ZlZSxcbiAgICogZWwgY29tcG9uZW50IGNhZSBhdXRvbcOhdGljYW1lbnRlIGEgYEF1dGhTZXJ2aWNlLmNoZWNrSGFuZGxlQXZhaWxhYmlsaXR5YCAoYmFja2VuZFxuICAgKiBkZSBWYWx0ZWNoKS4gQ29uc3VtZXJzIHF1ZSBxdWllcmFuIG90cm8gZW5kcG9pbnQgcGFzYW4gc3UgcHJvcGlvIGNhbGxiYWNrLlxuICAgKi9cbiAgcHJpdmF0ZSBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBjaGVja0F2YWlsYWJpbGl0eSQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgLy8gU2lnbmFsc1xuICBpc0ZvY3VzZWQgPSBzaWduYWwoZmFsc2UpO1xuICBhdmFpbGFiaWxpdHlTdGF0dXMgPSBzaWduYWw8VXNlcm5hbWVBdmFpbGFiaWxpdHlTdGF0dXM+KCdpZGxlJyk7XG5cbiAgLy8gQ29tcHV0ZWRcbiAgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMucHJvcHM/LmNvbnRyb2w7XG4gICAgcmV0dXJuIGNvbnRyb2w/LnRvdWNoZWQgJiYgY29udHJvbD8uaW52YWxpZDtcbiAgfSk7XG5cbiAgc2hvd1N0YXR1c01lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5hdmFpbGFiaWxpdHlTdGF0dXMoKTtcbiAgICByZXR1cm4gc3RhdHVzID09PSAnYXZhaWxhYmxlJyB8fCBzdGF0dXMgPT09ICd0YWtlbic7XG4gIH0pO1xuXG4gIHN0YXR1c0NvbG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmF2YWlsYWJpbGl0eVN0YXR1cygpID09PSAnYXZhaWxhYmxlJyA/ICdzdWNjZXNzJyA6ICdkYW5nZXInO1xuICB9KTtcblxuICBzdGF0dXNNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuYXZhaWxhYmlsaXR5U3RhdHVzKCk7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ2F2YWlsYWJsZScpIHJldHVybiAnVXNlcm5hbWUgZGlzcG9uaWJsZSc7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ3Rha2VuJykgcmV0dXJuICdVc2VybmFtZSB5YSBlc3TDoSBlbiB1c28nO1xuICAgIHJldHVybiAnJztcbiAgfSk7XG5cbiAgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLnByb3BzPy5jb250cm9sO1xuICAgIGlmICghY29udHJvbD8uZXJyb3JzKSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCBlcnJvcnMgPSB0aGlzLnByb3BzPy5lcnJvcnMgfHwge307XG5cbiAgICBpZiAoY29udHJvbC5lcnJvcnNbJ3JlcXVpcmVkJ10pIHtcbiAgICAgIHJldHVybiBlcnJvcnNbJ3JlcXVpcmVkJ10gfHwgJ0VsIHVzZXJuYW1lIGVzIHJlcXVlcmlkbyc7XG4gICAgfVxuICAgIGlmIChjb250cm9sLmVycm9yc1snbWlubGVuZ3RoJ10pIHtcbiAgICAgIGNvbnN0IG1pbiA9IHRoaXMucHJvcHM/Lm1pbkxlbmd0aCB8fCAzO1xuICAgICAgcmV0dXJuIGVycm9yc1snbWlubGVuZ3RoJ10gfHwgYE3DrW5pbW8gJHttaW59IGNhcmFjdGVyZXNgO1xuICAgIH1cbiAgICBpZiAoY29udHJvbC5lcnJvcnNbJ21heGxlbmd0aCddKSB7XG4gICAgICBjb25zdCBtYXggPSB0aGlzLnByb3BzPy5tYXhMZW5ndGggfHwgMzA7XG4gICAgICByZXR1cm4gZXJyb3JzWydtYXhsZW5ndGgnXSB8fCBgTcOheGltbyAke21heH0gY2FyYWN0ZXJlc2A7XG4gICAgfVxuICAgIGlmIChjb250cm9sLmVycm9yc1sncGF0dGVybiddKSB7XG4gICAgICByZXR1cm4gZXJyb3JzWydwYXR0ZXJuJ10gfHwgJ1NvbG8gbGV0cmFzLCBuw7ptZXJvcyB5IGd1acOzbiBiYWpvIChfKSc7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9KTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldHVwQXZhaWxhYmlsaXR5Q2hlY2soKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQuc2V0KHRydWUpO1xuICB9XG5cbiAgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNGb2N1c2VkLnNldChmYWxzZSk7XG4gICAgdGhpcy5wcm9wcy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC5kZXRhaWwudmFsdWUgfHwgJyc7XG4gICAgLy8gTm9ybWFsaXplOiBsb3dlcmNhc2UsIHJlbW92ZSBzcGFjZXMsIG9ubHkgYWxsb3cgdmFsaWQgY2hhcnNcbiAgICBjb25zdCBub3JtYWxpemVkID0gdGhpcy5ub3JtYWxpemVVc2VybmFtZShpbnB1dCk7XG5cbiAgICBpZiAobm9ybWFsaXplZCAhPT0gaW5wdXQpIHtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC5zZXRWYWx1ZShub3JtYWxpemVkLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgLy8gVHJpZ2dlciBhdmFpbGFiaWxpdHkgY2hlY2sgKGNhbGxiYWNrIGV4cGzDrWNpdG8gbyBBdXRoU2VydmljZSBpbnllY3RhZG8pXG4gICAgY29uc3QgY2FuQ2hlY2sgPSAhIXRoaXMucHJvcHMuY2hlY2tBdmFpbGFiaWxpdHkgfHwgISF0aGlzLmF1dGhTZXJ2aWNlO1xuICAgIGlmIChjYW5DaGVjayAmJiB0aGlzLmlzVmFsaWRGb3JtYXQobm9ybWFsaXplZCkpIHtcbiAgICAgIHRoaXMuY2hlY2tBdmFpbGFiaWxpdHkkLm5leHQobm9ybWFsaXplZCk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5pc1ZhbGlkRm9ybWF0KG5vcm1hbGl6ZWQpICYmIG5vcm1hbGl6ZWQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5hdmFpbGFiaWxpdHlTdGF0dXMuc2V0KCdpbnZhbGlkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXZhaWxhYmlsaXR5U3RhdHVzLnNldCgnaWRsZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIGxhIGZuIGRlIGNoZWNrIGRlIGRpc3BvbmliaWxpZGFkOlxuICAgKiAxLiBTaSBlbCBjYWxsZXIgcGFzYSBgcHJvcHMuY2hlY2tBdmFpbGFiaWxpdHlgIOKGkiB1c2FyIGVzYVxuICAgKiAyLiBTaSBBdXRoU2VydmljZSBlc3TDoSBpbnllY3RhZG8g4oaSIGNhZXIgYSBgY2hlY2tIYW5kbGVBdmFpbGFiaWxpdHlgIChiYWNrZW5kIFZhbHRlY2gpXG4gICAqIDMuIFNpbm8g4oaSIHVuZGVmaW5lZCAobm8gc2UgbXVlc3RyYSBzdGF0dXMgaW5kaWNhdG9yKVxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlQ2hlY2tGbigpOiAoKHVzZXJuYW1lOiBzdHJpbmcpID0+IE9ic2VydmFibGU8Ym9vbGVhbj4pIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5wcm9wcz8uY2hlY2tBdmFpbGFiaWxpdHkpIHJldHVybiB0aGlzLnByb3BzLmNoZWNrQXZhaWxhYmlsaXR5O1xuICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlKSB7XG4gICAgICByZXR1cm4gKHVzZXJuYW1lOiBzdHJpbmcpID0+XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UhLmNoZWNrSGFuZGxlQXZhaWxhYmlsaXR5KHVzZXJuYW1lKS5waXBlKG1hcChyZXMgPT4gISFyZXM/LmF2YWlsYWJsZSkpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEF2YWlsYWJpbGl0eUNoZWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IGNoZWNrRm4gPSB0aGlzLnJlc29sdmVDaGVja0ZuKCk7XG4gICAgaWYgKCFjaGVja0ZuKSByZXR1cm47XG5cbiAgICB0aGlzLmNoZWNrQXZhaWxhYmlsaXR5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLnByb3BzLmRlYm91bmNlVGltZSB8fCA1MDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzd2l0Y2hNYXAodXNlcm5hbWUgPT4ge1xuICAgICAgICAgIGlmICghdXNlcm5hbWUgfHwgdXNlcm5hbWUubGVuZ3RoIDwgKHRoaXMucHJvcHMubWluTGVuZ3RoIHx8IDMpKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5hdmFpbGFiaWxpdHlTdGF0dXMuc2V0KCdjaGVja2luZycpO1xuXG4gICAgICAgICAgcmV0dXJuIGNoZWNrRm4odXNlcm5hbWUpLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSkpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGF2YWlsYWJsZSA9PiB7XG4gICAgICAgIGlmIChhdmFpbGFibGUgPT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmF2YWlsYWJpbGl0eVN0YXR1cy5zZXQoJ2lkbGUnKTtcbiAgICAgICAgfSBlbHNlIGlmIChhdmFpbGFibGUpIHtcbiAgICAgICAgICB0aGlzLmF2YWlsYWJpbGl0eVN0YXR1cy5zZXQoJ2F2YWlsYWJsZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5U3RhdHVzLnNldCgndGFrZW4nKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVVzZXJuYW1lKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZVxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC5yZXBsYWNlKC9cXHMvZywgJycpXG4gICAgICAucmVwbGFjZSgvW15hLXowLTlfXS9nLCAnJyk7XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWRGb3JtYXQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBtaW5MZW4gPSB0aGlzLnByb3BzPy5taW5MZW5ndGggfHwgMztcbiAgICBjb25zdCBtYXhMZW4gPSB0aGlzLnByb3BzPy5tYXhMZW5ndGggfHwgMzA7XG4gICAgY29uc3QgcGF0dGVybiA9IC9eW2EtejAtOV9dKyQvO1xuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPj0gbWluTGVuICYmIHZhbHVlLmxlbmd0aCA8PSBtYXhMZW4gJiYgcGF0dGVybi50ZXN0KHZhbHVlKTtcbiAgfVxufVxuIl19
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcm5hbWUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy91c2VybmFtZS1pbnB1dC91c2VybmFtZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkYsT0FBTyxFQUVMLE9BQU8sRUFDUCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsRUFBRSxFQUNGLFVBQVUsRUFDVixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7O0FBR2xFLFFBQVEsQ0FBQyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUV4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQStJSCxNQUFNLE9BQU8sc0JBQXNCO0lBOUluQztRQWlKRTs7OztXQUlHO1FBQ0ssZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFD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QUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRixDQUFDOytHQS9KVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwwR0ExSXZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0RULGluQ0FyRFMsWUFBWSw4QkFBRSxtQkFBbUIsNmRBQUUsUUFBUSw4ZUFBRSxVQUFVLHlHQUFFLE9BQU8sMkpBQUUsT0FBTzs7NEZBMkl4RSxzQkFBc0I7a0JBOUlsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLFlBQzFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0RUOzhCQXVGUSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9uRGVzdHJveSwgc2lnbmFsLCBjb21wdXRlZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbklucHV0LCBJb25TcGlubmVyLCBJb25JY29uLCBJb25UZXh0IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICB0YWtlVW50aWwsXG4gIHN3aXRjaE1hcCxcbiAgb2YsXG4gIGNhdGNoRXJyb3IsXG4gIG1hcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGNoZWNrbWFya0NpcmNsZSwgY2xvc2VDaXJjbGUsIGFsZXJ0Q2lyY2xlIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBVc2VybmFtZUlucHV0TWV0YWRhdGEsIFVzZXJuYW1lQXZhaWxhYmlsaXR5U3RhdHVzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmFkZEljb25zKHsgY2hlY2ttYXJrQ2lyY2xlLCBjbG9zZUNpcmNsZSwgYWxlcnRDaXJjbGUgfSk7XG5cbi8qKlxuICogVXNlcm5hbWUgSW5wdXQgQ29tcG9uZW50XG4gKlxuICogSW5wdXQgZXNwZWNpYWxpemFkbyBwYXJhIHVzZXJuYW1lcy9oYW5kbGVzIGNvbjpcbiAqIC0gUHJlZmlqbyAnQCcgdmlzdWFsXG4gKiAtIFZhbGlkYWNpw7NuIGRlIGZvcm1hdG8gKGFsZmFudW3DqXJpY29zIHkgXylcbiAqIC0gTm9ybWFsaXphY2nDs24gYXV0b23DoXRpY2EgKGxvd2VyY2FzZSwgc2luIGVzcGFjaW9zKVxuICogLSBWZXJpZmljYWNpw7NuIGRlIGRpc3BvbmliaWxpZGFkIGNvbiBkZWJvdW5jZVxuICogLSBFc3RhZG9zIHZpc3VhbGVzOiBhdmFpbGFibGUsIHRha2VuLCBjaGVja2luZ1xuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXVzZXJuYW1lLWlucHV0XG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgY29udHJvbDogdXNlcm5hbWVDb250cm9sLFxuICogICAgIGxhYmVsOiAnTm9tYnJlIGRlIHVzdWFyaW8nLFxuICogICAgIHBsYWNlaG9sZGVyOiAndHVfdXNlcm5hbWUnLFxuICogICAgIGNoZWNrQXZhaWxhYmlsaXR5OiBjaGVja0ZuXG4gKiAgIH1cIlxuICogLz5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXVzZXJuYW1lLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uSW5wdXQsIElvblNwaW5uZXIsIElvbkljb24sIElvblRleHRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ1c2VybmFtZS1pbnB1dC1jb250YWluZXJcIj5cbiAgICAgIEBpZiAocHJvcHMubGFiZWwpIHtcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidXNlcm5hbWUtbGFiZWxcIj57eyBwcm9wcy5sYWJlbCB9fTwvbGFiZWw+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gaW9uLWlucHV0IG5hdGl2bzogcmVuZGVyaXphIGxhIHBpbGwgc2hhcGUgY29tbyB2YWwtdGV4dC1pbnB1dC5cbiAgICAgICAgICAgUHJlZmlqbyBAIHZpYSBzbG90PVwic3RhcnRcIiwgc3RhdHVzIGluZGljYXRvciB2aWEgc2xvdD1cImVuZFwiLiAtLT5cbiAgICAgIDxpb24taW5wdXRcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInByb3BzLmNvbnRyb2xcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wcy5wbGFjZWhvbGRlciB8fCAndXNlcm5hbWUnXCJcbiAgICAgICAgW21heGxlbmd0aF09XCJwcm9wcy5tYXhMZW5ndGggfHwgMzBcIlxuICAgICAgICAoaW9uRm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgKGlvbkJsdXIpPVwib25CbHVyKClcIlxuICAgICAgICAoaW9uSW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgY2xhc3M9XCJ1c2VybmFtZS1maWVsZFwiXG4gICAgICAgIFtjbGFzcy5oYXMtZXJyb3JdPVwiaGFzRXJyb3IoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIHNsb3Q9XCJzdGFydFwiIGNsYXNzPVwidXNlcm5hbWUtcHJlZml4XCI+e3sgcHJvcHMucHJlZml4IHx8ICdAJyB9fTwvc3Bhbj5cbiAgICAgICAgQGlmIChwcm9wcy5zaG93QXZhaWxhYmlsaXR5ICE9PSBmYWxzZSkge1xuICAgICAgICAgIDxzcGFuIHNsb3Q9XCJlbmRcIiBjbGFzcz1cImF2YWlsYWJpbGl0eS1pbmRpY2F0b3JcIj5cbiAgICAgICAgICAgIEBzd2l0Y2ggKGF2YWlsYWJpbGl0eVN0YXR1cygpKSB7XG4gICAgICAgICAgICAgIEBjYXNlICgnY2hlY2tpbmcnKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiIGNsYXNzPVwiY2hlY2tpbmctc3Bpbm5lclwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGNhc2UgKCdhdmFpbGFibGUnKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGVja21hcmstY2lyY2xlXCIgY2xhc3M9XCJzdGF0dXMtaWNvbiBhdmFpbGFibGVcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBjYXNlICgndGFrZW4nKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1jaXJjbGVcIiBjbGFzcz1cInN0YXR1cy1pY29uIHRha2VuXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAY2FzZSAoJ2ludmFsaWQnKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhbGVydC1jaXJjbGVcIiBjbGFzcz1cInN0YXR1cy1pY29uIGludmFsaWRcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L2lvbi1pbnB1dD5cblxuICAgICAgQGlmIChzaG93U3RhdHVzTWVzc2FnZSgpKSB7XG4gICAgICAgIDxpb24tdGV4dCBbY29sb3JdPVwic3RhdHVzQ29sb3IoKVwiIGNsYXNzPVwic3RhdHVzLW1lc3NhZ2VcIj5cbiAgICAgICAgICA8c21hbGw+e3sgc3RhdHVzTWVzc2FnZSgpIH19PC9zbWFsbD5cbiAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgIH1cblxuICAgICAgQGlmIChoYXNFcnJvcigpICYmIGVycm9yTWVzc2FnZSgpKSB7XG4gICAgICAgIDxpb24tdGV4dCBjb2xvcj1cImRhbmdlclwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgIDxzbWFsbD57eyBlcnJvck1lc3NhZ2UoKSB9fTwvc21hbGw+XG4gICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC51c2VybmFtZS1pbnB1dC1jb250YWluZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgICAgfVxuXG4gICAgICAudXNlcm5hbWUtbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgICAgfVxuXG4gICAgICAvKiBQcmVmaWpvIEAgeSBpbmRpY2Fkb3Igc3RhdHVzIHJlbmRlcml6YWRvcyBjb21vIHNsb3RzIG5hdGl2b3MgZGUgaW9uLWlucHV0LlxuICAgICAgICogRXN0byBkYSBjb25zaXN0ZW5jaWEgdmlzdWFsIHBlcmZlY3RhIGNvbiB2YWwtdGV4dC1pbnB1dCAobWlzbW8gYW5jaG8sXG4gICAgICAgKiBtaXNtYSBzaGFwZSBwaWxsLCBtaXNtbyBwYWRkaW5nKS4gKi9cbiAgICAgIC51c2VybmFtZS1wcmVmaXgge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAwLjI1cmVtO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLnVzZXJuYW1lLWZpZWxkIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC51c2VybmFtZS1maWVsZC5oYXMtZXJyb3Ige1xuICAgICAgICAtLWhpZ2hsaWdodC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlcik7XG4gICAgICB9XG5cbiAgICAgIC5hdmFpbGFiaWxpdHktaW5kaWNhdG9yIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVja2luZy1zcGlubmVyIHtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgLS1jb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICB9XG5cbiAgICAgIC5zdGF0dXMtaWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgIH1cblxuICAgICAgLnN0YXR1cy1pY29uLmF2YWlsYWJsZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2Vzcyk7XG4gICAgICB9XG5cbiAgICAgIC5zdGF0dXMtaWNvbi50YWtlbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyKTtcbiAgICAgIH1cblxuICAgICAgLnN0YXR1cy1pY29uLmludmFsaWQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXdhcm5pbmcpO1xuICAgICAgfVxuXG4gICAgICAuc3RhdHVzLW1lc3NhZ2UsXG4gICAgICAuZXJyb3ItbWVzc2FnZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07XG4gICAgICB9XG5cbiAgICAgIC8qIERhcmsgbW9kZSAqL1xuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIHtcbiAgICAgICAgLnVzZXJuYW1lLWlucHV0LXdyYXBwZXIge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zdGVwLTUwKTtcbiAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1zdGVwLTE1MCk7XG4gICAgICAgIH1cblxuICAgICAgICAudXNlcm5hbWUtbGFiZWwge1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVXNlcm5hbWVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHJvcHMhOiBVc2VybmFtZUlucHV0TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEF1dGhTZXJ2aWNlIG9wdGlvbmFsIOKAlCBzaSBlc3TDoSBpbnllY3RhZG8geSBgcHJvcHMuY2hlY2tBdmFpbGFiaWxpdHlgIG5vIHNlIHByb3ZlZSxcbiAgICogZWwgY29tcG9uZW50IGNhZSBhdXRvbcOhdGljYW1lbnRlIGEgYEF1dGhTZXJ2aWNlLmNoZWNrSGFuZGxlQXZhaWxhYmlsaXR5YCAoYmFja2VuZFxuICAgKiBkZSBWYWx0ZWNoKS4gQ29uc3VtZXJzIHF1ZSBxdWllcmFuIG90cm8gZW5kcG9pbnQgcGFzYW4gc3UgcHJvcGlvIGNhbGxiYWNrLlxuICAgKi9cbiAgcHJpdmF0ZSBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBjaGVja0F2YWlsYWJpbGl0eSQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgLy8gU2lnbmFsc1xuICBpc0ZvY3VzZWQgPSBzaWduYWwoZmFsc2UpO1xuICBhdmFpbGFiaWxpdHlTdGF0dXMgPSBzaWduYWw8VXNlcm5hbWVBdmFpbGFiaWxpdHlTdGF0dXM+KCdpZGxlJyk7XG5cbiAgLy8gQ29tcHV0ZWRcbiAgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMucHJvcHM/LmNvbnRyb2w7XG4gICAgcmV0dXJuIGNvbnRyb2w/LnRvdWNoZWQgJiYgY29udHJvbD8uaW52YWxpZDtcbiAgfSk7XG5cbiAgc2hvd1N0YXR1c01lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5hdmFpbGFiaWxpdHlTdGF0dXMoKTtcbiAgICByZXR1cm4gc3RhdHVzID09PSAnYXZhaWxhYmxlJyB8fCBzdGF0dXMgPT09ICd0YWtlbic7XG4gIH0pO1xuXG4gIHN0YXR1c0NvbG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmF2YWlsYWJpbGl0eVN0YXR1cygpID09PSAnYXZhaWxhYmxlJyA/ICdzdWNjZXNzJyA6ICdkYW5nZXInO1xuICB9KTtcblxuICBzdGF0dXNNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuYXZhaWxhYmlsaXR5U3RhdHVzKCk7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ2F2YWlsYWJsZScpIHJldHVybiAnVXNlcm5hbWUgZGlzcG9uaWJsZSc7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ3Rha2VuJykgcmV0dXJuICdVc2VybmFtZSB5YSBlc3TDoSBlbiB1c28nO1xuICAgIHJldHVybiAnJztcbiAgfSk7XG5cbiAgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLnByb3BzPy5jb250cm9sO1xuICAgIGlmICghY29udHJvbD8uZXJyb3JzKSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCBlcnJvcnMgPSB0aGlzLnByb3BzPy5lcnJvcnMgfHwge307XG5cbiAgICBpZiAoY29udHJvbC5lcnJvcnNbJ3JlcXVpcmVkJ10pIHtcbiAgICAgIHJldHVybiBlcnJvcnNbJ3JlcXVpcmVkJ10gfHwgJ0VsIHVzZXJuYW1lIGVzIHJlcXVlcmlkbyc7XG4gICAgfVxuICAgIGlmIChjb250cm9sLmVycm9yc1snbWlubGVuZ3RoJ10pIHtcbiAgICAgIGNvbnN0IG1pbiA9IHRoaXMucHJvcHM/Lm1pbkxlbmd0aCB8fCAzO1xuICAgICAgcmV0dXJuIGVycm9yc1snbWlubGVuZ3RoJ10gfHwgYE3DrW5pbW8gJHttaW59IGNhcmFjdGVyZXNgO1xuICAgIH1cbiAgICBpZiAoY29udHJvbC5lcnJvcnNbJ21heGxlbmd0aCddKSB7XG4gICAgICBjb25zdCBtYXggPSB0aGlzLnByb3BzPy5tYXhMZW5ndGggfHwgMzA7XG4gICAgICByZXR1cm4gZXJyb3JzWydtYXhsZW5ndGgnXSB8fCBgTcOheGltbyAke21heH0gY2FyYWN0ZXJlc2A7XG4gICAgfVxuICAgIGlmIChjb250cm9sLmVycm9yc1sncGF0dGVybiddKSB7XG4gICAgICByZXR1cm4gZXJyb3JzWydwYXR0ZXJuJ10gfHwgJ1NvbG8gbGV0cmFzLCBuw7ptZXJvcyB5IGd1acOzbiBiYWpvIChfKSc7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9KTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldHVwQXZhaWxhYmlsaXR5Q2hlY2soKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQuc2V0KHRydWUpO1xuICB9XG5cbiAgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNGb2N1c2VkLnNldChmYWxzZSk7XG4gICAgdGhpcy5wcm9wcy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC5kZXRhaWwudmFsdWUgfHwgJyc7XG4gICAgLy8gTm9ybWFsaXplOiBsb3dlcmNhc2UsIHJlbW92ZSBzcGFjZXMsIG9ubHkgYWxsb3cgdmFsaWQgY2hhcnNcbiAgICBjb25zdCBub3JtYWxpemVkID0gdGhpcy5ub3JtYWxpemVVc2VybmFtZShpbnB1dCk7XG5cbiAgICBpZiAobm9ybWFsaXplZCAhPT0gaW5wdXQpIHtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC5zZXRWYWx1ZShub3JtYWxpemVkLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgLy8gVHJpZ2dlciBhdmFpbGFiaWxpdHkgY2hlY2sgKGNhbGxiYWNrIGV4cGzDrWNpdG8gbyBBdXRoU2VydmljZSBpbnllY3RhZG8pXG4gICAgY29uc3QgY2FuQ2hlY2sgPSAhIXRoaXMucHJvcHMuY2hlY2tBdmFpbGFiaWxpdHkgfHwgISF0aGlzLmF1dGhTZXJ2aWNlO1xuICAgIGlmIChjYW5DaGVjayAmJiB0aGlzLmlzVmFsaWRGb3JtYXQobm9ybWFsaXplZCkpIHtcbiAgICAgIHRoaXMuY2hlY2tBdmFpbGFiaWxpdHkkLm5leHQobm9ybWFsaXplZCk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5pc1ZhbGlkRm9ybWF0KG5vcm1hbGl6ZWQpICYmIG5vcm1hbGl6ZWQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5hdmFpbGFiaWxpdHlTdGF0dXMuc2V0KCdpbnZhbGlkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXZhaWxhYmlsaXR5U3RhdHVzLnNldCgnaWRsZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIGxhIGZuIGRlIGNoZWNrIGRlIGRpc3BvbmliaWxpZGFkOlxuICAgKiAxLiBTaSBlbCBjYWxsZXIgcGFzYSBgcHJvcHMuY2hlY2tBdmFpbGFiaWxpdHlgIOKGkiB1c2FyIGVzYVxuICAgKiAyLiBTaSBBdXRoU2VydmljZSBlc3TDoSBpbnllY3RhZG8g4oaSIGNhZXIgYSBgY2hlY2tIYW5kbGVBdmFpbGFiaWxpdHlgIChiYWNrZW5kIFZhbHRlY2gpXG4gICAqIDMuIFNpbm8g4oaSIHVuZGVmaW5lZCAobm8gc2UgbXVlc3RyYSBzdGF0dXMgaW5kaWNhdG9yKVxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlQ2hlY2tGbigpOiAoKHVzZXJuYW1lOiBzdHJpbmcpID0+IE9ic2VydmFibGU8Ym9vbGVhbj4pIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5wcm9wcz8uY2hlY2tBdmFpbGFiaWxpdHkpIHJldHVybiB0aGlzLnByb3BzLmNoZWNrQXZhaWxhYmlsaXR5O1xuICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlKSB7XG4gICAgICByZXR1cm4gKHVzZXJuYW1lOiBzdHJpbmcpID0+XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UhLmNoZWNrSGFuZGxlQXZhaWxhYmlsaXR5KHVzZXJuYW1lKS5waXBlKG1hcChyZXMgPT4gISFyZXM/LmF2YWlsYWJsZSkpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEF2YWlsYWJpbGl0eUNoZWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IGNoZWNrRm4gPSB0aGlzLnJlc29sdmVDaGVja0ZuKCk7XG4gICAgaWYgKCFjaGVja0ZuKSByZXR1cm47XG5cbiAgICB0aGlzLmNoZWNrQXZhaWxhYmlsaXR5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLnByb3BzLmRlYm91bmNlVGltZSB8fCA1MDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzd2l0Y2hNYXAodXNlcm5hbWUgPT4ge1xuICAgICAgICAgIGlmICghdXNlcm5hbWUgfHwgdXNlcm5hbWUubGVuZ3RoIDwgKHRoaXMucHJvcHMubWluTGVuZ3RoIHx8IDMpKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5hdmFpbGFiaWxpdHlTdGF0dXMuc2V0KCdjaGVja2luZycpO1xuXG4gICAgICAgICAgcmV0dXJuIGNoZWNrRm4odXNlcm5hbWUpLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSkpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGF2YWlsYWJsZSA9PiB7XG4gICAgICAgIGlmIChhdmFpbGFibGUgPT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmF2YWlsYWJpbGl0eVN0YXR1cy5zZXQoJ2lkbGUnKTtcbiAgICAgICAgfSBlbHNlIGlmIChhdmFpbGFibGUpIHtcbiAgICAgICAgICB0aGlzLmF2YWlsYWJpbGl0eVN0YXR1cy5zZXQoJ2F2YWlsYWJsZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5U3RhdHVzLnNldCgndGFrZW4nKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVVzZXJuYW1lKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZVxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC5yZXBsYWNlKC9cXHMvZywgJycpXG4gICAgICAucmVwbGFjZSgvW15hLXowLTlfXS9nLCAnJyk7XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWRGb3JtYXQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBtaW5MZW4gPSB0aGlzLnByb3BzPy5taW5MZW5ndGggfHwgMztcbiAgICBjb25zdCBtYXhMZW4gPSB0aGlzLnByb3BzPy5tYXhMZW5ndGggfHwgMzA7XG4gICAgY29uc3QgcGF0dGVybiA9IC9eW2EtejAtOV9dKyQvO1xuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPj0gbWluTGVuICYmIHZhbHVlLmxlbmd0aCA8PSBtYXhMZW4gJiYgcGF0dGVybi50ZXN0KHZhbHVlKTtcbiAgfVxufVxuIl19
@@ -300,7 +300,7 @@ export class BottomNavComponent {
300
300
  }
301
301
  </div>
302
302
  </nav>
303
- `, isInline: true, styles: [":host{display:block;position:fixed;bottom:0;left:0;right:0;z-index:100;pointer-events:none}.bottom-nav{--bottom-nav-bg: var(--ion-background-color);--bottom-nav-active: var(--ion-color-primary);--bottom-nav-inactive: var(--ion-color-medium);--bottom-nav-radius: 16px 16px 0 0;--bottom-nav-height: 64px;--bottom-nav-fab-size: 56px;--bottom-nav-max-width: var(--val-container-md, 720px);--fab-color: var(--ion-color-primary);pointer-events:auto;background:var(--bottom-nav-bg);border-radius:var(--bottom-nav-radius);height:var(--bottom-nav-height);padding:0 8px;max-width:var(--bottom-nav-max-width);margin:0 auto}.bottom-nav--elevated{box-shadow:0 -4px 20px #00000014}.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 255, 255, 255),.75);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border-top:1px solid rgba(var(--ion-text-color-rgb, 0, 0, 0),.06)}.bottom-nav--floating{margin:0 auto 8px;width:calc(100% - 32px);border-radius:32px;border:1px solid rgba(var(--ion-text-color-rgb, 0, 0, 0),.08);box-shadow:0 4px 24px #00000014,0 8px 32px #0000000a;--bottom-nav-radius: 32px}.bottom-nav--floating.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 255, 255, 255),.82);backdrop-filter:blur(28px) saturate(200%);-webkit-backdrop-filter:blur(28px) saturate(200%);border:1px solid rgba(var(--ion-text-color-rgb, 0, 0, 0),.08)}.bottom-nav--floating.bottom-nav--elevated{box-shadow:0 4px 24px #0000001a,0 12px 48px #00000014}.bottom-nav--floating.bottom-nav--safe-area{margin-bottom:calc(8px + env(safe-area-inset-bottom,0))}.bottom-nav--safe-area{padding-bottom:env(safe-area-inset-bottom,0);height:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0))}.bottom-nav__container{display:flex;align-items:center;justify-content:space-around;height:var(--bottom-nav-height);max-width:500px;margin:0 auto}.bottom-nav__tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;height:100%;padding:8px 4px;background:transparent;border:none;cursor:pointer;position:relative;overflow:hidden;color:var(--bottom-nav-inactive);transition:color .2s ease;max-width:80px;--ripple-color: var(--bottom-nav-active)}.bottom-nav__tab:focus-visible{outline:2px solid var(--bottom-nav-active);outline-offset:-2px;border-radius:8px}.bottom-nav__tab--active{color:var(--bottom-nav-active)}.bottom-nav__tab--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.bottom-nav__tab[data-animation=scale] .bottom-nav__tab-icon{transition:transform .2s cubic-bezier(.4,0,.2,1)}.bottom-nav__tab[data-animation=scale].bottom-nav__tab--active .bottom-nav__tab-icon{transform:scale(1.15)}.bottom-nav__tab[data-animation=fade]{transition:opacity .2s ease,color .2s ease}.bottom-nav__tab[data-animation=fade]:not(.bottom-nav__tab--active){opacity:.6}.bottom-nav__tab[data-animation=slide] .bottom-nav__tab-label{transition:transform .2s ease,opacity .2s ease;transform:translateY(6px);opacity:0}.bottom-nav__tab[data-animation=slide].bottom-nav__tab--active .bottom-nav__tab-label{transform:translateY(0);opacity:1}.bottom-nav__tab-icon{position:relative;font-size:24px;line-height:1}.bottom-nav__tab-icon ion-icon{display:block}.bottom-nav__tab-label{font-size:11px;font-weight:500;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;letter-spacing:.01em}.bottom-nav__badge{position:absolute;top:-4px;right:-10px;min-width:18px;height:18px;padding:0 5px;font-size:10px;font-weight:600;line-height:18px;text-align:center;color:#fff;background-color:var(--ion-color-danger);border-radius:9px;box-shadow:0 1px 3px #0003}.bottom-nav__badge--dot{min-width:10px;width:10px;height:10px;padding:0;top:-2px;right:-4px;border-radius:50%}.bottom-nav__fab{position:relative;flex-shrink:0;width:var(--bottom-nav-fab-size);height:var(--bottom-nav-fab-size);margin:0 12px;margin-top:calc(var(--bottom-nav-fab-size) * -.35);background:var(--fab-color);border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;font-size:28px;box-shadow:0 4px 14px rgba(var(--ion-color-primary-rgb, 56, 128, 255),.4);transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s ease;overflow:hidden;--ripple-color: rgba(255, 255, 255, .3)}.bottom-nav__fab:hover{transform:scale(1.08);box-shadow:0 6px 20px rgba(var(--ion-color-primary-rgb, 56, 128, 255),.5)}.bottom-nav__fab:active{transform:scale(.95)}.bottom-nav__fab:focus-visible{outline:3px solid white;outline-offset:2px}.bottom-nav__fab--small{--bottom-nav-fab-size: 48px;font-size:24px;margin-top:-14.4px}.bottom-nav__fab ion-icon{display:block}.bottom-nav--hide-labels{--bottom-nav-height: 56px}.bottom-nav--hide-labels .bottom-nav__tab-label{display:none}.bottom-nav--hide-labels .bottom-nav__tab-icon{font-size:26px}@media (prefers-color-scheme: dark){.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 0, 0, 0),.8);border-top-color:#ffffff14}.bottom-nav--elevated{box-shadow:0 -4px 20px #00000040}.bottom-nav--floating{border-color:#ffffff1a;box-shadow:0 4px 24px #0003,0 8px 32px #00000026}.bottom-nav--floating.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 18, 18, 18),.88);border-color:#ffffff1a}.bottom-nav__fab{box-shadow:0 4px 14px #0006}.bottom-nav__fab:hover{box-shadow:0 6px 20px #00000080}}:host-context(.dark) .bottom-nav--translucent,:host-context(body.dark) .bottom-nav--translucent,:host-context([data-theme=dark]) .bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 18, 18, 18),.85);border-top-color:#ffffff14}:host-context(.dark) .bottom-nav--elevated,:host-context(body.dark) .bottom-nav--elevated,:host-context([data-theme=dark]) .bottom-nav--elevated{box-shadow:0 -4px 20px #0000004d}:host-context(.dark) .bottom-nav--floating,:host-context(body.dark) .bottom-nav--floating,:host-context([data-theme=dark]) .bottom-nav--floating{border-color:#ffffff1a;box-shadow:0 4px 24px #0003,0 8px 32px #00000026}:host-context(.dark) .bottom-nav--floating.bottom-nav--translucent,:host-context(body.dark) .bottom-nav--floating.bottom-nav--translucent,:host-context([data-theme=dark]) .bottom-nav--floating.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 18, 18, 18),.88);border-color:#ffffff1a}:host-context(.dark) .bottom-nav__fab,:host-context(body.dark) .bottom-nav__fab,:host-context([data-theme=dark]) .bottom-nav__fab{box-shadow:0 4px 14px #00000080}:host-context(.dark) .bottom-nav__fab:hover,:host-context(body.dark) .bottom-nav__fab:hover,:host-context([data-theme=dark]) .bottom-nav__fab:hover{box-shadow:0 6px 20px #0009}@supports (padding-bottom: env(safe-area-inset-bottom)){.bottom-nav--safe-area .bottom-nav__container{height:var(--bottom-nav-height)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }] }); }
303
+ `, isInline: true, styles: [":host{display:block;position:fixed;bottom:0;left:0;right:0;z-index:100;pointer-events:none}.bottom-nav{--bottom-nav-bg: var(--ion-background-color);--bottom-nav-active: var(--ion-color-primary);--bottom-nav-inactive: var(--ion-color-medium);--bottom-nav-radius: 16px 16px 0 0;--bottom-nav-height: 64px;--bottom-nav-fab-size: 56px;--bottom-nav-max-width: var(--val-container-md, 720px);--fab-color: var(--ion-color-primary);pointer-events:auto;background:var(--bottom-nav-bg);border-radius:var(--bottom-nav-radius);height:var(--bottom-nav-height);padding:0 8px;max-width:var(--bottom-nav-max-width);margin:0 auto}.bottom-nav--elevated{box-shadow:0 -4px 20px #00000014}.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 255, 255, 255),.75);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border-top:1px solid rgba(var(--ion-text-color-rgb, 0, 0, 0),.06)}.bottom-nav--floating{margin:0 auto 8px;width:calc(100% - 32px);border-radius:32px;border:1px solid rgba(var(--ion-text-color-rgb, 0, 0, 0),.08);box-shadow:0 4px 24px #00000014,0 8px 32px #0000000a;--bottom-nav-radius: 32px}.bottom-nav--floating.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 255, 255, 255),.82);backdrop-filter:blur(28px) saturate(200%);-webkit-backdrop-filter:blur(28px) saturate(200%);border:1px solid rgba(var(--ion-text-color-rgb, 0, 0, 0),.08)}.bottom-nav--floating.bottom-nav--elevated{box-shadow:0 4px 24px #0000001a,0 12px 48px #00000014}.bottom-nav--floating.bottom-nav--safe-area{margin-bottom:calc(8px + env(safe-area-inset-bottom,0))}.bottom-nav--safe-area{padding-bottom:env(safe-area-inset-bottom,0);height:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0))}.bottom-nav__container{display:flex;align-items:center;justify-content:space-around;height:var(--bottom-nav-height);max-width:500px;margin:0 auto}.bottom-nav__tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;height:100%;padding:8px 4px;background:transparent;border:none;cursor:pointer;position:relative;overflow:hidden;color:var(--bottom-nav-inactive);transition:color .2s ease;max-width:80px;--ripple-color: var(--bottom-nav-active)}.bottom-nav__tab:focus-visible{outline:2px solid var(--bottom-nav-active);outline-offset:-2px;border-radius:8px}.bottom-nav__tab--active{color:var(--bottom-nav-active)}.bottom-nav__tab--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.bottom-nav__tab[data-animation=scale] .bottom-nav__tab-icon{transition:transform .2s cubic-bezier(.4,0,.2,1)}.bottom-nav__tab[data-animation=scale].bottom-nav__tab--active .bottom-nav__tab-icon{transform:scale(1.15)}.bottom-nav__tab[data-animation=fade]{transition:opacity .2s ease,color .2s ease}.bottom-nav__tab[data-animation=fade]:not(.bottom-nav__tab--active){opacity:.6}.bottom-nav__tab[data-animation=slide] .bottom-nav__tab-label{transition:transform .2s ease,opacity .2s ease;transform:translateY(6px);opacity:0}.bottom-nav__tab[data-animation=slide].bottom-nav__tab--active .bottom-nav__tab-label{transform:translateY(0);opacity:1}.bottom-nav__tab-icon{position:relative;font-size:24px;line-height:1}.bottom-nav__tab-icon ion-icon{display:block}.bottom-nav__tab-label{font-size:11px;font-weight:500;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;letter-spacing:.01em}.bottom-nav__badge{position:absolute;top:-4px;right:-10px;min-width:18px;height:18px;padding:0 5px;font-size:10px;font-weight:600;line-height:18px;text-align:center;color:#fff;background-color:var(--ion-color-danger);border-radius:9px;box-shadow:0 1px 3px #0003}.bottom-nav__badge--dot{min-width:10px;width:10px;height:10px;padding:0;top:-2px;right:-4px;border-radius:50%}.bottom-nav__fab{position:relative;flex-shrink:0;width:var(--bottom-nav-fab-size);height:var(--bottom-nav-fab-size);margin:0 12px;margin-top:calc(var(--bottom-nav-fab-size) * -.35);background:var(--fab-color);border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;font-size:28px;box-shadow:0 4px 14px rgba(var(--ion-color-primary-rgb, 56, 128, 255),.4);transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s ease;overflow:hidden;--ripple-color: rgba(255, 255, 255, .3)}.bottom-nav__fab:hover{transform:scale(1.08);box-shadow:0 6px 20px rgba(var(--ion-color-primary-rgb, 56, 128, 255),.5)}.bottom-nav__fab:active{transform:scale(.95)}.bottom-nav__fab:focus-visible{outline:3px solid white;outline-offset:2px}.bottom-nav__fab--small{--bottom-nav-fab-size: 48px;font-size:24px;margin-top:-14.4px}.bottom-nav__fab ion-icon{display:block}.bottom-nav--hide-labels{--bottom-nav-height: 56px}.bottom-nav--hide-labels .bottom-nav__tab-label{display:none}.bottom-nav--hide-labels .bottom-nav__tab-icon{font-size:26px}:host-context(.dark) .bottom-nav--translucent,:host-context(.ion-palette-dark) .bottom-nav--translucent,:host-context(html.ion-palette-dark) .bottom-nav--translucent,:host-context(body.dark) .bottom-nav--translucent,:host-context([data-theme=dark]) .bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 18, 18, 18),.85);border-top-color:#ffffff14}:host-context(.dark) .bottom-nav--elevated,:host-context(.ion-palette-dark) .bottom-nav--elevated,:host-context(html.ion-palette-dark) .bottom-nav--elevated,:host-context(body.dark) .bottom-nav--elevated,:host-context([data-theme=dark]) .bottom-nav--elevated{box-shadow:0 -4px 20px #0000004d}:host-context(.dark) .bottom-nav--floating,:host-context(.ion-palette-dark) .bottom-nav--floating,:host-context(html.ion-palette-dark) .bottom-nav--floating,:host-context(body.dark) .bottom-nav--floating,:host-context([data-theme=dark]) .bottom-nav--floating{border-color:#ffffff1a;box-shadow:0 4px 24px #0003,0 8px 32px #00000026}:host-context(.dark) .bottom-nav--floating.bottom-nav--translucent,:host-context(.ion-palette-dark) .bottom-nav--floating.bottom-nav--translucent,:host-context(html.ion-palette-dark) .bottom-nav--floating.bottom-nav--translucent,:host-context(body.dark) .bottom-nav--floating.bottom-nav--translucent,:host-context([data-theme=dark]) .bottom-nav--floating.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 18, 18, 18),.88);border-color:#ffffff1a}:host-context(.dark) .bottom-nav__fab,:host-context(.ion-palette-dark) .bottom-nav__fab,:host-context(html.ion-palette-dark) .bottom-nav__fab,:host-context(body.dark) .bottom-nav__fab,:host-context([data-theme=dark]) .bottom-nav__fab{box-shadow:0 4px 14px #00000080}:host-context(.dark) .bottom-nav__fab:hover,:host-context(.ion-palette-dark) .bottom-nav__fab:hover,:host-context(html.ion-palette-dark) .bottom-nav__fab:hover,:host-context(body.dark) .bottom-nav__fab:hover,:host-context([data-theme=dark]) .bottom-nav__fab:hover{box-shadow:0 6px 20px #0009}@supports (padding-bottom: env(safe-area-inset-bottom)){.bottom-nav--safe-area .bottom-nav__container{height:var(--bottom-nav-height)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }] }); }
304
304
  }
305
305
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BottomNavComponent, decorators: [{
306
306
  type: Component,
@@ -374,10 +374,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
374
374
  }
375
375
  </div>
376
376
  </nav>
377
- `, styles: [":host{display:block;position:fixed;bottom:0;left:0;right:0;z-index:100;pointer-events:none}.bottom-nav{--bottom-nav-bg: var(--ion-background-color);--bottom-nav-active: var(--ion-color-primary);--bottom-nav-inactive: var(--ion-color-medium);--bottom-nav-radius: 16px 16px 0 0;--bottom-nav-height: 64px;--bottom-nav-fab-size: 56px;--bottom-nav-max-width: var(--val-container-md, 720px);--fab-color: var(--ion-color-primary);pointer-events:auto;background:var(--bottom-nav-bg);border-radius:var(--bottom-nav-radius);height:var(--bottom-nav-height);padding:0 8px;max-width:var(--bottom-nav-max-width);margin:0 auto}.bottom-nav--elevated{box-shadow:0 -4px 20px #00000014}.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 255, 255, 255),.75);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border-top:1px solid rgba(var(--ion-text-color-rgb, 0, 0, 0),.06)}.bottom-nav--floating{margin:0 auto 8px;width:calc(100% - 32px);border-radius:32px;border:1px solid rgba(var(--ion-text-color-rgb, 0, 0, 0),.08);box-shadow:0 4px 24px #00000014,0 8px 32px #0000000a;--bottom-nav-radius: 32px}.bottom-nav--floating.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 255, 255, 255),.82);backdrop-filter:blur(28px) saturate(200%);-webkit-backdrop-filter:blur(28px) saturate(200%);border:1px solid rgba(var(--ion-text-color-rgb, 0, 0, 0),.08)}.bottom-nav--floating.bottom-nav--elevated{box-shadow:0 4px 24px #0000001a,0 12px 48px #00000014}.bottom-nav--floating.bottom-nav--safe-area{margin-bottom:calc(8px + env(safe-area-inset-bottom,0))}.bottom-nav--safe-area{padding-bottom:env(safe-area-inset-bottom,0);height:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0))}.bottom-nav__container{display:flex;align-items:center;justify-content:space-around;height:var(--bottom-nav-height);max-width:500px;margin:0 auto}.bottom-nav__tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;height:100%;padding:8px 4px;background:transparent;border:none;cursor:pointer;position:relative;overflow:hidden;color:var(--bottom-nav-inactive);transition:color .2s ease;max-width:80px;--ripple-color: var(--bottom-nav-active)}.bottom-nav__tab:focus-visible{outline:2px solid var(--bottom-nav-active);outline-offset:-2px;border-radius:8px}.bottom-nav__tab--active{color:var(--bottom-nav-active)}.bottom-nav__tab--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.bottom-nav__tab[data-animation=scale] .bottom-nav__tab-icon{transition:transform .2s cubic-bezier(.4,0,.2,1)}.bottom-nav__tab[data-animation=scale].bottom-nav__tab--active .bottom-nav__tab-icon{transform:scale(1.15)}.bottom-nav__tab[data-animation=fade]{transition:opacity .2s ease,color .2s ease}.bottom-nav__tab[data-animation=fade]:not(.bottom-nav__tab--active){opacity:.6}.bottom-nav__tab[data-animation=slide] .bottom-nav__tab-label{transition:transform .2s ease,opacity .2s ease;transform:translateY(6px);opacity:0}.bottom-nav__tab[data-animation=slide].bottom-nav__tab--active .bottom-nav__tab-label{transform:translateY(0);opacity:1}.bottom-nav__tab-icon{position:relative;font-size:24px;line-height:1}.bottom-nav__tab-icon ion-icon{display:block}.bottom-nav__tab-label{font-size:11px;font-weight:500;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;letter-spacing:.01em}.bottom-nav__badge{position:absolute;top:-4px;right:-10px;min-width:18px;height:18px;padding:0 5px;font-size:10px;font-weight:600;line-height:18px;text-align:center;color:#fff;background-color:var(--ion-color-danger);border-radius:9px;box-shadow:0 1px 3px #0003}.bottom-nav__badge--dot{min-width:10px;width:10px;height:10px;padding:0;top:-2px;right:-4px;border-radius:50%}.bottom-nav__fab{position:relative;flex-shrink:0;width:var(--bottom-nav-fab-size);height:var(--bottom-nav-fab-size);margin:0 12px;margin-top:calc(var(--bottom-nav-fab-size) * -.35);background:var(--fab-color);border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;font-size:28px;box-shadow:0 4px 14px rgba(var(--ion-color-primary-rgb, 56, 128, 255),.4);transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s ease;overflow:hidden;--ripple-color: rgba(255, 255, 255, .3)}.bottom-nav__fab:hover{transform:scale(1.08);box-shadow:0 6px 20px rgba(var(--ion-color-primary-rgb, 56, 128, 255),.5)}.bottom-nav__fab:active{transform:scale(.95)}.bottom-nav__fab:focus-visible{outline:3px solid white;outline-offset:2px}.bottom-nav__fab--small{--bottom-nav-fab-size: 48px;font-size:24px;margin-top:-14.4px}.bottom-nav__fab ion-icon{display:block}.bottom-nav--hide-labels{--bottom-nav-height: 56px}.bottom-nav--hide-labels .bottom-nav__tab-label{display:none}.bottom-nav--hide-labels .bottom-nav__tab-icon{font-size:26px}@media (prefers-color-scheme: dark){.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 0, 0, 0),.8);border-top-color:#ffffff14}.bottom-nav--elevated{box-shadow:0 -4px 20px #00000040}.bottom-nav--floating{border-color:#ffffff1a;box-shadow:0 4px 24px #0003,0 8px 32px #00000026}.bottom-nav--floating.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 18, 18, 18),.88);border-color:#ffffff1a}.bottom-nav__fab{box-shadow:0 4px 14px #0006}.bottom-nav__fab:hover{box-shadow:0 6px 20px #00000080}}:host-context(.dark) .bottom-nav--translucent,:host-context(body.dark) .bottom-nav--translucent,:host-context([data-theme=dark]) .bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 18, 18, 18),.85);border-top-color:#ffffff14}:host-context(.dark) .bottom-nav--elevated,:host-context(body.dark) .bottom-nav--elevated,:host-context([data-theme=dark]) .bottom-nav--elevated{box-shadow:0 -4px 20px #0000004d}:host-context(.dark) .bottom-nav--floating,:host-context(body.dark) .bottom-nav--floating,:host-context([data-theme=dark]) .bottom-nav--floating{border-color:#ffffff1a;box-shadow:0 4px 24px #0003,0 8px 32px #00000026}:host-context(.dark) .bottom-nav--floating.bottom-nav--translucent,:host-context(body.dark) .bottom-nav--floating.bottom-nav--translucent,:host-context([data-theme=dark]) .bottom-nav--floating.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 18, 18, 18),.88);border-color:#ffffff1a}:host-context(.dark) .bottom-nav__fab,:host-context(body.dark) .bottom-nav__fab,:host-context([data-theme=dark]) .bottom-nav__fab{box-shadow:0 4px 14px #00000080}:host-context(.dark) .bottom-nav__fab:hover,:host-context(body.dark) .bottom-nav__fab:hover,:host-context([data-theme=dark]) .bottom-nav__fab:hover{box-shadow:0 6px 20px #0009}@supports (padding-bottom: env(safe-area-inset-bottom)){.bottom-nav--safe-area .bottom-nav__container{height:var(--bottom-nav-height)}}\n"] }]
377
+ `, styles: [":host{display:block;position:fixed;bottom:0;left:0;right:0;z-index:100;pointer-events:none}.bottom-nav{--bottom-nav-bg: var(--ion-background-color);--bottom-nav-active: var(--ion-color-primary);--bottom-nav-inactive: var(--ion-color-medium);--bottom-nav-radius: 16px 16px 0 0;--bottom-nav-height: 64px;--bottom-nav-fab-size: 56px;--bottom-nav-max-width: var(--val-container-md, 720px);--fab-color: var(--ion-color-primary);pointer-events:auto;background:var(--bottom-nav-bg);border-radius:var(--bottom-nav-radius);height:var(--bottom-nav-height);padding:0 8px;max-width:var(--bottom-nav-max-width);margin:0 auto}.bottom-nav--elevated{box-shadow:0 -4px 20px #00000014}.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 255, 255, 255),.75);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border-top:1px solid rgba(var(--ion-text-color-rgb, 0, 0, 0),.06)}.bottom-nav--floating{margin:0 auto 8px;width:calc(100% - 32px);border-radius:32px;border:1px solid rgba(var(--ion-text-color-rgb, 0, 0, 0),.08);box-shadow:0 4px 24px #00000014,0 8px 32px #0000000a;--bottom-nav-radius: 32px}.bottom-nav--floating.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 255, 255, 255),.82);backdrop-filter:blur(28px) saturate(200%);-webkit-backdrop-filter:blur(28px) saturate(200%);border:1px solid rgba(var(--ion-text-color-rgb, 0, 0, 0),.08)}.bottom-nav--floating.bottom-nav--elevated{box-shadow:0 4px 24px #0000001a,0 12px 48px #00000014}.bottom-nav--floating.bottom-nav--safe-area{margin-bottom:calc(8px + env(safe-area-inset-bottom,0))}.bottom-nav--safe-area{padding-bottom:env(safe-area-inset-bottom,0);height:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0))}.bottom-nav__container{display:flex;align-items:center;justify-content:space-around;height:var(--bottom-nav-height);max-width:500px;margin:0 auto}.bottom-nav__tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;height:100%;padding:8px 4px;background:transparent;border:none;cursor:pointer;position:relative;overflow:hidden;color:var(--bottom-nav-inactive);transition:color .2s ease;max-width:80px;--ripple-color: var(--bottom-nav-active)}.bottom-nav__tab:focus-visible{outline:2px solid var(--bottom-nav-active);outline-offset:-2px;border-radius:8px}.bottom-nav__tab--active{color:var(--bottom-nav-active)}.bottom-nav__tab--disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.bottom-nav__tab[data-animation=scale] .bottom-nav__tab-icon{transition:transform .2s cubic-bezier(.4,0,.2,1)}.bottom-nav__tab[data-animation=scale].bottom-nav__tab--active .bottom-nav__tab-icon{transform:scale(1.15)}.bottom-nav__tab[data-animation=fade]{transition:opacity .2s ease,color .2s ease}.bottom-nav__tab[data-animation=fade]:not(.bottom-nav__tab--active){opacity:.6}.bottom-nav__tab[data-animation=slide] .bottom-nav__tab-label{transition:transform .2s ease,opacity .2s ease;transform:translateY(6px);opacity:0}.bottom-nav__tab[data-animation=slide].bottom-nav__tab--active .bottom-nav__tab-label{transform:translateY(0);opacity:1}.bottom-nav__tab-icon{position:relative;font-size:24px;line-height:1}.bottom-nav__tab-icon ion-icon{display:block}.bottom-nav__tab-label{font-size:11px;font-weight:500;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;letter-spacing:.01em}.bottom-nav__badge{position:absolute;top:-4px;right:-10px;min-width:18px;height:18px;padding:0 5px;font-size:10px;font-weight:600;line-height:18px;text-align:center;color:#fff;background-color:var(--ion-color-danger);border-radius:9px;box-shadow:0 1px 3px #0003}.bottom-nav__badge--dot{min-width:10px;width:10px;height:10px;padding:0;top:-2px;right:-4px;border-radius:50%}.bottom-nav__fab{position:relative;flex-shrink:0;width:var(--bottom-nav-fab-size);height:var(--bottom-nav-fab-size);margin:0 12px;margin-top:calc(var(--bottom-nav-fab-size) * -.35);background:var(--fab-color);border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;font-size:28px;box-shadow:0 4px 14px rgba(var(--ion-color-primary-rgb, 56, 128, 255),.4);transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s ease;overflow:hidden;--ripple-color: rgba(255, 255, 255, .3)}.bottom-nav__fab:hover{transform:scale(1.08);box-shadow:0 6px 20px rgba(var(--ion-color-primary-rgb, 56, 128, 255),.5)}.bottom-nav__fab:active{transform:scale(.95)}.bottom-nav__fab:focus-visible{outline:3px solid white;outline-offset:2px}.bottom-nav__fab--small{--bottom-nav-fab-size: 48px;font-size:24px;margin-top:-14.4px}.bottom-nav__fab ion-icon{display:block}.bottom-nav--hide-labels{--bottom-nav-height: 56px}.bottom-nav--hide-labels .bottom-nav__tab-label{display:none}.bottom-nav--hide-labels .bottom-nav__tab-icon{font-size:26px}:host-context(.dark) .bottom-nav--translucent,:host-context(.ion-palette-dark) .bottom-nav--translucent,:host-context(html.ion-palette-dark) .bottom-nav--translucent,:host-context(body.dark) .bottom-nav--translucent,:host-context([data-theme=dark]) .bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 18, 18, 18),.85);border-top-color:#ffffff14}:host-context(.dark) .bottom-nav--elevated,:host-context(.ion-palette-dark) .bottom-nav--elevated,:host-context(html.ion-palette-dark) .bottom-nav--elevated,:host-context(body.dark) .bottom-nav--elevated,:host-context([data-theme=dark]) .bottom-nav--elevated{box-shadow:0 -4px 20px #0000004d}:host-context(.dark) .bottom-nav--floating,:host-context(.ion-palette-dark) .bottom-nav--floating,:host-context(html.ion-palette-dark) .bottom-nav--floating,:host-context(body.dark) .bottom-nav--floating,:host-context([data-theme=dark]) .bottom-nav--floating{border-color:#ffffff1a;box-shadow:0 4px 24px #0003,0 8px 32px #00000026}:host-context(.dark) .bottom-nav--floating.bottom-nav--translucent,:host-context(.ion-palette-dark) .bottom-nav--floating.bottom-nav--translucent,:host-context(html.ion-palette-dark) .bottom-nav--floating.bottom-nav--translucent,:host-context(body.dark) .bottom-nav--floating.bottom-nav--translucent,:host-context([data-theme=dark]) .bottom-nav--floating.bottom-nav--translucent{background:rgba(var(--ion-background-color-rgb, 18, 18, 18),.88);border-color:#ffffff1a}:host-context(.dark) .bottom-nav__fab,:host-context(.ion-palette-dark) .bottom-nav__fab,:host-context(html.ion-palette-dark) .bottom-nav__fab,:host-context(body.dark) .bottom-nav__fab,:host-context([data-theme=dark]) .bottom-nav__fab{box-shadow:0 4px 14px #00000080}:host-context(.dark) .bottom-nav__fab:hover,:host-context(.ion-palette-dark) .bottom-nav__fab:hover,:host-context(html.ion-palette-dark) .bottom-nav__fab:hover,:host-context(body.dark) .bottom-nav__fab:hover,:host-context([data-theme=dark]) .bottom-nav__fab:hover{box-shadow:0 6px 20px #0009}@supports (padding-bottom: env(safe-area-inset-bottom)){.bottom-nav--safe-area .bottom-nav__container{height:var(--bottom-nav-height)}}\n"] }]
378
378
  }], propDecorators: { tabClick: [{
379
379
  type: Output
380
380
  }], fabClick: [{
381
381
  type: Output
382
382
  }] } });
383
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90dG9tLW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2JvdHRvbS1uYXYvYm90dG9tLW5hdi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQXdELG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXBHLG1DQUFtQztBQUNuQyxPQUFPLEVBQ0wsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEVBQ04sYUFBYSxFQUNiLE1BQU0sRUFDTixhQUFhLEVBQ2IsUUFBUSxFQUNSLGVBQWUsRUFDZixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFlBQVksRUFDWixJQUFJLEVBQ0osV0FBVyxFQUNYLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsT0FBTyxFQUNQLGNBQWMsRUFDZCxJQUFJLEVBQ0osV0FBVyxF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QkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgaW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvbkljb24sIElvblJpcHBsZUVmZmVjdCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBmaWx0ZXIsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBCb3R0b21OYXZNZXRhZGF0YSwgQm90dG9tTmF2VGFiLCBCb3R0b21OYXZDbGlja0V2ZW50LCBCT1RUT01fTkFWX0RFRkFVTFRTIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIFJlZ2lzdGVyIGNvbW1vbiBuYXZpZ2F0aW9uIGljb25zXG5pbXBvcnQge1xuICBob21lLFxuICBob21lT3V0bGluZSxcbiAgc2VhcmNoLFxuICBzZWFyY2hPdXRsaW5lLFxuICBwZXJzb24sXG4gIHBlcnNvbk91dGxpbmUsXG4gIHNldHRpbmdzLFxuICBzZXR0aW5nc091dGxpbmUsXG4gIG5vdGlmaWNhdGlvbnMsXG4gIG5vdGlmaWNhdGlvbnNPdXRsaW5lLFxuICBhZGQsXG4gIGFkZE91dGxpbmUsXG4gIGhlYXJ0LFxuICBoZWFydE91dGxpbmUsXG4gIGNhcnQsXG4gIGNhcnRPdXRsaW5lLFxuICBjaGF0YnViYmxlLFxuICBjaGF0YnViYmxlT3V0bGluZSxcbiAgY29tcGFzcyxcbiAgY29tcGFzc091dGxpbmUsXG4gIGdyaWQsXG4gIGdyaWRPdXRsaW5lLFxuICBsaXN0LFxuICBsaXN0T3V0bGluZSxcbiAgY2FsZW5kYXIsXG4gIGNhbGVuZGFyT3V0bGluZSxcbiAgZm9sZGVyLFxuICBmb2xkZXJPdXRsaW5lLFxuICBkb2N1bWVudHMsXG4gIGRvY3VtZW50c091dGxpbmUsXG4gIHN0YXRzQ2hhcnQsXG4gIHN0YXRzQ2hhcnRPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmFkZEljb25zKHtcbiAgaG9tZSxcbiAgaG9tZU91dGxpbmUsXG4gIHNlYXJjaCxcbiAgc2VhcmNoT3V0bGluZSxcbiAgcGVyc29uLFxuICBwZXJzb25PdXRsaW5lLFxuICBzZXR0aW5ncyxcbiAgc2V0dGluZ3NPdXRsaW5lLFxuICBub3RpZmljYXRpb25zLFxuICBub3RpZmljYXRpb25zT3V0bGluZSxcbiAgYWRkLFxuICBhZGRPdXRsaW5lLFxuICBoZWFydCxcbiAgaGVhcnRPdXRsaW5lLFxuICBjYXJ0LFxuICBjYXJ0T3V0bGluZSxcbiAgY2hhdGJ1YmJsZSxcbiAgY2hhdGJ1YmJsZU91dGxpbmUsXG4gIGNvbXBhc3MsXG4gIGNvbXBhc3NPdXRsaW5lLFxuICBncmlkLFxuICBncmlkT3V0bGluZSxcbiAgbGlzdCxcbiAgbGlzdE91dGxpbmUsXG4gIGNhbGVuZGFyLFxuICBjYWxlbmRhck91dGxpbmUsXG4gIGZvbGRlcixcbiAgZm9sZGVyT3V0bGluZSxcbiAgZG9jdW1lbnRzLFxuICBkb2N1bWVudHNPdXRsaW5lLFxuICBzdGF0c0NoYXJ0LFxuICBzdGF0c0NoYXJ0T3V0bGluZSxcbn0pO1xuXG4vKipcbiAqIHZhbC1ib3R0b20tbmF2XG4gKlxuICogQSBtb2Rlcm4gYm90dG9tIG5hdmlnYXRpb24gYmFyIGNvbXBvbmVudCB3aXRoIHN1cHBvcnQgZm9yIHRhYnMsXG4gKiBvcHRpb25hbCBjZW50cmFsIEZBQiBidXR0b24sIGJhZGdlcywgYW5kIHJvdXRlLWJhc2VkIGFjdGl2ZSBzdGF0ZSBkZXRlY3Rpb24uXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYGh0bWxcbiAqIDx2YWwtYm90dG9tLW5hdlxuICogICBbcHJvcHNdPVwie1xuICogICAgIHRhYnM6IFtcbiAqICAgICAgIHsgdG9rZW46ICdob21lJywgaWNvbjogeyBkZWZhdWx0OiAnaG9tZS1vdXRsaW5lJywgYWN0aXZlOiAnaG9tZScgfSwgbGFiZWw6ICdIb21lJywgcm91dGU6ICcvYXBwL2hvbWUnIH0sXG4gKiAgICAgICB7IHRva2VuOiAnc2V0dGluZ3MnLCBpY29uOiB7IGRlZmF1bHQ6ICdzZXR0aW5ncy1vdXRsaW5lJywgYWN0aXZlOiAnc2V0dGluZ3MnIH0sIGxhYmVsOiAnU2V0dGluZ3MnLCByb3V0ZTogJy9hcHAvc2V0dGluZ3MnIH1cbiAqICAgICBdXG4gKiAgIH1cIlxuICogICAodGFiQ2xpY2spPVwib25UYWJDbGljaygkZXZlbnQpXCJcbiAqIC8+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIGkxOG4gYW5kIHRyYW5zbHVjZW50IHRoZW1lXG4gKiBgYGBodG1sXG4gKiA8dmFsLWJvdHRvbS1uYXZcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0YWJzOiBbXG4gKiAgICAgICB7IHRva2VuOiAnaG9tZScsIGljb246IHsgZGVmYXVsdDogJ2hvbWUtb3V0bGluZScgfSwgbGFiZWxLZXk6ICdtZW51SG9tZScsIHJvdXRlOiAnL2FwcC9ob21lJyB9LFxuICogICAgICAgeyB0b2tlbjogJ3NldHRpbmdzJywgaWNvbjogeyBkZWZhdWx0OiAnc2V0dGluZ3Mtb3V0bGluZScgfSwgbGFiZWxLZXk6ICdtZW51U2V0dGluZ3MnLCByb3V0ZTogJy9hcHAvc2V0dGluZ3MnIH1cbiAqICAgICBdLFxuICogICAgIGkxOG5OYW1lc3BhY2U6ICdNZW51JyxcbiAqICAgICB0aGVtZTogeyB0cmFuc2x1Y2VudDogdHJ1ZSB9XG4gKiAgIH1cIlxuICogLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtYm90dG9tLW5hdicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb24sIElvblJpcHBsZUVmZmVjdF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5hdlxuICAgICAgY2xhc3M9XCJib3R0b20tbmF2XCJcbiAgICAgIFtjbGFzcy5ib3R0b20tbmF2LS1lbGV2YXRlZF09XCJjb25maWcoKS50aGVtZS5lbGV2YXRlZFwiXG4gICAgICBbY2xhc3MuYm90dG9tLW5hdi0tdHJhbnNsdWNlbnRdPVwiY29uZmlnKCkudGhlbWUudHJhbnNsdWNlbnRcIlxuICAgICAgW2NsYXNzLmJvdHRvbS1uYXYtLWZsb2F0aW5nXT1cImNvbmZpZygpLnRoZW1lLmZsb2F0aW5nXCJcbiAgICAgIFtjbGFzcy5ib3R0b20tbmF2LS1zYWZlLWFyZWFdPVwiY29uZmlnKCkuc2FmZUFyZWFcIlxuICAgICAgW2NsYXNzLmJvdHRvbS1uYXYtLWhpZGUtbGFiZWxzXT1cImNvbmZpZygpLmhpZGVMYWJlbHNcIlxuICAgICAgW25nU3R5bGVdPVwiZ2V0VGhlbWVTdHlsZXMoKVwiXG4gICAgICByb2xlPVwibmF2aWdhdGlvblwiXG4gICAgICBhcmlhLWxhYmVsPVwiQm90dG9tIG5hdmlnYXRpb25cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tbmF2X19jb250YWluZXJcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBkaXNwbGF5VGFicygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICBAaWYgKGl0ZW0gPT09IG51bGwgJiYgY29uZmlnKCkuZmFiKSB7XG4gICAgICAgICAgICA8IS0tIEZBQiBCdXR0b24gLS0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYm90dG9tLW5hdl9fZmFiXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJvdHRvbS1uYXZfX2ZhYi0tc21hbGxdPVwiY29uZmlnKCkuZmFiIS5zaXplID09PSAnc21hbGwnXCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tZmFiLWNvbG9yXT1cInJlc29sdmVDb2xvcihjb25maWcoKS5mYWIhLmNvbG9yIHx8ICdwcmltYXJ5JylcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25GYWJDbGljaygpXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25maWcoKS5mYWIhLmFyaWFMYWJlbCB8fCAnQWN0aW9uIGJ1dHRvbidcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1yaXBwbGUtZWZmZWN0PjwvaW9uLXJpcHBsZS1lZmZlY3Q+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJjb25maWcoKS5mYWIhLmljb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfSBAZWxzZSBpZiAoaXRlbSkge1xuICAgICAgICAgICAgPCEtLSBUYWIgSXRlbSAtLT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJib3R0b20tbmF2X190YWJcIlxuICAgICAgICAgICAgICBbY2xhc3MuYm90dG9tLW5hdl9fdGFiLS1hY3RpdmVdPVwiaXNBY3RpdmUoaXRlbSlcIlxuICAgICAgICAgICAgICBbY2xhc3MuYm90dG9tLW5hdl9fdGFiLS1kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hbmltYXRpb25dPVwiY29uZmlnKCkuYW5pbWF0aW9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVGFiQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsIHx8IGdldExhYmVsKGl0ZW0pXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImlzQWN0aXZlKGl0ZW0pID8gJ3BhZ2UnIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24tcmlwcGxlLWVmZmVjdD48L2lvbi1yaXBwbGUtZWZmZWN0PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tbmF2X190YWItaWNvblwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJnZXRJY29uKGl0ZW0pXCI+PC9pb24taWNvbj5cblxuICAgICAgICAgICAgICAgIDwhLS0gQmFkZ2UgLS0+XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtLmJhZGdlKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvdHRvbS1uYXZfX2JhZGdlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmJvdHRvbS1uYXZfX2JhZGdlLS1kb3RdPVwiaXRlbS5iYWRnZS5kb3RcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaXRlbS5iYWRnZS5jb2xvciA/IHJlc29sdmVDb2xvcihpdGVtLmJhZGdlLmNvbG9yKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLmJhZGdlLmJhY2tncm91bmRDb2xvciA/IHJlc29sdmVDb2xvcihpdGVtLmJhZGdlLmJhY2tncm91bmRDb2xvcikgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWl0ZW0uYmFkZ2UuZG90ICYmIGl0ZW0uYmFkZ2UudGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uYmFkZ2UudGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICBAaWYgKCFjb25maWcoKS5oaWRlTGFiZWxzICYmIGdldExhYmVsKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib3R0b20tbmF2X190YWItbGFiZWxcIj57eyBnZXRMYWJlbChpdGVtKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L25hdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vYm90dG9tLW5hdi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBCb3R0b21OYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgbmF2aWdhdGlvbiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcm91dGVyU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKiBDb21wb25lbnQgY29uZmlndXJhdGlvbiAqL1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0PEJvdHRvbU5hdk1ldGFkYXRhPih7IHRhYnM6IFtdIH0pO1xuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYSB0YWIgaXMgY2xpY2tlZCAqL1xuICBAT3V0cHV0KCkgdGFiQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEJvdHRvbU5hdkNsaWNrRXZlbnQ+KCk7XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgRkFCIGJ1dHRvbiBpcyBjbGlja2VkICovXG4gIEBPdXRwdXQoKSBmYWJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogQ3VycmVudCBhY3RpdmUgcm91dGUgc2lnbmFsIGZvciByZWFjdGl2ZSB1cGRhdGVzICovXG4gIHByaXZhdGUgY3VycmVudFJvdXRlID0gc2lnbmFsPHN0cmluZz4oJycpO1xuXG4gIC8qKiBNZXJnZWQgY29uZmlndXJhdGlvbiB3aXRoIGRlZmF1bHRzICovXG4gIGNvbmZpZyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgLi4uQk9UVE9NX05BVl9ERUZBVUxUUyxcbiAgICAuLi50aGlzLnByb3BzKCksXG4gICAgdGhlbWU6IHtcbiAgICAgIC4uLkJPVFRPTV9OQVZfREVGQVVMVFMudGhlbWUsXG4gICAgICAuLi50aGlzLnByb3BzKCkudGhlbWUsXG4gICAgfSxcbiAgfSkpO1xuXG4gIC8qKiBDb21wdXRlZCB0YWJzIHdpdGggRkFCIGluc2VydGVkIGlmIHByZXNlbnQgKi9cbiAgZGlzcGxheVRhYnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdGFicyA9IHRoaXMuY29uZmlnKCkudGFicztcbiAgICBjb25zdCBmYWIgPSB0aGlzLmNvbmZpZygpLmZhYjtcblxuICAgIGlmICghZmFiKSByZXR1cm4gdGFicztcblxuICAgIC8vIEluc2VydCBwbGFjZWhvbGRlciBhdCBjZW50ZXIgZm9yIEZBQiBwb3NpdGlvbmluZ1xuICAgIGNvbnN0IG1pZHBvaW50ID0gTWF0aC5mbG9vcih0YWJzLmxlbmd0aCAvIDIpO1xuICAgIHJldHVybiBbXG4gICAgICAuLi50YWJzLnNsaWNlKDAsIG1pZHBvaW50KSxcbiAgICAgIG51bGwgYXMgdW5rbm93biBhcyBCb3R0b21OYXZUYWIsIC8vIEZBQiBwbGFjZWhvbGRlclxuICAgICAgLi4udGFicy5zbGljZShtaWRwb2ludCksXG4gICAgXTtcbiAgfSk7XG5cbiAgLyoqIENoZWNrIGlmIGEgdGFiIGlzIGN1cnJlbnRseSBhY3RpdmUgKi9cbiAgaXNBY3RpdmUodGFiOiBCb3R0b21OYXZUYWIpOiBib29sZWFuIHtcbiAgICBjb25zdCByb3V0ZSA9IHRoaXMuY3VycmVudFJvdXRlKCk7XG4gICAgaWYgKCFyb3V0ZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgbWFpbiByb3V0ZVxuICAgIGNvbnN0IHRhYlJvdXRlID0gQXJyYXkuaXNBcnJheSh0YWIucm91dGUpID8gdGFiLnJvdXRlLmpvaW4oJy8nKSA6IHRhYi5yb3V0ZTtcbiAgICBpZiAocm91dGUuc3RhcnRzV2l0aCh0YWJSb3V0ZSkpIHJldHVybiB0cnVlO1xuXG4gICAgLy8gQ2hlY2sgYWRkaXRpb25hbCBhY3RpdmUgcm91dGVzXG4gICAgaWYgKHRhYi5hY3RpdmVSb3V0ZXMpIHtcbiAgICAgIHJldHVybiB0YWIuYWN0aXZlUm91dGVzLnNvbWUociA9PiByb3V0ZS5zdGFydHNXaXRoKHIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogR2V0IHRoZSBhcHByb3ByaWF0ZSBpY29uIGZvciBhIHRhYiBiYXNlZCBvbiBhY3RpdmUgc3RhdGUgKi9cbiAgZ2V0SWNvbih0YWI6IEJvdHRvbU5hdlRhYik6IHN0cmluZyB7XG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5pc0FjdGl2ZSh0YWIpO1xuICAgIGlmIChhY3RpdmUgJiYgdGFiLmljb24uYWN0aXZlKSB7XG4gICAgICByZXR1cm4gdGFiLmljb24uYWN0aXZlO1xuICAgIH1cbiAgICByZXR1cm4gdGFiLmljb24uZGVmYXVsdDtcbiAgfVxuXG4gIC8qKiBHZXQgdHJhbnNsYXRlZCBsYWJlbCBmb3IgYSB0YWIgKi9cbiAgZ2V0TGFiZWwodGFiOiBCb3R0b21OYXZUYWIpOiBzdHJpbmcge1xuICAgIGlmICh0YWIubGFiZWwpIHJldHVybiB0YWIubGFiZWw7XG4gICAgaWYgKHRhYi5sYWJlbEtleSkge1xuICAgICAgdGhpcy5pMThuLmxhbmcoKTsgLy8gVHJhY2sgbGFuZ3VhZ2UgY2hhbmdlcyBmb3IgcmVhY3Rpdml0eVxuICAgICAgcmV0dXJuIHRoaXMuaTE4bi50KHRhYi5sYWJlbEtleSwgdGhpcy5jb25maWcoKS5pMThuTmFtZXNwYWNlKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLyoqIEdldCBDU1MgdmFyaWFibGVzIGZvciB0aGVtaW5nICovXG4gIGdldFRoZW1lU3R5bGVzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IHRoZW1lID0gdGhpcy5jb25maWcoKS50aGVtZTtcbiAgICByZXR1cm4ge1xuICAgICAgJy0tYm90dG9tLW5hdi1iZyc6IHRoZW1lLmJhY2tncm91bmQgfHwgJycsXG4gICAgICAnLS1ib3R0b20tbmF2LWFjdGl2ZSc6IHRoaXMucmVzb2x2ZUNvbG9yKHRoZW1lLmFjdGl2ZUNvbG9yKSxcbiAgICAgICctLWJvdHRvbS1uYXYtaW5hY3RpdmUnOiB0aGlzLnJlc29sdmVDb2xvcih0aGVtZS5pbmFjdGl2ZUNvbG9yKSxcbiAgICAgICctLWJvdHRvbS1uYXYtcmFkaXVzJzogdGhlbWUuYm9yZGVyUmFkaXVzIHx8ICcnLFxuICAgICAgJy0tYm90dG9tLW5hdi1tYXgtd2lkdGgnOiB0aGlzLnJlc29sdmVNYXhXaWR0aCh0aGlzLmNvbmZpZygpLm1heFdpZHRoKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIFJlc29sdmUgbWF4V2lkdGggdG9rZW4gKHNtfG1kfGxnfHhsfGZ1bGwpIHRvIENTUyB2YXIgb3IgcmF3IHZhbHVlICovXG4gIHJlc29sdmVNYXhXaWR0aCh2Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgJ3NtJzpcbiAgICAgICAgcmV0dXJuICd2YXIoLS12YWwtY29udGFpbmVyLXNtLCA1NDBweCknO1xuICAgICAgY2FzZSAnbWQnOlxuICAgICAgICByZXR1cm4gJ3ZhcigtLXZhbC1jb250YWluZXItbWQsIDcyMHB4KSc7XG4gICAgICBjYXNlICdsZyc6XG4gICAgICAgIHJldHVybiAndmFyKC0tdmFsLWNvbnRhaW5lci1sZywgODgwcHgpJztcbiAgICAgIGNhc2UgJ3hsJzpcbiAgICAgICAgcmV0dXJuICd2YXIoLS12YWwtY29udGFpbmVyLXhsLCAxMTAwcHgpJztcbiAgICAgIGNhc2UgJ2Z1bGwnOlxuICAgICAgICByZXR1cm4gJ25vbmUnO1xuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICBjYXNlICcnOlxuICAgICAgICByZXR1cm4gJ3ZhcigtLXZhbC1jb250YWluZXItbWQsIDcyMHB4KSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBTZXQgaW5pdGlhbCByb3V0ZVxuICAgIHRoaXMuY3VycmVudFJvdXRlLnNldCh0aGlzLnJvdXRlci51cmwpO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHJvdXRlIGNoYW5nZXNcbiAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50Um91dGUuc2V0KChldmVudCBhcyBOYXZpZ2F0aW9uRW5kKS51cmxBZnRlclJlZGlyZWN0cyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqIEhhbmRsZSB0YWIgY2xpY2sgKi9cbiAgb25UYWJDbGljayh0YWI6IEJvdHRvbU5hdlRhYik6IHZvaWQge1xuICAgIGlmICh0YWIuZGlzYWJsZWQpIHJldHVybjtcblxuICAgIC8vIEVtaXQgZXZlbnRcbiAgICB0aGlzLnRhYkNsaWNrLmVtaXQoe1xuICAgICAgdG9rZW46IHRhYi50b2tlbixcbiAgICAgIGlzRmFiOiBmYWxzZSxcbiAgICAgIHJvdXRlOiB0YWIucm91dGUsXG4gICAgfSk7XG5cbiAgICAvLyBOYXZpZ2F0ZVxuICAgIGNvbnN0IHJvdXRlID0gQXJyYXkuaXNBcnJheSh0YWIucm91dGUpID8gdGFiLnJvdXRlIDogW3RhYi5yb3V0ZV07XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUocm91dGUpO1xuICB9XG5cbiAgLyoqIEhhbmRsZSBGQUIgY2xpY2sgKi9cbiAgb25GYWJDbGljaygpOiB2b2lkIHtcbiAgICBjb25zdCBmYWIgPSB0aGlzLmNvbmZpZygpLmZhYjtcbiAgICBpZiAoIWZhYikgcmV0dXJuO1xuXG4gICAgLy8gRW1pdCBldmVudFxuICAgIHRoaXMuZmFiQ2xpY2suZW1pdCgpO1xuXG4gICAgLy8gTmF2aWdhdGUgaWYgcm91dGUgaXMgZGVmaW5lZCBhbmQgbm90IGFuIGFjdGlvbi1vbmx5IGJ1dHRvblxuICAgIGlmIChmYWIucm91dGUgJiYgIWZhYi5pc0FjdGlvbikge1xuICAgICAgY29uc3Qgcm91dGUgPSBBcnJheS5pc0FycmF5KGZhYi5yb3V0ZSkgPyBmYWIucm91dGUgOiBbZmFiLnJvdXRlXTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmVzb2x2ZSBJb25pYyBjb2xvciBuYW1lIHRvIENTUyB2YXJpYWJsZSAqL1xuICByZXNvbHZlQ29sb3IoY29sb3I/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghY29sb3IpIHJldHVybiAnJztcbiAgICBjb25zdCBpb25pY0NvbG9ycyA9IFsncHJpbWFyeScsICdzZWNvbmRhcnknLCAndGVydGlhcnknLCAnc3VjY2VzcycsICd3YXJuaW5nJywgJ2RhbmdlcicsICdsaWdodCcsICdtZWRpdW0nLCAnZGFyayddO1xuICAgIGlmIChpb25pY0NvbG9ycy5pbmNsdWRlcyhjb2xvcikpIHtcbiAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7Y29sb3J9KWA7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbiAgfVxufVxuIl19
383
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90dG9tLW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2JvdHRvbS1uYXYvYm90dG9tLW5hdi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQXdELG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXBHLG1DQUFtQztBQUNuQyxPQUFPLEVBQ0wsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEVBQ04sYUFBYSxFQUNiLE1BQU0sRUFDTixhQUFhLEVBQ2IsUUFBUSxFQUNSLGVBQWUsRUFDZixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFlBQVksRUFDWixJQUFJLEVBQ0osV0FBVyxFQUNYLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsT0FBTyxFQUNQLGNBQWMsRUFDZCxJQUFJLEVBQ0osV0FBVyxF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QkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgaW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvbkljb24sIElvblJpcHBsZUVmZmVjdCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBmaWx0ZXIsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBCb3R0b21OYXZNZXRhZGF0YSwgQm90dG9tTmF2VGFiLCBCb3R0b21OYXZDbGlja0V2ZW50LCBCT1RUT01fTkFWX0RFRkFVTFRTIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIFJlZ2lzdGVyIGNvbW1vbiBuYXZpZ2F0aW9uIGljb25zXG5pbXBvcnQge1xuICBob21lLFxuICBob21lT3V0bGluZSxcbiAgc2VhcmNoLFxuICBzZWFyY2hPdXRsaW5lLFxuICBwZXJzb24sXG4gIHBlcnNvbk91dGxpbmUsXG4gIHNldHRpbmdzLFxuICBzZXR0aW5nc091dGxpbmUsXG4gIG5vdGlmaWNhdGlvbnMsXG4gIG5vdGlmaWNhdGlvbnNPdXRsaW5lLFxuICBhZGQsXG4gIGFkZE91dGxpbmUsXG4gIGhlYXJ0LFxuICBoZWFydE91dGxpbmUsXG4gIGNhcnQsXG4gIGNhcnRPdXRsaW5lLFxuICBjaGF0YnViYmxlLFxuICBjaGF0YnViYmxlT3V0bGluZSxcbiAgY29tcGFzcyxcbiAgY29tcGFzc091dGxpbmUsXG4gIGdyaWQsXG4gIGdyaWRPdXRsaW5lLFxuICBsaXN0LFxuICBsaXN0T3V0bGluZSxcbiAgY2FsZW5kYXIsXG4gIGNhbGVuZGFyT3V0bGluZSxcbiAgZm9sZGVyLFxuICBmb2xkZXJPdXRsaW5lLFxuICBkb2N1bWVudHMsXG4gIGRvY3VtZW50c091dGxpbmUsXG4gIHN0YXRzQ2hhcnQsXG4gIHN0YXRzQ2hhcnRPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmFkZEljb25zKHtcbiAgaG9tZSxcbiAgaG9tZU91dGxpbmUsXG4gIHNlYXJjaCxcbiAgc2VhcmNoT3V0bGluZSxcbiAgcGVyc29uLFxuICBwZXJzb25PdXRsaW5lLFxuICBzZXR0aW5ncyxcbiAgc2V0dGluZ3NPdXRsaW5lLFxuICBub3RpZmljYXRpb25zLFxuICBub3RpZmljYXRpb25zT3V0bGluZSxcbiAgYWRkLFxuICBhZGRPdXRsaW5lLFxuICBoZWFydCxcbiAgaGVhcnRPdXRsaW5lLFxuICBjYXJ0LFxuICBjYXJ0T3V0bGluZSxcbiAgY2hhdGJ1YmJsZSxcbiAgY2hhdGJ1YmJsZU91dGxpbmUsXG4gIGNvbXBhc3MsXG4gIGNvbXBhc3NPdXRsaW5lLFxuICBncmlkLFxuICBncmlkT3V0bGluZSxcbiAgbGlzdCxcbiAgbGlzdE91dGxpbmUsXG4gIGNhbGVuZGFyLFxuICBjYWxlbmRhck91dGxpbmUsXG4gIGZvbGRlcixcbiAgZm9sZGVyT3V0bGluZSxcbiAgZG9jdW1lbnRzLFxuICBkb2N1bWVudHNPdXRsaW5lLFxuICBzdGF0c0NoYXJ0LFxuICBzdGF0c0NoYXJ0T3V0bGluZSxcbn0pO1xuXG4vKipcbiAqIHZhbC1ib3R0b20tbmF2XG4gKlxuICogQSBtb2Rlcm4gYm90dG9tIG5hdmlnYXRpb24gYmFyIGNvbXBvbmVudCB3aXRoIHN1cHBvcnQgZm9yIHRhYnMsXG4gKiBvcHRpb25hbCBjZW50cmFsIEZBQiBidXR0b24sIGJhZGdlcywgYW5kIHJvdXRlLWJhc2VkIGFjdGl2ZSBzdGF0ZSBkZXRlY3Rpb24uXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYGh0bWxcbiAqIDx2YWwtYm90dG9tLW5hdlxuICogICBbcHJvcHNdPVwie1xuICogICAgIHRhYnM6IFtcbiAqICAgICAgIHsgdG9rZW46ICdob21lJywgaWNvbjogeyBkZWZhdWx0OiAnaG9tZS1vdXRsaW5lJywgYWN0aXZlOiAnaG9tZScgfSwgbGFiZWw6ICdIb21lJywgcm91dGU6ICcvYXBwL2hvbWUnIH0sXG4gKiAgICAgICB7IHRva2VuOiAnc2V0dGluZ3MnLCBpY29uOiB7IGRlZmF1bHQ6ICdzZXR0aW5ncy1vdXRsaW5lJywgYWN0aXZlOiAnc2V0dGluZ3MnIH0sIGxhYmVsOiAnU2V0dGluZ3MnLCByb3V0ZTogJy9hcHAvc2V0dGluZ3MnIH1cbiAqICAgICBdXG4gKiAgIH1cIlxuICogICAodGFiQ2xpY2spPVwib25UYWJDbGljaygkZXZlbnQpXCJcbiAqIC8+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIGkxOG4gYW5kIHRyYW5zbHVjZW50IHRoZW1lXG4gKiBgYGBodG1sXG4gKiA8dmFsLWJvdHRvbS1uYXZcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0YWJzOiBbXG4gKiAgICAgICB7IHRva2VuOiAnaG9tZScsIGljb246IHsgZGVmYXVsdDogJ2hvbWUtb3V0bGluZScgfSwgbGFiZWxLZXk6ICdtZW51SG9tZScsIHJvdXRlOiAnL2FwcC9ob21lJyB9LFxuICogICAgICAgeyB0b2tlbjogJ3NldHRpbmdzJywgaWNvbjogeyBkZWZhdWx0OiAnc2V0dGluZ3Mtb3V0bGluZScgfSwgbGFiZWxLZXk6ICdtZW51U2V0dGluZ3MnLCByb3V0ZTogJy9hcHAvc2V0dGluZ3MnIH1cbiAqICAgICBdLFxuICogICAgIGkxOG5OYW1lc3BhY2U6ICdNZW51JyxcbiAqICAgICB0aGVtZTogeyB0cmFuc2x1Y2VudDogdHJ1ZSB9XG4gKiAgIH1cIlxuICogLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtYm90dG9tLW5hdicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb24sIElvblJpcHBsZUVmZmVjdF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5hdlxuICAgICAgY2xhc3M9XCJib3R0b20tbmF2XCJcbiAgICAgIFtjbGFzcy5ib3R0b20tbmF2LS1lbGV2YXRlZF09XCJjb25maWcoKS50aGVtZS5lbGV2YXRlZFwiXG4gICAgICBbY2xhc3MuYm90dG9tLW5hdi0tdHJhbnNsdWNlbnRdPVwiY29uZmlnKCkudGhlbWUudHJhbnNsdWNlbnRcIlxuICAgICAgW2NsYXNzLmJvdHRvbS1uYXYtLWZsb2F0aW5nXT1cImNvbmZpZygpLnRoZW1lLmZsb2F0aW5nXCJcbiAgICAgIFtjbGFzcy5ib3R0b20tbmF2LS1zYWZlLWFyZWFdPVwiY29uZmlnKCkuc2FmZUFyZWFcIlxuICAgICAgW2NsYXNzLmJvdHRvbS1uYXYtLWhpZGUtbGFiZWxzXT1cImNvbmZpZygpLmhpZGVMYWJlbHNcIlxuICAgICAgW25nU3R5bGVdPVwiZ2V0VGhlbWVTdHlsZXMoKVwiXG4gICAgICByb2xlPVwibmF2aWdhdGlvblwiXG4gICAgICBhcmlhLWxhYmVsPVwiQm90dG9tIG5hdmlnYXRpb25cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tbmF2X19jb250YWluZXJcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBkaXNwbGF5VGFicygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICBAaWYgKGl0ZW0gPT09IG51bGwgJiYgY29uZmlnKCkuZmFiKSB7XG4gICAgICAgICAgICA8IS0tIEZBQiBCdXR0b24gLS0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYm90dG9tLW5hdl9fZmFiXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJvdHRvbS1uYXZfX2ZhYi0tc21hbGxdPVwiY29uZmlnKCkuZmFiIS5zaXplID09PSAnc21hbGwnXCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tZmFiLWNvbG9yXT1cInJlc29sdmVDb2xvcihjb25maWcoKS5mYWIhLmNvbG9yIHx8ICdwcmltYXJ5JylcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25GYWJDbGljaygpXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25maWcoKS5mYWIhLmFyaWFMYWJlbCB8fCAnQWN0aW9uIGJ1dHRvbidcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1yaXBwbGUtZWZmZWN0PjwvaW9uLXJpcHBsZS1lZmZlY3Q+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJjb25maWcoKS5mYWIhLmljb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfSBAZWxzZSBpZiAoaXRlbSkge1xuICAgICAgICAgICAgPCEtLSBUYWIgSXRlbSAtLT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJib3R0b20tbmF2X190YWJcIlxuICAgICAgICAgICAgICBbY2xhc3MuYm90dG9tLW5hdl9fdGFiLS1hY3RpdmVdPVwiaXNBY3RpdmUoaXRlbSlcIlxuICAgICAgICAgICAgICBbY2xhc3MuYm90dG9tLW5hdl9fdGFiLS1kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hbmltYXRpb25dPVwiY29uZmlnKCkuYW5pbWF0aW9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVGFiQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsIHx8IGdldExhYmVsKGl0ZW0pXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImlzQWN0aXZlKGl0ZW0pID8gJ3BhZ2UnIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24tcmlwcGxlLWVmZmVjdD48L2lvbi1yaXBwbGUtZWZmZWN0PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tbmF2X190YWItaWNvblwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJnZXRJY29uKGl0ZW0pXCI+PC9pb24taWNvbj5cblxuICAgICAgICAgICAgICAgIDwhLS0gQmFkZ2UgLS0+XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtLmJhZGdlKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvdHRvbS1uYXZfX2JhZGdlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmJvdHRvbS1uYXZfX2JhZGdlLS1kb3RdPVwiaXRlbS5iYWRnZS5kb3RcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaXRlbS5iYWRnZS5jb2xvciA/IHJlc29sdmVDb2xvcihpdGVtLmJhZGdlLmNvbG9yKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLmJhZGdlLmJhY2tncm91bmRDb2xvciA/IHJlc29sdmVDb2xvcihpdGVtLmJhZGdlLmJhY2tncm91bmRDb2xvcikgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWl0ZW0uYmFkZ2UuZG90ICYmIGl0ZW0uYmFkZ2UudGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uYmFkZ2UudGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICBAaWYgKCFjb25maWcoKS5oaWRlTGFiZWxzICYmIGdldExhYmVsKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib3R0b20tbmF2X190YWItbGFiZWxcIj57eyBnZXRMYWJlbChpdGVtKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L25hdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vYm90dG9tLW5hdi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBCb3R0b21OYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgbmF2aWdhdGlvbiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcm91dGVyU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKiBDb21wb25lbnQgY29uZmlndXJhdGlvbiAqL1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0PEJvdHRvbU5hdk1ldGFkYXRhPih7IHRhYnM6IFtdIH0pO1xuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYSB0YWIgaXMgY2xpY2tlZCAqL1xuICBAT3V0cHV0KCkgdGFiQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEJvdHRvbU5hdkNsaWNrRXZlbnQ+KCk7XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgRkFCIGJ1dHRvbiBpcyBjbGlja2VkICovXG4gIEBPdXRwdXQoKSBmYWJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogQ3VycmVudCBhY3RpdmUgcm91dGUgc2lnbmFsIGZvciByZWFjdGl2ZSB1cGRhdGVzICovXG4gIHByaXZhdGUgY3VycmVudFJvdXRlID0gc2lnbmFsPHN0cmluZz4oJycpO1xuXG4gIC8qKiBNZXJnZWQgY29uZmlndXJhdGlvbiB3aXRoIGRlZmF1bHRzICovXG4gIGNvbmZpZyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgLi4uQk9UVE9NX05BVl9ERUZBVUxUUyxcbiAgICAuLi50aGlzLnByb3BzKCksXG4gICAgdGhlbWU6IHtcbiAgICAgIC4uLkJPVFRPTV9OQVZfREVGQVVMVFMudGhlbWUsXG4gICAgICAuLi50aGlzLnByb3BzKCkudGhlbWUsXG4gICAgfSxcbiAgfSkpO1xuXG4gIC8qKiBDb21wdXRlZCB0YWJzIHdpdGggRkFCIGluc2VydGVkIGlmIHByZXNlbnQgKi9cbiAgZGlzcGxheVRhYnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdGFicyA9IHRoaXMuY29uZmlnKCkudGFicztcbiAgICBjb25zdCBmYWIgPSB0aGlzLmNvbmZpZygpLmZhYjtcblxuICAgIGlmICghZmFiKSByZXR1cm4gdGFicztcblxuICAgIC8vIEluc2VydCBwbGFjZWhvbGRlciBhdCBjZW50ZXIgZm9yIEZBQiBwb3NpdGlvbmluZ1xuICAgIGNvbnN0IG1pZHBvaW50ID0gTWF0aC5mbG9vcih0YWJzLmxlbmd0aCAvIDIpO1xuICAgIHJldHVybiBbXG4gICAgICAuLi50YWJzLnNsaWNlKDAsIG1pZHBvaW50KSxcbiAgICAgIG51bGwgYXMgdW5rbm93biBhcyBCb3R0b21OYXZUYWIsIC8vIEZBQiBwbGFjZWhvbGRlclxuICAgICAgLi4udGFicy5zbGljZShtaWRwb2ludCksXG4gICAgXTtcbiAgfSk7XG5cbiAgLyoqIENoZWNrIGlmIGEgdGFiIGlzIGN1cnJlbnRseSBhY3RpdmUgKi9cbiAgaXNBY3RpdmUodGFiOiBCb3R0b21OYXZUYWIpOiBib29sZWFuIHtcbiAgICBjb25zdCByb3V0ZSA9IHRoaXMuY3VycmVudFJvdXRlKCk7XG4gICAgaWYgKCFyb3V0ZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgbWFpbiByb3V0ZVxuICAgIGNvbnN0IHRhYlJvdXRlID0gQXJyYXkuaXNBcnJheSh0YWIucm91dGUpID8gdGFiLnJvdXRlLmpvaW4oJy8nKSA6IHRhYi5yb3V0ZTtcbiAgICBpZiAocm91dGUuc3RhcnRzV2l0aCh0YWJSb3V0ZSkpIHJldHVybiB0cnVlO1xuXG4gICAgLy8gQ2hlY2sgYWRkaXRpb25hbCBhY3RpdmUgcm91dGVzXG4gICAgaWYgKHRhYi5hY3RpdmVSb3V0ZXMpIHtcbiAgICAgIHJldHVybiB0YWIuYWN0aXZlUm91dGVzLnNvbWUociA9PiByb3V0ZS5zdGFydHNXaXRoKHIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogR2V0IHRoZSBhcHByb3ByaWF0ZSBpY29uIGZvciBhIHRhYiBiYXNlZCBvbiBhY3RpdmUgc3RhdGUgKi9cbiAgZ2V0SWNvbih0YWI6IEJvdHRvbU5hdlRhYik6IHN0cmluZyB7XG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5pc0FjdGl2ZSh0YWIpO1xuICAgIGlmIChhY3RpdmUgJiYgdGFiLmljb24uYWN0aXZlKSB7XG4gICAgICByZXR1cm4gdGFiLmljb24uYWN0aXZlO1xuICAgIH1cbiAgICByZXR1cm4gdGFiLmljb24uZGVmYXVsdDtcbiAgfVxuXG4gIC8qKiBHZXQgdHJhbnNsYXRlZCBsYWJlbCBmb3IgYSB0YWIgKi9cbiAgZ2V0TGFiZWwodGFiOiBCb3R0b21OYXZUYWIpOiBzdHJpbmcge1xuICAgIGlmICh0YWIubGFiZWwpIHJldHVybiB0YWIubGFiZWw7XG4gICAgaWYgKHRhYi5sYWJlbEtleSkge1xuICAgICAgdGhpcy5pMThuLmxhbmcoKTsgLy8gVHJhY2sgbGFuZ3VhZ2UgY2hhbmdlcyBmb3IgcmVhY3Rpdml0eVxuICAgICAgcmV0dXJuIHRoaXMuaTE4bi50KHRhYi5sYWJlbEtleSwgdGhpcy5jb25maWcoKS5pMThuTmFtZXNwYWNlKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLyoqIEdldCBDU1MgdmFyaWFibGVzIGZvciB0aGVtaW5nICovXG4gIGdldFRoZW1lU3R5bGVzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IHRoZW1lID0gdGhpcy5jb25maWcoKS50aGVtZTtcbiAgICByZXR1cm4ge1xuICAgICAgJy0tYm90dG9tLW5hdi1iZyc6IHRoZW1lLmJhY2tncm91bmQgfHwgJycsXG4gICAgICAnLS1ib3R0b20tbmF2LWFjdGl2ZSc6IHRoaXMucmVzb2x2ZUNvbG9yKHRoZW1lLmFjdGl2ZUNvbG9yKSxcbiAgICAgICctLWJvdHRvbS1uYXYtaW5hY3RpdmUnOiB0aGlzLnJlc29sdmVDb2xvcih0aGVtZS5pbmFjdGl2ZUNvbG9yKSxcbiAgICAgICctLWJvdHRvbS1uYXYtcmFkaXVzJzogdGhlbWUuYm9yZGVyUmFkaXVzIHx8ICcnLFxuICAgICAgJy0tYm90dG9tLW5hdi1tYXgtd2lkdGgnOiB0aGlzLnJlc29sdmVNYXhXaWR0aCh0aGlzLmNvbmZpZygpLm1heFdpZHRoKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIFJlc29sdmUgbWF4V2lkdGggdG9rZW4gKHNtfG1kfGxnfHhsfGZ1bGwpIHRvIENTUyB2YXIgb3IgcmF3IHZhbHVlICovXG4gIHJlc29sdmVNYXhXaWR0aCh2Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgJ3NtJzpcbiAgICAgICAgcmV0dXJuICd2YXIoLS12YWwtY29udGFpbmVyLXNtLCA1NDBweCknO1xuICAgICAgY2FzZSAnbWQnOlxuICAgICAgICByZXR1cm4gJ3ZhcigtLXZhbC1jb250YWluZXItbWQsIDcyMHB4KSc7XG4gICAgICBjYXNlICdsZyc6XG4gICAgICAgIHJldHVybiAndmFyKC0tdmFsLWNvbnRhaW5lci1sZywgODgwcHgpJztcbiAgICAgIGNhc2UgJ3hsJzpcbiAgICAgICAgcmV0dXJuICd2YXIoLS12YWwtY29udGFpbmVyLXhsLCAxMTAwcHgpJztcbiAgICAgIGNhc2UgJ2Z1bGwnOlxuICAgICAgICByZXR1cm4gJ25vbmUnO1xuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICBjYXNlICcnOlxuICAgICAgICByZXR1cm4gJ3ZhcigtLXZhbC1jb250YWluZXItbWQsIDcyMHB4KSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBTZXQgaW5pdGlhbCByb3V0ZVxuICAgIHRoaXMuY3VycmVudFJvdXRlLnNldCh0aGlzLnJvdXRlci51cmwpO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHJvdXRlIGNoYW5nZXNcbiAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50Um91dGUuc2V0KChldmVudCBhcyBOYXZpZ2F0aW9uRW5kKS51cmxBZnRlclJlZGlyZWN0cyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqIEhhbmRsZSB0YWIgY2xpY2sgKi9cbiAgb25UYWJDbGljayh0YWI6IEJvdHRvbU5hdlRhYik6IHZvaWQge1xuICAgIGlmICh0YWIuZGlzYWJsZWQpIHJldHVybjtcblxuICAgIC8vIEVtaXQgZXZlbnRcbiAgICB0aGlzLnRhYkNsaWNrLmVtaXQoe1xuICAgICAgdG9rZW46IHRhYi50b2tlbixcbiAgICAgIGlzRmFiOiBmYWxzZSxcbiAgICAgIHJvdXRlOiB0YWIucm91dGUsXG4gICAgfSk7XG5cbiAgICAvLyBOYXZpZ2F0ZVxuICAgIGNvbnN0IHJvdXRlID0gQXJyYXkuaXNBcnJheSh0YWIucm91dGUpID8gdGFiLnJvdXRlIDogW3RhYi5yb3V0ZV07XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUocm91dGUpO1xuICB9XG5cbiAgLyoqIEhhbmRsZSBGQUIgY2xpY2sgKi9cbiAgb25GYWJDbGljaygpOiB2b2lkIHtcbiAgICBjb25zdCBmYWIgPSB0aGlzLmNvbmZpZygpLmZhYjtcbiAgICBpZiAoIWZhYikgcmV0dXJuO1xuXG4gICAgLy8gRW1pdCBldmVudFxuICAgIHRoaXMuZmFiQ2xpY2suZW1pdCgpO1xuXG4gICAgLy8gTmF2aWdhdGUgaWYgcm91dGUgaXMgZGVmaW5lZCBhbmQgbm90IGFuIGFjdGlvbi1vbmx5IGJ1dHRvblxuICAgIGlmIChmYWIucm91dGUgJiYgIWZhYi5pc0FjdGlvbikge1xuICAgICAgY29uc3Qgcm91dGUgPSBBcnJheS5pc0FycmF5KGZhYi5yb3V0ZSkgPyBmYWIucm91dGUgOiBbZmFiLnJvdXRlXTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmVzb2x2ZSBJb25pYyBjb2xvciBuYW1lIHRvIENTUyB2YXJpYWJsZSAqL1xuICByZXNvbHZlQ29sb3IoY29sb3I/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghY29sb3IpIHJldHVybiAnJztcbiAgICBjb25zdCBpb25pY0NvbG9ycyA9IFsncHJpbWFyeScsICdzZWNvbmRhcnknLCAndGVydGlhcnknLCAnc3VjY2VzcycsICd3YXJuaW5nJywgJ2RhbmdlcicsICdsaWdodCcsICdtZWRpdW0nLCAnZGFyayddO1xuICAgIGlmIChpb25pY0NvbG9ycy5pbmNsdWRlcyhjb2xvcikpIHtcbiAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7Y29sb3J9KWA7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbiAgfVxufVxuIl19