valtech-components 2.0.982 → 2.0.984

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 (26) hide show
  1. package/esm2022/lib/components/organisms/faq/faq.component.mjs +6 -3
  2. package/esm2022/lib/components/organisms/login-attempt-modal/login-attempt-modal.component.mjs +298 -0
  3. package/esm2022/lib/components/organisms/security-view/security-view.component.mjs +819 -0
  4. package/esm2022/lib/components/organisms/security-view/security-view.i18n.mjs +105 -0
  5. package/esm2022/lib/components/organisms/security-view/security.routes.mjs +29 -0
  6. package/esm2022/lib/components/organisms/security-view/types.mjs +2 -0
  7. package/esm2022/lib/components/organisms/session-list-modal/session-list-modal.component.mjs +206 -0
  8. package/esm2022/lib/components/organisms/session-list-modal/types.mjs +2 -0
  9. package/esm2022/lib/services/content-platform/content.service.mjs +3 -2
  10. package/esm2022/lib/services/markdown-article/markdown-article-parser.service.mjs +3 -3
  11. package/esm2022/lib/version.mjs +2 -2
  12. package/esm2022/public-api.mjs +7 -1
  13. package/fesm2022/valtech-components.mjs +2394 -986
  14. package/fesm2022/valtech-components.mjs.map +1 -1
  15. package/lib/components/organisms/faq/faq.component.d.ts +1 -0
  16. package/lib/components/organisms/login-attempt-modal/login-attempt-modal.component.d.ts +58 -0
  17. package/lib/components/organisms/security-view/security-view.component.d.ts +130 -0
  18. package/lib/components/organisms/security-view/security-view.i18n.d.ts +12 -0
  19. package/lib/components/organisms/security-view/security.routes.d.ts +24 -0
  20. package/lib/components/organisms/security-view/types.d.ts +48 -0
  21. package/lib/components/organisms/session-list-modal/session-list-modal.component.d.ts +56 -0
  22. package/lib/components/organisms/session-list-modal/types.d.ts +27 -0
  23. package/lib/services/markdown-article/markdown-article-parser.service.d.ts +1 -1
  24. package/lib/version.d.ts +1 -1
  25. package/package.json +1 -1
  26. package/public-api.d.ts +6 -0
@@ -1,7 +1,8 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, computed, Input, signal } from '@angular/core';
2
+ import { Component, computed, inject, Input, signal } from '@angular/core';
3
3
  import { IonAccordion, IonAccordionGroup, IonItem, IonLabel } from '@ionic/angular/standalone';
4
4
  import { parseMarkdownArticle } from '../../../services/markdown-article/markdown-article-parser';
5
+ import { I18nService } from '../../../services/i18n/i18n.service';
5
6
  import { ArticleComponent } from '../article/article.component';
6
7
  import { SearchbarComponent } from '../../molecules/searchbar/searchbar.component';
7
8
  import * as i0 from "@angular/core";
@@ -24,6 +25,7 @@ import * as i0 from "@angular/core";
24
25
  */
