@po-ui/ng-templates 18.23.1 → 19.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/po-ui-ng-templates.mjs +139 -122
- package/fesm2022/po-ui-ng-templates.mjs.map +1 -1
- package/lib/components/po-modal-password-recovery/po-modal-password-recovery-base.component.d.ts +1 -1
- package/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.d.ts +1 -1
- package/lib/components/po-page-blocked-user/po-page-blocked-user-base.component.d.ts +1 -1
- package/lib/components/po-page-blocked-user/po-page-blocked-user.component.d.ts +1 -1
- package/lib/components/po-page-change-password/po-page-change-password-base.component.d.ts +1 -1
- package/lib/components/po-page-change-password/po-page-change-password.service.d.ts +1 -1
- package/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-base.component.d.ts +1 -1
- package/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.d.ts +1 -1
- package/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.d.ts +2 -2
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-action.interface.d.ts +1 -1
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-table-action.interface.d.ts +1 -1
- package/lib/components/po-page-dynamic-table/po-page-dynamic-list-base.component.d.ts +2 -2
- package/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.d.ts +2 -2
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.d.ts +1 -1
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.d.ts +2 -2
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-job-scheduler-parameters-template/po-job-scheduler-parameters-template.directive.d.ts +1 -1
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.d.ts +1 -1
- package/lib/components/po-page-login/po-page-login-base.component.d.ts +1 -1
- package/lib/components/po-page-login/po-page-login.service.d.ts +1 -1
- package/package.json +13 -15
- package/po-ui-ng-templates-19.0.0-rc.0.tgz +0 -0
- package/schematics/ng-add/index.js +2 -2
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-blocked-user/index.js +1 -1
- package/schematics/ng-generate/po-page-blocked-user/index.js.map +1 -1
- package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-change-password/index.js +1 -1
- package/schematics/ng-generate/po-page-change-password/index.js.map +1 -1
- package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-dynamic-detail/index.js +1 -1
- package/schematics/ng-generate/po-page-dynamic-detail/index.js.map +1 -1
- package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-dynamic-edit/index.js +1 -1
- package/schematics/ng-generate/po-page-dynamic-edit/index.js.map +1 -1
- package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-dynamic-search/index.js +1 -1
- package/schematics/ng-generate/po-page-dynamic-search/index.js.map +1 -1
- package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-dynamic-table/index.js +1 -1
- package/schematics/ng-generate/po-page-dynamic-table/index.js.map +1 -1
- package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-job-scheduler/index.js +1 -1
- package/schematics/ng-generate/po-page-job-scheduler/index.js.map +1 -1
- package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-login/index.js +1 -1
- package/schematics/ng-generate/po-page-login/index.js.map +1 -1
- package/esm2022/lib/components/components.module.mjs +0 -84
- package/esm2022/lib/components/index.mjs +0 -12
- package/esm2022/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-modal-content.enum.mjs +0 -17
- package/esm2022/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-type.enum.mjs +0 -17
- package/esm2022/lib/components/po-modal-password-recovery/index.mjs +0 -8
- package/esm2022/lib/components/po-modal-password-recovery/interfaces/po-modal-password-recovery.interface.mjs +0 -2
- package/esm2022/lib/components/po-modal-password-recovery/literals/i18n/po-modal-password-recovery-literals.mjs +0 -119
- package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery-base.component.mjs +0 -293
- package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.mjs +0 -34
- package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.mjs +0 -451
- package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery.module.mjs +0 -29
- package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.mjs +0 -18
- package/esm2022/lib/components/po-page-background/index.mjs +0 -3
- package/esm2022/lib/components/po-page-background/po-page-background.component.mjs +0 -191
- package/esm2022/lib/components/po-page-background/po-page-background.module.mjs +0 -27
- package/esm2022/lib/components/po-page-blocked-user/enums/po-page-blocked-user-reason.enum.mjs +0 -17
- package/esm2022/lib/components/po-page-blocked-user/index.mjs +0 -8
- package/esm2022/lib/components/po-page-blocked-user/interfaces/po-page-blocked-user-reason-params.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-blocked-user/literals/i18n/po-page-blocked-user-literals.mjs +0 -78
- package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user-base.component.mjs +0 -197
- package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.mjs +0 -105
- package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.mjs +0 -107
- package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user.component.mjs +0 -108
- package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user.module.mjs +0 -29
- package/esm2022/lib/components/po-page-change-password/index.mjs +0 -7
- package/esm2022/lib/components/po-page-change-password/interfaces/po-page-change-password-recovery.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-change-password/interfaces/po-page-change-password-requirement.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-change-password/interfaces/po-page-change-password.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-change-password/literals/i18n/po-page-change-password-literals.mjs +0 -79
- package/esm2022/lib/components/po-page-change-password/po-page-change-password-base.component.mjs +0 -300
- package/esm2022/lib/components/po-page-change-password/po-page-change-password.component.mjs +0 -401
- package/esm2022/lib/components/po-page-change-password/po-page-change-password.module.mjs +0 -30
- package/esm2022/lib/components/po-page-change-password/po-page-change-password.service.mjs +0 -18
- package/esm2022/lib/components/po-page-dynamic-detail/index.mjs +0 -10
- package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-actions.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-back.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-edit.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-remove.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-field.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-metadata.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-options.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-detail/po-page-dynamic-detail-actions.service.mjs +0 -44
- package/esm2022/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.mjs +0 -546
- package/esm2022/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.module.mjs +0 -54
- package/esm2022/lib/components/po-page-dynamic-edit/index.mjs +0 -11
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-actions.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-cancel.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save-new.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-field.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-literals.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-metadata.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-options.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/po-page-dynamic-edit-actions.service.mjs +0 -44
- package/esm2022/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.mjs +0 -889
- package/esm2022/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.module.mjs +0 -60
- package/esm2022/lib/components/po-page-dynamic-search/index.mjs +0 -7
- package/esm2022/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-base.component.mjs +0 -133
- package/esm2022/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-literals.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.mjs +0 -76
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.mjs +0 -365
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-filters.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-literals.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-options.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.mjs +0 -349
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search.module.mjs +0 -52
- package/esm2022/lib/components/po-page-dynamic-table/index.mjs +0 -16
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-actions.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-detail.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-duplicate.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-edit.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-new.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove-all.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-action.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-table-action.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-field.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-filters.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-metadata.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-options.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-list-base.component.mjs +0 -271
- package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table-actions.service.mjs +0 -59
- package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table-literals.mjs +0 -63
- package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.mjs +0 -1257
- package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table.module.mjs +0 -50
- package/esm2022/lib/components/po-page-job-scheduler/index.mjs +0 -6
- package/esm2022/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler-internal.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.mjs +0 -302
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.mjs +0 -393
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-internal.mjs +0 -13
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-literals.mjs +0 -195
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-lookup.service.mjs +0 -22
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/index.mjs +0 -2
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-job-scheduler-parameters-template/index.mjs +0 -2
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-job-scheduler-parameters-template/po-job-scheduler-parameters-template.directive.mjs +0 -92
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.mjs +0 -79
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/index.mjs +0 -2
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-job-scheduler-summary-template/index.mjs +0 -2
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-job-scheduler-summary-template/po-job-scheduler-summary-template.directive.mjs +0 -44
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.mjs +0 -211
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.mjs +0 -418
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler.module.mjs +0 -85
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.mjs +0 -224
- package/esm2022/lib/components/po-page-login/enums/po-page-login-authentication-type.enum.mjs +0 -15
- package/esm2022/lib/components/po-page-login/index.mjs +0 -8
- package/esm2022/lib/components/po-page-login/interfaces/po-page-login-custom-field.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-login/interfaces/po-page-login-literals.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-login/interfaces/po-page-login-recovery.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-login/interfaces/po-page-login.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-login/po-page-login-base.component.mjs +0 -1099
- package/esm2022/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.mjs +0 -137
- package/esm2022/lib/components/po-page-login/po-page-login.component.mjs +0 -483
- package/esm2022/lib/components/po-page-login/po-page-login.module.mjs +0 -31
- package/esm2022/lib/components/po-page-login/po-page-login.service.mjs +0 -32
- package/esm2022/lib/index.mjs +0 -4
- package/esm2022/lib/po-templates.module.mjs +0 -18
- package/esm2022/lib/services/index.mjs +0 -4
- package/esm2022/lib/services/po-page-customization/index.mjs +0 -4
- package/esm2022/lib/services/po-page-customization/po-page-customization.module.mjs +0 -23
- package/esm2022/lib/services/po-page-customization/po-page-customization.service.mjs +0 -86
- package/esm2022/lib/services/po-page-customization/po-page-dynamic-options.interface.mjs +0 -2
- package/esm2022/lib/services/po-page-dynamic/index.mjs +0 -3
- package/esm2022/lib/services/po-page-dynamic/po-page-dynamic-literals.interface.mjs +0 -2
- package/esm2022/lib/services/po-page-dynamic/po-page-dynamic.module.mjs +0 -23
- package/esm2022/lib/services/po-page-dynamic/po-page-dynamic.service.mjs +0 -106
- package/esm2022/lib/services/services.module.mjs +0 -18
- package/esm2022/lib/utils/util.mjs +0 -428
- package/esm2022/po-ui-ng-templates.mjs +0 -5
- package/esm2022/public-api.mjs +0 -2
- package/po-ui-ng-templates-18.23.1.tgz +0 -0
|
@@ -1,483 +0,0 @@
|
|
|
1
|
-
import { NgForm } from '@angular/forms';
|
|
2
|
-
import { Component, ViewChild, ViewContainerRef } from '@angular/core';
|
|
3
|
-
import { isExternalLink } from '../../utils/util';
|
|
4
|
-
import { PoModalPasswordRecoveryComponent } from '../po-modal-password-recovery/po-modal-password-recovery.component';
|
|
5
|
-
import { PoModalPasswordRecoveryType } from '../po-modal-password-recovery/enums/po-modal-password-recovery-type.enum';
|
|
6
|
-
import { PoPageLoginBaseComponent, poPageLoginLiteralIn, poPageLoginLiteralsDefault } from './po-page-login-base.component';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/router";
|
|
9
|
-
import * as i2 from "@po-ui/ng-components";
|
|
10
|
-
import * as i3 from "./po-page-login.service";
|
|
11
|
-
import * as i4 from "@angular/common";
|
|
12
|
-
import * as i5 from "@angular/forms";
|
|
13
|
-
import * as i6 from "../po-page-background/po-page-background.component";
|
|
14
|
-
import * as i7 from "./po-page-login-popover/po-page-login-popover.component";
|
|
15
|
-
const _c0 = ["loginForm"];
|
|
16
|
-
const _c1 = ["pageLogin"];
|
|
17
|
-
function PoPageLoginComponent_po_tag_10_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
-
i0.ɵɵelement(0, "po-tag", 28);
|
|
19
|
-
} if (rf & 2) {
|
|
20
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
21
|
-
i0.ɵɵproperty("p-value", ctx_r1.environment);
|
|
22
|
-
} }
|
|
23
|
-
function PoPageLoginComponent_div_19_po_icon_1_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
-
i0.ɵɵelement(0, "po-icon", 31);
|
|
25
|
-
} if (rf & 2) {
|
|
26
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
27
|
-
i0.ɵɵproperty("p-tooltip", ctx_r1.pageLoginLiterals.loginHint);
|
|
28
|
-
} }
|
|
29
|
-
function PoPageLoginComponent_div_19_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
-
i0.ɵɵelementStart(0, "div", 29);
|
|
31
|
-
i0.ɵɵtemplate(1, PoPageLoginComponent_div_19_po_icon_1_Template, 1, 1, "po-icon", 30);
|
|
32
|
-
i0.ɵɵelementEnd();
|
|
33
|
-
} if (rf & 2) {
|
|
34
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
35
|
-
i0.ɵɵclassProp("po-page-login-info-icon-container-dynamic", !ctx_r1.pageLoginLiterals.loginHint && !ctx_r1.pageLoginLiterals.rememberUserHint);
|
|
36
|
-
i0.ɵɵadvance();
|
|
37
|
-
i0.ɵɵproperty("ngIf", ctx_r1.pageLoginLiterals.loginHint);
|
|
38
|
-
} }
|
|
39
|
-
function PoPageLoginComponent_div_21_Template(rf, ctx) { if (rf & 1) {
|
|
40
|
-
i0.ɵɵelementStart(0, "div", 32);
|
|
41
|
-
i0.ɵɵelement(1, "po-icon", 33);
|
|
42
|
-
i0.ɵɵelementStart(2, "span", 34);
|
|
43
|
-
i0.ɵɵtext(3);
|
|
44
|
-
i0.ɵɵelementEnd()();
|
|
45
|
-
} if (rf & 2) {
|
|
46
|
-
const error_r4 = ctx.$implicit;
|
|
47
|
-
i0.ɵɵadvance(3);
|
|
48
|
-
i0.ɵɵtextInterpolate(error_r4);
|
|
49
|
-
} }
|
|
50
|
-
function PoPageLoginComponent_div_25_po_page_login_popover_1_Template(rf, ctx) { if (rf & 1) {
|
|
51
|
-
const _r5 = i0.ɵɵgetCurrentView();
|
|
52
|
-
i0.ɵɵelementStart(0, "po-page-login-popover", 37);
|
|
53
|
-
i0.ɵɵlistener("p-forgot-password", function PoPageLoginComponent_div_25_po_page_login_popover_1_Template_po_page_login_popover_p_forgot_password_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openUrl($event)); });
|
|
54
|
-
i0.ɵɵelementEnd();
|
|
55
|
-
} if (rf & 2) {
|
|
56
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
57
|
-
i0.ɵɵproperty("p-literals", ctx_r1.pageLoginLiterals)("p-recovery", ctx_r1.recovery)("p-remaining-attempts", ctx_r1.exceededAttemptsWarning);
|
|
58
|
-
} }
|
|
59
|
-
function PoPageLoginComponent_div_25_Template(rf, ctx) { if (rf & 1) {
|
|
60
|
-
i0.ɵɵelementStart(0, "div", 35);
|
|
61
|
-
i0.ɵɵtemplate(1, PoPageLoginComponent_div_25_po_page_login_popover_1_Template, 1, 3, "po-page-login-popover", 36);
|
|
62
|
-
i0.ɵɵelementEnd();
|
|
63
|
-
} if (rf & 2) {
|
|
64
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
65
|
-
i0.ɵɵadvance();
|
|
66
|
-
i0.ɵɵproperty("ngIf", ctx_r1.showExceededAttemptsWarning && ctx_r1.exceededAttemptsWarning);
|
|
67
|
-
} }
|
|
68
|
-
function PoPageLoginComponent_div_27_Template(rf, ctx) { if (rf & 1) {
|
|
69
|
-
i0.ɵɵelementStart(0, "div", 32);
|
|
70
|
-
i0.ɵɵelement(1, "po-icon", 33);
|
|
71
|
-
i0.ɵɵelementStart(2, "span", 34);
|
|
72
|
-
i0.ɵɵtext(3);
|
|
73
|
-
i0.ɵɵelementEnd()();
|
|
74
|
-
} if (rf & 2) {
|
|
75
|
-
const error_r6 = ctx.$implicit;
|
|
76
|
-
i0.ɵɵadvance(3);
|
|
77
|
-
i0.ɵɵtextInterpolate(error_r6);
|
|
78
|
-
} }
|
|
79
|
-
function PoPageLoginComponent_po_input_28_Template(rf, ctx) { if (rf & 1) {
|
|
80
|
-
const _r7 = i0.ɵɵgetCurrentView();
|
|
81
|
-
i0.ɵɵelementStart(0, "po-input", 38);
|
|
82
|
-
i0.ɵɵtwoWayListener("ngModelChange", function PoPageLoginComponent_po_input_28_Template_po_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.customFieldObject.value, $event) || (ctx_r1.customFieldObject.value = $event); return i0.ɵɵresetView($event); });
|
|
83
|
-
i0.ɵɵlistener("keyup.enter", function PoPageLoginComponent_po_input_28_Template_po_input_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); const loginForm_r3 = i0.ɵɵreference(14); return i0.ɵɵresetView(loginForm_r3.valid && ctx_r1.onLoginSubmit()); });
|
|
84
|
-
i0.ɵɵelementEnd();
|
|
85
|
-
} if (rf & 2) {
|
|
86
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
87
|
-
i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx_r1.pageLoginLiterals.loginHint && !ctx_r1.pageLoginLiterals.rememberUserHint);
|
|
88
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.customFieldObject.value);
|
|
89
|
-
i0.ɵɵproperty("p-error-pattern", ctx_r1.customFieldObject.errorPattern || ctx_r1.pageLoginLiterals.customFieldErrorPattern)("p-pattern", ctx_r1.customFieldObject.pattern)("p-placeholder", ctx_r1.customFieldObject.placeholder || ctx_r1.pageLoginLiterals.customFieldPlaceholder);
|
|
90
|
-
} }
|
|
91
|
-
function PoPageLoginComponent_po_combo_29_Template(rf, ctx) { if (rf & 1) {
|
|
92
|
-
const _r8 = i0.ɵɵgetCurrentView();
|
|
93
|
-
i0.ɵɵelementStart(0, "po-combo", 39);
|
|
94
|
-
i0.ɵɵtwoWayListener("ngModelChange", function PoPageLoginComponent_po_combo_29_Template_po_combo_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.customFieldObject.value, $event) || (ctx_r1.customFieldObject.value = $event); return i0.ɵɵresetView($event); });
|
|
95
|
-
i0.ɵɵelementEnd();
|
|
96
|
-
} if (rf & 2) {
|
|
97
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
98
|
-
i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx_r1.pageLoginLiterals.loginHint && !ctx_r1.pageLoginLiterals.rememberUserHint);
|
|
99
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.customFieldObject.value);
|
|
100
|
-
i0.ɵɵproperty("p-field-value", ctx_r1.customFieldObject.fieldValue)("p-filter-service", ctx_r1.customFieldObject.url)("p-placeholder", ctx_r1.customFieldObject.placeholder || ctx_r1.pageLoginLiterals.customFieldPlaceholder);
|
|
101
|
-
} }
|
|
102
|
-
function PoPageLoginComponent_po_select_30_Template(rf, ctx) { if (rf & 1) {
|
|
103
|
-
const _r9 = i0.ɵɵgetCurrentView();
|
|
104
|
-
i0.ɵɵelementStart(0, "po-select", 40);
|
|
105
|
-
i0.ɵɵtwoWayListener("ngModelChange", function PoPageLoginComponent_po_select_30_Template_po_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.customFieldObject.value, $event) || (ctx_r1.customFieldObject.value = $event); return i0.ɵɵresetView($event); });
|
|
106
|
-
i0.ɵɵelementEnd();
|
|
107
|
-
} if (rf & 2) {
|
|
108
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
109
|
-
i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx_r1.pageLoginLiterals.loginHint && !ctx_r1.pageLoginLiterals.rememberUserHint);
|
|
110
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.customFieldObject.value);
|
|
111
|
-
i0.ɵɵproperty("p-placeholder", ctx_r1.customFieldObject.placeholder || ctx_r1.pageLoginLiterals.customFieldPlaceholder)("p-options", ctx_r1.customFieldObject.options);
|
|
112
|
-
} }
|
|
113
|
-
function PoPageLoginComponent_div_32_div_2_po_icon_1_Template(rf, ctx) { if (rf & 1) {
|
|
114
|
-
i0.ɵɵelement(0, "po-icon", 31);
|
|
115
|
-
} if (rf & 2) {
|
|
116
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
117
|
-
i0.ɵɵproperty("p-tooltip", ctx_r1.pageLoginLiterals.rememberUserHint);
|
|
118
|
-
} }
|
|
119
|
-
function PoPageLoginComponent_div_32_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
120
|
-
i0.ɵɵelementStart(0, "div", 43);
|
|
121
|
-
i0.ɵɵtemplate(1, PoPageLoginComponent_div_32_div_2_po_icon_1_Template, 1, 1, "po-icon", 30);
|
|
122
|
-
i0.ɵɵelementEnd();
|
|
123
|
-
} if (rf & 2) {
|
|
124
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
125
|
-
i0.ɵɵclassProp("po-page-login-info-icon-container-dynamic", !ctx_r1.pageLoginLiterals.rememberUserHint);
|
|
126
|
-
i0.ɵɵadvance();
|
|
127
|
-
i0.ɵɵproperty("ngIf", ctx_r1.pageLoginLiterals.rememberUserHint);
|
|
128
|
-
} }
|
|
129
|
-
function PoPageLoginComponent_div_32_Template(rf, ctx) { if (rf & 1) {
|
|
130
|
-
const _r10 = i0.ɵɵgetCurrentView();
|
|
131
|
-
i0.ɵɵelementStart(0, "div", 13)(1, "po-switch", 41);
|
|
132
|
-
i0.ɵɵtwoWayListener("ngModelChange", function PoPageLoginComponent_div_32_Template_po_switch_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.rememberUser, $event) || (ctx_r1.rememberUser = $event); return i0.ɵɵresetView($event); });
|
|
133
|
-
i0.ɵɵlistener("keyup.enter", function PoPageLoginComponent_div_32_Template_po_switch_keyup_enter_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); const loginForm_r3 = i0.ɵɵreference(14); return i0.ɵɵresetView(loginForm_r3.valid && ctx_r1.onLoginSubmit()); });
|
|
134
|
-
i0.ɵɵelementEnd();
|
|
135
|
-
i0.ɵɵtemplate(2, PoPageLoginComponent_div_32_div_2_Template, 2, 3, "div", 42);
|
|
136
|
-
i0.ɵɵelementEnd();
|
|
137
|
-
} if (rf & 2) {
|
|
138
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
139
|
-
i0.ɵɵadvance();
|
|
140
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.rememberUser);
|
|
141
|
-
i0.ɵɵproperty("p-label-off", ctx_r1.pageLoginLiterals.rememberUser)("p-label-on", ctx_r1.pageLoginLiterals.rememberUser)("p-hide-label-status", ctx_r1.hideLabelStatus);
|
|
142
|
-
i0.ɵɵadvance();
|
|
143
|
-
i0.ɵɵproperty("ngIf", ctx_r1.pageLoginLiterals.loginHint || ctx_r1.pageLoginLiterals.rememberUserHint);
|
|
144
|
-
} }
|
|
145
|
-
function PoPageLoginComponent_div_34_Template(rf, ctx) { if (rf & 1) {
|
|
146
|
-
const _r11 = i0.ɵɵgetCurrentView();
|
|
147
|
-
i0.ɵɵelementStart(0, "div", 44)(1, "a", 45);
|
|
148
|
-
i0.ɵɵlistener("click", function PoPageLoginComponent_div_34_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openUrl(ctx_r1.recovery)); });
|
|
149
|
-
i0.ɵɵtext(2);
|
|
150
|
-
i0.ɵɵelementEnd()();
|
|
151
|
-
} if (rf & 2) {
|
|
152
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
153
|
-
i0.ɵɵadvance(2);
|
|
154
|
-
i0.ɵɵtextInterpolate(ctx_r1.pageLoginLiterals.forgotPassword);
|
|
155
|
-
} }
|
|
156
|
-
function PoPageLoginComponent_div_35_Template(rf, ctx) { if (rf & 1) {
|
|
157
|
-
const _r12 = i0.ɵɵgetCurrentView();
|
|
158
|
-
i0.ɵɵelementStart(0, "div", 46)(1, "a", 45);
|
|
159
|
-
i0.ɵɵlistener("click", function PoPageLoginComponent_div_35_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openUrl(ctx_r1.registerUrl)); });
|
|
160
|
-
i0.ɵɵtext(2);
|
|
161
|
-
i0.ɵɵelementEnd()();
|
|
162
|
-
} if (rf & 2) {
|
|
163
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
164
|
-
i0.ɵɵadvance(2);
|
|
165
|
-
i0.ɵɵtextInterpolate(ctx_r1.pageLoginLiterals.registerUrl);
|
|
166
|
-
} }
|
|
167
|
-
/**
|
|
168
|
-
* @docsExtends PoPageLoginBaseComponent
|
|
169
|
-
*
|
|
170
|
-
* @example
|
|
171
|
-
*
|
|
172
|
-
* <example name="po-page-login-basic" title="PO Page Login Basic">
|
|
173
|
-
* <file name="sample-po-page-login-basic/sample-po-page-login-basic.component.html"> </file>
|
|
174
|
-
* <file name="sample-po-page-login-basic/sample-po-page-login-basic.component.ts"> </file>
|
|
175
|
-
* </example>
|
|
176
|
-
*
|
|
177
|
-
* <example name="po-page-login-labs" title="PO Page Login Labs">
|
|
178
|
-
* <file name="sample-po-page-login-labs/sample-po-page-login-labs.component.html"> </file>
|
|
179
|
-
* <file name="sample-po-page-login-labs/sample-po-page-login-labs.component.ts"> </file>
|
|
180
|
-
* </example>
|
|
181
|
-
*
|
|
182
|
-
* <example name="po-page-login-human-resources" title="PO Page Login - Human Resources">
|
|
183
|
-
* <file name="sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.html"> </file>
|
|
184
|
-
* <file name="sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.ts"> </file>
|
|
185
|
-
* <file name="sample-po-page-login-human-resources/sample-po-page-login-human-resources.module.ts"> </file>
|
|
186
|
-
* </example>
|
|
187
|
-
*
|
|
188
|
-
* <example name="po-page-login-automatic-service" title="PO Page Login - Automatic Service">
|
|
189
|
-
* <file name="sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.html"> </file>
|
|
190
|
-
* <file name="sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.ts"> </file>
|
|
191
|
-
* </example>
|
|
192
|
-
*/
|
|
193
|
-
export class PoPageLoginComponent extends PoPageLoginBaseComponent {
|
|
194
|
-
changeDetector;
|
|
195
|
-
activatedRoute;
|
|
196
|
-
poComponentInjector;
|
|
197
|
-
loginForm;
|
|
198
|
-
pageLogin;
|
|
199
|
-
initialSelectLanguage;
|
|
200
|
-
componentRef = null;
|
|
201
|
-
differ;
|
|
202
|
-
customPasswordError = { custom: false };
|
|
203
|
-
constructor(changeDetector, activatedRoute, poComponentInjector, differs, loginService, router, poLanguageService) {
|
|
204
|
-
super(loginService, router, poLanguageService);
|
|
205
|
-
this.changeDetector = changeDetector;
|
|
206
|
-
this.activatedRoute = activatedRoute;
|
|
207
|
-
this.poComponentInjector = poComponentInjector;
|
|
208
|
-
this.differ = differs.find([]).create(null);
|
|
209
|
-
}
|
|
210
|
-
ngAfterViewChecked() {
|
|
211
|
-
if (this.differ) {
|
|
212
|
-
this.validateArrayChanges(this.differ, [
|
|
213
|
-
{ array: this.loginErrors, callback: this.generateLoginError.bind(this) },
|
|
214
|
-
{ array: this.passwordErrors, callback: this.generatePasswordError.bind(this) }
|
|
215
|
-
]);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
ngOnInit() {
|
|
219
|
-
this.checkingForRouteMetadata(this.activatedRoute.snapshot.data);
|
|
220
|
-
this.selectedLanguage = this.initializeLanguage();
|
|
221
|
-
this.initialSelectLanguage = this.selectedLanguage;
|
|
222
|
-
}
|
|
223
|
-
activateSupport() {
|
|
224
|
-
switch (typeof this.support) {
|
|
225
|
-
case 'string': {
|
|
226
|
-
this.setUrlRedirect(this.support);
|
|
227
|
-
break;
|
|
228
|
-
}
|
|
229
|
-
case 'function': {
|
|
230
|
-
this.support();
|
|
231
|
-
break;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
changeLoginModel() {
|
|
236
|
-
if (this.authenticationUrl) {
|
|
237
|
-
this.loginErrors = [];
|
|
238
|
-
}
|
|
239
|
-
else {
|
|
240
|
-
this.setLoginErrors(this.loginErrors);
|
|
241
|
-
this.loginChange.emit(this.login);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
changePasswordModel() {
|
|
245
|
-
if (this.authenticationUrl) {
|
|
246
|
-
this.passwordErrors = [];
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
this.setPasswordErrors(this.passwordErrors);
|
|
250
|
-
this.passwordChange.emit(this.password);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
onSelectedLanguage(language) {
|
|
254
|
-
this.languageChange.emit(this.languagesList.find(languageItem => languageItem.language === language));
|
|
255
|
-
this.selectedLanguage = language;
|
|
256
|
-
}
|
|
257
|
-
openUrl(recovery) {
|
|
258
|
-
switch (typeof recovery) {
|
|
259
|
-
case 'string': {
|
|
260
|
-
this.setUrlRedirect(recovery);
|
|
261
|
-
break;
|
|
262
|
-
}
|
|
263
|
-
case 'function': {
|
|
264
|
-
recovery();
|
|
265
|
-
break;
|
|
266
|
-
}
|
|
267
|
-
case 'object': {
|
|
268
|
-
this.createModalPasswordRecoveryComponent(recovery);
|
|
269
|
-
break;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
concatenateLoginHintWithContactEmail(contactEmail) {
|
|
274
|
-
const defaultLoginHintLiteral = poPageLoginLiteralsDefault[this.language].loginHint;
|
|
275
|
-
const prepositionLiteral = poPageLoginLiteralIn[this.language];
|
|
276
|
-
return this.concatenateLiteral(contactEmail, 'loginHint', defaultLoginHintLiteral, prepositionLiteral);
|
|
277
|
-
}
|
|
278
|
-
setLoginErrors(errors) {
|
|
279
|
-
const control = this.loginForm.form.controls['login'];
|
|
280
|
-
this.setControlErrors('allLoginErrors', control, errors, this.pageLoginLiterals.loginErrorPattern);
|
|
281
|
-
}
|
|
282
|
-
setPasswordErrors(errors) {
|
|
283
|
-
const control = this.loginForm.form.controls['password'];
|
|
284
|
-
this.setControlErrors('allPasswordErrors', control, errors, this.pageLoginLiterals.passwordErrorPattern);
|
|
285
|
-
}
|
|
286
|
-
checkingForMetadataProperty(object, property) {
|
|
287
|
-
if (Object.prototype.hasOwnProperty.call(object, property)) {
|
|
288
|
-
return object[property];
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
checkingForRouteMetadata(data) {
|
|
292
|
-
if (Object.keys(data).length !== 0) {
|
|
293
|
-
this.authenticationUrl = this.checkingForMetadataProperty(data, 'serviceApi') || this.authenticationUrl;
|
|
294
|
-
this.authenticationType = this.checkingForMetadataProperty(data, 'authenticationType') || this.authenticationType;
|
|
295
|
-
this.environment = this.checkingForMetadataProperty(data, 'environment') || this.environment;
|
|
296
|
-
this.recovery = this.checkingForMetadataProperty(data, 'recovery') || this.recovery;
|
|
297
|
-
this.registerUrl = this.checkingForMetadataProperty(data, 'registerUrl') || this.registerUrl;
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
concatenate(defaultLiteral, prefixLiteral, value) {
|
|
301
|
-
return `${defaultLiteral} ${prefixLiteral} ${value}`;
|
|
302
|
-
}
|
|
303
|
-
concatenateLiteral(value, literal, defaultLiteral, prepositionLiteral) {
|
|
304
|
-
return { [literal]: this.concatenate(defaultLiteral, prepositionLiteral, value) };
|
|
305
|
-
}
|
|
306
|
-
createModalPasswordRecoveryComponent(poPageLoginRecovery) {
|
|
307
|
-
if (this.componentRef) {
|
|
308
|
-
this.poComponentInjector.destroyComponentInApplication(this.componentRef);
|
|
309
|
-
}
|
|
310
|
-
this.componentRef = this.poComponentInjector.createComponentInApplication(PoModalPasswordRecoveryComponent);
|
|
311
|
-
this.componentRef.instance.urlRecovery = poPageLoginRecovery.url;
|
|
312
|
-
this.componentRef.instance.contactEmail = poPageLoginRecovery.contactMail;
|
|
313
|
-
this.componentRef.instance.phoneMask = poPageLoginRecovery.phoneMask;
|
|
314
|
-
this.componentRef.instance.type = poPageLoginRecovery.type || PoModalPasswordRecoveryType.Email;
|
|
315
|
-
this.componentRef.changeDetectorRef.detectChanges();
|
|
316
|
-
setTimeout(() => {
|
|
317
|
-
this.componentRef.instance.open();
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
|
-
generateLoginError() {
|
|
321
|
-
if (this.loginErrors && this.loginErrors.length) {
|
|
322
|
-
this.setLoginErrors(this.loginErrors);
|
|
323
|
-
}
|
|
324
|
-
else {
|
|
325
|
-
const control = this.loginForm.form.controls['login'];
|
|
326
|
-
if (control) {
|
|
327
|
-
this.resetControl(control);
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
generatePasswordError() {
|
|
332
|
-
if (this.passwordErrors && this.passwordErrors.length) {
|
|
333
|
-
this.setPasswordErrors(this.passwordErrors);
|
|
334
|
-
}
|
|
335
|
-
else {
|
|
336
|
-
const control = this.loginForm.form.controls['password'];
|
|
337
|
-
if (control) {
|
|
338
|
-
this.resetControl(control);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
resetControl(control) {
|
|
343
|
-
control.markAsPristine();
|
|
344
|
-
control.markAsUntouched();
|
|
345
|
-
control.updateValueAndValidity();
|
|
346
|
-
}
|
|
347
|
-
setControlErrors(allErrors, control, errors, patternError) {
|
|
348
|
-
if (control) {
|
|
349
|
-
this[allErrors] = control.hasError('pattern') ? [...errors, ...[patternError]] : [...errors];
|
|
350
|
-
if (errors && errors.length && (control.valid || control.pristine)) {
|
|
351
|
-
control.markAsTouched();
|
|
352
|
-
control.markAsDirty();
|
|
353
|
-
control.setErrors(this.customPasswordError);
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
setUrlRedirect(url) {
|
|
358
|
-
isExternalLink(url) ? window.open(url, '_blank') : this.router.navigate([url]);
|
|
359
|
-
}
|
|
360
|
-
validateArrayChanges(differ, array) {
|
|
361
|
-
array.forEach(element => {
|
|
362
|
-
const changes = differ.diff(element.array);
|
|
363
|
-
if (changes) {
|
|
364
|
-
element.callback();
|
|
365
|
-
this.changeDetector.detectChanges();
|
|
366
|
-
}
|
|
367
|
-
});
|
|
368
|
-
}
|
|
369
|
-
initializeLanguage() {
|
|
370
|
-
const language = this.languagesList.find(languageItem => languageItem.language === this.language);
|
|
371
|
-
return language?.language || this.languagesList[0].language;
|
|
372
|
-
}
|
|
373
|
-
static ɵfac = function PoPageLoginComponent_Factory(t) { return new (t || PoPageLoginComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.PoComponentInjectorService), i0.ɵɵdirectiveInject(i0.IterableDiffers), i0.ɵɵdirectiveInject(i3.PoPageLoginService), i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.PoLanguageService)); };
|
|
374
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoPageLoginComponent, selectors: [["po-page-login"]], viewQuery: function PoPageLoginComponent_Query(rf, ctx) { if (rf & 1) {
|
|
375
|
-
i0.ɵɵviewQuery(_c0, 7, NgForm);
|
|
376
|
-
i0.ɵɵviewQuery(_c1, 7, ViewContainerRef);
|
|
377
|
-
} if (rf & 2) {
|
|
378
|
-
let _t;
|
|
379
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loginForm = _t.first);
|
|
380
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pageLogin = _t.first);
|
|
381
|
-
} }, features: [i0.ɵɵInheritDefinitionFeature], decls: 36, vars: 42, consts: [["pageLogin", ""], ["loginForm", "ngForm"], [1, "po-page-login-support", 3, "click", "hidden"], ["p-icon", "ICON_HELP"], [3, "p-selected-language", "p-show-select-language", "p-languages", "p-initial-language", "p-background", "p-highlight-info", "p-logo", "p-secondary-logo"], [1, "po-page-login-header"], [1, "po-page-login-header-product-name"], [1, "po-page-login-header-product-environment", "po-mb-md-4", "po-mb-sm-1"], ["p-type", "warning", 3, "p-value", 4, "ngIf"], [1, "po-page-login-header-welcome", "po-mb-md-4", "po-mb-sm-2"], [1, "po-page-login-form"], [1, "po-row"], [1, "po-lg-12"], [1, "po-page-login-hint", "po-page-login-info-container"], ["name", "login", "p-auto-focus", "", "p-required", "", 1, "po-page-login-info-field", 3, "ngModelChange", "click", "keyup.enter", "p-change-model", "ngModel", "p-label", "p-no-autocomplete", "p-pattern", "p-placeholder"], ["class", "po-page-login-info-icon-container", 3, "po-page-login-info-icon-container-dynamic", 4, "ngIf"], [1, "po-field-container-bottom", "po-field-container-error-container"], ["class", "po-field-container-bottom-text-error po-field-container-error-item", 4, "ngFor", "ngForOf"], [1, "po-page-login-password-container"], ["name", "password", "p-required", "", 1, "po-page-login-field-size", "po-page-login-password-item", 3, "ngModelChange", "click", "keyup.enter", "p-change-model", "ngModel", "p-hide-password-peek", "p-label", "p-no-autocomplete", "p-pattern", "p-placeholder"], ["class", "po-page-login-password-item po-page-login-password-popover-container", 4, "ngIf"], ["class", "po-page-login-field-size po-lg-12", "name", "customFieldInput", "p-required", "", 3, "po-page-login-field-size-dynamic", "ngModel", "p-error-pattern", "p-pattern", "p-placeholder", "ngModelChange", "keyup.enter", 4, "ngIf"], ["class", "po-page-login-field-size po-lg-12", "name", "customFieldCombo", "p-required", "", 3, "po-page-login-field-size-dynamic", "ngModel", "p-field-value", "p-filter-service", "p-placeholder", "ngModelChange", 4, "ngIf"], ["class", "po-page-login-field-size po-lg-12", "name", "customFieldSelect", "p-required", "", 3, "po-page-login-field-size-dynamic", "ngModel", "p-placeholder", "p-options", "ngModelChange", 4, "ngIf"], ["class", "po-page-login-hint po-page-login-info-container", 4, "ngIf"], ["p-kind", "primary", 1, "po-lg-12", "po-page-login-button", "po-page-login-field-size", 3, "p-click", "p-disabled", "p-label", "p-loading"], ["class", "po-page-login-recovery-link", 4, "ngIf"], ["class", "po-page-login-register-link", 4, "ngIf"], ["p-type", "warning", 3, "p-value"], [1, "po-page-login-info-icon-container"], ["p-icon", "ICON_INFO po-field-icon", "p-tooltip-position", "right", 3, "p-tooltip", 4, "ngIf"], ["p-icon", "ICON_INFO po-field-icon", "p-tooltip-position", "right", 3, "p-tooltip"], [1, "po-field-container-bottom-text-error", "po-field-container-error-item"], ["p-icon", "ICON_EXCLAMATION"], [1, "po-field-container-error-text"], [1, "po-page-login-password-item", "po-page-login-password-popover-container"], [3, "p-literals", "p-recovery", "p-remaining-attempts", "p-forgot-password", 4, "ngIf"], [3, "p-forgot-password", "p-literals", "p-recovery", "p-remaining-attempts"], ["name", "customFieldInput", "p-required", "", 1, "po-page-login-field-size", "po-lg-12", 3, "ngModelChange", "keyup.enter", "ngModel", "p-error-pattern", "p-pattern", "p-placeholder"], ["name", "customFieldCombo", "p-required", "", 1, "po-page-login-field-size", "po-lg-12", 3, "ngModelChange", "ngModel", "p-field-value", "p-filter-service", "p-placeholder"], ["name", "customFieldSelect", "p-required", "", 1, "po-page-login-field-size", "po-lg-12", 3, "ngModelChange", "ngModel", "p-placeholder", "p-options"], ["name", "rememberUser", "p-label-position", "1", 1, "po-page-login-info-field", "po-lg-7", "po-offset-lg-5", "po-offset-xl-5", 3, "ngModelChange", "keyup.enter", "ngModel", "p-label-off", "p-label-on", "p-hide-label-status"], ["class", "po-page-login-info-icon-container po-page-login-info-icon-remember-user", 3, "po-page-login-info-icon-container-dynamic", 4, "ngIf"], [1, "po-page-login-info-icon-container", "po-page-login-info-icon-remember-user"], [1, "po-page-login-recovery-link"], [1, "po-font-text-large-bold", 3, "click"], [1, "po-page-login-register-link"]], template: function PoPageLoginComponent_Template(rf, ctx) { if (rf & 1) {
|
|
382
|
-
const _r1 = i0.ɵɵgetCurrentView();
|
|
383
|
-
i0.ɵɵelementStart(0, "button", 2);
|
|
384
|
-
i0.ɵɵlistener("click", function PoPageLoginComponent_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.activateSupport()); });
|
|
385
|
-
i0.ɵɵelement(1, "po-icon", 3);
|
|
386
|
-
i0.ɵɵtext(2);
|
|
387
|
-
i0.ɵɵelementEnd();
|
|
388
|
-
i0.ɵɵelementStart(3, "po-page-background", 4, 0);
|
|
389
|
-
i0.ɵɵlistener("p-selected-language", function PoPageLoginComponent_Template_po_page_background_p_selected_language_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSelectedLanguage($event)); });
|
|
390
|
-
i0.ɵɵelementStart(5, "header", 5)(6, "div", 6)(7, "h1");
|
|
391
|
-
i0.ɵɵtext(8);
|
|
392
|
-
i0.ɵɵelementEnd()();
|
|
393
|
-
i0.ɵɵelementStart(9, "div", 7);
|
|
394
|
-
i0.ɵɵtemplate(10, PoPageLoginComponent_po_tag_10_Template, 1, 1, "po-tag", 8);
|
|
395
|
-
i0.ɵɵelementEnd();
|
|
396
|
-
i0.ɵɵelementStart(11, "div", 9);
|
|
397
|
-
i0.ɵɵtext(12);
|
|
398
|
-
i0.ɵɵelementEnd()();
|
|
399
|
-
i0.ɵɵelementStart(13, "form", 10, 1)(15, "div", 11)(16, "div", 12)(17, "div", 13)(18, "po-login", 14);
|
|
400
|
-
i0.ɵɵtwoWayListener("ngModelChange", function PoPageLoginComponent_Template_po_login_ngModelChange_18_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.login, $event) || (ctx.login = $event); return i0.ɵɵresetView($event); });
|
|
401
|
-
i0.ɵɵlistener("click", function PoPageLoginComponent_Template_po_login_click_18_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.closePopover()); })("keyup.enter", function PoPageLoginComponent_Template_po_login_keyup_enter_18_listener() { i0.ɵɵrestoreView(_r1); const loginForm_r3 = i0.ɵɵreference(14); return i0.ɵɵresetView(loginForm_r3.valid && ctx.onLoginSubmit()); })("p-change-model", function PoPageLoginComponent_Template_po_login_p_change_model_18_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.changeLoginModel()); });
|
|
402
|
-
i0.ɵɵelementEnd();
|
|
403
|
-
i0.ɵɵtemplate(19, PoPageLoginComponent_div_19_Template, 2, 3, "div", 15);
|
|
404
|
-
i0.ɵɵelementEnd();
|
|
405
|
-
i0.ɵɵelementStart(20, "div", 16);
|
|
406
|
-
i0.ɵɵtemplate(21, PoPageLoginComponent_div_21_Template, 4, 1, "div", 17);
|
|
407
|
-
i0.ɵɵelementEnd()();
|
|
408
|
-
i0.ɵɵelementStart(22, "div", 12)(23, "div", 18)(24, "po-password", 19);
|
|
409
|
-
i0.ɵɵtwoWayListener("ngModelChange", function PoPageLoginComponent_Template_po_password_ngModelChange_24_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.password, $event) || (ctx.password = $event); return i0.ɵɵresetView($event); });
|
|
410
|
-
i0.ɵɵlistener("click", function PoPageLoginComponent_Template_po_password_click_24_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.closePopover()); })("keyup.enter", function PoPageLoginComponent_Template_po_password_keyup_enter_24_listener() { i0.ɵɵrestoreView(_r1); const loginForm_r3 = i0.ɵɵreference(14); return i0.ɵɵresetView(loginForm_r3.valid && ctx.onLoginSubmit()); })("p-change-model", function PoPageLoginComponent_Template_po_password_p_change_model_24_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.changePasswordModel()); });
|
|
411
|
-
i0.ɵɵelementEnd();
|
|
412
|
-
i0.ɵɵtemplate(25, PoPageLoginComponent_div_25_Template, 2, 1, "div", 20);
|
|
413
|
-
i0.ɵɵelementEnd();
|
|
414
|
-
i0.ɵɵelementStart(26, "div", 16);
|
|
415
|
-
i0.ɵɵtemplate(27, PoPageLoginComponent_div_27_Template, 4, 1, "div", 17);
|
|
416
|
-
i0.ɵɵelementEnd()();
|
|
417
|
-
i0.ɵɵtemplate(28, PoPageLoginComponent_po_input_28_Template, 1, 6, "po-input", 21)(29, PoPageLoginComponent_po_combo_29_Template, 1, 6, "po-combo", 22)(30, PoPageLoginComponent_po_select_30_Template, 1, 5, "po-select", 23);
|
|
418
|
-
i0.ɵɵelementStart(31, "div", 12);
|
|
419
|
-
i0.ɵɵtemplate(32, PoPageLoginComponent_div_32_Template, 3, 5, "div", 24);
|
|
420
|
-
i0.ɵɵelementEnd();
|
|
421
|
-
i0.ɵɵelementStart(33, "po-button", 25);
|
|
422
|
-
i0.ɵɵlistener("p-click", function PoPageLoginComponent_Template_po_button_p_click_33_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onLoginSubmit()); });
|
|
423
|
-
i0.ɵɵelementEnd();
|
|
424
|
-
i0.ɵɵtemplate(34, PoPageLoginComponent_div_34_Template, 3, 1, "div", 26)(35, PoPageLoginComponent_div_35_Template, 3, 1, "div", 27);
|
|
425
|
-
i0.ɵɵelementEnd()()();
|
|
426
|
-
} if (rf & 2) {
|
|
427
|
-
const loginForm_r3 = i0.ɵɵreference(14);
|
|
428
|
-
i0.ɵɵproperty("hidden", !ctx.support);
|
|
429
|
-
i0.ɵɵadvance(2);
|
|
430
|
-
i0.ɵɵtextInterpolate1(" ", ctx.pageLoginLiterals == null ? null : ctx.pageLoginLiterals.support, "\n");
|
|
431
|
-
i0.ɵɵadvance();
|
|
432
|
-
i0.ɵɵproperty("p-show-select-language", ctx.showLanguage)("p-languages", ctx.languagesList)("p-initial-language", ctx.initialSelectLanguage)("p-background", ctx.background)("p-highlight-info", ctx.pageLoginLiterals.highlightInfo)("p-logo", ctx.logo)("p-secondary-logo", ctx.secondaryLogo);
|
|
433
|
-
i0.ɵɵadvance(5);
|
|
434
|
-
i0.ɵɵtextInterpolate(ctx.productName);
|
|
435
|
-
i0.ɵɵadvance(2);
|
|
436
|
-
i0.ɵɵproperty("ngIf", ctx.environment);
|
|
437
|
-
i0.ɵɵadvance(2);
|
|
438
|
-
i0.ɵɵtextInterpolate(ctx.pageLoginLiterals.welcome);
|
|
439
|
-
i0.ɵɵadvance(6);
|
|
440
|
-
i0.ɵɵclassProp("po-page-login-info-field-dynamic", !ctx.pageLoginLiterals.loginHint && !ctx.pageLoginLiterals.rememberUserHint);
|
|
441
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx.login);
|
|
442
|
-
i0.ɵɵproperty("p-label", ctx.pageLoginLiterals.loginLabel)("p-no-autocomplete", ctx.noAutocompleteLogin)("p-pattern", ctx.loginPattern)("p-placeholder", ctx.pageLoginLiterals.loginPlaceholder);
|
|
443
|
-
i0.ɵɵadvance();
|
|
444
|
-
i0.ɵɵproperty("ngIf", ctx.pageLoginLiterals.loginHint || ctx.pageLoginLiterals.rememberUserHint);
|
|
445
|
-
i0.ɵɵadvance(2);
|
|
446
|
-
i0.ɵɵproperty("ngForOf", ctx.allLoginErrors);
|
|
447
|
-
i0.ɵɵadvance(3);
|
|
448
|
-
i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx.pageLoginLiterals.loginHint && !ctx.pageLoginLiterals.rememberUserHint);
|
|
449
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx.password);
|
|
450
|
-
i0.ɵɵproperty("p-hide-password-peek", ctx.hidePasswordPeek)("p-label", ctx.pageLoginLiterals.passwordLabel)("p-no-autocomplete", ctx.noAutocompletePassword)("p-pattern", ctx.passwordPattern)("p-placeholder", ctx.pageLoginLiterals.passwordPlaceholder);
|
|
451
|
-
i0.ɵɵadvance();
|
|
452
|
-
i0.ɵɵproperty("ngIf", ctx.pageLoginLiterals.loginHint || ctx.pageLoginLiterals.rememberUserHint);
|
|
453
|
-
i0.ɵɵadvance(2);
|
|
454
|
-
i0.ɵɵproperty("ngForOf", ctx.allPasswordErrors);
|
|
455
|
-
i0.ɵɵadvance();
|
|
456
|
-
i0.ɵɵproperty("ngIf", ctx.customField && ctx.customFieldType === "input");
|
|
457
|
-
i0.ɵɵadvance();
|
|
458
|
-
i0.ɵɵproperty("ngIf", ctx.customField && ctx.customFieldType === "combo");
|
|
459
|
-
i0.ɵɵadvance();
|
|
460
|
-
i0.ɵɵproperty("ngIf", ctx.customField && ctx.customFieldType === "select");
|
|
461
|
-
i0.ɵɵadvance(2);
|
|
462
|
-
i0.ɵɵproperty("ngIf", !ctx.hideRememberUser);
|
|
463
|
-
i0.ɵɵadvance();
|
|
464
|
-
i0.ɵɵclassProp("po-page-login-button-dynamic", !ctx.pageLoginLiterals.loginHint && !ctx.pageLoginLiterals.rememberUserHint);
|
|
465
|
-
i0.ɵɵproperty("p-disabled", loginForm_r3.invalid)("p-label", ctx.loading ? ctx.pageLoginLiterals.submittedLabel : ctx.pageLoginLiterals.submitLabel)("p-loading", ctx.loading);
|
|
466
|
-
i0.ɵɵadvance();
|
|
467
|
-
i0.ɵɵproperty("ngIf", ctx.recovery);
|
|
468
|
-
i0.ɵɵadvance();
|
|
469
|
-
i0.ɵɵproperty("ngIf", ctx.registerUrl);
|
|
470
|
-
} }, dependencies: [i4.NgForOf, i4.NgIf, i5.ɵNgNoValidate, i5.NgControlStatus, i5.NgControlStatusGroup, i5.NgModel, i5.NgForm, i6.PoPageBackgroundComponent, i2.PoButtonComponent, i2.PoComboComponent, i2.PoInputComponent, i2.PoLoginComponent, i2.PoPasswordComponent, i2.PoSelectComponent, i2.PoSwitchComponent, i2.PoTagComponent, i2.PoIconComponent, i2.PoTooltipDirective, i7.PoPageLoginPopoverComponent], encapsulation: 2 });
|
|
471
|
-
}
|
|
472
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoPageLoginComponent, [{
|
|
473
|
-
type: Component,
|
|
474
|
-
args: [{ selector: 'po-page-login', template: "<button class=\"po-page-login-support\" (click)=\"activateSupport()\" [hidden]=\"!support\">\n <po-icon p-icon=\"ICON_HELP\"></po-icon>\n {{ pageLoginLiterals?.support }}\n</button>\n\n<po-page-background\n #pageLogin\n [p-show-select-language]=\"showLanguage\"\n [p-languages]=\"languagesList\"\n [p-initial-language]=\"initialSelectLanguage\"\n [p-background]=\"background\"\n [p-highlight-info]=\"pageLoginLiterals.highlightInfo\"\n [p-logo]=\"logo\"\n [p-secondary-logo]=\"secondaryLogo\"\n (p-selected-language)=\"onSelectedLanguage($event)\"\n>\n <header class=\"po-page-login-header\">\n <div class=\"po-page-login-header-product-name\">\n <h1>{{ productName }}</h1>\n </div>\n\n <div class=\"po-page-login-header-product-environment po-mb-md-4 po-mb-sm-1\">\n <po-tag *ngIf=\"environment\" p-type=\"warning\" [p-value]=\"environment\"> </po-tag>\n </div>\n <div class=\"po-page-login-header-welcome po-mb-md-4 po-mb-sm-2\">{{ pageLoginLiterals.welcome }}</div>\n </header>\n\n <form #loginForm=\"ngForm\" class=\"po-page-login-form\">\n <div class=\"po-row\">\n <div class=\"po-lg-12\">\n <div class=\"po-page-login-hint po-page-login-info-container\">\n <po-login\n class=\"po-page-login-info-field\"\n [class.po-page-login-info-field-dynamic]=\"\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\n \"\n name=\"login\"\n [(ngModel)]=\"login\"\n p-auto-focus\n p-required\n [p-label]=\"pageLoginLiterals.loginLabel\"\n [p-no-autocomplete]=\"noAutocompleteLogin\"\n [p-pattern]=\"loginPattern\"\n [p-placeholder]=\"pageLoginLiterals.loginPlaceholder\"\n (click)=\"closePopover()\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n (p-change-model)=\"changeLoginModel()\"\n >\n </po-login>\n\n <div\n *ngIf=\"pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-info-icon-container\"\n [class.po-page-login-info-icon-container-dynamic]=\"\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\n \"\n >\n <po-icon\n p-icon=\"ICON_INFO po-field-icon\"\n *ngIf=\"pageLoginLiterals.loginHint\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"pageLoginLiterals.loginHint\"\n >\n </po-icon>\n </div>\n </div>\n\n <div class=\"po-field-container-bottom po-field-container-error-container\">\n <div\n *ngFor=\"let error of allLoginErrors\"\n class=\"po-field-container-bottom-text-error po-field-container-error-item\"\n >\n <po-icon p-icon=\"ICON_EXCLAMATION\"></po-icon>\n <span class=\"po-field-container-error-text\">{{ error }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"po-lg-12\">\n <div class=\"po-page-login-password-container\">\n <po-password\n class=\"po-page-login-field-size po-page-login-password-item\"\n [class.po-page-login-field-size-dynamic]=\"\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\n \"\n name=\"password\"\n [(ngModel)]=\"password\"\n p-required\n [p-hide-password-peek]=\"hidePasswordPeek\"\n [p-label]=\"pageLoginLiterals.passwordLabel\"\n [p-no-autocomplete]=\"noAutocompletePassword\"\n [p-pattern]=\"passwordPattern\"\n [p-placeholder]=\"pageLoginLiterals.passwordPlaceholder\"\n (click)=\"closePopover()\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n (p-change-model)=\"changePasswordModel()\"\n >\n </po-password>\n <div\n *ngIf=\"pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-password-item po-page-login-password-popover-container\"\n >\n <po-page-login-popover\n *ngIf=\"showExceededAttemptsWarning && exceededAttemptsWarning\"\n [p-literals]=\"pageLoginLiterals\"\n [p-recovery]=\"recovery\"\n [p-remaining-attempts]=\"exceededAttemptsWarning\"\n (p-forgot-password)=\"openUrl($event)\"\n >\n </po-page-login-popover>\n </div>\n </div>\n <div class=\"po-field-container-bottom po-field-container-error-container\">\n <div\n *ngFor=\"let error of allPasswordErrors\"\n class=\"po-field-container-bottom-text-error po-field-container-error-item\"\n >\n <po-icon p-icon=\"ICON_EXCLAMATION\"></po-icon>\n <span class=\"po-field-container-error-text\">{{ error }}</span>\n </div>\n </div>\n </div>\n\n <po-input\n *ngIf=\"customField && customFieldType === 'input'\"\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-field-size po-lg-12\"\n name=\"customFieldInput\"\n [(ngModel)]=\"customFieldObject.value\"\n p-required\n [p-error-pattern]=\"customFieldObject.errorPattern || pageLoginLiterals.customFieldErrorPattern\"\n [p-pattern]=\"customFieldObject.pattern\"\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n >\n </po-input>\n\n <po-combo\n *ngIf=\"customField && customFieldType === 'combo'\"\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-field-size po-lg-12\"\n name=\"customFieldCombo\"\n [(ngModel)]=\"customFieldObject.value\"\n p-required\n [p-field-value]=\"customFieldObject.fieldValue\"\n [p-filter-service]=\"customFieldObject.url\"\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\n >\n </po-combo>\n\n <po-select\n *ngIf=\"customField && customFieldType === 'select'\"\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-field-size po-lg-12\"\n name=\"customFieldSelect\"\n [(ngModel)]=\"customFieldObject.value\"\n p-required\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\n [p-options]=\"customFieldObject.options\"\n >\n </po-select>\n\n <div class=\"po-lg-12\">\n <div *ngIf=\"!hideRememberUser\" class=\"po-page-login-hint po-page-login-info-container\">\n <po-switch\n class=\"po-page-login-info-field po-lg-7 po-offset-lg-5 po-offset-xl-5\"\n name=\"rememberUser\"\n [(ngModel)]=\"rememberUser\"\n p-label-position=\"1\"\n [p-label-off]=\"pageLoginLiterals.rememberUser\"\n [p-label-on]=\"pageLoginLiterals.rememberUser\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n [p-hide-label-status]=\"hideLabelStatus\"\n >\n </po-switch>\n\n <div\n *ngIf=\"pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-info-icon-container po-page-login-info-icon-remember-user\"\n [class.po-page-login-info-icon-container-dynamic]=\"!pageLoginLiterals.rememberUserHint\"\n >\n <po-icon\n p-icon=\"ICON_INFO po-field-icon\"\n *ngIf=\"pageLoginLiterals.rememberUserHint\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"pageLoginLiterals.rememberUserHint\"\n >\n </po-icon>\n </div>\n </div>\n </div>\n\n <po-button\n [class.po-page-login-button-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-lg-12 po-page-login-button po-page-login-field-size\"\n p-kind=\"primary\"\n [p-disabled]=\"loginForm.invalid\"\n [p-label]=\"loading ? pageLoginLiterals.submittedLabel : pageLoginLiterals.submitLabel\"\n [p-loading]=\"loading\"\n (p-click)=\"onLoginSubmit()\"\n >\n </po-button>\n\n <div *ngIf=\"recovery\" class=\"po-page-login-recovery-link\">\n <a class=\"po-font-text-large-bold\" (click)=\"openUrl(recovery)\">{{ pageLoginLiterals.forgotPassword }}</a>\n </div>\n\n <div *ngIf=\"registerUrl\" class=\"po-page-login-register-link\">\n <a class=\"po-font-text-large-bold\" (click)=\"openUrl(registerUrl)\">{{ pageLoginLiterals.registerUrl }}</a>\n </div>\n </div>\n </form>\n</po-page-background>\n" }]
|
|
475
|
-
}], () => [{ type: i0.ChangeDetectorRef }, { type: i1.ActivatedRoute }, { type: i2.PoComponentInjectorService }, { type: i0.IterableDiffers }, { type: i3.PoPageLoginService }, { type: i1.Router }, { type: i2.PoLanguageService }], { loginForm: [{
|
|
476
|
-
type: ViewChild,
|
|
477
|
-
args: ['loginForm', { read: NgForm, static: true }]
|
|
478
|
-
}], pageLogin: [{
|
|
479
|
-
type: ViewChild,
|
|
480
|
-
args: ['pageLogin', { read: ViewContainerRef, static: true }]
|
|
481
|
-
}] }); })();
|
|
482
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoPageLoginComponent, { className: "PoPageLoginComponent", filePath: "lib/components/po-page-login/po-page-login.component.ts", lineNumber: 60 }); })();
|
|
483
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtbG9naW4vcG8tcGFnZS1sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtbG9naW4vcG8tcGFnZS1sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFHTCxTQUFTLEVBSVQsU0FBUyxFQUNULGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHbEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDdEgsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDdkgsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzNCLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7OztJQ0ZsQyw2QkFBK0U7OztJQUFsQyw0Q0FBdUI7OztJQW1DOUQsOEJBTVU7OztJQUZSLDhEQUF5Qzs7O0lBWDdDLCtCQU1DO0lBQ0MscUZBS0M7SUFFSCxpQkFBTTs7O0lBWEosOElBRUM7SUFJRSxjQUFpQztJQUFqQyx5REFBaUM7OztJQVN0QywrQkFHQztJQUNDLDhCQUE2QztJQUM3QyxnQ0FBNEM7SUFBQSxZQUFXO0lBQ3pELEFBRHlELGlCQUFPLEVBQzFEOzs7SUFEd0MsZUFBVztJQUFYLDhCQUFXOzs7O0lBNkJ2RCxpREFNQztJQURDLHVQQUFxQixzQkFBZSxLQUFDO0lBRXZDLGlCQUF3Qjs7O0lBSHRCLEFBREEsQUFEQSxxREFBZ0MsK0JBQ1Qsd0RBQ3lCOzs7SUFScEQsK0JBR0M7SUFDQyxpSEFNQztJQUVILGlCQUFNOzs7SUFQRCxjQUE0RDtJQUE1RCwyRkFBNEQ7OztJQVVqRSwrQkFHQztJQUNDLDhCQUE2QztJQUM3QyxnQ0FBNEM7SUFBQSxZQUFXO0lBQ3pELEFBRHlELGlCQUFPLEVBQzFEOzs7SUFEd0MsZUFBVztJQUFYLDhCQUFXOzs7O0lBSzdELG9DQVdDO0lBTkMsMlVBQXFDO0lBS3JDLG1RQUFrQyxzQkFBZSxLQUFDO0lBRXBELGlCQUFXOzs7SUFWVCxxSUFBOEc7SUFHOUcsOERBQXFDO0lBSXJDLEFBREEsQUFEQSwySEFBK0YsK0NBQ3hELDBHQUNvRDs7OztJQUs3RixvQ0FVQztJQUxDLDJVQUFxQztJQU12QyxpQkFBVzs7O0lBVFQscUlBQThHO0lBRzlHLDhEQUFxQztJQUlyQyxBQURBLEFBREEsbUVBQThDLGtEQUNKLDBHQUNpRDs7OztJQUk3RixxQ0FTQztJQUpDLDZVQUFxQztJQUt2QyxpQkFBWTs7O0lBUlYscUlBQThHO0lBRzlHLDhEQUFxQztJQUdyQyxBQURBLHVIQUEyRiwrQ0FDcEQ7OztJQXVCbkMsOEJBTVU7OztJQUZSLHFFQUFnRDs7O0lBVHBELCtCQUlDO0lBQ0MsMkZBS0M7SUFFSCxpQkFBTTs7O0lBVEosdUdBQXVGO0lBSXBGLGNBQXdDO0lBQXhDLGdFQUF3Qzs7OztJQW5CN0MsQUFERiwrQkFBdUYsb0JBVXBGO0lBTkMsa1RBQTBCO0lBSTFCLGdRQUFrQyxzQkFBZSxLQUFDO0lBR3BELGlCQUFZO0lBRVosNkVBSUM7SUFTSCxpQkFBTTs7O0lBdEJGLGNBQTBCO0lBQTFCLG1EQUEwQjtJQUsxQixBQUZBLEFBREEsbUVBQThDLHFEQUNELCtDQUVOO0lBS3RDLGNBQXVFO0lBQXZFLHNHQUF1RTs7OztJQTJCNUUsQUFERiwrQkFBMEQsWUFDTztJQUE1Qiw2S0FBUywrQkFBaUIsS0FBQztJQUFDLFlBQXNDO0lBQ3ZHLEFBRHVHLGlCQUFJLEVBQ3JHOzs7SUFEMkQsZUFBc0M7SUFBdEMsNkRBQXNDOzs7O0lBSXJHLEFBREYsK0JBQTZELFlBQ087SUFBL0IsNktBQVMsa0NBQW9CLEtBQUM7SUFBQyxZQUFtQztJQUN2RyxBQUR1RyxpQkFBSSxFQUNyRzs7O0lBRDhELGVBQW1DO0lBQW5DLDBEQUFtQzs7QURwTDdHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBTUgsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHdCQUF3QjtJQVd2RDtJQUNDO0lBQ0E7SUFaOEMsU0FBUyxDQUFTO0lBQ1IsU0FBUyxDQUFtQjtJQUU5RixxQkFBcUIsQ0FBUztJQUV0QixZQUFZLEdBQXNCLElBQUksQ0FBQztJQUN2QyxNQUFNLENBQU07SUFDSCxtQkFBbUIsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUV6RCxZQUNTLGNBQWlDLEVBQ2hDLGNBQThCLEVBQzlCLG1CQUErQyxFQUN2RCxPQUF3QixFQUN4QixZQUFnQyxFQUNoQyxNQUFjLEVBQ2QsaUJBQW9DO1FBRXBDLEtBQUssQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFSeEMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTRCO1FBT3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDckMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTthQUNoRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDckQsQ0FBQztJQUVELGVBQWU7UUFDYixRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzVCLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtZQUNSLENBQUM7WUFDRCxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZixNQUFNO1lBQ1IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN4QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQzNCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxRQUFnQjtRQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN0RyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO0lBQ25DLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBYTtRQUNuQixRQUFRLE9BQU8sUUFBUSxFQUFFLENBQUM7WUFDeEIsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzlCLE1BQU07WUFDUixDQUFDO1lBQ0QsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixRQUFRLEVBQUUsQ0FBQztnQkFDWCxNQUFNO1lBQ1IsQ0FBQztZQUNELEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDZCxJQUFJLENBQUMsb0NBQW9DLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BELE1BQU07WUFDUixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFUyxvQ0FBb0MsQ0FBQyxZQUFvQjtRQUNqRSxNQUFNLHVCQUF1QixHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDcEYsTUFBTSxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFL0QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFUyxjQUFjLENBQUMsTUFBcUI7UUFDNUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxNQUFxQjtRQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDM0csQ0FBQztJQUVPLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxRQUFRO1FBQ2xELElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzNELE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRU8sd0JBQXdCLENBQUMsSUFBSTtRQUNuQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUN4RyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUNsSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUM3RixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNwRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMvRixDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxjQUFzQixFQUFFLGFBQXFCLEVBQUUsS0FBYTtRQUM5RSxPQUFPLEdBQUcsY0FBYyxJQUFJLGFBQWEsSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBYSxFQUFFLE9BQWUsRUFBRSxjQUFzQixFQUFFLGtCQUEwQjtRQUMzRyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3BGLENBQUM7SUFFTyxvQ0FBb0MsQ0FBQyxtQkFBd0M7UUFDbkYsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsNEJBQTRCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUM1RyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxXQUFXLENBQUM7UUFDMUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztRQUNyRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxJQUFJLDJCQUEyQixDQUFDLEtBQUssQ0FBQztRQUNoRyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEQsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXpELElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsT0FBd0I7UUFDM0MsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMxQixPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsU0FBaUIsRUFBRSxPQUF3QixFQUFFLE1BQXFCLEVBQUUsWUFBb0I7UUFDL0csSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7WUFFN0YsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ25FLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN0QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxHQUFHO1FBQ3hCLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRU8sb0JBQW9CLENBQUMsTUFBVyxFQUFFLEtBQWtEO1FBQzFGLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xHLE9BQU8sUUFBUSxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUM5RCxDQUFDOzhFQTlNVSxvQkFBb0I7NkRBQXBCLG9CQUFvQjttQ0FDQyxNQUFNO21DQUNOLGdCQUFnQjs7Ozs7OztZQzdEbEQsaUNBQXNGO1lBQWhELHVJQUFTLHFCQUFpQixLQUFDO1lBQy9ELDZCQUFzQztZQUN0QyxZQUNGO1lBQUEsaUJBQVM7WUFFVCxnREFVQztZQURDLHFMQUF1Qiw4QkFBMEIsS0FBQztZQUk5QyxBQURGLEFBREYsaUNBQXFDLGFBQ1ksU0FDekM7WUFBQSxZQUFpQjtZQUN2QixBQUR1QixpQkFBSyxFQUN0QjtZQUVOLDhCQUE0RTtZQUMxRSw2RUFBcUU7WUFDdkUsaUJBQU07WUFDTiwrQkFBZ0U7WUFBQSxhQUErQjtZQUNqRyxBQURpRyxpQkFBTSxFQUM5RjtZQU1ELEFBREYsQUFERixBQURGLEFBREYsb0NBQXFELGVBQy9CLGVBQ0ksZUFDeUMsb0JBaUIxRDtZQVZDLG1QQUFtQjtZQVNuQixBQURBLEFBREEsMElBQVMsa0JBQWMsS0FBQyx3TUFDVSxtQkFBZSxLQUFDLCtJQUNoQyxzQkFBa0IsS0FBQztZQUV2QyxpQkFBVztZQUVYLHdFQU1DO1lBU0gsaUJBQU07WUFFTixnQ0FBMEU7WUFDeEUsd0VBR0M7WUFLTCxBQURFLGlCQUFNLEVBQ0Y7WUFJRixBQURGLEFBREYsZ0NBQXNCLGVBQzBCLHVCQWlCM0M7WUFWQyw0UEFBc0I7WUFTdEIsQUFEQSxBQURBLDZJQUFTLGtCQUFjLEtBQUMsMk1BQ1UsbUJBQWUsS0FBQyxrSkFDaEMseUJBQXFCLEtBQUM7WUFFMUMsaUJBQWM7WUFDZCx3RUFHQztZQVVILGlCQUFNO1lBQ04sZ0NBQTBFO1lBQ3hFLHdFQUdDO1lBS0wsQUFERSxpQkFBTSxFQUNGO1lBNkJOLEFBYkEsQUFkQSxrRkFXQyxxRUFhQSx1RUFZQTtZQUdELGdDQUFzQjtZQUNwQix3RUFBdUY7WUEyQnpGLGlCQUFNO1lBRU4sc0NBUUM7WUFEQywrSUFBVyxtQkFBZSxLQUFDO1lBRTdCLGlCQUFZO1lBTVosQUFKQSx3RUFBMEQsMkRBSUc7WUFLbkUsQUFERSxBQURFLGlCQUFNLEVBQ0QsRUFDWTs7O1lBcE42QyxxQ0FBbUI7WUFFbkYsZUFDRjtZQURFLHNHQUNGO1lBSUUsY0FBdUM7WUFNdkMsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBREEseURBQXVDLGtDQUNWLGlEQUNlLGdDQUNqQix5REFDeUIsb0JBQ3JDLHVDQUNtQjtZQUsxQixlQUFpQjtZQUFqQixxQ0FBaUI7WUFJWixlQUFpQjtZQUFqQixzQ0FBaUI7WUFFb0MsZUFBK0I7WUFBL0IsbURBQStCO1lBU3ZGLGVBRUM7WUFGRCwrSEFFQztZQUVELHlDQUFtQjtZQU1uQixBQURBLEFBREEsQUFEQSwwREFBd0MsOENBQ0MsK0JBQ2YseURBQzBCO1lBUW5ELGNBQXVFO1lBQXZFLGdHQUF1RTtZQWtCdEQsZUFBaUI7WUFBakIsNENBQWlCO1lBYW5DLGVBRUM7WUFGRCwrSEFFQztZQUVELDRDQUFzQjtZQU10QixBQURBLEFBREEsQUFEQSxBQURBLDJEQUF5QyxnREFDRSxpREFDQyxrQ0FDZiw0REFDMEI7WUFPdEQsY0FBdUU7WUFBdkUsZ0dBQXVFO1lBZXRELGVBQW9CO1lBQXBCLCtDQUFvQjtZQVV6QyxjQUFnRDtZQUFoRCx5RUFBZ0Q7WUFjaEQsY0FBZ0Q7WUFBaEQseUVBQWdEO1lBYWhELGNBQWlEO1lBQWpELDBFQUFpRDtZQVk1QyxlQUF1QjtZQUF2Qiw0Q0FBdUI7WUE4QjdCLGNBQTBHO1lBQTFHLDJIQUEwRztZQUsxRyxBQURBLEFBREEsaURBQWdDLG1HQUNzRCwwQkFDakU7WUFLakIsY0FBYztZQUFkLG1DQUFjO1lBSWQsY0FBaUI7WUFBakIsc0NBQWlCOzs7aUZEcEpoQixvQkFBb0I7Y0FKaEMsU0FBUzsyQkFDRSxlQUFlOzRPQUkrQixTQUFTO2tCQUFoRSxTQUFTO21CQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNZLFNBQVM7a0JBQTFFLFNBQVM7bUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7O2tGQUZyRCxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVmLFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcblxuaW1wb3J0IHsgaXNFeHRlcm5hbExpbmsgfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IFBvQ29tcG9uZW50SW5qZWN0b3JTZXJ2aWNlIH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBQb01vZGFsUGFzc3dvcmRSZWNvdmVyeUNvbXBvbmVudCB9IGZyb20gJy4uL3BvLW1vZGFsLXBhc3N3b3JkLXJlY292ZXJ5L3BvLW1vZGFsLXBhc3N3b3JkLXJlY292ZXJ5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb01vZGFsUGFzc3dvcmRSZWNvdmVyeVR5cGUgfSBmcm9tICcuLi9wby1tb2RhbC1wYXNzd29yZC1yZWNvdmVyeS9lbnVtcy9wby1tb2RhbC1wYXNzd29yZC1yZWNvdmVyeS10eXBlLmVudW0nO1xuaW1wb3J0IHtcbiAgUG9QYWdlTG9naW5CYXNlQ29tcG9uZW50LFxuICBwb1BhZ2VMb2dpbkxpdGVyYWxJbixcbiAgcG9QYWdlTG9naW5MaXRlcmFsc0RlZmF1bHRcbn0gZnJvbSAnLi9wby1wYWdlLWxvZ2luLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvUGFnZUxvZ2luUmVjb3ZlcnkgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1sb2dpbi1yZWNvdmVyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9wby1wYWdlLWxvZ2luLnNlcnZpY2UnO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb1BhZ2VMb2dpbkJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1wYWdlLWxvZ2luLWJhc2ljXCIgdGl0bGU9XCJQTyBQYWdlIExvZ2luIEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWJhc2ljL3NhbXBsZS1wby1wYWdlLWxvZ2luLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtbG9naW4tYmFzaWMvc2FtcGxlLXBvLXBhZ2UtbG9naW4tYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tcGFnZS1sb2dpbi1sYWJzXCIgdGl0bGU9XCJQTyBQYWdlIExvZ2luIExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtbG9naW4tbGFicy9zYW1wbGUtcG8tcGFnZS1sb2dpbi1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtbG9naW4tbGFicy9zYW1wbGUtcG8tcGFnZS1sb2dpbi1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtbG9naW4taHVtYW4tcmVzb3VyY2VzXCIgdGl0bGU9XCJQTyBQYWdlIExvZ2luIC0gSHVtYW4gUmVzb3VyY2VzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWh1bWFuLXJlc291cmNlcy9zYW1wbGUtcG8tcGFnZS1sb2dpbi1odW1hbi1yZXNvdXJjZXMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1odW1hbi1yZXNvdXJjZXMvc2FtcGxlLXBvLXBhZ2UtbG9naW4taHVtYW4tcmVzb3VyY2VzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWh1bWFuLXJlc291cmNlcy9zYW1wbGUtcG8tcGFnZS1sb2dpbi1odW1hbi1yZXNvdXJjZXMubW9kdWxlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tcGFnZS1sb2dpbi1hdXRvbWF0aWMtc2VydmljZVwiIHRpdGxlPVwiUE8gUGFnZSBMb2dpbiAtIEF1dG9tYXRpYyBTZXJ2aWNlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWF1dG9tYXRpYy1zZXJ2aWNlL3NhbXBsZS1wby1wYWdlLWxvZ2luLWF1dG9tYXRpYy1zZXJ2aWNlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtbG9naW4tYXV0b21hdGljLXNlcnZpY2Uvc2FtcGxlLXBvLXBhZ2UtbG9naW4tYXV0b21hdGljLXNlcnZpY2UuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1wYWdlLWxvZ2luJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLXBhZ2UtbG9naW4uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBvUGFnZUxvZ2luQ29tcG9uZW50IGV4dGVuZHMgUG9QYWdlTG9naW5CYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgnbG9naW5Gb3JtJywgeyByZWFkOiBOZ0Zvcm0sIHN0YXRpYzogdHJ1ZSB9KSBsb2dpbkZvcm06IE5nRm9ybTtcbiAgQFZpZXdDaGlsZCgncGFnZUxvZ2luJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgcGFnZUxvZ2luOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIGluaXRpYWxTZWxlY3RMYW5ndWFnZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PiA9IG51bGw7XG4gIHByaXZhdGUgZGlmZmVyOiBhbnk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VzdG9tUGFzc3dvcmRFcnJvciA9IHsgY3VzdG9tOiBmYWxzZSB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBwb0NvbXBvbmVudEluamVjdG9yOiBQb0NvbXBvbmVudEluamVjdG9yU2VydmljZSxcbiAgICBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgbG9naW5TZXJ2aWNlOiBQb1BhZ2VMb2dpblNlcnZpY2UsXG4gICAgcm91dGVyOiBSb3V0ZXIsXG4gICAgcG9MYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGxvZ2luU2VydmljZSwgcm91dGVyLCBwb0xhbmd1YWdlU2VydmljZSk7XG4gICAgdGhpcy5kaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZShudWxsKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICBpZiAodGhpcy5kaWZmZXIpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVBcnJheUNoYW5nZXModGhpcy5kaWZmZXIsIFtcbiAgICAgICAgeyBhcnJheTogdGhpcy5sb2dpbkVycm9ycywgY2FsbGJhY2s6IHRoaXMuZ2VuZXJhdGVMb2dpbkVycm9yLmJpbmQodGhpcykgfSxcbiAgICAgICAgeyBhcnJheTogdGhpcy5wYXNzd29yZEVycm9ycywgY2FsbGJhY2s6IHRoaXMuZ2VuZXJhdGVQYXNzd29yZEVycm9yLmJpbmQodGhpcykgfVxuICAgICAgXSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jaGVja2luZ0ZvclJvdXRlTWV0YWRhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhKTtcbiAgICB0aGlzLnNlbGVjdGVkTGFuZ3VhZ2UgPSB0aGlzLmluaXRpYWxpemVMYW5ndWFnZSgpO1xuICAgIHRoaXMuaW5pdGlhbFNlbGVjdExhbmd1YWdlID0gdGhpcy5zZWxlY3RlZExhbmd1YWdlO1xuICB9XG5cbiAgYWN0aXZhdGVTdXBwb3J0KCkge1xuICAgIHN3aXRjaCAodHlwZW9mIHRoaXMuc3VwcG9ydCkge1xuICAgICAgY2FzZSAnc3RyaW5nJzoge1xuICAgICAgICB0aGlzLnNldFVybFJlZGlyZWN0KHRoaXMuc3VwcG9ydCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnZnVuY3Rpb24nOiB7XG4gICAgICAgIHRoaXMuc3VwcG9ydCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGFuZ2VMb2dpbk1vZGVsKCkge1xuICAgIGlmICh0aGlzLmF1dGhlbnRpY2F0aW9uVXJsKSB7XG4gICAgICB0aGlzLmxvZ2luRXJyb3JzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0TG9naW5FcnJvcnModGhpcy5sb2dpbkVycm9ycyk7XG4gICAgICB0aGlzLmxvZ2luQ2hhbmdlLmVtaXQodGhpcy5sb2dpbik7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlUGFzc3dvcmRNb2RlbCgpIHtcbiAgICBpZiAodGhpcy5hdXRoZW50aWNhdGlvblVybCkge1xuICAgICAgdGhpcy5wYXNzd29yZEVycm9ycyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFBhc3N3b3JkRXJyb3JzKHRoaXMucGFzc3dvcmRFcnJvcnMpO1xuICAgICAgdGhpcy5wYXNzd29yZENoYW5nZS5lbWl0KHRoaXMucGFzc3dvcmQpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VsZWN0ZWRMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKSB7XG4gICAgdGhpcy5sYW5ndWFnZUNoYW5nZS5lbWl0KHRoaXMubGFuZ3VhZ2VzTGlzdC5maW5kKGxhbmd1YWdlSXRlbSA9PiBsYW5ndWFnZUl0ZW0ubGFuZ3VhZ2UgPT09IGxhbmd1YWdlKSk7XG4gICAgdGhpcy5zZWxlY3RlZExhbmd1YWdlID0gbGFuZ3VhZ2U7XG4gIH1cblxuICBvcGVuVXJsKHJlY292ZXJ5OiBhbnkpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiByZWNvdmVyeSkge1xuICAgICAgY2FzZSAnc3RyaW5nJzoge1xuICAgICAgICB0aGlzLnNldFVybFJlZGlyZWN0KHJlY292ZXJ5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdmdW5jdGlvbic6IHtcbiAgICAgICAgcmVjb3ZlcnkoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICAgIHRoaXMuY3JlYXRlTW9kYWxQYXNzd29yZFJlY292ZXJ5Q29tcG9uZW50KHJlY292ZXJ5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNvbmNhdGVuYXRlTG9naW5IaW50V2l0aENvbnRhY3RFbWFpbChjb250YWN0RW1haWw6IHN0cmluZykge1xuICAgIGNvbnN0IGRlZmF1bHRMb2dpbkhpbnRMaXRlcmFsID0gcG9QYWdlTG9naW5MaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV0ubG9naW5IaW50O1xuICAgIGNvbnN0IHByZXBvc2l0aW9uTGl0ZXJhbCA9IHBvUGFnZUxvZ2luTGl0ZXJhbEluW3RoaXMubGFuZ3VhZ2VdO1xuXG4gICAgcmV0dXJuIHRoaXMuY29uY2F0ZW5hdGVMaXRlcmFsKGNvbnRhY3RFbWFpbCwgJ2xvZ2luSGludCcsIGRlZmF1bHRMb2dpbkhpbnRMaXRlcmFsLCBwcmVwb3NpdGlvbkxpdGVyYWwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldExvZ2luRXJyb3JzKGVycm9yczogQXJyYXk8c3RyaW5nPikge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmxvZ2luRm9ybS5mb3JtLmNvbnRyb2xzWydsb2dpbiddO1xuICAgIHRoaXMuc2V0Q29udHJvbEVycm9ycygnYWxsTG9naW5FcnJvcnMnLCBjb250cm9sLCBlcnJvcnMsIHRoaXMucGFnZUxvZ2luTGl0ZXJhbHMubG9naW5FcnJvclBhdHRlcm4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFBhc3N3b3JkRXJyb3JzKGVycm9yczogQXJyYXk8c3RyaW5nPikge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmxvZ2luRm9ybS5mb3JtLmNvbnRyb2xzWydwYXNzd29yZCddO1xuICAgIHRoaXMuc2V0Q29udHJvbEVycm9ycygnYWxsUGFzc3dvcmRFcnJvcnMnLCBjb250cm9sLCBlcnJvcnMsIHRoaXMucGFnZUxvZ2luTGl0ZXJhbHMucGFzc3dvcmRFcnJvclBhdHRlcm4pO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja2luZ0Zvck1ldGFkYXRhUHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eSkge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSkpIHtcbiAgICAgIHJldHVybiBvYmplY3RbcHJvcGVydHldO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tpbmdGb3JSb3V0ZU1ldGFkYXRhKGRhdGEpIHtcbiAgICBpZiAoT2JqZWN0LmtleXMoZGF0YSkubGVuZ3RoICE9PSAwKSB7XG4gICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uVXJsID0gdGhpcy5jaGVja2luZ0Zvck1ldGFkYXRhUHJvcGVydHkoZGF0YSwgJ3NlcnZpY2VBcGknKSB8fCB0aGlzLmF1dGhlbnRpY2F0aW9uVXJsO1xuICAgICAgdGhpcy5hdXRoZW50aWNhdGlvblR5cGUgPSB0aGlzLmNoZWNraW5nRm9yTWV0YWRhdGFQcm9wZXJ0eShkYXRhLCAnYXV0aGVudGljYXRpb25UeXBlJykgfHwgdGhpcy5hdXRoZW50aWNhdGlvblR5cGU7XG4gICAgICB0aGlzLmVudmlyb25tZW50ID0gdGhpcy5jaGVja2luZ0Zvck1ldGFkYXRhUHJvcGVydHkoZGF0YSwgJ2Vudmlyb25tZW50JykgfHwgdGhpcy5lbnZpcm9ubWVudDtcbiAgICAgIHRoaXMucmVjb3ZlcnkgPSB0aGlzLmNoZWNraW5nRm9yTWV0YWRhdGFQcm9wZXJ0eShkYXRhLCAncmVjb3ZlcnknKSB8fCB0aGlzLnJlY292ZXJ5O1xuICAgICAgdGhpcy5yZWdpc3RlclVybCA9IHRoaXMuY2hlY2tpbmdGb3JNZXRhZGF0YVByb3BlcnR5KGRhdGEsICdyZWdpc3RlclVybCcpIHx8IHRoaXMucmVnaXN0ZXJVcmw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZShkZWZhdWx0TGl0ZXJhbDogc3RyaW5nLCBwcmVmaXhMaXRlcmFsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYCR7ZGVmYXVsdExpdGVyYWx9ICR7cHJlZml4TGl0ZXJhbH0gJHt2YWx1ZX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZUxpdGVyYWwodmFsdWU6IHN0cmluZywgbGl0ZXJhbDogc3RyaW5nLCBkZWZhdWx0TGl0ZXJhbDogc3RyaW5nLCBwcmVwb3NpdGlvbkxpdGVyYWw6IHN0cmluZykge1xuICAgIHJldHVybiB7IFtsaXRlcmFsXTogdGhpcy5jb25jYXRlbmF0ZShkZWZhdWx0TGl0ZXJhbCwgcHJlcG9zaXRpb25MaXRlcmFsLCB2YWx1ZSkgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTW9kYWxQYXNzd29yZFJlY292ZXJ5Q29tcG9uZW50KHBvUGFnZUxvZ2luUmVjb3Zlcnk6IFBvUGFnZUxvZ2luUmVjb3ZlcnkpIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMucG9Db21wb25lbnRJbmplY3Rvci5kZXN0cm95Q29tcG9uZW50SW5BcHBsaWNhdGlvbih0aGlzLmNvbXBvbmVudFJlZik7XG4gICAgfVxuXG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnBvQ29tcG9uZW50SW5qZWN0b3IuY3JlYXRlQ29tcG9uZW50SW5BcHBsaWNhdGlvbihQb01vZGFsUGFzc3dvcmRSZWNvdmVyeUNvbXBvbmVudCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudXJsUmVjb3ZlcnkgPSBwb1BhZ2VMb2dpblJlY292ZXJ5LnVybDtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb250YWN0RW1haWwgPSBwb1BhZ2VMb2dpblJlY292ZXJ5LmNvbnRhY3RNYWlsO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnBob25lTWFzayA9IHBvUGFnZUxvZ2luUmVjb3ZlcnkucGhvbmVNYXNrO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnR5cGUgPSBwb1BhZ2VMb2dpblJlY292ZXJ5LnR5cGUgfHwgUG9Nb2RhbFBhc3N3b3JkUmVjb3ZlcnlUeXBlLkVtYWlsO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm9wZW4oKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVMb2dpbkVycm9yKCkge1xuICAgIGlmICh0aGlzLmxvZ2luRXJyb3JzICYmIHRoaXMubG9naW5FcnJvcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNldExvZ2luRXJyb3JzKHRoaXMubG9naW5FcnJvcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5sb2dpbkZvcm0uZm9ybS5jb250cm9sc1snbG9naW4nXTtcbiAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgIHRoaXMucmVzZXRDb250cm9sKGNvbnRyb2wpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVQYXNzd29yZEVycm9yKCkge1xuICAgIGlmICh0aGlzLnBhc3N3b3JkRXJyb3JzICYmIHRoaXMucGFzc3dvcmRFcnJvcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNldFBhc3N3b3JkRXJyb3JzKHRoaXMucGFzc3dvcmRFcnJvcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5sb2dpbkZvcm0uZm9ybS5jb250cm9sc1sncGFzc3dvcmQnXTtcblxuICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5yZXNldENvbnRyb2woY29udHJvbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldENvbnRyb2woY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgY29udHJvbC5tYXJrQXNQcmlzdGluZSgpO1xuICAgIGNvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XG4gICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbnRyb2xFcnJvcnMoYWxsRXJyb3JzOiBzdHJpbmcsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgZXJyb3JzOiBBcnJheTxzdHJpbmc+LCBwYXR0ZXJuRXJyb3I6IHN0cmluZykge1xuICAgIGlmIChjb250cm9sKSB7XG4gICAgICB0aGlzW2FsbEVycm9yc10gPSBjb250cm9sLmhhc0Vycm9yKCdwYXR0ZXJuJykgPyBbLi4uZXJyb3JzLCAuLi5bcGF0dGVybkVycm9yXV0gOiBbLi4uZXJyb3JzXTtcblxuICAgICAgaWYgKGVycm9ycyAmJiBlcnJvcnMubGVuZ3RoICYmIChjb250cm9sLnZhbGlkIHx8IGNvbnRyb2wucHJpc3RpbmUpKSB7XG4gICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICBjb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHRoaXMuY3VzdG9tUGFzc3dvcmRFcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRVcmxSZWRpcmVjdCh1cmwpIHtcbiAgICBpc0V4dGVybmFsTGluayh1cmwpID8gd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJykgOiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsXSk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlQXJyYXlDaGFuZ2VzKGRpZmZlcjogYW55LCBhcnJheTogQXJyYXk8eyBhcnJheTogQXJyYXk8YW55PjsgY2FsbGJhY2s6IGFueSB9Pikge1xuICAgIGFycmF5LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBjb25zdCBjaGFuZ2VzID0gZGlmZmVyLmRpZmYoZWxlbWVudC5hcnJheSk7XG4gICAgICBpZiAoY2hhbmdlcykge1xuICAgICAgICBlbGVtZW50LmNhbGxiYWNrKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTGFuZ3VhZ2UoKSB7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLmxhbmd1YWdlc0xpc3QuZmluZChsYW5ndWFnZUl0ZW0gPT4gbGFuZ3VhZ2VJdGVtLmxhbmd1YWdlID09PSB0aGlzLmxhbmd1YWdlKTtcbiAgICByZXR1cm4gbGFuZ3VhZ2U/Lmxhbmd1YWdlIHx8IHRoaXMubGFuZ3VhZ2VzTGlzdFswXS5sYW5ndWFnZTtcbiAgfVxufVxuIiwiPGJ1dHRvbiBjbGFzcz1cInBvLXBhZ2UtbG9naW4tc3VwcG9ydFwiIChjbGljayk9XCJhY3RpdmF0ZVN1cHBvcnQoKVwiIFtoaWRkZW5dPVwiIXN1cHBvcnRcIj5cbiAgPHBvLWljb24gcC1pY29uPVwiSUNPTl9IRUxQXCI+PC9wby1pY29uPlxuICB7eyBwYWdlTG9naW5MaXRlcmFscz8uc3VwcG9ydCB9fVxuPC9idXR0b24+XG5cbjxwby1wYWdlLWJhY2tncm91bmRcbiAgI3BhZ2VMb2dpblxuICBbcC1zaG93LXNlbGVjdC1sYW5ndWFnZV09XCJzaG93TGFuZ3VhZ2VcIlxuICBbcC1sYW5ndWFnZXNdPVwibGFuZ3VhZ2VzTGlzdFwiXG4gIFtwLWluaXRpYWwtbGFuZ3VhZ2VdPVwiaW5pdGlhbFNlbGVjdExhbmd1YWdlXCJcbiAgW3AtYmFja2dyb3VuZF09XCJiYWNrZ3JvdW5kXCJcbiAgW3AtaGlnaGxpZ2h0LWluZm9dPVwicGFnZUxvZ2luTGl0ZXJhbHMuaGlnaGxpZ2h0SW5mb1wiXG4gIFtwLWxvZ29dPVwibG9nb1wiXG4gIFtwLXNlY29uZGFyeS1sb2dvXT1cInNlY29uZGFyeUxvZ29cIlxuICAocC1zZWxlY3RlZC1sYW5ndWFnZSk9XCJvblNlbGVjdGVkTGFuZ3VhZ2UoJGV2ZW50KVwiXG4+XG4gIDxoZWFkZXIgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWhlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWhlYWRlci1wcm9kdWN0LW5hbWVcIj5cbiAgICAgIDxoMT57eyBwcm9kdWN0TmFtZSB9fTwvaDE+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tcGFnZS1sb2dpbi1oZWFkZXItcHJvZHVjdC1lbnZpcm9ubWVudCBwby1tYi1tZC00IHBvLW1iLXNtLTFcIj5cbiAgICAgIDxwby10YWcgKm5nSWY9XCJlbnZpcm9ubWVudFwiIHAtdHlwZT1cIndhcm5pbmdcIiBbcC12YWx1ZV09XCJlbnZpcm9ubWVudFwiPiA8L3BvLXRhZz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicG8tcGFnZS1sb2dpbi1oZWFkZXItd2VsY29tZSBwby1tYi1tZC00IHBvLW1iLXNtLTJcIj57eyBwYWdlTG9naW5MaXRlcmFscy53ZWxjb21lIH19PC9kaXY+XG4gIDwvaGVhZGVyPlxuXG4gIDxmb3JtICNsb2dpbkZvcm09XCJuZ0Zvcm1cIiBjbGFzcz1cInBvLXBhZ2UtbG9naW4tZm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwby1yb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwby1sZy0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG8tcGFnZS1sb2dpbi1oaW50IHBvLXBhZ2UtbG9naW4taW5mby1jb250YWluZXJcIj5cbiAgICAgICAgICA8cG8tbG9naW5cbiAgICAgICAgICAgIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1pbmZvLWZpZWxkXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby1wYWdlLWxvZ2luLWluZm8tZmllbGQtZHluYW1pY109XCJcbiAgICAgICAgICAgICAgIXBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCAmJiAhcGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIG5hbWU9XCJsb2dpblwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImxvZ2luXCJcbiAgICAgICAgICAgIHAtYXV0by1mb2N1c1xuICAgICAgICAgICAgcC1yZXF1aXJlZFxuICAgICAgICAgICAgW3AtbGFiZWxdPVwicGFnZUxvZ2luTGl0ZXJhbHMubG9naW5MYWJlbFwiXG4gICAgICAgICAgICBbcC1uby1hdXRvY29tcGxldGVdPVwibm9BdXRvY29tcGxldGVMb2dpblwiXG4gICAgICAgICAgICBbcC1wYXR0ZXJuXT1cImxvZ2luUGF0dGVyblwiXG4gICAgICAgICAgICBbcC1wbGFjZWhvbGRlcl09XCJwYWdlTG9naW5MaXRlcmFscy5sb2dpblBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVBvcG92ZXIoKVwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwibG9naW5Gb3JtLnZhbGlkICYmIG9uTG9naW5TdWJtaXQoKVwiXG4gICAgICAgICAgICAocC1jaGFuZ2UtbW9kZWwpPVwiY2hhbmdlTG9naW5Nb2RlbCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9wby1sb2dpbj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwicGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50IHx8IHBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWluZm8taWNvbi1jb250YWluZXJcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXBhZ2UtbG9naW4taW5mby1pY29uLWNvbnRhaW5lci1keW5hbWljXT1cIlxuICAgICAgICAgICAgICAhcGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50ICYmICFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxwby1pY29uXG4gICAgICAgICAgICAgIHAtaWNvbj1cIklDT05fSU5GTyBwby1maWVsZC1pY29uXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnRcIlxuICAgICAgICAgICAgICBwLXRvb2x0aXAtcG9zaXRpb249XCJyaWdodFwiXG4gICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwicGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvcG8taWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20gcG8tZmllbGQtY29udGFpbmVyLWVycm9yLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBlcnJvciBvZiBhbGxMb2dpbkVycm9yc1wiXG4gICAgICAgICAgICBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20tdGV4dC1lcnJvciBwby1maWVsZC1jb250YWluZXItZXJyb3ItaXRlbVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHBvLWljb24gcC1pY29uPVwiSUNPTl9FWENMQU1BVElPTlwiPjwvcG8taWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWVycm9yLXRleHRcIj57eyBlcnJvciB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInBvLWxnLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwby1wYWdlLWxvZ2luLXBhc3N3b3JkLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxwby1wYXNzd29yZFxuICAgICAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWZpZWxkLXNpemUgcG8tcGFnZS1sb2dpbi1wYXNzd29yZC1pdGVtXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby1wYWdlLWxvZ2luLWZpZWxkLXNpemUtZHluYW1pY109XCJcbiAgICAgICAgICAgICAgIXBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCAmJiAhcGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIG5hbWU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgIHAtcmVxdWlyZWRcbiAgICAgICAgICAgIFtwLWhpZGUtcGFzc3dvcmQtcGVla109XCJoaWRlUGFzc3dvcmRQZWVrXCJcbiAgICAgICAgICAgIFtwLWxhYmVsXT1cInBhZ2VMb2dpbkxpdGVyYWxzLnBhc3N3b3JkTGFiZWxcIlxuICAgICAgICAgICAgW3Atbm8tYXV0b2NvbXBsZXRlXT1cIm5vQXV0b2NvbXBsZXRlUGFzc3dvcmRcIlxuICAgICAgICAgICAgW3AtcGF0dGVybl09XCJwYXNzd29yZFBhdHRlcm5cIlxuICAgICAgICAgICAgW3AtcGxhY2Vob2xkZXJdPVwicGFnZUxvZ2luTGl0ZXJhbHMucGFzc3dvcmRQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VQb3BvdmVyKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImxvZ2luRm9ybS52YWxpZCAmJiBvbkxvZ2luU3VibWl0KClcIlxuICAgICAgICAgICAgKHAtY2hhbmdlLW1vZGVsKT1cImNoYW5nZVBhc3N3b3JkTW9kZWwoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvcG8tcGFzc3dvcmQ+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgfHwgcGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXBhZ2UtbG9naW4tcGFzc3dvcmQtaXRlbSBwby1wYWdlLWxvZ2luLXBhc3N3b3JkLXBvcG92ZXItY29udGFpbmVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cG8tcGFnZS1sb2dpbi1wb3BvdmVyXG4gICAgICAgICAgICAgICpuZ0lmPVwic2hvd0V4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nICYmIGV4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nXCJcbiAgICAgICAgICAgICAgW3AtbGl0ZXJhbHNdPVwicGFnZUxvZ2luTGl0ZXJhbHNcIlxuICAgICAgICAgICAgICBbcC1yZWNvdmVyeV09XCJyZWNvdmVyeVwiXG4gICAgICAgICAgICAgIFtwLXJlbWFpbmluZy1hdHRlbXB0c109XCJleGNlZWRlZEF0dGVtcHRzV2FybmluZ1wiXG4gICAgICAgICAgICAgIChwLWZvcmdvdC1wYXNzd29yZCk9XCJvcGVuVXJsKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9wby1wYWdlLWxvZ2luLXBvcG92ZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWJvdHRvbSBwby1maWVsZC1jb250YWluZXItZXJyb3ItY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGVycm9yIG9mIGFsbFBhc3N3b3JkRXJyb3JzXCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWJvdHRvbS10ZXh0LWVycm9yIHBvLWZpZWxkLWNvbnRhaW5lci1lcnJvci1pdGVtXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cG8taWNvbiBwLWljb249XCJJQ09OX0VYQ0xBTUFUSU9OXCI+PC9wby1pY29uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItZXJyb3ItdGV4dFwiPnt7IGVycm9yIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8cG8taW5wdXRcbiAgICAgICAgKm5nSWY9XCJjdXN0b21GaWVsZCAmJiBjdXN0b21GaWVsZFR5cGUgPT09ICdpbnB1dCdcIlxuICAgICAgICBbY2xhc3MucG8tcGFnZS1sb2dpbi1maWVsZC1zaXplLWR5bmFtaWNdPVwiIXBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCAmJiAhcGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFwiXG4gICAgICAgIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1maWVsZC1zaXplIHBvLWxnLTEyXCJcbiAgICAgICAgbmFtZT1cImN1c3RvbUZpZWxkSW5wdXRcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImN1c3RvbUZpZWxkT2JqZWN0LnZhbHVlXCJcbiAgICAgICAgcC1yZXF1aXJlZFxuICAgICAgICBbcC1lcnJvci1wYXR0ZXJuXT1cImN1c3RvbUZpZWxkT2JqZWN0LmVycm9yUGF0dGVybiB8fCBwYWdlTG9naW5MaXRlcmFscy5jdXN0b21GaWVsZEVycm9yUGF0dGVyblwiXG4gICAgICAgIFtwLXBhdHRlcm5dPVwiY3VzdG9tRmllbGRPYmplY3QucGF0dGVyblwiXG4gICAgICAgIFtwLXBsYWNlaG9sZGVyXT1cImN1c3RvbUZpZWxkT2JqZWN0LnBsYWNlaG9sZGVyIHx8IHBhZ2VMb2dpbkxpdGVyYWxzLmN1c3RvbUZpZWxkUGxhY2Vob2xkZXJcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwibG9naW5Gb3JtLnZhbGlkICYmIG9uTG9naW5TdWJtaXQoKVwiXG4gICAgICA+XG4gICAgICA8L3BvLWlucHV0PlxuXG4gICAgICA8cG8tY29tYm9cbiAgICAgICAgKm5nSWY9XCJjdXN0b21GaWVsZCAmJiBjdXN0b21GaWVsZFR5cGUgPT09ICdjb21ibydcIlxuICAgICAgICBbY2xhc3MucG8tcGFnZS1sb2dpbi1maWVsZC1zaXplLWR5bmFtaWNdPVwiIXBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCAmJiAhcGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFwiXG4gICAgICAgIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1maWVsZC1zaXplIHBvLWxnLTEyXCJcbiAgICAgICAgbmFtZT1cImN1c3RvbUZpZWxkQ29tYm9cIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImN1c3RvbUZpZWxkT2JqZWN0LnZhbHVlXCJcbiAgICAgICAgcC1yZXF1aXJlZFxuICAgICAgICBbcC1maWVsZC12YWx1ZV09XCJjdXN0b21GaWVsZE9iamVjdC5maWVsZFZhbHVlXCJcbiAgICAgICAgW3AtZmlsdGVyLXNlcnZpY2VdPVwiY3VzdG9tRmllbGRPYmplY3QudXJsXCJcbiAgICAgICAgW3AtcGxhY2Vob2xkZXJdPVwiY3VzdG9tRmllbGRPYmplY3QucGxhY2Vob2xkZXIgfHwgcGFnZUxvZ2luTGl0ZXJhbHMuY3VzdG9tRmllbGRQbGFjZWhvbGRlclwiXG4gICAgICA+XG4gICAgICA8L3BvLWNvbWJvPlxuXG4gICAgICA8cG8tc2VsZWN0XG4gICAgICAgICpuZ0lmPVwiY3VzdG9tRmllbGQgJiYgY3VzdG9tRmllbGRUeXBlID09PSAnc2VsZWN0J1wiXG4gICAgICAgIFtjbGFzcy5wby1wYWdlLWxvZ2luLWZpZWxkLXNpemUtZHluYW1pY109XCIhcGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50ICYmICFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcbiAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWZpZWxkLXNpemUgcG8tbGctMTJcIlxuICAgICAgICBuYW1lPVwiY3VzdG9tRmllbGRTZWxlY3RcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImN1c3RvbUZpZWxkT2JqZWN0LnZhbHVlXCJcbiAgICAgICAgcC1yZXF1aXJlZFxuICAgICAgICBbcC1wbGFjZWhvbGRlcl09XCJjdXN0b21GaWVsZE9iamVjdC5wbGFjZWhvbGRlciB8fCBwYWdlTG9naW5MaXRlcmFscy5jdXN0b21GaWVsZFBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3Atb3B0aW9uc109XCJjdXN0b21GaWVsZE9iamVjdC5vcHRpb25zXCJcbiAgICAgID5cbiAgICAgIDwvcG8tc2VsZWN0PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicG8tbGctMTJcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFoaWRlUmVtZW1iZXJVc2VyXCIgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWhpbnQgcG8tcGFnZS1sb2dpbi1pbmZvLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxwby1zd2l0Y2hcbiAgICAgICAgICAgIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1pbmZvLWZpZWxkIHBvLWxnLTcgcG8tb2Zmc2V0LWxnLTUgcG8tb2Zmc2V0LXhsLTVcIlxuICAgICAgICAgICAgbmFtZT1cInJlbWVtYmVyVXNlclwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlbWVtYmVyVXNlclwiXG4gICAgICAgICAgICBwLWxhYmVsLXBvc2l0aW9uPVwiMVwiXG4gICAgICAgICAgICBbcC1sYWJlbC1vZmZdPVwicGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VyXCJcbiAgICAgICAgICAgIFtwLWxhYmVsLW9uXT1cInBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlclwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwibG9naW5Gb3JtLnZhbGlkICYmIG9uTG9naW5TdWJtaXQoKVwiXG4gICAgICAgICAgICBbcC1oaWRlLWxhYmVsLXN0YXR1c109XCJoaWRlTGFiZWxTdGF0dXNcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3BvLXN3aXRjaD5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwicGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50IHx8IHBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWluZm8taWNvbi1jb250YWluZXIgcG8tcGFnZS1sb2dpbi1pbmZvLWljb24tcmVtZW1iZXItdXNlclwiXG4gICAgICAgICAgICBbY2xhc3MucG8tcGFnZS1sb2dpbi1pbmZvLWljb24tY29udGFpbmVyLWR5bmFtaWNdPVwiIXBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxwby1pY29uXG4gICAgICAgICAgICAgIHAtaWNvbj1cIklDT05fSU5GTyBwby1maWVsZC1pY29uXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcbiAgICAgICAgICAgICAgcC10b29sdGlwLXBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgICBbcC10b29sdGlwXT1cInBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9wby1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8cG8tYnV0dG9uXG4gICAgICAgIFtjbGFzcy5wby1wYWdlLWxvZ2luLWJ1dHRvbi1keW5hbWljXT1cIiFwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgJiYgIXBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxuICAgICAgICBjbGFzcz1cInBvLWxnLTEyIHBvLXBhZ2UtbG9naW4tYnV0dG9uIHBvLXBhZ2UtbG9naW4tZmllbGQtc2l6ZVwiXG4gICAgICAgIHAta2luZD1cInByaW1hcnlcIlxuICAgICAgICBbcC1kaXNhYmxlZF09XCJsb2dpbkZvcm0uaW52YWxpZFwiXG4gICAgICAgIFtwLWxhYmVsXT1cImxvYWRpbmcgPyBwYWdlTG9naW5MaXRlcmFscy5zdWJtaXR0ZWRMYWJlbCA6IHBhZ2VMb2dpbkxpdGVyYWxzLnN1Ym1pdExhYmVsXCJcbiAgICAgICAgW3AtbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICAgICAgKHAtY2xpY2spPVwib25Mb2dpblN1Ym1pdCgpXCJcbiAgICAgID5cbiAgICAgIDwvcG8tYnV0dG9uPlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwicmVjb3ZlcnlcIiBjbGFzcz1cInBvLXBhZ2UtbG9naW4tcmVjb3ZlcnktbGlua1wiPlxuICAgICAgICA8YSBjbGFzcz1cInBvLWZvbnQtdGV4dC1sYXJnZS1ib2xkXCIgKGNsaWNrKT1cIm9wZW5VcmwocmVjb3ZlcnkpXCI+e3sgcGFnZUxvZ2luTGl0ZXJhbHMuZm9yZ290UGFzc3dvcmQgfX08L2E+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cInJlZ2lzdGVyVXJsXCIgY2xhc3M9XCJwby1wYWdlLWxvZ2luLXJlZ2lzdGVyLWxpbmtcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJwby1mb250LXRleHQtbGFyZ2UtYm9sZFwiIChjbGljayk9XCJvcGVuVXJsKHJlZ2lzdGVyVXJsKVwiPnt7IHBhZ2VMb2dpbkxpdGVyYWxzLnJlZ2lzdGVyVXJsIH19PC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvcG8tcGFnZS1iYWNrZ3JvdW5kPlxuIl19
|