valtech-components 4.0.208 → 4.0.210

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.
Files changed (27) hide show
  1. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +3 -3
  2. package/esm2022/lib/components/templates/page-wrapper/page-wrapper.component.mjs +119 -68
  3. package/esm2022/lib/components/templates/page-wrapper/types.mjs +1 -1
  4. package/esm2022/lib/services/pdf/pdf.service.mjs +59 -0
  5. package/esm2022/lib/services/pdf/types.mjs +2 -0
  6. package/esm2022/lib/version.mjs +2 -2
  7. package/esm2022/public-api.mjs +3 -1
  8. package/fesm2022/valtech-components.mjs +175 -70
  9. package/fesm2022/valtech-components.mjs.map +1 -1
  10. package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +2 -2
  11. package/lib/components/molecules/cta-card/cta-card.component.d.ts +1 -1
  12. package/lib/components/molecules/features-list/features-list.component.d.ts +1 -1
  13. package/lib/components/molecules/load-more/load-more.component.d.ts +1 -1
  14. package/lib/components/molecules/metric-card/metric-card.component.d.ts +1 -1
  15. package/lib/components/organisms/account-view/account-view.component.d.ts +1 -1
  16. package/lib/components/organisms/article/article.component.d.ts +5 -5
  17. package/lib/components/organisms/auth-cta/auth-cta.component.d.ts +1 -1
  18. package/lib/components/organisms/landing-steps/landing-steps.component.d.ts +1 -1
  19. package/lib/components/organisms/organization-view/organization-view.component.d.ts +1 -1
  20. package/lib/components/templates/page-wrapper/page-wrapper.component.d.ts +3 -1
  21. package/lib/components/templates/page-wrapper/types.d.ts +17 -0
  22. package/lib/services/pdf/pdf.service.d.ts +27 -0
  23. package/lib/services/pdf/types.d.ts +31 -0
  24. package/lib/version.d.ts +1 -1
  25. package/package.json +1 -1
  26. package/public-api.d.ts +2 -0
  27. package/src/lib/services/firebase/firebase-messaging-sw.js +145 -0
@@ -1,7 +1,7 @@
1
- import { CommonModule } from '@angular/common';
1
+ import { CommonModule, NgTemplateOutlet } from '@angular/common';
2
2
  import { Component, computed, EventEmitter, inject, input, Output } from '@angular/core';