25
26
  export class FaqComponent {
26
27
  constructor() {
28
+ this.i18n = inject(I18nService);
27
29
  this.props_ = signal({ categories: [] });
28
30
  /** Término de búsqueda actual. */
29
31
  this.query = signal('');
@@ -33,10 +35,11 @@ export class FaqComponent {
33
35
  * Keyed por id de item (los ids son únicos en toda la FAQ).
34
36
  */
35
37
  this.parsedAnswers = computed(() => {
38
+ const locale = (this.i18n.lang() ?? 'es');
36
39
  const map = new Map();
37
40
  for (const cat of this.props_().categories ?? []) {
38
41
  for (const item of cat.items) {
39
- map.set(item.id, parseMarkdownArticle(item.answer));
42
+ map.set(item.id, parseMarkdownArticle(item.answer, { locale }));
40
43
  }
41
44
  }
42
45
  return map;
@@ -173,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
173
176
  }], propDecorators: { props: [{
174
177
  type: Input
175
178
  }] } });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFxLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvZmFxL2ZhcS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDbEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0NBQStDLENBQUM7O0FBR25GOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBNEdILE1BQU0sT0FBTyxZQUFZO0lBM0d6QjtRQTRHbUIsV0FBTSxHQUFHLE1BQU0sQ0FBYyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBU2xFLGtDQUFrQztRQUNqQixVQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBDOzs7O1dBSUc7UUFDYyxrQkFBYSxHQUFHLFFBQVEsQ0FBK0IsR0FBRyxFQUFFO1lBQzNFLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO1lBQy9DLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDakQsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQzdCLEdBQUcsQ0FBQyxHQUFH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Q29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIElucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkFjY29yZGlvbiwgSW9uQWNjb3JkaW9uR3JvdXAsIElvbkl0ZW0sIElvbkxhYmVsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBwYXJzZU1hcmtkb3duQXJ0aWNsZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21hcmtkb3duLWFydGljbGUvbWFya2Rvd24tYXJ0aWNsZS1wYXJzZXInO1xuaW1wb3J0IHsgQXJ0aWNsZUNvbXBvbmVudCB9IGZyb20gJy4uL2FydGljbGUvYXJ0aWNsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXJ0aWNsZU1ldGFkYXRhIH0gZnJvbSAnLi4vYXJ0aWNsZS90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hiYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvc2VhcmNoYmFyL3NlYXJjaGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmFxQ2F0ZWdvcnksIEZhcUl0ZW0sIEZhcU1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogYHZhbC1mYXFgXG4gKlxuICogT3JnYW5pc20gZGUgcHJlZ3VudGFzIGZyZWN1ZW50ZXMuIFEmQSBjYXRlZ29yaXphZG8gY29uIGFjY29yZGlvbiBjb2xhcHNhYmxlXG4gKiB5IGJ1c2NhZG9yIGVuIHZpdm8uIFBlbnNhZG8gcGFyYSB2aXN0YXMgRkFRIHDDumJsaWNhcyDigJQgZWwgY2FsbGVyIHB1ZWRlXG4gKiByZXVzYXIgbGEgbWlzbWEgZGF0YSAoYEZhcU1ldGFkYXRhLmNhdGVnb3JpZXNgKSBwYXJhIGVtaXRpciBlbCBzdHJ1Y3R1cmVkXG4gKiBkYXRhIGBGQVFQYWdlYCAoSlNPTi1MRCkgeSBnYW5hciByaWNoIHJlc3VsdHMgZW4gYnVzY2Fkb3Jlcy5cbiAqXG4gKiBMYXMgcmVzcHVlc3RhcyAoYEZhcUl0ZW0uYW5zd2VyYCkgc29uICoqTWFya2Rvd24qKiDigJQgc2UgcGFyc2VhbiBjb25cbiAqIGBwYXJzZU1hcmtkb3duQXJ0aWNsZWAgeSBzZSByZW5kZXJpemFuIHbDrWEgYHZhbC1hcnRpY2xlYC4gU29wb3J0YW4gbGlua3MsXG4gKiBsaXN0YXMsIG5lZ3JpdGFzLCB0YWJsYXMsIGV0Yy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHZhbC1mYXEgW3Byb3BzXT1cInsgY2F0ZWdvcmllczogZmFxQ2F0ZWdvcmllcywgc2VhcmNoYWJsZTogdHJ1ZSB9XCIgLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZmFxJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uQWNjb3JkaW9uLCBJb25BY2NvcmRpb25Hcm91cCwgSW9uSXRlbSwgSW9uTGFiZWwsIFNlYXJjaGJhckNvbXBvbmVudCwgQXJ0aWNsZUNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInZhbC1mYXFcIj5cbiAgICAgIEBpZiAocHJvcHMuc2VhcmNoYWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbC1mYXFfX3NlYXJjaFwiPlxuICAgICAgICAgIDx2YWwtc2VhcmNoYmFyXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHMuc2VhcmNoUGxhY2Vob2xkZXIgfHwgJycsXG4gICAgICAgICAgICAgIGRlYm91bmNlOiAyMDAsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChmaWx0ZXJFdmVudCk9XCJvblNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmICh2aXNpYmxlQ2F0ZWdvcmllcygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICA8cCBjbGFzcz1cInZhbC1mYXFfX2VtcHR5XCI+XG4gICAgICAgICAge3sgcHJvcHMubm9SZXN1bHRzVGV4dCB8fCAnU2luIHJlc3VsdGFkb3MnIH19XG4gICAgICAgIDwvcD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAZm9yIChjYXQgb2YgdmlzaWJsZUNhdGVnb3JpZXMoKTsgdHJhY2sgY2F0LmlkKSB7XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJ2YWwtZmFxX19jYXRlZ29yeVwiPlxuICAgICAgICAgICAgQGlmIChzaG93Q2F0ZWdvcnlMYWJlbCgpKSB7XG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cInZhbC1mYXFfX2NhdGVnb3J5LWxhYmVsXCI+e3sgY2F0LmxhYmVsIH19PC9oMz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxpb24tYWNjb3JkaW9uLWdyb3VwIFttdWx0aXBsZV09XCJwcm9wcy5tdWx0aXBsZSA/PyBmYWxzZVwiPlxuICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGNhdC5pdGVtczsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICAgICAgICAgIDxpb24tYWNjb3JkaW9uIFt2YWx1ZV09XCJpdGVtLmlkXCIgY2xhc3M9XCJ2YWwtZmFxX19pdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWl0ZW0gc2xvdD1cImhlYWRlclwiIGxpbmVzPVwibm9uZVwiIGNsYXNzPVwidmFsLWZhcV9fcVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwidmFsLWZhcV9fcS1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ucXVlc3Rpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgPGRpdiBzbG90PVwiY29udGVudFwiIGNsYXNzPVwidmFsLWZhcV9fYVwiPlxuICAgICAgICAgICAgICAgICAgICA8dmFsLWFydGljbGUgW3Byb3BzXT1cImFuc3dlck9mKGl0ZW0pXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvaW9uLWFjY29yZGlvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pb24tYWNjb3JkaW9uLWdyb3VwPlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLnZhbC1mYXFfX3NlYXJjaCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZmFxX19jYXRlZ29yeSArIC52YWwtZmFxX19jYXRlZ29yeSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDI0cHg7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZmFxX19jYXRlZ29yeS1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIG1hcmdpbjogMCAwIDhweDtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IDRweDtcbiAgICAgIH1cblxuICAgICAgaW9uLWFjY29yZGlvbi1ncm91cCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAudmFsLWZhcV9faXRlbSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCk7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZmFxX19xIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgLS1taW4taGVpZ2h0OiA1NnB4O1xuICAgICAgfVxuXG4gICAgICAudmFsLWZhcV9fcS1sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZmFxX19hIHtcbiAgICAgICAgcGFkZGluZzogNHB4IDE2cHggMTZweDtcbiAgICAgIH1cblxuICAgICAgLnZhbC1mYXFfX2VtcHR5IHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAzMnB4IDE2cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZhcUNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHNfID0gc2lnbmFsPEZhcU1ldGFkYXRhPih7IGNhdGVnb3JpZXM6IFtdIH0pO1xuXG4gIEBJbnB1dCgpIHNldCBwcm9wcyh2YWx1ZTogRmFxTWV0YWRhdGEgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHRoaXMucHJvcHNfLnNldCh2YWx1ZSk7XG4gIH1cbiAgZ2V0IHByb3BzKCk6IEZhcU1ldGFkYXRhIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wc18oKTtcbiAgfVxuXG4gIC8qKiBUw6lybWlubyBkZSBiw7pzcXVlZGEgYWN0dWFsLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHF1ZXJ5ID0gc2lnbmFsKCcnKTtcblxuICAvKipcbiAgICogQ2FjaGUgZGUgcmVzcHVlc3RhcyBwYXJzZWFkYXMgKE1hcmtkb3duIOKGkiBBcnRpY2xlTWV0YWRhdGEpLiBTZSByZWNvbnN0cnV5ZVxuICAgKiBzb2xvIGN1YW5kbyBjYW1iaWFuIGxhcyBjYXRlZ29yw61hcyDigJQgZWwgcGFyc2VvIE5PIGNvcnJlIHBvciBrZXlzdHJva2UuXG4gICAqIEtleWVkIHBvciBpZCBkZSBpdGVtIChsb3MgaWRzIHNvbiDDum5pY29zIGVuIHRvZGEgbGEgRkFRKS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcGFyc2VkQW5zd2VycyA9IGNvbXB1dGVkPE1hcDxzdHJpbmcsIEFydGljbGVNZXRhZGF0YT4+KCgpID0+IHtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgQXJ0aWNsZU1ldGFkYXRhPigpO1xuICAgIGZvciAoY29uc3QgY2F0IG9mIHRoaXMucHJvcHNfKCkuY2F0ZWdvcmllcyA/PyBbXSkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGNhdC5pdGVtcykge1xuICAgICAgICBtYXAuc2V0KGl0ZW0uaWQsIHBhcnNlTWFya2Rvd25BcnRpY2xlKGl0ZW0uYW5zd2VyKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXA7XG4gIH0pO1xuXG4gIC8qKiBSZXNwdWVzdGEgcGFyc2VhZGEgZGUgdW4gaXRlbSDigJQgZGVzZGUgZWwgY2FjaGUuICovXG4gIGFuc3dlck9mKGl0ZW06IEZhcUl0ZW0pOiBBcnRpY2xlTWV0YWRhdGEge1xuICAgIHJldHVybiB0aGlzLnBhcnNlZEFuc3dlcnMoKS5nZXQoaXRlbS5pZCkgPz8geyBlbGVtZW50czogW10gfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYXRlZ29yw61hcyB2aXNpYmxlcyB0cmFzIGVsIGZpbHRyby4gVW5hIGNhdGVnb3LDrWEgZGVzYXBhcmVjZSBzaSBuaW5ndW5hXG4gICAqIGRlIHN1cyBwcmVndW50YXMgbWF0Y2hlYS4gTWF0Y2ggc29icmUgcHJlZ3VudGEgKyByZXNwdWVzdGEgKHJhdyBtYXJrZG93biksXG4gICAqIGNhc2UtaW5zZW5zaXRpdmUuXG4gICAqL1xuICByZWFkb25seSB2aXNpYmxlQ2F0ZWdvcmllcyA9IGNvbXB1dGVkPEZhcUNhdGVnb3J5W10+KCgpID0+IHtcbiAgICBjb25zdCBxID0gdGhpcy5xdWVyeSgpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGNhdHMgPSB0aGlzLnByb3BzXygpLmNhdGVnb3JpZXMgPz8gW107XG4gICAgaWYgKCFxKSByZXR1cm4gY2F0cztcbiAgICByZXR1cm4gY2F0c1xuICAgICAgLm1hcChjYXQgPT4gKHtcbiAgICAgICAgLi4uY2F0LFxuICAgICAgICBpdGVtczogY2F0Lml0ZW1zLmZpbHRlcihpdCA9PiBpdC5xdWVzdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpIHx8IGl0LmFuc3dlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpKSxcbiAgICAgIH0pKVxuICAgICAgLmZpbHRlcihjYXQgPT4gY2F0Lml0ZW1zLmxlbmd0aCA+IDApO1xuICB9KTtcblxuICAvKiogYHRydWVgIHNpIHNlIGRlYmUgbW9zdHJhciBlbCBsYWJlbCBkZSBjYWRhIGNhdGVnb3LDrWEuICovXG4gIHJlYWRvbmx5IHNob3dDYXRlZ29yeUxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHAgPSB0aGlzLnByb3BzXygpO1xuICAgIGlmIChwLmhpZGVTaW5nbGVDYXRlZ29yeUxhYmVsID09PSBmYWxzZSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIChwLmNhdGVnb3JpZXM/Lmxlbmd0aCA/PyAwKSA+IDE7XG4gIH0pO1xuXG4gIG9uU2VhcmNoKHRlcm06IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucXVlcnkuc2V0KHRlcm0gPz8gJycpO1xuICB9XG59XG4iXX0=
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFxLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvZmFxL2ZhcS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7QUFHbkY7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUE0R0gsTUFBTSxPQUFPLFlBQVk7SUEzR3pCO1FBNEdtQixTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLFdBQU0sR0FBRyxNQUFNLENBQWMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQVNsRSxrQ0FBa0M7UUFDakIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVwQzs7OztXQUlHO1FBQ2Msa0JBQWEsR0FBRyxRQUFRLENBQStCLEdBQUcsRUFBRTtZQUMzRSxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUF1QixDQUFDO1lBQ2hFLE1BQU0sR0FBRyxHQUFH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QUNQLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLFlBQ3ZHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ1Q7OEJBaUVZLEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25BY2NvcmRpb24sIElvbkFjY29yZGlvbkdyb3VwLCBJb25JdGVtLCBJb25MYWJlbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgcGFyc2VNYXJrZG93bkFydGljbGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYXJrZG93bi1hcnRpY2xlL21hcmtkb3duLWFydGljbGUtcGFyc2VyJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXJ0aWNsZUNvbXBvbmVudCB9IGZyb20gJy4uL2FydGljbGUvYXJ0aWNsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXJ0aWNsZU1ldGFkYXRhIH0gZnJvbSAnLi4vYXJ0aWNsZS90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hiYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvc2VhcmNoYmFyL3NlYXJjaGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmFxQ2F0ZWdvcnksIEZhcUl0ZW0sIEZhcU1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogYHZhbC1mYXFgXG4gKlxuICogT3JnYW5pc20gZGUgcHJlZ3VudGFzIGZyZWN1ZW50ZXMuIFEmQSBjYXRlZ29yaXphZG8gY29uIGFjY29yZGlvbiBjb2xhcHNhYmxlXG4gKiB5IGJ1c2NhZG9yIGVuIHZpdm8uIFBlbnNhZG8gcGFyYSB2aXN0YXMgRkFRIHDDumJsaWNhcyDigJQgZWwgY2FsbGVyIHB1ZWRlXG4gKiByZXVzYXIgbGEgbWlzbWEgZGF0YSAoYEZhcU1ldGFkYXRhLmNhdGVnb3JpZXNgKSBwYXJhIGVtaXRpciBlbCBzdHJ1Y3R1cmVkXG4gKiBkYXRhIGBGQVFQYWdlYCAoSlNPTi1MRCkgeSBnYW5hciByaWNoIHJlc3VsdHMgZW4gYnVzY2Fkb3Jlcy5cbiAqXG4gKiBMYXMgcmVzcHVlc3RhcyAoYEZhcUl0ZW0uYW5zd2VyYCkgc29uICoqTWFya2Rvd24qKiDigJQgc2UgcGFyc2VhbiBjb25cbiAqIGBwYXJzZU1hcmtkb3duQXJ0aWNsZWAgeSBzZSByZW5kZXJpemFuIHbDrWEgYHZhbC1hcnRpY2xlYC4gU29wb3J0YW4gbGlua3MsXG4gKiBsaXN0YXMsIG5lZ3JpdGFzLCB0YWJsYXMsIGV0Yy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHZhbC1mYXEgW3Byb3BzXT1cInsgY2F0ZWdvcmllczogZmFxQ2F0ZWdvcmllcywgc2VhcmNoYWJsZTogdHJ1ZSB9XCIgLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZmFxJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uQWNjb3JkaW9uLCBJb25BY2NvcmRpb25Hcm91cCwgSW9uSXRlbSwgSW9uTGFiZWwsIFNlYXJjaGJhckNvbXBvbmVudCwgQXJ0aWNsZUNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInZhbC1mYXFcIj5cbiAgICAgIEBpZiAocHJvcHMuc2VhcmNoYWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbC1mYXFfX3NlYXJjaFwiPlxuICAgICAgICAgIDx2YWwtc2VhcmNoYmFyXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHMuc2VhcmNoUGxhY2Vob2xkZXIgfHwgJycsXG4gICAgICAgICAgICAgIGRlYm91bmNlOiAyMDAsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChmaWx0ZXJFdmVudCk9XCJvblNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmICh2aXNpYmxlQ2F0ZWdvcmllcygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICA8cCBjbGFzcz1cInZhbC1mYXFfX2VtcHR5XCI+XG4gICAgICAgICAge3sgcHJvcHMubm9SZXN1bHRzVGV4dCB8fCAnU2luIHJlc3VsdGFkb3MnIH19XG4gICAgICAgIDwvcD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAZm9yIChjYXQgb2YgdmlzaWJsZUNhdGVnb3JpZXMoKTsgdHJhY2sgY2F0LmlkKSB7XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJ2YWwtZmFxX19jYXRlZ29yeVwiPlxuICAgICAgICAgICAgQGlmIChzaG93Q2F0ZWdvcnlMYWJlbCgpKSB7XG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cInZhbC1mYXFfX2NhdGVnb3J5LWxhYmVsXCI+e3sgY2F0LmxhYmVsIH19PC9oMz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxpb24tYWNjb3JkaW9uLWdyb3VwIFttdWx0aXBsZV09XCJwcm9wcy5tdWx0aXBsZSA/PyBmYWxzZVwiPlxuICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGNhdC5pdGVtczsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICAgICAgICAgIDxpb24tYWNjb3JkaW9uIFt2YWx1ZV09XCJpdGVtLmlkXCIgY2xhc3M9XCJ2YWwtZmFxX19pdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWl0ZW0gc2xvdD1cImhlYWRlclwiIGxpbmVzPVwibm9uZVwiIGNsYXNzPVwidmFsLWZhcV9fcVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwidmFsLWZhcV9fcS1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ucXVlc3Rpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgPGRpdiBzbG90PVwiY29udGVudFwiIGNsYXNzPVwidmFsLWZhcV9fYVwiPlxuICAgICAgICAgICAgICAgICAgICA8dmFsLWFydGljbGUgW3Byb3BzXT1cImFuc3dlck9mKGl0ZW0pXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvaW9uLWFjY29yZGlvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pb24tYWNjb3JkaW9uLWdyb3VwPlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLnZhbC1mYXFfX3NlYXJjaCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZmFxX19jYXRlZ29yeSArIC52YWwtZmFxX19jYXRlZ29yeSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDI0cHg7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZmFxX19jYXRlZ29yeS1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIG1hcmdpbjogMCAwIDhweDtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IDRweDtcbiAgICAgIH1cblxuICAgICAgaW9uLWFjY29yZGlvbi1ncm91cCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAudmFsLWZhcV9faXRlbSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCk7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZmFxX19xIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgLS1taW4taGVpZ2h0OiA1NnB4O1xuICAgICAgfVxuXG4gICAgICAudmFsLWZhcV9fcS1sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZmFxX19hIHtcbiAgICAgICAgcGFkZGluZzogNHB4IDE2cHggMTZweDtcbiAgICAgIH1cblxuICAgICAgLnZhbC1mYXFfX2VtcHR5IHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAzMnB4IDE2cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZhcUNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHNfID0gc2lnbmFsPEZhcU1ldGFkYXRhPih7IGNhdGVnb3JpZXM6IFtdIH0pO1xuXG4gIEBJbnB1dCgpIHNldCBwcm9wcyh2YWx1ZTogRmFxTWV0YWRhdGEgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHRoaXMucHJvcHNfLnNldCh2YWx1ZSk7XG4gIH1cbiAgZ2V0IHByb3BzKCk6IEZhcU1ldGFkYXRhIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wc18oKTtcbiAgfVxuXG4gIC8qKiBUw6lybWlubyBkZSBiw7pzcXVlZGEgYWN0dWFsLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHF1ZXJ5ID0gc2lnbmFsKCcnKTtcblxuICAvKipcbiAgICogQ2FjaGUgZGUgcmVzcHVlc3RhcyBwYXJzZWFkYXMgKE1hcmtkb3duIOKGkiBBcnRpY2xlTWV0YWRhdGEpLiBTZSByZWNvbnN0cnV5ZVxuICAgKiBzb2xvIGN1YW5kbyBjYW1iaWFuIGxhcyBjYXRlZ29yw61hcyDigJQgZWwgcGFyc2VvIE5PIGNvcnJlIHBvciBrZXlzdHJva2UuXG4gICAqIEtleWVkIHBvciBpZCBkZSBpdGVtIChsb3MgaWRzIHNvbiDDum5pY29zIGVuIHRvZGEgbGEgRkFRKS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcGFyc2VkQW5zd2VycyA9IGNvbXB1dGVkPE1hcDxzdHJpbmcsIEFydGljbGVNZXRhZGF0YT4+KCgpID0+IHtcbiAgICBjb25zdCBsb2NhbGUgPSAodGhpcy5pMThuLmxhbmcoKSA/PyAnZXMnKSBhcyAnZXMnIHwgJ2VuJyB8ICdwdCc7XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIEFydGljbGVNZXRhZGF0YT4oKTtcbiAgICBmb3IgKGNvbnN0IGNhdCBvZiB0aGlzLnByb3BzXygpLmNhdGVnb3JpZXMgPz8gW10pIHtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBjYXQuaXRlbXMpIHtcbiAgICAgICAgbWFwLnNldChpdGVtLmlkLCBwYXJzZU1hcmtkb3duQXJ0aWNsZShpdGVtLmFuc3dlciwgeyBsb2NhbGUgfSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFwO1xuICB9KTtcblxuICAvKiogUmVzcHVlc3RhIHBhcnNlYWRhIGRlIHVuIGl0ZW0g4oCUIGRlc2RlIGVsIGNhY2hlLiAqL1xuICBhbnN3ZXJPZihpdGVtOiBGYXFJdGVtKTogQXJ0aWNsZU1ldGFkYXRhIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZWRBbnN3ZXJzKCkuZ2V0KGl0ZW0uaWQpID8/IHsgZWxlbWVudHM6IFtdIH07XG4gIH1cblxuICAvKipcbiAgICogQ2F0ZWdvcsOtYXMgdmlzaWJsZXMgdHJhcyBlbCBmaWx0cm8uIFVuYSBjYXRlZ29yw61hIGRlc2FwYXJlY2Ugc2kgbmluZ3VuYVxuICAgKiBkZSBzdXMgcHJlZ3VudGFzIG1hdGNoZWEuIE1hdGNoIHNvYnJlIHByZWd1bnRhICsgcmVzcHVlc3RhIChyYXcgbWFya2Rvd24pLFxuICAgKiBjYXNlLWluc2Vuc2l0aXZlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmlzaWJsZUNhdGVnb3JpZXMgPSBjb21wdXRlZDxGYXFDYXRlZ29yeVtdPigoKSA9PiB7XG4gICAgY29uc3QgcSA9IHRoaXMucXVlcnkoKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBjYXRzID0gdGhpcy5wcm9wc18oKS5jYXRlZ29yaWVzID8/IFtdO1xuICAgIGlmICghcSkgcmV0dXJuIGNhdHM7XG4gICAgcmV0dXJuIGNhdHNcbiAgICAgIC5tYXAoY2F0ID0+ICh7XG4gICAgICAgIC4uLmNhdCxcbiAgICAgICAgaXRlbXM6IGNhdC5pdGVtcy5maWx0ZXIoaXQgPT4gaXQucXVlc3Rpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKSB8fCBpdC5hbnN3ZXIudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKSksXG4gICAgICB9KSlcbiAgICAgIC5maWx0ZXIoY2F0ID0+IGNhdC5pdGVtcy5sZW5ndGggPiAwKTtcbiAgfSk7XG5cbiAgLyoqIGB0cnVlYCBzaSBzZSBkZWJlIG1vc3RyYXIgZWwgbGFiZWwgZGUgY2FkYSBjYXRlZ29yw61hLiAqL1xuICByZWFkb25seSBzaG93Q2F0ZWdvcnlMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwID0gdGhpcy5wcm9wc18oKTtcbiAgICBpZiAocC5oaWRlU2luZ2xlQ2F0ZWdvcnlMYWJlbCA9PT0gZmFsc2UpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiAocC5jYXRlZ29yaWVzPy5sZW5ndGggPz8gMCkgPiAxO1xuICB9KTtcblxuICBvblNlYXJjaCh0ZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5LnNldCh0ZXJtID8/ICcnKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,298 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input, signal } from '@angular/core';
3
+ import { IonButton, IonButtons, IonContent, IonHeader, IonIcon, IonToolbar } from '@ionic/angular/standalone';
4
+ import { addIcons } from 'ionicons';
5
+ import { checkmarkCircleOutline, shieldCheckmarkOutline } from 'ionicons/icons';
6
+ import { ButtonComponent } from '../../atoms/button/button.component';
7
+ import { DisplayComponent } from '../../atoms/display/display.component';
8
+ import { TextComponent } from '../../atoms/text/text.component';
9
+ import { ComponentStates } from '../../types';
10
+ import * as i0 from "@angular/core";
11
+ addIcons({ shieldCheckmarkOutline, checkmarkCircleOutline });
12
+ /**
13
+ * `val-login-attempt-modal` — modal de confirmación de intento de inicio de sesión.
14
+ *
15
+ * Se abre cuando el usuario llega a la vista Seguridad vía
16
+ * `?token=...` desde el email/push de "nuevo acceso". Muestra el dispositivo
17
+ * detectado y dos acciones: confirmar que fue uno mismo (cierra sin hacer nada)
18
+ * o bloquear el dispositivo (ejecuta el token de acción).
19
+ *
20
+ * Inputs vía `componentProps` del ModalService. Sin `@Output` (no funcionan con
21
+ * `modalController.create()`) — usa callback `onBlock` y `_modalRef.dismiss`.
22
+ * Recibe los labels ya traducidos (agnóstico a i18n).
23
+ *
24
+ * Header canónico (Regla #5): sin `ion-title`, botón Cerrar texto en `slot=end`,
25
+ * título en el body con `val-display`.
26
+ */
27
+ export class LoginAttemptModalComponent {
28
+ constructor() {
29
+ /** Título del modal (i18n ya resuelto). */
30
+ this.title = '';
31
+ /** Texto explicativo. */
32
+ this.body = '';
33
+ /** Descripción del dispositivo (navegador · OS · ubicación). */
34
+ this.deviceLabel = '';
35
+ /** Metadata secundaria (fecha, IP). Opcional. */
36
+ this.metaLabel = '';
37
+ /** Mensaje mostrado tras bloquear. */
38
+ this.doneLabel = '';
39
+ /** Labels de botones. */
40
+ this.mineLabel = '';
41
+ this.blockLabel = '';
42
+ this.closeLabel = '';
43
+ /** `true` si el dispositivo es móvil — cambia el icono. */
44
+ this.isMobile = false;
45
+ /** `true` tras bloquear con éxito — cambia el modal a estado "hecho". */
46
+ this.done = signal(false);
47
+ this.working = false;
48
+ }
49
+ get deviceIcon() {
50
+ return this.isMobile ? 'phone-portrait-outline' : 'laptop-outline';
51
+ }
52
+ /** "Sí, fui yo" — cierra sin acción. El dispositivo ya está activo. */
53
+ confirmMine() {
54
+ this._modalRef?.dismiss(undefined, 'mine');
55
+ }
56
+ /** "No fui yo" — ejecuta el bloqueo y pasa a estado done. */
57
+ async confirmBlock() {
58
+ if (this.working || !this.onBlock)
59
+ return;
60
+ this.working = true;
61
+ try {
62
+ await this.onBlock();
63
+ this.done.set(true);
64
+ }
65
+ catch {
66
+ // El parent muestra el toast de error; cerramos el modal.
67
+ this._modalRef?.dismiss(undefined, 'error');
68
+ }
69
+ finally {
70
+ this.working = false;
71
+ }
72
+ }
73
+ close() {
74
+ this._modalRef?.dismiss(undefined, this.done() ? 'blocked' : 'close');
75
+ }
76
+ get mineBtn() {
77
+ return {
78
+ text: this.mineLabel,
79
+ color: 'medium',
80
+ fill: 'outline',
81
+ size: 'default',
82
+ type: 'button',
83
+ state: ComponentStates.ENABLED,
84
+ };
85
+ }
86
+ get blockBtn() {
87
+ return {
88
+ text: this.blockLabel,
89
+ color: 'danger',
90
+ fill: 'solid',
91
+ size: 'default',
92
+ type: 'button',
93
+ state: ComponentStates.ENABLED,
94
+ };
95
+ }
96
+ get closeBtn() {
97
+ return {
98
+ text: this.closeLabel,
99
+ color: 'dark',
100
+ fill: 'solid',
101
+ size: 'default',
102
+ type: 'button',
103
+ state: ComponentStates.ENABLED,
104
+ };
105
+ }
106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoginAttemptModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
107
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LoginAttemptModalComponent, isStandalone: true, selector: "val-login-attempt-modal", inputs: { title: "title", body: "body", deviceLabel: "deviceLabel", metaLabel: "metaLabel", doneLabel: "doneLabel", mineLabel: "mineLabel", blockLabel: "blockLabel", closeLabel: "closeLabel", isMobile: "isMobile", onBlock: "onBlock", _modalRef: "_modalRef" }, ngImport: i0, template: `
108
+ <ion-header>
109
+ <ion-toolbar>
110
+ <ion-buttons slot="end">
111
+ <ion-button fill="clear" color="dark" (click)="close()">
112
+ <strong>{{ closeLabel }}</strong>
113
+ </ion-button>
114
+ </ion-buttons>
115
+ </ion-toolbar>
116
+ </ion-header>
117
+ <ion-content class="ion-padding">
118
+ <val-display [props]="{ content: title, size: 'small', color: 'dark' }" />
119
+ <div class="attempt">
120
+ <div class="attempt__hero">
121
+ <ion-icon name="shield-checkmark-outline" aria-hidden="true" />
122
+ </div>
123
+
124
+ <val-text
125
+ [props]="{
126
+ content: body,
127
+ size: 'medium',
128
+ color: 'dark',
129
+ bold: false,
130
+ }"
131
+ />
132
+
133
+ <div class="attempt__device">
134
+ <ion-icon [name]="deviceIcon" aria-hidden="true" />
135
+ <div class="attempt__device-body">
136
+ <val-text
137
+ [props]="{
138
+ content: deviceLabel,
139
+ size: 'medium',
140
+ color: 'dark',
141
+ bold: true,
142
+ }"
143
+ />
144
+ @if (metaLabel) {
145
+ <val-text
146
+ [props]="{
147
+ content: metaLabel,
148
+ size: 'small',
149
+ color: 'medium',
150
+ bold: false,
151
+ }"
152
+ />
153
+ }
154
+ </div>
155
+ </div>
156
+
157
+ @if (done()) {
158
+ <div class="attempt__done">
159
+ <ion-icon name="checkmark-circle-outline" aria-hidden="true" />
160
+ <val-text
161
+ [props]="{
162
+ content: doneLabel,
163
+ size: 'small',
164
+ color: 'medium',
165
+ bold: false,
166
+ }"
167
+ />
168
+ </div>
169
+ }
170
+ </div>
171
+ </ion-content>
172
+
173
+ @if (!done()) {
174
+ <div class="attempt__actions">
175
+ <val-button [props]="mineBtn" (click)="confirmMine()" />
176
+ <val-button [props]="blockBtn" (click)="confirmBlock()" />
177
+ </div>
178
+ } @else {
179
+ <div class="attempt__actions">
180
+ <val-button [props]="closeBtn" (click)="close()" />
181
+ </div>
182
+ }
183
+ `, isInline: true, styles: [":host{display:block}.attempt{display:flex;flex-direction:column;gap:18px;align-items:flex-start}.attempt__hero{width:56px;height:56px;border-radius:16px;display:flex;align-items:center;justify-content:center;background:#7026df1a}.attempt__hero ion-icon{font-size:30px;color:var(--ion-color-primary, #7026df)}.attempt__device{display:flex;align-items:center;gap:12px;width:100%;padding:14px 16px;border-radius:12px;background:var(--ion-color-light, #f4f5f8);border:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.attempt__device ion-icon{font-size:26px;color:var(--ion-color-dark);flex-shrink:0}.attempt__device-body{display:flex;flex-direction:column;gap:2px;min-width:0}.attempt__done{display:flex;align-items:center;gap:8px}.attempt__done ion-icon{font-size:20px;color:var(--ion-color-success);flex-shrink:0}.attempt__actions{display:flex;gap:10px;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.attempt__actions val-button{flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }] }); }
184
+ }
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoginAttemptModalComponent, decorators: [{
186
+ type: Component,
187
+ args: [{ selector: 'val-login-attempt-modal', standalone: true, imports: [
188
+ CommonModule,
189
+ IonContent,
190
+ IonHeader,
191
+ IonToolbar,
192
+ IonButtons,
193
+ IonButton,
194
+ IonIcon,
195
+ DisplayComponent,
196
+ TextComponent,
197
+ ButtonComponent,
198
+ ], template: `
199
+ <ion-header>
200
+ <ion-toolbar>
201
+ <ion-buttons slot="end">
202
+ <ion-button fill="clear" color="dark" (click)="close()">
203
+ <strong>{{ closeLabel }}</strong>
204
+ </ion-button>
205
+ </ion-buttons>
206
+ </ion-toolbar>
207
+ </ion-header>
208
+ <ion-content class="ion-padding">
209
+ <val-display [props]="{ content: title, size: 'small', color: 'dark' }" />
210
+ <div class="attempt">
211
+ <div class="attempt__hero">
212
+ <ion-icon name="shield-checkmark-outline" aria-hidden="true" />
213
+ </div>
214
+
215
+ <val-text
216
+ [props]="{
217
+ content: body,
218
+ size: 'medium',
219
+ color: 'dark',
220
+ bold: false,
221
+ }"
222
+ />
223
+
224
+ <div class="attempt__device">
225
+ <ion-icon [name]="deviceIcon" aria-hidden="true" />
226
+ <div class="attempt__device-body">
227
+ <val-text
228
+ [props]="{
229
+ content: deviceLabel,
230
+ size: 'medium',
231
+ color: 'dark',
232
+ bold: true,
233
+ }"
234
+ />
235
+ @if (metaLabel) {
236
+ <val-text
237
+ [props]="{
238
+ content: metaLabel,
239
+ size: 'small',
240
+ color: 'medium',
241
+ bold: false,
242
+ }"
243
+ />
244
+ }
245
+ </div>
246
+ </div>
247
+
248
+ @if (done()) {
249
+ <div class="attempt__done">
250
+ <ion-icon name="checkmark-circle-outline" aria-hidden="true" />
251
+ <val-text
252
+ [props]="{
253
+ content: doneLabel,
254
+ size: 'small',
255
+ color: 'medium',
256
+ bold: false,
257
+ }"
258
+ />
259
+ </div>
260
+ }
261
+ </div>
262
+ </ion-content>
263
+
264
+ @if (!done()) {
265
+ <div class="attempt__actions">
266
+ <val-button [props]="mineBtn" (click)="confirmMine()" />
267
+ <val-button [props]="blockBtn" (click)="confirmBlock()" />
268
+ </div>
269
+ } @else {
270
+ <div class="attempt__actions">
271
+ <val-button [props]="closeBtn" (click)="close()" />
272
+ </div>
273
+ }
274
+ `, styles: [":host{display:block}.attempt{display:flex;flex-direction:column;gap:18px;align-items:flex-start}.attempt__hero{width:56px;height:56px;border-radius:16px;display:flex;align-items:center;justify-content:center;background:#7026df1a}.attempt__hero ion-icon{font-size:30px;color:var(--ion-color-primary, #7026df)}.attempt__device{display:flex;align-items:center;gap:12px;width:100%;padding:14px 16px;border-radius:12px;background:var(--ion-color-light, #f4f5f8);border:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.attempt__device ion-icon{font-size:26px;color:var(--ion-color-dark);flex-shrink:0}.attempt__device-body{display:flex;flex-direction:column;gap:2px;min-width:0}.attempt__done{display:flex;align-items:center;gap:8px}.attempt__done ion-icon{font-size:20px;color:var(--ion-color-success);flex-shrink:0}.attempt__actions{display:flex;gap:10px;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.attempt__actions val-button{flex:1}\n"] }]
275
+ }], propDecorators: { title: [{
276
+ type: Input
277
+ }], body: [{
278
+ type: Input
279
+ }], deviceLabel: [{
280
+ type: Input
281
+ }], metaLabel: [{
282
+ type: Input
283
+ }], doneLabel: [{
284
+ type: Input
285
+ }], mineLabel: [{
286
+ type: Input
287
+ }], blockLabel: [{
288
+ type: Input
289
+ }], closeLabel: [{
290
+ type: Input
291
+ }], isMobile: [{
292
+ type: Input
293
+ }], onBlock: [{
294
+ type: Input
295
+ }], _modalRef: [{
296
+ type: Input
297
+ }] } });
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tYXR0ZW1wdC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2xvZ2luLWF0dGVtcHQtbW9kYWwvbG9naW4tYXR0ZW1wdC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFrQixlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBRTlELFFBQVEsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLENBQUMsQ0FBQztBQUU3RDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQWdLSCxNQUFNLE9BQU8sMEJBQTBCO0lBL0p2QztRQWdLRSwyQ0FBMkM7UUFDbEMsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNwQix5QkFBeUI7UUFDaEIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNuQixnRUFBZ0U7UUFDdkQsZ0JBQVcsR0FBRyxFQUFF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Q1AsZ0JBQWdCLDJFQUNoQixhQUFhLHdFQUNiLGVBQWU7OzRGQWtKTiwwQkFBMEI7a0JBL0p0QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsZUFBZTtxQkFDaEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRFVDs4QkFzRVEsS0FBSztzQkFBYixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQU1HLE9BQU87c0JBQWYsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25CdXR0b25zLCBJb25Db250ZW50LCBJb25IZWFkZXIsIElvbkljb24sIElvblRvb2xiYXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2hlY2ttYXJrQ2lyY2xlT3V0bGluZSwgc2hpZWxkQ2hlY2ttYXJrT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEsIENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuYWRkSWNvbnMoeyBzaGllbGRDaGVja21hcmtPdXRsaW5lLCBjaGVja21hcmtDaXJjbGVPdXRsaW5lIH0pO1xuXG4vKipcbiAqIGB2YWwtbG9naW4tYXR0ZW1wdC1tb2RhbGAg4oCUIG1vZGFsIGRlIGNvbmZpcm1hY2nDs24gZGUgaW50ZW50byBkZSBpbmljaW8gZGUgc2VzacOzbi5cbiAqXG4gKiBTZSBhYnJlIGN1YW5kbyBlbCB1c3VhcmlvIGxsZWdhIGEgbGEgdmlzdGEgU2VndXJpZGFkIHbDrWFcbiAqIGA/dG9rZW49Li4uYCBkZXNkZSBlbCBlbWFpbC9wdXNoIGRlIFwibnVldm8gYWNjZXNvXCIuIE11ZXN0cmEgZWwgZGlzcG9zaXRpdm9cbiAqIGRldGVjdGFkbyB5IGRvcyBhY2Npb25lczogY29uZmlybWFyIHF1ZSBmdWUgdW5vIG1pc21vIChjaWVycmEgc2luIGhhY2VyIG5hZGEpXG4gKiBvIGJsb3F1ZWFyIGVsIGRpc3Bvc2l0aXZvIChlamVjdXRhIGVsIHRva2VuIGRlIGFjY2nDs24pLlxuICpcbiAqIElucHV0cyB2w61hIGBjb21wb25lbnRQcm9wc2AgZGVsIE1vZGFsU2VydmljZS4gU2luIGBAT3V0cHV0YCAobm8gZnVuY2lvbmFuIGNvblxuICogYG1vZGFsQ29udHJvbGxlci5jcmVhdGUoKWApIOKAlCB1c2EgY2FsbGJhY2sgYG9uQmxvY2tgIHkgYF9tb2RhbFJlZi5kaXNtaXNzYC5cbiAqIFJlY2liZSBsb3MgbGFiZWxzIHlhIHRyYWR1Y2lkb3MgKGFnbsOzc3RpY28gYSBpMThuKS5cbiAqXG4gKiBIZWFkZXIgY2Fuw7NuaWNvIChSZWdsYSAjNSk6IHNpbiBgaW9uLXRpdGxlYCwgYm90w7NuIENlcnJhciB0ZXh0byBlbiBgc2xvdD1lbmRgLFxuICogdMOtdHVsbyBlbiBlbCBib2R5IGNvbiBgdmFsLWRpc3BsYXlgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbG9naW4tYXR0ZW1wdC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uQ29udGVudCxcbiAgICBJb25IZWFkZXIsXG4gICAgSW9uVG9vbGJhcixcbiAgICBJb25CdXR0b25zLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25JY29uLFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXI+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgY2xvc2VMYWJlbCB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInsgY29udGVudDogdGl0bGUsIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycgfVwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXR0ZW1wdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0ZW1wdF9faGVyb1wiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic2hpZWxkLWNoZWNrbWFyay1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IGJvZHksXG4gICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0ZW1wdF9fZGV2aWNlXCI+XG4gICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cImRldmljZUljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRlbXB0X19kZXZpY2UtYm9keVwiPlxuICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgY29udGVudDogZGV2aWNlTGFiZWwsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICBAaWYgKG1ldGFMYWJlbCkge1xuICAgICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgY29udGVudDogbWV0YUxhYmVsLFxuICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKGRvbmUoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRlbXB0X19kb25lXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFyay1jaXJjbGUtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBjb250ZW50OiBkb25lTGFiZWwsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9pb24tY29udGVudD5cblxuICAgIEBpZiAoIWRvbmUoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImF0dGVtcHRfX2FjdGlvbnNcIj5cbiAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cIm1pbmVCdG5cIiAoY2xpY2spPVwiY29uZmlybU1pbmUoKVwiIC8+XG4gICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJibG9ja0J0blwiIChjbGljayk9XCJjb25maXJtQmxvY2soKVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJhdHRlbXB0X19hY3Rpb25zXCI+XG4gICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJjbG9zZUJ0blwiIChjbGljayk9XCJjbG9zZSgpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5hdHRlbXB0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxOHB4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgIH1cbiAgICAgIC5hdHRlbXB0X19oZXJvIHtcbiAgICAgICAgd2lkdGg6IDU2cHg7XG4gICAgICAgIGhlaWdodDogNTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTEyLCAzOCwgMjIzLCAwLjEpO1xuICAgICAgfVxuICAgICAgLmF0dGVtcHRfX2hlcm8gaW9uLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDMwcHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgIzcwMjZkZik7XG4gICAgICB9XG4gICAgICAuYXR0ZW1wdF9fZGV2aWNlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMTRweCAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS12YWwtYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgIH1cbiAgICAgIC5hdHRlbXB0X19kZXZpY2UgaW9uLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDI2cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuICAgICAgLmF0dGVtcHRfX2RldmljZS1ib2R5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cbiAgICAgIC5hdHRlbXB0X19kb25lIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG4gICAgICAuYXR0ZW1wdF9fZG9uZSBpb24taWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1zdWNjZXNzKTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAuYXR0ZW1wdF9fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4IGNhbGMoMTJweCArIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tLCAwcHgpKTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgfVxuICAgICAgLmF0dGVtcHRfX2FjdGlvbnMgdmFsLWJ1dHRvbiB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTG9naW5BdHRlbXB0TW9kYWxDb21wb25lbnQge1xuICAvKiogVMOtdHVsbyBkZWwgbW9kYWwgKGkxOG4geWEgcmVzdWVsdG8pLiAqL1xuICBASW5wdXQoKSB0aXRsZSA9ICcnO1xuICAvKiogVGV4dG8gZXhwbGljYXRpdm8uICovXG4gIEBJbnB1dCgpIGJvZHkgPSAnJztcbiAgLyoqIERlc2NyaXBjacOzbiBkZWwgZGlzcG9zaXRpdm8gKG5hdmVnYWRvciDCtyBPUyDCtyB1YmljYWNpw7NuKS4gKi9cbiAgQElucHV0KCkgZGV2aWNlTGFiZWwgPSAnJztcbiAgLyoqIE1ldGFkYXRhIHNlY3VuZGFyaWEgKGZlY2hhLCBJUCkuIE9wY2lvbmFsLiAqL1xuICBASW5wdXQoKSBtZXRhTGFiZWwgPSAnJztcbiAgLyoqIE1lbnNhamUgbW9zdHJhZG8gdHJhcyBibG9xdWVhci4gKi9cbiAgQElucHV0KCkgZG9uZUxhYmVsID0gJyc7XG4gIC8qKiBMYWJlbHMgZGUgYm90b25lcy4gKi9cbiAgQElucHV0KCkgbWluZUxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIGJsb2NrTGFiZWwgPSAnJztcbiAgQElucHV0KCkgY2xvc2VMYWJlbCA9ICcnO1xuICAvKiogYHRydWVgIHNpIGVsIGRpc3Bvc2l0aXZvIGVzIG3Ds3ZpbCDigJQgY2FtYmlhIGVsIGljb25vLiAqL1xuICBASW5wdXQoKSBpc01vYmlsZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBxdWUgZWplY3V0YSBlbCBibG9xdWVvIChleGVjdXRlQWN0aW9uIGNvbiBlbCB0b2tlbikgY29udHJhIGVsXG4gICAqIGJhY2tlbmQuIExvIHByb3ZlZSBlbCBwYXJlbnQgdsOtYSBgY29tcG9uZW50UHJvcHNgLiBEZWJlIGxhbnphciBzaSBmYWxsYS5cbiAgICovXG4gIEBJbnB1dCgpIG9uQmxvY2s/OiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKiBJbnllY3RhZG8gcG9yIGBNb2RhbFNlcnZpY2Uub3BlbmAg4oCUIHJlZmVyZW5jaWEgcGFyYSBjZXJyYXIuICovXG4gIEBJbnB1dCgpIF9tb2RhbFJlZj86IHsgZGlzbWlzczogKGRhdGE/OiB1bmtub3duLCByb2xlPzogc3RyaW5nKSA9PiB2b2lkIH07XG5cbiAgLyoqIGB0cnVlYCB0cmFzIGJsb3F1ZWFyIGNvbiDDqXhpdG8g4oCUIGNhbWJpYSBlbCBtb2RhbCBhIGVzdGFkbyBcImhlY2hvXCIuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBkb25lID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSB3b3JraW5nID0gZmFsc2U7XG5cbiAgZ2V0IGRldmljZUljb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc01vYmlsZSA/ICdwaG9uZS1wb3J0cmFpdC1vdXRsaW5lJyA6ICdsYXB0b3Atb3V0bGluZSc7XG4gIH1cblxuICAvKiogXCJTw60sIGZ1aSB5b1wiIOKAlCBjaWVycmEgc2luIGFjY2nDs24uIEVsIGRpc3Bvc2l0aXZvIHlhIGVzdMOhIGFjdGl2by4gKi9cbiAgY29uZmlybU1pbmUoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWxSZWY/LmRpc21pc3ModW5kZWZpbmVkLCAnbWluZScpO1xuICB9XG5cbiAgLyoqIFwiTm8gZnVpIHlvXCIg4oCUIGVqZWN1dGEgZWwgYmxvcXVlbyB5IHBhc2EgYSBlc3RhZG8gZG9uZS4gKi9cbiAgYXN5bmMgY29uZmlybUJsb2NrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLndvcmtpbmcgfHwgIXRoaXMub25CbG9jaykgcmV0dXJuO1xuICAgIHRoaXMud29ya2luZyA9IHRydWU7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMub25CbG9jaygpO1xuICAgICAgdGhpcy5kb25lLnNldCh0cnVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEVsIHBhcmVudCBtdWVzdHJhIGVsIHRvYXN0IGRlIGVycm9yOyBjZXJyYW1vcyBlbCBtb2RhbC5cbiAgICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKHVuZGVmaW5lZCwgJ2Vycm9yJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMud29ya2luZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKHVuZGVmaW5lZCwgdGhpcy5kb25lKCkgPyAnYmxvY2tlZCcgOiAnY2xvc2UnKTtcbiAgfVxuXG4gIGdldCBtaW5lQnRuKCk6IFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogdGhpcy5taW5lTGFiZWwsXG4gICAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGJsb2NrQnRuKCk6IFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogdGhpcy5ibG9ja0xhYmVsLFxuICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgZmlsbDogJ3NvbGlkJyxcbiAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgIH07XG4gIH1cblxuICBnZXQgY2xvc2VCdG4oKTogUGFydGlhbDxCdXR0b25NZXRhZGF0YT4ge1xuICAgIHJldHVybiB7XG4gICAgICB0ZXh0OiB0aGlzLmNsb3NlTGFiZWwsXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgZmlsbDogJ3NvbGlkJyxcbiAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgIH07XG4gIH1cbn1cbiJdfQ==