3
- import { NavigationEnd, Router, RouterOutlet } from '@angular/router';
4
- import { IonContent, IonRefresher, IonRefresherContent } from '@ionic/angular/standalone';
3
+ import { NavigationEnd, Router, RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';
4
+ import { IonContent, IonIcon, IonItem, IonLabel, IonList, IonRefresher, IonRefresherContent, } from '@ionic/angular/standalone';
5
5
  import { addIcons } from 'ionicons';
6
6
  import { chevronDownCircleOutline } from 'ionicons/icons';
7
7
  import { filter } from 'rxjs';
@@ -94,6 +94,8 @@ export class PageWrapperComponent {
94
94
  this.contentId = computed(() => this.props()?.contentId || 'page-wrapper');
95
95
  this.propsFooter = computed(() => this.props()?.footer);
96
96
  this.contentMaxWidth = computed(() => this.props()?.contentMaxWidth ?? 'fluid');
97
+ this.menuItems = computed(() => this.props()?.menuItems ?? []);
98
+ this.hasSideMenu = computed(() => this.menuItems().length > 0);
97
99
  this.background = computed(() => {
98
100
  if (this.theme.IsDark) {
99
101
  return 'var(--ion-background-color)';
@@ -162,87 +164,136 @@ export class PageWrapperComponent {
162
164
  }
163
165
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
164
166
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PageWrapperComponent, isStandalone: true, selector: "val-page-wrapper", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onHeaderClick: "onHeaderClick" }, ngImport: i0, template: `
165
- <div class="ion-page">
166
- <val-header [props]="headerProps()" (onClick)="onHeaderClickHandler($event)" />
167
- <ion-content
168
- [id]="contentId()"
169
- [fullscreen]="true"
170
- [ngStyle]="{
171
- '--background': background(),
172
- }"
173
- >
174
- <!-- Pull-to-refresh estándar del factory. Se renderiza sólo cuando la
175
- página activa registró un handler vía PageRefreshService.
176
- ion-refresher con slot="fixed" DEBE ser hijo directo de
177
- ion-content por eso va aquí crudo, no envuelto en val-refresher. -->
178
- @if (pageRefresh.hasHandler()) {
179
- <ion-refresher slot="fixed" (ionRefresh)="onPageRefresh($event)">
180
- <ion-refresher-content
181
- pullingIcon="chevron-down-circle-outline"
182
- refreshingSpinner="circular"
183
- ></ion-refresher-content>
184
- </ion-refresher>
185
- }
186
- <val-network-banner />
187
- <val-container [props]="{ size: contentMaxWidth() }">
188
- <main>
189
- <router-outlet></router-outlet>
190
- </main>
191
- </val-container>
192
- @if (propsFooter()) {
193
- <val-company-footer [props]="propsFooter()" />
194
- }
195
- </ion-content>
167
+ <div class="ion-page" [class.pw-has-menu]="hasSideMenu()">
168
+ @if (hasSideMenu()) {
169
+ <nav class="pw-sidenav" aria-label="Menú lateral">
170
+ <ion-list lines="none" class="pw-menu-list">
171
+ @for (item of menuItems(); track item.route) {
172
+ <ion-item
173
+ [routerLink]="item.route"
174
+ routerLinkActive="pw-menu-active"
175
+ [routerLinkActiveOptions]="{ exact: item.exact ?? false }"
176
+ lines="none"
177
+ >
178
+ @if (item.icon) {
179
+ <ion-icon [name]="item.icon" slot="start" />
180
+ }
181
+ <ion-label>{{ item.label }}</ion-label>
182
+ </ion-item>
183
+ }
184
+ </ion-list>
185
+ </nav>
186
+ }
187
+ <div class="pw-content">
188
+ <val-header [props]="headerProps()" (onClick)="onHeaderClickHandler($event)" />
189
+ <ion-content
190
+ [id]="contentId()"
191
+ [fullscreen]="true"
192
+ [ngStyle]="{
193
+ '--background': background(),
194
+ }"
195
+ >
196
+ <!-- Pull-to-refresh estándar del factory. Se renderiza sólo cuando la
197
+ página activa registró un handler vía PageRefreshService.
198
+ ion-refresher con slot="fixed" DEBE ser hijo directo de
199
+ ion-content — por eso va aquí crudo, no envuelto en val-refresher. -->
200
+ @if (pageRefresh.hasHandler()) {
201
+ <ion-refresher slot="fixed" (ionRefresh)="onPageRefresh($event)">
202
+ <ion-refresher-content
203
+ pullingIcon="chevron-down-circle-outline"
204
+ refreshingSpinner="circular"
205
+ ></ion-refresher-content>
206
+ </ion-refresher>
207
+ }
208
+ <val-network-banner />
209
+ <val-container [props]="{ size: contentMaxWidth() }">
210
+ <main>
211
+ <router-outlet></router-outlet>
212
+ </main>
213
+ </val-container>
214
+ @if (propsFooter()) {
215
+ <val-company-footer [props]="propsFooter()" />
216
+ }
217
+ </ion-content>
218
+ </div>
196
219
  </div>
197
- `, isInline: true, styles: ["main{min-height:60vh;padding-bottom:calc(var(--val-bottom-nav-height, 0px) + env(safe-area-inset-bottom,0px) + 16px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: HeaderComponent, selector: "val-header", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: CompanyFooterComponent, selector: "val-company-footer", inputs: ["props"] }, { kind: "component", type: ContainerComponent, selector: "val-container", inputs: ["props"] }, { kind: "component", type: IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "mode", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: NetworkBannerComponent, selector: "val-network-banner" }] }); }
220
+ `, isInline: true, styles: [".ion-page.pw-has-menu{flex-direction:row}.pw-sidenav{width:0;overflow:hidden;flex-shrink:0;border-right:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-background-color);transition:width .25s ease}@media (min-width: 768px){.pw-sidenav{width:220px}}.pw-content{display:flex;flex-direction:column;flex:1;min-width:0;position:relative}main{min-height:60vh;padding-bottom:calc(var(--val-bottom-nav-height, 0px) + env(safe-area-inset-bottom,0px) + 16px)}.pw-menu-list{padding-top:12px}.pw-menu-list ion-item{--border-radius: 10px;--padding-start: 12px;--padding-end: 12px;margin:2px 8px;font-size:.9375rem}.pw-menu-list ion-item.pw-menu-active{--background: rgba(var(--ion-color-primary-rgb, 0, 0, 0), .1);--color: var(--ion-color-primary);font-weight:600}.pw-menu-list ion-item.pw-menu-active ion-icon{color:var(--ion-color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: HeaderComponent, selector: "val-header", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: CompanyFooterComponent, selector: "val-company-footer", inputs: ["props"] }, { kind: "component", type: ContainerComponent, selector: "val-container", inputs: ["props"] }, { kind: "component", type: IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "mode", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: NetworkBannerComponent, selector: "val-network-banner" }] }); }
198
221
  }
199
222
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageWrapperComponent, decorators: [{
200
223
  type: Component,
201
224
  args: [{ selector: 'val-page-wrapper', standalone: true, imports: [
202
225
  CommonModule,
226
+ NgTemplateOutlet,
203
227
  HeaderComponent,
204
228
  CompanyFooterComponent,
205
229
  ContainerComponent,
206
230
  IonRefresher,
207
231
  IonRefresherContent,
208
232
  RouterOutlet,
233
+ RouterLink,
234
+ RouterLinkActive,
209
235
  IonContent,
236
+ IonList,
237
+ IonItem,
238
+ IonLabel,
239
+ IonIcon,
210
240
  NetworkBannerComponent,
211
241
  ], template: `
212
- <div class="ion-page">
213
- <val-header [props]="headerProps()" (onClick)="onHeaderClickHandler($event)" />
214
- <ion-content
215
- [id]="contentId()"
216
- [fullscreen]="true"
217
- [ngStyle]="{
218
- '--background': background(),
219
- }"
220
- >
221
- <!-- Pull-to-refresh estándar del factory. Se renderiza sólo cuando la
222
- página activa registró un handler vía PageRefreshService.
223
- ion-refresher con slot="fixed" DEBE ser hijo directo de
224
- ion-content por eso va aquí crudo, no envuelto en val-refresher. -->
225
- @if (pageRefresh.hasHandler()) {
226
- <ion-refresher slot="fixed" (ionRefresh)="onPageRefresh($event)">
227
- <ion-refresher-content
228
- pullingIcon="chevron-down-circle-outline"
229
- refreshingSpinner="circular"
230
- ></ion-refresher-content>
231
- </ion-refresher>
232
- }
233
- <val-network-banner />
234
- <val-container [props]="{ size: contentMaxWidth() }">
235
- <main>
236
- <router-outlet></router-outlet>
237
- </main>
238
- </val-container>
239
- @if (propsFooter()) {
240
- <val-company-footer [props]="propsFooter()" />
241
- }
242
- </ion-content>
242
+ <div class="ion-page" [class.pw-has-menu]="hasSideMenu()">
243
+ @if (hasSideMenu()) {
244
+ <nav class="pw-sidenav" aria-label="Menú lateral">
245
+ <ion-list lines="none" class="pw-menu-list">
246
+ @for (item of menuItems(); track item.route) {
247
+ <ion-item
248
+ [routerLink]="item.route"
249
+ routerLinkActive="pw-menu-active"
250
+ [routerLinkActiveOptions]="{ exact: item.exact ?? false }"
251
+ lines="none"
252
+ >
253
+ @if (item.icon) {
254
+ <ion-icon [name]="item.icon" slot="start" />
255
+ }
256
+ <ion-label>{{ item.label }}</ion-label>
257
+ </ion-item>
258
+ }
259
+ </ion-list>
260
+ </nav>
261
+ }
262
+ <div class="pw-content">
263
+ <val-header [props]="headerProps()" (onClick)="onHeaderClickHandler($event)" />
264
+ <ion-content
265
+ [id]="contentId()"
266
+ [fullscreen]="true"
267
+ [ngStyle]="{
268
+ '--background': background(),
269
+ }"
270
+ >
271
+ <!-- Pull-to-refresh estándar del factory. Se renderiza sólo cuando la
272
+ página activa registró un handler vía PageRefreshService.
273
+ ion-refresher con slot="fixed" DEBE ser hijo directo de
274
+ ion-content — por eso va aquí crudo, no envuelto en val-refresher. -->
275
+ @if (pageRefresh.hasHandler()) {
276
+ <ion-refresher slot="fixed" (ionRefresh)="onPageRefresh($event)">
277
+ <ion-refresher-content
278
+ pullingIcon="chevron-down-circle-outline"
279
+ refreshingSpinner="circular"
280
+ ></ion-refresher-content>
281
+ </ion-refresher>
282
+ }
283
+ <val-network-banner />
284
+ <val-container [props]="{ size: contentMaxWidth() }">
285
+ <main>
286
+ <router-outlet></router-outlet>
287
+ </main>
288
+ </val-container>
289
+ @if (propsFooter()) {
290
+ <val-company-footer [props]="propsFooter()" />
291
+ }
292
+ </ion-content>
293
+ </div>
243
294
  </div>
244
- `, styles: ["main{min-height:60vh;padding-bottom:calc(var(--val-bottom-nav-height, 0px) + env(safe-area-inset-bottom,0px) + 16px)}\n"] }]
295
+ `, styles: [".ion-page.pw-has-menu{flex-direction:row}.pw-sidenav{width:0;overflow:hidden;flex-shrink:0;border-right:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-background-color);transition:width .25s ease}@media (min-width: 768px){.pw-sidenav{width:220px}}.pw-content{display:flex;flex-direction:column;flex:1;min-width:0;position:relative}main{min-height:60vh;padding-bottom:calc(var(--val-bottom-nav-height, 0px) + env(safe-area-inset-bottom,0px) + 16px)}.pw-menu-list{padding-top:12px}.pw-menu-list ion-item{--border-radius: 10px;--padding-start: 12px;--padding-end: 12px;margin:2px 8px;font-size:.9375rem}.pw-menu-list ion-item.pw-menu-active{--background: rgba(var(--ion-color-primary-rgb, 0, 0, 0), .1);--color: var(--ion-color-primary);font-weight:600}.pw-menu-list ion-item.pw-menu-active ion-icon{color:var(--ion-color-primary)}\n"] }]
245
296
  }], propDecorators: { onHeaderClick: [{
246
297
  type: Output
247
298
  }] } });
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvcGFnZS13cmFwcGVyL3BhZ2Utd3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQWdDLE1BQU0sMkJBQTJCLENBQUM7QUFDeEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsTUFBTSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDakcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFP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Q0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0IsQ0FBQyxLQUFhO1FBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9CLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLENBQUM7UUFDMUMsSUFBSSxLQUFLLEtBQUssYUFBYSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDOytHQW5JVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiw2UEE1Q3JCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQ1QsZ01BM0NDLFlBQVksb0hBQ1osZUFBZSxnR0FDZixzQkFBc0Isa0ZBQ3RCLGtCQUFrQiw2RUFDbEIsWUFBWSxpS0FDWixtQkFBbUIsaUpBQ25CLFlBQVksMkpBQ1osVUFBVSx3S0FDVixzQkFBc0I7OzRGQThDYixvQkFBb0I7a0JBMURoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLHNCQUFzQjt3QkFDdEIsa0JBQWtCO3dCQUNsQixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixVQUFVO3dCQUNWLHNCQUFzQjtxQkFDdkIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUNUOzhCQTJDUyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBpbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uQ29udGVudCwgSW9uUmVmcmVzaGVyLCBJb25SZWZyZXNoZXJDb250ZW50LCBWaWV3V2lsbEVudGVyLCBWaWV3V2lsbExlYXZlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGNoZXZyb25Eb3duQ2lyY2xlT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IGZpbHRlciwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcGFueUZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9jb21wYW55LWZvb3Rlci9jb21wYW55LWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvY29udGFpbmVyL2NvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGFpbmVyU2l6ZSB9IGZyb20gJy4uLy4uL2F0b21zL2NvbnRhaW5lci90eXBlcyc7XG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBQYWdlUmVmcmVzaFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wYWdlLXJlZnJlc2gvcGFnZS1yZWZyZXNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnZVdyYXBwZXJNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgcmVzb2x2ZUNvbG9yIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0eWxlcyc7XG5pbXBvcnQgeyBOZXR3b3JrQmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL25ldHdvcmstYmFubmVyL25ldHdvcmstYmFubmVyLmNvbXBvbmVudCc7XG5cbi8vIEljb25vIGRlbCBpbmRpY2Fkb3IgZGUgcHVsbCAoaW9uLXJlZnJlc2hlci1jb250ZW50IHB1bGxpbmdJY29uKS5cbmFkZEljb25zKHsgY2hldnJvbkRvd25DaXJjbGVPdXRsaW5lIH0pO1xuXG4vKipcbiAqIHZhbC1wYWdlLXdyYXBwZXJcbiAqXG4gKiBBIGNvbXBsZXRlIHBhZ2Ugd3JhcHBlciB0ZW1wbGF0ZSB3aXRoIGhlYWRlciwgcm91dGVyIG91dGxldCwgZm9vdGVyLFxuICogYW5kIGF1dG9tYXRpYyBzY3JvbGwtdG8tdG9wIG9uIG5hdmlnYXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtcGFnZS13cmFwcGVyXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgaG9tZVJvdXRlOiAnLycsXG4gKiAgICAgc2Nyb2xsVG9Ub3BPbk5hdmlnYXRlOiB0cnVlLFxuICogICAgIGZvb3Rlcjoge1xuICogICAgICAgbGlua3M6IHsgLi4uIH0sXG4gKiAgICAgICByaWdodHM6IHsgY29tcGFueU5hbWU6ICdBY21lJyB9XG4gKiAgICAgfVxuICogICB9XCJcbiAqID48L3ZhbC1wYWdlLXdyYXBwZXI+XG4gKlxuICogQGlucHV0IHByb3BzIC0gUGFnZSB3cmFwcGVyIGNvbmZpZ3VyYXRpb25cbiAqIEBvdXRwdXQgb25IZWFkZXJDbGljayAtIEVtaXRzIHdoZW4gYSBoZWFkZXIgYWN0aW9uIGlzIGNsaWNrZWRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXBhZ2Utd3JhcHBlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSGVhZGVyQ29tcG9uZW50LFxuICAgIENvbXBhbnlGb290ZXJDb21wb25lbnQsXG4gICAgQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIElvblJlZnJlc2hlcixcbiAgICBJb25SZWZyZXNoZXJDb250ZW50LFxuICAgIFJvdXRlck91dGxldCxcbiAgICBJb25Db250ZW50LFxuICAgIE5ldHdvcmtCYW5uZXJDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImlvbi1wYWdlXCI+XG4gICAgICA8dmFsLWhlYWRlciBbcHJvcHNdPVwiaGVhZGVyUHJvcHMoKVwiIChvbkNsaWNrKT1cIm9uSGVhZGVyQ2xpY2tIYW5kbGVyKCRldmVudClcIiAvPlxuICAgICAgPGlvbi1jb250ZW50XG4gICAgICAgIFtpZF09XCJjb250ZW50SWQoKVwiXG4gICAgICAgIFtmdWxsc2NyZWVuXT1cInRydWVcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJy0tYmFja2dyb3VuZCc6IGJhY2tncm91bmQoKSxcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gUHVsbC10by1yZWZyZXNoIGVzdMOhbmRhciBkZWwgZmFjdG9yeS4gU2UgcmVuZGVyaXphIHPDs2xvIGN1YW5kbyBsYVxuICAgICAgICAgICAgIHDDoWdpbmEgYWN0aXZhIHJlZ2lzdHLDsyB1biBoYW5kbGVyIHbDrWEgUGFnZVJlZnJlc2hTZXJ2aWNlLlxuICAgICAgICAgICAgIGlvbi1yZWZyZXNoZXIgY29uIHNsb3Q9XCJmaXhlZFwiIERFQkUgc2VyIGhpam8gZGlyZWN0byBkZVxuICAgICAgICAgICAgIGlvbi1jb250ZW50IOKAlCBwb3IgZXNvIHZhIGFxdcOtIGNydWRvLCBubyBlbnZ1ZWx0byBlbiB2YWwtcmVmcmVzaGVyLiAtLT5cbiAgICAgICAgQGlmIChwYWdlUmVmcmVzaC5oYXNIYW5kbGVyKCkpIHtcbiAgICAgICAgICA8aW9uLXJlZnJlc2hlciBzbG90PVwiZml4ZWRcIiAoaW9uUmVmcmVzaCk9XCJvblBhZ2VSZWZyZXNoKCRldmVudClcIj5cbiAgICAgICAgICAgIDxpb24tcmVmcmVzaGVyLWNvbnRlbnRcbiAgICAgICAgICAgICAgcHVsbGluZ0ljb249XCJjaGV2cm9uLWRvd24tY2lyY2xlLW91dGxpbmVcIlxuICAgICAgICAgICAgICByZWZyZXNoaW5nU3Bpbm5lcj1cImNpcmN1bGFyXCJcbiAgICAgICAgICAgID48L2lvbi1yZWZyZXNoZXItY29udGVudD5cbiAgICAgICAgICA8L2lvbi1yZWZyZXNoZXI+XG4gICAgICAgIH1cbiAgICAgICAgPHZhbC1uZXR3b3JrLWJhbm5lciAvPlxuICAgICAgICA8dmFsLWNvbnRhaW5lciBbcHJvcHNdPVwieyBzaXplOiBjb250ZW50TWF4V2lkdGgoKSB9XCI+XG4gICAgICAgICAgPG1haW4+XG4gICAgICAgICAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XG4gICAgICAgICAgPC9tYWluPlxuICAgICAgICA8L3ZhbC1jb250YWluZXI+XG4gICAgICAgIEBpZiAocHJvcHNGb290ZXIoKSkge1xuICAgICAgICAgIDx2YWwtY29tcGFueS1mb290ZXIgW3Byb3BzXT1cInByb3BzRm9vdGVyKClcIiAvPlxuICAgICAgICB9XG4gICAgICA8L2lvbi1jb250ZW50PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IGBcbiAgICBtYWluIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDYwdmg7XG4gICAgICAvKiBSZXNlcnZhIGVzcGFjaW8gcGFyYSBlbCBib3R0b20tbmF2IGZsb2F0aW5nICsgc2FmZS1hcmVhIChpT1MgaG9tZSBpbmRpY2F0b3IpXG4gICAgICAgICArIGJyZWF0aGluZyByb29tICgxNnB4KS4gU2luIGVzdG8sIGVsIMO6bHRpbW8gZWxlbWVudG8gcXVlZGEgdGFwYWRvIHBvclxuICAgICAgICAgZWwgbmF2IGVuIG1vYmlsZS9QV0EuICovXG4gICAgICBwYWRkaW5nLWJvdHRvbTogY2FsYyh2YXIoLS12YWwtYm90dG9tLW5hdi1oZWlnaHQsIDBweCkgKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KSArIDE2cHgpO1xuICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVdyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBWaWV3V2lsbEVudGVyLCBWaWV3V2lsbExlYXZlLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgdGhlbWUgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJvdXRlclN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAvKiogQnVzIGRlbCBwdWxsLXRvLXJlZnJlc2gg4oCUIGxhIHDDoWdpbmEgYWN0aXZhIHJlZ2lzdHJhIHN1IGhhbmRsZXIgYXF1w60uICovXG4gIHByb3RlY3RlZCBwYWdlUmVmcmVzaCA9IGluamVjdChQYWdlUmVmcmVzaFNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVyIGRlbCBnZXN0byBwdWxsLXRvLXJlZnJlc2ggKGBpb24tcmVmcmVzaGVyYCBpb25SZWZyZXNoKS4gRGVsZWdhIGVuXG4gICAqIGVsIGhhbmRsZXIgcXVlIHJlZ2lzdHLDsyBsYSBww6FnaW5hIGFjdGl2YSB5IGNpZXJyYSBlbCBzcGlubmVyIGFsIHRlcm1pbmFyLlxuICAgKi9cbiAgYXN5bmMgb25QYWdlUmVmcmVzaChldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5wYWdlUmVmcmVzaC5ydW4oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MSW9uUmVmcmVzaGVyRWxlbWVudCB8IG51bGwpPy5jb21wbGV0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQYWdlIHdyYXBwZXIgY29uZmlndXJhdGlvbi5cbiAgICogU2lnbmFsLWJhc2VkIGlucHV0IGZvciBmdWxsIHJlYWN0aXZpdHkgd2l0aCBjb21wdXRlZCgpLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvcHMgPSBpbnB1dDxQYWdlV3JhcHBlck1ldGFkYXRhPih7XG4gICAgc2Nyb2xsVG9Ub3BPbk5hdmlnYXRlOiB0cnVlLFxuICB9KTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBhIGhlYWRlciBhY3Rpb24gaXMgY2xpY2tlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBvbkhlYWRlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgaGVhZGVyIGNvbmZpZ3VyYXRpb24gKGNhY2hlZCB0byBhdm9pZCBpbmZpbml0ZSBjaGFuZ2UgZGV0ZWN0aW9uKS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEhlYWRlciA9IHtcbiAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICB0b29sYmFyOiB7XG4gICAgICB3aXRoQmFjazogZmFsc2UsXG4gICAgICB3aXRoQWN0aW9uczogdHJ1ZSxcbiAgICAgIHRleHRDb2xvcjogJ2RhcmsnIGFzIGNvbnN0LFxuICAgICAgd2l0aE1lbnU6IHRydWUsXG4gICAgICB0aXRsZTogJycsXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0b2tlbjogJ2hlYWRlci1sb2dvJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgcG9zaXRpb246ICdsZWZ0JyBhcyBjb25zdCxcbiAgICAgICAgICB0eXBlOiAnSU1BR0UnIGFzIGNvbnN0LFxuICAgICAgICAgIGltYWdlOiB7XG4gICAgICAgICAgICB3aWR0aDogMTAsXG4gICAgICAgICAgICBzcmM6ICctLW1haW4tbG9nbycsXG4gICAgICAgICAgICBhbHQ6ICdoZWFkZXIgbG9nbycsXG4gICAgICAgICAgICBtb2RlOiAnYm94JyBhcyBjb25zdCxcbiAgICAgICAgICAgIHNoYWRlZDogZmFsc2UsXG4gICAgICAgICAgICBib3JkZXJlZDogZmFsc2UsXG4gICAgICAgICAgICBzaXplOiAnc21hbGwnIGFzIGNvbnN0LFxuICAgICAgICAgICAgbGltaXRlZDogZmFsc2UsXG4gICAgICAgICAgICBmbGV4OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIH07XG5cbiAgLy8gQ29tcHV0ZWQgaGVscGVycyBmb3IgdGVtcGxhdGUgYmluZGluZ3NcbiAgaGVhZGVyUHJvcHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCk/LmhlYWRlciB8fCB0aGlzLmRlZmF1bHRIZWFkZXIpO1xuICBjb250ZW50SWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCk/LmNvbnRlbnRJZCB8fCAncGFnZS13cmFwcGVyJyk7XG4gIHByb3BzRm9vdGVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpPy5mb290ZXIpO1xuICBjb250ZW50TWF4V2lkdGggPSBjb21wdXRlZDxDb250YWluZXJTaXplPigoKSA9PiB0aGlzLnByb3BzKCk/LmNvbnRlbnRNYXhXaWR0aCA/PyAnZmx1aWQnKTtcbiAgYmFja2dyb3VuZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy50aGVtZS5Jc0RhcmspIHtcbiAgICAgIHJldHVybiAndmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpJztcbiAgICB9XG4gICAgY29uc3QgYmcgPSB0aGlzLnByb3BzKCk/LmJhY2tncm91bmQ7XG4gICAgaWYgKCFiZykge1xuICAgICAgcmV0dXJuICd2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciknO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZUNvbG9yKGJnKTtcbiAgfSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMoKT8uc2Nyb2xsVG9Ub3BPbk5hdmlnYXRlICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm91dGVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGlvblZpZXdXaWxsTGVhdmUoKTogdm9pZCB7XG4gICAgLy8gT3B0aW9uYWw6IGNhbiBhZGQgbG9naWMgb24gdmlldyBsZWF2ZVxuICB9XG5cbiAgaW9uVmlld1dpbGxFbnRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gIH1cblxuICAvKipcbiAgICogU2Nyb2xscyB0aGUgY29udGVudCB0byB0aGUgdG9wLlxuICAgKi9cbiAgcHJpdmF0ZSBzY3JvbGxUb1RvcCgpOiB2b2lkIHtcbiAgICBjb25zdCBpZCA9IHRoaXMucHJvcHMoKT8uY29udGVudElkIHx8ICdwYWdlLXdyYXBwZXInO1xuICAgIGNvbnN0IGlvbkNvbnRlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtpZH1gKSBhcyBhbnk7XG4gICAgaWYgKGlvbkNvbnRlbnQgJiYgaW9uQ29udGVudC5zY3JvbGxUb1RvcCkge1xuICAgICAgaW9uQ29udGVudC5zY3JvbGxUb1RvcCgzMDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBoZWFkZXIgYWN0aW9uIGNsaWNrcy5cbiAgICovXG4gIG9uSGVhZGVyQ2xpY2tIYW5kbGVyKHRva2VuOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9uSGVhZGVyQ2xpY2suZW1pdCh0b2tlbik7XG5cbiAgICBjb25zdCBob21lUm91dGUgPSB0aGlzLnByb3BzKCk/LmhvbWVSb3V0ZTtcbiAgICBpZiAodG9rZW4gPT09ICdoZWFkZXItbG9nbycgJiYgaG9tZVJvdXRlKSB7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKGhvbWVSb3V0ZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvcGFnZS13cmFwcGVyL3BhZ2Utd3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BHLE9BQU8sRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsT0FBTyxFQUNQLFlBQVksRUFDWixtQkFBbUIsR0FHcEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixF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QWdCO3dCQUNoQixlQUFlO3dCQUNmLHNCQUFzQjt3QkFDdEIsa0JBQWtCO3dCQUNsQixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsVUFBVTt3QkFDVixPQUFPO3dCQUNQLE9BQU87d0JBQ1AsUUFBUTt3QkFDUixPQUFPO3dCQUNQLHNCQUFzQjtxQkFDdkIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0RUOzhCQThGUyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBpbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgSW9uQ29udGVudCxcbiAgSW9uSWNvbixcbiAgSW9uSXRlbSxcbiAgSW9uTGFiZWwsXG4gIElvbkxpc3QsXG4gIElvblJlZnJlc2hlcixcbiAgSW9uUmVmcmVzaGVyQ29udGVudCxcbiAgVmlld1dpbGxFbnRlcixcbiAgVmlld1dpbGxMZWF2ZSxcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGNoZXZyb25Eb3duQ2lyY2xlT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IGZpbHRlciwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcGFueUZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9jb21wYW55LWZvb3Rlci9jb21wYW55LWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvY29udGFpbmVyL2NvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGFpbmVyU2l6ZSB9IGZyb20gJy4uLy4uL2F0b21zL2NvbnRhaW5lci90eXBlcyc7XG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBQYWdlUmVmcmVzaFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wYWdlLXJlZnJlc2gvcGFnZS1yZWZyZXNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnZVdyYXBwZXJNZXRhZGF0YSwgU2lkZU5hdkl0ZW0gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHJlc29sdmVDb2xvciB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9zdHlsZXMnO1xuaW1wb3J0IHsgTmV0d29ya0Jhbm5lckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9uZXR3b3JrLWJhbm5lci9uZXR3b3JrLWJhbm5lci5jb21wb25lbnQnO1xuXG4vLyBJY29ubyBkZWwgaW5kaWNhZG9yIGRlIHB1bGwgKGlvbi1yZWZyZXNoZXItY29udGVudCBwdWxsaW5nSWNvbikuXG5hZGRJY29ucyh7IGNoZXZyb25Eb3duQ2lyY2xlT3V0bGluZSB9KTtcblxuLyoqXG4gKiB2YWwtcGFnZS13cmFwcGVyXG4gKlxuICogQSBjb21wbGV0ZSBwYWdlIHdyYXBwZXIgdGVtcGxhdGUgd2l0aCBoZWFkZXIsIHJvdXRlciBvdXRsZXQsIGZvb3RlcixcbiAqIGFuZCBhdXRvbWF0aWMgc2Nyb2xsLXRvLXRvcCBvbiBuYXZpZ2F0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXBhZ2Utd3JhcHBlclxuICogICBbcHJvcHNdPVwie1xuICogICAgIGhvbWVSb3V0ZTogJy8nLFxuICogICAgIHNjcm9sbFRvVG9wT25OYXZpZ2F0ZTogdHJ1ZSxcbiAqICAgICBmb290ZXI6IHtcbiAqICAgICAgIGxpbmtzOiB7IC4uLiB9LFxuICogICAgICAgcmlnaHRzOiB7IGNvbXBhbnlOYW1lOiAnQWNtZScgfVxuICogICAgIH1cbiAqICAgfVwiXG4gKiA+PC92YWwtcGFnZS13cmFwcGVyPlxuICpcbiAqIEBpbnB1dCBwcm9wcyAtIFBhZ2Ugd3JhcHBlciBjb25maWd1cmF0aW9uXG4gKiBAb3V0cHV0IG9uSGVhZGVyQ2xpY2sgLSBFbWl0cyB3aGVuIGEgaGVhZGVyIGFjdGlvbiBpcyBjbGlja2VkXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1wYWdlLXdyYXBwZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgSGVhZGVyQ29tcG9uZW50LFxuICAgIENvbXBhbnlGb290ZXJDb21wb25lbnQsXG4gICAgQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIElvblJlZnJlc2hlcixcbiAgICBJb25SZWZyZXNoZXJDb250ZW50LFxuICAgIFJvdXRlck91dGxldCxcbiAgICBSb3V0ZXJMaW5rLFxuICAgIFJvdXRlckxpbmtBY3RpdmUsXG4gICAgSW9uQ29udGVudCxcbiAgICBJb25MaXN0LFxuICAgIElvbkl0ZW0sXG4gICAgSW9uTGFiZWwsXG4gICAgSW9uSWNvbixcbiAgICBOZXR3b3JrQmFubmVyQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJpb24tcGFnZVwiIFtjbGFzcy5wdy1oYXMtbWVudV09XCJoYXNTaWRlTWVudSgpXCI+XG4gICAgICBAaWYgKGhhc1NpZGVNZW51KCkpIHtcbiAgICAgICAgPG5hdiBjbGFzcz1cInB3LXNpZGVuYXZcIiBhcmlhLWxhYmVsPVwiTWVuw7ogbGF0ZXJhbFwiPlxuICAgICAgICAgIDxpb24tbGlzdCBsaW5lcz1cIm5vbmVcIiBjbGFzcz1cInB3LW1lbnUtbGlzdFwiPlxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBtZW51SXRlbXMoKTsgdHJhY2sgaXRlbS5yb3V0ZSkge1xuICAgICAgICAgICAgICA8aW9uLWl0ZW1cbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlXCJcbiAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicHctbWVudS1hY3RpdmVcIlxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7IGV4YWN0OiBpdGVtLmV4YWN0ID8/IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAgIGxpbmVzPVwibm9uZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cIml0ZW0uaWNvblwiIHNsb3Q9XCJzdGFydFwiIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgaXRlbS5sYWJlbCB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvaW9uLWxpc3Q+XG4gICAgICAgIDwvbmF2PlxuICAgICAgfVxuICAgICAgPGRpdiBjbGFzcz1cInB3LWNvbnRlbnRcIj5cbiAgICAgICAgPHZhbC1oZWFkZXIgW3Byb3BzXT1cImhlYWRlclByb3BzKClcIiAob25DbGljayk9XCJvbkhlYWRlckNsaWNrSGFuZGxlcigkZXZlbnQpXCIgLz5cbiAgICAgICAgPGlvbi1jb250ZW50XG4gICAgICAgICAgW2lkXT1cImNvbnRlbnRJZCgpXCJcbiAgICAgICAgICBbZnVsbHNjcmVlbl09XCJ0cnVlXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAnLS1iYWNrZ3JvdW5kJzogYmFja2dyb3VuZCgpLFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPCEtLSBQdWxsLXRvLXJlZnJlc2ggZXN0w6FuZGFyIGRlbCBmYWN0b3J5LiBTZSByZW5kZXJpemEgc8OzbG8gY3VhbmRvIGxhXG4gICAgICAgICAgICAgICBww6FnaW5hIGFjdGl2YSByZWdpc3Ryw7MgdW4gaGFuZGxlciB2w61hIFBhZ2VSZWZyZXNoU2VydmljZS5cbiAgICAgICAgICAgICAgIGlvbi1yZWZyZXNoZXIgY29uIHNsb3Q9XCJmaXhlZFwiIERFQkUgc2VyIGhpam8gZGlyZWN0byBkZVxuICAgICAgICAgICAgICAgaW9uLWNvbnRlbnQg4oCUIHBvciBlc28gdmEgYXF1w60gY3J1ZG8sIG5vIGVudnVlbHRvIGVuIHZhbC1yZWZyZXNoZXIuIC0tPlxuICAgICAgICAgIEBpZiAocGFnZVJlZnJlc2guaGFzSGFuZGxlcigpKSB7XG4gICAgICAgICAgICA8aW9uLXJlZnJlc2hlciBzbG90PVwiZml4ZWRcIiAoaW9uUmVmcmVzaCk9XCJvblBhZ2VSZWZyZXNoKCRldmVudClcIj5cbiAgICAgICAgICAgICAgPGlvbi1yZWZyZXNoZXItY29udGVudFxuICAgICAgICAgICAgICAgIHB1bGxpbmdJY29uPVwiY2hldnJvbi1kb3duLWNpcmNsZS1vdXRsaW5lXCJcbiAgICAgICAgICAgICAgICByZWZyZXNoaW5nU3Bpbm5lcj1cImNpcmN1bGFyXCJcbiAgICAgICAgICAgICAgPjwvaW9uLXJlZnJlc2hlci1jb250ZW50PlxuICAgICAgICAgICAgPC9pb24tcmVmcmVzaGVyPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8dmFsLW5ldHdvcmstYmFubmVyIC8+XG4gICAgICAgICAgPHZhbC1jb250YWluZXIgW3Byb3BzXT1cInsgc2l6ZTogY29udGVudE1heFdpZHRoKCkgfVwiPlxuICAgICAgICAgICAgPG1haW4+XG4gICAgICAgICAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICAgICAgICAgIDwvbWFpbj5cbiAgICAgICAgICA8L3ZhbC1jb250YWluZXI+XG4gICAgICAgICAgQGlmIChwcm9wc0Zvb3RlcigpKSB7XG4gICAgICAgICAgICA8dmFsLWNvbXBhbnktZm9vdGVyIFtwcm9wc109XCJwcm9wc0Zvb3RlcigpXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgLyogTGF5b3V0IGNvbiBzaWRlbWVudTogaW9uLXBhZ2UgZW4gcm93LCBzaWRlYmFyIGZpam8gKyBjb250ZW50IGFyZWEgZmxleGlibGUgKi9cbiAgICAuaW9uLXBhZ2UucHctaGFzLW1lbnUge1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG5cbiAgICAucHctc2lkZW5hdiB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvcik7XG4gICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjI1cyBlYXNlO1xuICAgIH1cblxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgLnB3LXNpZGVuYXYge1xuICAgICAgICB3aWR0aDogMjIwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyogQ29udGVudCBhcmVhOiBmbGV4LWNvbHVtbiwgb2N1cGEgZWwgZXNwYWNpbyByZXN0YW50ZSAqL1xuICAgIC5wdy1jb250ZW50IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgZmxleDogMTtcbiAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG5cbiAgICBtYWluIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDYwdmg7XG4gICAgICAvKiBSZXNlcnZhIGVzcGFjaW8gcGFyYSBlbCBib3R0b20tbmF2IGZsb2F0aW5nICsgc2FmZS1hcmVhIChpT1MgaG9tZSBpbmRpY2F0b3IpXG4gICAgICAgICArIGJyZWF0aGluZyByb29tICgxNnB4KS4gU2luIGVzdG8sIGVsIMO6bHRpbW8gZWxlbWVudG8gcXVlZGEgdGFwYWRvIHBvclxuICAgICAgICAgZWwgbmF2IGVuIG1vYmlsZS9QV0EuICovXG4gICAgICBwYWRkaW5nLWJvdHRvbTogY2FsYyh2YXIoLS12YWwtYm90dG9tLW5hdi1oZWlnaHQsIDBweCkgKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KSArIDE2cHgpO1xuICAgIH1cblxuICAgIC5wdy1tZW51LWxpc3Qge1xuICAgICAgcGFkZGluZy10b3A6IDEycHg7XG4gICAgfVxuXG4gICAgLnB3LW1lbnUtbGlzdCBpb24taXRlbSB7XG4gICAgICAtLWJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAtLXBhZGRpbmctc3RhcnQ6IDEycHg7XG4gICAgICAtLXBhZGRpbmctZW5kOiAxMnB4O1xuICAgICAgbWFyZ2luOiAycHggOHB4O1xuICAgICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gICAgfVxuXG4gICAgLnB3LW1lbnUtbGlzdCBpb24taXRlbS5wdy1tZW51LWFjdGl2ZSB7XG4gICAgICAtLWJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAwLCAwLCAwKSwgMC4xKTtcbiAgICAgIC0tY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxuXG4gICAgLnB3LW1lbnUtbGlzdCBpb24taXRlbS5wdy1tZW51LWFjdGl2ZSBpb24taWNvbiB7XG4gICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVdyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBWaWV3V2lsbEVudGVyLCBWaWV3V2lsbExlYXZlLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgdGhlbWUgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJvdXRlclN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAvKiogQnVzIGRlbCBwdWxsLXRvLXJlZnJlc2gg4oCUIGxhIHDDoWdpbmEgYWN0aXZhIHJlZ2lzdHJhIHN1IGhhbmRsZXIgYXF1w60uICovXG4gIHByb3RlY3RlZCBwYWdlUmVmcmVzaCA9IGluamVjdChQYWdlUmVmcmVzaFNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVyIGRlbCBnZXN0byBwdWxsLXRvLXJlZnJlc2ggKGBpb24tcmVmcmVzaGVyYCBpb25SZWZyZXNoKS4gRGVsZWdhIGVuXG4gICAqIGVsIGhhbmRsZXIgcXVlIHJlZ2lzdHLDsyBsYSBww6FnaW5hIGFjdGl2YSB5IGNpZXJyYSBlbCBzcGlubmVyIGFsIHRlcm1pbmFyLlxuICAgKi9cbiAgYXN5bmMgb25QYWdlUmVmcmVzaChldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5wYWdlUmVmcmVzaC5ydW4oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MSW9uUmVmcmVzaGVyRWxlbWVudCB8IG51bGwpPy5jb21wbGV0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQYWdlIHdyYXBwZXIgY29uZmlndXJhdGlvbi5cbiAgICogU2lnbmFsLWJhc2VkIGlucHV0IGZvciBmdWxsIHJlYWN0aXZpdHkgd2l0aCBjb21wdXRlZCgpLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvcHMgPSBpbnB1dDxQYWdlV3JhcHBlck1ldGFkYXRhPih7XG4gICAgc2Nyb2xsVG9Ub3BPbk5hdmlnYXRlOiB0cnVlLFxuICB9KTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBhIGhlYWRlciBhY3Rpb24gaXMgY2xpY2tlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBvbkhlYWRlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgaGVhZGVyIGNvbmZpZ3VyYXRpb24gKGNhY2hlZCB0byBhdm9pZCBpbmZpbml0ZSBjaGFuZ2UgZGV0ZWN0aW9uKS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEhlYWRlciA9IHtcbiAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICB0b29sYmFyOiB7XG4gICAgICB3aXRoQmFjazogZmFsc2UsXG4gICAgICB3aXRoQWN0aW9uczogdHJ1ZSxcbiAgICAgIHRleHRDb2xvcjogJ2RhcmsnIGFzIGNvbnN0LFxuICAgICAgd2l0aE1lbnU6IHRydWUsXG4gICAgICB0aXRsZTogJycsXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0b2tlbjogJ2hlYWRlci1sb2dvJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgcG9zaXRpb246ICdsZWZ0JyBhcyBjb25zdCxcbiAgICAgICAgICB0eXBlOiAnSU1BR0UnIGFzIGNvbnN0LFxuICAgICAgICAgIGltYWdlOiB7XG4gICAgICAgICAgICB3aWR0aDogMTAsXG4gICAgICAgICAgICBzcmM6ICctLW1haW4tbG9nbycsXG4gICAgICAgICAgICBhbHQ6ICdoZWFkZXIgbG9nbycsXG4gICAgICAgICAgICBtb2RlOiAnYm94JyBhcyBjb25zdCxcbiAgICAgICAgICAgIHNoYWRlZDogZmFsc2UsXG4gICAgICAgICAgICBib3JkZXJlZDogZmFsc2UsXG4gICAgICAgICAgICBzaXplOiAnc21hbGwnIGFzIGNvbnN0LFxuICAgICAgICAgICAgbGltaXRlZDogZmFsc2UsXG4gICAgICAgICAgICBmbGV4OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIH07XG5cbiAgLy8gQ29tcHV0ZWQgaGVscGVycyBmb3IgdGVtcGxhdGUgYmluZGluZ3NcbiAgaGVhZGVyUHJvcHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCk/LmhlYWRlciB8fCB0aGlzLmRlZmF1bHRIZWFkZXIpO1xuICBjb250ZW50SWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCk/LmNvbnRlbnRJZCB8fCAncGFnZS13cmFwcGVyJyk7XG4gIHByb3BzRm9vdGVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpPy5mb290ZXIpO1xuICBjb250ZW50TWF4V2lkdGggPSBjb21wdXRlZDxDb250YWluZXJTaXplPigoKSA9PiB0aGlzLnByb3BzKCk/LmNvbnRlbnRNYXhXaWR0aCA/PyAnZmx1aWQnKTtcbiAgbWVudUl0ZW1zID0gY29tcHV0ZWQ8U2lkZU5hdkl0ZW1bXT4oKCkgPT4gdGhpcy5wcm9wcygpPy5tZW51SXRlbXMgPz8gW10pO1xuICBoYXNTaWRlTWVudSA9IGNvbXB1dGVkKCgpID0+IHRoaXMubWVudUl0ZW1zKCkubGVuZ3RoID4gMCk7XG4gIGJhY2tncm91bmQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMudGhlbWUuSXNEYXJrKSB7XG4gICAgICByZXR1cm4gJ3ZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yKSc7XG4gICAgfVxuICAgIGNvbnN0IGJnID0gdGhpcy5wcm9wcygpPy5iYWNrZ3JvdW5kO1xuICAgIGlmICghYmcpIHtcbiAgICAgIHJldHVybiAndmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpJztcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVDb2xvcihiZyk7XG4gIH0pO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzKCk/LnNjcm9sbFRvVG9wT25OYXZpZ2F0ZSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgIC5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvdXRlclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBpb25WaWV3V2lsbExlYXZlKCk6IHZvaWQge1xuICAgIC8vIE9wdGlvbmFsOiBjYW4gYWRkIGxvZ2ljIG9uIHZpZXcgbGVhdmVcbiAgfVxuXG4gIGlvblZpZXdXaWxsRW50ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjcm9sbHMgdGhlIGNvbnRlbnQgdG8gdGhlIHRvcC5cbiAgICovXG4gIHByaXZhdGUgc2Nyb2xsVG9Ub3AoKTogdm9pZCB7XG4gICAgY29uc3QgaWQgPSB0aGlzLnByb3BzKCk/LmNvbnRlbnRJZCB8fCAncGFnZS13cmFwcGVyJztcbiAgICBjb25zdCBpb25Db250ZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7aWR9YCkgYXMgYW55O1xuICAgIGlmIChpb25Db250ZW50ICYmIGlvbkNvbnRlbnQuc2Nyb2xsVG9Ub3ApIHtcbiAgICAgIGlvbkNvbnRlbnQuc2Nyb2xsVG9Ub3AoMzAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgaGVhZGVyIGFjdGlvbiBjbGlja3MuXG4gICAqL1xuICBvbkhlYWRlckNsaWNrSGFuZGxlcih0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vbkhlYWRlckNsaWNrLmVtaXQodG9rZW4pO1xuXG4gICAgY29uc3QgaG9tZVJvdXRlID0gdGhpcy5wcm9wcygpPy5ob21lUm91dGU7XG4gICAgaWYgKHRva2VuID09PSAnaGVhZGVyLWxvZ28nICYmIGhvbWVSb3V0ZSkge1xuICAgICAgdGhpcy5uYXYubmF2aWdhdGVCeVVybChob21lUm91dGUpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL3BhZ2Utd3JhcHBlci90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGVhZGVyTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvaGVhZGVyL3R5cGVzJztcbmltcG9ydCB7IENvbXBhbnlGb290ZXJNZXRhZGF0YSB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9jb21wYW55LWZvb3Rlci90eXBlcyc7XG5pbXBvcnQgeyBDb250YWluZXJTaXplIH0gZnJvbSAnLi4vLi4vYXRvbXMvY29udGFpbmVyL3R5cGVzJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgcGFnZSB3cmFwcGVyIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdlV3JhcHBlck1ldGFkYXRhIHtcbiAgLyoqIEhlYWRlciBjb25maWd1cmF0aW9uICovXG4gIGhlYWRlcj86IEhlYWRlck1ldGFkYXRhO1xuICAvKiogRm9vdGVyIGNvbmZpZ3VyYXRpb24gKi9cbiAgZm9vdGVyPzogQ29tcGFueUZvb3Rlck1ldGFkYXRhO1xuICAvKiogQmFja2dyb3VuZCBjb2xvciBvciBDU1MgdmFyaWFibGUgKi9cbiAgYmFja2dyb3VuZD86IHN0cmluZztcbiAgLyoqIFJvdXRlIHRvIG5hdmlnYXRlIHRvIHdoZW4gaGVhZGVyIGxvZ28gaXMgY2xpY2tlZCAqL1xuICBob21lUm91dGU/OiBzdHJpbmc7XG4gIC8qKiBDb250ZW50IElEIGZvciBzY3JvbGwgaGFuZGxpbmcgKi9cbiAgY29udGVudElkPzogc3RyaW5nO1xuICAvKiogRW5hYmxlIHNjcm9sbC10by10b3Agb24gcm91dGUgY2hhbmdlICovXG4gIHNjcm9sbFRvVG9wT25OYXZpZ2F0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBNYXgtd2lkdGggY2FwIGZvciB0aGUgcm91dGVkIGNvbnRlbnQgdXNpbmcgZGVzaWduIHRva2Vucy5cbiAgICogJ2ZsdWlkJyA9IG5vIGNhcCAoZGVmYXVsdCwgYmFja3dhcmRzLWNvbXBhdGlibGUpLlxuICAgKiBSZWNvbW1lbmRlZDogJ3hsJyBmb3IgdHlwaWNhbCBhcHAgcGFnZXMuXG4gICAqL1xuICBjb250ZW50TWF4V2lkdGg/OiBDb250YWluZXJTaXplO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL3BhZ2Utd3JhcHBlci90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGVhZGVyTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvaGVhZGVyL3R5cGVzJztcbmltcG9ydCB7IENvbXBhbnlGb290ZXJNZXRhZGF0YSB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9jb21wYW55LWZvb3Rlci90eXBlcyc7XG5pbXBvcnQgeyBDb250YWluZXJTaXplIH0gZnJvbSAnLi4vLi4vYXRvbXMvY29udGFpbmVyL3R5cGVzJztcblxuLyoqIEl0ZW0gZGUgbmF2ZWdhY2nDs24gZGVsIG1lbsO6IGxhdGVyYWwuICovXG5leHBvcnQgaW50ZXJmYWNlIFNpZGVOYXZJdGVtIHtcbiAgLyoqIEV0aXF1ZXRhIHZpc2libGUuICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBOb21icmUgZGVsIGlvbmljb24gKGRlYmUgZXN0YXIgcmVnaXN0cmFkbyBjb24gYWRkSWNvbnMgZW4gbGEgYXBwKS4gKi9cbiAgaWNvbj86IHN0cmluZztcbiAgLyoqIFJ1dGEgQW5ndWxhciBwYXJhIHJvdXRlckxpbmsuICovXG4gIHJvdXRlOiBzdHJpbmc7XG4gIC8qKiBTaSB0cnVlLCByb3V0ZXJMaW5rQWN0aXZlIHJlcXVpZXJlIGNvaW5jaWRlbmNpYSBleGFjdGEgKGRlZmF1bHQgZmFsc2UpLiAqL1xuICBleGFjdD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIHBhZ2Ugd3JhcHBlciBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZVdyYXBwZXJNZXRhZGF0YSB7XG4gIC8qKiBIZWFkZXIgY29uZmlndXJhdGlvbiAqL1xuICBoZWFkZXI/OiBIZWFkZXJNZXRhZGF0YTtcbiAgLyoqIEZvb3RlciBjb25maWd1cmF0aW9uICovXG4gIGZvb3Rlcj86IENvbXBhbnlGb290ZXJNZXRhZGF0YTtcbiAgLyoqIEJhY2tncm91bmQgY29sb3Igb3IgQ1NTIHZhcmlhYmxlICovXG4gIGJhY2tncm91bmQ/OiBzdHJpbmc7XG4gIC8qKiBSb3V0ZSB0byBuYXZpZ2F0ZSB0byB3aGVuIGhlYWRlciBsb2dvIGlzIGNsaWNrZWQgKi9cbiAgaG9tZVJvdXRlPzogc3RyaW5nO1xuICAvKiogQ29udGVudCBJRCBmb3Igc2Nyb2xsIGhhbmRsaW5nICovXG4gIGNvbnRlbnRJZD86IHN0cmluZztcbiAgLyoqIEVuYWJsZSBzY3JvbGwtdG8tdG9wIG9uIHJvdXRlIGNoYW5nZSAqL1xuICBzY3JvbGxUb1RvcE9uTmF2aWdhdGU/OiBib29sZWFuO1xuICAvKipcbiAgICogTWF4LXdpZHRoIGNhcCBmb3IgdGhlIHJvdXRlZCBjb250ZW50IHVzaW5nIGRlc2lnbiB0b2tlbnMuXG4gICAqICdmbHVpZCcgPSBubyBjYXAgKGRlZmF1bHQsIGJhY2t3YXJkcy1jb21wYXRpYmxlKS5cbiAgICogUmVjb21tZW5kZWQ6ICd4bCcgZm9yIHR5cGljYWwgYXBwIHBhZ2VzLlxuICAgKi9cbiAgY29udGVudE1heFdpZHRoPzogQ29udGFpbmVyU2l6ZTtcbiAgLyoqXG4gICAqIEl0ZW1zIGRlbCBtZW7DuiBsYXRlcmFsLiBDdWFuZG8gc2UgcHJvdmVlLCB2YWwtcGFnZS13cmFwcGVyIHJlbmRlcml6YVxuICAgKiBpb24tc3BsaXQtcGFuZSArIGlvbi1tZW51LiBFbiBkZXNrdG9wICg+PSA3NjhweCkgZWwgbWVuw7ogZXMgdmlzaWJsZVxuICAgKiBzaWVtcHJlOyBlbiBtb2JpbGUgc2UgYWJyZSBjb24gZWwgYm90w7NuIGhhbWJ1cmdlciAod2l0aE1lbnU6IHRydWUgZW4gdG9vbGJhcikuXG4gICAqL1xuICBtZW51SXRlbXM/OiBTaWRlTmF2SXRlbVtdO1xufVxuIl19
@@ -0,0 +1,59 @@
1
+ import { inject, Injectable, Optional, Inject } from '@angular/core';
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { switchMap, from } from 'rxjs';
4
+ import { VALTECH_AUTH_CONFIG } from '../auth/config';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Servicio para generación de PDFs via el PDF Lambda (/v2/pdf/generate).
8
+ *
9
+ * El JWT del usuario se inyecta automáticamente por el authInterceptor
10
+ * (configurado vía provideValtechAuth). El app-id se toma de ValtechAuthConfig.
11
+ *
12
+ * Modos de uso:
13
+ * - source.template → renderiza una plantilla desde DynamoDB
14
+ * - source.html → HTML arbitrario provisto por el caller
15
+ * - source.url → URL pública (Puppeteer la carga)
16
+ */
17
+ export class PdfService {
18
+ constructor(config) {
19
+ this.config = config;
20
+ this.http = inject(HttpClient);
21
+ }
22
+ get baseUrl() {
23
+ return `${this.config?.apiUrl ?? ''}/v2/pdf`;
24
+ }
25
+ get appIdHeader() {
26
+ const appId = this.config?.appId;
27
+ return appId ? { 'x-app-id': appId } : {};
28
+ }
29
+ generate(req) {
30
+ return this.http.post(`${this.baseUrl}/generate`, req, {
31
+ headers: this.appIdHeader,
32
+ });
33
+ }
34
+ generateAndDownload(req, filename = 'documento.pdf') {
35
+ return this.generate(req).pipe(switchMap(result => from(this._download(result.url, filename))));
36
+ }
37
+ async _download(url, filename) {
38
+ const res = await fetch(url);
39
+ const blob = await res.blob();
40
+ const objUrl = URL.createObjectURL(blob);
41
+ const a = document.createElement('a');
42
+ a.href = objUrl;
43
+ a.download = filename;
44
+ a.click();
45
+ URL.revokeObjectURL(objUrl);
46
+ }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdfService, deps: [{ token: VALTECH_AUTH_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
48
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdfService, providedIn: 'root' }); }
49
+ }
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdfService, decorators: [{
51
+ type: Injectable,
52
+ args: [{ providedIn: 'root' }]
53
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
54
+ type: Optional
55
+ }, {
56
+ type: Inject,
57
+ args: [VALTECH_AUTH_CONFIG]
58
+ }] }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3BkZi9wZGYuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQWMsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFJckQ7Ozs7Ozs7Ozs7R0FVRztBQUVILE1BQU0sT0FBTyxVQUFVO0lBR3JCLFlBQTZELE1BQWdDO1FBQWhDLFdBQU0sR0FBTixNQUFNLENBQTBCO1FBRnJGLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFOEQsQ0FBQztJQUVqRyxJQUFZLE9BQU87UUFDakIsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFZLFdBQVc7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7UUFDakMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUF1QjtRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sV0FBVyxFQUFFLEdBQUcsRUFBRTtZQUNoRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLEdBQXVCLEVBQUUsUUFBUSxHQUFHLGVBQWU7UUFDckUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFTyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQVcsRUFBRSxRQUFnQjtRQUNuRCxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDdEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1YsR0FBRyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQWpDVSxVQUFVLGtCQUdXLG1CQUFtQjttSEFIeEMsVUFBVSxjQURHLE1BQU07OzRGQUNuQixVQUFVO2tCQUR0QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBSW5CLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwLCBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBWQUxURUNIX0FVVEhfQ09ORklHIH0gZnJvbSAnLi4vYXV0aC9jb25maWcnO1xuaW1wb3J0IHsgVmFsdGVjaEF1dGhDb25maWcgfSBmcm9tICcuLi9hdXRoL3R5cGVzJztcbmltcG9ydCB0eXBlIHsgUGRmR2VuZXJhdGVSZXF1ZXN0LCBQZGZSZXN1bHQgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIGdlbmVyYWNpw7NuIGRlIFBERnMgdmlhIGVsIFBERiBMYW1iZGEgKC92Mi9wZGYvZ2VuZXJhdGUpLlxuICpcbiAqIEVsIEpXVCBkZWwgdXN1YXJpbyBzZSBpbnllY3RhIGF1dG9tw6F0aWNhbWVudGUgcG9yIGVsIGF1dGhJbnRlcmNlcHRvclxuICogKGNvbmZpZ3VyYWRvIHbDrWEgcHJvdmlkZVZhbHRlY2hBdXRoKS4gRWwgYXBwLWlkIHNlIHRvbWEgZGUgVmFsdGVjaEF1dGhDb25maWcuXG4gKlxuICogTW9kb3MgZGUgdXNvOlxuICogICAtIHNvdXJjZS50ZW1wbGF0ZSDihpIgcmVuZGVyaXphIHVuYSBwbGFudGlsbGEgZGVzZGUgRHluYW1vREJcbiAqICAgLSBzb3VyY2UuaHRtbCAgICAg4oaSIEhUTUwgYXJiaXRyYXJpbyBwcm92aXN0byBwb3IgZWwgY2FsbGVyXG4gKiAgIC0gc291cmNlLnVybCAgICAgIOKGkiBVUkwgcMO6YmxpY2EgKFB1cHBldGVlciBsYSBjYXJnYSlcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQZGZTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoVkFMVEVDSF9BVVRIX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFZhbHRlY2hBdXRoQ29uZmlnIHwgbnVsbCkge31cblxuICBwcml2YXRlIGdldCBiYXNlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuY29uZmlnPy5hcGlVcmwgPz8gJyd9L3YyL3BkZmA7XG4gIH1cblxuICBwcml2YXRlIGdldCBhcHBJZEhlYWRlcigpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBhcHBJZCA9IHRoaXMuY29uZmlnPy5hcHBJZDtcbiAgICByZXR1cm4gYXBwSWQgPyB7ICd4LWFwcC1pZCc6IGFwcElkIH0gOiB7fTtcbiAgfVxuXG4gIGdlbmVyYXRlKHJlcTogUGRmR2VuZXJhdGVSZXF1ZXN0KTogT2JzZXJ2YWJsZTxQZGZSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8UGRmUmVzdWx0PihgJHt0aGlzLmJhc2VVcmx9L2dlbmVyYXRlYCwgcmVxLCB7XG4gICAgICBoZWFkZXJzOiB0aGlzLmFwcElkSGVhZGVyLFxuICAgIH0pO1xuICB9XG5cbiAgZ2VuZXJhdGVBbmREb3dubG9hZChyZXE6IFBkZkdlbmVyYXRlUmVxdWVzdCwgZmlsZW5hbWUgPSAnZG9jdW1lbnRvLnBkZicpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZShyZXEpLnBpcGUoc3dpdGNoTWFwKHJlc3VsdCA9PiBmcm9tKHRoaXMuX2Rvd25sb2FkKHJlc3VsdC51cmwsIGZpbGVuYW1lKSkpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2Rvd25sb2FkKHVybDogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2godXJsKTtcbiAgICBjb25zdCBibG9iID0gYXdhaXQgcmVzLmJsb2IoKTtcbiAgICBjb25zdCBvYmpVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgYS5ocmVmID0gb2JqVXJsO1xuICAgIGEuZG93bmxvYWQgPSBmaWxlbmFtZTtcbiAgICBhLmNsaWNrKCk7XG4gICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmpVcmwpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3BkZi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBQZGZUZW1wbGF0ZVNvdXJjZSB7XG4gIHRlbXBsYXRlOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBsYW5ndWFnZTogc3RyaW5nO1xuICAgIGRhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGRmSHRtbFNvdXJjZSB7XG4gIGh0bWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZGZVcmxTb3VyY2Uge1xuICB1cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUGRmU291cmNlID0gUGRmVGVtcGxhdGVTb3VyY2UgfCBQZGZIdG1sU291cmNlIHwgUGRmVXJsU291cmNlO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBkZkdlbmVyYXRlT3B0aW9ucyB7XG4gIGZvcm1hdD86ICdBNCcgfCAnTGV0dGVyJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZGZEZWxpdmVyeU9wdGlvbnMge1xuICBleHBpcmVzSW4/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGRmR2VuZXJhdGVSZXF1ZXN0IHtcbiAgc291cmNlOiBQZGZTb3VyY2U7XG4gIG91dHB1dD86IFBkZkdlbmVyYXRlT3B0aW9ucztcbiAgZGVsaXZlcnk/OiBQZGZEZWxpdmVyeU9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGRmUmVzdWx0IHtcbiAgam9iSWQ6IHN0cmluZztcbiAgc3RhdHVzOiAnY29tcGxldGVkJztcbiAgdXJsOiBzdHJpbmc7XG4gIGV4cGlyZXNBdDogc3RyaW5nO1xufVxuIl19
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '4.0.204';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4yMDQnO1xuIl19
5
+ export const VERSION = '4.0.210';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4yMTAnO1xuIl19